정규화 회귀

scikit-learn으로 배우는 지도 학습

George Boorman

Core Curriculum Manager, DataCamp

왜 정규화해야 할까요?

  • 복습: 선형 회귀는 손실 함수를 최소화

  • 각 특성 변수에 계수 $a$를 선택하고, $b$를 더함

  • 큰 계수는 과적합으로 이어질 수 있음

  • 정규화: 큰 계수에 페널티를 부여

scikit-learn으로 배우는 지도 학습

릿지 회귀

  • 손실 함수 = OLS 손실 함수 + $$ \alpha * \sum_{i=1}^{n} {a_i}^2$$

  • 릿지는 큰 양수 또는 음수 계수에 페널티를 부과

  • $\alpha$: 선택해야 하는 매개변수

  • $\alpha$를 선택하는 것은 KNN에서 k을 선택하는 것과 비슷함

  • 하이퍼파라미터: 모델 매개변수를 최적화하는 데 사용되는 변수

  • $\alpha$는 모델 복잡도를 제어

    • $\alpha$ = 0 = OLS (과적합으로 이어질 수 있음)

    • 매우 높은 $\alpha$: 과소적합으로 이어질 수 있음

scikit-learn으로 배우는 지도 학습

scikit-learn의 릿지 회귀

from sklearn.linear_model import Ridge

scores = [] for alpha in [0.1, 1.0, 10.0, 100.0, 1000.0]:
ridge = Ridge(alpha=alpha)
ridge.fit(X_train, y_train) y_pred = ridge.predict(X_test)
scores.append(ridge.score(X_test, y_test))
print(scores)
[0.2828466623222221, 0.28320633574804777, 0.2853000732200006, 
 0.26423984812668133, 0.19292424694100963]
scikit-learn으로 배우는 지도 학습

라쏘 회귀

  • 손실 함수 = OLS 손실 함수 + $$ \alpha * \sum_{i=1}^{n} |a_i|$$
scikit-learn으로 배우는 지도 학습

scikit-learn의 라쏘 회귀

from sklearn.linear_model import Lasso

scores = [] for alpha in [0.01, 1.0, 10.0, 20.0, 50.0]: lasso = Lasso(alpha=alpha) lasso.fit(X_train, y_train) lasso_pred = lasso.predict(X_test) scores.append(lasso.score(X_test, y_test)) print(scores)
[0.99991649071123, 0.99961700284223, 0.93882227671069, 0.74855318676232, -0.05741034640016]
scikit-learn으로 배우는 지도 학습

특성 선택을 위한 라쏘 회귀

  • 라쏘는 데이터 세트의 중요한 특성을 선택할 수 있음

  • 덜 중요한 특성의 계수를 0으로 축소

  • 0으로 축소되지 않은 특성만 라쏘로 선택됨

scikit-learn으로 배우는 지도 학습

scikit-learn의 특성 선택을 위한 라쏘

from sklearn.linear_model import Lasso

X = diabetes_df.drop("glucose", axis=1).values y = diabetes_df["glucose"].values names = diabetes_df.drop("glucose", axis=1).columns
lasso = Lasso(alpha=0.1)
lasso_coef = lasso.fit(X, y).coef_
plt.bar(names, lasso_coef) plt.xticks(rotation=45) plt.show()
scikit-learn으로 배우는 지도 학습

scikit-learn의 특성 선택을 위한 라쏘

bar plot of coefficients for each feature, with all around zero except for diabetes with a value of 25

scikit-learn으로 배우는 지도 학습

연습해 봅시다!

scikit-learn으로 배우는 지도 학습

Preparing Video For Download...