SVDを協調フィルタリングの問題に適用するとどうなりますか?2つの違いは何ですか?


21

協調フィルタリングでは、入力されていない値があります。ユーザーが映画を見なかった場合、そこに「na」を入力する必要があります。

このマトリックスのSVDを取得する場合、そこにいくつかの数値(0など)を入力する必要があります。マトリックスを因数分解すると、同様のユーザーを見つける方法があります(どのユーザーが縮小された次元空間)。しかし、予測される嗜好自体-アイテムに対するユーザーにとってはゼロになります。(なぜなら、未知の列に入力したものだからです)。

そのため、共同フィルタリングとSVDの問題に悩まされています。それらはほとんど同じように見えますが、完全ではありません。

それらの違いは何ですか?SVDを協調フィルタリング問題に適用するとどうなりますか?私はそうしましたが、結果は近くのユーザーを見つけるという点で許容できるように見えますが、これは素晴らしいですが、どのようにですか?

回答:


25

OK、SVDと言うとき、おそらく切り捨てられた SVD(最大の特異値のみを保持する)について話しているのでしょう。マトリックスの切り捨てられたSVDを見るには、2つの異なる方法があります。1つは標準定義です。k

最初にSVDを実行します:、ここでとは回転行列で、は対角線に沿った特異値を持ちます。次に、上位特異値を選択し、残りをゼロにし、無関係な行と列をハックして、元のランク近似を作成します UVΣKKXX =Uのn × kのK × K ΣV Tの K × Mバツn×m=うんn×nΣn×mVTm×mうんVΣkkバツバツ=うんn×kΣk×kVTk×m

これはすべて素晴らしくて(そしてRまたはmatlabで簡単に実装できます)、欠損値のある行列については意味がありません。ただし、切り捨てられたSVD には興味深い特性があります。これは、元のランクの最良の近似です。あれは:kkk

バツ=argmnBrankB=kjバツjBj2

このプロパティは、欠損値の場合に簡単に一般化できるようです。基本的に、元の行列の既知のエントリ全体の要素ごとの平均二乗誤差を最小化するランクの行列を探してます。つまり、システムをトレーニングしているときに、すべての欠損値を無視します。(あなたが実際に見つけることについて行くかもしれない方法のヒントについて -rank近似、ここにあるいくつかの場所を見に)。kkk

次に、元のランクの近似値を適切に「近似」するようになったら、それを使用して欠損値を埋めます。つまり、が欠落している場合は、ます。多田!これで完了です。X I J X I Jkバツjバツj


3

欠損値の処理方法については、多くのアプローチがあるようです。セクション1.3でレビューした以下の論文は、良い出発点かもしれません。


0

Stumpy Joe Peteの答えにコメントするには、もっと評判が必要なので、これを答えとして投稿します。

少し説明が必要だと思いますが、答えに感謝します。特に私はこの文を意味します:

基本的に、元の行列の既知のエントリ全体の要素ごとの平均二乗誤差を最小化するkランクの行列を探しています。

最初に-最高ランクは常にこれを最小化するのではなく、実際に元のX行列を再構築しますか?第二に-なぜあなたは既知のエントリだけを取るのでしょうか。直感的には理にかなっていますが、手順は実際にはいくつかの妥当な数で置き換えられた空の場所にも適合しています。

私のアプローチは、相互検証のようなものを実行することです:

  1. 空の場所に0または手段、または別の妥当な数を入力します。
  2. n個の既知の要素の1つを0または適切な数で置き換えます
  3. ランクkのSVD再構成を実行する
  4. 既知の再構成要素の値を確認してください。
  5. 可能なすべての既知の要素について繰り返し、MSEを計算します
  6. 可能なすべてのkについて繰り返し、MSEが最も低いものを選択します。

1.オーバーフィッティングを避けるために、低いkを選択します(Xの次元が何であれ、それよりもはるかに低い)。これは、基本的に、6ポイントのデータセットを近似するために、線形回帰が5次よりも良い選択であるという同じ理由です。2.あなたはありません知っているあなたがそれら全体で「要素単位MSE」を測定することはできませんので、未知のエントリがすることになっているもの。私の手順は、既知の値に対する誤差を最小化することで(および行列が低ランクでなければならないことを制約することにより)導出された数値で欠損値を埋めます。
スタンピージョーピート14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.