RecSys Handbook Chapter3 3.3

前回分はこちら↓↓
http://qiita.com/ru_pe129/items/6f8fcf4ed24465b66706

今回は推薦手法の具体的な応用例の紹介が多いのですが、応用例は読んで満足するタイプなので省略します（おい）海外のサービスや研究に関するものばかりでピンと来ない上に、論文などの参照ばかりで大変なので（おい）

###3.3　State of the Art of Content-based Recommender Systems
　内容ベースの推薦システムはIR(Information Retrieval)とAI(Artificial Inteligence)の分野にまたがって研究が行われる。
　
　推薦システムの研究においてユーザーは少なからず情報探索のプロセスを踏むことと関連付けることができる。IRにおいてはユーザーがもたらす情報はクエリーの入力のみ、ただ一回である。しかし、IF(Information Filtering)ではユーザープロフィールから情報を抽出する。そして、推薦結果はそれらの情報のタイプや属性によって決定される。アイテムは各属性に与えられた数値などによって表現されるが、Webページやニュース、メールといった構造を持たないテキストを推薦する場合には適切ではない。このような場合はIRの研究に用いられるようなテキストモデリングの手法を用いることが望ましい。
　
　AIの側面としては、推薦システムのタスクはどうやってユーザーから過去のデータを抽出できるかという学習の問題に帰着することができる。ユーザー自身に情報を提供させるよりもユーザープロフィールから情報を得る方が推薦システムとしては望ましい。そこでMachine Learning(ML)の出番となる。MLを利用することによって推薦を行うための予測モデルを構築することができる。

####3.3.1  Item Representation
　推薦されるアイテムは特徴量の集合であると言える。映画であれば俳優や監督が特徴量として当てはまる。各アイテムが同じ属性を用いて表現される場合、属性が取りうる値は事前に分かっている場合が多く、アイテムは構造化された特徴を持つことになる。このような場合にはMLが役に立つ。
　
 内容ベースで情報をフィルタリングする場合、アイテムの説明はWebページやニュース、メールといった情報源からのテキストベースで行われている。テキストは構造化された情報とは異なり、構造化されていないうえに文章の曖昧さによって解釈が難しい。また、従来のキーワードによるユーザープロフィール作成では文字のマッチングを利用しているため、意味ベースで情報を抽出できないという問題がある。文字のマッチングのみで判断した場合、次の2つの問題の取り扱いができない。

1. 一つの表現で複数の意味を持つ場合
2. 同じ意味を持つ表現が複数ある場合

　前者のせいで誤った文書を選択するかもしれないし、後者のせいで適切な文書を選択できないかもしれない。
　意味的分析を行うことはこれらの問題に対する革新的なアプローチである。意味的分析を実現するためには、ユーザーの情報を抽出するために辞書などの知識を用いることが必要となる。

#####3.3.1.1  Keyword-based Vector Space Model
　ほとんどの内容ベースの推薦システムはキーワードマッチングやTF-IDFを用いたVSM(Vector Space Matching)を利用している。VSMによる文書表現には、単語の重みづけと文書間類似度の比較という二つの問題が生じる。もっとも一般的に用いられているTF-IDFによる重みは経験に基づいて定義された指標である。(以下TF-IDFの解説なのでちょっとサボります…。TF-IDFは「たくさん出現する　かつ　出現する文書の少ないレアな単語ほど重要だよね」っていう指標ですよね。）

　各次元が文書コレクションに登場する各単語のTF-IDF値であるベクトルを文書ごとに考える。2つの文書についてこのベクトルを用いて類似度を求める。類似度の指標としてはコサイン類似度が最も一般的に用いられている。VSMを用いた内容ベースの推薦システムでは、ユーザーやアイテムの特徴をベクトルとして表現し、コサイン類似度を求めることで推薦を行う。

#####3.3.1.2　Review of Keyword-based Systems
　キーワードをベースとして用いたシステムは比較的短期間で発達し、ニュースや音楽、Eコマースなどの多くの分野で応用された。しかし、それぞれの分野について問題を抱え、その解決方法もさまざまである。
　（ニュース、本、音楽の推薦に関する事例が紹介されてますが、省略w）
　
　近年のキーワードベース推薦システムの分析によって明らかになったのは、「情報がたくさんあれば正確な推薦ができる」ということである。しかし、キーワードベースの推薦システムのは知恵が欠如している。ただ単に単語のマッチングをしているだけなのである。たとえば、「French impression」に関するアイテムを推薦するとき、キーワードベースの場合には「French」や「impression」とい単語を含んでいる文書を見つけるだけで、意味については考慮することができない。内容ベースの推薦システムをさらに進化させるためには意味的解釈を付加する工夫が必要なのである。

#####3.3.1.3  Semantic Analysis by using Ontologies
　意味的分析を行うことによって、ユーザーの情報以外の知識にも基づいたより正確なユーザープロフィールを作成することができる。自然言語の解釈を可能にする文化や言語の背景知識を推薦システムに付加することが意味的分析を行うモチベーションとなる。推薦システムに意味的解釈を付加するうえで以下のことがポイントとなる。
・ 必要となる知識
・ アイテムを表現する際にどのような手法を用いるか
・ ユーザープロフィールはどのような内容であるか
・ アイテムの特徴をユーザープロフィールとどうやってマッチングさせるか
（意味的分析の具体的な利用例がたくさん紹介されていますが省略…）
　
　言語知識の役割としてはWordNetが広く用いられている。しかし、完全な文脈理解のためにはWordNet単体の利用だけでは不十分である。やはりドメイン知識、つまり推薦を利用する分野の知識が必要となるのである。言葉の概念や言葉間の関係などを知らなければ正確な文脈理解を実現することはできない。
　
　従来の内容ベース推薦システムと比較すれば、言語知識やドメイン知識を用いた内容ベース推薦システムは優れた推薦を行うことができると結論付けることができる。

#####3.3.1.4  Semantic Analysis by using Encyclopedic Knowledge Sources
　単なるbag of wordsモデルを用いるのではなく、より情報を持った特徴を与えることで一般常識やドメイン知識を付加することは自然言語処理を改善することにつながる。したがって、ユーザー自身の情報だけでなく、外部から手に入れた情報を利用することは有効である。現在はWikipediaやYahoo! Web Derectory, Open Directory Project(ODP)などを利用することができ、非常に多くの情報を手に入れられるようになった。特に、Wikipediaは多くの言語に対応していることや更新の手軽さなどを考慮すると素晴らしい情報源である。しかし、我々の知る限りではworld fact(つまり、手に入れられるすべての知識ってことですかね)を利用した内容ベース推薦システムは存在しない。しかし、文脈解析やテキスト抽出、意味関係の分析などでは良い結果を残しており、今後期待の持てる研究領域であると思われる。（研究例をここでも省略しました…）

####3.3.2 Methods for Learning User Profiles
　ユーザープロフィールを抽出する際に役に立つのがMachine Learning(ML)である。テキスト分類において、訓練文書（事前に属するカテゴリーが分かっている文書）を用いて各カテゴリーの特徴を学習することでテキスト分類器を生成する。ユーザープロフィールの学習は、テキストの興味があるかないかの2値分類問題に帰着することができる。

####3.3.2.1 Probabilistic Methods and Na¨ıve Bayes
　ナイーブベイズはベイズ分類の手法の一つであり、事前に分かっている情報から確率モデルを生成する手法である。文書をd、クラスをcと表すとき、文書dがクラスcに属する（事後）確率は以下の式で表すことができる。

```math
P(c|d) = \frac{P(d|c)P(c)}{P(d)}
```

この確率が最大になるようなクラスcが文書dの属するクラスであると判断する。分母についてはクラスに関係なく同じ値をとるので通常は無視する。分子のP(d|c)とP(c)は事前に分かっているものとするが、わかっていない場合は訓練文書を用いて推定する。しかし、この方法は十分であるとはいえない。なぜなら、同じ文書に再び出会うことは間が得にくいからである。ナイーブベイズでは単語やクラスは互いに独立であるという仮定を置くことでこの問題を克服している。もちろん、現実世界では各単語やクラスが完全に独立して存在することはありえない。しかしナイーブベイズ分類器はテキスト分類において精度が良いことが知られている。
　
　ナイーブベイズ分類器は多変数ベルヌーイモデル（multivariate Bernoulli event model）と多項モデル（multinomial event model）の二つに分けることができる。いずれの場合も文書をボキャブラリーのベクトルとして扱う。つまり、ベクトルの各成分は文書に出現する単語に対応している。前者は単語が出現するかしないかを0か1で表現し、後者は単語の出現回数をカウントする。どちらのモデルの単語の出現順序が持つ情報を失っていることには注意しなければならない。経験的には多項モデルの方が多変数ベルヌーイモデルを上回る結果を残す。特にボキャブラリーのサイズが非常に大きい場合にこの傾向が顕著に出る。
　多項モデルではP(c|d)は以下の式によってあらわされる。

```math
P(d_{i}|c_{j})=P(c_{j})\prod_{w\in V_{d_{i}}}P(t_{k}|c_{j})^{N(d_{i},t_{k})}
```
多項モデルの場合は全文書のボキャブラリーではなく、分類を行う文書のボキャブラリーのみを扱うことに注意しなければならない。

　ナイーブベイズ分類において事前確率の推定は非常に重要な問題である。しかし、ボキャブラリーに含まれる一方で文書中に出現しない単語については確率が0になってしまうことがあり、このような場合にはスムージングを行う必要がある。もっとも一般的なスムージングの手法はラプラススムージングである。
　ナイーブベイズ分類は他の統計手法に比べると確率の正確さには劣る。しかし、確率の正確さよりも分類結果に重点を置くのであれば驚くほど良い結果を得られることが分かっている。ただ良い結果を得られるだけでなく、他の分類手法に比べて効率が良いこともナイーブベイズの長所である。
　
　多項モデルが多変数ベルヌーイモデルに比べて良い精度を持つと述べたが、以下の条件では良い結果を得ることができない。

1. 各文書の長さがバラバラである。→単語の出現回数は文書の長さに依存するから？例えば、100字の文書と20000字の文書では一つ一つの単語が持つ情報の重みが異なり、同じ事前分布を使って分類することは適切でない？
2. あまり出現しないカテゴリーが登場した場合

　特に、ユーザープロフィールなどのテキストは長さの予測が難しい。また、ユーザーは「like」や「interest」といった内容の学習からは恩恵を直ちに受けることができるが、「dislike」といったネガティブな情報の学習からはすぐに恩恵を受けることができない。したがって、訓練集合はプラスイメージを持った内容に偏ってしまうという問題点もある。（いいねやお気に入りはあっても、よくないね、クソ喰らえっていうボタンは見当たらないといったことでしょうか）

#####3.3.2.2 Relevance Feedback and Rocchio’s Algorithm
　情報検索の分野における、これまでに入力されたクエリーを用いてユーザーが入力したクエリーを改善する手法を適合性フィードバックという。
　
　適合性フィードバックを内容ベース推薦システムのテキスト分類に用いる場合、Rocchio's formulaという手法が一般的に用いられている。ユーザーのニーズに合わせて推薦システムが返した結果を評価してもらうというのが基本的な考え方である。ユーザーからのフィードバックを利用することでユーザープロフィールとアルゴリズムの両方を改善することができる。
　
　ロッキオの手法では文書をベクトルとして表現するため、類似した文書は類似したベクトルで表現される。ベクトルの各要素は文書に表れる単語に対応しており、TF-IDFによる重みで表現される。文書ベクトル（positiveとnegativeの両方）から各クラスごとにプロトタイプベクトルを計算する。そして、未分類の文書に対しては文書ベクトルとプロトタイプベクトルの類似度をクラスごとに計算することで分類を行う。
　より形式的な話をしよう。ロッキオの手法では、分類を行うための以下のような重みベクトルを生成する。以下の式はクラスiに対する重みベクトルである。

```math
\vec{c_{i}}=\langle \omega_{1i},...,\omega_{|T|i} \rangle
```
Ｔは語彙の数、つまり訓練集合に存在する単語の種類の数を表す。各成分ω_kiは以下の式によって学習を行う。

```math
\omega_{ki}　=　\beta\sum_{d_{j}\in POS_{i}}\frac{\omega_{kj}}{|POS_{i}|}-\gamma\sum_{d_{j}\in NEG_{i}}\frac{\omega_{kj}}{|NEG_{i}|}
```

w_kjはドキュメントd_jにおける単語t_kのTF-IDF値である。POS_iとNEG_iは訓練集合におけるクラスc_iの文書集合である。また、βとγはpositiveな訓練集合とnegativeな訓練集合の相対的重要度を調節するためのパラメーターとなっている。ロッキオの手法を用いた分類は、理論的な証明はないものの、優れた精度を得られることが知られている。
　適合性フィードバックは様々な内容ベース推薦システムに用いられている。

#####3.3.2.3  Other Methods
　内容ベース推薦システムに使われているアルゴリズムの中から、これまでに紹介した手法以外のアルゴリズムを紹介する。
　
・ 決定木
　ノードに単語、ブランチに条件文、葉にカテゴリーを与えた木構造の分類器である。ノードにどの単語を割り当てるかについては情報量やエントロピーを基準にして考える。
・ Decision rule classifier
　決定木に似た分類器であるが、Decision rule classifierの場合、ルールがすべての文書が満たすようなベストルールを選択しようとする。したがって、この分類器は決定木を用いた分類器よりもコンパクトになる。
・ Nearest neighbor
（既出なので省略）

* * *
いかがだったでしょうか？
今回は文字ばかりですごく長くなってしまいました。英語力の不足なのか知識の不足なのか、アルゴリズムを理解できない部分が増えてきました。修正と追加を適宜行いたいと思います。
次回は流行と今後の研究、まとめを述べて3章が終わりになります。

よろしくお願いします。