ihit's diary

ちょっとしたメモに

Coursera (week2)

線形回帰のコスト関数をどうやって最適化するか

J(\theta)=\sum_{k=0}^{n}x_k\theta_k

(x_0=1)
1. 最急降下法を使う
2. 正規方程式を解く

最急降下法を使う際には学習率の調整が必要になる。大きすぎなきゃ収束することが保証されているから、小さいのから大きいのを3倍ずつくらいに分割して学習率を調整するのがいいとのこと。
また、早く収束するためにはデータの正規化も有効。本コースでは単純に平均を引いて大きさで割って0~1の正規化を行っていたけれど、平均0分散1になる正規化もOKだと思う。

正規方程式は
y = \theta X
をムーア・ペンローズの擬似逆行列を用いて解くというものだ
\theta = \left(X^TX\right)^{-1}X^Ty
正規方程式を解くことの利点は学習率が存在しないのでパラメータ調整が必要ない。また、データの正規化も必要ない。
しかし\left(X^TX\right)^{-1}がデータの次元数×次元数の行列となっていて、次元数が大きくなると逆行列を解くコストが高くなる。実際、逆行列を掃き出し法で解くとO(n^3)のオーダーとなる。Andrewさんは次元数が10000を勾配法と正規方程式の選ぶ境目ぐらいだと言っていた。