Як виконати логістичну регресію з великою кількістю функцій?


10

У мене є набір даних з 330 зразками та 27 функцій для кожного зразка, з проблемою бінарного класу для логістичної регресії.

Відповідно до "правила, якщо десять", для кожної функції мені потрібно принаймні 10 подій. Хоча я маю незбалансований набір даних із 20% o позитивним класом і 80% негативним класом.

Це дає мені лише 70 подій, що дозволяє приблизно 7/8 функцій бути включеними в логістичну модель.

Я хотів би оцінити всі функції як предиктори, я не хочу вручну вибирати будь-які функції.

То що б ви запропонували? Чи варто зробити всі можливі 7 комбінацій функцій? Чи варто оцінювати кожну особливість окремо за допомогою моделі асоціацій, а потім вибирати лише найкращі для остаточної моделі?

Мені також цікаво керованість категоричними та безперервними функціями, чи можу я їх змішати? Якщо у мене є категоричний [0-1] і безперервний [0-100], чи слід нормалізувати?

Зараз я працюю з Python.

Дякую за допомогу!


"Мені також цікаво поводження з категоричними та безперервними ознаками", я вважаю, що це поставить окреме питання. Насправді, це вже було запропоновано тут .
E_net4 хоче більше скоромов,

2
є різниця між тим, що не вистачає зразків і не має значення. Я б не зосереджувався надто на виборі саме 7 функцій через якесь спрощене правило ...
oW_

1
Робіть все, що ви робили: скористайтеся перехресною валідацією для оптимізації регуляризації. Пропоную еластичну сітку (L1 + L2).
Емре

Відповіді:


6

Щоб зменшити модель до 7 змінних, ви можете скористатися кількома підходами:

  1. PCA (без нагляду): це створює "нові" лінійні комбінації ваших даних, де кожен прогресуючий компонент пояснює якомога більше розбіжності в даних. Тож перші 7 компонентів (з 27) повинні бути в змозі пояснити хороший відсоток варіацій ваших даних. Потім ви можете підключити ці сім компонентів до рівня логістичної регресії. Недоліком тут є те, що через те, що компоненти є комбінаціями оригінальних змінних, ви втрачаєте деяку інтерпретацію за допомогою вашої регресійної моделі. Однак це повинно створювати дуже гарну точність. Ця ж методика застосовується і для інших методів зменшення розмірності, таких як
  2. Інший розповсюджений метод регресії - це покроковий крок, коли ви починаєте з однієї змінної та додаєте на інший кожен крок, який або зберігається, або відміняється за деякими критеріями (як правило, бал BIC або AIC). Поступова регресія назад - це те саме, але ви починаєте з усіх змінних і видаляєте її кожен раз знову, грунтуючись на деяких критеріях. На основі короткого пошуку не здається, що python має ступінчату регресію, але вони мають аналогічний алгоритм усунення функцій, описаний у цій публікації Data Science .
  3. Lasso Regression використовує норму штрафу яка зменшує коефіцієнти характеристик, ефективно усуваючи деякі з них. Ви можете включити цю норму у вашу модель логістичної регресії. Здається , LogisticRegression sklearn дозволяє вам призначити потрібну пеналізацію для досягнення цього. Примітка: Лассо не буде явно встановлювати змінні коефіцієнти до нуля, але зменшить їх, дозволяючи вибрати 7 найбільших коефіцієнтів.L1L1

Як прокоментував @ E_net4, ваше постійне питання вирішено в іншій публікації.


5

Ви ставитесь до "Правила 10" занадто серйозно. Це дуже грубе правило. Він не призначений для використання, як ви його використовуєте.

Здається, що ви думаєте: "У мене є лише 70 позитивних примірників, тому за правилом 10 мені дозволяється використовувати лише 7 функцій; як вибрати, які 7 функцій використовувати?"

Це не те, що означає правило 10. Це не якесь правило, яке визначає, скільки функцій вам дозволено використовувати. Правило 10 є описовим, а не наказовим, і це приблизне керівництво: якщо кількість екземплярів набагато менше, ніж у 10 разів перевищує кількість функцій, у вас особливо високий ризик перевитрати, і ви можете отримати погані результати.

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

І якщо ви зможете отримати більше даних, це дійсно допоможе.

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

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