回帰、分類、クラスタリング: 機械学習アルゴリズムの長所と短所を分析する 3 つの主要な方向

回帰、分類、クラスタリング: 機械学習アルゴリズムの長所と短所を分析する 3 つの主要な方向

このチュートリアルでは、著者が最新の機械学習アルゴリズムについて簡単に実践的なレビューを行います。同様の要約は多数ありますが、それぞれのアルゴリズムの実際の長所と短所を実際に説明しているものはありません。この記事では、その点を説明したいと考えています。したがって、本稿では、実際の経験に基づいて、各アルゴリズムの長所と短所について議論します。機械知能は、記事の最後でこれらのアルゴリズムの具体的な実装の詳細も提供します。

機械学習アルゴリズムを分類するのは簡単ではありません。一般的に言えば、生成的と識別的、パラメトリックとノンパラメトリック、教師ありと教師なしなど、いくつかの方法があります。

しかし、実際の経験に基づくと、これらは実際の戦闘で最も効果的な分類アルゴリズム方法ではありません。なぜなら、応用機械学習では、開発者は一般に、結果を予測したり、観察結果を分類したりするなど、最終目標を念頭に置いているからです。

そこで、実行する機械学習タスクに基づいてアルゴリズムを分類する別の方法を紹介したいと思います。

1. フリーランチ定理なし

機械学習には、「ただのランチはない」という定理があります。つまり、すべての問題を解決できる単一のアルゴリズムは存在せず、これは特に教師あり学習 (つまり、予測のためのモデリング) に当てはまります。

たとえば、ニューラル ネットワークが常に決定木よりも優れているとは言えませんし、その逆も同様です。データセットのサイズや構造など、これに影響を与える要因は多数あります。

[[191932]]

したがって、固定されたテスト データ セットを使用してパフォーマンスを評価し、最適なアルゴリズムを選択する一方で、問題に対してさまざまなアルゴリズムを試してみる必要があります。

もちろん、使用するアルゴリズムは解決しようとしている問題に適したものでなければなりません。そこで、適切な機械学習タスクをどのように選択するかという疑問が生じます。例え話で言えば、家を掃除する必要がある場合、掃除機、ほうき、モップを使うかもしれませんが、シャベルを取り出して掘り始めることは決してないでしょう。

2. 機械学習タスク

このレビューでは、最も一般的な 3 つの機械学習タスクについて説明します。

  1. 回帰法
  2. 分類方法
  3. クラスタリング手法

3. 説明:

  • この記事では、自然言語処理などの特定の分野の問題については取り上げません。
  • この記事ではすべてのアルゴリズムをレビューするわけではありません。既存のアルゴリズムが多すぎる上に、新しいアルゴリズムが常に登場しているからです。ただし、このリストにより、読者は各タスクの現在の代表的なアルゴリズムの概要を把握できます。

1. 回帰法

回帰法は、数値の連続ランダム変数を予測およびモデル化するための教師あり学習アルゴリズムです。ユースケースには通常、住宅価格の予測、株価の動向、テストのスコアなど、物事が継続的に変化するケースが含まれます。

回帰タスクの特徴は、ラベル付けされたデータセットに数値のターゲット変数があることです。つまり、観測された各サンプルには、アルゴリズムを監視するための数値でラベル付けされた真の値があります。

1.1 線形回帰(正規化)

線形回帰は、回帰タスクで最も一般的に使用されるアルゴリズムの 1 つです。このアルゴリズムは形式が非常に単純で、データ セットに適合する超平面 (変数が 2 つしかない場合は直線) を想定しています。データ セット内の変数間に線形関係がある場合は、非常によく適合する可能性があります。

実際には、単純な線形回帰は、正規化 (LASSO、Ridge、Elastic-Net) を使用した回帰法に置き換えられることがよくあります。正規化は、実際には、過剰適合のリスクを減らすために、回帰係数が多すぎる場合にペナルティを課す手法です。もちろん、モデルのアンダーフィットとオーバーフィットのバランスをとるためにペナルティの強度を決定する必要もあります。

  • 利点: 線形回帰は直感的に理解および解釈でき、正規化によって過剰適合のリスクを軽減できます。さらに、線形モデルでは、確率的勾配降下法と新しいデータを使用してモデルの重みを簡単に更新できます。
  • 欠点: 変数間の関係が非線形の場合、線形回帰のパフォーマンスは低下します。また、より複雑なパターンを捉えるほどの柔軟性はなく、適切な相互作用項を追加したり、多項式を使用したりするのは困難で時間がかかります。

Python 実装: http://scikit-learn.org/stable/modules/linear_model.html

R 実装: https://cran.r-project.org/web/packages/glmnet/index.html

1.2 回帰木(アンサンブル法)

回帰ツリー(決定木の一種)は、データ セットを異なるブランチに繰り返し分割することで階層学習を実現します。セグメンテーションの基準は、各分離の情報ゲインを最大化することです。この分岐構造により、回帰ツリーは非線形関係を自然に学習できるようになります。

ランダム フォレスト (RF) や勾配ブースティング ツリー (GBM) などのアンサンブル手法では、独立してトレーニングされた多数のツリーを組み合わせます。このアルゴリズムの主なアイデアは、複数の弱い学習アルゴリズムを 1 つの強い学習アルゴリズムに組み合わせることですが、ここでは詳しく説明しません。実際には、RF はパフォーマンスを良好にするのが通常簡単ですが、GBM は調整がより困難です。ただし、通常、勾配ブースティング ツリーの方がパフォーマンスの上限が高くなります。

  • 利点: 決定木は非線形関係を学習でき、外れ値に対しても非常に堅牢です。アンサンブル学習は実際に非常に優れたパフォーマンスを発揮し、多くの古典的な(非ディープラーニング)機械学習コンテストで定期的に優勝しています。
  • デメリット: 制約がない場合、単一のツリーはトレーニング データを記憶するまで (剪定なしで) ブランチを保持できるため、簡単に過剰適合する可能性があります。アンサンブル法は、この欠点の影響を軽減することができます。

ランダムフォレスト Python 実装:

http://scikit-learn.org/stable/modules/ensemble.html#ランダムフォレスト

ランダムフォレスト R 実装: https://cran.r-project.org/web/packages/randomForest/index.html

勾配ブースティングツリーの Python 実装:

http://scikit-learn.org/stable/modules/ensemble.html#分類

勾配ブースティングツリー R 実装: https://cran.r-project.org/web/packages/gbm/index.html

1.3 ディープラーニング

ディープラーニングとは、非常に複雑なパターンを学習できる多層ニューラルネットワークを指します。このアルゴリズムは、入力層と出力層の間にある隠し層を使用して、他のアルゴリズムでは学習が難しいデータの中間表現をモデル化します。

深層学習には、畳み込みやドロップアウトなど、アルゴリズムが高次元データを効果的に学習できるようにする重要なメカニズムが他にもいくつかあります。ただし、ディープラーニングでは推定するパラメータが桁違いに大きいため、他のアルゴリズムよりも多くのデータが必要になります。

  • 利点: ディープラーニングは現在、コンピューター ビジョンや音声認識などの一部の分野で最も先進的なテクノロジーです。ディープ ニューラル ネットワークは、画像、音声、テキストなどのデータに対して優れたパフォーマンスを発揮し、新しいデータに対してバックプロパゲーション アルゴリズムを使用してモデル パラメータを更新することも簡単です。それらのアーキテクチャ (つまり、レイヤーの数と構造) はさまざまな問題に適応でき、隠しレイヤーによってアルゴリズムの特徴エンジニアリングへの依存も軽減されます。
  • デメリット: ディープラーニング アルゴリズムは大量のデータを必要とするため、一般的に汎用アルゴリズムとしては適していません。実際、ディープラーニングは、従来の機械学習の問題に対してアンサンブル法ほど優れたパフォーマンスを発揮しないことがよくあります。さらに、トレーニングには計算量が多いため、トレーニング時間を短縮するには、より経験豊富な人がパラメータを調整 (つまり、アーキテクチャとハイパーパラメータを設定) する必要があります。

Python リソース: https://keras.io/

R リソース: http://mxnet.io/

1.4 最近傍アルゴリズム

最近傍アルゴリズムは「インスタンスベース」であるため、トレーニング サンプルのすべての観測値を保持する必要があります。最近傍アルゴリズムは、最も類似したトレーニング例を検索することで、新しい観測値の値を予測します。

ただし、このアルゴリズムはメモリを大量に消費し、高次元データではうまく機能せず、類似性を測定および計算するために効率的な距離関数が必要です。実際には、正規化回帰法またはツリーアンサンブル法が一般的に最適な選択肢となります。

2. 分類方法

分類法は、離散ランダム変数をモデル化または予測するための教師あり学習アルゴリズムです。ユースケースには、電子メールのフィルタリング、金融詐欺、従業員の離職率の予測など、出力がカテゴリとなるタスクが含まれます。

多くの回帰アルゴリズムには対応する分類アルゴリズムがあり、通常は連続値ではなくカテゴリ (またはカテゴリの確率) を予測するのに適しています。

2.1 ロジスティック回帰(正則化)

ロジスティック回帰は線形回帰に対応する分類方法であり、アルゴリズムの基本的な概念は線形回帰から派生しています。ロジスティック回帰は、ロジスティック関数(シグモイド関数)を通じて予測値を 0 から 1 の間にマッピングするため、予測値は特定のカテゴリの確率と見なすことができます。

モデルは依然として「線形」であるため、データが線形に分離可能な場合(つまり、データを超平面によって完全に分離できる場合)にのみ、アルゴリズムは適切に機能します。同様に、ロジスティック モデルは正規化のためにモデル係数にペナルティを課すことができます。

  • 利点: 出力は確率的に適切に解釈され、アルゴリズムを正規化して過剰適合を回避することもできます。ロジスティック モデルでは、確率的勾配降下法と新しいデータを使用してモデルの重みを簡単に更新できます。
  • デメリット: ロジスティック回帰は、複数の決定境界または非線形の決定境界ではパフォーマンスが低下します。

Python実装:

ロジスティック回帰

R 実装: https://cran.r-project.org/web/packages/glmnet/index.html

2.2 分類ツリー(アンサンブル法)

分類ツリーは回帰ツリーに対応します。これらは通常、決定木、より正確には分類および回帰木 (CART) を指します。これは非常に有名な CART アルゴリズムです。

シンプルランダムフォレスト

利点: 回帰法と同様に、分類ツリー アンサンブル法も実際には非常に優れたパフォーマンスを発揮します。これらは通常、異常なデータに対して非常に堅牢かつ拡張可能です。分類ツリーのアンサンブル法は階層構造になっているため、非線形の決定境界を自然にモデル化できます。

  • デメリット: 制約のない単一のツリーは過剰適合する傾向があり、アンサンブル手法を使用するとこの効果が弱まる可能性があります。

ランダムフォレスト Python 実装:

http://scikit-learn.org/stable/modules/ensemble.html#回帰

ランダムフォレスト R 実装: https://cran.r-project.org/web/packages/randomForest/index.html

勾配ブースティングツリーの Python 実装:

http://scikit-learn.org/stable/modules/ensemble.html#分類

勾配ブースティングツリー R 実装: https://cran.r-project.org/web/packages/gbm/index.html

2.3 ディープラーニング

ディープラーニングは分類問題にも簡単に適応できます。実際、ディープラーニングは画像分類などの分類タスクでよく使用されます。

  • 利点: ディープラーニングは、音声、テキスト、画像データの分類に適しています。
  • デメリット: 回帰問題と同様に、ディープ ニューラル ネットワークのトレーニングには大量のデータが必要なので、汎用アルゴリズムではありません。

Python リソース: https://keras.io/

R リソース: http://mxnet.io/

2.4 サポートベクターマシン

サポート ベクター マシン (SVM) は、カーネル関数と呼ばれる手法を使用して非線形分類問題に拡張できます。カーネル関数は基本的に、サポート ベクターと呼ばれる 2 つの観測値間の距離を計算します。 SVM アルゴリズムが探す決定境界は、SVM アルゴリズムとサンプル間隔との間の境界であるため、サポート ベクター マシンは、大マージン分類器とも呼ばれます。

サポート ベクター マシンのカーネル関数は、非線形変換を使用して非線形問題を線形問題に変換します。

たとえば、SVM は線形カーネル関数を使用してロジスティック回帰と同様の結果を得ることができますが、サポート ベクター マシンは間隔を最適化するため、より堅牢です。したがって、実際には、SVM の利点は、非線形カーネル関数を使用して非線形決定境界をモデル化できることです。

  • 利点: SVM は非線形決定境界をモデル化でき、多くのオプションのカーネル関数形式を備えています。 SVM は、特に高次元空間で顕著になる過剰適合に対しても非常に堅牢です。
  • デメリット: ただし、SVM はメモリを大量に消費し、適切なカーネル関数を選択することが重要であるため調整が難しく、大規模なデータセットには拡張できません。現在、業界では、ランダム フォレストがサポート ベクター マシン アルゴリズムよりも優れていることがよくあります。

Python 実装: http://scikit-learn.org/stable/modules/svm.html#classification

R 実装: https://cran.r-project.org/web/packages/kernlab/index.html

2.5 ナイーブベイズ

ナイーブベイズ (NB) は、ベイズの定理と特徴の条件付き独立性の仮定に基づく分類方法です。本質的に、Naive Bayes モデルは確率表であり、トレーニング データを通じてこの表の確率を更新します。新しい観測を予測するために、Naive Bayes アルゴリズムは、サンプルの特性値に基づいて確率テーブル内で最も高い確率を持つカテゴリを検索します。

これが「ナイーブ」と呼ばれる理由は、アルゴリズムの中核が特徴条件独立性(各特徴は互いに独立している)という仮定であり、これは現実世界では基本的に非現実的であるためです。

  • 長所: 条件付き独立性の仮定を維持することは困難ですが、ナイーブ ベイズ アルゴリズムは実際には驚くほどうまく機能します。このアルゴリズムは実装が簡単で、データセットが更新されるにつれて拡張できます。
  • デメリット: ナイーブ ベイズ アルゴリズムは単純すぎるため、上記の分類アルゴリズムに置き換えられることがよくあります。

Python 実装: http://scikit-learn.org/stable/modules/naive_bayes.html

R 実装: https://cran.r-project.org/web/packages/naivebayes/index.html

3. クラスタリング

クラスタリングは、データの内部構造に基づいてアルゴリズムが観測値の自然なグループ (つまり、クラスター) を見つける教師なし学習タスクです。使用例には、顧客セグメンテーション、ニュースのクラスタリング、記事の推奨などがあります。

クラスタリングは一種の教師なし学習(つまり、データにラベルが付けられていない)であり、結果を評価するには通常はデータの視覚化が使用されます。 「正解」(つまり、トレーニング セット内に事前にラベル付けされたクラスター)がある場合は、分類アルゴリズムの方が適切である可能性があります。

3.1 K平均法クラスタリング

K 平均法クラスタリングは、クラスタリング メトリックがサンプル ポイント間の幾何学的距離 (つまり、座標平面上の距離) に基づく汎用アルゴリズムです。クラスターはクラスターの中心の周りのオブジェクトのグループであり、クラスターは球状で同様のサイズで表示されます。クラスタリング アルゴリズムは、単純なだけでなく、ほとんどの問題に対して妥当な結果をもたらすほど柔軟であるため、初心者に推奨されます。

  • 利点: K-means クラスタリングは、前処理と特徴エンジニアリングが効果的に行われていれば、高速かつシンプルで、驚くほどの柔軟性を備えているため、最適なクラスタリング アルゴリズムです。
  • 欠点: アルゴリズムではクラスターの数を指定する必要があり、K 値の選択は通常それほど簡単には決定できません。さらに、トレーニング データ内の実際のクラスターが球形でない場合、K 平均法クラスタリングでは品質の低いクラスターが生成されることがあります。

Python 実装: http://scikit-learn.org/stable/modules/clustering.html#k-means

R 実装: https://stat.ethz.ch/R-manual/R-devel/library/stats/html/kmeans.html

3.2 アフィニティ伝播クラスタリング

AP クラスタリング アルゴリズムは、2 つのサンプル ポイント間のグラフ距離に基づいてクラスターを決定する比較的新しいクラスタリング アルゴリズムです。このクラスタリング方法を使用するクラスターは、サイズが小さく不均等になります。

  • 利点: このアルゴリズムでは、クラスターの正確な数を指定する必要はありません (ただし、「サンプルの優先順位」や「減衰」などのハイパーパラメータを指定する必要があります)。
  • デメリット: AP クラスタリング アルゴリズムの主なデメリットは、トレーニングに時間がかかり、大量のメモリを必要とするため、大規模なデータ セットに拡張することが難しいことです。さらに、このアルゴリズムでは、基礎となるクラスターが球状であると想定しています。

Python実装:

http://scikit-learn.org/stable/modules/clustering.html#アフィニティ伝播

R 実装: https://cran.r-project.org/web/packages/apcluster/index.html

3.3 階層的/凝集的

階層的クラスタリングは、次の概念に基づいたクラスタリング アルゴリズムのファミリです。

  • 最初は、1 つのデータ ポイントがクラスターとして扱われます。
  • 各クラスターについて、同じ基準に基づいてクラスターをマージします
  • このプロセスは、クラスターが 1 つだけ残るまで繰り返され、クラスターの階層が得られます。

  • 利点: 階層的クラスタリングの主な利点は、クラスターが球状であると想定する必要がなくなることです。さらに、大規模なデータセットに拡張することもできます。
  • デメリット: K 平均法クラスタリングに少し似ていますが、このアルゴリズムでは、一定数のクラスター (つまり、アルゴリズムの完了後に保持されるレベル) が必要です。

Python 実装: http://scikit-learn.org/stable/modules/clustering.html#hierarchical-clustering

R 実装: https://stat.ethz.ch/R-manual/R-devel/library/stats/html/hclust.html

3.4 DBスキャン

DBSCAN は、サンプル ポイントの密集した領域をクラスターにグループ化する密度ベースのアルゴリズムです。また、最近では、さまざまな密度のクラスタリングを可能にする HDBSCAN と呼ばれる開発もあります。

  • 利点: DBSCAN では、クラスターが球状であると想定する必要がなく、パフォーマンスはスケーラブルです。さらに、すべてのポイントをクラスターに割り当てる必要がないため、クラスタリング外れ値が削減されます。
  • デメリット: ユーザーは、クラスター密度を定義するハイパーパラメータ「epsilon」と「min_sample」を調整する必要があります。 DBSCAN はこれらのハイパーパラメータに対して非常に敏感です。

Python 実装: http://scikit-learn.org/stable/modules/clustering.html#dbscan

R 実装: https://cran.r-project.org/web/packages/dbscan/index.html

IV. 結論

この記事では、回帰問題、分類問題、クラスタリング問題という 3 つの観点から各アルゴリズムの長所と短所を予備的に理解し、それらのアルゴリズムがどのようなものであるかについても基本的な理解を深めます。ただし、上記の各アルゴリズムには、提示されていない概念や詳細がさらにあります。損失関数が何であるか、トレーニングの目的が何であるか、重みの更新戦略が何であるかなどはわかりません。そこで、Machine Heart の過去の記事をいくつか検索し、興味のある読者にこれらのアルゴリズムの具体的な詳細を提供したいと考えています。

線形回帰:

  • TensorFlow 機械学習の初心者向けガイド: 線形回帰を実装するには? (演習付き)

決定木(アンサンブル法):

  • ゼロから始める: Python で決定木アルゴリズムを実装する

サポートベクターマシン:

  • サポートベクターマシンの説明(学習リソース付き)

ディープラーニング:

  • ディープニューラルネットワークの包括的な概要: 基本概念から実用的なモデル、ハードウェアの基礎まで

クラスタリングアルゴリズム:

  • ビッグデータの機械理解の秘密:クラスタリングアルゴリズムの詳細な説明

***、基本的な概念であれ、具体的なアルゴリズムであれ、最も重要なのは実践です。これらのアルゴリズムを実践しなければ、習得していないことが分からないので、この記事が読者の皆さんが独自のアルゴリズムを実践する助けになれば幸いです。

元記事: https://elitedatascience.com/machine-learning-algorithms#regression

[この記事は、51CTOコラムニストのMachine Heart、WeChatパブリックアカウント「Machine Heart(id:almosthuman2014)」によるオリジナル翻訳です]

この著者の他の記事を読むにはここをクリックしてください

<<:  DeepMap COO 羅偉氏との独占インタビュー:自動運転の時代に、スタートアップは高精度地図の分野でどのように躍進できるのか?

>>:  リー・ヤンがスマートシティ建設について語る:ハードウェアからプラットフォームまで、Terminusエコシステムが先導する

ブログ    
ブログ    
ブログ    

推薦する

中国をターゲットに!米国はドローンや衛星画像を含むAIソフトウェアの輸出を緊急制限

アメリカは再び中国に対して行動を起こしたが、今回はAIソフトウェアに関してだ。月曜日に発効する新しい...

...

スマートテクノロジーは小売業界にどのような影響を与えるでしょうか?

過去数年間、小売業界はテクノロジーによって革命を起こしてきました。店舗の日々の運営方法から、消費者の...

人工知能の開発を加速するための9つのヒント

現在、多くの企業が AI テクノロジーで一定の成功を収めており、IT チームは AI プロジェクトを...

...

...

「無人時代」が来ます。準備はできていますか?

DJIのドローン、JDの無人倉庫、アリババの無人スーパー、百度の無人自動車など、数年前からすでに台...

...

張亜琴:業界にとって、ディープラーニングの黄金時代は始まったばかりだ

本日、張亜琴教授はCNCC 2020で「スマートテクノロジーのトレンド」をテーマに講演しました。デジ...

...

顔認証決済を使用する理由は何ですか?顔認証決済は安全ですか?

顔認証決済に顔認識を使用する理由は何ですか? [[439417]]外で何かを買いたいのに、財布を持っ...

2021年の10のAIトレンド

[[361168]] IDCは2019年9月の時点で、2023年までに人工知能技術への支出が3倍以上...

...

ChatGPT が突然大きなバグを発見しました!フル機能のGPT-4は無料で使用でき、ネットユーザーは大喜びしている

11月15日、OpenAIは突然、ChatGPT Plusの新規ユーザー登録を停止すると発表しました...

光害を拒否し、AIがスマートシティの交通安全構築を推進

「ある瞬間、目の前のすべてがぼやけて、前方の道路状況がまったく見えませんでした。とても危険でした!」...