AI
2023/03/09
飯沼 佑太

【AIエンジニア初心者必見!】Pythonで実装するK-NNアルゴリズムの基礎

logo_Python

K-NN(K近傍法)は、新しいデータを分類する際に、既存のデータのうち距離が近いk個のデータで多数決や平均を取り分類・回帰する手法です。本記事では、K-NNのアルゴリズムとPythonを用いたモデル実装のチュートリアルを、初心者でも理解しやすいように解説します。

K-NN(K近傍法)とは?

K-NN(K近傍法)は、新しいデータを分類する際に、既存のデータのうち距離が近いk個のデータで多数決や平均を取り分類・回帰する手法です。具体的には、K-NNは以下の手順で分類を行います。


  1. 既存のデータの中から、新しいデータに最も近いk個のデータを選びます。

    距離の計算には、ユークリッド距離やマンハッタン距離などが使われます。

  2. k個のデータの中で最も多く存在するカテゴリー(分類問題の場合)や平均値(回帰問題の場合)を求め、新しいデータをそのカテゴリーまたは平均値で分類します。


このように、K-NNは単純で理解しやすい手法ですが、kの値や距離の計算方法などのパラメーターの設定によって性能が大きく変わります。また、大量のデータを扱う場合は計算コストが高くなるため、効率的な実装が必要です。

画像引用:https://xtrend.nikkei.com/atcl/contents/18/00076/00007/

img_knn

プログラム解説〜データ前処理〜

今回はこちらのKaggleのKickstarter Projectsのデータを例に実践していきます。KaggleのKickstarter Projectsは、クラウドファンディングサイト「Kickstarter」で行われたプロジェクトのデータセットです。データセットには、プロジェクト名、カテゴリー、開始日、終了日、目標金額、資金調達額、支援者の数、プロジェクト状況など、さまざまな情報が含まれています。

Kickstarter Projects

データ前処理を済ませたデータがこちらになります。

img_sampledata

プログラム解説 〜データの標準化と分割処理〜

まず、下記のコードを実行し、説明変数の標準化とデータの分割処理を行います。

img_data_process

プログラム解説 〜モデルの学習〜

次に下記コードを実行しモデルの学習を行います。今回、n_neighborsは5に設定しています。これでK-NNモデルの実装は完成です。

img_knn_model

プログラム解説 〜構築したモデルの性能評価〜

次は、実装したK-NNモデルの精度評価をしていきます。今回は検証データの識別率とモデル自体の性能評価、混合行列の算出を行なっていきます。混合行列ではどこの分類分けが間違ったのかを把握するために使用します。

img_knn_score

プログラムの全容

今回、実装したプログラムは下記リンクから詳細を確認することができます。是非ご活用ください。

Google Colaboratory

New call-to-action