ロバスト学習を行う方法の1つであるHuber損失最小化学習について紹介する。 その方法は、以下に定義するHuber損失を最小化することである。 これは、いわゆる損失と損失の両方を加味した結果提案されたものとなっている。
このHuber損失と、学習に用いた訓練標本の数と各訓練標本の目的変数とその予測値の差を用いて目的関数を以下のように構成する。
この目的関数をそのまま最小化するように推定するパラメータを更新していくというわけではなく、今回は代理損失を用いる。
代理損失とは、Huber損失の上界をとるような別の最適化しやすい関数を指し、本ドキュメントでは以下で紹介するパラメータを用いて表現される。
数式中の記号 | コード中の変数 | 概要 |
---|---|---|
y | 目的変数で、実数値をとる。 | |
y[i-1] | 番目の標本が持つ目的変数の値。 | |
X | 適当な関数を説明変数に適用して作ったデザイン行列。確率変数ではない。 | |
X[:, j-1] | デザイン行列から列目をとったもの。 | |
coef | 求めたい回帰係数。推定値だけどハットは省略した。 | |
yhat | 訓練標本に対する推測値。 | |
resid[i-1] | で、推測値と実値の誤差。 | |
eta | 学習の際に用いる閾値。値は適当にセットした。 | |
w_diag[i-1] | 表が崩れてしまったので別途下に記載 | |
len(y) | 訓練標本の数となっている。 | |
W | 対角行列を指す。 | |
- | 行列に対してはの一般逆行列を指す。 |
の初期値をとする。つまり、普通に線形回帰係数を得る。
推定値の値が収束するまで、以下の2つのステップを繰り替えす。
現在の推定値を使って、を計算する。
をで更新する。
iris
の呼び出しと、線形回帰係数を得るまで。coef
を更新する。