はい、次は目的関数を定義します。再度状況確認しましょう。 みての通りどんなにいい線を引いても「誤差(赤い線)」がありますよね。仕方ないです。現実のデータには誤差があります。これをよくNOISEと言います。とはいえ、各データの誤差の和(赤い線の和)が最小の時が一番いい線です。よって
を最小化したいですよね。けどこのままだと扱いずらいので損失関数をとするとどうでしょうか。微分できないのであんまり良くないです。なのでこうしましょう。
微分可能であり、さらに下に凸の凸関数ですね。凸関数って何がいいんでしたっけ?そうです、お椀型なので勾配法をかけると大域最適解がゲットできます。よって今回のコスト関数はこれの和になるので
ではそれぞれ勾配を求めましょう。
今回は2次元のデータだったので簡単でした、変数が増えてもやることは同じです。ちなみにこれは線形ですが曲げたければモデルを2次式・3次式、、、にすればいいですし、周期性があれば三角関数にしてもいいですし、そこは自由です。ただ現実のデータは可視化できないのが多いと思うので今回のように予想は立てられないと思います。
データが可視化できない?
いえいえ、機械学習の力を使えばできるんです。その名もPCA
主成分分析とも言います。高次元空間のデータを低次元空間へピョンと飛ばすテクニックです。例えば500次元のデータを2次元に変換するとx-y平面で可視化できますね。便利便利。 おっと話が逸れてしまいました。ところで今回の実装テーマの「線形回帰」についてですがそもそも「回帰」ってなんでしょう?- いろんな捉え方がありますが、今回の線形回帰で得られるのはいい直線でしたよね。言い換えると「xとy」をうまく結びつけてるヤツですよね?なので新しくというデータを得た時このモデルに適応させるとが得られますよね。逆も同じです。
- 他には
- あとはこれは僕の中では回帰っぽくないのですがロジスティック回帰です。これは分類に使われます。一見回帰はデータをうまく表現するモデルを得ることと思っちゃうんですが分類にも使えるんですね。