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と自動化のユースケース

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

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

推薦する

Pudu Technology が「2021 年最も革新的な中国のケータリング ブランド トップ 100」に選出されました

最近、ケータリングボスインサイダーが主催する「Upward 2021・第6回中国ケータリングイノベー...

2018年のAI革命で何が起こったか、何が起こらなかったか

[[253051]] 2018 年を振り返ると、人工知能はデジタル分野で急速な成長を続け、あらゆる業...

チューリング賞受賞者:人工知能を実装したものは、もはや人工知能とは呼ばれない

1956年、マッカーシーはダートマス大学で開催された会議で初めて「人工知能」の概念を提唱した。後に、...

2024年のビッグデータと関連分野の予測

データ分析オムニチャネルコマースが拡大するにつれ、広告分析の状況は劇的に変化しようとしています。オン...

RL エージェントはオンラインでしかトレーニングできないと誰が言ったのでしょうか? Google がオフライン強化学習の新しいパラダイムを発表

分布の不一致を避けるために、強化学習のトレーニングはオンラインで環境と対話する必要がありますか? G...

AIが教育技術分野にもたらす変化 パーソナライズされた学習が従来の教育方法を超える

最近のコロナ時代では、教育は大きなビジネスへと変貌しました。初等、中等、高等教育機関における学習は目...

「中国版ダヴィンチ」ロボットが人気!ブドウの皮を縫うだけでなく、このような創造的な作業もあります

ブドウを縫うことができる DIY ロボットアームを作りますか? [[428703]]最近、有名な「ハ...

シンガポールは路上での悪質な行為を検知するためにロボットを使っている

シンガポールは、都市国家内での違法行為を阻止するためにロボットを活用している。しかし、ロボット警官が...

...

...

マスク氏はAIデーでテスラに関する難しい技術的質問に答える予定

北京時間8月19日朝のニュースによると、2019年4月にテスラが「自動運転の日」イベントを開催したと...

さまざまなソートアルゴリズムの概要

ソート アルゴリズムは、最も基本的で一般的に使用されるアルゴリズムです。ソート アルゴリズムは、シナ...

自己一貫性を利用して大規模モデルの推論能力を向上させたGoogleは、ベンチマークの数学問題の75%を解決しました。これはGPT-3よりも20%高い数値です。

言語モデルはさまざまな NLP タスクで目覚ましい成功を収めていますが、その推論能力は不十分な場合が...

サイバーセキュリティにおける人工知能の応用

1956年、ダートマス大学で開催された会議で、コンピューターの専門家であるジョン・マッカーシーが初め...

機械学習の背後にある数学的な柱を理解するには、この 5 冊の本が役立ちます。

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...