K-Nearest Neighbors (KNN)は、機械学習(ML)の基本的なアルゴリズムであり、分類と回帰の両方のタスクに使用される。KNNは、そのシンプルさと直感的なアプローチで際立っている。KNNは、基礎となるデータ分布を仮定しないので、ノンパラメトリック手法に分類される。また、学習データの段階で一般的なモデルを構築しないため、「遅延学習」アルゴリズムとしても知られている。
KNNの仕組み
KNNの核となる考え方は類似性に基づくもので、ユークリッド距離のような距離メトリクスを用いて定義されることが多い。新しい未知のデータ点を予測する際、アルゴリズムは保存されている学習データセットから、そのデータ点に最も近い「K」個のデータ点(近傍点)を特定する。値'K'はユーザー定義の整数で、考慮される近傍の数を表す。
- 分類:新しいデータ点は、そのK個の最近傍の中で最も一般的なクラスに割り当てられる。K=3で、2つの近傍がクラスAに属し、1つがクラスBに属する場合、新しいポイントはクラスAに分類されます。
- 回帰の場合新しいデータ点の予測は、通常、そのK個の最近傍の値の平均(または中央値の場合もある)である。
距離メトリックの選択と「K」の値は、モデルの性能に大きく影響する重要なハイパーパラメータである。
KNNの応用
KNNの単純さは、特に解釈可能性が重視される様々な用途に適している:
- 推薦システム:KNNは、「最も近い」隣人(同じような嗜好を持つユーザー)の嗜好に基づいて、ユーザーにアイテム(映画や商品など)を提案することができる。Netflixのようなサービスでは、同様のインスタンスベースの手法が研究されている。
- 画像認識:基本的な画像分類タスクにおいて、KNNは学習セット中の最も類似した画像のクラスに基づいて画像を分類することができる(例えば、ピクセルの類似性に基づいて手書きの数字を識別する)。MNISTのような単純なデータセットには効果的ですが、より複雑なタスクでは高度なモデルが必要になることがよくあります。
- 異常検出:KNNは、近傍のクラスターから離れたデータポイントを識別することで、異常値や異常値を検出することができます。異常検知手法の詳細を見る。
- 遺伝子発現解析:バイオインフォマティクスでは、KNNは遺伝子発現パターンに基づいてサンプルを分類し、類似した遺伝子プロファイルをグループ化するのに役立ちます。ヘルスケア・アプリケーションにおけるAIの詳細については、こちらをご覧ください。
KNNの利点と欠点
KNNにはいくつかの利点があるが、限界もある:
利点がある:
- シンプルさと直感:理解しやすく、実行しやすい。
- 学習段階なし:データセットを保存することで即座に学習し、新しいデータに適応できる。
- 柔軟性:マルチクラス分類を自然に処理し、回帰にも適応できる。
デメリット
- 計算コスト:予測には時間がかかり、特に大規模なデータセットの場合、すべての学習点までの距離を計算する必要があるため、計算コストが高くなります。
- 無関係な特徴に対する感度:高次元のデータ(次元の呪い)や無関係な特徴が存在する場合、性能は著しく低下する。次元削減のようなテクニックが必要になるかもしれない。
- 特徴スケーリングの必要性:大きな範囲のフィーチャーは距離計算を支配する可能性があり、正規化が必要となる。
- 最適な'K'の決定K'の最適値を見つけるには、注意深くハイパーパラメータを調整する必要がある。
KNNと関連概念との比較
KNNを他のアルゴリズムと区別することは重要である:
- K-Meansクラスタリング:どちらも「K」と距離尺度を使用するが、K-Meansは類似性に基づいてデータをグループにクラスタリングする教師なし学習アルゴリズムである。KNNは、ラベル付けされた近傍に基づいて分類や回帰を行う教師あり学習アルゴリズムである。
- サポート・ベクトル・マシン(SVM):SVMはクラスを分離する最適な超平面を見つける教師ありアルゴリズムである。KNNのインスタンスベースのアプローチとは異なり、SVMは明示的なモデルを構築し、しばしば高次元データでより良いパフォーマンスを発揮する。
- 決定木:決定木は特徴の分割に基づいてモデルを構築し、分類または回帰のための明確なルールを提供する。KNNは明確なルールではなく、局所的な類似性に依存する。
KNNは特定のタスクや基本的なMLの概念を理解するのに役立ちますが、リアルタイムの物体検出のような複雑な問題には、次のようなより高度なモデルが役立ちます。 Ultralytics YOLOのような、より高度なモデルが、特に大規模なコンピュータビジョンデータセットにおいて、優れた速度と精度を提供します。このようなモデルは、Ultralytics HUBのようなプラットフォームを使用してトレーニングおよびデプロイすることができます。