DUICUO

オープンソース プロジェクト AutoXGB を活用することで、AutoML 開発を容易にし、わずか数行のコードでアプリケーション API を構築できるようになります。

翻訳者 |朱賢宗

校正:梁策、孫淑娟

AutoML入門

自動機械学習(AutoML)は、様々な機械学習プロセスを自動化し、エラーメトリクスを最適化して最適なモデルを生成します。これらのプロセスには、データの前処理、エンコード、スケーリング、ハイパーパラメータの最適化、モデルのトレーニング、アーティファクトの生成、結果のリスト表示が含まれます。自動機械学習プロセスは、人工知能ソリューションの迅速な開発、ユーザーエクスペリエンスの向上、そして多くの場合、ローコード実装で正確な結果を生成することを可能にします。

現在市場で人気のある有名な AutoML ライブラリには次のようなものがあります。

  • ライトオートML
  • MLジャー
  • 評価ML
  • フラム
  • ピカレット
  • オートグルーオン
  • H2O 3

このチュートリアルでは、1994年の米国国勢調査の所得データを用いて、ある人の年収が5万ドルを超えるかどうかを予測します。これは典型的な二項分類問題であり、CC0パブリックドメインライセンスの下でKaggleの成人国勢調査所得データセットを使用します。このデータは、Silicon Graphics (SGI) のデータマイニングおよび可視化部門のRonny Kohavi氏とBarry Becker氏が、1994年の米国国勢調査局データベースから提供したものです。ただし、ここではデータ分析やモデルの仕組みについては詳しく説明しません。数行のコードで最適化された機械学習モデルを構築し、FastAPIサーバーを使ってアクセスするだけです。

AutoXGBプロジェクトの概要

AutoXGBは、CSVファイル内の表形式データセットから直接モデルをトレーニングできる、オープンソースでシンプルかつ効果的なAutoML開発ツールです。AutoXGBは、モデルのトレーニングにXGBoost(最適化された分散勾配ブースティングライブラリ)、ハイパーパラメータ最適化にOptuna(機械学習と深層学習向けに特別に設計された自動ハイパーパラメータ最適化フレームワーク)、そしてAPI経由のモデル推論を提供するPythonベースのFastAPIフレームワークを使用します。

AutoXGBのインストールから始めましょう。サーバーの実行中にエラーが発生した場合は、FastAPIフレームワークとunvicornサーバープログラムが事前に正しくインストールされていることを確認してください。AutoXGBをインストールするコマンドは次のとおりです。

 pip インストールautoxgb

初期化

次に、AutoXGB関数の特性と、その様々なパラメータを使用して計算結果を改善したり、トレーニング時間を短縮したりする方法について詳しく説明します。AutoXGB関数のパラメータの意味は以下のとおりです。

  • train_filename:トレーニング データが配置されているパス。
  • output:ワークピースが保存される出力フォルダーへのパス。
  • test_filename:テストデータへのパス。指定しない場合は、フォールド外予測(OOF予測)データのみが保存されます。
  • task:このパラメータが指定されていない場合、システムが自動的に値を推測します。このパラメータには以下の2つの値があります。

1.「分類」

2.「回帰」

  • idx:このパラメータ値が指定されていない場合、システムは id という名前を使用して id 列を自動的に生成します。
  • ターゲット:このパラメータが指定されていない場合、ターゲット列の名前は「target」とみなされ、問題は2クラス分類、多クラス分類、または単列回帰の3つのタイプのいずれかとして扱われます。このパラメータには、以下の2つの値を指定できます。

1. ["ターゲット"]

2.["ターゲット1", "ターゲット2"]

  • features:このパラメータ値が指定されていない場合、id、targets、kfoldを除くすべての列が使用されます。例えば、値を指定するには次のようにします。

1. 特徴 = ["col1", "col2"]

  • categorical_features:このパラメータが指定されていない場合、カテゴリ列は自動的に推論されます。値の指定例:

1.カテゴリ特徴 = ["col1", "col2"]

  • `use_gpu`:このパラメータが指定されていない場合、GPUコンピューティングは有効になりません。値の指定例:

1. use_gpu = True

2. use_gpu = False

  • num_folds:クロス検証に使用されるフォールドの数。
  • シード:ランダムシードの繰り返し可能性。
  • num_trials:実行する Optuna の試行回数。デフォルト値は 1000 です。
  • time_limit: Optuna テストの継続時間(秒単位)。

1. 指定されていない場合は、すべての試行が実行されます。この場合(デフォルト)、time_limit = None です。

  • fast: fastパラメータをTrueに設定すると、ハイパーパラメータの調整は1回のみ実行されるため、最適化時間が短縮されます。その後、フォールドの残りの部分に対してトレーニングが実行され、OOF予測とテスト予測が生成されます。

テストプロジェクトでは、train_filename、output、target、num_folds、seed、num_trails、time_limitを除くほとんどのパラメータをデフォルト値に設定しました。プロジェクト内の各パラメータの完全な設定は以下の通りです。

 autoxgb からAutoXGB をインポートする
トレーニングファイル名= "binary_classification.csv"
出力= "出力"
test_filename = なし
タスク= なし
idx = なし
目標= [ "収入" ]
機能= なし
categorical_features = なし
use_gpu = False
num_folds = 5
シード= 42
試行回数= 100
時間制限= 360
速い= False

トレーニングと最適化

これで、AutoXGB関数を用いてモデルを定義し、事前に定義したパラメータをモデルに追加できます。最後に、axgb.train()関数を呼び出して学習プロセスを開始します。この時点で、XGBoostとOptunaが実行され、様々な成果物(モデル、予測値、結果、設定、パラメータ、エンコーダなど)が出力されます。

 axgb = 自動XGB (
列車ファイル名= 列車ファイル名
出力= 出力
テストファイル名= テストファイル名
タスク= タスク
idx = idx
ターゲット= ターゲット
機能= 機能
カテゴリ特徴= カテゴリ特徴
use_gpu = use_gpu
num_folds = num_folds
シード= シード
試行回数= 試行回数
時間制限= 時間制限
速い= 速い

axgb . トレイン()

トレーニングプロセスには10~12分かかります。最良のトレーニング結果は以下で確認できます。制限時間を長くすることでF1スコアを向上させることができます。さらに、他のハイパーパラメータを使用してモデルのパフォーマンスを向上させることもできます。

 2022-02-0918 : 11 : 27.163 | INFO | autoxgb.utils : predict_model : 336 - メトリクス:{ ' auc' : 0.851585935958628'logloss' : 0.3868651767621002'f1' : 0.5351485750859325' accuracy' : 0.8230396087432015'precision' : 0.7282822005864846'recall' : 0.42303153575005525 }

CLIコマンドラインを使用したトレーニング

bashターミナルを使用してモデルをトレーニングするには、コマンド「autoxgb train」を使用します。この場合、設定する必要があるのは「train_filename」と「output」の2つのパラメータだけです。「train_filename」パラメータはバイナリ分類トレーニングファイルのファイル名を指定し、「output」パラメータは出力フォルダの場所を指定します。コマンドは以下のとおりです。

 autoxgb トレイン\
- - トレーニングファイル名 バイナリ分類.csv \
- - 出力出力\

ウェブAPI

ターミナルで autoxgb サービスを実行することで、FastAPI サーバーをローカルで実行できます。

AutoXGB サービスパラメータ

  • `model_path`:モデルファイルへのパス。このテストでは、出力フォルダを指します。
  • ポート:サーバー ホストが実行されているポート番号 (値は 8080)。
  • host:実行中のサーバーのホスト。IP アドレスは 0.0.0.0。
  • ワーカー:ワーカー スレッドの数または同時リクエストの数。
  • debug:エラーと成功のログを表示します。

Deepnoteクラウドサーバー上で実行

Deepnoteはクラウドでサーバーを実行するために、ngrokを使ってパブリックURLを作成します。このオプションを有効にし、ポート8080を使用するだけです。もちろん、ローカルで実行する場合はこの手順は不要で、アドレス「http://0.0.0.0:8080」を直接使用できます。

サーバーのモデル パス、ホスト IP アドレス、およびポート番号を指定しました。

 ! autoxgb serve - - model_path / work / output - - ホスト0.0.0 .0 - - ポート8080 - - デバッグ

結果は、APIがスムーズに動作していることを示しています。結果はhttps://8d3ae411-c6bc-4cad-8a14-732f8e3f13b7.deepnoteproject.comでご覧いただけます。

 情報: これらディレクトリ変更監視します: [ '/work' ]
情報: Uvicornhttp://0.0.0.0:8080 実行されています( 終了するにはCTRL + C を押してください)
情報: watchgod を使用してリローダープロセス[ 153 ] を開始しました
情報: サーバープロセスを開始しました[ 163 ]
情報: アプリケーションの起動待機しています
情報: アプリケーションの起動が完了しました
情報: 172.3.161 .55 : 40628 - "GET /docs HTTP/1.1" 200 OK
情報: 172.3.188 .123 : 38788 - "GET /openapi.json HTTP/1.1" 200 OK
情報: 172.3.167 .43 : 48326 - "GET /docs HTTP/1.1" 200 OK
情報: 172.3.161 .55 : 47018 - "GET /openapi.json HTTP/1.1" 200 OK

予測する

ランダムな入力を追加することで、誰かの収入が50,000ドルを超えるかどうかを予測できます。この例では、FastAPI/docsオプションを使用してユーザーインターフェースにアクセスします。

入力データ

モデル予測の実行にはFastAPI GUIを使用します。サーバーアドレスの末尾に「/docs」を追加することで実現できます(例:「172.3.167.43:39118/docs」)。このプロジェクトで入力したその他のテストデータは次のとおりです。

  • 作業クラス: 「プライベート」
  • 学歴: 「高校卒業」
  • 婚姻状況: 「未亡人」
  • 職業: 「運送業」
  • 関係: 「未婚」
  • 人種: 「白人」
  • 性別: 「男性」
  • 出身国: "アメリカ合衆国"
  • 年齢: 20
  • 項目: 313986
  • 教育番号: 9
  • キャピタルゲイン: 0
  • 資本損失: 0
  • 週40時間

テスト結果

実験の結果、50,000 ドル未満の金額では信頼度が 97.6% であったのに対し、50,000 ドルを超える金額では信頼度が 2.3% であることが示されました。

リクエストライブラリを使ったテスト

Pythonのrequestsライブラリを使ってAPIをテストすることもできます。この手順は簡単です。パラメータを辞書として渡し、JSON形式で出力を取得するだけです。

 輸入リクエスト

パラメータ= {
「ワーククラス」「プライベート」
「教育」「高校卒業」
「婚姻状況」「未亡人」
「職業」「輸送・移動」
「関係」「未婚」
「人種」「白人」
「性別」「男性」
"native.country" : "アメリカ合衆国" ,
「年齢」 : 20
"fnlwgt" : 313986
「教育.num」 : 9
「資本利得」 : 0
「資本損失」 : 0
「週あたりの時間」 : 40
}

記事= リクエスト.投稿(
f "https://8d3ae411-c6bc-4cad-8a14-732f8e3f13b7.deepnoteproject.com/predict"
json = パラメータ


data_dict = article.json ( )
印刷( data_dict )
## { 'id' : 0 , '<=50K' : 0.9762147068977356 , '>50K' : 0.023785298690199852 }

プロジェクトのソースコード

この記事で説明したプロジェクトの完全なコードと例に興味がある場合は、次のリンクにアクセスしてください。

  • ディープノート
  • GitHub
  • DAGsハブ

結論は

私自身、AutoXGBとAutoMLを用いてKaggleコンペティションで優秀な成績を収め、複数の機械学習プロジェクトの基盤モデルを開発してきました。機械学習プロセス全体を通して、迅速かつ正確な結果が得られる場合もありますが、最先端のソリューションを作成するには、様々な機械学習プロセスを手動で実験する必要があります。

このチュートリアルでは、AutoXGBの様々な機能について解説しました。これで、AutoXGBを使ってデータの前処理、XGboostモデルの学習、Optunaを使ったモデルの最適化、FastAPIを使ったWebサーバーの実行などが可能になります。つまり、AutoXGBは日常的な表形式データの問題に対するエンドツーエンドのソリューションを提供します。

翻訳者紹介

Zhu Xianzongは、51CTOコミュニティエディター、51CTOエキスパートブロガー兼講師、濰坊の大学でコンピュータサイエンスの講師を務め、フリープログラミングコミュニティのベテランです。当初は様々なMicrosoftテクノロジーに注力し(ASP.NET AJXとCocos 2d-Xに関する技術書を3冊執筆)、過去10年間は​​オープンソースの世界に身を捧げ、人気のフルスタックWeb開発テクノロジーに精通しています。OneNet/AliOS+Arduino/ESP32/Raspberry PiをベースとしたIoT開発テクノロジーや、Scala+Hadoop+Spark+Flinkといったビッグデータ開発テクノロジーに精通しています。

原題: No Brainer AutoML with AutoXGB 、著者: Abid Ali Awan