|
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 .pyplotをplt としてインポートします。 X , y = sklearn.datasets.load_diabetes ( return_X_y = True ) X_train 、 X_test 、 y_train 、 y_test = sklearn.model_selection.train_test_split ( X 、 y 、 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_train 、 X_test 、 y_train 、 y_test = train_test_split ( iris . data . astype ( np . float64 )、 iris.target.astype (np.float64 ) 、 train_size = 0.75 、 test_size = 0.25 、 random_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_train 、 X_test 、 y_train 、 y_test = train_test_split ( iris . data . astype ( np . float64 )、 iris.target.astype (np.float64 ) 、 train_size = 0.75 、 test_size = 0.25 、 random_state = 42 ) モデル= HyperoptEstimator ( 回帰変数= any_regressor ( 'reg' )、 前処理= any_preprocessing ( 'pre' )、 loss_fn = mean_absolute_error 、 algo = tpe . suggest 、 max_evals = 50 、 trial_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 = True 、 max_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_train 、 churn_test 、 churn_valid = churn_df . split_frame ( ratios = [ .7 , .15 ]) チャーントレイン y = "解約" x = churn_df.columns x.削除( y ) x.remove ( "顧客ID" ) aml = H2OAutoML ( max_models = 10 、 seed = 10 、 exclude_algos = [ "StackedEnsemble" 、 "DeepLearning" ]、 verbosity = "info" 、 nfolds = 0 ) ! nvidia - smi aml . train ( x = x 、 y = y 、 training_frame = churn_train 、 validation_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 ([ mid 、 model_ids 内のmid 、 mid に"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 内のmid 、 mid に"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ライブラリが存在します。
|