トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Coursera 機械学習 - Week3

[機械学習]

Week3

  分類と表現 (Classification and Representation)

多くの場合、分類問題で線形回帰を使うのはあんまりよくない(うまいことデータセットを2分できない)
じゃあ ロジスティック回帰 使うぜ

ロジスティック回帰の仮説関数

  • h%5F%5Ctheta%28x%29+%3D+g%28%5Ctheta%5ET+x%29+
  • z+%3D+%5Ctheta%5ET+x+ とおいて
  • g%28z%29+%3D+%5Cfrac%7B1%7D%7B1+%2B+e%5E%7B%2Dz%7D+

これは シグモイド関数 、もしくはロジスティクス関数と呼ばれる。

  • シグモイド関数
    • y の値は 1 or 0 に限りなく近づく
  • 余談だが、ここでシグモイド関数を使って入力値を0~1の範囲にまとめることをパーセプトロンと言う。
    • (日本語のWikipediaはあまり詳しくないので英語版読んで)
  • 境界値により、0か1であることを判定してもよいのだが、それではグラフがカクカクになってしまう。シグモイド関数のような滑らかな関数を使うことで、もうちょっと融通の利く、しかしながら0か1の信号化が可能になる。

決定境界 (Decision Boundary)

  • 関数gに %5Ctheta%5ET+X+ を与える場合
    • h%5F%5Ctheta%28x%29+%3D+g%28%5Ctheta%5ET+X%29+%5Cgeq+0%2E5+%5C%5C+%5Ctext%7Bwhen+%7D+%5Ctheta%5ET+X+%5Cgeq+0+
  • シグモイド関数と式の形から以下のことが言える(だいたい言えるということが言えるw)
    • %5Ctheta%5ET+X+%5Cgeq+0+%5CRightarrow+y+%3D+1+
    • %5Ctheta%5ET+X+%3C+0+%5CRightarrow+y+%3D+0+

  ロジスティクス回帰 (Logistic Regression Model)

目的関数(Cost Function)

正しくデータセットを2分するための目的関数J(θ)を定める。

  • J%28%5Ctheta%29+%3D+%5Cfrac%7B1%7D%7Bm%7D+%5Csum%5F%7Bi%3D1%7D%5E%7Bm%7D+%5Ctext%7BCost%7D%28h%5F%5Ctheta%28x%5E%7B%28i%29%7D%29%2C+y%5E%7B%28i%29%7D%29+
    • %5Ctext%7BCost%7D%28h%5F%5Ctheta%28x%29%2C+y%29+%3D+%2Dlog%28h%5F%5Ctheta%28x%29%29+%5Chspace%7B10%7D+%5Ctext%7Bif+y+%3D+1%7D+
      • y = 1, のとき仮説関数J(θ)は、hθ(x)が0に近づくほど大きくなり、hθ(x)が1に近づくほど小さくなる
    • %5Ctext%7BCost%7D%28h%5F%5Ctheta%28x%29%2C+y%29+%3D+%2Dlog%281+%2D+h%5F%5Ctheta%28x%29%29+%5Chspace%7B10%7D+%5Ctext%7Bif+y+%3D+0%7D+
      • y = 0, のとき仮説関数J(θ)は、hθ(x)が0に近づくほど小さくなり、hθ(x)が1に近づくほど大きくなる

このJ(θ)はロジスティクス回帰に対して 凸関数 である。だから絶対大小が定まる。

単純化された目的関数と最急降下法 (Simplified Cost Function and Gradient Descent)

上述の目的関数は場合分けせずとも、1つの関数で表せるようだ。これからはそれを使っていく。

  • Cost%28h%5F%5Ctheta%28x%29%2C+y%29+%3D+%2Dy+%5Ccdot+log%28h%5F%5Ctheta%28x%29%29+%2D+%281%2Dy%29+%5Ccdot+log%281%2Dh%5F%5Ctheta%28x%29+
    • 前半の-y, 後半の (1-y) がポイントで、こいつらがyの場合分けを数式的に表している。わりとわかりやすい。
  • 完全な目的関数(データセットが増えても対応できるやつ)
    • J%28%5Ctheta%29+%3D+%2D+%5Cfrac%7B1%7D%7Bm%7D+%5Csum%5F%7Bi%3D1%7D%5Em+%5By%5E%7B%28i%29%7D+%5Ccdot+log%28h%5F%5Ctheta%28x%5E%7B%28i%29%7D%29+%2B+%281%2Dy%5E%7B%28i%29%7D%29+%5Ccdot+log%281%2Dh%5F%5Ctheta%28x%5E%7B%28i%29%7D%29%29+%5D
  • 以下はそれをベクトル化したやつ ... h+%3D+g%28X%5Ctheta%29+ とおいて
    • J%28%5Ctheta%29+%3D+%5Cfrac%7B1%7D%7Bm%7D+%5Ccdot+%5Cleft%28+%2Dy%5ET+log%28h%29+%2D+%281%2Dy%29%5ET+log%281%2Dh%29+%5Cright%29+

最急降下法

お待ちかねの最急降下法の実装

  • まず、普通に
    • %5Ctext%7BRepeat%7D+%5Cbigl%7B+%5C%5C+%5Chspace%7B10%7D+%5Ctheta%5Fj+%3A%3D+%5Ctheta%5Fj+%2D+%5Calpha+%5Cfrac%7B%5Cdelta%7D%7B%5Cdelta%5Ctheta%5Fj%7D+J%28%5Ctheta%29+%5C%5C+%5Cbigr%7D+
  • ベクトル化されたもの
    • %5Ctheta%5Fj+%3A%3D+%5Ctheta+%2D+%5Cfrac%7B%5Calpha%7D%7Bm%7D+X%5ET+%28g%28X%5Ctheta%29+%2D+%5Cvec%7By%7D%29+

  クイズのヒント

  • 決定境界の理解が必要
  • 最急降下法の傾きの求め方について、式が変形されてもわかってないといけない
    • ロジスティック回帰の目的関数は → J%28%5Ctheta%29+%3D+%2D+%5Cfrac%7B1%7D%7Bm%7D+%5Csum%5F%7Bi%3D1%7D%5Em+%5By%5E%7B%28i%29%7D+%5Ccdot+log%28h%5F%5Ctheta%28x%5E%7B%28i%29%7D%29+%2B+%281%2Dy%5E%7B%28i%29%7D%29+%5Ccdot+log%281%2Dh%5F%5Ctheta%28x%5E%7B%28i%29%7D%29%29+%5D
    • ここは数学の知識が無いからわからんのだが、微分すると以下になるのだと思う
    • 普通に最急降下法を求めようとすると → %5Ctheta%5Fj+%3A%3D+%5Ctheta%5Fj+%2D+%5Calpha%5Cfrac%7B%5Cpartial%7D%7B%5Cpartial+%5Ctheta%5Fj%7DJ%28%5Ctheta%29+%3D+%5Ctheta%5Fj+%2D+%5Calpha+%5Csum%5F%7Bi%3D1%7D%5Em+%28h%5F%5Ctheta+%28x%5E%7B%28i%29%7D%29+%2D+y%5E%7B%28i%29%7D%29+x%5Fj+%5E%7B%28i%29%7D+
    • あと、シグモイド関数を代入した形も正解になるような

  複数要素の分類問題 (Multiclass Classification)

  オーバーフィッティング問題の解決 (Solving the Problem of Overfitting)

オーバーフィッティング問題(線形回帰、ロジスティック回帰)

オーバーフィッティング問題はフィーチャーが多くある場合、それに対して仮説関数h(θ)を過剰に合わせすぎることによって起こる
オーバーフィッティングした関数は、その時のデータセットにはよく一致するが未来のデータセットを予測できない

オーバーフィッティング問題の取り扱い

  • どうにかして仮説関数をプロットして視覚化したいけど、フィーチャーが多いと難しい
  • 選択肢1
    • どのフィーチャーを使うか任意で選択する
    • 選択のためにアルゴリズムを使う
  • 選択肢2
    • Regularization(正規化)を使う

  目的関数 (Cost Function)

  • Regularizationとはなんぞや?
    • 目的関数J(θ)にある種のペナルティを課すことで、それを平坦化する
  • J%28%5Ctheta%29+%3D+%5Cfrac%7B1%7D%7B2m%7D+%5Cbig%5B+%5Csum%5F%7Bn%3D1%7D%5Em+%28+h%5F%5Ctheta%28x%5E%7B%28i%29%7D%29+%2D+y%5E%7B%28i%29%7D+%29%5E2+%2B+%5Clambda+%5Csum%5F%7Bj%3D1%7D%5En+%5Ctheta%5E2%5Fj+%5Cbig%5D+
    • ラムダ以降の式が大きくなるほど目的関数が平坦化してオーバーフィッティングしにくくなるぞい

このラムダ式のことを「正規化パラメーター」というらしい

  クイズのヒント

Week3 Quiz2はわりと簡単だったので1回で解けた。よってヒントは無しです。

  Octave演習

足りない数学知識

  • ネイピア数
    • 自然対数の底らしい
    • 「自然対数 loge が「自然」であるというのは、数学において自然に生じ、よく見かけるということを根拠とするものである。」
  • Octaveでネイピア数を出すには
>> exp(1)
ans =  2.7183
  • シグモイド関数を実装すると、引数が大きくなるほど結果は1に漸近し引数が小さくなるほど0に漸近する
>> sigmoid(300)
ans =  1
>> sigmoid(1)
ans =  0.73106
>> sigmoid(0.5)
ans =  0.62246
>> sigmoid(-2)
ans =  0.11920
>> sigmoid(-200)
ans =    1.3839e-87
>> sigmoid(-133)
ans =    1.7331e-58
1024px-SigmoidFunction.png
お名前: コメント: