はじめに
こんにちは、データサイエンス部・検索研究ブロックの諸田です。私たちはZOZOTOWNのおすすめ順検索の品質向上を目指し、機械学習モデルの継続的な改善に取り組んでいます。
私たちは現状の検索体験に関する課題を分析して、改善に役立てています。本記事では課題分析の取り組みの中で、商品の再表示に関する内容について紹介します。同じような課題を抱えている方にとって、仮説の立て方や仮説が正しいかどうかをデータから明らかにする流れの参考になれば幸いです。
目次
- はじめに
- 目次
- 「違う検索をしても同じ商品が出てくる」という課題
- 分析の前に仮説を立てる
- 仮説1: 購入される商品の方が各ユーザーのimp回数が少ないのではないか?
- 仮説2: 購入するユーザーの方がimp重複率が少ないのではないか?
- 仮説3: ヘビーユーザーの方がimp重複率が少ないのではないか?
- 仮説4: クリック率や購入率はimp回数とともに連続的に変動し、ある回数でピークを迎える山型になるのではないか?
- 購入される商品の方が何回も見られているという結果
- 「商品が再表示されている」というだけでは課題ではないかもしれません
- まとめ
- 終わりに
「違う検索をしても同じ商品が出てくる」という課題
ZOZOTOWNの検索を利用していて、違う検索をしても同じ商品が何回も上位に表示されているなと思ったことはありますか。
いくつか違った意図で検索を行なったとしても、その検索条件に合致する範囲内であれば同じ商品が表示されることは十分起こりうることです。一方で、アプリのレビューでは「繰り返し同じ商品が出てくる」「違う検索をしても同じ商品が出てくる」というご意見をさまざまなユーザーからいただいています。「これ以上は見ない」と思う商品が何回も表示されるのは、確かに不便さを感じます。ただ、一見すると「違う検索をしても同じ商品が出てくる」ということがそもそもどれくらいの課題なのかがわかりません。
そこで、「違う検索をしても同じ商品が出てくる」というのがそもそも課題なのか、課題であった場合どの程度大きな影響があるのかを分析しました。
以下、本記事の中では「違う検索をしても同じ商品が出てくる」課題を、検索において「商品が再表示される」課題と表現します。
分析の前に仮説を立てる
分析する前にまず、仮説を立てました。これは、分析の内容が発散しないようにあらかじめゴールを定め、限られたデータから結論を導けるようにするためです。さらに今回は、仮説を検証することで「商品が再表示される」課題がどの程度事業インパクトのある課題なのかを把握することを目的としています。
仮説を紹介する前に、本記事で使用する指標を説明します。「imp」はimpressionの略で、商品がユーザーに表示されることを指します。
「impした」と表現するときは、ユーザーが商品を一覧で見たことを指します。商品の表示はシステム側が行うため、ユーザー側は受動的にimpすることになりますが、ユーザーが商品を見たことを指すために「impした」と表現しています。
「imp回数」は、ユーザーが検索をしたときに商品が一覧に表示された回数を指します。例えば、以下の図ではAさんとBさんがそれぞれ検索をして、商品をimpしている様子を示しています。
図から表にすると以下のようになります。
ユーザー | 商品 | imp回数 | 購入したかどうか |
---|---|---|---|
A | a | 2 | あり |
A | b | 1 | なし |
A | ... | ... | ... |
B | a | 1 | なし |
B | e | 1 | なし |
B | ... | ... | ... |
「imp回数」は、ユーザーと商品の組み合わせに対して集計したものであることに注意してください。この場合、Aさんの商品aのimp回数は2回で、Bさんの商品aのimp回数は1回となります。
また、今回の分析では過去全期間のログデータではなく、ある一定期間のログデータを使用しています。細かく定義が必要な部分についてはその都度説明していきます。
本分析では以下の4つの仮説を立てました。
- 購入される商品の方が各ユーザーのimp回数が少ないのではないか?
- 購入するユーザーの方が購入しないユーザーよりimp重複率が少ないのではないか?
- ヘビーユーザーの方がライトユーザーよりもimp重複率が少ないのではないか?
- クリック率や購入率はimp回数とともに連続的に変動し、ある回数でピークを迎える山型になるのではないか?
それぞれの仮説について、仮説の立て方や分析結果を紹介していきます。
仮説1: 購入される商品の方が各ユーザーのimp回数が少ないのではないか?
まず、1つ目の仮説は「購入される商品の方が購入されない商品よりも各ユーザーのimp回数が少ないのではないか?」としました。ユーザーから見て購入した商品と購入しなかった商品でimp回数の違いを比較したかったからです。「商品が再表示される」ことが問題となる場合、購入される商品は再表示されにくいと想定しています。
ユーザーから見て購入した商品と購入しなかった商品を比較しやすいように、ある日付で購入を行なっているユーザーに対象を限定しました。したがって、購入実績のないユーザーが除外されているというバイアスがかかっていることに注意してください。購入した商品はある日付で購入した商品、購入しなかった商品は過去2週間に対象ユーザーが少なくとも1回impした商品かつ、ある日付から2週間は購入をしなかった商品としています。imp回数はある日付から過去2週間以内のimp回数を集計しています。ユーザーごとに購入した商品と購入しなかった商品それぞれでimp回数を集計し、平均や中央値を算出しました。
比較すると、購入された商品の方がimp回数の平均値・中央値は高いことがわかりました。
以下の図では、購入された商品と購入されなかった商品のimp回数の商品数の分布を棒グラフにしたものです。横軸は右に行くほどimp回数が多いことを示していて、縦軸は上に行くほど商品数が多いことを示しています。
図を見ても、平均値・中央値の傾向と同じように購入された商品の方がimp回数の多い傾向を示していることが分かります。購入されない商品のほとんどはimp回数1・2回であることから、検索結果にはある程度多様な商品が表示されていて、ユーザーも多様な商品の中から購入する商品を選んでいることが考えられます。
ここで「購入される商品の方が購入されない商品よりも各ユーザーのimp回数が少ないのではないか?」という仮説に対する答えはNoとなりました。
仮説2: 購入するユーザーの方がimp重複率が少ないのではないか?
2つ目の仮説は「購入するユーザーの方が購入しないユーザーよりもimp重複率が少ないのではないか?」としました。「商品が再表示される」ことが問題となる場合、「商品が再表示される」状況に出会いやすいユーザーは購入に繋がりづらいと想定しています。
商品が再表示されることに気づくのはユーザーからなので、ユーザー視点で見ることにしています。ここで、どの程度「商品が再表示される」状況に出くわすのかを計測するために、「imp重複率」というものを定義しました。
分析の前に「imp重複率」の定義を説明します。
例として、ユーザーAさんに注目します。ユーザーAさんは何回か検索をして、合計100回商品をimpし、そのうちユニークな商品数は80個だとします。すると式は以下のようになり、imp重複率は0.2となります。
改めて分析に戻ります。「購入するユーザーの方が購入しないユーザーよりもimp重複率が少ないのではないか?」を知るために、ユーザーごとにimp重複率を算出して比較をします。imp重複率の注意点として、検索を1回だけ行なったユーザーは商品が重複しないのでimp重複率が0になってしまいます。検索を1回だけ行うユーザーはある程度いますが、今回の調査対象ではないため除外します。
以下の図は、購入したユーザーと購入しなかったユーザーのimp重複率の分布を比較したものです。横軸は右に行くほどimp重複率が高いことを示していて、縦軸は上に行くほど該当のユーザー数が多いことを示しています。
図を見ると、どちらのユーザーも右に裾が長いロングテールの分布になっています。ただ、購入ありのユーザーの分布は途中で少し山のようになっていることがわかります。購入なしのユーザーの分布は0付近が最も多く、imp重複率が増えるごとに減っていく様子が見られます。よって、購入ありのユーザーはなしのユーザーよりもimp重複率が高い方に分布していることがわかります。
購入ありのユーザーの分布は真ん中が厚く、裾がなだらかに広がる形をしているように見えます。頂点となるimp重複率の付近に多くの購入ありユーザーがいるので、似たような検索行動(例えば、似たような商品を何回かの検索で比較検討するなど)をしているユーザーが多いのかもしれません。
以上の結果から、「購入するユーザーの方が購入しないユーザーよりもimp重複率が少ないのではないか?」という仮説に対する答えはNoとなりました。
仮説3: ヘビーユーザーの方がimp重複率が少ないのではないか?
3つ目の仮説は「ヘビーユーザーの方がライトユーザーよりもimp重複率が少ないのではないか?」としました。「商品が再表示される」ことが問題となる場合、ヘビーユーザーの方が結果的に同じ商品が表示されにくいような検索をしていると想定しています。
ヘビーユーザーとライトユーザーの定義は難しいですが、ここでは「検索をした日数」(以降、検索日数とします)で分けることにしました。検索日数が多いほどヘビーユーザー、少ないほどライトユーザーとします。検索日数ごとで比較することにしたのは、ユーザー群がライトユーザーからヘビーユーザーへ移行したときの分布の違いを捉えやすいと考えたためです。
以下の図では、検索日数ごとにユーザーのimp重複率の分布を箱ひげ図で描きました。検索日数は上に行くほどヘビーユーザーに近いことを示していて、imp重複率は右に行くほどimp重複率が高いことを示しています。
図から、検索日数が増えるほどimp重複率の分布は右にシフトしていることがわかります。つまり、たくさんZOZOTOWNで検索をする人ほどimp重複率が高いという結果になりました。改めて考えると、検索の回数が増えるほど同じ商品に遭遇する機会が自然と増えることは十分に考えられます。その結果、ヘビーユーザーほどimp重複率が高くなるのは妥当であるとも言えます。
仮説を立てた当初はユーザー側の再表示を避ける傾向にフォーカスして想定していました。この図を見たことがなかったためです。他の要因でimp重複率が増える可能性について十分に想定できていませんでした。図をきっかけに、ユーザー側の行動だけでなくシステム側の表示の仕方も影響が大きいと考えるようになりました。
図からはヘビーユーザーの方がライトユーザーよりも検索が上手で商品の再表示を避ける検索をしているのではないか、という疑問には答えられません。しかし、商品の再表示を避ける検索をしていたとしても、imp重複率は高くなってしまう傾向はある、ということは言えそうです。
以上から、「ヘビーユーザーの方がライトユーザーよりもimp重複率が少ないのではないか?」という仮説に対する答えはNoとなりました。
仮説4: クリック率や購入率はimp回数とともに連続的に変動し、ある回数でピークを迎える山型になるのではないか?
4つ目の仮説は「クリック率や購入率はimp回数とともに連続的に変動し、ある回数でピークを迎える山型になるのではないか?」としました。単純接触効果のようなものや何回か比較して購入するということも考えられるので、一定のimp回数まではクリック率や購入率が増加し、その後減少すると想定しています。もし「商品が再表示される」ことが問題で顕著に影響がある場合、imp回数が1回目のクリック率や購入率が最も高くて、その後減少していく様子が見えるかもしれません。また、クリック率や購入率の観点から最も良いimp回数が分かれば、一定の回数以上は表示しない方がよいという戦略も取れそうです。
分析としては、imp回数ごとのクリック率と購入率を折れ線グラフにします。クリック率と購入率はユーザー×商品ごとにimp回数を集計してから、imp回数ごとにクリック数や購入数を総数で割って求めます。
ここで、ユーザーから見てある商品が何回impしているかを決めるために、1回目のimpを定義します。過去全てのデータを集計したときの1回目のimpではなく、impしたタイミングから過去1週間impしていないときを1回目のimpと定義します。これにより、より実際のユーザーの行動に近い形でimp回数を定義できると考えています。定義上、過去1週間その商品をimpしていなければユーザーの検索意図はリセットされているとみなしました。imp回数の定義は1回目のimpから何回impしたかを数えたものです。今回のクリックや購入は、1回目のimpから初めてクリックや購入したものに限定しています。
以下の図は、imp回数による1回目のクリック率の推移を示したものです。横軸は右に行くほどimp回数が多いことを示していて、縦軸は上に行くほどクリック率が高いことを示しています。
ある程度の回数まではクリック率が上がり、そのあとは徐々に下がっている様子が見て取れます。1回目のクリック率が最も高い、という結果にはなりませんでした。
以下の図は、imp回数による1回目の購入率の推移を示したものです。横軸は右に行くほどimp回数が多いことを示していて、縦軸は上に行くほど購入率が高いことを示しています。
ある程度の回数まではクリック率が上がり、そのあとはほぼ一定に推移した上で徐々に下がっている様子が見て取れます。こちらも1回目の購入率が最も高い、という結果にはなりませんでした。
以上の結果から、「クリック率や購入率はimp回数とともに連続的に変動し、ある回数でピークを迎える山型になるのではないか?」という仮説に対する答えはYesとなりました。したがって、複数回のimpはある程度の回数まではクリックや購入に繋がっていると言えそうです。
購入率のピークから売上への影響度合いを考えてみる
購入率が最大になるimp回数がわかったので簡単に売上への影響度合いを考えてみます。まず、imp回数は一定となるという仮定とimp回数の割合は一定であるという強い仮定をおきます。
仮に購入率のピークがimp回数3回目にあるとして、以下のような状況を考えます。
imp回数 | 購入率 | 商品数 | 合計imp回数 |
---|---|---|---|
1 | 0.05 | 200 | 200 |
2 | 0.06 | 50 | 100 |
3 | 0.07 | 20 | 60 |
4 | 0.24 | 5 | 20 |
5 | 0.2 | 4 | 20 |
合計imp回数は、imp回数×商品数で計算しています。このとき1商品あたりの平均売上を1000円とすると、売上は以下のように計算できます。
ここで、imp回数3回目以降を全てimpしないようにしたとします。imp回数4回以上の合計imp回数は40回で、これをimp回数が1〜3回の割合に従って分配します。
imp回数1回の割合は
imp回数2回の割合は
imp回数3回の割合は
です。よって、追加されるimp回数はそれぞれ
となります。すると、以下のような状況になります(それぞれわかりやすくするために四捨五入しています)
imp回数 | 購入率 | 商品数 | 合計imp回数 |
---|---|---|---|
1 | 0.05 | 222 | 222 |
2 | 0.06 | 57 | 114 |
3 | 0.07 | 23 | 68 |
このときの売上は以下のように計算できます。
つまり、imp回数3回目以降をimpしないようにした場合、売上は16,400円から16,130円へと減少することになります。したがって、この例では4回以上impをしないようにする、という戦略を取ると仮定を置いた上での試算では売上が減少する結果となります。大部分がimp回数1回のimpになってしまい、分配する方のimp回数よりも購入率が低いことを考えると納得できます。
実際にZOZOTOWNのデータで算出してみても、単純に◯回以上は表示しないようにする、という戦略は仮定を置いた上での試算では売上が減少する結果となりました。
購入される商品の方が何回も見られているという結果
ここまで、4つの仮説の分析を見ていきました。分析結果を見ていくと、以下のようになります。
- 「購入される商品は購入されない商品よりも各ユーザーのimp回数が少ないのではないか?」
→No(購入される商品は各ユーザーのimp回数が多い傾向にある) - 「購入するユーザーは購入をしないユーザーよりもimp重複率が少ないのではないか?」
→No(購入をするユーザーはimp重複率が高い方に分布している) - 「ヘビーユーザーはライトユーザーよりもimp重複率が少ないのではないか?」
→No(ヘビーユーザーはimp重複率が高い) - 「クリック率や購入率の観点でベストなimp回数があるのではないか?」
→Yes(クリック率・購入率とともに1回目以外のimp回数が最大となる)
以上の結果からわかることは、購入される商品は何回かimpされることが多いということと、購入に至るユーザーやヘビーユーザーは商品を何回も見ている割合が高いということです。
今回の分析で因果関係はわからないので、何回もimpされることで購入をするようになる、と結論は出せません。ただ、購入されるような商品は何回もimpされているであろうという相関関係は明らかになった分析でした。
また、単純に一定の回数以上のimp回数をしないようにするという戦略は売上を減少させる可能性が高いこともわかりました。
「商品が再表示されている」というだけでは課題ではないかもしれません
最初に仮説を立てたときは「商品が再表示される」ことが課題である、という前提で作りました。したがって、購入されるような商品は何回もimpされているであろうという結果は直感に反したものであると考えられます。
細かい分析はできていませんが、購入時のユーザーやヘビーユーザーは同じようなクエリで検索していたり、比較検討したりすることが多いということも考えられます。依然「商品が再表示される」という課題はあると思いますが、今回の分析では捉えきれませんでした。
impされた商品が結果的にクリックされたか購入されたかはログデータから判断できます。ただ、何回かimpされた商品が比較のために必要な表示だったのか、不必要な表示だったのかはユーザーの意図がわからないこともあり、判別しにくい部分です。分析を続ける際には、また違った切り口で仮説設定や分析を検討しています。
また、分析を通して、「商品が再表示される」ことに関して仮説を設定して分析することは難しいなということも感じました。ログデータから集計できる範囲で答えられる、示唆のある仮説設定が求められると思いますが、今後も引き続き分析や改善を続けていく予定です。
まとめ
本記事では検索時に商品が再表示される課題の分析について紹介しました。もし似たような分析をされる方がいましたら、仮説の立て方や仮説から数値にどう落とし込むかなどを参考にしていただけたら幸いです。
終わりに
ZOZOでは、一緒にサービスを作り上げてくれる方を募集中です。ご興味のある方は、以下のリンクからぜひご応募ください。