正則化
https://gyazo.com/c4f748d66e1491f16e15a1f54e3b032f
パラメータ空間で、誤差項とペナルティ項の足し算を最小化する点を求める。
二次元(2つのパラメータ)で考えて、ペナルティ項は、L2であれば円周、L1であればひし形の形で値が膨らむ。
二次元だと、接点?が誤差を最小化する点かイメージ的に確信がもてないので、1次元だと、
L2で以下の形かな。
https://gyazo.com/9ccf5077e9bee94865ec630b3397d9a2
L2の方は、$ W = (\lambda I + X^TX)^-1X^Ty
とできる。$ ( y - XW)^2 + \lambda W^tWを微分して0になる点。 行列の掛け算 ---以下は、昔書いたもの--
回帰問題(分類問題もか)で、学習するパラメータが過学習になってしまうので、パラメータの大きさに比例する項(正則化項)を加えて、相対的に?パラメータの大きさを抑える方法(間違ってそうだけど)
正則化項の計算方法で、パラメータの二乗和を使うのがリッジ, L2。絶対値を使うのがラッソ, L1。0乗を使う(変数の数だけ足し算する?)も、どこかでみたような...
python, R でも計算してくれる。elastic-netという名前で、L1, L2を割合を与えられる。
python scikit-learn
alpha: 正則化項の係数 数式だとラムダで表現されること多い。
alpha = 0` is equivalent to an ordinary least square,
l1_ratio: L1, L2の配合比率
For 0 < l1_ratio < 1, the penalty is a combination of L1 and L2.
The best model is selected by cross-validation.
ハイパーパラメータの、alpha, l1_ratioを求める話
R Glmnet こちは 一般化線形モデル(binomial, poisson, multinomial, cox, mgausianが使えるとある)
labmda: ridge, lasso単独で使う際は、設定しないで推定に任せる。
Avoid supplying a single value for lambda
elastic netの場合は、自分で、lambda, alphaのクロスバリデーションをする。
alpha: こちらが、L1, L2の配合比率