5

私は自分のデータセットに、python scikit-learnを使ってNMFを適用しようとしています。私のデータセットは0の値と欠損値を含んでいます。しかし、scikit-learnはデータ行列のNaN値を許可しません。一部の記事では、欠損値をゼロで置き換えると述べています。python scikitで欠損値を処理する方法NMF

私の質問は以下のとおりです。

  • 私はゼロで欠損値を置き換える場合は、どのようなアルゴリズムは、欠損値と実際のゼロ値を伝えることができますか?

  • 欠損値を処理できる他のNMF実装はありますか?

  • 他の行列分解アルゴリズムがある場合、欠損値予測を行うことができますか?

+0

ゼロ(または列平均、又は行平均又は...)と欠落値の置換は、分類器によって知られていません。これらの数字は他のものと同じように扱われます(私たちは常にこれらのメソッドで低ランクのモデルが存在すると仮定しています)。 /一般的に、欠損値のない行列の低ランク分解を見つけることと比較して、欠損値予測はより困難な問題(より強い仮定を必要とする)であると言えるだろう。別の方法として、いくつかの一般的なnmf-problemについてSGDベースのオプティマイザを作成してください(そして既知の値のみからサンプルできます) – sascha

+1

SGDを適用する際に欠けている値を無視しているようです。 –

+0

同じ問題に直面しています。独自のSGD実装を作成しましたか?はいの場合、どのように実行していますか?これまでのところ、私はNMFに似たパフォーマンスを達成することはできませんでした。 – silentser

答えて

1

SGDはここで仕事をしますが、scikit-learnにはその仕事に適用できるものはありません。あなた自身のものを書くことは仕事をするでしょうが、本当にです。なぜなら、行列分解をSGDに直接並列化できないからです。 チェック分散SGDアルゴリズムはhereと記載されています。それは実装するのが難しくないし、物事を大幅にスピードアップします。

+0

良い点、ありがとう:) –

0

これについてscikit-learn githubにスレッドがあり、バージョンコードが利用可能であるが、まだメインコードにコミットされていません。

https://github.com/scikit-learn/scikit-learn/pull/8474

+1

詳細を追加してください。リンクは有効期限切れです。 – empty

関連する問題