このチュートリアルでは、著者が最新の機械学習アルゴリズムについて簡単に実践的なレビューを行います。同様の要約は多数ありますが、それぞれのアルゴリズムの実際の長所と短所を実際に説明しているものはありません。この記事では、その点を説明したいと考えています。したがって、本稿では、実際の経験に基づいて、各アルゴリズムの長所と短所について議論します。機械知能は、記事の最後でこれらのアルゴリズムの具体的な実装の詳細も提供します。 機械学習アルゴリズムを分類するのは簡単ではありません。一般的に言えば、生成的と識別的、パラメトリックとノンパラメトリック、教師ありと教師なしなど、いくつかの方法があります。 しかし、実際の経験に基づくと、これらは実際の戦闘で最も効果的な分類アルゴリズム方法ではありません。なぜなら、応用機械学習では、開発者は一般に、結果を予測したり、観察結果を分類したりするなど、最終目標を念頭に置いているからです。 そこで、実行する機械学習タスクに基づいてアルゴリズムを分類する別の方法を紹介したいと思います。 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 の利点は、非線形カーネル関数を使用して非線形決定境界をモデル化できることです。
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 平均法クラスタリングは、クラスタリング メトリックがサンプル ポイント間の幾何学的距離 (つまり、座標平面上の距離) に基づく汎用アルゴリズムです。クラスターはクラスターの中心の周りのオブジェクトのグループであり、クラスターは球状で同様のサイズで表示されます。クラスタリング アルゴリズムは、単純なだけでなく、ほとんどの問題に対して妥当な結果をもたらすほど柔軟であるため、初心者に推奨されます。
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 つのサンプル ポイント間のグラフ距離に基づいてクラスターを決定する比較的新しいクラスタリング アルゴリズムです。このクラスタリング方法を使用するクラスターは、サイズが小さく不均等になります。
Python実装: http://scikit-learn.org/stable/modules/clustering.html#アフィニティ伝播 R 実装: https://cran.r-project.org/web/packages/apcluster/index.html 3.3 階層的/凝集的 階層的クラスタリングは、次の概念に基づいたクラスタリング アルゴリズムのファミリです。
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 と呼ばれる開発もあります。
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 の過去の記事をいくつか検索し、興味のある読者にこれらのアルゴリズムの具体的な詳細を提供したいと考えています。 線形回帰:
決定木(アンサンブル法):
サポートベクターマシン:
ディープラーニング:
クラスタリングアルゴリズム:
***、基本的な概念であれ、具体的なアルゴリズムであれ、最も重要なのは実践です。これらのアルゴリズムを実践しなければ、習得していないことが分からないので、この記事が読者の皆さんが独自のアルゴリズムを実践する助けになれば幸いです。 元記事: https://elitedatascience.com/machine-learning-algorithms#regression [この記事は、51CTOコラムニストのMachine Heart、WeChatパブリックアカウント「Machine Heart(id:almosthuman2014)」によるオリジナル翻訳です] この著者の他の記事を読むにはここをクリックしてください |
<<: DeepMap COO 羅偉氏との独占インタビュー:自動運転の時代に、スタートアップは高精度地図の分野でどのように躍進できるのか?
>>: リー・ヤンがスマートシティ建設について語る:ハードウェアからプラットフォームまで、Terminusエコシステムが先導する
アメリカは再び中国に対して行動を起こしたが、今回はAIソフトウェアに関してだ。月曜日に発効する新しい...
過去数年間、小売業界はテクノロジーによって革命を起こしてきました。店舗の日々の運営方法から、消費者の...
現在、多くの企業が AI テクノロジーで一定の成功を収めており、IT チームは AI プロジェクトを...
DJIのドローン、JDの無人倉庫、アリババの無人スーパー、百度の無人自動車など、数年前からすでに台...
本日、張亜琴教授はCNCC 2020で「スマートテクノロジーのトレンド」をテーマに講演しました。デジ...
顔認証決済に顔認識を使用する理由は何ですか? [[439417]]外で何かを買いたいのに、財布を持っ...
[[361168]] IDCは2019年9月の時点で、2023年までに人工知能技術への支出が3倍以上...
11月15日、OpenAIは突然、ChatGPT Plusの新規ユーザー登録を停止すると発表しました...
「ある瞬間、目の前のすべてがぼやけて、前方の道路状況がまったく見えませんでした。とても危険でした!」...