表題の内容の自分用の備忘録です。
回帰問題で目的変数の log1p を取ったもの (log ではなく) を新しく目的変数に据えて学習を進める手法がありますが、勉強のために kaggle などで言及されている箇所をまとめました。
メモ
(評価関数が RMSLE の時) target の log を目的変数に据えると RMSE を目的関数にして学習することができる
log 変換によって scaling 作用が期待できる
- 大きい値の外れ値の影響を軽減できる
小さい値のバラつきを強調しなくなる
- input value が小さい場合は np.expm1 を代わりに使用できる
log1p を使用するのは 目的変数に 0台の値がある場合, 直接対数変換ができないためである (log0 は定義されない)
log(1+ax) > log1p の場合もある
正規分布でないデータを扱う場合, アプローチ/分析/modeling に制約が発生する
小さな𝑥 に対して expm1 を使って exp(𝑥)-1 を計算すべきである
- 数ULPSオーダーのエラーが発生しうる
データセットがすべて1より大きい場合、logは通常問題ない. しかし,データセットが0から1の間の数を含む場合は,log1pの方がよいのが普通である.
図表