0%
約5分 0文字

offline評価に救われた

今自分がいただいているタスクでオフライン評価に助けられたところがあったので共有します。

今私がやっているタスクでは、とある期間のデータを使って学習および推論を行い、新規の購買してくれそうな、その確率が高いユーザーを予測するという機械学習モデルを作っていました。このタスクは私のチームではよくあるタスクで、私が初めて自分で取り組んだチーム通常業務でもあります。その中で、とある期間のデータを使って学習および推論を行い、できた成果がうまく予測できているかを、その学習等に使っていないデータで確認するというフローを行いました。ここを擬似的なオフライン評価と言っています。

というのは、実際にオフライン評価をしたわけではなく、学習や推論の段階で使われていないデータ、例えば7月のデータを使わないという風にして、その7月のデータを使うことで擬似的なオフライン評価というのを実装しています。この技術的なオフライン評価自体は、試しにやってみたらどうだろうかという程度でトライしてみました。結果として、この技術的オフライン評価に助けられ、成果の良くない、精度の良くないモデルをリリースすることを防ぐことができました。

次はその原因と結果についてちょっと触れていきたいと思います。

落とし穴とデータ

これまでオフライン評価をしない場合は、インポータンスを見て、なんとなくリークをしているかどうかというのを肌感で確認をしたり、累積ゲインを使ってランダムよりも良い精度、例えば上位20%、30%で全体の70%から80%のユーザーを補足できているかといったところで、機械学習モデルというのを我々のチームでは評価をしていました。これまではこれで問題なく回っておりました。

ただ、たまにうまくいかない配信をすると、うまくいかないものがあったりするため、一旦擬似的なオフライン評価というものを取り入れています。

今回に関しましては、インポータンスを見てもちょっとリークっぽいものは見当たらないし、学習の曲線を見てもちょっと過学習気味かなという程度で、そこまで大きな問題というのは見つかっていませんでした。ただ、擬似的オフライン評価による累積ゲインを確認したところ、ランダムよりも値が悪いという結果になりました。ここでチームの皆さんに共有をし、ちょっとうまくいっていないようですというのを共有しました。

ここで私が考えたのは、単純に私がこのタスクを受け持ったのは初めてで、チームメンバーはもう一定の数をこなしていますから、単純に自分のクエリの書き方であったり、機械学習のパイプラインの回し方にミスがあったのではないかということです。ミスがあった結果、こうなったのではないかと推測していました。ただ、結果的にチームメンバーの手も借りてデータを見てみると、データのログの一部にこちらが想定していないような挙動が含まれているということが分かりました。このあたりは業務に関係あるので、ちょっと述べられないんですが、とある日にCVが突出して計上されているという形になっていて、そこを学習しているのではないかという結論になっておりました。

これに関しては、従来のインポータンスや過学習がどうかといったものを見るだけではダメで、結果的に適用評価で累積を見た結果、どうやらおかしいっぽいぞというふうに問題が発覚しました。その問題発覚の究明のためにデータの分布などを見てみると、どうやらデータがこちらの想定しているようなものではないということが明らかになりました。初手、そもそもモデルを作る前にデータを確認したらいいのではというツッコミもありました。

もしかしたらあるかもしれないのですが、沼ってしまうことがあり得るので、一旦モデルを作って、それから違和感があったら調査をするという流れになっています。この際にもちょっと私の手には負えないということで、レイヤーの高い社員の方にこのタスクを引き継ぎました。彼らがどういうクエリで原因究明をしているのか、また原因究明をする際の当たりの付け方がどうなっているのかについては、案外、自分からスタートしたタスクだからこそ気になる部分でもあります。

そこに対してつぶさに見ることができました。特に自分が思いついていない視点を皆さんが持っているというところが明らかになって、まだまだタスクをするには視点も経験も足りないなというふうに強く感じた瞬間でございました。

まとめ

結局今回の私にできたことは、まず機械学習であったり、今回の検証をいち早く終わらせて、おかしいなと思ったタイミングで素早くチームメンバーに共有すること。ここまでの共有が私の初タスクということもあり、時間がかかってしまいました。ここに関しては1回目だからしょうがないと割り切ることもできますが、このようなエラーが起こる可能性を考えると、早期に実行検証してチームに共有することの大切さを知りました。

チームメンバーそれぞれも期限の迫ったタスクを持っていますし、私の方で何か自分のタスクの締め切りギリギリに共有すると、他のメンバーのタスクの締め切りもあって、こちらの原因究明に当たれないという可能性もあります。那を考えると、少なくとも私のタスクの締切日は余裕を持って出して、他の人が片手間で1日30分程度しか確認できなくても、それを解決できるような、やっぱりスピードが命だなということを再確認した、そんなタスクでございました。

擬似的Offline評価に助けられた

著者

semiramisu

公開日

2025 - 08 - 05

ライセンス CC BY-NC-SA 4.0

応援お待ちしています!

もしこの記事が役に立ったら、コーヒー1杯分の支援をいただけると嬉しいです。 いただいた支援は、より良いコンテンツ作成のために使わせていただきます。

PayPayで支援する

QRコード

(PayPayアプリで読み取ってください)

PayPay ID: @your-paypay-id

※ PayPayアプリの「送る」から
上記IDを検索してください

Buy Me a Coffeeで支援する

Buy Me A Coffee

クレジットカードやPayPalで支援できます

コメント