機械学習の精度を確認する際に何げなく因果推論のタスクをやっていたという話です。
業務で気になったことを出発点にいろいろ調べたことを書いている感じです。
最後に参考文献を載せているので、ちゃんとした話を知りたい方はそちらを参照いただければと。
教師あり学習の前提の話で、loglossの評価を考えます。(教師無しに共通するはなしかはちょっとわかりませんが、シンプルには無いと思います。)
通常であれば、学習データとテストデータを分けて、学習データでモデルを獲得してその精度をテストデータで確認します。
この時、テストデータ内の各サンプルでloglossを算出し、その平均を算出して精度の指標とし、この値を比較することで「あるモデルは別のモデルより優れいているので差し替える」といったような意思決定を行っています。
この時、データが入手できる環境次第では単純に平均を取る事は適切でないケースがあります。
例えばレコメンドの様なタスクであれば、ユーザーはそもそも評価をするか否かという選択が与えられ、評価した場合にはスコアが付くという状態になります。そして、モデルの評価はこのスコアがついているデータのみにおいて行われていることになります。
しかし、実際にレコメンドで解きたいのは「スコアを付けてくれた場合にどうなるか?」ではなく「スコアを付けようが付けなかろうがどう思うのか?」という問題のはずです。
つまり、そのユーザーのスコアを付けてくれなかったデータを含めての精度を知りたいのに対して、スコアを付けてくれた部分のみに対しての精度を考えているという事になります。
そして非常に面白いことに、これはMissing Not At Randomの欠損メカニズムが存在する状況における平均の推定に等しいわけです。
こういった状況においては、Inverse Propensity Score WeightingやDoubly Robust Estimatorが適応可能で、欠損を考慮した平均を得られる事が知られています。
これに類似する状況は様々なビジネス応用で考えられると思います。
例えば、予測モデルが出力する予測値を元に意思決定を行い、そのログから予測モデルを更新するような場合です。(恐らくbandit feedbackと呼ばれている)
この場合にも、意思決定の末にデータが欠損するようなことになっていれば、モデル評価は欠損データでの平均の推定になります。
また、強化学習を過去ログ上で評価しようという試みのOffline Policy Evaluationもこの問題に該当しています。これは新しいpolicyの意思決定が過去における意思決定と一致するログでしか報酬の観測が得られない為に欠損が起きるという状況です。
評価が仮に変化するとモデルはどのように学習されるべきか?という問題が次に出てくるのですが、Inverse Propensity Score Weightingで評価するのであれば Inverse Propensity Scoreを重みにして学習してあげることでこれに適応した学習をする事が可能です。強化学習の場合にはDoubly Robustの応用もされていたりします。
機械学習初めてから3年くらい何げなく平均を取り続けていましたが、こういう話もあるんだなぁと改めて奥の深さを痛感しました。
また逆に機械学習の応用においてこのあたりの話が考慮されていることもほとんど聞かないので、これは自分にとっての一つのチャンスでもあるだろうなーとなんとなく思う今日この頃でした。
<参考文献>
- Recommendations as Treatments: Debiasing Learning and Evaluation
- Doubly Robust Policy Evaluation and Optimization
- Microsoft の発表スライド
- コーネル大学のCounter Factual Machine Learningの授業
そもそもの欠損データでの平均の推定について