正則化のLasso回帰とRidge回帰
前回は線形回帰とロジスティック回帰を説明しました。この記事では、正則化したLasso回帰とRidge回帰をお話になります。 回帰モデルで過学習を防ぐ方法の1つとして、誤差関数(二乗誤差関数など)に次の式で表される正則化項を加えて最小化します。正則化項を用いる回帰をリッジ回帰と呼びます。 正則化項を加えるメリットは以下になります。1.変数が多い時に発生する過学習を抑える事が出来る。2.相関があるような変数の影響を抑える事が出来る(但し一致性は保証されない)。3.相関の高い変数群がある場合、Lasso/Ridgeはその中の1つしか変数として選択できない。4.係数が小さくなる。 Ridge回帰 Ridge回帰では、L2正則化を用いています。L2ノルム(係数のユークリッド長)に対してペナルティを与えます。alpha値を設定することにより、係数への制約を調整できます。 pythonでRidge回帰を作成しましょう。先ず、ライブラリーのインポートとデータセットを作成します。 import matplotlib.pyplot as plt import numpy as np from sklearn.cross_validation import train_test_split from sklearn.datasets import make_regression from sklearn.linear_model import Ridge from sklearn.metrics import mean_squared_error # サンプルデータ作成 1000サンプル、300 特徴量 X, y, w = make_regression(n_samples=1000, n_features=300, coef=True, random_state=1, bias=3.5, noise=35) モデル作成し、test scoreを計算します。 alphas = 0.1, 1,5, 10, 100 # 学習 テスト 分ける X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=3) clf …