私は次元の呪いを理解するのに苦労しています。具体的にはscikit-learn
、Pythonでチュートリアルを実行しているときに遭遇しました。誰かが以下を簡単な方法で説明してもらえますか?申し訳ありませんが、私は長い間理解しようとしていましたが、効率的なKNN推定量を達成するためのトレーニング例の数の計算方法を理解できませんでしたか?
説明は次のとおりです。
推定器を有効にするには、隣接するポイント間の距離が値dよりも小さい必要がありますが、これは問題によって異なります。1つの次元では、これには平均でn〜1 / dポイントが必要です。上記のKNNの例のコンテキストでは、データが0から1の範囲の値とn個のトレーニング観測値を持つ1つの特徴だけで記述されている場合、新しいデータは1 / nを超えません。したがって、クラス間フィーチャバリエーションのスケールと比較して1 / nが小さいとすぐに、最近傍決定ルールが効率的になります。
フィーチャの数がpの場合、n〜1 / d ^ pポイントが必要になりました。1次元で10ポイントが必要だとしましょう:[0、1]空間を舗装するには、p次元で10 ^ pポイントが必要です。pが大きくなると、適切な推定量に必要なトレーニングポイントの数が指数関数的に増加します。
編集:また、チルダ(~
)はその例で近似を表すことになっていますか?またはPythonのチルダ演算子?