YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

K近傍法(KNN)

K近傍法(KNN)を探ります。この教師あり学習アルゴリズムがclassifyと回帰にどのように機能するか、ビジュアル検索での使用、およびUltralytics YOLO26との統合について学びましょう。

K近傍法 (KNN) は、分類タスクと回帰タスクの両方で教師あり学習の分野で使用される、堅牢で直感的なアルゴリズムです。そのシンプルさによって特徴付けられ、KNNは、トレーニングフェーズ中にモデルを構築したりパラメーターを学習したりしないため、「怠惰な学習器」として分類されることがよくあります。代わりに、トレーニングデータセット全体を記憶し、予測が要求されたときにのみ計算を実行します。このアルゴリズムの核となる原理は特徴の類似性に基づいています。つまり、類似する属性を持つデータポイントは、多次元特徴空間内で互いに近い位置に存在すると仮定します。

アルゴリズムの動作原理

K近傍法(K-Nearest Neighbors)のメカニズムは距離計算によって駆動されます。新しいクエリポイントが導入されると、アルゴリズムは保存されたデータセットを検索し、新しい入力に最も近い「K」個のトレーニングサンプルを見つけます。

  1. 距離測定: システムは、クエリポイントとデータベース内の他のすべてのポイント間の距離を計算します。最も一般的なメトリックはユークリッド距離で、これは点間の直線距離を測定します。マンハッタン距離(タクシー幾何学)やミンコフスキー距離などの他のメトリックは、データ型に応じて使用される場合があります。
  2. 近傍選択: 距離を計算した後、アルゴリズムはそれらをソートし、上位「K」個の最も近いエントリを識別します。
  3. 意思決定:
    • For Classification: このアルゴリズムは「多数決」システムを使用します。K個の近傍のうち最も頻繁に現れるクラスラベルがクエリポイントに割り当てられます。これは基本的な画像分類タスクで広く使用されています。
    • For Regression: 予測は、K個の最近傍の値の平均を計算することで、連続変数を推定します。

適切な「K」の選択

「K」の最適な値を選択することは、ハイパーパラメータチューニングにおける重要なステップです。Kの選択は、モデルのパフォーマンスと新しいデータへの汎化能力に大きく影響します。

  • 低K値: 小さなK(例:K=1)は、モデルをデータ内のノイズや外れ値に非常に敏感にし、過学習につながる可能性があります。
  • 高いK値: Kが大きいと決定境界が平滑化され、ノイズの影響を軽減しますが、明確なパターンをぼかす可能性があり、その結果アンダーフィッティングが発生します。

実際のアプリケーション

ディープニューラルネットワークと比較してその単純さにもかかわらず、KNNは現代AIにおいて依然として非常に重要であり、特に高度な特徴抽出技術と組み合わせた場合に顕著です。

  • レコメンデーションシステム: KNNは、メディアストリーミングやEコマースにおける協調フィルタリングを促進します。視聴履歴や購入行動が類似するユーザー(近傍)を特定することで、プラットフォームは「最近傍」の好みに基づいて、ユーザーが気に入りそうな商品を提案できます。
  • 異常検知: サイバーセキュリティや金融において、KNNは異常検知に用いられます。取引やネットワーク活動は特徴空間にマッピングされ、「正常な」活動の密なクラスターから大きく外れる新しいデータポイントは、潜在的な不正行為またはセキュリティ侵害としてフラグ付けされます。
  • ビジュアル検索: 最新のベクトル検索エンジンは、多くの場合、Approximate Nearest Neighbor (ANN) アルゴリズム(KNNの最適化されたバリエーション)に依存して、YOLO26のようなモデルによって生成された高次元のembeddingsに基づいて類似画像を迅速にretriveします。

課題と考慮事項

KNNは効果的ですが、次元の呪いに直面します。特徴量(次元)の数が増加するにつれて、データ点は疎になり、距離指標はその有効性を失います。さらに、すべてのトレーニングデータを保存するため、KNNはメモリ集約的になり、大規模データセットでは高い推論レイテンシに悩まされることがあります。これに対処するため、実務者はしばしば次元削減技術(主成分分析(PCA)など)を使用してデータを前処理したり、検索を高速化するためにKDツリーのような特殊なデータ構造を使用したりします。データセットとモデルトレーニングのエンタープライズグレードのスケーリングには、Ultralytics Platformを利用することで、複雑なデータの前処理に必要な計算リソースの管理に役立ちます。

KNNとK-Meansの区別

K近傍法はK平均クラスタリングと名前が似ているため、混同されがちですが、これらを区別することが重要です。

  • KNNは、ラベル付きデータを使用して予測を行う教師あり学習アルゴリズムです。
  • K-Meansは、構造的類似性に基づいてラベルなしデータをクラスタにグループ化するために使用される教師なし学習アルゴリズムです。

実施例

以下のコードスニペットは、人気のある 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)")

共にAIの未来を築きましょう!

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