Yolo 深圳
深セン
今すぐ参加
用語集

K近傍法(KNN)

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」個の学習サンプルを見つける。

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

適切な「K」の選択

'K'の最適値の選択は、ハイパーパラメータ調整における重要なステップである。Kの選択は、モデルの性能と新規データへの汎化能力に大きく影響する。

  • 低いK値:Kが小さい(例:K=1)場合、モデルはデータ内のノイズや外れ値に対して非常に敏感になり、過学習を引き起こす可能性があります。
  • 高いK値:大きなK値は決定境界を滑らかにし、ノイズの影響を軽減しますが、 明確なパターンをぼやけさせる可能性があり、その結果 過学習が生じます。

実際のアプリケーション

深層ニューラルネットワークと比較すると単純であるにもかかわらず、KNNは現代のAIにおいて、特に高度な特徴抽出技術と組み合わせた場合に、依然として高い関連性を保っている。

  • レコメンデーションシステム:KNNはメディアストリーミングや電子商取引における協調フィルタリングを促進する。視聴履歴や購買行動が類似したユーザー(近傍ユーザー)を特定することで、プラットフォームはユーザーの「最も近い近傍ユーザー」の嗜好に基づき、そのユーザーが好む可能性の高い製品を提案できる。
  • 異常検知:サイバーセキュリティや金融分野では、KNNが異常検知に用いられる。取引やネットワーク活動は特徴空間にマッピングされ、「正常」な活動の密集したクラスターから大きく外れた新規データポイントは、潜在的な不正行為やセキュリティ侵害としてフラグが立てられる。
  • ビジュアル検索:現代の ベクトル検索エンジンは YOLO26などのモデルが生成する高次元埋め込みに基づき、 類似画像を高速に検索するため、 近似最近傍法(ANN)アルゴリズム—— KNNの最適化された変種——に依存することが多い。

課題と考慮事項

KNNは効果的である一方、 次元性の呪いに直面する。特徴量(次元)の数が増加すると、 データ点が疎になり、距離メトリックは有効性を失う。さらに、 全学習データを保存するため、KNNはメモリ集約的となり、 大規模データセットでは推論レイテンシが高くなる。 この問題に対処するため、実務者は主成分分析(PCA) などの次元削減技術を用いたデータ前処理や、KD-ツリーなどの特殊データ構造による検索高速化を頻繁に採用する。企業レベルのデータセット拡張とモデルトレーニングにおいては、Ultralytics を活用することで、複雑なデータ前処理に必要な計算リソースの管理が可能となる。

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)")

Ultralytics コミュニティに参加する

AIの未来を共に切り開きましょう。グローバルなイノベーターと繋がり、協力し、成長を。

今すぐ参加