Как выполнить логистическую регрессию с большим количеством функций?

10

У меня есть набор данных с 330 выборками и 27 функциями для каждой выборки, с проблемой двоичного класса для логистической регрессии.

Согласно «правилу если десять» мне нужно по крайней мере 10 событий для каждой функции, которая будет включена. Тем не менее, у меня есть несбалансированный набор данных, с 20% положительного класса и 80% отрицательного класса.

Это дает мне только 70 событий, что позволяет включить в модель логистики только 7/8 функций.

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

Так что бы вы предложили? Должен ли я сделать все возможные 7 комбинаций функций? Должен ли я оценивать каждую функцию отдельно с моделью ассоциации, а затем выбирать только лучшие из них для окончательной модели?

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

В настоящее время я работаю с Python.

Большое спасибо за вашу помощь!

LucasRamos
источник
«Мне также любопытно работать с категориальными и непрерывными функциями». Я считаю, что это сделало бы отдельный вопрос. На самом деле, это уже было задано здесь .
E_net4 в полной
2
есть разница между нехваткой образцов и несущественными характеристиками. Я бы не стал уделять слишком много внимания выбору ровно 7 функций из-за некоторого упрощенного правила ...
oW_
1
Делайте то, что вы делаете в любом случае: используйте перекрестную проверку для оптимизации регуляризации. Я предлагаю эластичную сеть (L1 + L2).
Эмре

Ответы:

6

Чтобы уменьшить вашу модель до 7 переменных, есть несколько подходов:

  1. PCA (без присмотра): это создает «новые» линейные комбинации ваших данных, где каждый исходящий компонент объясняет как можно большую разницу в данных. Таким образом, первые 7 компонентов (из 27) должны быть в состоянии объяснить хороший процент изменения ваших данных. Затем вы можете включить эти семь компонентов в ваше уравнение логистической регрессии. Недостатком здесь является то, что, поскольку компоненты являются комбинациями ваших исходных переменных, вы теряете некоторую интерпретацию с вашей регрессионной моделью. Это должно однако производить очень хорошую точность. Этот же метод применяется к другим методам уменьшения размеров, таким как
  2. Другим распространенным методом регрессии является пошаговое продвижение вперед, когда вы начинаете с одной переменной и добавляете к другому каждый шаг, который либо сохраняется, либо отбрасывается на основе некоторых критериев (обычно баллов BIC или AIC). Пошаговая регрессия назад - это то же самое, но вы начинаете со всех переменных и удаляете по одному каждый раз, основываясь на некоторых критериях. Основываясь на кратком поиске, кажется, что питон не имеет ступенчатой ​​регрессии, но он выполняет аналогичный алгоритм исключения функций, описанный в этом посте Data Science .
  3. L1L1

Как прокомментировал @ E_net4, ваш постоянный вопрос рассматривается в другом посте.

bnorm
источник
5

Вы принимаете «Правило 10» слишком серьезно. Это очень грубое правило. Он не предназначен для использования так, как вы его используете.

Похоже, вы думаете: «У меня только 70 положительных примеров, поэтому по правилу 10 мне разрешено использовать только 7 функций; как выбрать, какие 7 функций использовать?»

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

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

И если вы сможете получить больше данных, это действительно поможет.

Наконец, поскольку у вас есть несбалансированные классы, вы можете рассмотреть вопрос о дисбалансе классов и методах борьбы с ним.

DW
источник