機械学習が自動的にモデル化を手助けしてくれる、これら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が書いた記事は教師を本当に騙すことができる

ブログ    
ブログ    

推薦する

AIはオミクロン変異体の構造を1時間で予測、誤差は原子直径の半分のみ

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

...

ソフトマックスを放棄した初の大規模線形アテンショントランスフォーマーモデル: 1750億のパラメータ、より優れた速度と精度

最近、上海人工知能研究所とOpenNLPLabの研究チームが、ソフトマックスベースの注意メカニズムを...

...

新しいプログラミングパラダイム: Spring Boot と OpenAI の出会い

2023年にはAI技術が話題となり、プログラミングを中心に多くの分野に影響を及ぼします。 Sprin...

...

人工知能時代のデザイン業界の未来

人工知能 (AI) は設計の仕事を引き継ぐのでしょうか? 将来的にはデザイナーに取って代わるのでしょ...

速報です! ImageNetデータセット内のすべての顔はぼかされている

2012 年、AI 研究者はコンピューター ビジョンで大きな進歩を遂げ、ImageNet として知ら...

2021年に最も役立つ顔認識ソフトウェア9選をチェック

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

「怠け者」を助ける掃除ロボットの規模は600億台を超える

近年、世界経済の発展に伴い、人間の生活環境は徐々に改善され、人口も増加傾向にありますが、急速な人口増...

...

...

人工知能は教育にどのような変化をもたらすのでしょうか?

[[441080]]経済観察記者 鄭躍新12月16日、中国教育部元副部長で中国教育国際交流協会会長...

AIの冬がまた来るのか?アメリカ人教授がarXivにAIを批判する記事を掲載し、Redditのネットユーザーから批判された

人工知能の発展の勢いは非常に強く、一般の人々や専門家は楽観的です。しかし、歴史的には、1950年代初...

...