Machine Learning by Stanford University WEEK3 のまとめ
分類 クラシフィケーション
ロジスティック回帰
ex) 腫瘍の大きさにより、悪性か良性かを分類する という例
yの値は0か1になる
hθ(x) = g(θTx)
z = θTx
g(z) = 1/ (1+e^-z)
hθ(x) = 0.7 の場合、70%の確率で悪性(1)、30%の確率で良性(0)になる。
これを式で表すと以下の通り (P(y=1|x;θ)はx,θをパラメータとしてy=1である確率の意味)
ロジスティック回帰の決定境界
シグモイド関数(ロジスティック回帰)で定義されるh(x)が0.5以上の場合は1, 0.5未満の場合は0と判断できる。
hθ(x) = g(θTx)
z = θTx
g(z) = 1/ (1+e^-z)
なので、
x1,x2は上記の式で表せる。この式で表現される境界値を決定境界と言う。
ロジスティック回帰のコスト関数
コスト関数をグラフ化すると以下の通り
上記をy=1,0に分けずに式にすると
この式は以下のように表せる。
最急降下法は
これは以下のように表記できる。
ベクトル化すると以下となる。
最急降下法以外のJ(θ)最適化アルゴリズム
最急降下法以外に、BFGS, L-BFGS, 共役勾配法がある。
これらのアルゴリズムの詳細はコースの範囲外なので触れない。
octaveにはfminunc という最適化の為の関数が用意されている。
使用例は以下
function [jVal, gradient] = costFunction(theta)
jVal = [...code to compute J(theta)...];
gradient = [...code to compute derivative of J(theta)...];
end
options = optimset('GradObj', 'on', 'MaxIter', 100);
initialTheta = zeros(2,1);
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);
マルチクラスの分類問題
2つのクラスの分類の応用として、複数クラスの分類をする際、以下のような考え方となる。
k個のクラスに分類する際、k個の分類器hθ(x) を定義し、最大値を取る分類器を採用する。
オーバーフィッティング
オーバーフィッティングとは、トレーニングデータが少なく、仮説関数の変数が多い場合に起こる。トレーニングデータに過剰に最適化してしまい、トレーニングデータ以外のデータに一般化されていない状態になってしまうこと。
オーバーフィッティングを解決する方法は以下
- 変数の値を減らす
- 正規化
- 変数の値は保持したまま、パラメータθを減らす
- 正規化の手法を使う(後述)
オーバーフィッティングを避ける為のコスト関数(正規化)
線形回帰を例にとると以下。
を加えたもので、パラメータθの値をなるべく小さく取るという意味がある。
λは正規化パラメータと呼ばれる。
線形回帰の正規化
線形回帰に対して、最急降下法(正規化あり)を適用した場合の式は以下の通り
上記式のθ・-αλ/mの項以外は、正規化前の線形関数に対する最急降下法の式と同一で、(1-α・λ/m) < 1(ex)0.99・・)従って、正規化された最急降下法では、θの値がイテレート毎に減っていく事が分かる。
正規方程式の正規化
正規方程式の正規化は以下の通り
Lはn+1×n+1の行列
正規方程式の非可逆問題は正規化の為の式λ・Lを加える事によって解決する。(証明は省く)