正則化付き線形回帰

Pythonで学ぶ次元削減

Jeroen Boeye

Head of Machine Learning, Faktion

線形モデルの概念

特徴量から目的変数へ

Pythonで学ぶ次元削減

自作データセットの作成

x1 x2 x3
1.76 -0.37 -0.60
0.40 -0.24 -1.12
0.98 1.10 0.77
... ... ...
Pythonで学ぶ次元削減

自作データセットの作成

x1 x2 x3
1.76 -0.37 -0.60
0.40 -0.24 -1.12
0.98 1.10 0.77
... ... ...

3つの特徴量の分布

Pythonで学ぶ次元削減

自作データセットの作成

3つの特徴量の分布

目的変数を作成:

$y = 20 + 5x_1 + 2x_2 + 0x_3 + error$

Pythonで学ぶ次元削減

Pythonでの線形回帰

from sklearn.linear_model import LinearRegression

lr = LinearRegression()
lr.fit(X_train, y_train)

# Actual coefficients = [5 2 0]
print(lr.coef_)
[ 4.95  1.83 -0.05]
# Actual intercept = 20
print(lr.intercept_)
19.8
Pythonで学ぶ次元削減

Pythonでの線形回帰

# R二乗を計算
print(lr.score(X_test, y_test))
0.976
Pythonで学ぶ次元削減

Pythonでの線形回帰

from sklearn.linear_model import LinearRegression

lr = LinearRegression()
lr.fit(X_train, y_train)

# Actual coefficients = [5 2 0]
print(lr.coef_)
[ 4.95  1.83 -0.05]
Pythonで学ぶ次元削減

損失関数:平均二乗誤差(MSE)

予測値 vs. 実測値

Pythonで学ぶ次元削減

損失関数:平均二乗誤差(MSE)

予測値 vs. 実測値(MSE)

Pythonで学ぶ次元削減

正則化の追加

予測値 vs. 実測値(MSE+式)

Pythonで学ぶ次元削減

正則化の追加

予測値 vs. 実測値(MSE+式+注釈)

Pythonで学ぶ次元削減

正則化の追加

予測値 vs. 実測値(MSE+式+α)

Pythonで学ぶ次元削減

Lasso回帰器

from sklearn.linear_model import Lasso

la = Lasso()
la.fit(X_train, y_train)

# Actual coefficients = [5 2 0]
print(la.coef_)
[4.07 0.59 0.  ]
print(la.score(X_test, y_test))
0.861
Pythonで学ぶ次元削減

Lasso回帰器

from sklearn.linear_model import Lasso

la = Lasso(alpha=0.05)
la.fit(X_train, y_train)

# Actual coefficients = [5 2 0]
print(la.coef_)
[ 4.91  1.76 0.  ]
print(la.score(X_test, y_test))
0.974
Pythonで学ぶ次元削減

練習してみましょう!

Pythonで学ぶ次元削減

Preparing Video For Download...