やってみよう

年齢[歳]と年収[万円]では数値の大きさが桁違いです。距離を測ると年収ばかりが効いてしまい、k-NN の境界は横しま模様(年収だけで決まる)になります。下のボタンで標準化や正規化に切り替えると、右のグラフの軸目盛りと境界が変わり、年齢もきちんと使われるようになります。

スケーリングなし(元データ)
正解率(LOO):–
変換後
正解率(LOO):–
クラス A(若い層)
クラス B(年上層)
背景 = k-NN(k=5) の予測領域
決定境界

変換後の統計量

特徴量平均標準偏差最小最大
年齢––––
年収––––

元データのままです。年収の数値だけが大きく、距離をほぼ独占しています。

ひとこと

特徴量ごとに尺度がちがうと、数値の大きい特徴量が距離を支配してしまい、他の特徴量が無視されます。スケーリングで尺度をそろえると、すべての特徴量を公平に扱えます。

標準化:平均 0・標準偏差 1 にする。迷ったらこちら。
正規化(Min-Max):最小 0・最大 1 にする。外れ値に弱い。
※ 実務では \(\mu\), \(\sigma\), 最小/最大は訓練データだけから求め、テストデータには同じ変換を当てます。