複数特徴量によるK-NN
メニューを表示するにはスワイプしてください
k-NNが単一の特徴量でどのように動作するかを理解しました。次は、weight(重さ)とwidth(幅)という2つの特徴量を使う、やや複雑な例に進みます。
この場合、幅と重さの両方に基づいて近傍を探す必要があります。しかし、ここで小さな問題が発生します。お菓子のデータをプロットして、何が問題なのか見てみましょう:
重さは12から64までの範囲ですが、幅は5から12の間だけです。幅の範囲がはるかに小さいため、お菓子はほぼ垂直に並んでいるように見えます。この状態で距離を計算すると、主に重さの違いだけが反映され、幅を考慮していないのと同じになります。
しかし、解決策があります。それはデータのスケーリングです。
これで重さと幅の両方が同じスケールになり、ゼロを中心とした値になります。これはStandardScalerのsklearnクラスで実現できます。StandardScalerはサンプルの平均を引き、その結果をサンプルの標準偏差で割るだけです:
StandardScaler はデータをゼロ付近に中心化します。k-NN では中心化は必須ではありませんが、「重みが負になるのはなぜか」といった混乱を招くことがあります。これは単にコンピュータにデータを提示する方法の一つです。一部のモデルでは中心化が必要となるため、デフォルトで StandardScaler を用いてスケーリングすることが推奨されます。
実際には、k-Nearest Neighbors を使用する前に必ずデータをスケーリングする必要があります。データがスケーリングされた状態で、近傍を見つけることができます。
特徴量が2つの場合、k-NN は所定の数の近傍を含む円形の近傍領域を定義します。特徴量が3つの場合は、これが球体になります。より高次元では、近傍領域は可視化できない複雑な形状となりますが、基礎となる計算は変わりません。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください