課題のための環境を整える
課題のために、「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万くらい。