➗
精度を引き上げるLog変換の裏技:XGBoostと相性抜群な理由を数学で解剖する
1. 現場でよくある問題:「株価はバラつきすぎる」
- 株価などの金融データは桁も動きも大きすぎる
- XGBoostにそのまま突っ込むと、大きな値に引っ張られがちになる
- ⇒ モデルが一部のスケールに過剰適合するリスク
2. 実はみんな使ってる「log変換」という裏技
-
よく見る処理:
df["LogClose"] = np.log(df["Close"]) df["Target"] = df["LogClose"].shift(-1) - df["LogClose"]
-
これ、ただの前処理じゃない
-
学習の安定性と精度に効く「重要な変換」
3. Logの何がいいの?──ばらつきを均等化できる
大きい値も小さい値も「同じ倍率なら同じ差になる」
- 例:100→200、1000→2000 の log差は同じ
- ⇒ XGBoostの分割にとって、全体をフラットに保つ効果
外れ値の影響を和らげる(=ロバスト性向上)
- logは「スケール圧縮」を行うので、極端な値が滑らかに
4. 数学的な背景:なぜ自然対数(ln)なのか?
-
底
の対数は、連続成長や指数関数との整合性があるe -
log差:
\ln(\text{Close}_{t+1}) - \ln(\text{Close}_t) = \ln\left(\frac{\text{Close}_{t+1}}{\text{Close}_t}\right) -
⇒ 倍率の変化が加法的に扱える(複利に対応)
5. XGBoostとの相性の良さ
-
XGBoostは非線形分岐モデル:
- 特徴量を「分割しながら」学習
-
分割は基本的に スカラーな数値スケール に依存
-
log変換で「分割しやすい形」にすることで:
- 決定木が「同じ倍率での変化」を見逃さない
- 学習の偏りを抑え、特徴量の公平性を保てる
6. 実例:変換前後の精度比較(任意でグラフ追加)
-
MAE
orRMSE
で log変換前後の誤差比較 - ヒストグラムや散布図で視覚化
7. まとめ:「logは前処理じゃなく、性能ブースター」
メリット | 内容 |
---|---|
分布の圧縮 | 外れ値に強くなる |
同倍率の変化を均等化 | モデルが倍率の変化を学習しやすい |
複利と整合 | 金融データとの相性がいい |
数学的にスッキリ | 微分・積分の性質も良い |
Discussion