機械学習では、いくつかの分類アルゴリズムが一般的に使用されています。適切なアルゴリズムを選択するにはどうすればよいでしょうか?

機械学習では、いくつかの分類アルゴリズムが一般的に使用されています。適切なアルゴリズムを選択するにはどうすればよいでしょうか?

今日は、機械学習における一般的な分類アルゴリズム 6 つ (K 最近傍法、決定木、単純ベイズ、ロジスティック回帰、サポート ベクター マシン、ランダム フォレスト、AdaBoost、GBDT、XGBoost) を紹介します。

以下では、各アルゴリズムの概念と特徴を紹介します。

  • ケーエヌエヌ
  • 決定木
  • ナイーブベイズ
  • ロジスティック回帰
  • サポートベクターマシン
  • ランダムフォレスト
  • アダブースト
  • GBDT
  • XGBoost

1. K近傍法(KNN)

k近傍法アルゴリズム(KNN)は、異なる特徴値間の距離を測定する方法を使用して分類を行います。つまり、トレーニングデータセットが与えられた場合、新しい入力インスタンスに対して、トレーニングデータセット内のインスタンスに最も近いK個のインスタンス(上記のK近傍)が検索されます。これらのK個のインスタンスのほとんどが特定のクラスに属している場合、入力インスタンスはこのクラスに分類されます。

KNN は、基本的な分類および回帰手法です。基本的なアプローチは、テスト インスタンスが与えられた場合、特定の距離メトリックに基づいてトレーニング セット内でそれに最も近い k 個のインスタンス ポイントを見つけ、これらの k 個の最近傍の情報に基づいて予測を行うことです。

通常、「投票法」は分類タスクで使用できます。つまり、これらの k 個のインスタンスで最も頻繁に出現するラベル カテゴリを予測結果として選択します。「平均法」は回帰タスクで使用できます。つまり、これらの k 個のインスタンスの実数値出力ラベルの平均を予測結果として取得します。距離に基づいて加重平均または加重投票を実行することもでき、インスタンスが近いほど重みが大きくなります。

k近傍法には明示的な学習プロセスがありません。実際、これはよく知られている怠惰な学習の代表例です。このタイプの学習技術は、トレーニング時間のオーバーヘッドをゼロにして、トレーニングフェーズ中にサンプルを保存するだけで、テストサンプルを受け取った後に処理します。

k 最近傍法の 3 つの要素、つまり距離測定、k 値の選択、分類決定ルールは、k 最近傍法の 3 つの基本要素です。

kNN アルゴリズムの特徴:

利点:高精度、外れ値の影響を受けない、データ入力の仮定がない

デメリット:計算の複雑さと空間の複雑さが高い

適用可能なデータ範囲:数値および名目値

2. 決定木

決定木は非パラメトリックな教師あり学習法です。つまり、固定パラメータを持たず、データに対して分類または回帰学習を実行します。決定木の目的は、既知のデータから一連のルールを学習し、単純なルールベースの判断を通じて未知のデータを予測することです。

決定木は基本的な分類および回帰手法です。分類問題では、特徴に基づいてインスタンスを分類するプロセスを表します。これは、特徴空間とクラス空間で定義された一連の if-then ステートメントまたは条件付き確率分布として考えることができます。

決定木には通常、特徴選択、決定木生成、決定木の剪定という 3 つのステップがあります。

決定木を使用した分類: ルート ノードから始めて、インスタンスの特徴がテストされ、テスト結果に基づいてインスタンスが子ノードに割り当てられます。このとき、各子ノードは特徴の値に対応します。インスタンスは、リーフ ノードに到達するまで再帰的にテストおよび割り当てられ、最終的にインスタンスはリーフ ノードのクラスに割り当てられます。

決定木モデル

決定木学習の目的は、与えられたトレーニング データ セットに基づいて決定木モデルを構築し、インスタンスを正しく分類できるようにすることです。

決定木学習の本質は、トレーニング セットから一連の分類ルールを要約すること、またはトレーニング データ セットから条件付き確率モデルを推定することです。

決定木学習の損失関数: 正規化された最大尤度関数。

決定木学習のテスト: 損失関数の最小化。

決定木の原理は、一連のデータに基づいてゲームの答えを出す、質問と回答の推測ゲームに似ています。

決定木アルゴリズムの機能:

利点:計算の複雑さは高くなく、出力結果は理解しやすく、中間値の欠落の影響を受けにくく、無関係な特徴データを処理できます。

デメリット:過剰マッチングの問題が発生する可能性があります。

適用可能なデータ型:数値および名目値

3. ナイーブベイズ

ナイーブベイジアンは、ベイズの定理と特徴の条件付き独立仮定に基づいた分類方法です。特徴を通じて分類の確率を計算し、分類の確率が高いケースを選択します。

ナイーブベイズは、古典的な機械学習アルゴリズムの 1 つであり、確率理論に基づく数少ない分類アルゴリズムの 1 つです。ほとんどの分類アルゴリズムでは、すべての機械学習分類アルゴリズムの中で、ナイーブ ベイズは他の大多数の分類アルゴリズムとは異なります。たとえば、決定木、KNN、ロジスティック回帰、サポートベクターマシンなどはすべて判別法であり、決定関数または条件付き分布のいずれかを使用して、特徴出力 Y と特徴 X の関係を直接学習します。ただし、ナイーブベイズは生成手法であり、アルゴリズムは原理的に単純で実装も簡単です。

ナイーブベイズ

scikit-learn には、合計 3 つの単純ベイズ分類アルゴリズム クラスがあります。それらは、GaussianNB、MultinomialNB、BernoulliNB です。このうち、GaussianNB は事前分布としてガウス分布を使用するナイーブベイズ、MultinomialNB は事前分布として多項式分布を使用するナイーブベイズ、BernoulliNB は事前分布としてベルヌーイ分布を使用するナイーブベイズです。

ナイーブベイズアルゴリズムの特徴:

利点:データが少ない場合でも効果的であり、複数カテゴリの問題を処理できます。

デメリット:入力データの準備方法に左右されます。

適用可能なデータタイプ:名目データ

4. ロジスティック回帰

ロジスティック回帰は、過去の観察に基づいて従属変数の結果を予測するために使用される統計手法です。これは回帰分析の一種であり、バイナリ分類問題を解決するためによく使用されるアルゴリズムです。

ロジスティック回帰アルゴリズムの機能:

利点:計算コストが低く、理解しやすく実装しやすい

デメリット:アンダーフィッティングになりやすく、分類精度が高くない可能性がある (ここでは構築されたデータを使用しており、効果はより高く、複数回実行すると結果が異なる可能性があります)

5. サポートベクターマシン (SVM)

サポートベクターマシン(略して SVM)は、サポートベクターマシンの英語名です。これは、統計的分類や回帰分析で広く使用されている教師あり学習法です。サポート ベクター マシン (SVM) は非常に一般的な分類器です。基本的な考え方は、セグメンテーション サーフェスを構築してデータを分離することです。

SVM は、教師あり学習を使用してデータのバイナリ分類を実行する一般化線形分類器の一種です。その決定境界は、学習サンプルに対して解決される最大マージン超平面であり、問​​題を凸二次計画法を解く問題に変換できます。ロジスティック回帰やニューラル ネットワークと比較すると、サポート ベクター マシンは、複雑な非線形方程式を学習するためのよりクリーンかつ強力な方法を提供します。

具体的には、元の空間で 2 種類のサンプルが線形分離可能な場合に、それらのサンプルの最適な分類超平面を見つけることです。問題が線形分離不可能な場合、スラック変数が追加され、低次元入力空間のサンプルが非線形マッピングを使用して高次元空間にマッピングされ、線形分離可能になるため、特徴空間で最適な分類超平面を見つけることができます。

SVM の使用基準: n は特徴の数、m はトレーニング サンプルの数です。

  • n が m よりはるかに大きい場合、つまり、トレーニング セット データの量が複雑な非線形モデルをトレーニングするのに十分でない場合は、カーネル関数のないロジスティック回帰モデルまたはサポート ベクター マシンを選択します。
  • n が小さく、m が中程度の大きさの場合 (たとえば、n が 1 ~ 1000、m が 10 ~ 10000 の場合)、ガウス カーネル関数を備えたサポート ベクター マシンを使用します。
  • n が小さく、m が大きい場合、たとえば、n が 1 ~ 1000 で、m が 50000 より大きい場合、サポート ベクター マシンを使用すると非常に遅くなります。解決策としては、より多くの機能を作成して追加し、カーネル関数なしでロジスティック回帰またはサポート ベクター マシンを使用することです。

SVM アルゴリズムの機能:

利点:計算コストが低く、理解しやすく実装しやすい

デメリット:アンダーフィッティングになりやすく、分類精度が高くない可能性がある

適用可能なデータタイプ:数値データと名目データ

6. ランダムフォレスト

ランダム フォレストは複数の決定木を含む分類器であり、その出力のカテゴリは個々の木によって出力されるカテゴリのモードによって決まります。ランダム フォレストは、決定木の一般化能力が弱いという問題を解決します。

ランダムフォレストアルゴリズムの具体的なプロセス

ランダムフォレストアルゴリズムの機能:

アドバンテージ:

  • 多くの種類のデータに対して、非常に正確な分類器を生成できる。
  • 多数の入力変数を処理できる
  • カテゴリを決定する際に変数の重要性を評価するために使用できます。
  • フォレストを構築する際、一般化誤差の偏りのない推定値を内部的に生成することができる。
  • 欠損データを推定し、データの大部分が欠損している場合でも精度を維持するための優れた方法が含まれています。
  • 不均衡な分類データセットの場合、誤差は均衡化される可能性がある。
  • ラベルなしデータに拡張可能。ラベルなしデータは通常、教師なし手法を使用してクラスタ化され、逸脱を検出したりデータを表示したりすることもできます。
  • 学習プロセスは非常に速い

欠点:

  • 決定木の解釈可能性を犠牲にする
  • ノイズの多い分類や回帰問題では過剰適合が発生する可能性がある
  • 複数のカテゴリ変数を持つ問題では、ランダムフォレストはベース学習器の精度を向上させない可能性がある。

7. AdaBoostアルゴリズム

ブースティング法は、弱学習アルゴリズムから始まり、繰り返し学習して一連の弱分類器(つまり、基本分類器)を取得し、これらの弱分類器を組み合わせて強分類器を形成します。ブースティング法のほとんどは、トレーニングデータセットの確率分布(トレーニングデータの重み分布)を変更し、弱学習アルゴリズムを呼び出して、異なるトレーニングデータ分布の一連の弱分類器を学習します。

AdaBoost アルゴリズムの機能:

アドバンテージ:

1. 高い分類精度

2. サブ分類子の構築にはさまざまな方法を使用できますが、Adaboost アルゴリズムはフレームワークを提供します。

3. シンプルで、機能スクリーニングは必要ありません。

4. 過剰適合は発生しません。

欠点:

1. 誤分類されたサンプルが複数回誤分類され、複数回重み付けされた後、重みが大きくなりすぎて分類器の選択に影響し、劣化の問題が発生します。(重み更新方法を改善する必要がある)

2. データの不均衡の問題により分類精度が急激に低下します。

3. アルゴリズムのトレーニングには時間がかかり、拡張が困難です。

4. 過剰適合や堅牢性の欠如などの問題がある。

8. GBDT

GBDT の基本構造は決定木のフォレストであり、学習方法は勾配ブースティングです。
具体的には、統合モデルとして、GBDT はすべてのサブツリーの結果を合計して予測します。 GBDT は、決定サブツリーを 1 つずつ生成して、フォレスト全体を生成します。新しいサブツリーを生成するプロセスでは、サンプル ラベル値と現在のフォレスト予測値の間の残差を使用して、新しいサブツリーを構築します。

GBDT アルゴリズムの機能:

アドバンテージ:

1) 連続値、離散値など、さまざまなタイプのデータを柔軟に扱うことができます。

2) パラメータ調整時間が比較的短いため、予測精度も比較的高くなります。これは SVM に関連しています。

3) 外れ値に対して非常に堅牢ないくつかの堅牢な損失関数を使用します。たとえば、Huber 損失関数と Quantile 損失関数。

欠点:

1) 弱学習器間​​の依存関係により、データを並列にトレーニングすることが困難です。ただし、部分的な並列処理は、自己サンプリング SGBT を通じて実現できます。

9. XGBoostアルゴリズム

eXtreme Gradient Boosting (XGBoost)。 XGBoost は、Tianqi Chen らが開発したオープンソースの機械学習プロジェクトです。GBDT アルゴリズムを効率的に実装し、アルゴリズムとエンジニアリングに多くの改善を加えています。Kaggle コンテストやその他の多くの機械学習コンテストで広く使用されており、優れた結果を達成しています。

これは、超並列ブーストツリー用のツールです。現在、最速かつ最高のオープンソース ブーストツリー ツールキットです。 XGBoost で使用されるアルゴリズムは、分類問題と回帰問題の両方に使用できる GBDT (勾配ブースティング決定木) を改良したものです。 GBDT との最大の違いは、xgboost が目的関数に対して 2 次テイラー展開を実行して、次のステップでフィッティングするツリーのリーフ ノードの重みを見つけ (最初にツリーの構造を決定する必要があります)、次に損失関数に従って各分割ノードの損失削減を見つけ、分割損失に従って分割に適切な属性を選択することです。

1.XGBoost には GBDT と比較して次の利点があります。

過剰適合を避けるためにツリー モデルの複雑さが正則化項に追加されるため、一般化パフォーマンスは GBDT よりも優れています。

損失関数はテイラー展開を使用して展開され、最適化を高速化するために 1 次導関数と 2 次導関数の両方が使用されます。

GBDT は基本学習者として CART のみをサポートしますが、XGBoost は基本学習者として線形分類器もサポートします。

ランダム フォレストのような特徴サブサンプリングが導入され、過剰適合を回避し、計算を削減できます。

最適な分割点を探す際には、従来の貪欲アルゴリズムの効率の低さを考慮して、近似貪欲アルゴリズムを実装し、高速化とメモリ使用量の削減を図っています。また、スパースデータセット内の欠損値の処理も考慮されています。

XGBoost は並列処理をサポートしています。 XGBoost の並列性は、モデル生成の並列性ではなく、特徴の並列性です。特徴はブロックの形でメモリ内にソートされて保存され、この構造は後続の反復で再利用されます。このブロックにより並列化も可能になります。次に、ノードが分割されると、各機能のゲインが計算され、最終的にゲインが最大の機能が分割用に選択されます。その後、各機能のゲイン計算を複数のスレッドで実行できます。

2. lightGBMと比較した欠点:

XGBoosting は事前ソートを使用します。反復処理の前に、ノードの特徴が事前ソートされ、最適なセグメンテーション ポイントがトラバースされて選択されます。データ量が多い場合、貪欲法は時間がかかります。LightGBM 法はヒストグラム アルゴリズムを使用します。これは、メモリの占有量が少なく、データ セグメンテーションの複雑さが低くなります。

XGBoosting はレベルごとに決定木を生成し、同じ層の葉を同時に分割することで、マルチスレッド最適化を実行し、過剰適合になりにくくなっています。ただし、多くの葉ノードの分割ゲインは低いため、さらに分割する必要がなく、不要なオーバーヘッドが発生します。LightGBM は、ディープ最適化と葉ごとの成長戦略を使用して、現在の葉から最大のゲインを持つノードを毎回選択して分割し、ループで反復しますが、より深い決定木が成長し、過剰適合を引き起こします。そのため、それを制限し、過剰適合を防ぐためにしきい値が導入されています。

どの分類アルゴリズムを選択するかを決定する方法

ここでは、ビジネス上の問題を解決するためにどの分類アルゴリズムを使用すべきかを理解するのに役立つリストを示します。

  1. 問題の特定: 最初に行うべきことは、目の前のタスクを徹底的に理解することです。教師あり分類の場合、ロジスティック回帰、ランダムフォレスト、決定木などのアルゴリズムを使用できます。
  2. データセットのサイズ: データセットのサイズも、アルゴリズムを選択する際に考慮すべきパラメーターです。比較的高速なアルゴリズムは少ないので、それらに切り替えるのがよいでしょう。データセットのサイズが小さい場合は、Naive Bayes のような低バイアス/高分散アルゴリズムを使用できます。逆に、データセットが大きく、特徴の数が多い場合は、KNN、決定木、SVM などの高バイアス/低分散アルゴリズムを使用する必要があります。
  3. 予測精度: モデルの精度は、分類器の精度をテストするパラメーターです。予測された出力値が正しい出力値とどの程度一致しているかを反映します。もちろん、より高い精度が望ましいですが、モデルの過剰適合もチェックする必要があります。
  4. トレーニング時間: SVM やランダム フォレストなどの複雑なアルゴリズムでは、計算に多くの時間がかかる場合があります。さらに、精度が高くデータセットが大きいほど、パターンを学習するのにより多くの時間が必要になります。ロジスティック回帰のような単純なアルゴリズムは実装が簡単で、時間を節約できます。
  5. データセットの線形性: 入力変数とターゲット変数の間には必ずしも線形関係があるわけではありません。したがって、この関係を分析し、アルゴリズムを慎重に選択する必要があります。アルゴリズムの一部は線形データセットに限定されているためです。線形性をチェックする最良の方法は、線形ラインを当てはめるか、ロジスティック回帰または SVM を実行して残差を探すことです。エラーが大きい場合は、データが非線形であり、複雑なアルゴリズムの実装が必要であることを示します。
  6. 特徴の数: データセットに不必要に多くの特徴が含まれており、すべての特徴が関連しているわけではない場合があります。次に、この状況に最適な SVM などのアルゴリズムを使用するか、主成分分析を使用して重要な特徴を判断できます。

<<: 

>>: 

ブログ    
ブログ    
ブログ    

推薦する

物体検出にディープラーニングを使用する方法

[51CTO.com クイック翻訳]ディープニューラルネットワークは、視覚情報を処理する強力な能力で...

...

...

...

製造バリューチェーンにおいて RPA に真のチャンスはあるのでしょうか?

[[421304]]製造業における自動化の推進力は非常に単純です。自動化は人間の作業をシミュレート...

医療診断AIプロジェクトを実施するための10のステップ

【51CTO.com クイック翻訳】ヘルスケアのあらゆる側面において、時間は常に最も貴重な部分である...

「機械学習システム設計ガイド」は、このNVIDIAガールの人気プロジェクトです

今年 8 月、スタンフォード大学を卒業し、現在 NVIDIA の人工知能アプリケーション チームに勤...

エイリアンがトレンド検索リストのトップに!米国が初のUFO公聴会を開催

昨日、米国議会の公聴会が中国国内の複数のメディアのトレンド検索のトップに躍り出た。 これを一言でまと...

AIがクラウドコンピューティング管理の改善に役立ついくつかの方法

企業がクラウド管理について考えるとき、主にパフォーマンスの監視、セキュリティの維持、コンプライアンス...

データ構造とアルゴリズム、グラフをトラバースする2つの方法を理解する

[[331362]] 1 はじめにトラバーサルとは、特定のノードから開始し、特定の検索ルートに従って...

モデルを最適化する方法だけを心配する必要はありません。これは機械学習のすべてではありません。

[[263282]]機械学習分野の学生、研究者、企業の開発者は、より高い精度/AUC/mAP など...

2024年に最も使用される11のAIテキスト生成ツール

世界は、スーパーヒーローのマントを身につけていない強力な世界的勢力のような人工知能 (AI) が支配...

セキュリティ分野におけるドローン技術応用の現状

[[422011]] 2013年、バハマで仕事をしていたとき、私は現在ドローンとして知られているもの...