Лассо регрессия не удалит 2 функции, которые сильно коррелируют - PullRequest
2 голосов
/ 08 февраля 2020

У меня есть две функции, скажем, F1 и F2, которые имеют корреляцию около 0,9.

Когда я строил свою модель, я сначала учел все особенности go в своей регрессионной модели. Получив свою модель, я запустил регрессию Лассо на своей модели, надеясь, что это решит любую коллинеарность между функциями. Тем не менее, регрессия Лассо сохранила и F1 и F2 в моей модели.

Два вопроса:

i) Если F1 и F2 сильно коррелированы, но регрессия Лассо все еще сохранила их обоих, что могло бы это значит? Означает ли это, что регуляризация в некоторых случаях не работает?

ii) Как мне отрегулировать мою модель или модель регрессии Лассо, чтобы исключить F1 или F2 в моей модели? (Я использую sklearn.linear_model.LogisticRegression и установил штраф = 'l1' или'asticnet ', пробовал очень большие или очень маленькие значения C, пробовал решатели' liblinear 'или' saga ', и l1_ratio = 1, но я все еще не могу выкинуть ни F1, ни F2 из моей модели)

1 Ответ

1 голос
/ 09 февраля 2020

Ответы на ваши вопросы:

i) Lasso постепенно уменьшает коэффициенты. Вы можете найти хорошую картинку в некоторых книгах, написанных Робертом Тибширани, человеком, стоящим за Лассо / Хребтом, где вы увидите, как некоторые коэффициенты постепенно падают до нуля с ростом коэффициента регуляризации (вы можете выполнить такой эксперимент самостоятельно). Тот факт, что модель все еще сохраняет оба, может означать две вещи: либо модель считает оба важных, либо не хватает регуляризации, чтобы убить одного из них.

ii) Вы правы, вы идете с Lasso с L1 регуляризацией. Это C параметр. Способ кодирования в sklearn: чем меньше C, тем выше параметр регуляризации (обратный). Хотя в машинном обучении ваша задача состоит не в том, чтобы полностью исключить коллинеарность («убить F1 или F2» в вашей комнате), а в том, чтобы найти модель (или набор параметров, если вы sh), которые будут лучше обобщать. Это делается через настройку модели через CV. Предупреждение: более высокая регуляризация означает больше недооценки.

Я бы добавил, что коллинеарность несколько опасна для линейной регрессии, поскольку она может привести к нестабильности модели (различные коэффициенты в разных подвыборках). Итак, с помощью линейной регрессии вы можете sh проверить это тоже.

...