暇人日記

アラフォーおっさんのコーセラの機械学習の課題を解こうと頑張っています!

Week5までのまとめとLinear Regressionの精度の考え方

Week5までのまとめをしたいと思います。

 

機械学習の予測の考え方は大きく↓でした。

 

①予測式-->②Cost Function-->③Gradient-->④最適θ-->⑤予測

 

①予測式をたてて②Cost Functionで差分の合計をJで表現します。

Jが小さくなれば小さくなるほど、精度が良いということになります。

 

②のCost Functionを最小にする値は何かを計算するのに必要なのが、

③Gradientでした。Gradientはいわば微分みたいなものだと思いました。

(厳密には勾配のようですが、文系の私には同じに見えます)

 

②Cost Functionと③Gradientを基にfmincgもしくはfminuncといった関数を使って

④最適θを計算します。

 

④最適θを計算したら⑤予測するという流れでした。

 

①予測式=Model Representation/②Gost Function/③GradientDecentを

まとめたのが↓でした。

f:id:omoshiroamericanews:20200810222536p:plain



Week2ではLinear Regression

Week3ではLogistic Regressionの

Week4ではOne VS AllのLogistic Regression

Week5ではNeural NetworkのLogistic Regression

を行いました。

 

そしてNeural NetworkのLinear Regressionを課題外でしたがやりました。

 

違う見方をすると

Linear Regressionの予測方法でできるようになったことは

①シンプルな直線での予測

②α毎にJを縦軸にIterationを横軸にとってJが小さくなっていくか確認

③Normal Equationでの一発最適θの発見

④Polynomial=多項式化による曲線での予測

⑤λを調整してoverfit/underfitの加減を調整しての予測

⑥Neural Networkでの予測

 

Logistic Regressionの予測方法でできるようになったことは

①シンプルな直線での予測

②Polynomial=多項式化による曲線での予測

③λを調整してoverfit/underfitの加減を調整しての予測

④One VS Allでの予測

⑤Neural Networkでの予測

 

 

Week2の課題はLinear Regression

Week3の課題はLogistic Regression

Week4とWeek5の課題は共通でLogistic Regressionでした(手書き文字判別)。

 

Week2の課題には通常のLinear RegressionもNeural NetworkでのLinear Regressionも

取り組みましたが、Jは20憶前後でした。

Linear Regressionは誤差をどう評価するという点が課題として残っています。

※Logistic Regressionは85%とかででるのでわかりやすいのですが。。。

 

なので、Week2の課題を基にJがいくらだったら精度何%だといえるかを考えたい

と思います。

 

Week2の課題はサンプル数が47でした↓

 

f:id:omoshiroamericanews:20200811145415p:plain

 

合計は↓の15,999,395です。

f:id:omoshiroamericanews:20200811145452p:plain


この15,999,395の+1%は16,159,389で-1%は15,839,401です。

予測値の合計が15,839,401~16,159,389だとJがどうなるの考えてみます。

 

パターン①

1%分の159,994が47のサンプルで均等にずれた場合、

1つあたりの誤差は159,994÷47で3,404になります。

3404の2乗は11,587,216で47個分かけると544,599,152となります。

5.4億です。

 

パターン②

1%分の159,994が1つのサンプルのみで起きる場合(=46のサンプルは100%の精度)、

159,994の2乗なので、25,598,080,036になります。

 

パターン①とパターン②で54億と250億で桁が1つ違います。。。

 

が、予測とサンプルは見比べてパターン①とパターン②のどちらかは

分かるのでパターン①で誤差1%の際の予測のJは544,619と考えていいと思います。

 

Week2の課題をNeural Networkで解いたときに

Jが41憶と28憶という値が出てきました↓

 

www.courseradaisuki.com

 

パターン①で考えると

41億の誤差を47のサンプル数で割って87,234,042を平方根して9,339なので

1つあたりの誤差は9,339です。

1%の誤差の場合は1つあたりは3,404でした。

1つあたりの誤差は3倍なので誤差は3%と考えていいのでしょうか。

 

パターン①の1%/2%/3%の場合を作ってみました↓

 

f:id:omoshiroamericanews:20200811160035p:plain

 

9,339は2%と3%の間にいます。

f:id:omoshiroamericanews:20200811160450p:plain

Jと1つあたりの誤差がわかっているので逆算してみました。

パターン①の考えで正しければ精度は2.7%になります。

 

 

28億の誤差を47のサンプル数で割って59,574,468を平方根して7,718なので、

1つあたりの誤差は7,718です。

f:id:omoshiroamericanews:20200811160643p:plain

同じようにパターン①で考えると精度は2.3%です。

 

Week2の課題をRegularizedのLinear Regressionで解こうとしたこともありました。

 

www.courseradaisuki.com

 

Jは20.3憶でした。

20.3億の誤差を47のサンプル数で割って43,191,489を平方根して6,572なので

1つあたりの誤差は6,572です。

 

同じようにパターン①で考えると精度1.9%だったんだと納得しました。

f:id:omoshiroamericanews:20200811160810p:plain

 

今回はここまでです。また次回頑張ります。