$\newcommand{\set}[1]{\{#1\}}$ $\newcommand{\inset}[2]{\{#1 \mid #2\}}$ $\newcommand{\name}[1]{\emph{#1}}$ $\newcommand{\size}[2][]{\left| #2^{#1} \right|}$ $\newcommand{\sig}[1]{\mathcal{#1}}$

初めての機械学習

なんやかんやあって初めて機械学習アルゴリズムを実装しました.機械学習アルゴリズムの実装といっても大したことなくて,PRLMという教科書の最初にある多項式フィッティングというものを実装してみました.点が$N$点与えられるので誤差関数$E(\vec{w})$を最小化する$M$多項式求めるというアルゴリズムです(入力は$N$個の点$x$と,整数$M$,出力はベクトル$\vec{w}$).誤差関数$E(w)$は次の二乗誤差の関数を使いました.

  • $E(\vec{w}) = \Sigma_{n = 1}^{N} (y(x_n, w) - t_n)^{2}$

解説は次のページがわかりやすかったです.(僕が読んだ教科書と同じ教科書を読んで解説記事を書いていてくれたので,)

点(2 4), (9 1) ,(3 8), (-1 3) (4 -2) (-3 2) (-9 4)で, $M = 7$の場合 f:id:chocobaby-aporo:20161113012123j:plain $M = 5$の場合 f:id:chocobaby-aporo:20161113013111j:plain $M = 3$の場合 f:id:chocobaby-aporo:20161113013123j:plain

$M = 5$がなんか一番いい感じですね.