おれの技術日記

元はJava+SQLがメインのエンジニア、フロントエンドは軽くかじった程度で苦手。最近忘れっぽいので覚えたことをいろいろメモするためにブログ開始。

Machene Learning Crash Course 2 - Descending into ML

教師あり学習(Supervised ML)においてモデルを作るというと、そのモデルは
 y' = b + w_1x_1 + w_2x_2 + w_3x_3 + ・・・ + w_nx_n
という式で表される(nはfeatureの数)ので、

  • モデルに含めるfeatureを決定する
  • トレーニングデータ(labeled examples)を使ってw(weight)とb(bias)を決定する

というステップになる。例えば前回の気温とアイスクリームの売れ行きの例で言えば、featureは気温のみなので
 y' = b + w_1x_1
となる。

そして、このモデルと実際のデータの乖離をloss(損失)という。下図で矢印の大きさがloss(すいませんこのimage、本家からお借りしました)。左のモデルよりも右のモデルのほうが損失が少ないのでよりよいモデルであるといえる。
f:id:kuniaki12:20180710162314p:plain


モデルの損失を最小化する手法は損失関数と呼ばれ(多分)、いろいろな種類があるけれどここでは二乗損失(squared less, L2 loss)がチラッと紹介されている。この損失関数は平均二乗誤差(mean square error, MSE)を最小化するようにするということなんだろう、

 MSE = \frac{1}{N} \sum_{(x,y)\in D} (y - prediction(x))^2

という禍々しい数式が書いてあるけれど、これはよく見ると単純に
featureの各値についてモデルで算出されたpredictionと実際の値の差分を二乗して、その平均を算出するというだけの話だった。

ちなみにこの方式で計算すると、前回のアイスクリームの売上と気温の関係式は
y' = 1.217582418x1 + 30.16923077
というモデルが構築できた。モデル構築というと物々しいけれど、単純にExcelの関数でちょいちょい計算しただけ(汗)。