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

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

ブログ    
ブログ    

推薦する

人工知能はすべての未来でしょうか?

画期的なテクノロジーの年である 2023 年が終わりを迎えるにあたり、AI、特に生成 AI は変革の...

2025年までに音声認識市場は267億9000万ドルに達する

3月29日、市場調査会社Meticulous Market Researchが発表した最新のレポート...

テスラとモメンタの「自動運転アルゴリズム」の秘密を研究した

現在、自動運転技術は研究室を抜け出し、量産段階に入っており、大手自動車メーカーや部品サプライヤー、ハ...

AI技術がピカソの隠された絵画の発見を助ける

[[429170]]最近、外国メディアの報道によると、有名になる前のパブロ・ピカソは、必ずしも画材を...

...

AI に物語を伝える: シーンを想像するように教えるにはどうすればよいでしょうか?

[[282830]]視覚的な想像力は人間が生まれながらに持っているものです。AI は同様の能力を持...

...

...

Googleの研究ディレクターはスタンフォード大学で教鞭をとり、「人工知能:現代的アプローチ」の著者でもある。

スタンフォード大学は10月11日、Googleリサーチディレクターのピーター・ノーヴィグ氏がスタンフ...

滴滴出行のスマート交通建設における3つの短期目標:信号機の改善、バスシステムのオンライン化、予測スケジュール

[51CTO.comより] 両会期中の政府活動報告に人工知能が盛り込まれた。万鋼科学技術部長は、中国...

Canalys:2027年までにPCの60%がAI機能に対応し、出荷台数は1億7500万台を超える見込み

9月26日、市場調査会社Canalysが発表した最新レポートによると、現在のAIの波の中で、企業や消...

...

人工知能は改めてすごいですね!科学者は偶然、死者を「蘇らせる」ことができることを発見した

マイクロソフトは現在、チャットボットを開発中との報道もある。将来的に実用化に成功すれば、デジタル技術...