フルスタックエンジニアを目指す|株式会社ナンバーワンソリューションズ

フルスタックエンジニアを目指す

AI

機械学習の代表的な手法(回帰問題編part1)

更新日:

 GWまであともう少しとなってきました!今年のGWは特に予定がないので(涙)。。。機械学習ですかね!
ということで前回までは機械学習の代表的手法である分類問題について書いてきました。今回からは回帰問題について書いていきます。

〇回帰問題とは
ではそもそも回帰問題ってなんでしょうか?回帰問題とは数値を予想する問題のことです。学習時に入力データと出力データから対応する規則を学び、未知の入力データに対して適切な出力結果を生成する手法です。教師あり学習と言えますね。

〇回帰問題の分類
①線形回帰
Y = ω0 + ω1 x1 + ω2 x2 + ・・・ +ωp xp
のような式に対して(ω0,・・・・,ωp)を求める問題として定式化されています。求めるべき対象が線形であるわけで必ずしも1次式であることを意味しないということに注意すべきです
②非線形回帰
線形以外のすべての回帰です
③単回帰
入出力の関係が1変数で成り立つ式を想定して解く回帰のことです。変数が一つであればよいので上記の線形/非線形の2つの可能性が単回帰にはあります
④重回帰
2変数以上を使うことを想定した回帰のことで同じく線形/非線形の2つの可能性があります

〇最小二乗法
 回帰問題を実現するのに最小二乗法という手法が用いられるケースがあります。では最小二乗法とは何でしょうか?
ある平面上の点を考えてみましょう。その点の関係を表す直線を求める際、すべての点を直線で結ぶことができれば簡単です。が必ずしもそんなケースばかりではないです。
ではどのようにして求めればよいでしょうか。最小二乗法は実際の値と予想値(求める直線から導き出した値)の差の二乗したものの和が最小になるなる直線が最適な直線であるという
考えです。数学の話でムズカシイ。。。と思った方もいるかもしれませんね。

では早速この方法を用いて回帰問題を試してみましょう!

scikit-learnではsklearn import linear_modelのLinearRegressionで最小二乗法を使うことができる。上記のプログラムは一次式に対してy=4x-3上に存在する点100個に対して
ノイズを加えた点の関係を表す回帰を求めたプログラムである。結果は下記のグラフとなります。

またmodel.coef_で傾きを、model.intercept_で切片を求めることができますが出力結果は[[3.98781284]]と[-2.90606371]になりました。おおよそy=4x-3に近い直線が与えられました。
ではこの結果が果たして適切な結果であるのかが次に問われてきます。分類問題では正解/不正解ははっきりしていました。では回帰問題ではどうすればよいでしょうか。
回帰問題では結果の妥当性を客観的に評価する方法としてR2決定係数が知られています。詳しい概念は今回は長くなってしまいますので省略します。
ではその方法で妥当性を求めてみましょう!

結果は0.8634と表示されました。
今回は以上になります。次からもう少し深く回帰問題まで見ていこうと思いますのでお楽しみに!!

-AI

Copyright© フルスタックエンジニアを目指す , 2019 All Rights Reserved Powered by STINGER.