У меня есть набор данных классификации со 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 или иным образом), которые я могу попробовать и которые могут привести к выбору большего количества функций?