データ分析基礎知識

“分析力をコアとするデータソリューションカンパニー”
株式会社ALBERTが、データ分析にまつわる基礎知識をわかりやすく解説します。

協調フィルタリングとは

現在、多くのECサイト等で用いられている「この本を見ている人はこの本も見ています」や「このDVDを買った人はこのDVDも買っています」というレコメンドエンジンは、商品間の共起性を定義し提示するものですが、パーソナライズされているわけではなく、誰が訪れても同じ結果しか出ないものが主流でした。
協調フィルタリングとは、ある対象者が商品をチェックまたは購入したデータと、対象者以外がチェックまたは購入したデータの両方を用い、その購入パターンから人同士の類似性、または商品間の共起性をアソシエーション分析(相関分析)で解析し、対象者個人の行動履歴を関連づけることでパーソナライズされた商品を提示することができる手法です。前提となっている仮説は「自分に似ている人の評価と自分の評価は似ているだろう。従って、自分は持っていないが自分に似ている人が持っている商品は欲しいに違いない!」というものです。従って、多くの顧客の中から自分に似ている人々を探しだし、その人々が持っていて自分が持っていないものをおすすめするのが基本となっています。

協調フィルタリングは、商品スペックの関連性や商品閲覧の共起性だけで推薦するわけではなく、購買データ等を基に人と人の類似性を定義し、自分が似た人が持っていて自分が持っていない商品を推薦するのが基本なので、意外性のある商品を提示すること(セレンディピティ)もでき、よりコンバージョンレートのアップが見込まれる手法です。

一般的な協調フィルタリングのアルゴリズム

下表は、あるオンラインショップにおいて、各顧客と商品の購買履歴を示しているものとします。データは、各顧客が商品を買った場合を「1」、商品画面が顧客に表示されたが顧客が買っていない場合を「0」、商品が顧客に表示されていない場合は買ったか買わないかのデータがないので「−」(グレーの網掛け)として表しています。
顧客Xに対して、次にどの商品を推薦するべきかを決めていきたいと思います。

表1.購買履歴データ
購買履歴データ

まず、顧客Xに近い好みを持つ顧客を探す必要があります。ここでは、類似性を「相関係数」という尺度を用いて表現することとします。例えば、顧客Xと顧客Aの「近さ」は、顧客Xにも顧客Aにも表示されている商品(顧客Aの行にも、顧客Xの行にも共通して数字が入っている列)の0、1データに対する相関係数とします。ここでは0.167となりましたが、この「相関係数」は、顧客Aと顧客Xが同じ商品を買っていたり、あるいは同じ商品を表示されたのに買っていなかったりする傾向が強ければより高い値となります。
さて、顧客Xとの相関係数を見ると、顧客C、顧客D、顧客Eの3人の相関係数が0.5以上で高いことがわかりました(赤枠)。仮に相関係数が上位の3人の平均値(「−」の場合は計算から除外する)で顧客Xへの推薦度合いを決めるとすると、「商品5」が顧客Dも顧客Eも購入している商品として、平均値1.0と最も推薦度合いが高いので、顧客Xに次に推薦すべき商品は、「商品5」であることがわかります。

より高度な協調フィルタリングのアルゴリズム

上記で説明したデータは、購入した場合は「1」、購入しなかった場合は「0」、表示されていない場合は「−」で表しました。つまり、その商品が評価が高かった場合は「1」、評価が低かった場合は「0」の2段階での評価データを扱っていたといえます。しかしよく考えてみると、購入したが読んでみたら面白くなかったとか、使ってみたら不満足だったという場合もありますし、また他人へのプレゼントであって自分の好みではないかもしれません。さらに、購入はしなかったものの、実は非常に気に入っているが既に持っているので買わなかったということもあるかもしれません。
このように考えていくと、1/0の2段階の評価だけで、推薦商品を決めることには問題があるように思われます。より精度が高いレコメンデーションを実現するためには、商品評価の観点を入れたほうがよいということになります。
市場調査の回答方式で、チェックボックス(□にレ点と入れて)で好き嫌いを回答させるものと、好きから嫌いまでを5段階にして、ラジオボタン(○)で回答させるものがありますが、単純に好き嫌いを1/0で回答させたほうが回答は楽ですが、分析することを考えると5段階評価でデータを取得したほうが、より精度が上がるのと同じことだといえます。

元々協調フィルタリングという手法は、他のユーザー評価を基に顧客にアイテムを表示するもので、その評価は5段階等で取っていました。代表的な協調フィルタリングのシステムとしてResnickらのGroupLensがあります。(応用例:映画推薦システム
GroupLensは、Usenetの記事を対象としたシステムで、顧客が興味を持つであろう記事を推薦するものです。顧客は記事を読んだ後にその記事を5段階で評価し、システムはその評価を基に顧客間の相関を算出し推薦記事を提示する方法で、顧客の明示的評価を前提としていました。
その後、アクセス履歴や購買履歴などの暗黙的評価を利用するシステムが出現し、現在よく知られている購入したか、しないかの1/0データでの協調フィルタリングが主流になったと考えられます。

レコメンデーションが最も進んでいると言われるamazonでは、この明示的評価をする協調フィルタリングが用いられています。顧客は嫌い/好きではない/普通/好き/大好きの5段階評価ができるようになっており、この評価データを基にし、高度にパーソナライズされたおすすめを実現しています。

ALBERTでは、5段階からさらに進んだスライダーでの評価を実現しており、KDDI研究所で培った高度な協調フィルタリングのアルゴリズムを用いた協調フィルタリングエンジンを提供しています。

スライダーを用いた商品評価イメージ
スライダーを用いた商品評価イメージ

この、より高度な協調フィルタリングのアルゴリズムを、さきほどの1/0データと同じ表で比較してみましょう。 下表は、あるオンラインショップにおいて、各顧客と商品の購入後の評価を示しているものとします。データは、各顧客が商品を買って評価が高かった場合を「5」、低かった場合を「1」として5段階で評価しています。商品が顧客に表示されていない場合は買ったか買わないかのデータがないので「−」(グレーの網掛け)として表しています。
顧客Xに対して、次にどの商品を推薦するべきかを決めていきたいと思います。

表2.評価値付き購買履歴データ
評価値付き購買履歴データ

まず、顧客Xに近い好みを持つ顧客を探す方法は、前記の1/0データの場合と同じ相関係数法を用います。
顧客Xとの相関係数を見ると、顧客C、顧客D、顧客Eの3人の相関係数が0.5以上で高いことがわかりました(赤枠)。相関係数が上位の3人の平均値(「−」の場合は計算から除外する)で顧客Xへの推薦度合いを決めるとすると、「商品5」が顧客Dも顧客Eも購入している商品として、平均値4.5と最も推薦度合いが高く、よって、顧客Xに次に推薦すべき商品は「商品5」であることがわかります。

実際の購買データの場合、顧客数も商品数もこの事例の比ではなく大きい。顧客同士の相関係数や、おすすめ度を算出する上で、評価データを用いたほうが精度が高いことは自明の理であるといえます。評価データを取得するには、それなりのモチベーションが必要となるので、何らかの工夫が必要となりますが、よりパーソナライズされた推薦を実現するためには、こういった明示的評価を前提とした協調フィルタリングが用いられることが多いです。

このページをシェアする

About

ALBERTについて