0

予測に非負の行列因数分解と非負の最小二乗法を使用しています。与えられたデータの量に応じて、予測がどれほど優れているかを評価したいと考えています。たとえば、元のデータは

original = [1, 1, 0, 1, 1, 0]

そして今、与えられたデータが不完全な場合に元のデータをどれだけうまく再構築できるかを確認したいと思います:

incomplete1 = [1, 1, 0, 1, 0, 0],
incomplete2 = [1, 1, 0, 0, 0, 0],
incomplete3 = [1, 0, 0, 0, 0, 0]

そして、大きなデータセットのすべての例でこれを実行したいと考えています。ここでの問題は、元のデータが正のデータの量で変化することです。上の元のデータでは 4 ですが、データセット内の他の例では多かれ少なかれ可能性があります。4 つのポジティブが与えられた評価ラウンドを作成するとしますが、データセットの半分には 4 つのポジティブしかなく、残りの半分には 5、6、または 7 があります。4 つのポジティブがある半分を除外する必要があります。 「予測」をより良くしますか?反対に、データを除外した場合はトレーニングセットを変更します。私に何ができる?それとも、この場合はまったく 4 と評価すべきではないでしょうか?

編集:

基本的に、入力行列をどれだけうまく再構築できるかを見たいと思っています。簡単にするために、「オリジナル」は 4 本の映画を見たユーザーを表すとします。そして、ユーザーが実際に視聴したたった 1 つの映画に基づいて、各ユーザーをどれだけ正確に予測できるかを知りたいのです。たくさんの映画の予測を取得します。次に、ROC と Precision-Recall 曲線をプロットします (予測の上位 k を使用)。このすべてを、ユーザーが実際に見た n 個の映画で繰り返します。n ごとにプロットで ROC 曲線を取得します。たとえば、ユーザーが実際に見た 4 つの映画を使用して、ユーザーが見たすべての映画を予測するところまで来ましたが、その 4 つだけを見た場合、結果が良くなりすぎます。

私がこれを行っている理由は、システムが合理的な予測を行うために必要な「視聴した映画」の数を確認するためです。すでに 3 本の映画を視聴しているときに良い結果しか返されない場合、私のアプリケーションではあまり良くありません。

4

1 に答える 1

1

何を測定しようとしているのか、そして何を入力しているのかを明確にすることが最初に重要だと思います。

入力行列を再構築する能力を本当に測定していますか?協調フィルタリングでは、入力行列自体は本質的に非常に不完全です。推薦者の全体の仕事は、いくつかの空白を埋めることです。入力を完全に再構築した場合、答えは得られません。通常、協調フィルタリングにNNMFを使用する場合、評価メトリックはこれとはまったく異なります。

FWIW私はまさにこれ(行列因数分解に基づくCF)をMyrrixとして商品化しています。これは、 Mahoutでの私の作業に基づいています。すでに製品の曲線下面積(AUC)などのテストの基本的なサポートに関するドキュメントを読むことができます。

ここでの「元の」は、入力マトリックス内の1つの行(おそらく1人のユーザー)の例ですか?あなたが半分について話すとき、そしてそれを除いて、あなたはどのトレーニング/テスト分割を参照していますか?各ユーザーを分割しますか、それともユーザー間でサブセットを取得しますか?再構成誤差の測定について話しているようですが、それは何も除外する必要がないからです。行列係数を乗算して戻し、入力にどれだけ近いかを確認します。「閉じる」とは、L2/フロベニウス基準が低いことを意味します。

ただし、まったく別の従来の推奨テスト(AUCや適合率再現率など)の場合は、データを時間(最近のデータはテストデータ)または値(最も優先される項目または関連する項目はテストデータ)ごとにテスト/トレーニングに分割します。テストデータ)。0が入力行列の欠落している要素であると理解している場合、それらは実際には「データ」ではありません。最初から入力されていないため、テストデータがすべて0であるという状況は発生しません。問題は、どの1がトレーニング用で、どの1がテスト用かということです。

于 2012-09-01T14:17:24.847 に答える