Yabu.log

色々勉強するブログです。

Coursera Machine Learning week1 その1

Week1内容

Machine Learningの定義

コンピュータプログラムが、ある種のタスクTと評価尺度Pにおいて、経験Eから学習するとは、タスクTにおけるその性能をPによって評価した際に、経験Eによってそれが改善されている場合である

機械学習 - Wikipedia

教師あり学習

学習内容のデータセットに答え(ラベル)が与えられているもの

  • X円で売れた家の面積
  • 悪性/良性の腫瘍サイズ

回帰:regression

連続値を扱う - 身長 - 金額 - 年齢 などを予測する

分類:Classify

離散値を扱う inputをN種類のoutputに対応付ける(分類)

  • ガンのタイプ
  • 満足/不満足

など

教師なし学習

学習内容のデータセットに答え(ラベル)が与えられていないもの

Clustering

例:Googleニュース news.google.com

Googleニュースでは各ニュースサイトが同じ事象を書いた記事を一つにまとめる機能がある。

ネットにニュースが転がっている状態ではラベルは直接ついていない=教師なし学習である

Non-Clustering

正確な定義の説明はWeek1ではなかった。

例:カクテルパーティアルゴリズム

この例の解説がなかなかん凄かった。二つの音源が混じった音声データを個別の音源ごとに分離させた音声データを2つ作る。これがOctaveなら一行のアルゴリズムで実現できる。

Octaveを使う理由

プロトタイプを早く作れるから。実際の事業でもプロトタイプをOctaveで作る例が多いらしい。

単回帰分析(Linear regression with one variable)

mの量をもつデータセット(x^{(i)},y^{(i)})から関数h(x)を作る

h_\theta (X)=\theta_0 + \theta_1(x)

この関数にinput(x)を代入すると、学習したデータセットをもとに 結果を予測できる。

目的関数(Cost function)

単回帰分析の関数h_\theta (X)=\theta_0 + \theta_1(x) のパラメーター\theta_0,\theta1の導出に利用。

二条誤差目的関数(Squared error function)

関数h\theta(x)が学習セットの(x,y)において、結果の誤差の2乗が最小になるような\theta_0,\theta1を求める。

他にも目的関数は数種類あるそうだが、単回帰分析の場合はこの関数が一番有効らしい。

学生の時に統計の授業で聞いた気がするが、2乗しているのは単に誤差の符号(+-)を揃えるのに絶対値を求めるより2乗する方が簡単だから、が理由だった気がする *1

J(\theta_0,\theta_1)  =\dfrac {1}{2m}\sum ^{m}_{i=1}\left(\hat{y} _i-y_i\right) ^{2} =\dfrac {1}{2m}\sum ^{m}_{i=1}\left( h_{\theta }\left( x^{(i)}\right) -y^{(i)}\right) ^{2}

*1:2乗することで基本的に正の数になる