この本は数式が多いので、読み進めるのに時間がかかるが、それでもちゃんと読むと納得できる量の解説がなされており、読んでいて楽しい。 前回の最小二乗法に続いて、最尤推定法というものが第3章で解説さえている。
- 作者: 中井悦司
- 出版社/メーカー: 技術評論社
- 発売日: 2015/10/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
最小二乗法は、トレーニングセットに対して、誤差を最小にする形で推定関数をフィッティングさせていくものであった。 最小二乗法には、多項式で近似できるという仮定が含まれているが、最尤推定法では、さらに偏差σの誤差が含まれているという仮定が置かれている。 しかし結果として得られる多項式は同一になっており、得られる標準偏差も、最小二乗法で計算した平方根平均二乗誤差に一致してしまう。あれ、じゃあ最尤推定法ってどういう時に使えばいいのかね? もうちょっと読み進めていきたいが、今日は時間切れとなったので明日もう一回読み直してみる。
ついでに、Pythonでの環境の構築手順もやっておいた。本書ではCanopyという科学計算用のライブラリを利用するので、インストールしておく。
本書では、CentOS、MacOS、Windowsでの環境構築のやり方が書いてあったが、まずはとりあえずWindowsで構築した。さらに、一応サンプルコードご動かして、ちゃんと動作するところまでを確認できた。 最小二乗法のコードを読み進めておきたかったが、Pythonの知識が無さすぎて、、、
どうでもいいが、Pythonでは関数そのものを戻り値として返すことができるのね、便利。
def resolve(dataset, m): t = dataset.y phi = DataFrame() for i in range(0,m+1): p = dataset.x**i p.name="x**%d" % i phi = pd.concat([phi,p], axis=1) tmp = np.linalg.inv(np.dot(phi.T, phi)) ws = np.dot(np.dot(tmp, phi.T), t) def f(x): y = 0 for i, w in enumerate(ws): y += w * (x ** i) return y return (f, ws)