多項式の回帰問題に挑む

前回の線形回帰分析の結果です。

 

1次関数にしたらこんな感じになりました。

 

各データの中心を通ってる…といわれればそうなんですが、もうちょっとどうにかならんもんか…と思うところです。

 

そこで、今回は回帰モデルを一次関数$y=ax+b$の直線に代えて、2次以上の多項式回帰(n次関数)$$y =b+{w_1}{x}+{w_2}{x}^{2}+…+{w_n}{x}^{n}$$の曲線にすることでよりデータに合う回帰モデルを作成していきます。

データの標準化

今回も前回と同じサンプルデータを使用します。

[タイムS、上がり3F]  

データの標準化

ここまで前回と同じ。

 

多項式回帰モデルの作成

まず、2次の多項式(2次関数)を使うことにします。

2次関数

回帰モデル:

$y=b+{w_1}{x}+{w_2}{x}^{2}$

 

前回と同じく

  • 変数(Variable)の宣言
  • 多項式回帰モデル
  • 平均2乗誤差関数の定義

を行います。

def loss関数の戻り値:

returnの数式:$\frac{1}{n}\displaystyle \sum_{i=1}^n ({y_i-f_w(x_i)})^{2}$

 

最適化処理の実装

前回と同じように勾配降下アルゴリズムを利用します。

  • 学習率0.01
  • 学習回数300回

 

 

結果

グラフ描画

 

結果

 

グラフの右側に関してはほぼデータがライン上にあることがわかります。

 

3次関数

3次関数にするとどうなるでしょうか?

手順は2次関数とほぼ同じです。

 

3次関数の回帰モデル:

$y=b+{w_1}{x}+{w_2}{x}^{2}+{w_3}{x}^{3}$

 

 

 

 

結果

グラフの描画

 

結果

グラフの左側が2次関数よりもしっくりした感じがします。

 

4次関数

4次関数までやってみましょう。

 

4次関数の回帰モデル:

$y=b+{w_1}{x}+{w_2}{x}^{2}+{w_3}{x}^{3}+{w_4}^{4}$

 

 

結果

 

グラフの描画

 

結果

 

んー…とりあえずは今回のサンプルデータでは3次関数のほうがしっくり来ますね…

 

まとめ

2次関数から4次関数までの回帰モデルを試してみました。今回のサンプルデータでは3次関数がいちばんあってるように見えます。

線形回帰分析のもっとも入り口のところは理解できたのではないかと思います。

では、また次回。