協調フィルタリングアルゴリズム (例の理解)

        協調フィルタリング アルゴリズムは、アイテムのユーザー評価データを使用して、評価されていないアイテムに対するユーザーの好みを予測するレコメンデーション システム アルゴリズムです。このアルゴリズムは単純な考えに基づいています。つまり、2 人のユーザーが過去に特定のアイテムを同様に評価した場合、将来もそれらのアイテムを同様に評価する可能性が高くなりますしたがって、協調フィルタリングアルゴリズムは、ユーザー間の類似性を基礎としてユーザーのアイテム評価を予測し、ユーザーの興味の予測を実現しますアルゴリズムは、ユーザーベースの協調フィルタリングとアイテムベースの協調フィルタリングの 2 種類に分類されます。

1. ユーザーベースの協調フィルタリング

        ユーザーベースの協調フィルタリングアルゴリズムは、推奨システムのアルゴリズムであり、その基本的な考え方は、ユーザーの過去の行動データに基づいて現在のユーザーの興味に似ている他のユーザーを見つけ、これらのユーザー行動データを使用して現在のユーザーの興味を予測することです。 、他のユーザーに勧めるために、おすすめのアイテムです。

具体的には、ユーザーベースの協調フィルタリング アルゴリズムには次の手順が含まれます。

  1. ターゲット ユーザー、つまりアイテムを推奨する必要があるユーザーを決定します。

  2. 対象ユーザーに似た他のユーザーを見つけるには、ユーザー間の類似度を計算します。一般的に使用される類似度の計算方法には、コサイン類似度、ピアソン相関係数などが含まれます。

  3. 一定数の類似ユーザーが近隣セットとして選択され、類似度に従ってランク付けでき、上位 k 個の類似ユーザーが近隣セットとして選択されます。

  4. 未評価項目に対する対象ユーザーの評価の予測は、加重平均や加重和などの方法で計算できます。具体的には、周囲のユーザが評価した項目に対する対象ユーザの評価を重みとして加重平均または加重和演算を行うことができる。

  5. 対象ユーザーに評価されていないアイテムをレコメンドするには、予測評価に従ってソートし、上位 n 個のアイテムをレコメンド結果として選択します。

        ユーザーベースの協調フィルタリング アルゴリズムの利点は、ユーザーの履歴行動データを使用して推奨を行うことができ、より優れたパーソナライズされた効果が得られることです。ただし、新規ユーザーの場合、興味を正確に予測することが不可能であり、十分な履歴行動データが生成されるまで待つ必要がある、同時にコールドスタートが発生するなどのデメリットもあります。新たに追加された項目については、初期段階で効果的な提案ができないという問題があります。

2. アイテムベースの協調フィルタリングアルゴリズム

        アイテムベースの協調フィルタリング アルゴリズムは、アイテムに対するユーザーの評価データを使用してアイテム間の類似性を見つけ、ユーザーの過去の関心に類似したアイテムをユーザーに推奨する推奨アルゴリズムです。このアルゴリズムの中心的な考え方は、アイテムの類似性に基づいてアイテムに対するユーザーの評価を予測することです。

具体的には、項目ベースの協調フィルタリング アルゴリズムのプロセスは次のとおりです。

1. 項目の各ペア間の類似性を計算します。一般的な計算方法には、コサイン類似度やピアソン相関係数などがあります。

2. 履歴内でユーザーによって評価された項目を検索する 特定の対象ユーザーについて、履歴内で評価された項目のセットを検索する必要があります。

3.各項目の加重スコアを計算する

4. ユーザーにアイテムを推奨する

        ユーザーベースの協調フィルタリングアルゴリズムと比較して、アイテムベースの協調フィルタリングアルゴリズムは、アイテム数が多い場合でも類似度行列を迅速に計算でき、推奨結果がより安定して正確であるという利点があります。

3. 重要な公式

ピアソン相関係数:

ここに画像の説明を挿入

コサイン類似度:

ここに画像の説明を挿入

        ピアソンの相関係数とコサイン類似度は、ベクトル間の類似性を測定するために使用される 2 つの一般的な方法です。計算方法と適用シナリオにいくつかの違いがあります。

1. 計算方法:

        ピアソン相関係数は、標準偏差の積で割った共分散を計算することにより、2 つのベクトル間の類似性を測定します。値の範囲は [-1,1] で、1 は完全な正の相関を意味し、-1 は完全な負の相関を意味し、0 は相関がないことを意味します。

        コサイン類似度は、2 つのベクトル間の角度のコサインを計算することによって、2 つのベクトル間の類似性を測定します。値の範囲は [-1,1] で、1 は完全に類似していることを意味し、-1 は完全に反対であることを意味し、0 は類似性がないことを意味します。

2. アプリケーションシナリオ:

        ピアソン相関係数は、スコアリング データなどの数値特性を持つデータを扱う場合や時系列分析でよく使用されます。2 つの変数間の線形相関を測定し、連続変数に適しています

        コサイン類似度は、テキスト データやその他のスパース データ (レコメンダー システムでのアイテムの推奨など) を処理するためによく使用されます。2 つのベクトル間の角度と方向を測定でき、大規模なスパース データの処理に適しています。

予測スコアを計算します。

ここに画像の説明を挿入

分子は同じ製品に対する n 人の異なるユーザーの分析であり、分母は各ユーザーを個別に取り出して異なる製品を分析することです。

共起類似度:

        このうち、分母はアイテム i を好むユーザーの数、分子はアイテム i とアイテム j の両方を好むユーザーの数です。したがって、次の式は、アイテム i を好きで、アイテム j も好きであるユーザーの割合として理解できます (相関ルールと同様)

ここに画像の説明を挿入

分母 |N(i)| はアイテム i を好きなユーザーの数、分子 |N(i)∩N(j)| はアイテム i と j を同時に好きなユーザーの数ですが、 item j は非常に人気があり、Wij は非常に人気になるでしょう。は 1 に近いです。したがって、人気のあるアイテムを推奨しないように、次の式を使用します。

ここに画像の説明を挿入

ユーザー u のアイテム j への関心:

4. 例

4-1 ユーザーベースの協調フィルタリング - コサイン類似度

ここに画像の説明を挿入

ユーザー間の類似性の計算:

        ユーザー A とユーザー B の類似度 =(5*0+1*0+0*4.5+0*3)/(SQRT(5^2+1^2+0^2+0^2)*SQRT(0 ^2+0^2+4.5^2+3^2)) =0

        ユーザー A とユーザー C の類似度=(5*1+1*4+0*0+0*4)/(SQRT(5^2+1^2+0^2+0^2)*SQRT(1 ^2+4^2+0^2+4^2)) =0.307254934

        ユーザー B とユーザー C の類似度=(0*1+0*4+4.5*0+3*4)/(SQRT(0^2+0^2+4.5^2+3^2)*SQRT(1) ^2+4^2+0^2+4^2)) =0.38624364

コンピューティングの好み:

製品 3 に対するユーザー A の好み = ユーザー A とユーザー B の類似度 * 製品 3 に対するユーザー B の評価 + ユーザー A とユーザー C の間の類似度 * 製品 3 に対するユーザー C の評価 = 0*4.5+0.307254934*0 =0

製品 4 に対するユーザー A の好み = ユーザー A とユーザー B の類似度 * 製品 4 に対するユーザー B の評価 + ユーザー A とユーザー C の類似度 * 製品 4 に対するユーザー C の評価 = 0*3+0.307254934*4 =1.22901974

製品 1 に対するユーザー B の好み = ユーザー B とユーザー A の類似度 * 製品 1 に対するユーザー A の評価 + ユーザー B とユーザー C の類似度 * 製品 1 に対するユーザー C の評価 = 0*5+0.38624364*1 =0.38624364

4-2 ユーザーベースの協調フィルタリング - ピアソン係数

 ここに画像の説明を挿入

 類似度の計算: (例としてユーザー C 製品 4)

 製品 4 を高評価しているのはユーザー A とユーザー D だけであるため、近隣候補はユーザー A とユーザー D の 2 つだけです。

ここに画像の説明を挿入

ここに画像の説明を挿入

 予測スコアを計算します。

ここに画像の説明を挿入

 その他の手書きの派生作品:

ユーザーA:

 ユーザー B:

 ユーザーD:

 ユーザーE:

4-3 項目ベースの協調フィルタリング - コサイン類似度

ここに画像の説明を挿入

積コサイン類似度の計算結果は次のとおりです

製品 1 と製品 2 の類似度 =(5*1+0*0+1*4)/(SQRT(5^2+0^2+1^2)*SQRT(1^2+0^2+4) ^2))=0.428086345

製品 1 と製品 3 の類似度 =(5*0+0*4.5+1*0)/(SQRT(5^2+0^2+1^2)*SQRT(0^2+4.5^2+0) ^2))=0

....

コンピューティングの好み:

ユーザー A の製品 3 に対する好み = 製品 1 と製品 3 の類似度 * ユーザー A の製品 1 の評価 + 製品 2 と製品 3 の類似度 * ユーザー A の製品 2 の評価 + 製品 4 と製品 3 の類似度 度 * ユーザー A の製品 3 の評価積 4=0*5+0*1+0.6*0=0

製品 4 に対するユーザー A の好み = 製品 1 と製品 4 の類似度 * 製品 1 に対するユーザー A の評価 + 製品 2 と製品 4 の間の類似度 * 製品 2 に対するユーザー A の評価 + 製品 3 と製品 4 間の類似度 度 * ユーザー A の評価製品 4=0.156892908*5+0.776114*1+0.6*0=1.560578541

ユーザー B の製品 1 に対する好み = 製品 1 と製品 2 の類似度 * ユーザー B の製品 2 の評価 + 製品 1 と製品 3 の類似度 * ユーザー B の製品 3 の評価 + 製品 1 と製品 4 の類似度 度 * ユーザー B の評価積 4 = 0.47067872

もう一つの例:

共起行列Cは、ユーザ−アイテム対応表に基づいて計算される、2つのアイテムを同時にいいねするユーザの数を表す。

 類似度行列

補充:

1. 共起行列(2つのアイテムを同時にいいねしたユーザーの数)

 2. 類似性アルゴリズムの改善

        前の説明からわかるように、協調フィルタリングにおける 2 つの項目間の類似性は、それらが多くのユーザーの関心リストに表示されるためです。言い換えれば、各ユーザーの興味リストがアイテムの類似性に寄与します。では、各ユーザーの貢献度は同じなのでしょうか?
書店を経営し、Dangdang.com で書籍の 80% を購入し、自分で販売する予定のユーザーがいるとします。そして、彼のショッピングカートにはダンダンの本の 80% が入っています。ダンダンが 100 万冊の本を持っていると仮定すると、つまり 80 万冊の本を購入したことになります。ItemCF に関する前述の議論からわかるように、これは、そのようなユーザーの存在により、それらの間に類似性を持つ 800,000 冊の本、つまり 800,000 × 800,000 の密なマトリックスが存在することを意味します

John S. Breese は論文 1 で、ユーザー アクティビティの対数の        逆数である IUF (Inverse User Frequency) と呼ばれるパラメータを提案し、アイテムの類似性に対するアクティブ ユーザーの寄与は非アクティブ ユーザーの寄与よりも小さいはずだと考えました。アイテム類似性の計算式を修正するには、IUF パラメータを増やす必要があることが提案されています。

上記の式はアクティブ ユーザーにソフト ペナルティを課しますが、Dangdang の書籍の 80% を購入した上記のユーザーなど、アクティブすぎる多くのユーザーの場合、類似度行列が密になりすぎるのを避けるために、一般に計算します。関心のあるリストに含めず、類似性計算用のデータセットに含めないでください。

3. 類似度行列の正規化

        Karypis氏は研究の中で、ItemCFの類似度行列を最大値で正規化するとレコメンドの精度が向上することを発見しました。その研究によると、アイテム類似度行列 w が取得されている場合、正規化された類似度行列 w' は次の式で取得できることがわかりました。

実験によると、正規化の利点は、推奨の精度が向上するだけでなく、推奨の範囲と多様性も向上することです。

(メッセージ 2 件) ユーザーベースの協調フィルタリング アルゴリズム (userCF)_overlordmax のブログ - CSDN ブログ

https://blog.csdn.net/qq_52358403/article/details/112768902

協調フィルタリングアルゴリズム | JIANG-HS

「Hive」協調フィルタリング推奨システム - コサイン類似度 - 知る (zhihu.com)

アイテムベースの協調フィルタリング アルゴリズム (ItemCF) の原則とコードの実践 - ショート ブック (jianshu.com)

おすすめ

転載: blog.csdn.net/weixin_52093896/article/details/130307676