MLタスクを効率的、迅速、正確に完了するにはどうすればよいでしょうか? 4つのAutoMLライブラリについて学びましょう

MLタスクを効率的、迅速、正確に完了するにはどうすればよいでしょうか? 4つのAutoMLライブラリについて学びましょう

自動機械学習 (AutoML) は、データをモデル化するための機械学習モデルの構築プロセスを自動化する新しい分野です。 AutoML を使用すると、モデリングがより簡単かつ誰でもアクセスしやすくなります。

この記事では、auto-sklearn、TPOT、HyperOpt、AutoKeras という 4 つの自動化 ML ツールキットについて詳しく紹介します。 AutoML に興味があるなら、これら 4 つの Python ライブラリが最適です。著者は記事の最後で 4 つのツールキットを比較しています。

[[344012]]

自動学習

auto-sklearn は、標準の sklearn インターフェースとシームレスに統合され、コミュニティの多くの人に馴染みのある自動化された機械学習ツールキットです。ベイズ最適化などの最新の手法を使用して、ライブラリは、可能なモデルの空間をナビゲートし、特定の構成が特定のタスクに対して適切に機能するかどうかを推論することを学習するために使用されます。

このライブラリは、Matthias Feurer らによって提案されました。技術的な詳細については、論文「Efficient and Robust Machine Learning」を参照してください。フェーラー氏は論文の中でこう書いている。

我々は、15 の分類器、14 の特徴前処理方法、および 4 つのデータ前処理方法を使用して 110 のハイパーパラメータを持つ構造化された仮説空間を生成する、scikit-learn に基づく新しい堅牢な AutoML システムを提案します。

auto-sklearn は、おそらく AutoML を初めて使用するユーザーに最適です。データセットを検出するためのデータ準備とモデル選択に加えて、ライブラリは同様のデータセットで優れたパフォーマンスを発揮するモデルから学習することもできます。最高のパフォーマンスを発揮するモデルがアンサンブルに集められています。

画像ソース: 効率的で堅牢な自動機械学習

効率的な実装の観点から、auto-sklearn ではユーザーの操作が最小限で済みます。ライブラリをインストールするには、pip install auto-sklearn を使用します。

このライブラリで使用できる 2 つの主なクラスは、AutoSklearnClassifier と AutoSklearnRegressor で、それぞれ分類タスクと回帰タスクに使用されます。どちらにもユーザー指定の同じパラメータがあり、最も重要なのは時間制約とコレクション サイズです。

  1. autosklearn を ask としてインポートします
  2. 回帰タスク用の #ask.regression.AutoSklearnRegressor()
  3. model = ask .classification.AutoSklearnClassifier( ensemble_size = 10 , # 最終アンサンブルのサイズ(最小は 1)
  4. time_left_for_this_task = 120 、#プロセスが実行される秒数
  5. per_run_time_limit = 30 ) #モデルごとに割り当てられる最大秒数
  6. model.fit(X_train, y_train) #検索モデルのフィッティングを開始
  7. print(model.sprint_statistics()) #検索の統計情報を出力します
  8. y_predictions = model .predict(X_test) #モデルから予測値を取得する

AutoSklearn 関連のドキュメントの詳細については、https://automl.github.io/auto-sklearn/master/ をご覧ください。

TPOT

TPOT は、データ準備、モデリング アルゴリズム、モデル ハイパーパラメータに重点​​を置いた、Python ベースの自動機械学習開発ツールです。進化的ツリー構造に基づくツリー表現ワークフロー最適化ツール (TPOT) を通じて、特徴の選択、前処理、構築を自動化し、機械学習パイプラインを自動的に設計および最適化します。

画像ソース:「データ サイエンスの自動化のためのツリーベースのパイプライン最適化ツールの評価」。

プログラムまたはパイプラインはツリーとして表されます。遺伝的プログラミング (GP) は、特定のプログラムを選択して進化させ、各自動化された機械学習パイプラインの最終結果を最大化します。

ペドロ・ドミンゴス氏は、「大量のデータを扱う愚かなアルゴリズムは、限られたデータを扱う賢いアルゴリズムに勝る」と述べています。重要なのは、TPOT が複雑なデータ前処理パイプラインを生成できるということです。

潜在的なパイプライン(出典:TPOT 文書)

TPOT パイプライン オプティマイザーは、多くの AutoML アルゴリズムと同様に、良好な結果を生成するのに数時間かかる場合があります (データセットが小さい場合を除く)。ユーザーは、これらの時間のかかるプログラムを Kaggle コミットまたは Google Colab で実行できます。

  1. インポートtpot
  2. pipeline_optimizer = tpot .TPOTClassifier( generations = 5 , #トレーニングを実行する反復回数
  3. population_size = 20 、#訓練する個体数
  4. cv = 5 ) #StratifiedKFold の折り目の数
  5. pipeline_optimizer.fit(X_train, y_train) #パイプラインオプティマイザーを適合します - 時間がかかる場合があります
  6. print(pipeline_optimizer.score(X_test, y_test)) #パイプラインのスコアを出力
  7. pipeline_optimizer.export('tpot_exported_pipeline.py') #パイプラインをエクスポートします - Python コードで!

おそらく、TPOT の最も優れた機能は、モデルを Python コード ファイルとしてエクスポートし、後で使用できることです。詳細なドキュメントとチュートリアルの例については、次の 2 つのリンクを参照してください。

  • TPOT ドキュメントのアドレス: https://epistasislab.github.io/tpot/。
  • TPOT チュートリアルの例のアドレス: https://epistasislab.github.io/tpot/examples/

ハイパーオプト

HyperOpt は、James Bergstra によって開発されたベイズ最適化用の Python ライブラリです。このライブラリは、数百のパラメータを持つモデルの大規模な最適化、特に機械学習パイプラインの最適化、およびオプションで複数のコアとマシンにわたる最適化プロセスのスケーリングを目的として設計されています。

ただし、HyperOpt は非常に技術的であり、最適化ツールとパラメータを慎重に指定する必要があるため、直接使用するのは困難です。代わりに、著者は、sklearn ライブラリの HyperOpt ラッパーである HyperOpt-sklearn の使用を推奨しています。

具体的には、HyperOpt は前処理をサポートしながらも、特定のモデルに組み込まれる数十のハイパーパラメータに重点​​を置いています。 HyperOpt sklearn 検索の結果、事前トレーニングなしで勾配ブースティング分類器が生成されます。

  1. {'learner': GradientBoostingClassifier( ccp_alpha = 0 .0, criterion = 'friedman_mse' , init = None ,
  2. 学習率= 0 .009132299586303643、損失= '逸脱'
  3. max_depth =なし max_features = 'sqrt'
  4. max_leaf_nodes =なし min_impurity_decrease = 0 .0、
  5. min_impurity_split =なし min_samples_leaf = 1
  6. min_samples_split = 2 min_weight_fraction_leaf = 0 .0、
  7. n_estimators = 342 n_iter_no_change =なし
  8. 事前ソート= 'auto' ランダム状態= 2
  9. サブサンプル= 0 .6844206624548879、 tol = 0 .0001、
  10. 検証率= 0.1 詳細= 0
  11. warm_start = False )、'preprocs': ()、'ex_preprocs': ()}

HyperOpt-sklearn モデルの構築方法については、ソース ドキュメントを参照してください。これは auto-sklearn よりもはるかに複雑で、TPOT よりも少し複雑です。しかし、ハイパーパラメータが重要な場合は、それだけの価値があるかもしれません。

ドキュメントアドレス: http://hyperopt.github.io/hyperopt-sklearn/

オートケラス

ニューラル ネットワークとディープラーニングは、標準的な機械学習ライブラリよりも強力であるため、自動化がより困難になります。 AutoKeras ライブラリの機能は何ですか? 詳細は次のとおりです。

  1. AutoKeras を使用すると、Neural Framework Search アルゴリズムは、単一のネットワーク レイヤー内のニューロンの数、レ​​イヤーの数、マージするレイヤー、フィルター サイズや Dropout でドロップアウトするニューロンの割合などのレイヤー固有のパラメーターなど、最適なアーキテクチャを見つけます。検索が完了すると、ユーザーはそれを通常の TF/Keras モデルとして使用できます。
  • AutoKeras を使用すると、ユーザーは、ディープラーニング プロセスを学習する人が簡単にアクセスできない埋め込みや空間縮小などの複雑な要素を含むモデルを構築できます。
  • AutoKeras を使用してモデルを作成する場合、ベクトル化やテキスト データのクリーニングなどの多くの前処理操作が実行され、最適化されます。
  • 検索の初期化とトレーニングには 2 行のコードが必要です。 AutoKeras は keras に似たインターフェースを持っているため、覚えたり使用したりするのは難しくありません。

AutoKeras はテキスト、画像、構造化データをサポートし、初心者やより高度な技術知識を求める人向けのインターフェースを提供します。 AutoKeras は進化型ニューラル ネットワーク アーキテクチャ検索アプローチを使用して、研究者の負担と曖昧さを軽減します。

AutoKeras の実行には長い時間がかかりますが、ユーザーはパラメータを指定して実行時間、探索するモデ​​ルの数、検索空間のサイズなどを制御することができます。

  1. ハイパーパラメータ | 値 | これまでの最高値
  2. text_block_1/ブロックタイプ|トランスフォーマー|トランスフォーマー
  3. 分類ヘッド1/ドロップアウト|0 |0
  4. オプティマイザー |アダム |アダム
  5. 学習率 |0.001 |0.001
  6. テキストブロック1/最大トークン数|20000 |20000
  7. テキストブロック1/テキストから整数へのシーケンス1/出力シーケンスの長さ|200 |200
  8. text_block_1/transformer_1/事前トレーニング|なし |なし
  9. テキストブロック1/トランスフォーマー1/埋め込み寸法|32 |32
  10. テキストブロック1/トランスフォーマー1/num_heads|2 |2
  11. テキストブロック1/トランスフォーマー1/高密度|32 |32
  12. テキストブロック1/トランスフォーマー1/ドロップアウト|0.25 |0.25
  13. テキストブロック1/空間削減1/削減タイプ|グローバル平均|グローバル平均
  14. テキストブロック1/高密度ブロック1/レイヤー数|1 |1
  15. text_block_1/dense_block_1/use_batchnorm|False |False
  16. テキストブロック1/高密度ブロック1/ドロップアウト|0.5 |0.5
  17. テキストブロック1/密ブロック1/ユニット0|20 |20

AutoKeras の詳細については、次の 2 つのリンクを参照してください。

  • ドキュメントアドレス: https://autokeras.com/
  • チュートリアルのアドレス: https://towardsdatascience.com/automl-creating-top-performing-neural-networks-without-defining-architecture-c7d3b08cddc

4 つのライブラリにはそれぞれ特徴があります。どれを選択すればよいでしょうか?

ユーザーはニーズに応じて適切な Python ライブラリを選択できます。著者は次のような提案をしています。

  • シンプルでわかりやすいインターフェースと比較的速い結果を得ることを優先する場合は、auto-sklearn を選択してください。さらに、ライブラリは sklearn と自然に統合されており、よく使用されるモデルとメソッドを使用でき、時間を適切に制御できます。
  • 高い精度を達成することが最優先事項であり、長いトレーニング時間が問題にならない場合は、TPOT を使用します。ボーナス: 最適なモデルの Python コードを出力します。
  • 主なタスクが高精度の達成であり、長いトレーニング時間を考慮する必要がない場合は、HyperOpt-sklearn を使用することもできます。このライブラリはモデルのハイパーパラメータの最適化を重視しており、それが効果的かどうかはデータセットとアルゴリズムに依存します。
  • ニューラル ネットワークが必要な場合 (警告: その機能を過大評価しないでください)、特にデータがテキストまたは画像の形式である場合は、AutoKeras を使用します。トレーニングには長い時間がかかりますが、時間と検索空間のサイズを制御する方法は多数あります。

参考リンク:

https://towardsdatascience.com/4-python-automl-libraries-every-data-scientist-should-know-680ff5d6ad08

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

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

<<:  運輸・物流におけるAIと自動化のユースケース

>>:  ディープラーニングの次に来るものは何でしょうか?

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

推薦する

...

蘇州の路上には自動運転バスが走っている。これは試験運行ではない。市民は無料で乗車できる。

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

5400億パラメータの大規模モデル進化ツリーが大幅に更新されました!最も詳細なプロンプトスキルを備えた85ページのLLM開発履歴

4月にリリースされるや否や開発者コミュニティで話題となった大規模言語モデルの概要が更新されました!こ...

...

合意アルゴリズムRaftの簡単な紹介

[[417323]]この記事は、張張が執筆したWeChatパブリックアカウント「建築改善への道」から...

機械学習における分類タスクの共通評価指標とPythonコード実装

データ ポイントを特定の数の定義済みクラスに分類するように ML モデルをトレーニングすることがタス...

CVPR 自動運転チャレンジで優勝したのはどのようなソリューションでしょうか?

道路は複雑で、車両の種類も多様で、歩行者も密集しています。これが都市部の道路交通の現状であり、自動運...

...

C# バイナリ ツリー トラバーサル アルゴリズムの実装の簡単な分析

C# アルゴリズムは、バイナリ ツリーの定義、既知のバイナリ ツリーの構築方法、および C# でバイ...

...

音声認識におけるCNNの応用

序文音声認識の現在の開発状況をまとめると、DNN、RNN/LSTM、CNN が音声認識における主流の...

機械学習の次元削減手法で「次元の呪い」を打破する

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

「AI+教育」は偽のトリックか本物のスキルか?本質は依然としてAIの能力のテスト

近年、教育業界の資金のほとんどは「AI+教育」を追い求めています。現在、「AI+教育」分野では、さま...

...

畳み込みニューラルネットワークが分かりませんか?怖がらないでください、このかわいい写真を​​見ればわかりますよ!

この記事では、畳み込みニューラル ネットワーク (CNN) の基本原理を、関連する数学理論を省き、最...