【機械学習】線形回帰、目的関数について【Coursera】-その2-

2019年7月28日

Courseraで受講している機械学習について、勉強したことをアウトプットしていこうと思います。
あくまでも自分用となるので、もっと詳しく知りたい人は是非受講してみてください。

線形回帰について

線形回帰は教師あり学習の分類の1つであり、回帰ということは実数値の出力であることを示しています。
※実数はまぁ単に数値で指し示すこと。
ある変数xが与えられたとき、それと相関関係のあるyの値を予測することを回帰と呼びます。
その目標変数x,yが連続的である場合、学習問題を回帰問題と呼びます。

例えば、xを年齢、yを年収としたときに、年齢が上がると年収がどれだけ上がるのか、あるいは、ある年齢のときの年収はいくらかといったことが、回帰分析を使うことで分かります。

また、教師あり学習で利用するデータセットを、トレーニングセットと呼ぶことを覚えておきましょう。
このトレーニングセットを、学習アルゴリズムに入力することで、
仮説関数*1と呼ばれる関数を出力します。

※1 昔の風習で仮説と呼ばれているが、現在ではその風習だけが残り、”仮説”という単語に関しての意味は薄いようです。

出力された関数( h )の役割として、例えば家のサイズを入力値として、
家の価格を予測値として出力します。

学習アルゴリズムを今後設計する際に、次に決めなければならないことは、どのようにこの仮説( h )を表現するかです。
今後は、仮説( h )の表現は以下とします。

hθ(x) = θ0 + θ1x

これを略してh(x)= θ0 + θ1xと表記することもあります。
そして、これを図としてプロットすると、以下のようになります。

今回は線形回帰の記載をしていますが、今後は非線形関数を当てはめたりして、徐々に進捗するように勉強を行っていきます。
また、この線形回帰は[単回帰]とよばれ、変数(x)が1つで有ることを指し示します。

目的関数(二乗誤差関数)

上述したθ0やθ1に関して、これらθiは、モデルのパラメータと呼ばれています。
このパラメータの値をどのように選択するかと言うのが今回の課題になります。

例えば、θ0=1.5、θ1=0であれば、
 hθ(x)=1.5+(0*x)となり、xがどの値であろうと、1.5の定数となります。

例えば、θ0=0、θ1=0.5であれば、
 hθ(x)=0+(0.5*x)となり、xによって数値が推移します。

ここで行いたいのは、θ0とθ1の値を算出することです。
そして、その結果として得られる直線が、データによく適合した直線に対応するようにすることです。


つまり、目的関数はJ(θ0, θ1)と表現します。

この関数は二乗誤差関数と呼ばれます。

目的関数の具体例

図はcoursera様の[Cost Function – Intuition 1]参照

わかりやすいように簡素化された仮説関数を以下に示します。
hθ(x) = θ1x
→θ0 = 0とみなします。
つまり、図でいうと必ず原点を通るもの、点(0, 0)を通るものだけを選ぶということです。

Hypothesis:
    hθ(x) = θ1x
Parameters:
    θ1
Cost Function:
    J(θ1) = 1/2m Σm, i=1(hθ(x(i)) – y(i)²
Goal: minimizeθ1 J(θ1)

となることがわかります。

超絶簡単に理解しようとすると、θ1というのは仮定のパラメータであり、この値をどのようにするとどれだけ実際の値と誤差があるのか判定することができるということでしょうか。

では、仮説の値(θ1)が0の場合はどうでしょう。
公式に当てはめると、hθ(0x)となり、xがどの値でもyは0となります。

そのため、実際の値と誤差が発生します。

この誤差を計算するのが、コスト関数になります。

1つずつ計算していきましょう。
サンプルデータは3つ存在するので、1/2m = 1/(2 * 3) = 1/6
hθ(x(i)) – y(i))²で、xは1,2,3とあり、yは全て0なので、hθ(1² + 2² + 3²)=14
つまり、14/6=2.3
J(θ1)は2.3であることが判明しました。
これが誤差になります。

仮にθ1に1を設定すると、J(θ1)は0になります。
つまり、誤差が0となり、実際の値はサンプルデータと全く同じ値がプロットされることになるのです。

最後に

今回はθ0を0と想定してパラメータはθ1しか利用しませんでしたが、
実際にはパラメータはいくつも存在する可能性があります。
家の売買価格であれば、築年数、サイズ、立地などなど、色々なことをパラメータとして渡すことになっていくことになります。
これによって次元数が増えるため、今後は図にプロットするのが難しくなっていくと思われます。

これで誤差が出せるようになったため、我々が今後欲するソフトウェアはこのパラメータを最適化するためのソフトです。