37

この間ずっと (特に Netflix コンテストで)、私はいつもこのブログ (またはリーダーボード フォーラム) に出くわし、データに単純な SVD ステップを適用することで、データのスパース性を減らしたり、一般的にアルゴリズムのパフォーマンスを向上させたりする方法について言及しています。手。私は(長い間)考えようとしていますが、なぜそうなのか推測できません。一般に、私が取得するデータは非常にノイズが多く (これはビッグデータの楽しい部分でもあります)、対数変換などの基本的な機能のスケーリング、つまり正規化を知っています。しかし、SVD のようなものはどのように役立ちますか。たとえば、ユーザー評価の映画の巨大なマトリックスがあるとしましょう..そして、このマトリックスに、いくつかのバージョンの推奨システムを実装します (協調フィルタリングなど):

1) Without SVD
2) With SVD

それはどのように役立ちますか

4

3 に答える 3

51

SVD はデータの正規化には使用されませんが、冗長データを取り除くため、つまり次元削減のために使用されます。たとえば、2 つの変数があり、1 つが湿度指数で、もう 1 つが降水確率である場合、それらの相関は非常に高く、2 番目の変数は分類または回帰タスクに役立つ追加情報には寄与しません。SVD の固有値は、どの変数が最も有益で、どの変数がなくてもよいかを判断するのに役立ちます。

仕組みは簡単です。U、S、および V* を取得するために、トレーニング データ (行列 A と呼びます) に対して SVD を実行します。次に、特定の任意のしきい値 (たとえば 0.1) 未満の S のすべての値をゼロに設定し、この新しい行列を S' と呼びます。次に、A' = US'V* を取得し、A' を新しいトレーニング データとして使用します。一部の機能は現在ゼロに設定されており、パフォーマンスの低下なしに削除できます (データと選択したしきい値によって異なります)。これはk切り捨て SVD と呼ばれます。

ただし、SVD はスパース性には役立ちません。機能が冗長な場合にのみ役立ちます。2 つの特徴は、予測タスクにとってまばらで有益な (関連する) 場合があるため、いずれかを削除することはできません。

SVD を使用すると、n 個の機能からk個の機能に移行します。それぞれの機能は、元の の線形結合になりnます。これは、特徴選択と同様に、次元削減のステップです。ただし、冗長な特徴が存在する場合、特徴選択アルゴリズムは、データ セットによっては SVD よりも優れた分類パフォーマンスをもたらす場合があります (最大エントロピー特徴選択など)。Wekaにはそれらがたくさん付属しています。

参照: http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Dimensionality_Reduction/Singular_Value_Decomposition

https://stats.stackexchange.com/questions/33142/what-happens-when-you-apply-svd-to-a-collaborative-filtering-problem-what-is-th

于 2012-03-06T19:09:47.010 に答える
16
于 2012-03-07T15:36:34.700 に答える