レコメンデーションシステムの場合のSVDの背後にある人間の直感
これは私の質問に答えません。線形代数の観点からSVDを理解するのに非常に苦労しました。しかし、場合によっては、点をつなぐことができませんでした。それで、私はSVDのすべてのアプリケーションを見始めました。映画推薦システム、グーグルページランク付けシステムなどのように。
さて、映画推薦システムの場合、私が心の絵として持っていたのは...
SVDは、協調フィルタリングに該当する手法です。そして、SVDが行うことは、ビッグデータ行列を2つの小さな行列に分解することです。そして、SVDへの入力として、不完全なデータマトリックスを提供します。そして、SVDは私たちにおそらく完全なデータマトリックスを提供します。ここでは、映画推薦システムの場合、ユーザーの評価を予測しようとします。不完全な入力データマトリックスは、一部のユーザーが特定の映画に評価を付けなかったことを意味します。したがって、SVDはユーザーの評価を予測するのに役立ちます。SVDがどのようにして大きな行列を小さな断片に分解するのかはまだわかりません。SVDが小さい行列の次元をどのように決定するかはわかりません。
誰かが私の理解を判断できれば助かります。また、SVDを最初から理解し、Netflixレコメンデーションシステムに適用するのに役立つリソースをいただければ幸いです。また、Googleページランク付けシステムまたは他のアプリケーション用。
人間の直感レベルと線形代数の観点から、より多くの説明が見られることを楽しみにしています。私は自分の研究でこのアルゴリズムを使用することに興味があるので、できるだけ早く理解する必要があります。SVDはコアからどのように機能するのでしょうか。
回答
SVDを行列補完アルゴリズムと混同しています。SVDは$(m \times n)$ データマトリックス $M$ そしてそれを因数分解します $M = U \Sigma V^\text{T}$、一方、行列補完アルゴリズムは、エントリが欠落している行列を取得し、いくつかの基準に従ってそれらを埋めます。特に、SVDは、あなたが話しているようなレコメンデーションシステムの協調フィルタリング技術ではなく、任意の行列を2つではなく3つの行列に分解し、入力としてエントリが欠落している行列を受け入れることはできません。
本当に必要なのが行列補完アルゴリズムについての直感である場合、それらの背後にある重要な仮定は、与えられたものであるということを理解する必要があります。 $(m \times n)$ マトリックス $M$ ランクが低い、つまり $\text{rank}(M) < \min(m, n)$。Netflixの問題の場合、すべてのNetflixの顧客は、映画をほぼ同じ方法で評価するいくつかのグループの1つに分類されると想定しています。検討中の映画が5つだけで、顧客が6人の場合、次のような評価マトリックスがある可能性があります。$$ \left[ \begin{matrix} 1 & 1 & 5 & 5 & 5 & 2\\ 2 & 2 & 1 & 1 & 1 & 1\\ 5 & 5 & 5 & 5 & 5 & 3\\ 5 & 5 & 4 & 4 & 4 & 4\\ 3 & 3 & 2 & 2 & 2 & 4 \end{matrix} \right] $$ここで、各行は映画に対応し、各列は顧客に対応します。顧客は3つの異なるグループに分類され、顧客1と2は5つの映画すべてに対して同じ評価を持ち、顧客3、4、5は5つの映画すべてに対して同じ評価を持ち、顧客6は自分だけのグループを持ちます。これにより、マトリックスは$\text{rank}(M) = 3$、線形独立列は3つしかないためです。これが、5つの映画すべてを見て評価した場合に各顧客が与える真の評価である場合、マトリックスを作成するためにエントリを消去した場合$$ \left[ \begin{matrix} 1 & 1 & 5 & 5 & 5 & 2\\ 2 & 2 & 1 & 1 & 1 & 1\\ 5 & 5 & 5 & * & 5 & 3\\ 5 & 5 & 4 & 4 & 4 & 4\\ 3 & 3 & 2 & 2 & 2 & 4 \end{matrix} \right] $$ どこ $*$ 不明または消去されたエントリを示し、 $\text{rank}(M) = 3$ 不足しているエントリを埋めるのに十分な情報です。5以外の場合、行列のランクは3ではなく4になるためです。
SVDがこの問題の解決にどのように関連しているかを直感的に理解するには、行列のエントリも理解する必要があります。 $\Sigma$ (行列の特異値と呼ばれます $M$)のランクについても教えてください $M$。具体的には、$\text{rank}(M) = \text{(the number of non-zero singular values)}$。行列補完アルゴリズムは実際にはもっと複雑ですが、考え方は基本的にこの単純な例と同じですが、エントリが1つ消去されています。
行列補完アルゴリズムを理解するために必要なことを学ぶには、かなりの量の線形代数を学ぶ必要があります。教科書から始めるのが最適かもしれませんが、次のトピックについて順番に学習してみることができます。
- 行列の階数
- 行列の固有値分解(SVDの前身)
- SVD
- 行列補完