機械学習が自動的にモデル化を手助けしてくれる、これら4つのPythonライブラリがあなたの目を開かせてくれる

機械学習が自動的にモデル化を手助けしてくれる、これら4つのPythonライブラリがあなたの目を開かせてくれる

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

[[342604]]

AutoML に興味があるなら、これら 4 つの Python ライブラリが最適です。

1.自動学習

auto-sklearn は、誰もが使い慣れている標準の sklearn インターフェースとシームレスに統合される、自動化された機械学習ツール ライブラリです。ベイズ最適化などの最新の手法を使用することで、ライブラリを使用して、可能なモデルの空間をナビゲートし、特定の構成が特定のタスクを適切に実行するかどうかを推測することを学習できます。

このライブラリは Matthias Feurer らによって作成され、その技術的な詳細は論文「効率的で堅牢な機械学習」に記載されています。Feurer は次のように書いています。

…scikit-learn をベースにした強力な新しい AutoML システムを導入します (15 個の分類器、14 個の機能前処理方法、4 個のデータ前処理方法を使用し、110 個のハイパーパラメータの構造化された仮説空間を生成します)。

auto-sklearn はおそらく AutoML を始めるのに最適なライブラリです。検出データセットのデータ準備とモデル選択に加えて、類似のデータセットで優れたパフォーマンスを発揮するモデルから学習し、最高のパフォーマンスを発揮するモデルを集約することもできます。

効率的な実装に加えて、auto-sklearn は最小限のユーザー操作しか必要としません。ライブラリは、 pip install auto-sklearn を使用してインストールできます。

使用できる主なクラスは 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/

2.TPOT

TPOT は自動モデリング用の別の Python ライブラリですが、このライブラリはデータの準備、モデリング アルゴリズム、モデル ハイパーパラメータに重点​​を置いています。これは、「機械学習パイプラインの設計と最適化を自動化するツリーベースのパイプライン最適化ツール (TPOT)」と呼ばれる進化型ツリーベースの構造を通じて、機能の選択、前処理、構築を自動化します。

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

Pedro Domingos 氏は、「大量のデータを扱うガベージ アルゴリズムは、限られたデータを扱う賢いアルゴリズムよりも優れています」と述べています。これは真実でもあります。TPOT は複雑なデータ前処理パイプラインを生成できます。

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

  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) #パイプライン オプティマイザーを適合します。時間がかかる場合があります。print(pipeline_optimizer.score(X_test, y_test)) #パイプライン スコアを出力します。
  6. pipeline_optimizer.export( 'tpot_exported_pipeline.py' ) #パイプラインを Python コードでエクスポートします。

TPOT の最大の特徴は、モデルを Python コード ファイルとしてエクスポートでき、後で簡単に使用できることです。

TPOT 公式ドキュメント: https://epistasislab.github.io/tpot/

TPOT の例: https://epistasislab.github.io/tpot/examples/

3. ハイパーオプト

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

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

具体的には、HyperOpt は前処理をサポートしていますが、特定のモデル内の多くのハイパーパラメータに重点​​が置かれています。 HyperOpt-sklearn の検索結果の 1 つをよく見ると、前処理なしの勾配ブースティング分類器が結果に表示されていることがわかります。

  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 モデルの構築に関するドキュメント: http://hyperopt.github.io/hyperopt-sklearn/。

HyperOpt ライブラリは auto-sklearn や TPOT よりもはるかに複雑ですが、ハイパーパラメータがモデルにとって非常に重要である場合は、使用する価値があります。

4. オートケラス

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

AutoKeras を使用すると、Neural Architecture Search アルゴリズムは、レイヤー内のニューロンの数、レ​​イヤーの数、マージするレイヤー、フィルター サイズやドロップアウト ニューロンの割合などのレイヤー固有のパラメーターなど、最適なアーキテクチャを見つけます。検索が完了すると、モデルは通常の TensorFlow/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 チュートリアル: https://towardsdatascience.com/automl-creating-top-performing-neural-networks-without-defining-architectures-c7d3b08cddc

AutoKeras 公式ドキュメント: https://autokeras.com/

比較: どの AutoML ライブラリを使用すべきでしょうか?

シンプルでクリーンなインターフェースと比較的高速な結果が主なニーズである場合は、auto-sklearn を選択してください。さらに、ライブラリは sklearn と自然に統合されており、一般的なモデルやメソッドで使用できるため、タイミングをより細かく制御できます。

必要なトレーニング時間が長くなる可能性に関係なく、高精度を最優先する場合は、TPOT を使用します。パイプラインをツリー構造として表現することで可能になる、高度な前処理方法に重点を置いています。ボーナスヒント: TPOT は最適なモデルの Python コードを出力できます。

トレーニング時間が長くなる可能性に関係なく、高精度を優先する場合は、HyperOpt sklearn を使用できます。モデルのハイパーパラメータの最適化に重点を置いても、具体的な状況はデータセットとアルゴリズムによって異なるため、何らかの効果が得られるかどうかは不明です。

問題を解決するためにニューラル ネットワークが必要な場合、特に問題がテキストや画像の形式で提供される場合は、AutoKeras を使用します。トレーニングには長い時間がかかりますが、時間と検索空間のサイズを制御する方法は多数あります。

<<:  COVID-19パンデミックは不動産業界のインテリジェントな変革とアップグレードを加速させた

>>:  AIが書いた記事は教師を本当に騙すことができる

ブログ    
ブログ    

推薦する

...

ChatGPTの愚かさに対する新たな説明: 世界はAIによって変化し、訓練されたときとは異なっている

学術界は、ChatGPT がなぜ愚かになったのかという新たな説明を持っています。カリフォルニア大学サ...

...

...

パーソナライズされた推奨の CTR 推定にディープラーニングを使用する理由は何ですか?

ディープラーニングはおそらく、過去 2 年間でコンピューター コミュニティで最もホットな言葉です。エ...

...

...

今後 5 年間で最も収益性の高い業界は何ですか?人工知能を勝ち取る者はインターネットを勝ち取るのでしょうか?

[[221537]]今後 5 年間で最も価値のある起業の方向性は何でしょうか?どの起業分野を選択す...

MITはAIを活用して3Dプリント用の新素材の発見を加速

[[430184]]さまざまなアイテムの製造における 3D プリントの人気が高まるにつれ、特定の用途...

AIは人間のための単なるツールだということをご存知ですか?

[[429689]]この記事は、ハーパー氏が執筆したWeChatパブリックアカウント「データとイン...

AI分野 | ゲームのルールを変える画期的なアイデア10選

[[357174]] AI の旅が始まって以来、私は無限の可能性を秘め、輝かしい歴史に足跡を残してき...

...

Facebook Cityは楽しいです!ドローンで遠隔地の山岳地帯にモバイルネットワークを提供

[51CTO.comからのオリジナル記事] Facebookは、インド政府および通信会社と協議し、太...

描いた場所に画像が動きます! Gen-2の新機能「マジックブラシ馬良」が大ヒット、ネットユーザー:緊急、緊急、緊急

動画生成AIはここまで進化したのか? !写真をスワイプするだけで、選択したターゲットが動きます。明ら...