著者が導入した手順を説明しましょう(私が理解したとおり):
入力:
- トレーニング データ: ユーザー、アイテム、およびこれらのアイテムに対するユーザーの評価 (各ユーザーがすべてのアイテムを評価するとは限りません)
- 対象ユーザー: いくつかのアイテムのいくつかの評価を持つ新規ユーザー
- ターゲット アイテム: ターゲット ユーザーによって評価されていない、評価を予測したいアイテム。
出力:
これを一連のアイテムに対して繰り返すことができ、次に N 上位のアイテム (予測された最高の評価) を返します。
手順:
このアルゴリズムは、単純なKNNメソッドと非常によく似ています (すべてのトレーニング データを検索して、ターゲット ユーザーと同様の評価を持つユーザーを見つけ、それらの評価を組み合わせて予測 [投票] を行います)。
この単純な方法は、ユーザー/アイテムの数が増えると、うまくスケーリングできません。
提案されたアルゴリズムは、最初にトレーニング ユーザーをK個のグループ (項目を同様に評価した人々のグループ) にクラスター化することです。ここで、K << N ( Nはユーザーの総数) です。
次に、これらのクラスターをスキャンして、ターゲット ユーザーが最も近いクラスターを見つけます (すべてのトレーニング ユーザーを調べるのではなく)。
最後に、それらの中からl個を選択し、それらのl個のクラスターまでの距離によって重み付けされた平均として予測を行います。
使用される類似度の尺度は相関係数であり、クラスタリング アルゴリズムはバイセクティング K-Means アルゴリズムであることに注意してください。標準のkmeansを使用するだけでよく、ユークリッド距離やコサイン距離などの他の類似度メトリックも使用できます。
5 ページの最初の式は、相関の定義です。
corr(x,y) = (x-mean(x))(y-mean(y)) / std(x)*std(y)
2 番目の式は基本的に加重平均です。
predRating = sum_i(rating_i * corr(target,user_i)) / sum(corr(target,user_i))
where i loops over the selected top-l clusters
これが物事を少し明確にすることを願っています:)