Почему в этом наборе данных методом выбора подмножества выбрано слишком мало объектов

У меня есть набор данных классификации со 148 входными функциями (20 из которых двоичные, а остальные непрерывны в диапазоне [0,1]). Набор данных содержит 66171 отрицательный пример и только 71 положительный пример.

Набор данных (arff текстовый файл) можно загрузить по этой ссылке в Dropbox: https://dl.dropboxusercontent.com/u/26064635/SDataset.arff.

В пакете Weka, когда я использую CfsSubsetEval и GreedyStepwise (где setSearchBackwards() установлено на true, а также false), выбранный набор функций содержит только 2 функции (т.е. 79 и 140)! Вероятно, нет необходимости говорить, что производительность классификации с этими двумя функциями ужасно плохая.

Использование ConsistencySubsetEval (в том числе и в Weka) приводит к выбору НУЛЕВЫХ функций! Когда вместо этого используются методы ранжирования признаков и выбираются лучшие (например, 12) признаков, достигается гораздо более высокая эффективность классификации.

У меня два вопроса:

Во-первых, что такого особенного в наборе данных, что приводит к выбору таких немногих функций? это из-за дисбаланса между количеством положительных и отрицательных примеров?

Во-вторых, и что более важно, есть ли какие-либо другие методы выбора подмножества (в Matlab или иным образом), которые я могу попробовать и которые могут привести к выбору большего количества функций?


person PatternRecognition    schedule 08.09.2015    source источник


Ответы (1)


Ясно, что дисбаланс классов не помогает. Вы можете попытаться взять подвыборку набора данных для лучшей диагностики. Фильтр SpreadSubsample позволяет это сделать, указав максимально допустимый дисбаланс классов, например 10:1, 3:1 или любой другой, который вы считаете подходящим.

Для методов выбора вы можете сначала попробовать методы уменьшения размерности, такие как PCA, в WEKA.

Но если алгоритмы выбирают эти наборы признаков, они кажутся наиболее значимыми для вашей задачи классификации.

person shirowww    schedule 15.09.2015
comment
Кстати, если вы сохраните свой набор данных как разреженный arff через фильтр Weka Explorer, NonSparseToSparse, вы сэкономите много места с 35 МБ до 2,5 МБ. Это также помогает ускорить некоторые алгоритмы Weka (не все). - person shirowww; 15.09.2015