k近傍法(k-NN)について
k近傍法(ケイきんぼうほう、英: k-nearest neighbor algorithm、k-NN)は、あるデータの分類や回帰を行う際に、そのデータに最も類似した k 個の学習データを用いる手法です。このアルゴリズムは主に
パターン認識に利用され、最近傍探索の一手法として位置付けられています。k近傍法は、特にインスタンスベース学習(または怠惰学習とも呼ばれる)の一例であり、全ての計算が実際の分類時に行われるため、基本的には非常にシンプルです。
概要と手順
k近傍法の基本的な流れは次の4つのステップから成ります。
1. 入力データと全学習データの類似度を測定する。
2. 類似度の高い上位 k 個のデータを抽出する。
3. 抽出したデータの多数決または
平均を算出する。
この手法は、例えば気象データ(気温、湿度、風速)をもとに天気を予測する場合に活用されます。具体的には、過去100日分の気象データを学習し、今日の気象条件に類似する5日分のデータをピックアップし、その中で最も多い天気の状態を予測します。
クラス分類と回帰
k近傍法による分類では、入力対象のデータに最も近い k 個のデータの出自となるクラスが判定基準となります。この時、k の値(通常は小さな正の
整数)によって出力結果が変わります。kが1の場合、最も近いデータのクラスがそのまま決定され、kが大きくなるほど、複数のデータの影響を受けた結果となります。クラス数が2つの場合は、kを奇数に設定することで同票問題を避けることができます。
また、k近傍法は回帰の場面でも利用されます。この場合は、対象のデータの属性値を近傍データの属性値の
平均で決定します。重み付けを行うことで、より近いデータを重視することも可能です。
計算方法
k近傍法では、各オブジェクトは多次元の特徴空間における位置ベクトルで表され、通常は
ユークリッド距離を利用して近傍を選定します。しかし、他の距離の測定方法(マンハッタン距離など)も使用可能です。
分類時には、初めに特徴空間における新しいベクトルが与えられ、それと既存のベクトル間の距離を計算し、k 個の最も近いデータを選出します。この最近傍の中で、最も一般的なクラスを採用して分類を行いますが、これは全訓練例における最も多いクラスに分類されるリスクを伴います。これを是正するために、距離に応じて重み付けするアプローチも存在します。
パラメータの選択
k の決定はデータ依存性が強く、一般に k が大きいほど分類が安定しますが、クラス間の境界が曖昧になることがあります。効果的な k の選定には、
交差検証などの手法が用いられます。また、kが1の設定は、「最近傍法」という特別な呼称がつき、直感的に理解しやすいです。
k近傍法はデータの特性や外れ値に敏感なため、特徴選択が重要です。
進化的アルゴリズムを使用して特徴を最適化することや、
相互情報量による特徴の決定方法もあり、多様な方法論が研究されています。
特徴とアルゴリズムの最適化
このアルゴリズムの単純な実装は距離計算を基にしていますが、大量のデータを扱ううえでは計算量が膨大になるため、効率的な最近傍探索アルゴリズムが開発されています。具体的には、kd木やMetric tree、Locality sensitive hashing(LSH)といった構造が提案されています。
最近傍法は、データ量が増加することで、誤り率が減少する特性を持ちます。kの増加とともに、ベイズ誤り率に近づくため、適切なkの選定が求められます。k近傍法は連続値の属性にも適用でき、距離に逆数で重み付けした
平均を利用することができます。
参考文献と関連項目
- - 機械学習やデータマイニングなどで幅広く応用されるk近傍法について、多くの研究がなされています。興味のある方は、関連書籍や文献を参照してください。