みなさん、こんにちは!
初投稿なので、もし規則を破っている箇所があれば事前にお詫びします。
私は実質、約2年間金融分野でMLE(機械学習エンジニア)として働いており、この間ずっと同じ問題にぶつかってきました。
- 予測モデルを構築する
- 素晴らしい指標を得る
- それをデプロイする
- そしてブーム、意味が分からず、完全にパフォーマンスが低下する。
この循環は延々と続き、十分だと感じた時、なぜそうなるのかを掘り下げ始める決意をしました。
私たちが最適化しているのは間違ったものだと気づくのに、あまりにも長い時間を要しました。
従来の指標は近さを最適化しますが、有用性は最終的には重視されません。結局私たちは予測の有用性を重視します。
重要なのは、その予測が正しい意思決定につながるかどうかです。
ごく簡単な例です(本当に過度に単純化しています)。
シナリオA:
株価を$101と予測します。実際の価格は$99。誤差は2ポイント。
RMSE はこれを素晴らしい予測だと示します。
しかしあなたは上昇を予測し、価格は下落しました。
その信号で取引したら、お金を失いました。
シナリオB:
あなたは$110と予測します。実際の価格は$105。誤差は5ポイント。
RMSE はこれを悪いと示します。
しかしあなたは上昇を予測し、価格は上昇しました。
その信号で取引していれば、お金を稼いだでしょう。
従来の指標はシナリオAを好みます。
しかしシナリオBは実際に機能する予測です。
このアイデアを1年以上、100以上の実データセットと 5万を超えるモンテカルロシミュレーションで試しました。従来の指標を用いてモデルを選択すると、統計的誤差は小さくなるものの、取引成績は悪化しました。
意思決定に整合した指標(次に説明する FIS/CER)でモデルを選ぶと、数値的誤差は高くなることが多いですが、現実世界の結果は著しく改善されることがよくありました。
同じモデルでも、選択基準が異なれば結果は全く異なる。
2つ目の問題は、データセットを実際に理解する前にモデリングに飛び込んでしまうことで、EDA は時間がかかり、毎回すべての詳細をカバーできません。
次のような経験はありませんか:
- データセットがグループ化された時系列データで、平坦な表形式データではないと気づく前にトレーニングを開始した
- 間違ったターゲット列を選んだ
- 誤ってターゲット由来の特徴量で訓練してしまった
- 時系列データに対してランダムな train/test 分割を使用した
- データの時間的ギャップに気づく前にハイパーパラメータの調整に何時間も費やした
そんな経験はもうたくさんです、もう勘弁してください。
実務では、これらの小さな問題のほとんどは何も訓練する前に検出できたはずですが、現実には見逃されがちです。
とはいえ、これらの小さな問題は以下の理由で通ってしまうのが現状です:
- 手動の EDA は何時間もかかる場合があり(正直言ってとても退屈です)
- 微妙な問題(リーク、識別子列)は見逃しやすい
- データセットを詳しく調べるより、新しいモデルを試すほうが楽しい
多くの場合、悪いモデル性能に見えるものは、実際には悪い問題設定なのです。
結局、これらの2つの問題に対処する小さなツールを作りました。
1つの層は意思決定に整合した指標(FIS=Forecast Investment Score、CER=Confidence Efficiency Ratio)を用いて予測を評価します。平坦な予測と欠損1%のケースを同点とする条件下で、99%の頻度で従来の指標より優れた信号を示すように設計されており、従来指標が誤解を招く信号を出す場面を可視化します。
2つ目の層は、モデリング前にデータセットの診断パスを実行し、次のような質問に答えようとします:
- これは表形式データですか、それとも時系列データですか?
- グループ化されたエンティティはありますか?
- リークのリスクはありますか?
- 最も妥当なターゲット列は何ですか?
- どの検証戦略が実際に意味をなしますか?
- どの変換をすべきか、そしてなぜ
- このデータセットにはどのモデルを使うべきか、そしてなぜ
- ALL EDA は意思決定のためにツール内で実行されます
- 最後に、データセット全体の健全性を見て、モデリングの前に改善すべき点を検討します
目的は、通常は2時間程度の EDA の後に現れる、あるいは全く現れないような問題を摘出することです。
今後は、このデータセットの知見に基づくAuto-MLを可能にするプラットフォーム拡張を予定しており、以下を含む予定です:
- 自動特徴量エンジニアリング
- 自動ハイパーパラメータ調整
- 自動モデル選択とモデルサイズ(NN の場合)
- 分析中に行われたすべての意思決定の詳細な説明
- 最終モデルは有用性(FIS/CER)に基づいて直接選択
- 他にも多数のアイデア
もちろんまだ多くの作業は残っていますが、UX やプラットフォームに関わる基盤システムを含むあらゆるフィードバックを歓迎します。質問があれば喜んでお答えします!
もし試してみたい方は、こちらです:
サインアップ不要、データセットまたは予測ファイルをアップロードするだけです。
[リンク] [コメント]
