K近傍教師あり学習マシンアルゴリズムの詳細な分析

K近傍教師あり学習マシンアルゴリズムの詳細な分析

翻訳者 | 朱 仙中

校正 | 梁哲、孫淑娟

K 近傍法 (KNN) は、機械学習アルゴリズムにおける回帰および分類タスクを解決するために使用できる教師あり学習マシン アルゴリズムです。

KNN は、現在のトレーニング データ ポイントの特性に基づいて、テスト データ セットに対して予測を行うことができます。これは、類似したものが近接して存在するという仮定の下で、テスト データとトレーニング データ間の距離を計算することによって行われます。

アルゴリズムは学習したデータを保存し、新しいデータ ポイントの予測と分類をより効果的にします。新しいデータ ポイントが入力されると、KNN アルゴリズムはデータの特性を学習できます。次に、その新しいデータ ポイントを、同じ機能を共有する現在のトレーニング データ ポイントの近くに配置します。

1. KNNにおけるKの意味

簡単に言えば、KNN の「K」は、最も近い近傍の数を表すパラメーターです。 K は正の整数で、通常は小さい値であり、奇数にすることが推奨されます。 K 値はデータ ポイントのコンテキストを作成し、どのデータ ポイントがどのクラスに属しているかを指定しやすくなります。

以下の例では 3 つのグラフを示しています。まず、最初の画像はデータの初期化を完了する役割を担い、データ ポイントを描画して異なるカテゴリ (A と B) に割り当て、分類する新しいサンプルを提供します。 2 番目の画像は距離計算を完了する役割を果たします。この図では、新しいサンプル データ ポイントから最も近いトレーニング データ ポイントまでの距離が計算されます。ただし、これではまだ新しいサンプル データ ポイントの分類は完了しません。したがって、K 値を使用すると、基本的に、新しいサンプル データ ポイントを分類できる近傍が作成されます。

したがって、k = 3 の場合、新しいデータ ポイントはタイプ B に属すると言えます。新しいデータ ポイントと同様の特性を持つタイプ B のトレーニング済みデータ ポイントがタイプ A よりも多く存在するためです。

チャート出典: datacamp.com

K 値を 7 に増やすと、新しいデータ ポイントはタイプ A に属します。新しいデータ ポイントと同様の特徴を持つタイプ A のトレーニング済みデータ ポイントがタイプ B よりも多く存在するためです。

チャート出典: datacamp.com

K が大きくなるとエラー率も増加するため、K は通常は小さい数値です。次の図はこれを示しています。

チャートソース: analyticsvidhya

ただし、K の値が小さい場合、バイアスは低くなりますが分散は高くなり、モデルが過剰適合することになります。

また、K は奇数に指定することをお勧めします。新しいデータ ポイントを分類しようとしたときに、クラスが偶数個しかない場合 (タイプ A とタイプ B など)、不正確な出力が生成される可能性があるためです。したがって、「同点」の状況を避けるために、奇数の K 値を選択することを強くお勧めします。

2. 距離を計算する

KNN は、新しいデータ ポイントを分類するために、データ ポイント間の距離を計算します。 KNN でこの距離を計算するために最も一般的に使用される方法は、ユークリッド法、マンハッタン法、ミンコフスキー法です。

ユークリッド距離は、2 点間の直線の長さを使用して計算される 2 点間の距離です。ユークリッド距離の式は、新しいデータ ポイント (x) と既存のトレーニング データ ポイント (y) の差の二乗の合計の平方根です。

マンハッタン距離は 2 点間の距離であり、直交座標の絶対差の合計です。マンハッタン距離の式では、座標軸上の線分を使用して、新しいデータ ポイント (x) と既存のトレーニング データ ポイント (y) 間の長さの合計を計算します。

ミンコフスキー距離は、正規化されたベクトル空間内の 2 点間の距離であり、ユークリッド距離とマンハッタン距離を一般化したものです。ミンコフスキー距離の式で p=2 の場合、ユークリッド距離 (L2 距離とも呼ばれる) が得られます。 p = 1 の場合、マンハッタン距離 (L1 距離とも呼ばれる)、または都市ブロック距離 (LASSO 距離とも呼ばれる) が得られます。

対応する式を下の図に示します。

次の図は、3 つの違いを説明しています。

チャート出典: Packt Subscription

3. KNNアルゴリズムの動作原理

  1. KNN アルゴリズムの動作手順は以下の通りです。
  2. データセットの読み込み
  3. K の値を選択します。同点の状況を避けるために奇数をお勧めします。
  4. 新しいデータ ポイントとそれに隣接する既存のトレーニング データ ポイント間の距離を計算します。

新しいデータ ポイントに最も近い K 個の隣接ポイントを検索します。

次の図はこれらの手順の概要を示しています。

画像ソース: kdnuggets.com

4. KNNアルゴリズム分類タスクの適用例

以下は、Iris データセットを使用した分類タスクで KNN アルゴリズムを使用する例です。

1. ライブラリをインポートする

 numpyをnp としてインポートする
matplotlib .pyplotを plt としてインポートします。
pandasをpd としてインポートする

2. アイリスデータセットをロードする

 url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"

#列名を指定する
names = [ 'がく片の長さ' , 'がく片の幅' , '花弁の長さ' , '花弁の幅' , 'クラス' ]

#データセットを読み込む
データセット= pd .read_csv ( url 名前=名前)

これまでの実行結果は次のとおりです。

3. データ前処理

これは、データセットを属性とラベルに分割するために行われます。 X 変数にはデータセットの最初の 4 つの列 (属性と呼ぶ) が含まれ、y 変数には最後の列 (ラベルと呼ぶ) が含まれます。

 X =データセット.iloc [ : , : - 1 ] .値
y =データセット.iloc [ :, 4 ] .値

4. トレーニングセットとテストセットに分割する

このステップでは、データセットをトレーニング部分とテスト部分に分割して、アルゴリズムがトレーニング データをどの程度学習したか、テスト データでどの程度パフォーマンスを発揮するかを確認します。

 sklearn.model_selection からtrain_test_split をインポートします
X_train X_test y_train y_test = train_test_split ( X y test_size = 0.20 )

5. 機能のスケーリング

特徴スケーリングは、予測前のデータ前処理における重要なステップです。データの特徴範囲を正規化するには、次の方法を使用します。

 sklearn.preprocessing からStandardScaler をインポートします
スケーラー=標準スケーラー( )
スケーラー.fit ( X_train )

X_train = スケーラー.変換( X_train )
X_test = スケーラー.変換( X_test )

6. KNNを使用して予測を行う

まず、sklearn.neighbors ライブラリから KNeighborsClassifier クラスをインポートし、K 値を選択する必要があります。この例では、7 を選択しました (同点状況を回避するために奇数値を選択することを強くお勧めします)。

 sklearn.neighbors からKNeighborsClassifier をインポートします
分類子= KNeighborsClassifier ( n_neighbors = 7 )
分類器.fit ( X_train , y_train )

次に、テスト データセットで予測を実行します。

y_pred = 分類器.予測(X_test)

7. アルゴリズムの精度評価

sklearn.metrics ライブラリの助けを借りて、分類レポートを通じてアルゴリズムの精度を評価し、精度、再現率、F1 スコアを確認できます。

 sklearn.metrics からclassification_reportをインポート
印刷(分類レポート( y_test y_pred ) )

コードを実行した結果は次のとおりです。

このことから、KNN アルゴリズムは 30 個のデータ ポイントを平均全体精度 95%、再現率 93%、F1 スコア 94% で分類したことがわかります。

8. 適切なK値を見つける

この例では、K 値として 7 を選択しました。 K の最適値が何であるかを確認したい場合は、K のさまざまな値とそれによって生じるエラー率を示すグラフを生成できます。 1から30までのKの値を調べます。これを行うには、1 から 30 までのループを実行し、各ループで平均エラーを計算してエラー リストに追加する必要があります。関連するコードは次のとおりです。

エラー= [ ]
#1から30までのK値のエラー率を計算する
i が範囲( 1 , 30 ) 場合:
knn = K近隣分類子( n_近隣= i )
knn .fit ( X_train , y_train )
pred_i = knn.predict ( X_test )
エラー.append ( np .mean ( pred_i != y_test ) )

K値のエラー率のグラフを描きます。

 plt .figure (図サイズ= ( 12 , 5 ) )
plt .plot (範囲( 1 , 30 ) エラー= '赤' マーカー= 'o'
マーカーフェイスカラー= '黄色' マーカーサイズ= 10 )
plt .title ( 'エラー率 K 値' )
plt .xlabel ( 'K値' )
plt .ylabel ( '平均誤差' )

出力グラフは次のようになります。

グラフィックソース: 著者のルーチンの出力

上図から、平均誤差が0となるK値は主にk値13~23の間であることが分かります。

V. 結論

KNN は実装が簡単で、機械学習プロセスで回帰タスクや分類タスクを実行するために使用できるシンプルな機械学習アルゴリズムです。このうち、K 値は最も近い近傍の値を表すパラメータです。実際のアプリケーションでは、K 値を奇数に指定することをお勧めします。さらに、KNN アルゴリズムではさまざまな距離メトリックを選択できます (最も一般的なものはユークリッド距離、マンハッタン距離、ミンコフスキー距離です)。

オリジナルリンク: https://www.kdnuggets.com/2022/04/nearest-neighbors-classification.html

翻訳者紹介

Zhu Xianzhong 氏は、51CTO のコミュニティ エディターであり、51CTO の専門ブロガー兼講師であり、濰坊の大学のコンピューター教師であり、フリーランス プログラミング コミュニティのベテランです。初期にはさまざまな Microsoft テクノロジに注力し (ASP.NET AJX および Cocos 2d-X に関連する 3 冊の技術書を編纂)、オープンソースの世界に 10 年近く携わってきました (人気のフルスタック Web 開発テクノロジに精通)。OneNet/AliOS+Arduino/ESP32/Raspberry Pi をベースとした IoT 開発テクノロジや、Scala+Hadoop+Spark+Flink などのビッグデータ開発テクノロジを理解しています。

<<:  440億ドル!マスク氏がツイッター買収に成功 トランプ氏「アカウントが復活してもツイッターは使わない」

>>:  AIの安全性問題への対応: NIST人工知能リスク管理フレームワーク

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

将来の戦争において、AIは最も危険な兵器となるのでしょうか?

AI兵器は歴史の流れとともに進化し、今日では危険な一歩となっている。 [[406883]] AIは...

人工知能が注目を集め、ロボットキャスターが生放送の「新参者」に

北京ビジネスデイリー(陳偉記者) 知能ロボットは記者、シェフ、囲碁の達人になった後、最近は生放送業界...

「柯潔は2つの石を与えられた」が、それでもAIに負けた。プログラマーが知っておくべきトップ10のAIライブラリとフレームワークはこちら

[51CTO.comより引用] 遅かれ早かれ、この日はやって来る。イ・セドルがアルファ碁に1対4で負...

ホテルは機械学習を使ってどのゲストが立ち上がるかを予測する

現在、主要なOTA(オンライン旅行代理店)プラットフォームは人々の旅行を大幅に容易にしています。ホテ...

人工知能は人間の弱点を克服できる

人工知能の多くの利点はよく知られ、理解され、宣伝されていますが、その限界も明らかです。しかし、あまり...

...

アリババが国際AIサミットを主催、医療AIとマルチメディアコンテンツ理解が話題に

10月15日、記者はアリババが主催する2020 ACMマルチメディア(以下、ACM MM 2020)...

オントロジーから始める:オペレータ関係マップの構築と応用

[[258543]]人類学者ロビン・ダンバーは、人間が親密な人間関係を維持できる最大人数は 150 ...

アリババが自然言語理解の世界記録を更新、AIの常識的推論は人間のそれに近づいている

最近、アリババAIは常識QA分野の権威あるデータセットであるCommonsenseQAで新たな世界記...

...

企業がAIベースのツールを使用して脆弱性を管理する方法

脆弱性の管理は、セキュリティ専門家にとって最優先事項の 1 つです。セキュリティ チームは、サイバー...

...

韓国チームはサンプルの引き渡しを拒否し、2本目のLK-99サスペンションビデオを公開しました! HUSTの新論文が初めて反磁性を証明

昨夜、「LK-99は韓国当局により偽物と摘発され、常温超伝導体ではない」というニュースがインターネッ...

駐車技術の進化: 人工知能が駐車場の未来をどう形作るか

近年、インドは深刻な駐車スペース不足という差し迫った問題に直面している。自動車の数が日々増加している...