翻訳者 | 朱 仙中 校正 | 梁哲、孫淑娟 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アルゴリズムの動作原理
新しいデータ ポイントに最も近い K 個の隣接ポイントを検索します。 次の図はこれらの手順の概要を示しています。 画像ソース: kdnuggets.com 4. KNNアルゴリズム分類タスクの適用例以下は、Iris データセットを使用した分類タスクで KNN アルゴリズムを使用する例です。 1. ライブラリをインポートするnumpyをnp としてインポートする 2. アイリスデータセットをロードするurl = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data" これまでの実行結果は次のとおりです。 3. データ前処理これは、データセットを属性とラベルに分割するために行われます。 X 変数にはデータセットの最初の 4 つの列 (属性と呼ぶ) が含まれ、y 変数には最後の列 (ラベルと呼ぶ) が含まれます。 X =データセット.iloc [ : , : - 1 ] .値 4. トレーニングセットとテストセットに分割するこのステップでは、データセットをトレーニング部分とテスト部分に分割して、アルゴリズムがトレーニング データをどの程度学習したか、テスト データでどの程度パフォーマンスを発揮するかを確認します。 sklearn.model_selection からtrain_test_split をインポートします 5. 機能のスケーリング特徴スケーリングは、予測前のデータ前処理における重要なステップです。データの特徴範囲を正規化するには、次の方法を使用します。 sklearn.preprocessing からStandardScaler をインポートします 6. KNNを使用して予測を行うまず、sklearn.neighbors ライブラリから KNeighborsClassifier クラスをインポートし、K 値を選択する必要があります。この例では、7 を選択しました (同点状況を回避するために奇数値を選択することを強くお勧めします)。 sklearn.neighbors からKNeighborsClassifier をインポートします 次に、テスト データセットで予測を実行します。 y_pred = 分類器.予測(X_test) 7. アルゴリズムの精度評価sklearn.metrics ライブラリの助けを借りて、分類レポートを通じてアルゴリズムの精度を評価し、精度、再現率、F1 スコアを確認できます。 sklearn.metrics からclassification_reportをインポート コードを実行した結果は次のとおりです。 このことから、KNN アルゴリズムは 30 個のデータ ポイントを平均全体精度 95%、再現率 93%、F1 スコア 94% で分類したことがわかります。 8. 適切なK値を見つけるこの例では、K 値として 7 を選択しました。 K の最適値が何であるかを確認したい場合は、K のさまざまな値とそれによって生じるエラー率を示すグラフを生成できます。 1から30までのKの値を調べます。これを行うには、1 から 30 までのループを実行し、各ループで平均エラーを計算してエラー リストに追加する必要があります。関連するコードは次のとおりです。 エラー= [ ] K値のエラー率のグラフを描きます。 plt .figure (図サイズ= ( 12 , 5 ) ) 出力グラフは次のようになります。 グラフィックソース: 著者のルーチンの出力 上図から、平均誤差が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新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
AI兵器は歴史の流れとともに進化し、今日では危険な一歩となっている。 [[406883]] AIは...
北京ビジネスデイリー(陳偉記者) 知能ロボットは記者、シェフ、囲碁の達人になった後、最近は生放送業界...
[51CTO.comより引用] 遅かれ早かれ、この日はやって来る。イ・セドルがアルファ碁に1対4で負...
現在、主要なOTA(オンライン旅行代理店)プラットフォームは人々の旅行を大幅に容易にしています。ホテ...
人工知能の多くの利点はよく知られ、理解され、宣伝されていますが、その限界も明らかです。しかし、あまり...
10月15日、記者はアリババが主催する2020 ACMマルチメディア(以下、ACM MM 2020)...
[[258543]]人類学者ロビン・ダンバーは、人間が親密な人間関係を維持できる最大人数は 150 ...
最近、アリババAIは常識QA分野の権威あるデータセットであるCommonsenseQAで新たな世界記...
脆弱性の管理は、セキュリティ専門家にとって最優先事項の 1 つです。セキュリティ チームは、サイバー...
昨夜、「LK-99は韓国当局により偽物と摘発され、常温超伝導体ではない」というニュースがインターネッ...
近年、インドは深刻な駐車スペース不足という差し迫った問題に直面している。自動車の数が日々増加している...