Explore K-Nearest Neighbors (KNN) for classification and regression. Learn how this intuitive algorithm works with distance metrics and [YOLO26](https://docs.ultralytics.com/models/yolo26/) embeddings on the [Ultralytics Platform](https://platform.ultralytics.com).
K-近傍法(KNN)は、分類と回帰の両方の課題において教師あり学習の分野で使用される、頑健で直感的なアルゴリズムである。その単純さによって特徴づけられ、KNNはトレーニング段階でモデルを構築したりパラメータを学習したりしないため、しばしば「怠惰な学習者」に分類される。 代わりに、学習データセット全体を記憶し、予測が要求された時のみ計算を実行します。アルゴリズムの核心原理は特徴の類似性に依存しています:多次元特徴空間内で類似した属性を有するデータ点が互いに近接して存在すると仮定するのです。
K-近傍法の仕組みは距離計算によって駆動される。新しい問い合わせ点が導入されると、 アルゴリズムは保存されたデータセットを検索し、新しい入力に最も近い「K」個の学習サンプルを見つける。
'K'の最適値の選択は、ハイパーパラメータ調整における重要なステップである。Kの選択は、モデルの性能と新規データへの汎化能力に大きく影響する。
深層ニューラルネットワークと比較すると単純であるにもかかわらず、KNNは現代のAIにおいて、特に高度な特徴抽出技術と組み合わせた場合に、依然として高い関連性を保っている。
KNNは効果的である一方、 次元性の呪いに直面する。特徴量(次元)の数が増加すると、 データ点が疎になり、距離メトリックは有効性を失う。さらに、 全学習データを保存するため、KNNはメモリ集約的となり、 大規模データセットでは推論レイテンシが高くなる。 この問題に対処するため、実務者は主成分分析(PCA) などの次元削減技術を用いたデータ前処理や、KD-ツリーなどの特殊データ構造による検索高速化を頻繁に採用する。企業レベルのデータセット拡張とモデルトレーニングにおいては、Ultralytics を活用することで、複雑なデータ前処理に必要な計算リソースの管理が可能となる。
K-近傍法とK平均法クラスタリングは、 名称が似ているためしばしば混同されるため、 区別することが重要です。
以下のコードスニペットは、一般的なScikit-learnライブラリを使用したシンプルなKNN分類ワークフローを示しています。コンピュータビジョンの文脈では、入力となる「特徴量」は通常、YOLO26のような深層学習モデルによって抽出された後、KNN分類器に渡されます。
from sklearn.neighbors import KNeighborsClassifier
# Simulated feature vectors (e.g., extracted from YOLO26) and labels
# Features: [Size, Redness], Labels: 0=Apple, 1=Orange
features = [[0.8, 0.9], [0.9, 0.8], [0.2, 0.3], [0.3, 0.2]]
labels = [0, 0, 1, 1]
# Initialize KNN with 3 neighbors
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(features, labels)
# Predict the class of a new object [Size=0.85, Redness=0.85]
prediction = knn.predict([[0.85, 0.85]])
print(f"Predicted Class: {prediction[0]} (0=Apple, 1=Orange)")