推薦システムとは何か、その基本原理 ユースケース
コンテンツ型推薦システム
各映画の内容とユーザーが評価した映画から、各ユーザーがどの程度映画を好きかを判断し、見ていない映画に対する各ユーザーの評価を予測する。
映画内容マトリックス X * ユーザ嗜好マトリックス θ = 映画評価尺度
では、ユーザー嗜好行列θ(ユーザーが異なる種類の映画をそれぞれどれくらい好きか)はどのように解くのでしょうか?
ユーザー嗜好行列θのコスト関数
ここで、正則化項はオーバーフィッティングを防ぐためのものである。
- メリット
(1) コモディティのコールドスタート問題がないこと
(2) 推奨製品に含まれる属性を明示的に伝えることができる
- デメリット
(1) コンテンツの徹底的な分析が必要
(2) ユーザーを驚かせることはほとんどない
(3)ユーザーにとってコールドスタートの問題あり
協調フィルタリングに基づく推薦システム
映画評価表とユーザ嗜好行列θから映画内容行列Xを導出し、映画内容行列Xにユーザ嗜好行列θを乗じることで、完全な映画評価表が得られる。
そこで、協調フィルタリングによる映画推薦では、各ユーザーの映画ジャンルごとの好みと、そのユーザーが既に評価した映画から、各映画の内容を推測することで、各ユーザーが見ていない映画に対する評価を予測することにしています。
では、映画の内容行列Xを解くにはどうしたらよいのでしょうか。
映画コンテンツ行列Xのコスト関数。
ユーザー嗜好行列Xが得られる。
(1)映画に対するユーザーの評価を得るためにオンラインアンケートを行うが、すべてのユーザーが記入するとは限らないし、記入したとしても必ずしもすべての情報が正しいとは限らない。
(2) 映画の内容行列Xとユーザーの嗜好行列θの両方を解くより効率的な方法によって
前述により、映画内容行列Xとユーザー嗜好行列θ、それらの第1項は同じであることがわかるので、この2つの式を1つにまとめてXとθの両方を解くことができます。 この方法の利点は、映画のユーザー評価のみを収集することです。
Xとθをランダムに初期化し、勾配降下法などの最適化アルゴリズムで解くことで、このコスト関数を最小化することが目的である。
(1) アイテムに基づく協調フィルタリング
まず製品間の類似性を計算し、製品間の類似性に基づいてユーザーに推薦する。例えば、ユーザーがハードディスクを購入した場合、ハードディスクとUSBドライブは類似性があるため、USBドライブをユーザーに推薦する可能性が高い。
アイテムに基づく協調フィルタリングでは、ユーザーのアイテムに対する評価だけが必要で、アイテム間の類似度は最初に計算する必要があります。
項目間の類似度を測るには?
画像
商品間の類似度を算出した後、ユーザーの商品評価を予測することができます。
画像
: 製品iの他製品との類似性
画像 ユーザーuの他の製品への評価
分母:アイテムiに類似するアイテムの類似度の総和
は、「ユーザーuの商品iに類似する他の商品に対する評価から、ユーザーuの商品iに対する評価を推測する」と表現される。ユーザーuによるすべての商品の予測評価が判明すると、それらをソートし、最もスコアの高い商品を選択してユーザーに推奨する。
(2) ユーザーベース協調フィルタリング
基本的な考え方 まず、ユーザーAに対して、そのユーザーに似たユーザーを見つけ、他のユーザーが他の商品を買っていることを確認し、他のユーザーが買った商品をユーザーAに推薦する必要がある。
このとき、アイテムに基づく協調フィルタリングと同様に、ユーザー間の類似性を測定する必要があります。
画像
: ユーザーuによる製品iの評価
画像 : この商品に対するユーザーuの評価の平均値
ユーザー間の類似度を計算した後、ユーザーのアイテムに対する評価を予測することが可能である。
製品評価の計算式。
この式は、ユーザーuの商品iに対する評価を、ユーザーuと類似した他のユーザーの商品iに対する評価から推測することを示している。ユーザーuによるすべての商品の予測評価が判明すると、それらをソートし、最もスコアの高いいくつかの商品を選択してユーザーに推奨する。
- {を使用します。
協調フィルタリングを用いた推薦システムの利点。
(1) 個々のユーザーの履歴から商品の品質を推測することができること
(2)商品に関する専門的な領域知識を必要としない。
- {を使用します。
デメリット
(1)コールドスタートの問題
(2)グレイシープ
(3) 協調フィルタリングの複雑さは商品数、ユーザー数の増加に伴い増加する
(4) 同義語の効果
(5) シリングアタック:競合他社の商品で具体的に低い点数をつけ、自社の商品で高い点数をつけること
日常生活の中で、直接的・間接的に推薦システムに接し、その利便性を享受してきたと思います。以上、レコメンドシステムの紹介でしたが、今後ともBinaryDevelopをよろしくお願いします!(笑)
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
webインタビュー よくある質問 httpキャッシュの解決関連
-
IPv6とIPv4のアプリケーションの分析概要と相違点
-
Java、C/C++、JavaScript、PHP、Pythonはどのような開発に使われているのですか?
-
asp の RecordSet オブジェクトを使用した JScript での GetRows
-
直近の10人の訪問者を表示するには?
-
ASPページにExcelファイルを入れるには?
-
レコードセットから色付きXMLファイルへの変換方法
-
オンデマンドで曲をオンライン実装する方法は?
-
データベースのクエリ結果をページ内に表示するには?
-
あなたのウェブサイトの画像に違法なリンクを貼られないようにするには?