データ サイエンティストに必須の機械学習アルゴリズム 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の発展動向分析

ブログ    
ブログ    
ブログ    

推薦する

2021年、人工知能は知的ではない

ガートナー曲線について聞いたことがあるかもしれません。新しい技術が初めて導入されたとき、誰も興味を示...

...

AIチャットボット、欲しいですか?

チャットボットが追加されると、顧客からの問い合わせに24時間対応できるようになるため、革命的な変化が...

モデルデータに偏りがある場合はどうすればいいですか?機械学習における 7 種類のデータバイアスについて 1 つの記事で学ぶ

機械学習におけるデータバイアスとは、データセットの一部の要素が他の要素よりも重み付けされ、または高く...

Jenkins 独自のユーザー データベース暗号化アルゴリズムの簡単な分析

Jenkins のアクセス制御は、セキュリティ ドメイン (認証) と承認戦略に分かれています。その...

MetaはAIアルゴリズムアプリケーションの透明性を高め、ユーザーに詳細な説明とより多くの選択肢を提供します。

6月30日、ソーシャルメディアプラットフォームはユーザーエクスペリエンスを向上させるためにAIアル...

...

...

一般的なソートアルゴリズムの概要

概要コンピュータサイエンスと数学において、ソートアルゴリズムとは、一連のデータを特定の順序で並べるア...

...

...

インテリジェントプラットフォームを活用してビデオ監視データの津波に対処する方法

システム設計者は、高度なセンサー技術の急激な拡大と、それを安全または生命/安全の環境にどのように適用...

効果よりも研究が重要です。バイオニックロボットはどうすれば実用化できるのでしょうか?

[[235506]]映画『ウォーリー』では、愛らしいウォーリー(WALL-E、廃棄物処理ロボット地...

...

研究者たちは建設における人工知能の利用を研究している

過去数十年にわたり、AI ツールは、コンピューター サイエンスから製造、医学、物理学、生物学、さらに...