K近傍法(KNN)を探ります。この教師あり学習アルゴリズムがclassifyと回帰にどのように機能するか、ビジュアル検索での使用、およびUltralytics YOLO26との統合について学びましょう。
K近傍法 (KNN) は、分類タスクと回帰タスクの両方で教師あり学習の分野で使用される、堅牢で直感的なアルゴリズムです。そのシンプルさによって特徴付けられ、KNNは、トレーニングフェーズ中にモデルを構築したりパラメーターを学習したりしないため、「怠惰な学習器」として分類されることがよくあります。代わりに、トレーニングデータセット全体を記憶し、予測が要求されたときにのみ計算を実行します。このアルゴリズムの核となる原理は特徴の類似性に基づいています。つまり、類似する属性を持つデータポイントは、多次元特徴空間内で互いに近い位置に存在すると仮定します。
K近傍法(K-Nearest Neighbors)のメカニズムは距離計算によって駆動されます。新しいクエリポイントが導入されると、アルゴリズムは保存されたデータセットを検索し、新しい入力に最も近い「K」個のトレーニングサンプルを見つけます。
「K」の最適な値を選択することは、ハイパーパラメータチューニングにおける重要なステップです。Kの選択は、モデルのパフォーマンスと新しいデータへの汎化能力に大きく影響します。
ディープニューラルネットワークと比較してその単純さにもかかわらず、KNNは現代AIにおいて依然として非常に重要であり、特に高度な特徴抽出技術と組み合わせた場合に顕著です。
KNNは効果的ですが、次元の呪いに直面します。特徴量(次元)の数が増加するにつれて、データ点は疎になり、距離指標はその有効性を失います。さらに、すべてのトレーニングデータを保存するため、KNNはメモリ集約的になり、大規模データセットでは高い推論レイテンシに悩まされることがあります。これに対処するため、実務者はしばしば次元削減技術(主成分分析(PCA)など)を使用してデータを前処理したり、検索を高速化するためにKDツリーのような特殊なデータ構造を使用したりします。データセットとモデルトレーニングのエンタープライズグレードのスケーリングには、Ultralytics Platformを利用することで、複雑なデータの前処理に必要な計算リソースの管理に役立ちます。
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)")

未来の機械学習で、新たな一歩を踏み出しましょう。