AutoML フレームワークによって実行されるタスクは、次のように要約できます。 - データを前処理してクリーンアップします。
- 適切な機能を選択して構築します。
- 適切なモデルを選択してください。
- モデルのハイパーパラメータを最適化します。
- ニューラル ネットワークのトポロジを設計します (ディープラーニングを使用する場合)。
- 機械学習モデルの後処理。
- 結果の視覚化とプレゼンテーション。
この記事では、次の 5 つのオープンソース AutoML ライブラリまたはフレームワークを紹介します。 - オートスクリア
- TPOT
- ハイパーオプト
- 自動ケラス
- H2O オートML
1. オートスクリアンAuto-sklearn は、すぐに使用できる自動化された機械学習ライブラリです。 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 、 dataset_name = 'diabetes' ) 2.TPOT TPOT (ツリーベースのパイプライン最適化ツール) は、遺伝的アルゴリズムの最適化を使用して機械学習プロセスを最適化する Python 自動機械学習ツールです。これも、データ変換と機械学習モデル構築のために Scikit-Learn によって提供される方法に基づいていますが、ランダム検索とグローバル検索には遺伝的アルゴリズム プログラミングを使用します。 TPOT 検索プロセスは次のとおりです。 インストール: #ピップ pip ですべてのtpotをインストールします #コンダ conda をインストール-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 ) 印刷( tpot . score ( X_test , y_test )) tpot . export ( 'tpot_iris_pipeline.py' ) 3. ハイパーオプト-Sklearn 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 をインポート ハイパーオプトから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 ) # 最良のモデルを要約する 印刷( モデル. best_model ()) 4. オートケラスAutoKeras は、わずか数行のコードでニューラル アーキテクチャ検索 (NAS) のパワーを実現する Keras ベースの AutoML システムです。 これはテキサス A&M 大学の DATA Lab によって開発され、TensorFlow の tf.keras API と Keras に基づいて実装されています。 AutoKeras は、画像分類、構造化データ分類、回帰などのさまざまなタスクをサポートできます。 インストール: pip でautokeras をインストールします サンプルコード: numpyをnp としてインポートする テンソルフローをtf としてインポートする tensorflow.keras.datasets からmnist をインポートする autokeras をak としてインポートする # データセットをロード ( x_train , y_train )、( x_test , y_test ) = mnist.load_data ( ) 印刷( x_train . shape ) # ( 60000 , 28 , 28 ) 印刷( y_train . shape ) # ( 60000 , ) print ( y_train [: 3 ]) # 配列([ 7 , 2 , 1 ], dtype = uint8 )
# 画像分類器を初期化します。 clf = ak . ImageClassifier ( 上書き= 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 モデルを探索および解釈するためのシンプルなインターフェースを提供します。 インストール: h2o をインストール H2O は、分散型機械学習プラットフォームとしてさらに詳しく説明できるため、H2O クラスターを構築する必要があります。この部分のコードは Java を使用して開発されているため、JDK サポートをインストールする必要があります。 JAVA をインストールし、環境変数に Java パスを設定した後、cmd で次のコマンドを実行します。 java - jar パス_to /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 . タイプ churn_df .describe() 関数 churn_train 、 churn_test 、 churn_valid = churn_df.split_frame ( 比率= [ .7 、 .15 ]) チャーン_トレイン y = 「解約」 x = churn_df . 列 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 . リーダー. model_performance ( churn_test ) model_ids = リスト( aml.leaderboard [ 'model_id' ]. as_data_frame (). iloc [:, 0 ] ) #se = h2o . get_model ([ mid for mid in model_ids if "StackedEnsemble_AllModels" in mid ][ 0 ]) #metalearner = h2o.get_model ( se.metalearner ( ) [ '名前' ]) モデル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 for mid in model_ids if "GBM" in mid ][ 0 ]) 出力.confusion_matrix () 出力.varimp_plot () aml.leader.download_mojo ( パス= "./ " ) 要約するこの記事では、5 つの AutoML ライブラリと、それらがどのようにデータの前処理、ハイパーパラメータの調整、モデルの選択、評価などの機械学習タスクの自動化を検討するかをまとめました。これら 5 つの一般的なライブラリに加えて、AutoGluon、MLBoX、TransmogrifAI、Auto-WEKA、AdaNet、MLjar、TransmogrifAI、Azure Machine Learning、Ludwig など、他の AutoML ライブラリもいくつかあります。
|