こんにちは。サイエンス統括本部で検索モデリングを行っている今関です。クエリ処理や機械学習モデルの精度向上を通して、ヤフーのさまざまなサービスの検索ロジック改善に取り組んでいます。
本記事では、機械学習モデルによりYahoo!ショッピング検索の広告枠で検索精度を改善した事例を紹介します。ショッピング検索では検索クエリの意図に適合しない、すなわち意図違いの商品が掲出されてしまう問題がつきものです。そこでクエリ意図に適した商品か判定するモデルを開発し、この判定結果を利用して実際に検索精度を改善しました。
Yahoo!ショッピング検索の広告枠における表示順ロジック
Yahoo!ショッピングはモール形式のECサイトで、さまざまなストアが多様な商品を出品しています。その中でも特に精力的に販売促進したいストア向けに、検索結果に広告枠を提供しています。
この広告枠の表示順は、スコアリングによって決定されます。商品の販売実績やクエリと商品の関連性などを考慮して『どれくらいユーザーにとって魅力的な商品か』を予測した品質スコアに、ストアが入札した価格を掛け合わせています。
これにより入札金額を大きくするほど広告枠の上位に表示されやすく、ストアの売上につながりやすいシステムになっています。
スコアリングが抱える課題
ところが入札金額を一律掛けるというスコアリングには問題もあります。クエリと意図違いの高額商品が誤って掲出されやすくなってしまうのです。
例えばユーザーが『体温計』と検索した時、一般的には家庭用体温計を意図していると考えられます。しかしこのクエリは、検索意図から外れた業務用サーモカメラにもヒットしてしまいます。このような商品ごとの魅力とは別に、クエリと商品が意味的に一致しているかどうかを、本記事ではクエリ意図と商品の適合性と呼びます。
この時、クエリ意図に適合する体温計と適合しないサーモカメラのそれぞれに対してスコア計算が行われ、品質スコアは体温計の方が高くなるように計算されます。一方で高額商品であるサーモカメラの方が高い入札金額でも採算が取れることから、入札価格はサーモカメラの方が何倍も高くなることがあります。
結果として表示順スコアはサーモカメラが上回り、ユーザーの意図しない商品が検索結果に出てしまいます。
これだとユーザーは求めていない商品を見てがっかりしてしまいます。そしてそのようなリクエストはなかなか購入に至らないため、ストアがせっかくかけた入札金も無駄になってしまいます。このようにユーザビリティを損なっている状況はヤフーにとっても好ましくありません。
そこでデータサイエンスの力でこの課題の解決に取り組むことになりました。
クエリ意図と商品の適合性を機械学習モデルで判定し品質スコアに組み入れる
このようなスコアリングになってしまう原因は、クエリと商品の関連性が従来の品質スコアにあまり寄与しないことにあります。
従来の品質スコアは『同じ体温計の中でも、どの商品がより魅力的か』を数値化することに主眼を置いていました。クエリとの関連性よりも、販売実績など商品自体の人気度を示すパラメータが重視されていたのです。
そのため適合性を考慮したスコアリングを苦手としており、『体温計』というクエリとサーモカメラの間に全く関連性がなくても、品質スコアはそれほど小さくなりませんでした。
一方で検索広告は、商品の人気度だけでなくクエリと適合しているかもバランス良く考慮することが多いです。そこでこの手法をYahoo!ショッピングでも取り入れ、適合性判定も踏まえたより精度の高いスコアリングに改良することになりました。
ただしクエリと商品の適合性は単に単語の一致などを見るだけでは判定できず、さまざまな要素を総合して判定する必要があります。例えば『パソコン』というクエリに『パソコン本体』と『パソコン用周辺機器』という商品があったとき、どちらも単語は一致していますが適合するのは前者だけです。
そこで各種特徴量から、この適合性判定を行う機械学習モデルを開発することにしました。
膨大なログデータをモデル学習に活用
適合性判定モデルの開発で問題になったのが、学習や評価に必要な適合性ラベルの用意に多大なコストがかかることでした。学習に十分なデータ数を確保するには、クエリと商品のペアに対して適合するか否かのラベルを振る作業を何十日もかけて行う必要があり、そのような工数を確保することは困難です。
そこでユーザーアクションラベルに着目しました。ユーザーアクションラベルはPVや購入など、検索したユーザーがその商品に興味を持ったことを示すラベルです。ヤフーは数多くのユーザーに利用してもらっており、そのログデータもモデルの学習に十分な量が蓄積されています。
一般にクエリ意図と適合する商品の方が、適合しない商品よりも、ユーザーアクションは起こりやすいという相関関係があると考えられます。そこで今回は、ユーザーアクションがあった商品は適合している/ユーザーアクションがなかった商品は適合していない、と見なして分類するモデルを組むことにしました。
(※ここで取り扱っているデータは、プライバシーポリシーの範囲内で取得したデータを個人が特定できない状態に加工しています)
代替ラベルで学習する際はモデルの適度な制約が重要
ラベルをユーザーアクションで代替する際に重要なのがモデルの制約です。
ユーザーアクションラベルを予測する上では、販売実績など商品自体の人気度を示す特徴量も重要になってきます。しかし商品自体の特徴量は、クエリとの適合性を判定する上ではほとんど参考になりません。
このような状況で闇雲に商品自体の特徴量を使うと、過度にユーザーアクション予測に最適化されたモデルが学習されます。つまり『クエリと全く合致しないけど、販売実績が良いから適合している商品』と判定するおかしなモデルになってしまうのです。
こういったケースでは使える特徴量を全て学習に使用するのではなく、適度に制約を与えることが必要になってきます。今回は商品自体の特徴量はデータから省き、単語一致率のようなクエリと商品の適合性を直接示す特徴量のみを採用しました。
学習するラベルと真に最適化したいラベルの間にバイアスが存在する場合、学習ラベルに対する精度を改善するだけでは真の目的を達成できません。そのため、学習の枠組みの外部から制約を与えることで、バイアスの影響を抑える必要があります。
クラウドソーシングによる評価
また代替ラベルを使用する際には、モデルの評価方法にも工夫が必要です。
ユーザーアクションラベルは学習には使えます。一方、『モデルに適度な制約を与えた方が、学習用ラベルの予測精度は下がってもバイアスの影響が減るので適合性の判定精度は良くなる』ということの評価には使えません。
そのため、モデルの判定が正しいか人手で評価する必要が出てきます。しかしモデルのちょっとした変更を行うたびに毎回目視で評価していては、改善サイクルに時間がかかってしまいます。
そこでYahoo!クラウドソーシングを利用して評価を委託しました。Yahoo!クラウドソーシングとは、すき間時間でできるお手軽なタスクをクラウドワーカーに公開することで、低コストかつスピーディに作業を委託できる公開プラットフォームです。本来時間がかかる適合性評価を手分けして迅速に行ってもらえるため、PDCAサイクルを高速に回すことが可能です。
今回は、さまざまな設定で学習したモデルをデプロイした時の検索結果をワーカーに示し、どちらがよりクエリに適した結果を出せているかを、クエリごとに判定してもらいました。
実例として、使える特徴量を全て使用したモデルとクエリとの適合性関連に限定したモデルの比較結果を掲載します。特徴量に制約を与えたモデルの方がより多くのクエリで適した検索結果を出せていることが、クラウドソーシングにより確認できました。
おわりに
以上がクエリと商品の適合性判定モデルを開発した一連の流れです。開発したモデルはABテストで検索結果の適合性やCVRなどの改善が確認され、無事本番運用されることになりました。
機械学習タスクにおいて、学習するラベルと本当に最適化したいものが異なることはよくあります。2つの間のバイアスの影響をどのように抑えていくかが、実サービスにおけるモデルの貢献を左右します。今回はそのわかりやすい例として、適合性判定を目的に、ユーザーアクションラベルを用いる事例を紹介しました。
機械学習エンジニアはモデルの数字的な精度を上げることも大事ですが、その先にある最終目的を達成できているか意識する必要があります。ヤフーを利用する全てのユーザー体験の向上を最終目的として、これからもサービス改善に取り組んでいきます。
こちらの記事のご感想を聞かせください。
- 学びがある
- わかりやすい
- 新しい視点
ご感想ありがとうございました