SVM CV ошибка уменьшается с увеличением количества функций, но это переопределение. Почему? - PullRequest
0 голосов
/ 03 октября 2019

Я использую RBF-ядро libsvm для задачи классификации. Мой набор данных содержит около 700 векторов, довольно несбалансированный, примерно на 20% положительный: 80% отрицательный.

Я использую несколько алгоритмов оценки характеристик, таких как boruta или fselect.py из libsvm, для построения списка оценки ранжированных объектов, затем выберитенекоторые основные функции из этого списка.

Я использую 10-кратное резюме (примерно 20 раз) для SVM-параметров поиска C & G. Ошибка, оцененная по значению площади под кривой (AUC) для кривой ROC.

Проблема заключается в том, что, когда я беру больше функций, значение AUC становится достаточно высоким (чем больше функций, тем больше значение AUC, больше чем0.95), но в какой-то момент ошибка теста увеличилась, т. Е. Она перегружена большим количеством функций!

Оптимальное количество функций находится где-то посередине (в моем случае около 30).

Увеличениеколичество повторений или сгибов в CV не очень помогает

Как этого избежать? Я ожидаю, что правильно реализованное резюме всегда дает хорошие результаты регуляризации относительно количества функций, т. Е. Оно должно давать небольшие значения AUC с большим количеством функций.

1 Ответ

0 голосов
/ 04 октября 2019

Перекрестная проверка не имеет ничего общего с переоснащением и не может сделать вашу модель обобщенной для невидимых данных. Вместо этого он может дать вам оценку того, как ваша модель работает с новыми и невидимыми данными. Поэтому не ожидайте значительного улучшения точности вашего теста за счет перекрестной проверки или изменения количества сгибов.
Ответ на ваш вопрос заключается в базовой интуиции о машинном обучении: чем больше у вас функций, тем больше данныхнадо тренировать хорошую модель. Если ваша модель использует много функций в качестве входных данных, но не хватает данных для обучения, она не сможет обобщать и работать очень хорошо, независимо от того, насколько хорошо она реализована.

Теперь несколько предложений:

  • Если производительность с оптимальным количеством функций (около 30, как вы заявили) достаточно хорошая, придерживайтесь ее.
  • Если вам нужна более высокая производительность и вы считаете, что низкая производительность вызвана малым количеством функций, попробуйте другие методы сокращения функций, такие как анализ основных компонентов, чтобы уменьшить количество функций при максимально возможном сохранении их полезных данных.
  • Если ни один из вышеперечисленных методов не работает, попробуйте другие алгоритмы классификации, чтобы найти лучший.
...