Week5までのまとめをしたいと思います。
機械学習の予測の考え方は大きく↓でした。
①予測式-->②Cost Function-->③Gradient-->④最適θ-->⑤予測
①予測式をたてて②Cost Functionで差分の合計をJで表現します。
Jが小さくなれば小さくなるほど、精度が良いということになります。
②のCost Functionを最小にする値は何かを計算するのに必要なのが、
③Gradientでした。Gradientはいわば微分みたいなものだと思いました。
(厳密には勾配のようですが、文系の私には同じに見えます)
②Cost Functionと③Gradientを基にfmincgもしくはfminuncといった関数を使って
④最適θを計算します。
④最適θを計算したら⑤予測するという流れでした。
①予測式=Model Representation/②Gost Function/③GradientDecentを
まとめたのが↓でした。
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でした↓
合計は↓の15,999,395です。
この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憶という値が出てきました↓
パターン①で考えると
41億の誤差を47のサンプル数で割って87,234,042を平方根して9,339なので
1つあたりの誤差は9,339です。
1%の誤差の場合は1つあたりは3,404でした。
1つあたりの誤差は3倍なので誤差は3%と考えていいのでしょうか。
パターン①の1%/2%/3%の場合を作ってみました↓
9,339は2%と3%の間にいます。
Jと1つあたりの誤差がわかっているので逆算してみました。
パターン①の考えで正しければ精度は2.7%になります。
28億の誤差を47のサンプル数で割って59,574,468を平方根して7,718なので、
1つあたりの誤差は7,718です。
同じようにパターン①で考えると精度は2.3%です。
Week2の課題をRegularizedのLinear Regressionで解こうとしたこともありました。
Jは20.3憶でした。
20.3億の誤差を47のサンプル数で割って43,191,489を平方根して6,572なので
1つあたりの誤差は6,572です。
同じようにパターン①で考えると精度1.9%だったんだと納得しました。
今回はここまでです。また次回頑張ります。