LoginSignup
3
2

More than 1 year has passed since last update.

20 models ensemble diagnostics result

Last updated at Posted at 2021-12-16

この記事は、Numerai Advent Calendar 2021 の16日目の記事です。

はじめに

このツイート内容と一部、重複します。
ツイート内容に加えてTB200の結果、新旧neutralize関数による結果も記載します。

変更履歴

  • 2022-01-23
    • モデルのURLを追加
  • 2022-05-10
  • 2022-09-04
    • R332以降は、これらのモデルの予測提出は停止するので、最終提出のR331を追記

データセットの20分割

のフォーラム記事でmdoさんが言及されている分割方法です。

ターゲットのオーバラップを避けるために、Eraを以下のようにパージングして全体を4つグループの分けます。

Eraグループ1: 0001, 0005, 0009, ...
Eraグループ2: 0002, 0006, 0010, ...
Eraグループ3: 0003, 0007, 0011, ...
Eraグループ4: 0004, 0008, 0012, ...

さらに、特徴量1050個を210個の区切りで、全体を5つのグループに分けます。

特徴量グループ1: 1 ~ 210
特徴量グループ2: 211 ~ 420
特徴量グループ3: 421 ~ 630
特徴量グループ4: 631 ~ 840
特徴量グループ5: 841 ~ 1050

このようにして、4 * 5 = 20 で、データセットが20分割になります。

アンサンブル結果

  • ターゲット: target_nomi_20
  • 学習アルゴリズム: LGBMRegressor
  • パラメータ (exampleと同じ)
    • n_estimators: 2000
    • learning_rate: 0.01
    • max_depth: 5
    • num_leaves: 2 ** 5
    • colsample_bytree: 0.1

ノーマル

今回、20個の各データセットで学習して、予測値の平均を求めてアンサンブルしてみました。

  • Diagnostics
All TB200
20_ensemble_all.png 20_ensemble_tb200.png
  • 新Diagnostics
All TB200
20_ensemble_all_newdiag.png 20_ensemble_tb200_newdiag.png

フルFN(新neutralize関数)

新データセットのutils.pyのneutralize関数を使用。proportion=1.0

  • Diagnostics
All TB200
20_ensemble_fn_all.png 20_ensemble_fn_tb200.png

この結果だけをみるとマイナスが少なくて安定してそうですが、最近のlive eraでどうだったのか気になります。
今後、提出して観察してみます。
フルFNのCorrは、ノーマルのFNCの0.0175になると思いましたが、 0.0194 で一致しませんでした。

  • 新Diagnostics
All TB200
20_ensemble_fn_all_newdiag.png 20_ensemble_fn_tb200_newdiag.png

フルFN(旧neutralize関数)

旧データセットのneutralize関数を使用。proportion=1.0

All TB200
20_ensemble_fn_all_old.png 20_ensemble_fn_tb200_old.png

Corrが、ノーマルのFNCの0.0175と一致しました。
新診断は、旧データセットのneutralize関数が使用されているようです。

exampleモデルの結果

データセット分割との比較として、
新データセットに含まれている example_validation_predictions.csv です。

ノーマル

All TB200
example_val.png example_val_tb200.png

フルFN (新neutralize関数)

All TB200
example_val_fn_new.png example_val_fn_new_tb200.png

フルFN (旧neutralize関数)

All TB200
example_val_fn_old.png example_val_fn_old_tb200.png

雑多なメモ

  • 20個のモデルの最適な組み合わせを探す
  • nomi以外の他の20dayターゲットで学習してアンサンブルする
  • 60dayターゲットで学習してアンサンブルする
  • riskiest featuresによる中和を導入する
  • 新旧neutralize関数の違いを調査する

おわりに

ハイスペックマシンではなくても、データ分割してアンサンブルかつフルFNで高Sharpeを期待できそうです。

上記メモを試して進展ありましたら、共有したいと思います。

(特徴量が5つに分かれているのは、平日の5日間?)

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2