実際には、計算を実行する全体のポイントである推奨マトリックスの欠損値を使用して、人々は何をしますか?サイモンのブログ投稿を読んだ私の推測では、彼はモデルを構築するために非欠損用語のみを使用しているということです。
そうです-それは彼とあなたのモデルのポイントです、欠落している用語を予測するのですか?多くの人が実際に忘れている重要なポイントです。彼らは、世間を気にせずに定数を欠損データに事前に割り当てるだけで「想定」できると考えており、SVDから物事が十分にうまく機能します。ガベージイン、ガベージアウト:それは本物であり、あなたはそれを見たほうが良い。結果に有用なものが必要な場合は、迷惑データをモデルにフィードしない方がよいでしょう。
確かに、多数のスパースデータセットで「欠損値を推測するのが最善」ではなく、その上でSVDを実行して、値を代入することを望んでいます(SVDを実行する前に既に代入しましたよね?)。モデルは魔法だと思いますか?多数のガベージデータを克服する魔法も技術もありません。データが実在しない場合、データが実在のデータであるというモデルに嘘をつくことはできませんが、実際には単なる空気から作られた単なるジャンクです。
SVDは他の便利なことを行うので、SVDが少なくとも価値がないとは言いません。先に進んで、完全なデータセットでのみSVDを使用してください。おそらく、開発中にバイアスエラーと分散エラーに十分な注意を払って、機械学習モデルを既に使用している場合に、欠損値をインテリジェントに代入します。
機械学習が道です。したがって、行列因数分解設計を使用して値を代入する方法をまだ知りたい場合は、機械学習を使用してこれを正確に行う良い方法が確かにあります。重要なことは、迷惑データをモデルに供給して、無意味に学習しようとしないことです。
まさにそのような機械学習行列因子分解モデルは、モジュール5のスタンフォードオンラインコースマイニングマッシブデータセットのインストラクターによって非常によく提示されます。彼らは数学を示し、モデルを説明します。彼らはあなたのためにそれをコーディングしていません。
基本的な機械学習を理解していれば、自分でコーディングできるので問題ありません。損失関数とコスト関数を知っていますか?正則化?勾配降下?行列の乗算と加算で大丈夫ですか?バイアス誤差と分散誤差?もしそうなら、あなたは良いです。そうでない場合は、Andrew NgのCourseraでの機械学習を受講することを検討する必要があります。これは多くの良い出発点の1つです。次に、推奨モデルを作成するための行列因数分解と機械学習について正確に説明しているオンラインコースMining Massive Data Setsを受講してください。
言うだけで十分です。サイモンファンクのように、欠損データを非常にうまく処理する独自の因子分解モデルを完全に設計およびコーディングできます。彼の時代、TensorFlowやMicrosoft CNTKのようなツールを使用できるようになったからです。損失関数とコスト関数を定義し、オプティマイザーを選択し、データセットをトレーニングに分割し、開発し、実際に利用可能なデータ(ラベル付きデータ)からテストして実行します。真剣に、それは動作します。TFとそのグラフ作成エラーのデバッグは簡単ではありませんが、最終的にはうまく機能し、1ページ未満のコードで済みます。
具体的には、偽のデータを行列因子分解機械学習モデルに供給しない1つの方法は、損失関数とコスト関数で欠落しているデータの行列要素をスキップすることです。