Должен ли выбор функций выполняться только для данных обучения (или всех данных)? Я прошел через некоторые обсуждения и документы, такие как Guyon (2003) и Singhi and Liu (2006) , но все еще не был уверен в правильном ответе.
Моя экспериментальная установка выглядит следующим образом:
- Набор данных: 50 здоровых контрольных пациентов и 50 больных (около 200 признаков, которые могут иметь отношение к прогнозированию заболевания).
- Задача - диагностировать заболевание на основе доступных функций.
Что я делаю
- Возьмите весь набор данных и выполните выбор объекта (FS). Я сохраняю только выбранные функции для дальнейшей обработки
- Разделите для тестирования и обучения, обучите классификатор, используя данные поезда и выбранные функции. Затем примените классификатор для проверки данных (снова используя только выбранные функции). Проверка по принципу «один-один-выход» используется.
- получить точность классификации
- Усреднение: повторите 1) -3) N раз. (100).
Я бы согласился, что выполнение FS для всего набора данных может привести к некоторому смещению, но я считаю, что оно «усредняется» во время усреднения (шаг 4). Это верно? (Точность отклонения )
1 Гайон, И. (2003) «Введение в переменную и выбор функций», Журнал исследований машинного обучения, Vol. 3, с. 1157-1182
2 Сингхи, С. К. и Лю, Х. (2006) «Смещение выбора подмножества функций для обучения по классификации», Материалы ICML '06 Материалы 23-й международной конференции по машинному обучению, с. 849-856
Как дополнение к ответам здесь, у меня есть две ссылки, которые действительно помогли мне понять, почему это не очень хорошая процедура:
http://nbviewer.jupyter.org/github/cs109/content/blob/master/lec_10_cross_val.ipynb
https://www.youtube.com/watch?v=S06JpVoNaA0
Изменить: по запросу, краткое объяснение содержания ссылок:
Предположим, я тренируюсь по классификатору, и у меня есть набор данных из 1000 выборок, по 1 миллиону объектов в каждом. Я не могу обработать их все, поэтому мне нужно меньше функций (скажем, я могу вычислить 300 функций). У меня также есть тестовый набор из 100 образцов для точной оценки моей реальной точности.
Если я отфильтрую свои 1 миллион объектов до 300, выбрав эти объекты с наибольшей корреляцией с целями всего моего набора данных, я совершу ошибку (потому что я ввожу переобучение, которое не может быть обнаружено при перекрестной проверке позже). Мой протяженный набор покажет это, демонстрируя плохую точность.
Согласно приведенным выше ссылкам, правильный способ сделать это - разделить мой набор данных на обучающий набор и набор перекрестной проверки, а затем настроить мою модель (отфильтровывая функции и т. Д.) На основе этого обучающего набора и связанного с ним показателя CV. Если я использую K-фолды, я должен настраиваться с нуля каждый раз, когда делаю сплит / фолд, а затем усредняю результаты.
Программно вы делаете следующее:
Очень важно, чтобы вы выполняли конструирование функций внутри цикла, на вспомогательном обучающем наборе Ti, а не на полном обучающем наборе T1.
Причина этого заключается в том, что, когда вы подходите / разрабатываете функцию для Ti, вы тестируете CVi, что невидимо для этой модели. Принимая во внимание, что если вы подходите / работаете инженером по Т1, любое выбранное вами резюме должно быть подмножеством Т1, и поэтому вы будете с оптимизмом настроены, то есть будете испытывать перевес, потому что вы тренируетесь и тестируете на одних и тех же выборках данных.
Действительно хороший StackExchange ответ это один, который на самом деле объясняет это более подробно и с примером кода. Также смотрите это как дополнение.
источник
Эпрон-гонгский бутстрап "оптимизм" очень хорош для этого. Идея состоит в том, чтобы использовать все доступные данные для разработки прогнозирующей модели и использовать все данные для оценки вероятных будущих характеристик той же модели. И размер вашей выборки слишком мал в 100 раз для любых подходов с разделенной выборкой.
Для правильного использования начальной загрузки вы должны запрограммировать все шаги, которые использовали и повторять их заново при каждом повторном сэмпле. За исключением выбора функций, вот хороший пример: Интерпретация модели логистической регрессии с несколькими предикторамиY
источник