データ サイエンティストに必須の機械学習アルゴリズム 10 選

データ サイエンティストに必須の機械学習アルゴリズム 10 選

出典: towarddatascience

シャシャンク・グプタ

「Rake World」編集部:そうだね~鉄腕アトム、KABUDA、エヴァだね

機械学習の実践者は非常に多様な性格を持っていると言えます。彼らの中には、「私は X の専門家であり、X はあらゆる種類のデータでトレーニングできます」(X は何らかのアルゴリズム)と言う人がいる一方で、「自分の才能を適切な仕事に活かすことができます」と言う人もいます。彼らの多くは、「何でも屋が一つの分野に特化する」戦略を採用しており、1つの分野で深い専門知識を持ち、機械学習のさまざまな領域についてもある程度理解しています。そうは言っても、データ サイエンティストの実践者として、遭遇する新しい領域の問題を解決するのに役立つ一般的な機械学習アルゴリズムの基礎知識を理解しておく必要があるという事実は誰も否定できません。この記事では、一般的な機械学習アルゴリズムについて簡単に説明し、その謎をすぐに理解できるように関連リソースをリストします。

1. 主成分分析(PCA)/ SVD

PCA は、ベクトルで構成されるデータセットのグローバル プロパティを理解するための教師なし手法です。この記事では、データ ポイントの共分散行列を分析して、どの次元 (ほとんどの場合)/データ ポイント (少数の場合) がより重要であるか (つまり、それらの間の変動は大きいが、他の変数との共分散は低い) を理解します。行列の上位主成分 (PC) を考える 1 つの方法は、最も高い固有値を持つ固有ベクトルを考慮することです。特異値分解 (SVD) は、本質的には順序付けられたコンポーネントを計算する方法ですが、ポイントの共分散行列がなくても計算できます。

このアルゴリズムは、次元を削減したデータ ポイントを取得することで、次元の問題を克服するのに役立ちます。

ライブラリ:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.svd.html

http://scikitlearn.org/stable/modules/generated/sklearn.decomposition.PCA.html

入門チュートリアル:

出典: http://arxiv.org/pdf/1404.1100.pdf

2a. 最小二乗法と多項式フィッティング

大学で学んだ数値解析コードを覚えていますか?直線と曲線を使用して点を結び、方程式を作成します。機械学習では、それらを使用して、次元の低い小さなデータセットに曲線を当てはめることができます。 (大規模なデータや次元数の多いデータセットの場合、実験の結果は常に過剰適合になる可能性があるため、気にしないでください)。 OLS には閉じた形式のソリューションがあるため、複雑な最適化手法を使用する必要はありません。

上の図に示すように、このアルゴリズムを使用すると、単純な曲線/回帰をフィッティングするのに非常に便利であることは明らかです。

ライブラリ:

https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.html

numpy の 1.10.0 リファレンス

入門チュートリアル:

https://lagunita.stanford.edu/c4x/HumanitiesScience/StatLearning/asset/linear_regression.pdf

2b. 制約付き線形回帰

最小二乗法は、データ内の外れ値、偽のフィールド、ノイズによって混乱する可能性があります。したがって、データセットに適合する線の分散を減らすための制約が必要です。正しいアプローチは、重みが間違っていないことを確認するために線形回帰モデルを使用することです。モデルには、L1 ノルム (LASSO) または L2 (リッジ回帰)、あるいはその両方 (弾性回帰) を設定できます。平均二乗損失が最適化されます。

これらのアルゴリズムは、制約付きの回帰直線を適合させ、過剰適合を回避し、モデル内のノイズの多い次元をマスクするために使用されます。

ライブラリ:

線形モデル

入門チュートリアル:

https://www.youtube.com/watch?v=5asL5Eq2x0A

https://www.youtube.com/watch?v=jbwSCwoT51M

3. K平均法クラスタリング

これは誰もが好む教師なしクラスタリング アルゴリズムです。ベクトル形式のデータ ポイントのセットが与えられると、ポイント間の距離に基づいてポイントのクラスターを作成できます。これは、クラスターの中心を反復的に移動して、各クラスターの中心点を再形成し、一緒に焦点を合わせる期待値最大化アルゴリズムです。アルゴリズムが受け取る入力は、生成されるクラスターの数と、クラスターを集約しようとする反復回数です。

名前が示すように、このアルゴリズムを使用してデータセット内に K 個のクラスターを作成できます。

ライブラリ:

http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

入門チュートリアル:

https://www.youtube.com/watch?v=hDmNF9JG3lo

https://www.datascience.com/blog/k-means-clustering

4. ロジスティック回帰

ロジスティック回帰は、重みを適用した後に非線形性(主にシグモイド関数が使用されますが、tanh 関数を使用することもできます)が適用された制限付き線形回帰であり、出力が +/- クラス(シグモイドの場合は 1 と 0)に近いものに制限されます。クロスエントロピー損失関数は、勾配降下法を使用して最適化されます。

初心者は、ロジスティック回帰は回帰ではなく分類に使用されることに注意する必要があります。ロジスティック回帰をニューラル ネットワークの層として考えることもできます。ロジスティック回帰は、勾配降下法や LBFGS などの最適化手法を使用してトレーニングされます。自然言語処理に携わる人々は、これを最大エ​​ントロピー分類器と呼ぶことがよくあります。

シグモイド関数は次のようになります。

シンプルだが堅牢な分類器は LR を使用してトレーニングされます。

ライブラリ:

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

入門チュートリアル:

https://www.youtube.com/watch?v=-la3q9d7AKQ

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

サポート ベクター マシンは、線形/ロジスティック回帰と同様に線形モデルですが、異なる限界ベースの損失関数を持ちます (サポート ベクター マシンの導出は、私が今まで見た中で最も美しい数学的結果と固有値計算の 1 つです)。損失関数を最適化するには、L-BFGS や SGD などの最適化手法を使用できます。

サポート ベクター マシンのもう 1 つの革新は、データにカーネルを使用してエンジニアを特徴付けることです。ドメインに関する優れた洞察力があれば、古くなった RBF カーネルをよりスマートなものに置き換えることで利益を得ることができます。

サポート ベクター マシンは、1 つのユニークな機能、つまり 1 クラス分類器を学習することができます。

サポートベクターマシンを使用して分類器 (さらには回帰器) をトレーニングすることが可能です。

ライブラリ:

http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html

入門チュートリアル:

https://www.youtube.com/watch?v=eHsErlPJWUU

6. フィードフォワードニューラルネットワーク (FFNN)

これらは基本的に多層ロジスティック回帰分類器です。非線形関数 (シグモイド、tanh、relu+softmax、クール selu) によって区切られた重みの層が多数あります。別名は多層パーセプトロンです。 FFNN は、分類や教師なし特徴学習のためのオートエンコーダーとして使用できます。

多層パーセプトロン

オートエンコーダとしてのFFNN

FFNN をオートエンコーダーとして使用して、分類器をトレーニングしたり、特徴を抽出したりできます。

ライブラリ:

http://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPClassifier.html#sklearn.neural_network.MLPClassifier

http://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPRegressor.html

https://github.com/keras-team/keras/blob/master/examples/reuters_mlp_relu_vs_selu.py

入門チュートリアル:

http://www.deeplearningbook.org/contents/mlp.html

http://www.deeplearningbook.org/contents/autoencoders.html

http://www.deeplearningbook.org/contents/representation.html

7. 畳み込みニューラルネットワーク(コンベント)

現在、世界中のほぼすべてのビジョンベースの機械学習の結果は、畳み込みニューラル ネットワークを使用して達成されています。画像分類、オブジェクト検出、画像セグメンテーションに使用できます。畳み込みニューラル ネットワークは、1980 年代後半から 1990 年代前半にかけて Yann Lecun によって提案されました。畳み込み層を特徴とし、階層的な特徴を抽出する役割を果たします。テキスト(さらにはグラフィック)でも使用できます。

畳み込みニューラル ネットワークを使用して画像とテキストを分類し、オブジェクトの検出と画像のセグメンテーションを実行します。

ライブラリ:

https://developer.nvidia.com/digits

https://github.com/kuangliu/torchcv

チェイナー

https://keras.io/applications/

入門チュートリアル:

出典: http://cs231n.github.io/

https://adeshpande3.github.io/A-Beginner%27s-Guide-To-Understanding-Convolutional-Neural-Networks/

8. リカレントニューラルネットワーク (RNN)

RNN は、同じ重みセットを時刻 t の集約状態と時刻 t の入力に再帰的に適用することでシーケンスをモデル化します (シーケンスが与えられると、時刻 0..t..T に入力があり、各時刻 t で、非表示状態は RNN の t-1 ステップからの出力になります)。純粋な RNN は現在ではほとんど使用されていませんが、LSTM や GRU などの同等のアルゴリズムは、ほとんどのシーケンス モデリング タスクにおいて依然として最先端のものです。

RNN (これが非線形性を持つ密に接続されたユニットである場合、f は一般に LSTM または GRU になります)。 LSTM セルは、純粋な RNN 内の単純な密なレイヤーを置き換えるために使用されます。

文字シーケンス モデリング タスク、特にテキスト分類、機械翻訳、言語モデリングには RNN を使用します。

ライブラリ:

https://github.com/tensorqow/models

https://github.com/wabyking/TextClassiJcationBenchmark

http://opennmt.net/

入門チュートリアル:

スタンフォード大学

http://www.wildml.com/category/neural-networks/recurrent-neural-networks/

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

9. 条件付きランダムフィールド(CRF)

CRF はおそらく最も頻繁に使用される確率的グラフィカル モデル (PGM) です。 RNN と同様のシーケンス モデリングに使用でき、RNN と組み合わせて使用​​することもできます。 CRF はニューラル機械翻訳システムが登場する前の最先端技術であり、小規模なデータセットを使用した多くのシーケンスラベリングタスクでは、一般化に大量のデータを必要とする RNN よりも優れたパフォーマンスを発揮します。また、画像セグメンテーションなどの他の構造化予測タスクにも使用できます。 CRF は、シーケンス (文など) 内の各要素をモデル化します。これにより、すべてのラベルが互いに独立しているのではなく、隣接する要素がシーケンス内のコンポーネントのラベルに影響を与えます。

CRF を使用して、シーケンス (テキスト、画像、時系列、DNA など) にラベルを付けます。

ライブラリ:

https://sklearn-crfsuite.readthedocs.io/en/latest/

入門チュートリアル:

http://blog.echen.me/2012/01/03/introduction-to-conditional-random-Jelds/

ユーゴ・ラロシェルの YouTube 講義シリーズ: https://www.youtube.com/watch?v=GF3iSJkgPbA

10. 決定木

たとえば、さまざまな果物に関するデータを含む Excel シートがあり、どれがリンゴであるかをマークする必要があります。私たちがすべきことは、「どの果物が赤く、どの果物が丸いか」という質問を投げかけ、その答えに基づいて「はい」の果物と「いいえ」の果物を分けることです。そうすると、私たちが手にする赤くて丸い果物は必ずしもすべてリンゴというわけではなく、またすべてのリンゴが必ずしも赤くて丸いわけではありません。そこで私は、「どの果物に赤または黄色の模様がありますか?」と質問します。赤くて丸い果物についてですか?赤く丸くない果物に、「緑で丸い果物はどれですか?」と質問します。これらの質問に基づいて、どれがリンゴであるかを非常に正確に判断できます。この一連の質問は、意思決定ツリーとは何かを示しています。ただし、これは私の個人的な直感に基づいた意思決定ツリーです。直感では高次元で複雑な問題を扱うことはできません。ラベル付けされたデータを見て、一連の質問を自動的に導き出す必要があります。これは、機械学習ベースの決定木が行うことです。初期の CART ツリーは単純なデータに使用されていましたが、データ セットが拡大し続けるにつれて、バイアスと分散のトレードオフをより優れたアルゴリズムで解決する必要が生じました。よく使用される決定木アルゴリズムは、ランダム フォレスト (属性のランダムなサブセットに異なる分類器を構築し、それらを 1 つの出力に結合する) とブースティング ツリー (他のツリーに基づいてツリーのカスケードをトレーニングし、その下のエラーを修正する) の 2 つです。

決定木は、データ ポイントを分類するために使用できます (回帰分析にも使用できます)。

ライブラリ:

http://scikitlearn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassiJer.html

http://scikitlearn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html

http://xgboost.readthedocs.io/en/latest/

https://catboost.yandex/

入門チュートリアル:

モデルは、以下のとおりです。

https://arxiv.org/abs/1511.05741

https://arxiv.org/abs/1407.7502

http://education.parrotprediction.teachable.com/p/practical-xgboost-in-python

TDアルゴリズム

上記のアルゴリズムのどれが DeepMind のように囲碁の世界チャンピオンに勝てるかを考える必要はありません。なぜなら、どれもそれができないからです。先ほど説明した 10 個のアルゴリズムはすべてパターン認識アルゴリズムであり、ポリシー学習アルゴリズムではありません。チェスのゲームに勝つ、または Atari ゲームをプレイするなど、複数のステップから成る問題を解決できる戦略を学習するには、空白のエージェントが直面する報酬とペナルティに基づいて世界で学習できるようにする必要があります。このタイプの機械学習は強化学習と呼ばれます。この分野における最近の成果の多く(すべてではありません)は、ConvNet または LSTM の知覚機能と Temporal Difference Learning と呼ばれる一連のアルゴリズムを組み合わせることによって達成されました。これらには、Q 学習、SARSA、その他のアルゴリズムが含まれます。これらのアルゴリズムはベルマン方程式を巧みに応用したもので、エージェントが環境から受け取る報酬を使用してトレーニングできる損失関数を生成します。

これらのアルゴリズムは主にゲームの自動化に使用され、他の言語生成やオブジェクト検出プロジェクトにも応用されています。

ライブラリ:

keras-rl は、以下の URL からダウンロードできます。

https://github.com/tensorqow/minigo

入門チュートリアル:

サットンとバルトの無料書籍: https://web2.qatar.cmu.edu/~gdicaro/15381/additional/SuttonBarto-RL-5Nov17.pdf

デビッド・シルバーのコースを見る: https://www.youtube.com/watch?v=2pWv7GOvuf0

データサイエンティストになるために役立つ 10 個の機械学習アルゴリズムを紹介しました。

機械学習ライブラリは、こちらで参照できます: https://blog.paralleldots.com/data-science/lesser-known-machine-learning-libraries-part-ii/

オリジナルリンク: https://towardsdatascience.com/ten-machine-learning-algorithms-you-should-know-to-become-a-data-scientist-8dc93d8ca52e?source=userActivityShare-dc302bd40f88-1521164030

<<:  百度、599ドルのスマートビデオスピーカーを発売

>>:  平均年収35万元、2018年のビッグデータAIの発展動向分析

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

推薦する

パリのノートルダム大聖堂の火災後、文化遺産の修復に AI 技術をどのように応用できるでしょうか?

[[262791]]それを受け入れるかどうかは別として、突然の火災でノートルダム大聖堂は焼け落ちた...

30歳以下の人はどこへ行ってしまったのでしょうか? OpenAIは若者を引き付けるために懸命に努力している

編纂者:ヤン・ジェン制作:51CTO テクノロジースタック(WeChat ID:blog)ビル・ゲイ...

いくつかの負荷分散アルゴリズムの原理とコード実装

ポーリング アルゴリズム: 受信したリクエストをバックエンド サーバーに順番に転送します。現在のサー...

重要なポイントを強調します。最大2億元の支援、AIイノベーション開発パイロットゾーンの5つの重点政策を理解する

[[344168]] 2019年8月、科学技術部は「国家新世代人工知能イノベーション開発パイロットゾ...

EU AI法が規則を承認

欧州連合の人工知能法(AI法)は、政策立案者が画期的な規制のルールをうまく策定したことで、法律化に向...

AI脳を搭載したドローン:群衆の中の暴力的な人々を正確に識別できる

[[233174]]もしある日私を殴りたくなったら、ただ殴って終わりにできると思いますか?今はそんな...

ロボティック プロセス オートメーションの 10 の秘密

[[394728]] [51CTO.com クイック翻訳]すべての優れた SF ストーリーには、ロボ...

ストレージパフォーマンスのボトルネックを解消し、AIアプリケーションの迅速な開発を実現

古典的な「樽理論」によれば、樽にどれだけの水が入るかは、一番低い木材によって決まります。 [[397...

時代と戦う:ハードコアな百度の AI 探究

2021年2月18日午前、百度は2020年第4四半期および通期の財務報告を発表し、印象的なデータを示...

ソートアルゴリズムを簡単に学ぶ: よく使われるソートアルゴリズムを視覚的に体験

1. クイックソート導入:クイックソートは、Tony Hall によって開発されたソートアルゴリズム...

ChatGPT の新たな脆弱性: 個人のプライバシーを暗唱してトレーニング データを漏洩する制御不能状態、OpenAI が修正、まだ機能している

ChatGPTの最新の脆弱性が明らかになり、たった1つの文でトレーニングデータがそのまま漏洩してしま...

ChatGPTの医療版ライブレビュー!治療計画は実際の医師のものと96%一致しています

同国初の大規模医療モデルはすでに患者を「診察」している。最近、病院内の AI 医師の実際の監視データ...

ニューラル ネットワークのデバッグにイライラしていませんか?ここに16のヒントがあります

[[201444]]ニューラルネットワークのデバッグは、専門家にとっても困難な作業です。数百万のパラ...

デジタル農村開発が加速、AI、5G、IoTなどがチャンスをもたらす

インターネットやモバイルインターネット技術の急速な普及と「新インフラ」の発展は、農業と農村の近代化に...

[GPT-4理論] GPT-4のコア技術を探る

序文GPT-4はリリースされてからしばらく経ちますが、セキュリティなどのさまざまな理由から、Open...