DUICUO

自動機械学習:よく使われる5つのAutoMLフレームワークの紹介

AutoML フレームワークによって実行されるタスクは、次のように要約できます。

  • データを前処理してクリーンアップします。
  • 適切な機能を選択して構築します。
  • 適切なモデルを選択してください。
  • モデルのハイパーパラメータを最適化します。
  • ニューラル ネットワークのトポロジを設計します (ディープラーニングを使用する場合)。
  • 機械学習モデルの後処理。
  • 結果の視覚化とプレゼンテーション。

この記事では、次の 5 つのオープンソース AutoML ライブラリまたはフレームワークを紹介します。

  • オートスクレーン
  • TPOT
  • ハイパーオプト スクリアン
  • 自動ケラス
  • H2O オートML

1. オートスクレーン

Auto-Sklearnは、すぐに使える自動機械学習ライブラリです。scikit-learnをベースにしており、適切な学習アルゴリズムを自動で探索し、ハイパーパラメータを最適化します。メタ学習、ベイズ最適化、アンサンブル学習を通じて、最適なデータ処理パイプラインとモデルを探索します。前処理や特徴量エンジニアリング(One-Hotエンコーディング、特徴量の正規化、次元削減など)といった面倒なタスクのほとんどを処理できます。

インストール:

 #ピップ
pip 自動インストール- sklearn
#コンダ
conda インストール- c conda - forge auto - sklearn

広範囲にわたるカプセル化により、使用されるメソッドは基本的にsklearnと同じです。以下はサンプルコードです。

 sklearn.datasets をインポートする
sklearn.metrics をインポートする
autosklearn .regression をインポートする
matplotlib .pyplotplt としてインポートします
X , y = sklearn.datasets.load_diabetes ( return_X_y = True )
X_trainX_test y_trainy_test = sklearn.model_selection.train_test_split ( Xy random_state = 1 )
automl = autosklearn.regression.AutoSklearnRegressor (
このタスクの残り時間= 120
実行時間制限= 30
tmp_folder = '/tmp/autosklearn_regression_example_tmp'

automl.fit ( X_train , y_train , データセット名= ' diabetes' )

2. TPOT

TPOT(ツリーベースパイプライン最適化ツール)は、遺伝的アルゴリズムを用いて機械学習プロセスを最適化するPythonベースの自動機械学習ツールです。Scikit-Learnが提供するデータ変換と機械学習モデル構築手法も活用していますが、ランダム探索とグローバル探索には遺伝的アルゴリズムを用いています。TPOTの探索プロセスは以下のとおりです。

インストール:

 #ピップ
ピップインソールポット
#コンダ
conda install -c conda -forge tpot

サンプルコード:

 tpot からTPOTClassifierをインポートする
sklearn .datasets からload_iris をインポートします
sklearn.model_selection からtrain_test_split インポートする
sklearn .datasets からload_iris をインポートします
numpyをnp としてインポートする

アイリス= load_iris ()
X_trainX_testy_trainy_test = train_test_split ( iris . data . astype ( np . float64 )、
iris.target.astype (np.float64 ) train_size = 0.75test_size = 0.25random_state = 42 )

tpot = TPOTClassifier ( 世代= 5人口サイズ= 50詳細度= 2ランダム状態= 42 )
tpot . fit ( X_train , y_train )
print ( tpot . score ( X_test , y_test ))
tpot . エクスポート( 'tpot_iris_pipeline.py' )

3. ハイパーオプト・スクリアン

HyperOpt-Sklearnは、AutoMLとHyperOptをScikit-Learnに統合するHyperOptのラッパーです。このライブラリには、データ前処理変換と分類/回帰アルゴリズムモデルが含まれています。ドキュメントによると、数百のパラメータを持つモデルの大規模最適化向けに設計されており、マルチコアおよびマルチマシン環境にわたって最適化プロセスをスケーリングできます。

インストール:

 pip インストールhyperopt

サンプルコード:

 pandas からread_csvをインポートする
sklearn .datasets からload_iris をインポートします
sklearn.model_selection からtrain_test_split インポートする
sklearn .metrics からmean_absolute_error をインポートする
hpsklearn からHyperoptEstimator をインポートする
hpsklearn からany_regressor をインポート
hpsklearn からany_preprocessing をインポート
Hyperopt からTPE をインポート
# データセットをロードする
アイリス= load_iris ()
X_trainX_testy_trainy_test = train_test_split ( iris . data . astype ( np . float64 )、
iris.target.astype (np.float64 ) train_size = 0.75test_size = 0.25random_state = 42 )
モデル= HyperoptEstimator ( 回帰変数= any_regressor ( 'reg' )、 前処理= any_preprocessing ( 'pre' )、 loss_fn = mean_absolute_erroralgo = tpe . suggestmax_evals = 50trial_timeout = 30 )
モデル.fit ( X_train , y_train )
# パフォーマンスを要約する
mae = モデル. スコア( X_test , y_test )
印刷( "MAE: %.3f" % mae )
# 最良モデルを要約する
印刷( model . best_model ())

4. オートケラス

AutoKerasは、KerasをベースとしたAutoMLシステムで、わずか数行のコードで強力なニューラルアーキテクチャ探索(NAS)機能を実現します。テキサスA&M大学のDATA Labによって開発され、TensorFlowのtf.keras APIとKerasを使用して実装されています。

AutoKeras は、画像分類、構造化データ分類、回帰などのさまざまなタスクをサポートできます。

インストール:

 pip でautokeras をインストール

サンプルコード:

 numpyをnp としてインポートする
TensorflowをTF としてインポートする
tensorflow.keras.datasets からmnist インポートする
autokeras をak としてインポート
# データセットをロードする
( x_train , y_train ), ( x_test , y_test ) = mnist.load_data ( )
プリント( x_train.shape ) # ( 60000,28,28 )
print ( y_train . shape ) # ( 60000 ,)
print ( y_train [: 3 ]) # 配列([ 7 , 2 , 1 ], dtype = uint8 )

# 画像分類器初期化します
clf = ak . ImageClassifier ( overwrite = Truemax_trials = 1 )
# 画像分類器トレーニングデータ入力します
clf . fit ( x_train , y_train , エポック= 10 )

# 最適モデル予測します
予測されたy = clf . predict ( x_test )
印刷( 予測されたy )
# テストデータを使用して最適モデルを評価します
印刷( clf . 評価( x_test , y_test ))

5. H2O オートML

H2O の AutoML を使用すると、ユーザーが指定した制限時間内に多数のモデルを自動的にトレーニングおよび調整できます。

H2Oは、AutoMLオブジェクト(モデルグループ)と個々のモデルの両方に適用可能な、解釈可能性を高めるための様々な手法を提供します。説明を自動生成し、AutoMLモデルの探索と解釈のためのシンプルなインターフェースを提供します。

インストール:

 pip でh2o をインストール

H2Oは、より正確には分散機械学習プラットフォームと表現できるため、H2Oクラスターを構築する必要があります。この部分のコードはJavaで開発されているため、JDKサポートをインストールする必要があります。

Java がインストールされ、環境変数に Java パスが設定されたら、cmd で次のコマンドを実行します。

 java - jar のパス/ h2o.jar

その後、H2Oクラスターを起動し、Webインターフェースから操作できます。Pythonコードを使用する場合は、次の例を参照してください。

 を輸入する
h2o.init ( )
h2o.automl からH2OAutoML インポート
churn_df = h2o . import_file ( 'https://raw.githubusercontent.com/srivatsan88/YouTubeLI/master/dataset/WA_Fn-UseC_-Telco-Customer-Churn.csv' )
churn_df.types
churn_df.describe ( )
churn_trainchurn_testchurn_valid = churn_df . split_frame ( ratios = [ .7 , .15 ])
チャーントレイン
y = "解約"
x = churn_df.columns
x.削除( y )
x.remove ( "顧客ID" )
aml = H2OAutoML ( max_models = 10seed = 10exclude_algos = [ "StackedEnsemble""DeepLearning" ]、 verbosity = "info"nfolds = 0 )
! nvidia - smi
aml . train ( x = xy = ytraining_frame = churn_trainvalidation_frame = churn_valid )

lb = aml . リーダーボード
ポンド. ヘッド()
churn_pred = aml.leader.predict ( churn_test )
churn_pred.head ( )
aml . leader . model_performance ( churn_test )
model_ids = リスト( aml . leaderboard [ 'model_id' ] . as_data_frame () . iloc [:, 0 ])
#se = h2o . get_model ([ midの場合、 model_ids mid がありmid "StackedEnsemble_AllModels"ある場合][ 0 ])
#metalearner = h2o.get_model ( se.metallearner ( )[ '名前' ])
モデルID
h2o . get_model ([ midmodel_ids midmid "XGBoost" がある場合][ 0 ])
out = h2o . get_model ([ mid for mid in model_ids if "XGBoost" in mid ][ 0 ])
出力. パラメータ
出力.convert_H2OXGBoostParams_2_XGBoostParams ()

out_gbm = h2o . get_model ([ mid 、 model_ids midmid "GBM"ある場合][ 0 ])
out.confusion_matrix ( )
out.varimp_plot ( )
aml . leader . download_mojo ( パス= "./" )

要約

この記事では、5つのAutoMLライブラリと、それらを使用してデータの前処理、ハイパーパラメータの調整、モデルの選択、評価といった機械学習タスクを自動化する方法についてまとめています。これら5つの一般的なライブラリ以外にも、AutoGluon、MLBox、TransmogrifAI、Auto-WEKA、AdaNet、MLjar、TransmogrifAI、Azure Machine Learning、LudwigといったAutoMLライブラリが存在します。