4

オブジェクト間の距離を特定のしきい値まで知っているマニホールド学習/非線形次元削減問題があり、それを超えると、距離が「遠い」ことがわかります。また、距離の一部が欠落している場合もあります。sklearn.manifold1次元表現を見つけるタスクを実行するために使用しようとしています。自然な表現は、「遠い」距離infを として、欠落した距離を として表すことnanです。

ただし、現在、 の多様体学習関数に与えられた距離行列のと の値scikit-learnはサポートされていないようです。naninfsklearn.manifoldValueError: Array contains NaN or infinity

これには概念的な理由がありますか?inf非メトリック MDS など、一部の方法は に特に適しているようです。また、他の言語でのこれらのメソッドの一部の実装では、欠損値/ inf 値を処理できることも知っています。

使用する代わりに、inf「遠い」値を非常に大きな数に設定することを検討しましたが、これが結果にどのように影響するかはわかりません.

アップデート:

のコードを掘り下げて、コードのsklearn.manifold.MDS._smacof_single()一部とそれを言っているコメントを見つけました"similarities with 0 are considered as missing values"。これは、欠損値を指定する文書化されていない方法ですか? これはすべてのマニホールド関数で機能しますか?

4

1 に答える 1

0

短い答え: あなたが言及したように、非メトリック MDS は不完全な非類似度行列を扱うことができます。その通りです。値をゼロに設定すると、 を使用するときに欠損値として解釈されますMDS(metric=False)。非メトリックMDSに基づいていない他のマニホールド学習手順では機能しませんが、同様の(文書化されていない)アプローチが利用できる場合があります。

inf を高い値で置き換えることに関する質問については、低次元の表現が確実に形成されます。これが有効かどうかは、inf 値の起源を知っている人だけが答えることができる概念的な問題です。inf-entries は、「これらのデータは互いに reeaaaalllyyyy 離れている」のような意味ですか? (あなたの場合のように) 高い値に置き換えることは理にかなっています。相違点に関する知識が不足している場合は、inf に置き換えることはお勧めしません。他の解決策 (非メトリック MDS や行列補完など) がない場合は、そのような場合は測定可能な距離の中央値に置き換えることをお勧めします (インピュテーションをチェックしてください)。

2017 年の同様の質問に対する私の回答をご覧ください。

于 2017-05-09T15:10:28.930 に答える