Help us understand the problem. What is going on with this article?

【機械学習】線形回帰を勉強してみる

線形回帰は名前の通り、特徴量と目的変数の関係を線形関数(多項式関数)で表したモデルです。教師あり学習の回帰問題に使われます。

f\left( \boldsymbol{x}\right) =\boldsymbol{ax}^{T}+b

ここで、$\boldsymbol{a}$は係数で、$\boldsymbol{x}$は特徴量を表します。$b$ は誤差項(bias parameter) と呼ばれ、xからは独立しています。学習データを使って最適なaとbを求めます。

パラメターの最適化

評価関数

学習データから最適なaとbを見つけるのに、評価関数の最適化を行ます。一般的に下の平均二乗誤差(Mean Squared Error) のようなコスト関数の最小化が使われます。

C(a,b)  = \dfrac {1}{n}\sum _{\left( x_{i},y_{i}\right) \in T}\left( \left( ax_{i}+b\right) -y_{i}\right) ^{2}

この評価関数を係数 aとbで偏微分し、0になる点を求めることで、最適な係数を見つけることができます。

\dfrac {dC^{\widehat {b}}}{da} = \dfrac {1}{n}\Sigma^{n}x_{i}\left( ax_{i}+b-y_{i}\right) = 0
\\
\dfrac {dC^{\widehat {a}}}{db} = \dfrac {1}{n}\Sigma^{n}\left( ax_{i}+b-y_{i}\right) = 0
\\

補足ですが、このコスト関数を分解すると、二次方程式になることがわかります。

C(a,b) = \dfrac {1}{n}\sum _{\left( x_{i},y_{i}\right) \in T}\left( a^2x_i^2 + b^2 - 2axy - 2by_i + y_i^2\right)

勾配法

このMSEの最小化でよく使われる手法の一つに勾配法 (gradient descent)があります。勾配法は、下のようにある決まった学習率 $\eta$とランダムに定められたaとbの値を用いて、徐々に最適なaとbに近づけていく仕組みとなっています。

\begin{aligned}\widehat {a}:=a-\eta \cdot \dfrac {dC^{\widehat {b}}}{da}\left( \widehat {a}\right) \quad\quad
\dfrac {dC^{\widehat {b}}}{da} = \dfrac {1}{n}\Sigma ^{n}x_{i}\left( ax_{i}+b-y_{i}\right) \end{aligned}\\\\

\begin{aligned}\widehat {b}:=b-\eta \cdot \dfrac {dC^{\widehat {a}}}{db}\left( \widehat {b}\right) \quad\quad
\dfrac {dC^{\widehat {a}}}{db} = \dfrac {1}{n}\Sigma ^{n}\left( ax_{i}+b-y_{i}\right) \end{aligned}

勾配法のアルゴリズムをステップごとに書くと、
(1) 学習率と、ランダムな値をa,bにセットする。
(2) セットされたa,bをもとにコスト関数の勾配(aとbそれぞれの偏微分)を計算。
(3) コスト関数の勾配と学習率をかけた値をセットしたa,bから引き、aとbをアップデート。
(4) ステップ2〜3をn回繰り返す。

勾配法の利点

  • 非凸関数にも使える。
  • 特徴量が多くても使える。

勾配法の弱点

  • aとbの良さが学習率とトータルアップデート数nに依存する。

連立方程式

連立方程式でも勾配法と同様に、コスト関数の傾きが0となる点を下の偏微分で求めていきます。

\dfrac {dC^{\widehat {b}}}{da} = \dfrac {1}{n}\Sigma^{n}x_{i}\left( ax_{i}+b-y_{i}\right) = 0
\\
\dfrac {dC^{\widehat {a}}}{db} = \dfrac {1}{n}\Sigma^{n}\left( ax_{i}+b-y_{i}\right) = 0
\\

上の式を展開した連立方程式を解けば、コスト関数の傾きが0になるaとbを見つけることができます。

連立方程式の利点

  • 完全に最適化されたaとbを得られる。

連立方程式の弱点

  • 求めたい関数が凸関数でないときに、解が一つに定まらない。 すると下の図のbのように、関数が凸関数でないとき、傾きが0になる点が複数存在するため、連立方程式のかいが複数存在することになります。 Screenshot 2019-12-21 at 18.37.35.png

scikit learn Linear Regression

from sklearn.linear_model import LinearRegression
reg = LinearRegression().fit(X, y)
reg.predict(X_test)
shuva
情報理工学科の学部生です。覚書として色々投稿しています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした