機械学習1:線形回帰モデル

線形回帰モデルとは

要点まとめ

説明変数 \boldsymbol x に対して、パラメータ \boldsymbol  wを使用して、 \hat{\boldsymbol y} = \boldsymbol {w}^T \boldsymbol {x} + w_0のモデルを立てる。

学習用データ  \boldsymbol y を用いて、平均二乗誤差
MSE_{train} = \frac{1}{n_{train}} \sum_{i=1}^{n_{train}} (\hat{\boldsymbol{y_i}}^{(train)} - \boldsymbol{y}_i^{(train)})^{2}
が最小となる  \boldsymbol{w} を求めるために、平均二乗誤差を \boldsymbol{w}偏微分したものが0になる条件から、 \boldsymbol{w}を求める。

Pythonで実装する場合、

## sklearnモジュールからLinearRegressionをインポート
from sklearn.linear_model import LinearRegression

# オブジェクト生成
model = LinearRegression()

# fit関数でパラメータ推定 (data : 説明変数, target : 目的変数)
model.fit(x_train, y_train)

#予測 新たな目的変数を与えると、推定値を返す
y_pred = model.predict(x_valid)

# 平均二乗誤差で性能を評価
from sklearn.metrics import mean_squared_error
MSE = mean_squared_error(y_valid, y_pred)

演習実績

f:id:yui-gen-ron:20211111221539p:plain

説明変数

 \displaystyle
\boldsymbol{x} = {(x_1, x_2, \cdots , x_m)}^T  \in \mathbb{R}

目的変数

 \displaystyle
y \in \mathbb{R}

パラメータ

 \displaystyle
\boldsymbol{w} = {(w_1, w_2, \cdots , w_m)}^T  \in \mathbb{R}

線形結合で予測値  \hat{y} を求める

 \displaystyle
\hat{y} = \boldsymbol{w}^T \boldsymbol{x} + w_0 \\
 \displaystyle
= \sum_{j=1}^{m} w_j x_j + w_0

線形回帰モデルのパラメータは最小二乗法で推定

MSE (平均二乗誤差)

学習用データのMSEは、学習データとモデル出力との二乗誤差の平均

 \displaystyle
MSE_{train} = \frac{1}{n_{train}} \sum_{i=1}^{n_{train}} (\hat{y_i}^{(train)} - y_i^{(train)})^{2}

 w偏微分して0となる w を求める。


  \displaystyle 
  \frac{\partial }{\partial w} 
  \Biggl(
    \frac{1}{n_{train}}
      ( \hat{y}_i^{(train)} - y_i^{(train)})^2
  \biggr) = 0

 
  \displaystyle
  \frac{1}{n_{train}}
  \frac{\partial }{\partial w}
  \Biggl(
    (\boldsymbol{X}^{(train)} \boldsymbol{w}- \boldsymbol{y}^{(train)})^T
    (\boldsymbol{X}^{(train)} \boldsymbol{w}- \boldsymbol{y}^{(train)})
  \biggr) = 0

 
  \displaystyle
  \frac{1}{n_{train}}
  \frac{\partial }{\partial w}
  (
    \boldsymbol{w}^T \boldsymbol{X}^{(train)T} \boldsymbol{X}^{(train)} \boldsymbol{w} 
    - 2 \boldsymbol{w}^T \boldsymbol{X}^{(train)T} \boldsymbol{y}^{(train)} + \boldsymbol{y}^{(train)T} \boldsymbol{y}^{(train)}
  ) = 0

 
  \displaystyle
  \Bigl( \boldsymbol{X}^{(train)T} \boldsymbol{X}^{(train)} + (\boldsymbol{X}^{(train)T} \boldsymbol{X}^{(train)})^T \bigr) \boldsymbol{w} - 2 \boldsymbol{X}^{(train)T} \boldsymbol{y}^{(train)} = 0

 

  \displaystyle
  2\boldsymbol{X}^{(train)T} \boldsymbol{X}^{(train)} \boldsymbol{w} - 2 \boldsymbol{X}^{(train)T} \boldsymbol{y}^{(train)} = 0


 
  \displaystyle
  \hat{\boldsymbol{w}} = (\boldsymbol{X}^{(train)T} \boldsymbol{X}^{(train)})^{-1} \boldsymbol{X}^{(train)T} \boldsymbol{y}^{(train)} 


ここから、予測値 \hat{y}は、

 
  \displaystyle
  \hat{\boldsymbol{y}} = \boldsymbol{X^{(new)}}\hat{\boldsymbol{w}}