Чи повинен вибір функції проводитися лише на даних про навчання (або на всіх даних)?


10

Чи повинен підбір функції проводитись лише на даних про навчання (або всіх даних)? Я пройшов деякі дискусії та документи, такі як Гайон (2003) та Сінгхі та Лю (2006) , але все ще не впевнений у правильній відповіді.

Моя установка експерименту така:

  • Набір даних: 50 здорових груп контролю та 50 пацієнтів (близько 200 ознак, які можуть бути відповідні для прогнозування захворювання).
  • Завдання - діагностувати захворювання на основі наявних ознак.

Що я і роблю

  1. Візьміть цілий набір даних і виконайте вибір функції (FS). Я зберігаю лише вибрані функції для подальшої обробки
  2. Спліт для тестування та навчання, класифікатор поїздів, використовуючи дані поїздів та вибрані функції. Потім застосуйте класифікатор для тестування даних (знову використовуючи лише вибрані функції). Використовується перевірка залишків-один-один.
  3. отримати точність класифікації
  4. Усереднення: повторити 1) -3) N разів. (100).N=50

Я погоджуюся, що виконання FS на цілому наборі даних може внести деякі упередження, але моя думка полягає в тому, що він "усереднюється" під час усереднення (крок 4). Це правильно? (Відхилення точності )<2%

1 Guyon, I. (2003) "Вступ до вибору змінних та особливостей", The Journal of Machine Learning Research, Vol. 3, с. 1157-1182
2 Сінгхі, СК та Лю, Х. (2006) "Зміщення вибору підмножини для класифікаційного навчання", Матеріал ICML '06. Матеріали 23-ї міжнародної конференції з машинного навчання, с. 849-856

Відповіді:


12

Процедура, яку ви використовуєте, призведе до оптимістично упереджених оцінок ефективності, оскільки ви використовуєте дані з тестового набору, які використовуються на кроках 2 і 3, щоб визначити, які функції використовуються на кроці 1. Повторення вправи зменшує дисперсію оцінки оцінки ефективності, а не зміщення, тому зміщення не буде середнім. Щоб отримати неупереджену оцінку ефективності, дані тесту не повинні використовуватися жодним чином для вибору моделі, включаючи вибір функції.

Кращий підхід полягає у використанні вкладеної перехресної валідації, щоб зовнішня перехресна валідація давала оцінку ефективності, отриманої за допомогою методу побудови моделі (включаючи вибір функції), а внутрішня перехресна перевірка використовується для незалежного вибору ознак у кожну складку зовнішньої перехресної перевірки. Потім побудуйте остаточну модель прогнозування, використовуючи всі дані.

Оскільки у вас більше функцій, ніж випадків, ви, ймовірно, переобладнаєте дані просто шляхом вибору функції. Це трохи міф, що вибір функцій покращує прогнозовану ефективність, тому якщо саме це вас цікавить (а не ідентифікувати відповідні функції як самоціль), вам, ймовірно, краще скористатися регресією хребта і не виконувати жодної функції відбір. Це, ймовірно, дасть кращу прогнозовану ефективність, ніж вибір функції, за умови ретельного вибору параметра гребля (я використовую мінімізацію статистики PRESS Аллена - тобто оцінку відхилення середньої помилки середнього квадрату).

Детальнішу інформацію див. У Ambroise та McLachlan , і мою відповідь на це питання .


Дякую за відповідь Насправді мені цікаво і те, і інше, щоб знайти відповідні функції та покращити прогнозовану ефективність. У моїх експериментах (SVM для класифікації) вибір функцій значно покращив точність прогнозування (однак, як ви зазначали, це може бути результатом перевиконання даних). Я припускаю, що під регресією хребта ви маєте на увазі щось, що відоме також як регуляризація Тихонова?
pedro29

так, регресія хребта - це просто нормальна лінійна регресія зі строком покарання, заснованим на квадратичній нормі ваг. Для більшості проблем він працює так само добре, як і SVM, але простіший у здійсненні (і ви можете відпрацювати помилку перехресної перевірки відпустки одноразово, по суті, безкоштовно, яку можна використовувати для налаштування гіперпараметрів).
Дікран Марсупіал

до речі, чим відрізняється регуляризація хребта від вибору ознак? Я маю на увазі, наприкінці дня обидва вказують на "кращу підмножину" прогнозів із заданого набору прогнозів.
pedro29

регресія хребта не визначає підмножину ознак, як це робить форма LASSO або LARS пенізованої регресії. Це був би мій вибір вибору функції вибору функції, оскільки він менш сприйнятливий до надмірного пристосування, оскільки штрафний строк передбачає впорядкування функцій, що входять і залишають модель, тому є менше ступенів свободи, ніж просто вичерпно шукати найкращий набір особливості.
Дікран Марсупіал

3

Так само як доповнення до відповідей тут, я отримав два посилання, які дійсно допомогли мені зрозуміти, чому це не є хорошою процедурою:

Редагувати: за потребою, коротке пояснення змісту посилань:

Припустимо, я навчаю класифікатор і маю набір даних з 1000 зразків, по 1 мільйон функцій у кожному. Я не можу обробити їх усіх, тому мені потрібно менше функцій (скажімо, я можу обчислити 300 функцій). У мене також є проведений тестовий набір із 100 зразків, щоб точно оцінити мою позабіржову, реальну точність.

Якщо я фільтрую свої 1 мільйон функцій до 300, вибираючи ті функції, які мають найвищу кореляцію з цілями всього мого набору даних, я роблю помилку (тому що ввожу надмірну обробку, яку згодом неможливо визначити перехресною валідацією). Мій витриманий набір покаже це, виплюнувши назад неправильне значення точності.

Відповідно до вищезазначених посилань, правильний спосіб зробити це - розділити мій набір даних на навчальний набір і набір крос-валідації, а потім настроїти мою модель (фільтруючи функції тощо) на основі цього навчального набору та пов’язаного з ним рейтингу резюме. Якщо я використовую K-складки, я повинен налаштовуватися з нуля кожен раз, коли я роблю спліт / складку, а потім оцінюю результати.

Програматично ви робите наступне:

  • Не тримайте осторонь частину вашого набору даних як набір для витримки.
  • Розділіть решту вашого набору даних (відтепер називається T1) на K-складки.
  • У циклі for-від i = 1 до K зробіть наступне:
    • виберіть i-й складку як набір резюме, а решту зразків як навчальний набір (звідси називається Ti).
    • Виконайте все, що завгодно інженерія та вибір функцій: фільтруйте функції, комбінуйте їх тощо.
    • Перетворіть як свій набір CV (поточний склад, який називається CVi), так і поточний навчальний набір Ti в один з відповідними функціями.
    • Тренуйте свою модель на тренувальному наборі Ti
    • Отримайте бал з поточної складки, CVi. Додайте цей бал до списку, де містяться всі партитури.
  • Тепер у вашому списку є оцінка кожної складки, тому ви середньо оцінюєте її, отримуючи K-кратну кількість балів.

Це дійсно важливо, щоб ви виконували інженерію функцій всередині циклу, на наборі для тренування, Ti, а не на повному навчальному наборі, T1.

Причиною цього є те, що коли ви підходите / випускаєте інженера для Ti, ви проходите тест на CVi, що не бачить для цієї моделі. Оскільки, якщо ви підходите / інженер-інструктор на T1, будь-яке резюме, яке ви вибрали, повинно бути підмножиною T1, і таким чином ви будете оптимістично упередженими, тобто ви будете переобладнаними, оскільки ви навчаєтесь і тестуєте на одних і тих же зразках даних.

Справді хороша відповідь StackExchange - це ця , яка справді пояснює це більш глибоко та з прикладом коду. Також розглядайте це як додаток.


1
Чи можете ви включити короткий підсумок змісту цих посилань? Ми віддаємо перевагу автономних відповідей, інакше вони можуть бути дуже вразливими до "linkrot", якщо посилання змінить місцеположення. Крім того, ми можемо перетворити це в коментар для вас.
Срібна рибка

@Silverfish Виконано
Абхішек Дівекар

Отже, всередині for-loop, чи могли бути різні обрані функції для різних складок?
стік потоку

2

"Оптимізм" завантажувального апарату Efron-Gong дуже хороший для цього. Ідея полягає у використанні всіх доступних даних для розробки прогнозної моделі та використання всіх даних для оцінки ймовірних майбутніх показників цієї самої моделі. І ваш розмір вибірки занадто малий у 100 разів для будь-якого підходу до розбиття вибірки.

Y

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.