Я работаю над двумя алгоритмами выбора функций для реальной проблемы, где размер выборки составляет 30, а размер функции - 80. Первый алгоритм - это выбор функций с оболочкой с использованием классификатора SVM, второй - алгоритм выбора функций фильтра с использованием корреляции Pearson product-moment. коэффициент и коэффициент ранговой корреляции Спирмена. Получается, что выбранные признаки этими двумя алгоритмами вообще не пересекаются. Это разумно? Означает ли это, что я допустил ошибки в своей реализации? Спасибо. К вашему сведению, я использую Libsvm + Matlab.
результаты двух алгоритмов выбора признаков не совпадают
Ответы (2)
Это определенно может произойти, поскольку обе стратегии не имеют одинаковой силы выражения.
Доверяйте оболочке, если вам нужно лучшее подмножество функций для прогнозирования, доверяйте корреляции, если вам нужны все функции, связанные с выходной/прогнозируемой переменной. Эти подмножества могут быть совершенно разными, особенно если у вас много избыточных функций.
Использование наиболее коррелированных признаков — это стратегия, которая предполагает, что отношения между признаками и выходной/прогнозируемой переменной являются линейными (или, по крайней мере, монотонными в случае ранговой корреляции Спирмена), и что признаки статистически независимы друг от друга и не зависят друг от друга. «взаимодействовать» друг с другом. Эти предположения чаще всего нарушаются в реальных задачах.
Корреляции или другие «фильтры», такие как взаимная информация, лучше использовать либо для того, чтобы отфильтровать признаки, чтобы решить, какие признаки не учитывать, чем для того, чтобы решить, какие признаки следует учитывать. Фильтры необходимы, когда начальное количество функций очень велико (сотни, тысячи), чтобы уменьшить нагрузку на последующий алгоритм-оболочку.
В зависимости от распределения данных вы можете использовать либо Спирмена, либо Пирсона. Последний используется для нормального распределения, а первый — для ненормального. Найдите распределение и используйте подходящее.