🤔 Как с помощью линейной модели понять какие фичи можно сразу откинуть?



Использование линейной модели для выбора наиболее значимых признаков (фич) и отсеивания менее значимых может быть выполнено несколькими способами. Ниже я опишу наиболее популярные подходы:



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

import numpy as np

from sklearn.linear_model import LinearRegression



# Пример данных

X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])

y = np.array([1, 2, 3, 4])



# Создание и обучение линейной модели

model = LinearRegression()

model.fit(X, y)



# Получение коэффициентов

coefficients = model.coef_



print(f"Коэффициенты модели: {coefficients}")




Интерпретация:


🟠Коэффициенты с малыми абсолютными значениями указывают на признаки, которые менее важны для модели.

🟠Признаки с большими абсолютными значениями коэффи­циентов считаются более важными.



Регуляризация: Lasso (L1) и Ridge (L2): Методы регуляризации позволяют улучшить интерпретацию модели и выбрать значимые признаки:

🟠Lasso (L1): Принуждает некоторые коэффициенты быть равными нулю, эффективно отбирая признаки.

🟠Ridge (L2): Не отбирает признаки напрямую, но уменьшает влияние малозначимых признаков.

from sklearn.linear_model import Lasso



# Создание и обучение Lasso модели

lasso = Lasso(alpha=0.1) # Параметр alpha контролирует силу регуляризации

lasso.fit(X, y)



# Получение коэффициентов

coefficients = lasso.coef_



print(f"Коэффициенты Lasso модели: {coefficients}")




Интерпретация: Коэффициенты, которые стали нулевыми после применения Lasso, указывают на признаки, которые можно отсеять.



Методы оценки важности признаков (Feature Importance): Хотя это напрямую не относится к линейным моделям, такие методы как Random Forest или Gradient Boosting могут помочь оценить важность признаков.

from sklearn.ensemble import RandomForestRegressor



# Создание и обучение модели Random Forest

model = RandomForestRegressor()

model.fit(X, y)



# Получение важности признаков

importances = model.feature_importances_



print(f"Важность признаков: {importances}")




Ставь 👍 и забирай 📚 Базу знаний