情報推薦システムの基本

第4回 内容ベースフィルタリング

この記事を読むのに必要な時間:およそ 2 分

前回は,推薦システムの分類とその効果について紹介しました。今回は,前回紹介した推薦システムのうち,内容ベースフィルタリングについて説明します。

内容ベースフィルタリングのタスク

もし友人に本を勧める場合,その友人の好きな作家,ジャンル,価格帯などを考え,それにマッチした本を勧めると思います。このように,ユーザの嗜好プロファイルとアイテムの特徴プロファイルを考え,それらがマッチするアイテムをユーザに推薦する手法が,内容ベースフィルタリングです。内容ベースフィルタリングには,ユーザとアイテムのプロファイルを構築するというタスクと,それらをマッチングするというタスクがあります。

プロファイルの作成

アイテムのプロファイルの構築方法として,上に述べたように作家やジャンルなどのメタデータを利用することが考えられます。上の例では本でしたが,映画を推薦する場合では出演俳優や監督,ジャンル,洋画か邦画かなどの特徴,服を推薦する場合では,色やブランド,価格などの特徴を利用できるでしょう。

ユーザのプロファイルの構築方法としては,ユーザに好きな作家やジャンルを実際に聞くという方法があります。また,過去に購入したアイテムや好みのアイテムの特徴プロファイルから,ユーザの嗜好プロファイルを構築することもできます。過去に購入した本の作家やジャンルのリストや平均価格を,ユーザの嗜好プロファイルとする方法です。

文書から特徴プロファイルを作成

アイテムのメタデータを利用せずに,文書内に出現した単語を基にアイテムの特徴プロファイルを構築する方法もあります。メタデータは人手で付ける必要がありますが,文書内に出現した単語を利用すると,アイテムの特徴プロファイルを自動生成できるという利点があります。

単語を特徴として利用する方法としては, 文書を単語とTFIDFを用いて算出した各単語の重要度合いからなるベクトルで表現する方法が広く用いられています。TFIDFはある文書内での各単語の重要度合いを表す指標です。たとえば,⁠紹介」という単語は,この文書内に複数回出ていますが,ほかの文書でも一般的に用いられる単語であるため,この文書の特徴を表現する単語としてはふさわしくないでしょう。一方,⁠推薦」という単語は,この文書内で一般的に用いられる以上に頻出しているため,この文書を特徴付ける単語としてふさわしいでしょう。

TFIDF

このように,TFIDFは,ある単語が一般的な文書に出現する度合いと比較して,ある文書内で出現する頻度を考えた指標です。TFIDFはTF(Term Frequency:語の出現頻度)とIDF(Inverse Document Frequency:逆文書頻度)からなる指標であり,以下の式で求められます。TF値により,ある文書内で頻出する単語は重みを大きくします。一方,IDF値により,多くの文書に頻出する単語は重みを小さくします。結果として,TFIDF値が大きい単語ほど,その文書を特徴付ける単語として,重要とみなされます。

  • TF = 単語の文書内での出現数 / 文書内の全単語数
  • IDF = log(全文書数/単語を含む文書数)
  • TFIDF = TF * IDF

これにより,単語とそのTFIDF値からなるベクトル(たとえば,このページだと{⁠推薦⁠: 0.23, ‘技評⁠: 0.12, …})で,各アイテムを表現することが可能となります。

ユーザの嗜好プロファイル

ユーザの嗜好プロファイルは,過去に購入したアイテムや評価したアイテムのベクトルの平均を使用できるでしょう。例えば,{⁠推薦⁠: 0.23, ‘本⁠: 0.01, ‘プログラミング⁠: 0.12}と{⁠推薦⁠: 0.23, 'マーケティング': 0.44, ‘広告⁠: 0.04}という特徴プロファイルを持つWebページをお気に入りに入れたユーザの嗜好プロファイルは,2つのベクトルの平均を取って,{⁠推薦⁠: 0.23, '本': 0.005, ‘プログラミング⁠: 0.06, 'マーケティング': 0.22, ‘広告⁠: 0.02}と表すことができます。

類似度の判定

次に,ユーザの嗜好プロファイルにマッチする特徴プロファイルを持つアイテムを発見する方法について考えます。ユーザの嗜好プロファイルもアイテムの特徴プロファイルも,ベクトルとして表現できました。そのため,ベクトル間の類似度を計算することによって,ユーザの嗜好プロファイルにマッチしたアイテムを発見できます。類似度関数にはいろいろと種類がありますが,広く用いられているコサイン類似度を紹介します。コサイン類似度は0 ~ 1の値を取り,1に近いほど,両者の類似度が大きいことを意味します。

  • cos(vu, vi) = (vu・vi) / (|vu|2 + |vi|2)
    • vu:ユーザベクトル
    • vi:アイテムベクトル

また,類似度関数を利用するのではなく,推薦を「アイテムをユーザが好むアイテムと好まないアイテムに分類する問題」と捉え,ベイジアンフィルタ,クラスタリング,決定木,ニューラルネットなどの機械学習の手法を用いることもできます。

内容ベースフィルタリングの利点と短所

内容ベースフィルタリングの利点

内容ベースフィルタリングの利点としては,以下の2点が挙げられます。

  • 新しいアイテムや人気のないアイテムのように,ほかのユーザからの評価情報が少ないアイテムでも,推薦を行うことができます。たとえば,誰も評価を付けていない新作の映画でも,出演俳優,監督,ジャンルなどの情報を用いた推薦を行うことができます。

  • 推薦理由をユーザに提示することができます。内容ベース推薦では,ユーザの嗜好プロファイルとアイテムの特徴プロファイルの,どこがマッチしたのかがわかります。そのため,たとえば,⁠あなたが好きな◯◯が出演しています。」⁠⁠あなたが過去に3回購入した◯◯の新作です。」のように,推薦理由を明示的に述べることができ,ユーザへの訴求を強めることができるでしょう。

内容ベースフィルタリングの短所

一方,内容ベースフィルタリングにも短所が存在します。

  • ユーザが過去に好んだアイテムに近いアイテムばかりが推薦され,推薦にセレンディピティが欠けてしまうことが多くなってしまいます。同じジャンルや同じ作家のアイテムばかりが推薦されてしまうことになってしまい,ユーザにとって真新しいアイテムを推薦することが難しくなるでしょう。

  • ユーザの嗜好プロファイルとアイテムの特徴プロファイルを作成する際に,ドメイン知識が必要となります。どの特徴を利用するか判断するには,その分野の知識が不可欠です。たとえば,本の推薦を行う際には,作家やジャンルは,本の厚さや文字の大きさよりも良い特徴と言えそうです。しかし,これがマニアックな分野になると,その分野に精通した人でないと,どの特徴を利用するのが適切であるか,判断するのが難しくなってしまいます。

今回紹介した内容ベースフィルタリングは,⁠ユーザが過去に好んだアイテムに近いアイテムを推薦する手法」と言えます。次回は,⁠類似するユーザが好んだアイテムを推薦する手法」である協調フィルタリングを紹介します。

著者プロフィール

Coffee Yoshida

株式会社Gunosy共同創業者。専門はWebマイニング。Gunosyでエンジニアしている。

コメント

コメントの記入