3

ここで理論的な質問です。ユーザーベースの CF とアイテムベースの CF ( Slope Oneの形式) の 2 種類の協調フィルタリングを実装したとします。

これらのアルゴリズムを実行するための優れたデータセットがあります。しかし、次の 2 つのことを行いたいと考えています。

  1. データ セットに新しい評価を追加したいと思います。
  2. 既存の評価を編集したい。

アルゴリズムはこれらの変更をどのように処理する必要がありますか (多くの不要な作業を行うことなく)。誰でもそれで私を助けることができますか?

4

2 に答える 2

1

どちらの場合も、戦略は非常に似ています。

ユーザーベースの CF:

  • 影響を受けるユーザーのすべての類似性を更新します (つまり、類似性マトリックスの 1 つの行と 1 つの列)。
  • 近隣が事前に計算されている場合は、影響を受けるユーザーの近隣を計算します (完全な更新のために、すべての近隣を再計算する必要があるかもしれませんが、おおよその解決策に固執します)

スロープワン:

  • 影響を受ける項目の頻度 (「追加」の場合のみ) と差分マトリックス エントリ (ここでも、1 行と 1 列) を更新します。

備考: 「類似度」が非対称の場合、1 つの行と 1 つの列を更新する必要があります。対称の場合、1 つの行を更新すると、対応する列が自動的に更新されます。Slope-One の場合、行列は対称 (頻度) であり、非対称 (差分) であるため、処理する場合は、1 つの行または列を更新し、もう 1 つの行または列を無料で取得する必要があります (行列ストレージがこのように機能する場合)。

これがどのように実装されるかの例を見たい場合は、MyMediaLite をご覧ください (免責事項: 私は主な作成者です): https://github.com/zenogantner/MyMediaLite/blob/master/src/MyMediaLite/RatingPrediction /ItemKNN.cs AddRatings() と UpdateRatings() から呼び出されるメソッド RetrainItem() に興味深いコードがあります。

于 2012-09-18T07:36:07.490 に答える
0

一般的なものはオンライン アルゴリズムと呼ばれます。

予測子全体を再トレーニングする代わりに、新しいデータのみを使用して「オンライン」で (使用可能のまま) 更新できます。

「オンライン勾配1予測子」をグーグルで検索すると、文献から関連するアプローチを見つけることができるはずです。

于 2012-09-18T07:38:15.463 に答える