機械学習モデル構築作業の煩雑さを解消する「AutoML」とは――歴史、動向、利用のメリットを整理するAutoML OSS入門(1)

本連載では、AutoMLを実現するさまざまなOSSを解説します。第1回は、AutoMLの概要と、次回から紹介するさまざまなOSSを実行するための環境やデータについて解説します。

» 2021年07月07日 05時00分 公開

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

本記事で紹介したノートブックはGitHubにて公開しています。すぐに実行できますので、ぜひご利用ください。


 本連載では、AutoMLを実現するオープンソースソフトウェア(OSS)を解説します。連載第1回目となる今回は、そもそもAutoMLとはどういうもので、どういった機能やメリットがあるのか解説します。そして、第2回から毎回1つずつOSSを紹介していきます。紹介予定のOSSは以下の通りです(※取り上げるOSSについては今後変更する可能性があります)。

  • auto-sklearn
  • TPOT
  • AutoGluon(Amazon)
  • H2O(H2O.ai)
  • PyCaret
  • AutoKeras
  • Ludwig(Uber)
  • Neural Network Intelligence(Microsoft)
  • Model Search(Google)

 各OSSの紹介に当たって、特徴を示せるようなテーブルデータや画像データを利用しますが、どのOSSも共通で必ずタイタニックの生存予測データを利用してAutoMLを実践していきます。タイタニックの生存予測という同じ課題に取り組むことで、各OSSのAutoML実装の差異が分かるようにしたいという意図があるためです。なお、どのOSSも基本的にGoogle Colaboratory (以下、Colab)で動作させながら解説する予定です。

 この記事の最後に、Colabの使い方と、タイタニックの生存予測データの取得方法および概要を説明します。これらを使用したことがない方は、第2回以降に紹介するOSSを実行する際の参考にしてください。

注記:本連載の対象読者について

 本連載では、機械学習の理論などの基礎は説明しません。従って、対象読者は機械学習の基礎知識を身に付けている方を想定しています。何らかの機械学習ソフトウェアを使ってデータ分析をしたことがある人なら、読みやすい内容になっていると思います。ただし、AutoMLの特性上、中身がブラックボックスでもある程度は利用できるため、基礎知識がない人でもAutoMLは試せるような書き方を心掛けています。


AutoMLとは

 AutoMLとは、機械学習を用いたデータ分析のプロセスを自動化することやその技術全般を指す言葉で、「Automated Machine Learning(自動化された機械学習)」の略称です。ただし、AutoMLに明確な定義があるわけではなく、OSS(の開発者)によって若干解釈は異なります。

 「データ分析のプロセスを自動化する」とはどういうことか、もう少し具体的に説明します。データ分析のプロセスには試行錯誤を伴うような工程が幾つかあります。モデルを構築する工程では、まずロジスティック回帰で学習し、次にランダムフォレスト、多層パーセプトロン……というようにさまざまなモデルを試し、精度を比較します。それぞれに対して、さまざまなパラメーターを設定しては学習し直し、より良い結果が得られるものを抽出するといった作業を繰り返します。その後、複数のモデルを組み合わせて精度向上を目指すアンサンブル学習を試したり、組み合わせを変えてみたり手法を変更してみたりしながら、さらなる精度の向上を図っていきます。

図1 AutoMLを使わない機械学習の例 図1 AutoMLを使わない機械学習の例

 このような作業の中には人間がやるより機械的に実行した方が効率のよいものが多くあります。それらを自動化することがAutoMLの役割です。

AutoML利用のメリットとデメリット

 AutoMLが登場する以前は、機械学習を用いたデータ分析には高度な技術が必要であり、専門知識を持つエンジニアに限られていました。しかし、AutoMLが登場したことで高度な技術や知識がなくてもGUIや数行のコードでデータ分析が可能になりました。

 またハイパーパラメーターチューニングではベイズ最適化や遺伝的アルゴリズムなどの手法が用いられるため、専門知識がないエンジニアでも効率的なチューニングが実行できます。つまり、AutoMLはAI(人工知能)活用のハードルを下げること(いわゆる「AIの民主化」)ができます。それに加えて、既に機械学習に精通しているエンジニアにとっても、AutoMLを活用することで、より効率的にデータ分析を進めることができるため、大幅な生産性の向上が期待できます。

 しかし、AutoMLにもデメリットはあります。機械学習(特にディープラーニング)は本来ブラックボックスになりやすいものですが、多様なモデルを試行できるAutoMLでは、説明可能性、解釈可能性の問題(どのような根拠でデータから答えを導き出したのかエンジニアが解釈できない、顧客に説明できないこと)がより顕著に表れてしまうことがあります。

 ただし、そのデメリットを解消しようとする動きもあります。特にクラウドサービスでは、「XAI」(Explainable AI、説明可能なAI)などのキーワードとともに、説明可能性、解釈可能性を高めるための機能が提供され始めています。例えば、どの特徴量が結果に大きく作用するかをソートして表示するような機能です。さらに、この分野をサポートするOSSも登場してきています。例えば、機械学習を誰もが解釈可能で理解できるようにすることを目的として開発された「Shapash」が、2021年1月にリリースされています。

図2 Shapashでタイタニックのデータを解析した結果 図2 Shapashでタイタニックのデータを解析した結果

 まとめると、AutoMLのメリットとデメリットとして、以下のようなことが挙げられます。

  • AutoML利用のメリット
    • AI活用のハードルを下げることができる
    • データ分析を効率的に実施できる
    • 生産性を大幅に向上させる
  • AutoML利用のデメリット
    • 説明可能性、解釈可能性の問題がより顕著に現れる(改善する動きはある)

AutoMLの歴史と動向

 AutoMLの最初の取り組みは、2013年ごろから大学やスタートアップ企業で行われるようになりました。ブリティッシュコロンビア大学の研究者らが中心となって開発されたAuto-WEKA(2013年)は、Wekaという機械学習のOSSが提供するアルゴリズムを利用してAutoMLができるようにしたものでした。次いで、アルベルト・ルートヴィヒ大学フライブルグのauto-sklearn(2015年)やペンシルベニア大学のTPOT(2015年)などが開発されました。

図3 AutoMLの歴史 図3 AutoMLの歴史

 その後、Kerasという深層学習ライブラリをベースにテキサスA&M大学で開発されたAutoKeras(2017年)なども続きました。同時期に、一部のスタートアップ企業もAutoML用のサービスの開発を開始しました。2015年にはDataRobotが自動機械学習のクラウドサービスを発表。その2年後にはH2O.aiが、H2OプラットフォームのMLモデルを使用したH2O AutoML (2017年)を公開し、その後に商用版のH2O Driverless AI(2017年)もリリースしました。しばらくすると、大企業がそれに続き、AutoMLのクラウドサービスやOSSを提供しました。GoogleのCloud AutoML(2018年)やMicrosoftのAzureMLやNNI(2018年)、SalesforceのTransmogrifAI(2018年)、UberのLudwig(2019年)、AWSのAutoGluon(2019年)などです。

 一方、個人が開発するOSSの中からも注目されるものが登場しました。使いやすさで人気となったPyCaret(2020年)がその代表です。2021年2月には、Googleが新しいディープラーニングモデルを設計するためのAutoMLプラットフォームであるModel SearchをGitHubに公開しました。現時点で既にGitHubのスター数も3000を超え、期待の高さが伺えます。

 Google Trendsで2013年以降の「AutoML」という検索ワードの検索数の推移を確認してみると、以下のようになりました。2017年の後半に注目度が大きく上昇し、以降も高い注目度を保っています。

図4 Google Trendsにおける「AutoML」人気度の動向 図4 Google Trendsにおける「AutoML」人気度の動向

 AutoMLができるOSSのGitHubのスター数やレポートされている市場規模の推移などから判断しても、AutoMLへの関心は今後も高まるのではないかと予想します。

AutoMLの機能と特徴

 AutoMLは機械学習を用いたデータ分析のプロセスを自動化します。従って、一般的な機械学習のデータ分析のプロセスと比較することにより、AutoMLの機能や特徴が分かりやすくなるはずです。まずはAutoMLを解説する前に、一般的なプロセスを確認しておきましょう。ここでは、構造化データのデータ分析について紹介します。

機械学習を用いた一般的なデータ分析の工程

 機械学習を用いたデータ分析では多くの場合、以下に示すような工程で問題に取り組むことが多いのではないかと思います(※データ分析の要件定義やデータの収集などのプロセスは事前に完了していることとします)。

図5 機械学習を用いたデータ分析の工程 図5 機械学習を用いたデータ分析の工程

 ただし、この工程の通りに一方向的に進んでいくのではなく、前のステップに戻って改善を図ったり、次のステップをスキップしたりを繰り返しながら作業は進んでいきます。簡単に各工程を説明します。

  1. セットアップ:データ分析に必要なソフトウェアやライブラリのインストールと初期設定を行います
  2. ライブラリのインポート:必要なライブラリをインポートします
  3. データのロード:分析するデータを入手し、ロードします
  4. EDA(Exploratory Data Analysis、探索的データ分析):データをさまざまな視点で可視化したり、統計量を見てデータの特徴や構造を把握したりします
  5. データの前処理:モデルが学習できるようにデータの欠損値の補完や不要な列、異常値、重複データの削除、正規化をします
  6. 特徴量エンジニアリング:説明変数を加工することでモデルの学習に効果的な新しい説明変数(特徴量)を作成します。大きく分けて2種類があります(※)
    • 問題設定によらない特徴量の作成
    • ドメイン知識に基づく特徴量の作成
  7. モデルの構築と精度の比較:複数のモデルを構築し、学習して得られた精度を比較します
  8. モデルのチューニング:モデルのハイパーパラメーターを調整し、再学習して精度の向上を図ります
  9. モデルのアンサンブル学習:複数のモデルを組み合わせて1つのモデルにし、精度の向上が可能かどうかを評価します
  10. 予測:構築したモデルで未知のデータを予測します。コンペならここで終了です

※前者は二乗項や交差項の作成などの汎用(はんよう)的な手法を用います。後者は専門知識に基づいた特徴量の作成で、例えば、糖尿病の分析であれば、体重を身長の2乗で割った新しい特徴量(BMI)を作るようなことです。後者の方が効果的ですが、どうしても人の知識が必要なので自動化が難しくなります。

AutoMLのOSSを利用したデータ分析の手順

 AutoMLの機能を提供するOSSが自動化の対象とするのは、前述した手順の中で主に5〜9の部分です。1つのステップの自動化に特化したもの(特徴量エンジニアリングに特化したFeaturetools)もありますが、多くのOSSは複数のステップをまとめて自動化できます。

図6 AutoMLで自動化できるデータ分析の工程 図6 AutoMLで自動化できるデータ分析の工程

 例えば、AutoMLを使用しない方法でハイパーパラメーターのチューニングをする場合、以下のようなコードを書くことになります。

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
# RandomForestClassifierで使用するパラメーターの候補
search_params = {
      'n_estimators': [1000],
      'criterion': ['gini', 'entropy'],
      'max_features': [0.1, 0.25, 0.5, 0.75, 1.0],
      'random_state': [1],
      'min_samples_split': [3, 5, 10, 15, 20, 25, 30, 50, 100],
      'max_depth': [3, 5, 10, 15, 20, 25, 30, 50, 100],
}
# グリッドサーチの実行
gs = GridSearchCV(RandomForestClassifier(), search_params, cv=5)
gs.fit(X_train, y_train)
# スコアが最も高かったパラメーターのモデルを取得
best_estimator = gs.best_estimator_
# スコアとパラメーターを出力
print('Best Score: ', best_estimator.best_score_)
print('Parameters: ', best_estimator.best_params_)

 しかし、PyCaretを利用すると次の1行のコードで、チューニングができます。

best_estimator = tune_model('rf')

 また、H2Oでは一切コードを記述することなく、GUIのみでデータのロード、学習から予測まで実現しています。以下は、H2Oに組み込まれているGUI(Webアプリケーション)「H2O Flow」の画面です。

図7 H2O(H2O Flow)によるAutoML 図7 H2O(H2O Flow)によるAutoML

今後の連載内で利用する環境とデータについて

 最後に、本記事の冒頭で述べたように、Colabの使い方とタイタニックの生存予測データの取得方法と内容を簡単に説明します。

Colabの使い方

 Colabは、Googleが無料で提供している機械学習の教育や研究用の開発環境で、Jupyter NotebookのようなUIとなっています。ColabにはPythonの主要なライブラリがあらかじめインストールされており、Googleアカウントさえあればすぐに機械学習の実装を開始できます。

 Colabへアクセスすると、Colabの概要や操作の方法を解説するノートブック(Welcomeページ)が表示されます。

図8 ColabノートブックのWelcomeページ 図8 ColabノートブックのWelcomeページ

 Colabを初めて利用する人は、このノートブックに書かれている内容を参考に実行してみることをお勧めします。次回からはAutoMLを実現するコードが記載されたノートブックを公開して、Colab上で動作の解説をします。

 なお、Colabでは無料でGPUやTPUも使用できますが、ある程度使うとすぐ使用量制限に達してしまいます。それに加えて、連続稼働時間は最大で12時間なので、長時間、GPUやTPU、ハイスペックのメモリで処理をしたい場合は有償版のColab Proにアップグレードした方がよいかもしれません(この連載で紹介するノートブックを動作させるにはColab Proでなくても問題ありません)。2021年3月から日本のユーザーにもColab Proのサービスが提供されるようになっています(2021年6月現在、月額1072円)。

タイタニックの生存予測データの取得方法と概説

 連載で使用するタイタニックの生存予測データも簡単に説明します。このデータは、データ分析の精度を競うサイトとして最も有名な「Kaggle」が提供するものと全く同じで、もともとはヴァンダービルト大学が「誰でも使用可能なデータ」として公開したファイルをKaggleが加工したものです。Kaggleで開かれるタイタニックの生存予測のコンペは、Kaggleやデータ分析の初心者が最初に取り組む演習課題としてよく利用されています。データ分析をする多くの方にとってなじみ深いデータであるため、このデータを連載の全ての回で共通に使用することにしました。

 簡単にデータの取得方法と内容を説明します。データは以下の3つのファイルからなります。

  • train.csv:モデルの学習に利用するデータ
  • test.csv:モデルの予測に利用するデータ
  • gender_submission.csv:Kaggleに提出する予測結果を出力したCSVファイル

 このデータをまとめて圧縮したzipファイルはKaggleのサイトにログインして取得することができますが、われわれのチームのGitHubリポジトリにアップロードしてありますので、ここから取得してみてください。

 では、ファイルの内容を確認してみましょう。Colabを表示して以下の手順を実行すると、この連載で使用可能なノートブックが表示されます。

  1. 画面左上のメニューにある「ファイル」から「ノートブックを開く」を選択する
  2. 新しいウィンドウが開くので、その中にある「GitHub」タブをクリックする
  3. 検索ボックスに「https://github.com/aiq2020-tw/automl-notebooks」と入力し、検索ボタンをクリックする
  4. パスに表示された「01_AutoML/01_Analyze_Titanic_Data.ipynb」をクリックする
図9 GitHubのノートブックをColabで開く 図9 GitHubのノートブックをColabで開く

 表示されたノートブックの中のセルを上から順番に実行していくと、データの内容をおおむね理解できるはずです。

図10 タイタニックの生存予測データの分析用ノートブック 図10 タイタニックの生存予測データの分析用ノートブック

 この中で使用されているPandas Profilingは、前述したEDAを自動化するAutoMLのライブラリの一つと言えます。

 なお、このデータの詳細は、こちらのページにも詳しい解説があるので、参照してください。

最後に

 今回は、AutoMLとはどういったもので、どのようなメリットや機能があるのかを解説しました。また、連載2回目以降で紹介するOSSでAutoMLを行うため環境の準備を行いました。次回からさまざまなOSSを題材にAutoMLに挑戦してみましょう。第2回はauto-sklearnを紹介する予定です。

著者プロフィール

田村 広平(たむら こうへい)

野村総合研究所のオープンソースサポートサービス「OpenStandia」でOSSの研究開発、テクニカルサポートを担当。経済産業省主催のAI Quest 2020では第1タームの画像解析で225人中4位。

Twitter: @tamura__246

八木 真理奈(やぎ まりな)

SBテクノロジーにて統計や機械学習を用いたデータ分析に従事。データサイエンスセミナー講師、グローバルビジネスの新規立ち上げ、オフショア開発などの経験も生かしながら、データサイエンスの道を突き進みたい。経済産業省主催のAI Quest 2020ではプレゼン課題優秀賞受賞。

Blog: https://www.softbanktech.co.jp/special/blog/cloud_blog/

Twitter: @yagikuma_

喜多 陵(きた りょう)

日揮ホールディングスでデータ分析基盤(DWH)の構築運用、BIツール等を活用したデータ可視化/分析に従事。経済産業省主催のAI Quest 2020(第2ターム/図面解析)で112人中総合3位。E資格2020#1取得。

Qiita/Twitter/GitHub: @ryokita

鶴田 彰(つるた あきら)

エア・ウォーター・バイオデザインで、現在は主にスマート農業技術の開発に従事。前職での機械学習やUI開発などの経験を基に地域課題の解決を目指すべく、GCPUG Nara主催やCode for YAMATOKORIYAMAなどのコミュニティーで活動中。 経済産業省主催のAI Quest 2020で総合賞/AI課題優秀賞/プレゼン課題優秀賞を受賞。

Blog: https://mirai-tec.hatenablog.com/

Twitter: @moonlight_aska

猪狩 義貴(いがり よしたか)

NTTデータユニバーシティでテクノロジー系の研修開発やセミナー企画、機械学習等を用いたデータ分析に従事。AI関連ではE資格を保有している他、経済産業省主催のAI Quest 2020にて総合賞受賞。統計、機械学習の奥の深さや難しさに悩みつつも、楽しんで学習、活用中。

Twitter: @HZttSbuEiUidagA


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。