👀

Numerai初心者に勧めるモデル構築方法

2022/12/26に公開

これはNumerai Advent Calendar 2022 の12/11 の記事です。

概要

  • 機械学習初心者はまずXGboostかLightGBMを使いこなすところから。
  • Numeraiで使われているテクニックであるFeature Neutralization を理解しましょう。
  • いろんなターゲットを試してみると良いですよ。

利用するモデルとしては勾配木モデルを推奨

色んなモデルがありますが、機械学習に詳しくない人は、まずXGboostやLightGBMの勾配木モデルをとりあえず使えるようになるところから始めると良いです。回帰モデルを適当に回すだけでそれなりのスコアが出ます。
 Numerai はテーブルデータのコンペですが、テーブルデータでは今のところこれらの勾配木モデルが強いです。colsample_bytreeなどのパラメータは0.1などの小さい値に設定することを推奨します。理由としては、あまり過学習気味にモデルを作成すると、例えバリデーションの結果が良くても特定の期間にオーバーフィットしたモデルができる可能性が高いからです。
 また、過去にTabNetなどの深層学習モデルをNumerai で用いたことがありましたが、あまりパフォーマンスは良くありませんでした。仮に深層学習モデルを用いるのであれば、順序付き分類問題として捉え、得られた予測確率からスコアを算出するのが良いと思います。これは個人的な意見ですが、深層学習はS/N比の低い問題には適さないんじゃないかと思います。逆に、強力なエッジが特徴量に含まれていたり、問題設定が予測しやすいものであれば、ワークすると考えています。
 ただし、Signals に参加される人は線形モデルも視野に入れた方が良いかもしれないです。これは、Signals ではbinning されていないデータも利用することができるため、それによって特徴量単体でもそれなりのパフォーマンスが出せる場合があるからです。興味のある方は、試してみると良いかもしれません。面白い発見がたくさんあります。

Feature Neutralization について

Numerai ではFeature Neutralization というテクニックがあります。Numerai では予測結果とターゲットとの相関が一つの評価指標となっていますが、この相関の期間ごとのばらつきを抑える敵ニックです。Feature Neutralization については以下の記事が参考になるかと思います。
https://qiita.com/NT1123/items/6c0123e960ab43148eb1
 簡単に説明すると、予測結果から特定の特徴量成分を取り除く操作です。金融工学でやられていることは、エッジの探索というよりはむしろリスク管理の側面が強いです。例えば、現代ポートフォリオ理論はボラティリティ≒リスクを減らすためにポートフォリオを組むことが一つの目的となっています。この観点だと、少数の変動の大きな特徴量に依存することは得策ではないため、このように特徴量成分を取り除く操作が行われているのだろうと見ています。
 ちなみにこれは余談ですが、Numerai では線形モデルよりもツリーモデルの方が相関のボラティリティが低くなる傾向があります。パフォーマンスのリスク管理の観点でも、勾配木モデルを採用した方が良いと思われます。

Nomi 以外のターゲットも試してみる。

Numerai では、トーナメントの予測の評価に採用しているNomi 以外にもたくさんのターゲットが存在します。これらを試してみると面白いことが色々とわかると思います。
 例えば、jerome60で学習したモデルとNomi20で学習したモデルをアンサンブルするとCORRに対して良いパフォーマンスを発揮します。他にも、7つにbinning されているターゲットなどはTC向上に関連するのではないかと見ています。これは、以下のような理由によるものであると考えています。
 Numerai では予測結果の上位と下位の銘柄でlong short ポートフォリオを作っています。従って、重要になるのは端っこの部分の予測結果の良さです。従って、予測結果全体を通してCORRが高いよりはむしろ端っこの部分のパフォーマンスさえ良ければファンドに貢献できると考えられます。そして、これは私の経験談なのですが、Numerai 的な手法でLS戦略を組むと、結構な数の銘柄を売買しないとパフォーマンスが安定しないことがわかり、しかしそれにはかなりの資産が必要となることがわかります。そのため、実践的には予測結果の上位下位の数銘柄が強ければよく、それには、例えばターゲットやそれに準ずる値をbinning する際に、より細かくbinning すると上位下位のパフォーマンスが良くなることがあります。Numerai も似たようなことをやっているはずなので、7つにbinning したターゲットはTCに貢献する可能性が高いと思っています。ただし、細かくしすぎると予測の正確さが落ちる傾向もあるので、そのあたりのトレードオフは考慮した方が良いような気もします。その結果が7つにbinningすることなのかもしれませんね。
 ちなみに、Signalsも複数のターゲットが利用できるようになりました。Signals は実際に株式運用をする際にも参考になるため、こちらも試すと良いかもしれないです。筆者は2022/12/25現在、まだ試せていないです。試した方は、こっそり教えていただけると助かります。

まとめ

  • 機械学習がよくわからない人はXGBoostやLightGBMから入るのがオススメ。ただし、Signals をやる場合にはその限りではない。
  • feature neutralization の使い方をマスターすると、比較的安定したスコアが出せる。
  • 使うモデルだけでなく、むしろ複数のターゲットを利用することで多くのモデルを作成し、調査を行っていくと独自のモデルができる可能性がある。

最後に

今回の記事は、もし自分が今からNumeraiを始めるとしたらどういう情報が有益かという視点で書きました。疑問のある方や興味のある方のコメントを期待しています。
Numerai or Die!

Discussion