本連載では、AutoMLを実現するさまざまなOSSを解説します。第1回は、AutoMLの概要と、次回から紹介するさまざまなOSSを実行するための環境やデータについて解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本記事で紹介したノートブックはGitHubにて公開しています。すぐに実行できますので、ぜひご利用ください。
本連載では、AutoMLを実現するオープンソースソフトウェア(OSS)を解説します。連載第1回目となる今回は、そもそもAutoMLとはどういうもので、どういった機能やメリットがあるのか解説します。そして、第2回から毎回1つずつOSSを紹介していきます。紹介予定のOSSは以下の通りです(※取り上げるOSSについては今後変更する可能性があります)。
各OSSの紹介に当たって、特徴を示せるようなテーブルデータや画像データを利用しますが、どのOSSも共通で必ずタイタニックの生存予測データを利用してAutoMLを実践していきます。タイタニックの生存予測という同じ課題に取り組むことで、各OSSのAutoML実装の差異が分かるようにしたいという意図があるためです。なお、どのOSSも基本的にGoogle Colaboratory (以下、Colab)で動作させながら解説する予定です。
この記事の最後に、Colabの使い方と、タイタニックの生存予測データの取得方法および概要を説明します。これらを使用したことがない方は、第2回以降に紹介するOSSを実行する際の参考にしてください。
本連載では、機械学習の理論などの基礎は説明しません。従って、対象読者は機械学習の基礎知識を身に付けている方を想定しています。何らかの機械学習ソフトウェアを使ってデータ分析をしたことがある人なら、読みやすい内容になっていると思います。ただし、AutoMLの特性上、中身がブラックボックスでもある程度は利用できるため、基礎知識がない人でもAutoMLは試せるような書き方を心掛けています。
AutoMLとは、機械学習を用いたデータ分析のプロセスを自動化することやその技術全般を指す言葉で、「Automated Machine Learning(自動化された機械学習)」の略称です。ただし、AutoMLに明確な定義があるわけではなく、OSS(の開発者)によって若干解釈は異なります。
「データ分析のプロセスを自動化する」とはどういうことか、もう少し具体的に説明します。データ分析のプロセスには試行錯誤を伴うような工程が幾つかあります。モデルを構築する工程では、まずロジスティック回帰で学習し、次にランダムフォレスト、多層パーセプトロン……というようにさまざまなモデルを試し、精度を比較します。それぞれに対して、さまざまなパラメーターを設定しては学習し直し、より良い結果が得られるものを抽出するといった作業を繰り返します。その後、複数のモデルを組み合わせて精度向上を目指すアンサンブル学習を試したり、組み合わせを変えてみたり手法を変更してみたりしながら、さらなる精度の向上を図っていきます。
このような作業の中には人間がやるより機械的に実行した方が効率のよいものが多くあります。それらを自動化することがAutoMLの役割です。
AutoMLが登場する以前は、機械学習を用いたデータ分析には高度な技術が必要であり、専門知識を持つエンジニアに限られていました。しかし、AutoMLが登場したことで高度な技術や知識がなくてもGUIや数行のコードでデータ分析が可能になりました。
またハイパーパラメーターチューニングではベイズ最適化や遺伝的アルゴリズムなどの手法が用いられるため、専門知識がないエンジニアでも効率的なチューニングが実行できます。つまり、AutoMLはAI(人工知能)活用のハードルを下げること(いわゆる「AIの民主化」)ができます。それに加えて、既に機械学習に精通しているエンジニアにとっても、AutoMLを活用することで、より効率的にデータ分析を進めることができるため、大幅な生産性の向上が期待できます。
しかし、AutoMLにもデメリットはあります。機械学習(特にディープラーニング)は本来ブラックボックスになりやすいものですが、多様なモデルを試行できるAutoMLでは、説明可能性、解釈可能性の問題(どのような根拠でデータから答えを導き出したのかエンジニアが解釈できない、顧客に説明できないこと)がより顕著に表れてしまうことがあります。
ただし、そのデメリットを解消しようとする動きもあります。特にクラウドサービスでは、「XAI」(Explainable AI、説明可能なAI)などのキーワードとともに、説明可能性、解釈可能性を高めるための機能が提供され始めています。例えば、どの特徴量が結果に大きく作用するかをソートして表示するような機能です。さらに、この分野をサポートするOSSも登場してきています。例えば、機械学習を誰もが解釈可能で理解できるようにすることを目的として開発された「Shapash」が、2021年1月にリリースされています。
まとめると、AutoMLのメリットとデメリットとして、以下のようなことが挙げられます。
AutoMLの最初の取り組みは、2013年ごろから大学やスタートアップ企業で行われるようになりました。ブリティッシュコロンビア大学の研究者らが中心となって開発されたAuto-WEKA(2013年)は、Wekaという機械学習のOSSが提供するアルゴリズムを利用してAutoMLができるようにしたものでした。次いで、アルベルト・ルートヴィヒ大学フライブルグのauto-sklearn(2015年)やペンシルベニア大学のTPOT(2015年)などが開発されました。
その後、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年の後半に注目度が大きく上昇し、以降も高い注目度を保っています。
AutoMLができるOSSのGitHubのスター数やレポートされている市場規模の推移などから判断しても、AutoMLへの関心は今後も高まるのではないかと予想します。
AutoMLは機械学習を用いたデータ分析のプロセスを自動化します。従って、一般的な機械学習のデータ分析のプロセスと比較することにより、AutoMLの機能や特徴が分かりやすくなるはずです。まずはAutoMLを解説する前に、一般的なプロセスを確認しておきましょう。ここでは、構造化データのデータ分析について紹介します。
機械学習を用いたデータ分析では多くの場合、以下に示すような工程で問題に取り組むことが多いのではないかと思います(※データ分析の要件定義やデータの収集などのプロセスは事前に完了していることとします)。
ただし、この工程の通りに一方向的に進んでいくのではなく、前のステップに戻って改善を図ったり、次のステップをスキップしたりを繰り返しながら作業は進んでいきます。簡単に各工程を説明します。
※前者は二乗項や交差項の作成などの汎用(はんよう)的な手法を用います。後者は専門知識に基づいた特徴量の作成で、例えば、糖尿病の分析であれば、体重を身長の2乗で割った新しい特徴量(BMI)を作るようなことです。後者の方が効果的ですが、どうしても人の知識が必要なので自動化が難しくなります。
AutoMLの機能を提供するOSSが自動化の対象とするのは、前述した手順の中で主に5〜9の部分です。1つのステップの自動化に特化したもの(特徴量エンジニアリングに特化したFeaturetools)もありますが、多くのOSSは複数のステップをまとめて自動化できます。
例えば、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」の画面です。
最後に、本記事の冒頭で述べたように、Colabの使い方とタイタニックの生存予測データの取得方法と内容を簡単に説明します。
Colabは、Googleが無料で提供している機械学習の教育や研究用の開発環境で、Jupyter NotebookのようなUIとなっています。ColabにはPythonの主要なライブラリがあらかじめインストールされており、Googleアカウントさえあればすぐに機械学習の実装を開始できます。
Colabへアクセスすると、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つのファイルからなります。
このデータをまとめて圧縮したzipファイルはKaggleのサイトにログインして取得することができますが、われわれのチームのGitHubリポジトリにアップロードしてありますので、ここから取得してみてください。
では、ファイルの内容を確認してみましょう。Colabを表示して以下の手順を実行すると、この連載で使用可能なノートブックが表示されます。
表示されたノートブックの中のセルを上から順番に実行していくと、データの内容をおおむね理解できるはずです。
この中で使用されている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.