Wantedly Visitの2-Stage推薦システムを改善し、多様な募集をおすすめできるようにした話 | Wantedly, Inc.
こんにちは、ウォンテッドリーでデータサイエンティストをしている樋口です。今年の4月にウォンテッドリーはミッションを新たにし、「究極の適材適所により、シゴトでココロオドルひとをふやす」と掲げました...
https://www.wantedly.com/companies/wantedly/post_articles/538673
Photo by Kelly Sikkema on Unsplash
こんにちは。ウォンテッドリーでデータサイエンティストをしている角川(@nogawanogawa)です。この記事は夏のアドベントカレンダー15日目の記事です。
この記事ではWantedly Visitのスカウト推薦システムにおけるPost Processの取り組みについてご紹介しようと思います。
背景
スカウト推薦において「見たことがないユーザー」を多く表示したい
Post Processで見たことがないユーザーを考慮する
Wantedly VisitにおけるPost Processの取り組み
フィルタリングを加味したPost Process
オンラインテストの結果
まとめ
Wantedly Visitでは契約企業向けにスカウト機能を提供しており、スカウト対象となるユーザーを探すスカウト検索画面はスカウト担当者それぞれに対してパーソナライズされたランキングが表示されています。スカウト検索画面でのランキングは推薦チームで開発・運用しているスカウト推薦システムによって作られています。
通常、スカウト担当者は非常に多くのユーザーのプロフィールの中から最終的にスカウトを送るユーザーを見つけ出さなければなりません。そのため、企業担当者がスカウト推薦によって表示されたユーザーを一覧表示で見かけた後、結果的にスカウトをしない場合にはその後企業担当者からスカウトを送信する可能性が低いと予想できます。こうした「一度見かけたユーザー」をランキングで上位表示し続けることはスカウト担当者にとって非効率に繋がり、体験の悪化が懸念されます。
このように、Wantedly Visitのスカウト推薦のランキングにおいては、見たことがないユーザーが推薦されるほどスカウト担当者はスカウトするユーザーを見つけやすくなることが期待され、見たことがある/なしの情報を使ってランキング上での表示順位を調整することでスカウト担当者の体験向上につながると予想できます。
スカウト担当者が見たことがないユーザーの表示量を多くするためには、スカウト推薦のどこかしらの段階で考慮する必要があります。Wantedly Visitのスカウト推薦システムは下記図に示すような大まかにCandidate Generationフェーズ・Rankingフェーズの二段階に分かれる2-Stage推薦が行われています。
Wantedly Visitの2-Stage推薦の詳細については下記の記事をご参照ください。
このような構成を取っている関係上、スカウト担当者に対してこれまで見たことがないユーザーを優先表示させるためにはこの中のいずれかのフェーズで対応する必要があります。Candidate Generationのフェーズで見たことがないユーザーばかりを選んでしてしまうと見たことがあるユーザーをランキング上位から完全に排除することになるため、少々強引なように思われました。Rankingのフェーズで見たことがないユーザーを考慮するのはコントロールが難しく、さらに後段のPost Processのフェーズでビジネスロジックなどの処理によって再び並べ替えられてしまいます。
このような理由から、今回はRankingフェーズより前のフェーズでは見たことがないユーザーを無理に考慮せず、より後段のPost Processのフェーズに見たことがないユーザーを考慮する処理を追加することにしました。
先に紹介したように、Rankingまでのフェーズでコントロールしきれない要件(例: ビジネス上の制約)を実現することを意図したPost Processのフェーズが設けられています。これまでにもビジネスロジックとして複数種類のPost Processが適用されていましたが、今回見たことがないユーザーを考慮するためのPost Processを新たに追加しています。
スカウト担当者がスカウト検索画面において過去に表示した回数に応じて、見たことがないユーザーを優先表示するようなPost Processを適用しています。処理の中身としては、見たことがないユーザーを必ず優先するというものではなく、見たことがないユーザーの出現割合を調整するようにしています。これによって、将来的に見たことがある/ないユーザーの出現割合をコントロールしたくなった際にも、パラメータを変更するだけで変更可能なようにしています。
Wantedly Visitのスカウト検索では多くの採用担当者がフィルター機能を利用しています。このフィルター機能は動的に条件が決定されるため、ランキング構築時に仮に未閲覧ユーザーの表示割合をコントロールしたとしても、利用するフィルターによって閲覧済み・未閲覧を調整したランキングから更に変更が入り込んでしまい、うまく閲覧済み・未閲覧のコントロールができなくなってしまいます。
Wantedly Visitでの推薦は一部例外を除きすべてバッチ推論で実現されており、スカウト担当者が利用するフィルタ条件まで考慮してバッチ推論時に見たことがないユーザーの表示割合を調整することは難しくなっています。
そこで、今回の見たことがないユーザーの表示割合を調整するPost Processはバッチ推論時ではなくオンラインにて行うようにしています。
スカウト担当者が設定されたフィルタ条件を踏まえて見たことがないユーザーの表示割合を動的に調整することで、フィルタ条件によらず見たことがないユーザーの表示割合を調整できるようにしています。
上記の変更を適用した状態でオンラインテストを実施しました。オンラインテストを行った結果は下記のようになりました。
まだ見たことがないユーザーに関しては増加傾向を示し、今回行ったPost Processによって想定通りの介入効果があることがわかります。これと同時に主要KPIが向上しており、良い介入効果が現れていることがわかりました。(KPIの内容については公開できませんが、かなり大きなインパクトが見られる結果となりました)
この記事ではスカウト推薦におけるPost Processの取り組みをご紹介しました。これまでもWantedly Visit ではいくつかビジネスロジックを適用するためにPost Processが使用されていましたが、ほとんどすべてバッチ推論時に適用していました。今回はとくにフィルター利用時にも表示割合を調整できるようにするためにオンラインで動的にPost Processを適用できるようにし、フィルタ条件に依らず見たことがないユーザーの表示割合を調整するようにしました。
結果として主要KPIも良い方向に変化しており、機械学習を使っている箇所には手を加えずPost Processによって指標を向上させることができました。必ずしも機械学習モデルに手を加えなくとも改善が可能であるというのは一つ大きな学びになりました。
ウォンテッドリーでは、ユーザーにとってより良い推薦を届けるために日々開発を行っています。ユーザーファーストの推薦システムを作ることに興味があるという方は、下の募集の「話を聞きに行きたい」ボタンから気軽に話を聞きに来ていただけるとうれしいです!