「機械学習」勉強メモ2

課題のための環境を整える

課題のために、「Octave 」か「MATLAB」が必要らしい。

Octaveはオープンソースのフリーソフト。

MATLABはMathWorks社が開発する、数学解析ソフトウエアで、本来有料だがMachineLearningの期間中は無料で利用できるとのこと。

とりあえずMATLABのアカウントを取得。

表記のルール

y:仮定の計算結果

x:結果を得るための特徴、今後は家のサイズだけではなく、部屋数や、築年数もパラメータになってくる

n:xの数、いくつの特徴をパラメータとするのか

m:サンプルデータ数

今後は、データを下記のように表すらしい。

\(x_j\)と記載するとき、「j」は何番目の特徴かということを指す。
例えば一つ目の特徴、部屋面積が\(x_1\)、二つ目の特徴、寝室数が\(x_2\)のようになる。

\(x^{(i)}\)と記載するとき、「i」は何番目のデータかということを指す(トレーニングセットのインデックス)。
データの種類が(面積、部屋数…など)複数になる場合、行列ということになる。

\(x_j^{(i)}\)は、「i」番目のインプットデータの、「j」番目の特徴ということになる。実際の数値ということになる。
\(x_1^{(2)}\)なら、2番目のデータの1番目の特徴(家の面積)を指すことになる。

特徴がn個になった場合の仮説式(多変量線形回帰)

線形回帰で直腸の数をn個とすると仮定式は下記になる。
行列で計算するために、\(x_0\)を固定の1と定義している。

$$h_θ^{x} = θ_0x_0 + θ_1x_1 … θ_nx_n$$

この式は、下記の行列の計算式のように表すことができる。

$$\left[ \begin{array}{rrr} θ_0 & θ_1 & … & θ_n \end{array} \right]  \left[ \begin{array}{rrr} x_0 \\ x_1 \\ … \\ x_n \end{array} \right]$$

\(\left[ \begin{array}{rrr} θ_0 & θ_1 & … & θ_n \end{array} \right]\)は、θの倒置行列なので、\(θ^T\)となり、仮説式は「\(θ^Tx\)」と記載できる。

特徴がn個になった場合の最急降下法

今回のように変数が複数になった場合、目的関数はJ(θ)と表す。ここでのθは、n+1次元ののベクトルを意味する。

パラメータを更新する最急降下法の計算式も下記のように記載できる。

$$θ_j:=θ_j-α\frac{∂}{∂θ_j}J(θ)$$

それを偏微分すると下記のようになる。

$$θ_j:=θ_j-α\frac{1}{m}\sum_{i=1}^m (h_θ(x^{(i)})-y^{(i)})x_j^{(i)}$$

これは、\(θ_0\)から\(θ_n\)まで繰り返されることになる。
\(θ_0\)は\(x_0^{(i)}\)の部分が1になるので、1週目で求めた式と同じ結果が得られる。

$$θ_0:=θ_0-α\frac{1}{m}\sum_{i=1}^m (h_θ(x^{(i)})-y^{(i)})x_0^{(i)}$$

$$θ_1:=θ_1-α\frac{1}{m}\sum_{i=1}^m (h_θ(x^{(i)})-y^{(i)})x_1^{(i)}$$

$$θ_2:=θ_2-α\frac{1}{m}\sum_{i=1}^m (h_θ(x^{(i)})-y^{(i)})x_2^{(i)}$$

FeatureScaling

データの値、すなわちxは、それがどのようなデータであるかによってさまざまな値をとりうる。例えば家の広さなら0~2000(平方フィート)、ベッドルームなら1~5程度になる。

このデータをもとに、最急降下法を行うと、データの大きさにばらつきがありすぎて、結果が収束するのに非常に時間がかかる。

FeatureScalingは、データを除算して-1から1程度のの範囲にすることで、最急降下法の収束を早める方法である。実際には、-2や3など少しくらい違っても問題はないが、大きすぎたり(100など)、逆に小さすぎたり(0.001など)する場合は調整した方がよい。

先生の経験則では、-3~3、-\(\frac{1}{3}~\frac{1}{3}\)くらいであれば問題ないとのこと。

実際のやり方として、下記の計算式が利用できる。
\(μ_i\)は、xの平均値、\(S_1\)は、xの最大値-最小値を設定する。
また、\(S_1\)には標準偏差を設定しても問題ない。

$$\frac{x_1-μ_1}{S_1}$$

正規方程式

最急降下法とは別に、θを計算で求める方法

$$θ=(X^TX)^{-1}X^Ty$$

Xはデザイン行列である。
1は、\(θ_0\)用

$$X=\left[ \begin{array}{rrr}1 & 家のサイズ(データ1)&部屋数(データ1) \\
1 & 家のサイズ(データ2)&部屋数(データ2)\end{array} \right]$$

\(X^T\)はXの倒置行列で、\((X^TX)^{-1}\)は\(X^TX\)の逆行列を意味する。

Octaveでは下記で同様の計算を示す。

pinv(x’*x)*x’*y

pinvは、逆行列を求める書き方で、x’はxの倒置行列を求めることができる。

最急降下法と正規方程式の使い分け

最急降下法の特徴

学習率αを求める必要がある。何回も走らせてみる必要がある。

繰り返しが多く遅い。

データ数が多くても問題ない。

正規方程式の特徴

学習率αを決める必要がない。

繰り返しが少ない。

データ数が多いと計算量が多くなり遅くなる。

使い分け

特徴、データ量が多い場合は最急降下法、少ない場合は正規方程式。

使い分けの境界値は1万×1万くらい。