読者です 読者をやめる 読者になる 読者になる

St_Hakky’s blog

心理学/人事/就活/留学/データサイエンス/バイオインフォマティクス/日頃思ったことについて書きます。

協調フィルタリングについて調べたのでまとめる

協調フィルタリングについて調べる機会があったので、まとめておきます。

○導入時に考慮するべきこと

協調フィルタリングを導入する際に考慮するべき点について考える。

1. レコメンデーションシステムの導入形態(SaaS vs パッケージ製品 vs 独自開発)

それぞれメリットデメリットを考慮し、どれを選択するかを決める

2. データのスパース性

一般的に、データセット(ユーザー数×商品数)は巨大であり、そのままレコメンド処理を行うと膨大な計算時間がかかる。これを防ぐために、データのスパース性を利用して、共通の属性を持つ商品をまとめるなどの前処理が必要。PCAヤSVD(特異値分解)を使う。

3. スケーラビリティ(拡張性)

ユーザー数やアイテム数の増加に伴って、通常の協調フィルタリングでは計算量の問題で対応できないケースが発生する。よって、この点について考える必要があることは容易に想像ができる。。

以下の論文では、「incremental SVD CF algorithm」や「folding-in projection」の手法を用いることで、事前に次元圧縮し、レコメンデーション計算の結果に対し、購買履歴などのデータが追加された際にも、追加文のみを計算することで処理の高速化を図れることを示した。

Sarwar, Badrul, et al. "Incremental singular value decomposition algorithms for highly scalable recommender systems." Fifth International Conference on Computer and Information Science. Citeseer, 2002.


他にも、SparkのMLlibにも実装されているALSというアルゴリズムを、オーバーフィッティングを防ぐ形で改良がされているものが以下の論文で示されている。これは、Netflix Prizeで活用された方法。

Zhou, Yunhong, et al. "Large-scale parallel collaborative filtering for the netflix prize." International Conference on Algorithmic Applications in Management. Springer Berlin Heidelberg, 2008.

余談だが、優勝チームの論文はこちらから参照できる。

Netflix Prize: Forum / Grand Prize awarded to team BellKor's Pragmatic Chaos

4. 類似性

同じアイテムや、ほぼ同じアイテムが別々のアイテムとして登録されていた場合に、レコメンドの精度が落ちる。これらを解決するために、同義語のリストを作るか、もしくはLSIやLDAなどの方法を用いて、機会t系に同義語を抽出することで、同じ商品として扱えるようにするといったことが考えられます。

○運用中に考慮すべき事項

■Gray Sheep(灰色の羊)
■自分のためでない購買
■コールドスタート問題
■シリングアタック問題
■制約条件の導入

○ざっくりとした手順

1. ユーザの嗜好データを取得する
2. 嗜好データに基づき、ユーザ間の類似度を算出
3. ターゲットのユーザに対して、似ているユーザ を抽出
4. 似ているユーザが購入している商品をレコメン ド

協調フィルタリングの分類

分類 概要 手法
メモリベースの協調フィルタリング ユーザとアイテムの相関関係より、類似したユーザ同士の評価を基にレコメンデーションのルールを作成 ユーザベース、アイテムベース
モデルベースの協調フィルタリング 統計的なアルゴリズムを用いてユーザの購買行動をモデル化し、モデルに基づいてレコメンデーションのルールを作成 ベイジアンネットワーク、クラスタリング、回帰モデル
ハイブリッド協調フィルタリング コンテンツベースのフィルタリングと協調フィルタリングを混合させてレコメンデーションのルールを作成

・参考:A Survey of Collaborative Filtering Techniques : Table 2
・参考:個別「20130408003237」の写真、画像、動画 - EulerDijkstra's fotolife

○メモリベースの協調フィルタリング

メモリベースの協調フィルタリングは、利用者の購買データや思考情報と、アイテム情報を利用して、「ユーザやアイテム間の類似度」を算出することでレコメンドを行う方法。Amazonなどもこの方法を用いている。

また、メモリベースの協調フィルタリングは、さらに「アイテムベース」と「ユーザベース」に分かれます。


○ユーザー間の類似度の評価方法


類似度の種類
ピアソン相関係数
強制ピアソン相関係数
スピアマン順位相関係数
ケンドールの τ 相関係数
コサイン類似度
調整済みコサイン類似度

○評価方法

・ROC