機械学習実戦ByMatlab(一)KNNアルゴリズム


【オリジナル】Liu_LongPo転載は出典【CSDN】を明記してくださいhttp://blog.csdn.net/llp1992
KNNアルゴリズムは単純に言えば「物はクラスで集まる」ということであり,新しい分類されていない点を周囲の点の多くが属するクラスに分類する.それは異なる特徴値間の距離を測定する方法を用いて分類し,一つのサンプルの特徴空間の中で最も近い(ヨーロッパ式距離で判断する)K点がほとんどあるクラスに属すると,そのサンプルはこのクラスに属すると考えられる.これが類をなす思想だ.
もちろん,実際には,異なるK値が分類効果に影響し,K個の近接点の選択において,このK個の点がすでに分類されていると意外にも思われず,そうでなければこのアルゴリズムはクラスタ化の意味を失う.
KNNアルゴリズムの不足点:
1、サンプルがバランスがとれていない場合、例えば一つのクラスのサンプル容量が大きく、他のクラスのサンプル容量が小さい場合、一つのサンプルを入力すると、K個の近接値の多くが大きなサンプル容量のそのクラスであり、その場合、分類エラーを招く可能性がある.改良法はK近接点を重み付けすることであり,すなわち距離が近い点の重み値が大きく,距離が遠い点の重み値が小さい.2、計算量が多く、分類されるサンプルごとにすべての点までの距離を計算し、距離ソートによってK個の近接点を求めることができる.改善方法は、既知のサンプル点をクリップし、分類にあまり役に立たないサンプルを事前に除去することである.
適用:
サンプル容量の大きいクラスドメインの自動分類に適しており、サンプル容量の小さいクラスドメインは誤分しやすい
アルゴリズムの説明:
    1、                     
    2、          
    3、           K  
    4、        K