У меня есть набор данных двоичного класса (0/1) с большим перекосом в сторону класса «0» (около 30000 против 1500).Для каждого экземпляра имеется 7 функций, без пропущенных значений.
Когда я использую J48 или любой другой древовидный классификатор, я получаю почти все экземпляры "1", ошибочно классифицированные как "0".
Установка классификатора на "unpruned", установка минимального числа экземпляров на лист равной 1, установка коэффициента достоверности на 1, добавление фиктивного атрибута с номером экземпляра экземпляра - все это не помогло.
Я простоне могу создать модель, которая соответствует моим данным!
Я также попробовал почти все другие классификаторы, которые предоставляет Weka, но получил аналогичные результаты.
Использование IB1 дает 100% точность (trainsetна trainset), так что это не проблема нескольких экземпляров с одинаковыми значениями объектов и разными классами.
Как я могу создать полностью необрезанное дерево?Или иначе заставить Weka перезаписать мои данные?
Спасибо.
Обновление: Хорошо, это абсурд.Я использовал только около 3100 отрицательных и 1200 положительных примеров, и вот дерево, которое я получил (без обрезки!):
J48 unpruned tree
------------------
F <= 0.90747: 1 (201.0/54.0)
F > 0.90747: 0 (4153.0/1062.0)
Излишне говорить, что IB1 по-прежнему дает 100% точность.
Обновление 2: Не знаю, как я это пропустил - безрукавная SimpleCart работает и дает 100% точность поезда на поезде;Урезанная SimpleCart не так смещена, как J48, и имеет приличное ложное положительное и отрицательное соотношение.