※ こちらはミツモアAdvent Calendar 2021の8日目の記事です。
こんにちはミツモアのエンジニアの藤井です。(@yuki_meetsmore_87910)
昨日は@crazysrotさんからモデルの導入編をご記載頂きました。
本日はマッチングアルゴリズムで今後導入/ABテストしていきたいことを記載していきます。
本題に移る前にご紹介ですが、
ミツモアでは確定申告や不用品回収など様々なサービスのお見積りを手軽にとることができます。
非常に使いやすく手軽に使える便利なサービスとなっておりますので興味を持たれた方はぜひ使ってみてください !!
背景
ミツモアでは不用品回収やエアコンクリーニングなどの依頼者とそれを解決するプロの自動応募(依頼者とプロを自動でマッチングする)を実施しております。
現在その自動応募を機械学習に置き換えるプロジェクトが実施されております。
詳しくは
@crazysrotさんの記事をご参照ください
本日は今後マッチングアルゴリズムに導入していきたいこと/ABテストしたいことリスト
をご紹介させていただきます。
現在のミツモアの機械学習マッチングモデルはまだ導入されたばかりであり、
まだまだ改善の余地がたくさんございます。
1日も早く精度を向上させるため、まずは以下のようなものを実験的に使用したいと考えております。
- ランク学習 →現状はpointwiseな手法
- NNベースモデル
- 応募結果多様性に基づいたRerank
- 特徴量の追加
もちろんここにリストアップしたもの以外も試す予定のものは多いですが
ひとまず4つ紹介させていただきます。
何を実験の候補とするかはAirbnbが出している論文や資料(問題設定の似ているAirbnbにおいてどの改善がどの程度有効であったか?などが記載)およびその他論文などから候補を絞りました。
Airbnb 機械学習導入事例参考資料(どの改善が効果があったかまとめられている)
Airbnb 機械学習導入時の知見論文(上記同様 - 内容は違うがどの改善が効果があったかまとめられている)
上記記事ではAirbnbでのサーチエンジンに機械学習を導入する際
どの改善策がどの程度うまくいったかなどが記載されております。
これから推薦エンジンやサーチエンジンを作る機会があれば参考にしてみてもよいのではと思います。
ランク学習
現状急ピッチで導入したミツモアの機械学習マッチングアルゴリズムでは
ベースラインとして性能を図る意味も込めて損失関数としてPointWise的な手法を使用しております。
(PointWiseとは単一のデータに対して損失を設定することです。)
以下の記事ではsleepy_yoshiさんによりランク学習の紹介がなされています。
現在ミツモアで使用しているモデルではある依頼-プロの応募が決済されるかどうかを0/1で学習してます。
その結果をキャリブレーションで確率値として扱って問題なさそうなことを確認した後、期待売上に変換し使用してます。
一方近年では特に検索エンジンなどでランク学習が有効なことを示す論文などがあり、
導入することでエンジンの改善が期待できます。
実際にAirbnbの機械学習モデルでもランク学習の導入が非常に効果的であったと記載されてます。(先ほど紹介の記事参照)
そのためランク学習の導入をABテストの対象としたいと考えております。
ListWise Approach for learning to rankの論文
NNベースモデル
ミツモアで保有するデータ、マッチに関係がありそうなデータの一部は非常にスパースであり、
現在使用しているGBDTで扱うことが難しい可能性がございます。
スパースデータに対する対処法としてDeepFMなどから派生し様々なNNベースのモデルが提案されており(FiBiNETとか)
そちらの精度確認&ABテストをしていきたいと考えております。
こちらで紹介したようなdeepCTRモデルのようなNNモデルのベンチマーク やライブラリなどもありお手軽に導入できます。
DeepCTR モデルベンチマーク(criteoのデータ)
DeepCTR モデルライブラリ(Keras版/Pytorch版もあったはず)
もちろん何の工夫もなくうまくいく保証があるわけではないですが(過学習リスクとかそこそこあると思います)、 試してみる価値は十分あるかと考えてます。
マッチ結果多様性に基づいたRerank
ミツモアではマッチの結果の多様性を実現することが結果として依頼の成約率が向上するのではないかと考えております。
同じように検索エンジンの世界でも検索結果多様性を実現するために様々な手法が議論されてます。
例えばGoogleなんかは以下のようなドキュメントを出してます
多様性を実現しようとするアプローチは
1.複数モデルによる予測
2.予測結果のRerank
など複数存在しますが
低コストで実現/維持できそうな"予測結果のRerank"に着目し、ABテストを実施したいと考えております。
ここで予測結果のRerankとは一度モデルで出した出力を何らかの要因を考慮し並び変えることです。
マイナーかもしれないですがグノシーとかも検索結果多様性について論文を出していました。
特徴量の追加
これに関しては詳しく述べるまでもないですが、マッチの成約を左右する要因は様々であり、
スケジュールの空き、プロフィールの文章など複数の要因を機械学習の変数として取り込んでいきたいと存じます。
(実際に何を使うかはここでは秘密ということにしておきます。)
最後に
現在ミツモアでは様々なエンジニア・デザイナーなどの採用を強化しております。
この記事を読んで興味を持たれた方はぜひ応募してみてください!!