【機械学習】Stanford University Machine Learning / Week3【学習メモ】
0.何の学習メモ?
・スタンフォード大学がCourseraをプラットフォームにして提供している機械学習のコース(詳しくはここ)の学習メモ
・学習メモだけあって雑然としてます
VI.ロジスティック回帰
分類(Classification)
・例:
-Email:スパムor非スパム
-オンライントランザクション:不正(fraudulent)か否か
-腫瘍(Tumor):悪性(Malignant)or良性(Benign)
0:”Negative Class”(例:良性腫瘍)・・・どちらかと言うと不在(absence)なもの
1:”Positive Class”(例:悪性腫瘍)・・・どちらかと言うと存在(presence)なもの
・今までの線形回帰を分類問題に適用しようとすると以下の様な問題がある
-閾値(Threshold)を決めて分類しようとしても(例:の場合、y=1)、データの質によっては全然意味が無い(例:腫瘍サイズが極端に大きいケースが追加され、
の式が変わり、今までの閾値を使うと、悪性が良性に分類されてしまう)。
-分類は0or1の問題だが、は>1や0未満にもなってしまう
・そこでロジスティック回帰(Logistic Regression)を使う
・になるよう調整する
・ロジスティック(兵站、記号論理学)、と名前はついてあるが、分類で使われる
Hypothesisの表現(Representation)
ロジスティック回帰モデル
・となってほしいので、
のように表記する。
・図示すると以下の通り(Wikipediaより)
・これはシグモイド関数(Sigmoid funciton)やロジスティック関数(Logistic function)と呼ばれている
・上記のHypothesisの解釈(Interpretation)は以下のようになる
=入力
の時に
である推定確率
例:
であった場合、これは「患者の腫瘍は70%の確率で悪性である可能性がある」といえる
・別に言い換えると、であると言える。
→が与えられ、
でパラメータ化され、た時に
である確率
決定境界(Decision Boundary)
・hypothesisに上記シグモイド関数を適用すると以下のようになる。
→上記のグラフを見ると分かるが、を境にzのプラスマイナスが別れていることが分かる。
→よって、なら、つまり
となる場合に、
となるようにする。
例:の2つの変数でプロットされているデータに対して、以下のhypothesisが適用されるとする。
そして計算の末(計算方法は後述)、であると推測された場合、
となるのは
を満たす場合になる。
つまり、となる式をプロットした場合、
の領域と
の領域に分かれることになり、この式が決定境界(Decision boundary)と呼ばれる。
・決定境界は非線形な式でも表せられる。
例:の2つの変数でプロットされているデータに対して、以下のhypothesisが適用されるとする。
そして計算の末(計算方法は後述)、であると推測された場合、
が決定境界となり、円の内側と外側で
の領域と
の領域に分かれることになる。
費用関数
・を決定するためには、線形回帰の場合と同じように費用関数を最小化させる
を求めるようにする。
・線形回帰の場合は、費用関数は以下の通りだった。
・しかし、上記式にロジスティック回帰に使うを代入すると、費用関数は非凸型(non-convex)の関数になってしまい、勾配法等で
を求める場合、局所解に陥ってしまう可能性がある。
・そこで一旦費用関数を抽象化して、
という風に考えてみる。
・ロジスティック回帰では、上記関数を以下の通りに定義する。
・まずはそれぞれの関数のイメージを掴んでみる。
・の時の
で表される費用関数は以下の感じ(横軸が
)
・これはどういうことかというと、かつ
の場合、
となるが、
だと
となる。
→つまり、(
)だと推測したが、
だった場合、とても大きなコストでペナルティーを課すのと同義
※を使っているのは、y軸で漸近線になり、(1,0)を通る特性を利用したいため。
だから出来る。
単純化された費用関数と勾配法
・上述したロジスティック回帰の費用関数では場合分けされてるし、プログラムに適用するときにも少し不便。なので、以下の様に記述することで1行に収めることが出来る。
・これは、が取りうる値が
なので成りうる式。
・を最小化させる為に勾配法を適用した場合、繰り返しの式は以下の様になる。
※上記の偏微分は実施にやってみるとわかる。→一番下で実施メモ(間違ってたら教えて下さい。。。)
・線形回帰の勾配法と同じであることがわかる。の中身は異なるが。
高度な最適化
・今まで最適化には勾配法を使ってきたが、これは学習レートを決めなきゃいけなかったりと何かと不便。
・なので、勾配法以外の最適化アルゴリズムとして、”Conjugate gradient”、”BFGS”、”L-BFGS”等を活用することが出来る。
メリット
・学習レートを手動で選ぶ必要が無い
・勾配法よりも速い場合が多い
デメリット
・更に複雑
→アルゴリズムの中で何が行われているのか把握するのが難しい
・Octaveで高度な最適化を使う方法の一つは以下のとおり
-関数部分
function[jVal, gradient] = costFunction(theta) jVal = J(theta); %注1 gradient(1) = XXX; %注2 gradient(2) = YYY; ... gradient(n+1) = ZZZ; %注3
※注1:上述のロジスティック回帰の費用関数が入る
※注2:勾配法ののアップデート式が入る
※注3:Octaveではをtheta(1)と表すので、n+1となっていることに注意
-呼び出し部分
options = optimset('GradObj','on', 'MaxIter','100'); %注4 initialTheta = zeros(AAA,1); %注5 [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);
※注4:アルゴリズムで使用するオプションを設定
※注5:の値による
多クラス分類:一対全(Multiclass Classification: One-vs-all)
・今まで取り扱ってきた01での分類の他にも、2つ以上の分類がある例もある
例:Emailのフォルダリング(仕事、友達、家族、趣味)、etc
・そのような場合の分類の方法は、「ある1つのクラスとその他」という風に分ける決定境界をクラスの数だけ設定する。
例:クラスが3つ合った場合、
という風になる。
・つまり、一対全というのは、
→である確率を推測するために、各クラス
に対して、ロジスティック回帰分類
を訓練させる。
→新しい入力が合った場合は、
を最大化させるクラス
を選択する。
VII.正則化(Regularization)
過学習(Overfitting)とは?
・あまりに多くの特性(features)があった場合、学習したhypothesisはトレーニングセットに対してよく合う(fit)かもしれない()が、新たに追加されたデータに対しては一般化(generalize)されていない(例:住宅価格を予測出来ない)。このことを過学習(Overfittin)、もしくは”High variance”という。
・逆に全く合っていない場合は、”Underfit”もしくは”High bias”という。
・過学習は線形回帰だけでなくロジスティック回帰でも発生する。
過学習に対処(addressing)するには?
・変数が少ない場合は実際にプロットしてみて歪な形をしていれば、過学習であると分かるが、変数が多い場合は分からない。
・対処の方法(Option)は以下の2種類ある。
1.特性(feature)の数を減らす
・どの特性を使うか、手動で選ぶ。
・モデル選択アルゴリズム(Model selection algorithm)を適用して、自動的に残す/残さない特性を選択する。(後の週で実施)
・ただ、特性を減らすということは情報量が減ることと同義。
2.正則化(Regularization)
・すべての特性は残しつつ、の大きさ/値(magnitude/values)を減らす。
・多くの特性がある場合に効果的に作用する。それぞれの特性がyを推測するのに貢献する。
費用関数に正則化を適用する
・正則化の考え方とは?
→パラメータの値を小さくする。
→小さくすることによって、「より単純(Simpler)」なhypothesisになり、過学習の傾向が小さくなる(less prone)。
※なぜ小さくするという考え方が出てくるのかというと、過学習している場合上記の値が大きくなっていくから。
・正則化を適用した線形回帰の費用関数(Cost function)は以下の通り。
・が正則化の部分で、
は正則化パラメータ(regularization parameter)。
※に対しては正則化は適用していない点に注意
・正則化の役割は、でデータに合わせるようにしつつ、
を小さく抑えるようにして(大きくなるとペナルティーが発生するようにする(penalize))、
を最小化させるのが目的。
・ではには何を入れるべきのか?もし
のような大きな値だとどうなるのか?
→どのも値が小さくなってしまい、線形回帰の場合、
に近似した直線になってしまい、データに対して”Underfit”してしまう。
正則化された線形回帰
・上述の通り、正則化された線形回帰は以下の通り。
・上記に対して、勾配法(Gradient descent)を適応すると以下の様な式になる。
※だけ独立しているのは、
に対して正則化は適用していない為
※に対するアップデート式は、
の変形式
・で
がそこそこ小さい場合、
となり、アップデートの度に
は小さくなっていく。
・勾配法を使わずに、微分で求める場合、通常の式は以下の通りだった。
・上記対して正則化を適用すると(の場合)、
・は
行列。
・上記式は常に可逆行列。
正則化されたロジスティック回帰
・ロジスティック回帰を正則化するには、上述したロジスティック回帰の費用関数に正則化の式を加えるのみなので、以下の通り。
・勾配法は線形回帰と同様
・式は全く同じだが、であることに注意
高度な最適化
・上述したfminunc関数に正則化を適用する場合は、以下の通り。
function[jVal, gradient] = costFunction(theta) jVal = J(theta); %注1 gradient(1) = XXX; %注2 gradient(2) = YYY; %注3 ... gradient(n+1) = ZZZ; %注4
※注1:上述の正則化されたロジスティック回帰の費用関数が入る
※注2:勾配法ののアップデート式が入る(正則化式が入ってない)
※注3:勾配法ののアップデート式が入る(正則化式が入っている)
※注4:Octaveではをtheta(1)と表すので、n+1となっていることに注意
メモ
をで偏微分してみる。
・まずはから。
としたとき、は求めづらいので、合成関数を微分する要領で進めてく。
・同様に、もやると、
・2つの式を合わせると、
↓
関連記事
-
-
【機械学習】Stanford University Machine Learning / Week4【学習メモ】
0.何の学習メモ? ・スタンフォード大学がCourseraをプラットフォームにして提供している
-
-
【機械学習】Stanford University Machine Learning / Week2【学習メモ】
0.何の学習メモ? ・スタンフォード大学がCourseraをプラットフォームにして提供している
-
-
【機械学習】Stanford University Machine Learning / Week1【学習メモ】
0.何の学習メモ? ・スタンフォード大学がCourseraをプラットフォームにして提供している