PRML上巻 P1-5
とりあえず, PRML を頭から読み直すやつをやることにした.
今日は「1.1 多項式曲線フィッティング」をやってみる.
訓練集合として,個の観測値を並べたと, それぞれに対応する観測値を並べたが与えられる.
我々の目標は,この訓練集合を利用して,新たな入力変数の値に対して目標変数の値を予測することである.
まず,関数 にガウシアンノイズを加えて, 個の訓練データを生成する.
%matplotlib inline import matplotlib.pyplot as plt import numpy as np np.random.seed(42)
# t = sin(2 \pi x) x1 = np.linspace(0, 1, 100) t1 = np.sin(2 * np.pi * x1) plt.plot(x1, t1, color='green') # training data set # t = sin(2 \pi x) + gaussian noise x2 = np.linspace(0, 1, 10) t2 = np.sin(2 * np.pi * x2) + np.random.normal(0, 0.2, 10) plt.scatter(x2, t2, facecolor='None', edgecolor='blue') plt.xlabel('x') plt.ylabel('t')
この訓練データに対して,以下のような多項式をフィッティングする.
この多項式は線形モデル(linear model)と呼ばれる.
訓練データに多項式をあてはめることで係数の値を求める. これは,誤差関数(error function)の最小化で達成できる. 誤差関数には以下の二乗和誤差(sum-of-squares error)を用いる.
は非負であり,が全訓練データ点をちょうど通るとき,になる. このように,をできるだけ小さくするようなを選ぶことで曲線あてはめ問題を解くことができる.
今日はここまで. (100年くらいかかりそう)