Це хороша практика художньої інженерії?


10

У мене є практичне питання щодо функціональної інженерії ... скажіть, я хочу спрогнозувати ціни на будинки, використовуючи логістичну регресію та використовуючи купу функцій, включаючи поштовий індекс. Потім, перевіривши важливість функції, я розумію, що поштовий індекс є досить хорошою характеристикою, тому я вирішив додати ще кілька функцій на основі zip - наприклад, я переходжу до бюро переписів і отримую середній дохід, кількість населення, кількість шкіл та кількість лікарень кожного поштового індексу. Завдяки цим чотирьом новим функціям я вважаю, що ефективність моделей зараз краща. Тож я додаю ще більше функцій, пов’язаних з блискавками ... І цей цикл продовжується і продовжується. Врешті-решт у моделі будуть домінувати ці функції, пов’язані з блискавками, правда?

Мої запитання:

  1. Чи має сенс це робити в першу чергу?
  2. Якщо так, то як я можу знати, коли настав час зупинити цей цикл?
  3. Якщо ні, то чому б і ні?

Відповіді:


6

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

Існують такі показники, які намагатимуться вас орієнтувати на це, наприклад інформаційний критерій Akaike (AIC) або порівнянний байєсівський інформаційний критерій (BIC). Вони по суті допомагають вибрати модель на основі її продуктивності, караючись за всі додаткові параметри, що вводяться, і які необхідно оцінити. AIC виглядає приблизно так:

АЯС=2к-2ln(L^)

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

Ці критерії можуть допомогти вам сказати, коли зупинитись, оскільки ви можете спробувати моделі з все більшими параметрами та просто взяти модель, яка має найкраще значення AIC або BIC.

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

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


7

1) Так, це має сенс. Спроба створити функції вручну допоможе учням (тобто моделям) отримати більше інформації з необроблених даних, оскільки вихідні дані не завжди є у формі, яка піддається навчанню, але ви завжди можете побудувати з неї такі функції. Функція, яку ви додаєте, заснована на одній функції. Це звичайне явище. Однак ваш учень, логістичний регрес, чутливий до мультиколінеарності. Вам потрібно бути уважним, яку функцію та скільки функцій додати. Інакше модель може бути надмірна.

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

3) Продовжувати додавати нові функції - це не завжди гарна ідея. Будьте обережні з прокляттям високої розмірності. Додаючи нову функцію, ви фактично додаєте новий вимір у свої дані. Наївно, можна подумати, що збір більшої кількості функцій ніколи не шкодить, оскільки в гіршому випадку вони не дають нової інформації про клас. Але насправді їх користь може бути переважена прокляттям розмірності. Сподіваюся, корисні речі, які потрібно знати про сеанс машинного навчання6, можуть допомогти.


Чи @ user3768495 оцінює працездатність моделі поза вибіркою, використовуючи, наприклад, перехресну перевірку? Якщо це так, мультиколінеарність не повинна бути проблемою, і він не повинен турбуватися про перевитрату, оскільки він отримає вказівку на перевиконання через зменшення ефективності перевірки.
rinspy

@rinspy overfitting має багато облич. Залучення набору перевірок може допомогти уникнути перевиконання, але не може вирішити проблему. Наприклад, непослідовний розподіл між навчальними даними (який розбивається на навчальний набір і набір валідацій) та реальним населенням. Навіть модель чудово справляється з навчальними даними, вона не може бути узагальнена до реальної ситуації. Посилання з моєї відповіді також говорило про надмірну обробку.
Fansly

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

Моя концепція переозброєння полягає в тому, коли модель не змогла узагальнити новий набір даних, а не під час навчальних даних. Будь ласка, дивіться це
Fansly

4

Зазвичай, чим багатші функції, тим краще.

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

На цю тему є багато інформації (та потенційних способів її пом'якшення), просто регресія в Google і мультиколінеарність.

Коротко,

  1. Так. Найбільш точно.
  2. @ n1k31t4 має кілька хороших пропозицій. Не соромтеся генерувати те, які функції, на вашу думку, покращать вашу модель, тоді ви можете використовувати методи, такі як PCA та інші методи вибору функцій, щоб обмежитися тим, що важливо.
  3. Інша річ, яку слід врахувати, - наскільки це практично як у зусиллях, так і в результаті.

0

Особливості - це інформація вашої моделі. Чим більше інформації, тим краще вона зможе виконувати та прогнозувати. Чим менше, тим важче передбачити значення. Тож короткий назер - так. Завжди варто мати якомога більше функцій. Це завжди є обмеженням, хоча оскільки перевантаження інформації також може спалити ваш процесор, тому будьте уважні до того, скільки функцій розробляється. Крім того, непотрібні функції лише додають до вигорання, тому завжди корисно прибирати певні функції. У цьому полягає вся фаза попередньої обробки даних.

У першій відповіді є кілька хороших деталей про це. Що стосується зупинки циклу, то є кілька заходів та факторів, про які потрібно знати, щоб перевірити, де ваша модель перестала працювати краще, і це такі заходи, як RMSE. Простим прикладом буде використання xgboostрегресії ваших даних та вказівка ​​кількості циклів. Запустіть модель, і ви отримаєте RMSE для кожного циклу. Він зменшиться до межі, після чого ви зможете зробити висновок про те, що модель плато пройшла після певного циклу. Так працює настройка та оптимізація моделей.

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