RecSys Handbook Chapter3  3.1~3.2

あけましておめでとうございます。今年もよろしくお願いいたします。
推薦システムよりも自然言語処理を勉強する必要が出てきたので更新速度が落ちるかもしれませんが、週1で更新できればと思います。

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

ではさっそくChapter3に入っていきましょう！
* * *
##Chapter3  Content-based Recommender Systems: State of the Art and Trends
　本章では内容ベースの推薦システムについて詳しく述べる。単なる解説だけではなく、応用例や最新の動向についても紹介する。

###3.1 Introduction
　Webやデジタルの情報にアクセスできるようになったおかげで、ユーザーに合わせてモデル化された情報やパーソナライズされた情報の役割が非常に重要になっている。本章の目的は、内容ベースの推薦システムについて効果的なテクニックに焦点をあてて解説し、応用されている分野を紹介する。また、トレンドやこれからの方向性についても紹介する。

###3.2  Basics of Content-based Recommender Systems
　内容ベースの推薦システムでは、あるユーザーがこれまでに評価したアイテムの特徴を分析してそのユーザーの興味をモデル化することによって新しいアイテムを推薦する。ユーザーがアイテムに対して与えた評価がユーザーの好みを忠実に示すと仮定すれば、内容ベースの推薦システムは優れた精度を持つと言える。

####3.2.1  A High Level Architecture of Content-based Systems
　内容ベースの推薦システムの構造を以下の図に示す。推薦は主に3つのステップによって成り立つ。
![PCA.png](https://qiita-image-store.s3.amazonaws.com/0/28744/d292d2f7-d375-8dc9-278f-f563fa1aec00.png)

#####  Content Analyzer
　得られた情報が構造を持っていない場合、データ抽出の手法を用いて次の処理ステップに適した形で情報を抽出する必要がある。ここでは情報の構造化を行ってプロフィール作成につなげる。ここでは情報検索（Information Retrieval）などで用いる手法が用いられる。
ex)　キーワードやngramの抽出
#####  Profile Learner
　ユーザーの好みを示す代表値を抽出し、それらを用いて推薦に用いるユーザープロフィールを作成する。事前に与えられたユーザーの評価値だけでなく、ユーザー自身のフィードバックも活用する。　
#####  Filtering Component
  前ステップで作成したユーザープロフィールとアイテムの特徴を照らし合わせて推薦するアイテムを選択する。結果は論理値か連続値からなる行列で返される。推薦するアイテムの決定には、ユーザーの特徴から精製したベクトルとアイテムの特徴ベクトルのコサイン類似度などの指標を用いる。



　フィードバックには「explicit」と「implicit」の二つの種類がある。前者はシステムがユーザーに明示的なフィードバックを要請することで得られるものである。後者はユーザーの行動を監視することで得られるような特徴のことを指す。つまり、フィードバックはユーザーの監視と分析によって得られるのである。
　フィードバックの細かい種類は以下のとおりである。
・　like/dislike
　好き嫌いや関連するか関連しないかなどの2値であらわされるもの。
・　rating
　離散値であらわされる（１～５の5段階など）。また、数字ではなくsynbolicで表される場合もある。
ex) hot, lukewarm, cool
・　text comment
文章による評価。

　明示的な（explicit）フィードバックは数値やsynbolicによる表現はユーザーが認知するうえで負担を増加させ、ユーザーの心に十分訴えることができないかもしれない。しかし、シンプルであるという利点がある。逆に、明示的でない(implicit)フィードバックはユーザーに協力してもらわなくても済むという利点があるが、ユーザー以外の外部要因が絡むことがある。（ページを閲覧しているときに電話が鳴ればその分閲覧時間が延びるなど）
　図中のアクティブユーザーu_aに対してプロフィール（推薦に利用する専用データ）を作成するには、ユーザーが今までに評価したアイテムと評価からなる訓練集合TR_aが必要となる。この訓練集合を用いて教師あり学習を行い、Filtering Componentが推薦を行う。推薦の際にはアイテムのランク付けを行い、上位のアイテムをリストとして保存してユーザーに提供する。ユーザーの嗜好は時間と共に変化するため、ユーザーの最新情報やフィードバックを訓練集合に取り入れ、再び学習を行う。こうすることでユーザープロフィールを最新の状態に保つ。

####3.2.2  Advantages and Drawbacks of Content-based Filtering
　内容ベースの推薦システムには以下の長所と短所がある。
 **長所** （協調フィルタリングと比較して）
・ ユーザーとの独立性
　内容ベースであれば他のユーザーに推薦内容が依存しないが、協調フィルタリングでは他のユーザーの嗜好に依存している。
・ 透明性
　内容ベースの場合、ユーザーの嗜好とアイテムの特徴を推薦に用いるため、推薦の理由が分かりやすい。協調フィルタリングはブラックボックスであるから推薦の理由を明確に示すことができない。
・ 新しいアイテムに対して
　協調フィルタリングでは誰も評価していない新しいアイテムを適切に推薦することができないが、内容ベースでは可能。

 **短所**
・ 内容分析の限界
　アイテムが十分な情報を含んでいなければ推薦を行うことができない。そして、常に推薦するアイテムのドメイン知識が必要である。俳優や監督の名前を全く知らなければ映画の推薦を行うことはできないだろう。また、情報を多方面で評価することもできない。Webページの推薦を行う際にテキストデータのみをアイテムの情報として取り出した場合、画像や動画などの他の情報を無視していることになる。単語の出現頻度ではなく、単語などの情報が持つ影響力を計算できることが理想である。

・ 特化しすぎてしまう
　ユーザーの嗜好やこれまでアイテムに対して与えた評価をもとに推薦を行うため、似通ったアイテムしか推薦することができない。つまり、新鮮な印象を与えるアイテムを推薦することが難しい。これはセレンディピティに欠けるといえる。内容ベースの推薦システムが完璧であればあるほどセレンディピティを損なうことになるのである。

・ 新規ユーザーに対する推薦
　まだ十分な数のアイテムに対して評価を行っていないユーザーに対して十分な推薦を行うことができない。

　上記の短所については改善する方法があるが、改善方法については以降の節で紹介していく。

* * *
いかがだったでしょうか？
フィードバックやユーザーの最新の嗜好をどうやって推薦に取り入れるのか興味がありますね。
もう少し具体的な話が欲しいなぁと思います（贅沢）。
次回は内容ベースの推薦システムの最新情報や今回紹介した短所などの改善方法などを紹介します。
よろしくお願いいたします。