ロバスト回帰について
今回は、ロバストな回帰のうちの一つ、フーバー回帰というものについて、まとめてみます。
Tensorflowで回帰問題を解くときに出てきたので、整理もかねて。
ロバスト回帰とは
そもそもロバスト回帰とは、訓練するデータに外れ値が含まれているときに、その外れ値の影響をできるだけ少なくするような学習方法のことを言います。
例えば、単純に二乗損失(Ⅼ2損失)を使う回帰では、外れ値の影響が、二乗しているせいで大きく影響してしまいます。
\sum_{i=1}^{n}(f(x_i)-y_i)^2
ロバスト回帰では、損失の値をうまく調節することで、可能な限り外れ値の影響を少なくしていきます。
フーバー回帰とは
先にフーバー回帰について、概要を紹介します。
統計学/機械学習におけるフーバー回帰とは、損失にフーバー損失(Huber Loss)を用いた回帰のことを言います。
では、フーバー損失とは...数式で表すと以下のようになります。
HuberLoss(a) = \left\{\begin{array}{ll} \frac{1}{2}a^2, &&|a|\leq\delta \\ \delta(|a|-\frac{1}{2}\delta), && |a|>\delta \end{array}\right.\
$a$は各データに対する予測値と実現値の差、つまり残差のことです。(式で表すなら$a=\hat y_i-y_i$)
$\delta$は調整可能なハイパーパラメータで、正の実数を指定できます。
例えば $\delta$を1.0 とした場合、$|a|$が1.0($\delta$)以下、つまり残差の絶対値が0.0~1.0のデータに関しては、残差の二乗値に0.5を掛けた値を計算し、$|a|$が1.0($\delta$)より大きい、残差の絶対値が1.0より大きいデータ点に関しては、残差の絶対値から0.5を引いた値を計算する、という損失の出力方法だということです。
これがどういった点でロバスト性を持つのでしょうか。
その説明の前に、MAE(平均絶対誤差)とMSE(平均二乗誤差)の性質についておさらいしていきます。
MSE(平均二乗誤差)
これはもう飽きるほど見てきたので大丈夫ですね。
\sum_{i=1}^n(\hat y_i -y_i)^2
一番最初に学習した回帰モデルである単回帰モデルでも、この誤差関数を目的関数として、学習させていくのでした。
Lossが0付近で勾配も小さくなっていますので、勾配降下法も、使いやすそうです。
しかし訓練データに外れ値が含まれる場合、二乗している分だけ外れ値に引っ張られやすいという欠点を持っています。
Errorが-2以下、2以上だとLossは見切れちゃっています。
MAE(平均絶対誤差)
L1損失とは、予測した各データ点と実現値との差(=残差)の絶対値の総和をとって損失とする計算方法です。
\sum_{i=1}^n|\hat y_i-y_i|
外れ値があったとしても、二乗損失に比べれば影響は少ないため、実はこのL1損失もロバストな損失といえるのですが、一つ欠点があります。
それは、MAE=0の地点で「微分不可能」で、0に近い場所でも勾配が大きいこと。
勾配降下法を用いて学習させていく最適化アルゴリズムにおいては、0に近い場所でも勾配が大きくなってしまうということは、局所最適解への収束がしづらいだろうと容易に想像できます。(というより、微分不可能な点があったら勾配降下法は使えない)
MSEと比べると、確かに外れ値に強そうなことが見て取れますが、Errorが0の部分はとんがってます。
フーバー損失のロバスト性
MSEとMAEの欠点を確認したところで、フーバー損失のグラフを見てみましょう。
MSEのように、Lossが0付近で勾配が小さくなっているかつ、MAEのように外れ値に強くなっています。
つまり、フーバー損失はMSEとMAEのいいとこどりしたようなものなのです。
まとめ
外れ値に強い損失の計算方法を、ロバスト損失といい、その中の一つにフーバー損失というものがあるのでした。
フーバー損失は、指定した値 $\delta$ より残差の絶対値が小さいデータ点に対しては、残差の二乗を$\frac{1}{2}$に、$\delta$ より残差の絶対値が大きなデータ点に対しては、残差から$\delta$の$\frac{1}{2}$を引き、$\delta$を掛けて計算します。
こうすることによって、
- MSEの外れ値に敏感な性質
- MAEのLossが0付近で微分不可能になってしまう性質
とはいえ、MAEくらいに外れ値に強いとは言ってもとてつもなく大きな外れ値があった場合、フーバー損失であっても影響は無視できません。
そこで、ある程度外れていたらそのデータ点を完全に無視するというテューキー損失というものも考案されているようです。
そちらについてはまた今後、またフーバー損失についてもまだ深掘れそうなので、より詳しい投稿は後日の自分に任せることとします。
お疲れさまでした!