欠損値を持つ行列のSVD


12

Netflixスタイルの推奨マトリックスがあり、特定のユーザーの将来の映画評価の可能性を予測するモデルを構築するとします。サイモンファンクのアプローチを使用すると、確率的勾配降下法を使用して、フルマトリックスとアイテムごとの* L2正則化項を組み合わせたユーザーごとのマトリックス間のフロベニウスノルムを最小化できます。

実際には、推奨行列の欠損値を使って人々は何をしますか?これは計算を行うことの全体的なポイントです?サイモンのブログ投稿を読んでの私の推測では、彼は予測するために(ハイパーパラメータと正則化の賢明な選択を伴う)モデルを構築するために、非欠落用語(推奨マトリックスの約1%で構成される)のみを使用している行列の残りの99%は?

実際には、これらすべての値を本当にスキップしますか?または、確率的勾配降下を行う前に、可能な限り推測しますか?欠損値を処理するための標準的なベストプラクティスは何ですか?


1
それはに同じ質問のように思えるこれ。そこで質問に答えました。
d_ijk_stra


2
@d_ijk_stra "answered"は、PDFへのリンクに相当するものを少し寛大に入れています
-ali_m

回答:


6

はい、実際にはこれらの値はスキップされます。フロベニウスノルムに関する説明では、これは測定可能なノルムの成分、すなわち既知の評価を持つ成分を最小化することに相当します。正則化項は、特徴ベクトルの成分のベイズ事前分布と見なすことができ、SVDは最尤推定量を計算し、この事前分布と既知の値に従います。

SVDを欠損値を推測する方法と考えるのがおそらく最善です。すでにこれを行うためのより良い方法を持っている場合、SVDが必要なのはなぜですか?そうしないと、SVDがあなたのギャップを喜んで埋めてくれます。


1
SVDを使用して、これらの欠損値をどのように推測しますか?欠損値を推測する他の方法を試しましたか?たとえば、欠損値を推測するために使用できるランダムフォレスト分類器を訓練するために非欠損値を使用しましたか?より良い結果が得られますか、それとも本当に問題に依存していますか?
ヴィシャル

1
SVD分解の関連コンポーネントを使用して、将来の値を予測するのと同じ方法で欠損値を推測します。将来の評価の予測は、欠損値の推測とまったく同じ問題です。欠損値を推測する良い方法があれば、それを使って将来の評価を予測してください。そうしないと、それがSVDの目的です。
マーティンオレアリー

「おそらく、SVDを欠損値を推測する方法と考えるのが最善です」。ああ、いや、実際にはSVDはユーザーに依存して、SVDを実行する前に他の方法ですべての欠損値を事前に推測します。SVDは何も代入しません。
ジェフリーアンダーソン

1

実際には、計算を実行する全体のポイントである推奨マトリックスの欠損値を使用して、人々は何をしますか?サイモンのブログ投稿を読んだ私の推測では、彼はモデルを構築するために非欠損用語のみを使用しているということです。

そうです-それは彼とあなたのモデルのポイントです、欠落している用語を予測するのですか?多くの人が実際に忘れている重要なポイントです。彼らは、世間を気にせずに定数を欠損データに事前に割り当てるだけで「想定」できると考えており、SVDから物事が十分にうまく機能します。ガベージイン、ガベージアウト:それは本物であり、あなたはそれを見たほうが良い。結果に有用なものが必要な場合は、迷惑データをモデルにフィードしない方がよいでしょう。

確かに、多数のスパースデータセットで「欠損値を推測するのが最善」ではなく、その上でSVDを実行して、値を代入することを望んでいます(SVDを実行する前に既に代入しましたよね?)。モデルは魔法だと思いますか?多数のガベージデータを克服する魔法も技術もありません。データが実在しない場合、データが実在のデータであるというモデルに嘘をつくことはできませんが、実際には単なる空気から作られた単なるジャンクです。

SVDは他の便利なことを行うので、SVDが少なくとも価値がないとは言いません。先に進んで、完全なデータセットでのみSVDを使用してください。おそらく、開発中にバイアスエラーと分散エラーに十分な注意を払って、機械学習モデルを既に使用している場合に、欠損値をインテリジェントに代入します。

機械学習が道です。したがって、行列因数分解設計を使用して値を代入する方法をまだ知りたい場合は、機械学習を使用してこれを正確に行う良い方法が確かにあります。重要なことは、迷惑データをモデル供給して、無意味に学習しようとしないことです。

まさにそのような機械学習行列因子分解モデルは、モジュール5のスタンフォードオンラインコースマイニングマッシブデータセットのインストラクターによって非常によく提示されます。彼らは数学を示し、モデルを説明します。彼らはあなたのためにそれをコーディングしていません。

基本的な機械学習を理解していれば、自分でコーディングできるので問題ありません。損失関数とコスト関数を知っていますか?正則化?勾配降下?行列の乗算と加算で大丈夫ですか?バイアス誤差と分散誤差?もしそうなら、あなたは良いです。そうでない場合は、Andrew NgのCourseraでの機械学習を受講することを検討する必要があります。これは多くの良い出発点の1つです。次に、推奨モデルを作成するための行列因数分解と機械学習について正確に説明しているオンラインコースMining Massive Data Setsを受講してください。

言うだけで十分です。サイモンファンクのように、欠損データを非常にうまく処理する独自の因子分解モデルを完全に設計およびコーディングできます。彼の時代、TensorFlowやMicrosoft CNTKのようなツールを使用できるようになったからです。損失関数とコスト関数を定義し、オプティマイザーを選択し、データセットをトレーニングに分割し、開発し、実際に利用可能なデータ(ラベル付きデータ)からテストして実行します。真剣に、それは動作します。TFとそのグラフ作成エラーのデバッグは簡単ではありませんが、最終的にはうまく機能し、1ページ未満のコードで済みます。

具体的には、偽のデータを行列因子分解機械学習モデルに供給しない1つの方法は、損失関数とコスト関数で欠落しているデータの行列要素スキップすることです。


0

多くの推奨システムをレビューして比較する論文がありますが、たとえば、予測をテストするために、欠落しているアイテムの長期追跡については言及していません。それはあなたの質問の一部ですか?そのように時間コンポーネントを使用していますか?多くの論文と方法の中で、論文のレビューは、Rendle論文の研究など、時間を意識した/敏感なシステムです。質問がデータのスパース性の処理に関するものである場合は、論文全体で詳細に説明されており、多くの方法があります。疎行列とゼロの代入、またはユーザーのクラスタリングのリンクマトリックス(同様にアイテムを評価するユーザー)またはアイテムのクラスタリングのリンクマトリックスを追加するマトリックス因数分解。

論文のタイトルは、「Evgeny Frolovによるhttps://www.skoltech.ru/app/data/uploads/2018/09/Frolov_Dissertation_Final1.pdfによる「制限された選好情報を持つ推薦システムの低ランクモデル」です

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.