【マルチクラウド対応】GCPを使ったゼロから始めるAI活用(後編)

"GCPを使ったゼロから始めるAI活用(後編)"

(2020年7月10日掲載)

Google Cloud Platform を使ってゼロからのAI活用のステップとさまざまなノウハウをご紹介します。後編では、前編で準備したデータの分析、機械学習と予測、そして可視化の方法をご案内します。

永澤と申します。ソフトバンクでAI活用のサービス企画・開発、データ分析・予測ソリューションの導入支援などを担当しております。

前編では、AIを活用する際の心構えから始まり、実際のデータを加工する手順までをご案内いたしました。
【マルチクラウド対応】GCPを使ったゼロから始めるAI活用(前編)

""

データの「前処理」を完了し、次に進むのが「学習」です。「機械学習」ということもあり、このステップに最も華やかなイメージを持たれている方も少なくないかと思います。

しかし、今回使用する「AutoML」と呼ばれる技術によって、この部分で人間が手を動かす箇所は殆ど無くなります。「機械学習のプロセスはデータの準備と前処理で8割の時間を占める」ということが一般的に言われますが、今回の内容ではその部分をより強くご理解いただけるかと思います。

実際の学習と予測を通して、データをどのようにビジネスで活用していくのかを見ていきましょう。

※本稿で紹介させていただくサービス・機能・画面は2020年6月12日時点の内容となります。最新の情報とは異なる場合がございますので、ご了承ください。

目次

データ分析 - BigQuery・データポータル・Tableau

前編で作成した前処理済みデータをDataprep のJobsから確認(Profileを選択)すると、「最小値(Minimum)」「下四分位値(Lower quartile)」「中央値(Median)」「上四分位値(Upper quartile)」「最大値(Maximum)」といった基本統計量や、データの分布をヒストグラムで確認することができます。

""

「前処理をしたデータをすぐに学習しても良いのでは?」と思われる方もいらっしゃるかと思います。前編でも、探索的データ分析 - EDA(Exploratory Data Analysis)という概念を紹介させていただきましたが、この作業は機械学習のプロセス全体に渡って実施します。
前処理をした「綺麗な」データをあらためて分析することで、実際に学習をさせるデータに何か不足はないか、追加できる情報はないかといったことを深く検討することができます。

さて、その際に上記の基本統計量を確認することは、文字通り基本となる作業ですが、Dataprep の機能のみではデータの中身を十分に分析はできません。そこでご紹介するのがGCPのBigQuery とデータポータル、そして無償での利用には制限があるのですが、BIツールと呼ばれるTableau です。

BigQuery はGCPの中で「データウェアハウス(DataWaraHouse、DWH)」と呼ばれるサービスです。データウェアハウスとは、データ分析を主目的とした、データの格納を行うサービスを一般に指します。

""

馴染みの深い「データベース」は、ログイン時に参照するアカウント情報やパスワード、商品の在庫数など、「システムやサービスでその都度、読み出し・書き込み・削除」する用途に適しています。(Create、Read、Update、Deleteの頭文字を取って、CRUD処理と呼んだりもします。)

一方のデータウェアハウスでは、そうした処理を頻繁に行うデータではなく、「何月何日にどの商材が何個売れた」や「誰々がいつどのシステムにアクセスした」といった記録的な側面が強いデータをよく取り扱います。データを修正するのではなく、新しいデータをどんどん追加していく用途に適しています。
こうしたデータは、時間とともに量が膨大となってくるため、CRUD処理を行うにあたって性能や容量が最適化(≒制限)されたデータベースで取り扱うのではなく、データウェアハウスで格納・分析することが好ましいです。また、データウェアハウスでは格納するデータや方法を工夫することで、データベースと比較して大規模のデータであっても高速に分析できるよう設計がされています。
(ご興味のある方は、「RDBとNoSQL」「行指向と列指向」などのキーワードで検索すると、詳しい情報が得られます。)

この他、最近ではデータウェアハウスより広い概念の「データレイク」、データウェアハウスを分析用途ごとに分割した「データマート」など、複数の概念が登場しており混乱しますが、基本的には「データをどのような形で分析・活用したいのか」という観点で使い分けることができます。今回は、データウェアハウスを押さえておけば問題ありません。

説明はここまでにして、実際にBigQuery を触ってみましょう。
前編で作成したデータはすでにGoogle Cloud Storage (以下GCS)に格納されています。
まず、GCSからBigQuery にデータをインポートする作業を行います。
Dataprep のJob一覧から、詳細画面に遷移し、Output Destinationsをクリックすると、Locationの項目で格納先を確認できます。

""

Statusの欄にマウスをかざすと、「View details」と「More」というボタンが表示されるので、「More」をクリックし、「View on Google Cloud Storage 」をクリックすると、GCSの画面に遷移し、データを確認できます。重要なのは、どこにデータが存在するかになりますので、Locationの部分をメモしてください。

GCSの画面から、左上のメニューボタンを押すと、GCPのサービス一覧が表示されますので、BigQuery を選択します。
BigQuery の画面では左側にてデータの一覧と、この後ご紹介する「クエリ」についての項目を確認できます。画面右側は「クエリエディタ」とクエリの結果が確認できる画面となります。

クエリについての説明の前に、先ほどGCSで確認したデータの読み込みを行います。
BigQuery では、データの管理を「データセット」と「テーブル」という概念で行います。テーブルはExcelでの1シート、1まとまりの表形式データというイメージです。今回は、作成したtrain.csvを1つのテーブルとして読み込みます。
データセットは複数のテーブルを格納するフォルダのようなイメージです。初期状態ではデータセットが何も無いので、データセットの作成から開始します。

""

右下の「データセットを作成」から任意のデータセットを作成できます。

データセットIDは任意のもので問題ありません。その他の設定は特に変更せずに、「データセットを作成」をクリックします。データセットが作成されると、画面左側に表示されます。クリックすると、画面右側にデータセットの詳細画面が表示されます。

GCSからデータをインポートするために、「テーブルを作成」をクリックします。
設定は以下の通りです。

  • テーブルの作成元→Google Cloud Storage
  • GCSバケットからファイルを選択→「参照」をクリックして、先ほど確認したフォルダに存在するtrain.csvを選択します。
  • ファイル形式→CSV
  • テーブル名→任意(プロジェクト名とデータセット名は自動で入力されます。)
  • スキーマ→自動検出にチェック
  • 詳細オプション→クリックして、「スキップするヘッダー行」に1を指定します。

それ以外の項目は特に変更不要です。
設定が完了したら、「テーブルを作成」をクリックします。作成が完了すると、データセットの配下にテーブルが表示されるので、クリックすると詳細画面に遷移します。

先ほど、スキーマという項目で自動検出をオンにしました。スキーマとは、データの枠組みを指します。どんな列(フィールド)があり、どんな形式のデータが格納されているかを示す設計図のようなものです。自動検出機能によって、Dataprep で整理した形をそのまま読み取っていることがわかります。

無事にデータの読み込みが完了したので、早速分析を行ってみましょう。
「テーブルをクエリ」という部分をクリックすると、クエリエディタに文字が入力されます。

「SELECT FROM projectid.dataset.train LIMIT 1000」(projectidとdatasetは各環境のものに読み替えてください。)という内容が入力されます。
この文自体はエラーを含んでいますので、SELECTの後に*(アスタリスク)を追加します。
「SELECT * FROM projectid.dataset.train LIMIT 1000」
この状態で、「実行」をクリックすると、クエリ結果が表示されます。

train.csvをExcelなどで表示した時と同じように、表形式のデータが表示されました。

ここまでの内容で、クエリについて何となくご理解いただけたかと思います。クエリとは、格納したデータに対しての問い合わせを、人間が分かりやすい形で表現した文になります。
厳密には、SQLと呼ばれる言語で記述した文を指します。

SQLは標準的なデータベースでも使用する言語ですが、BigQuery でも標準SQLという規格で使用することができます。(厳密には、BigQuery 独自の規格であるレガシーSQLも選択できます。)

先ほどの「SELECT * FROM projectid.dataset.train LIMIT 1000」は、trainテーブルから全ての列を1,000行まで参照、という意味になります。
SQLは様々な命令が用意されており、使いこなすことでデータウェアハウスに格納した大規模なデータに対しても、必要な情報を高速に抽出したり、分析に役立てることができます。しかし、SQL自体に習熟している必要があるため、あらゆる人がすぐに使える、という訳ではありません。

そこでご紹介するのが、このようなデータと分析の橋渡し的な存在となるBIツールです。BIとは、Business Intelligenceを意味し、データからビジネスに活かすための有用な気づきを得ることをサポートするサービスやツールを総称します。SQLと比較してBIツールでは、SQLなどの専門的な知識を持たない方でも、グラフなど誰の目から見ても分かりやすい形にデータを表現することができます。

先ほどのクエリ結果の中央付近に「データを探索」という箇所があります。クリックし、「データポータルで調べる」をさらにクリックすると、データポータルの画面に遷移することができます。

""

データポータルの機能は豊富なので、全てをご案内することはできませんが、今回は簡単に「生存した人たちはどのような傾向が見られるか?」という部分までを分析したいと思います。

基本的な使い方としては、
1. 分析したい対象を決める(生存者と性別の関係、生存者と年齢の関係など)
2. 表現したいデータの形式を決める(棒グラフ・円グラフ・折れ線グラフなど)
3. グラフを作成して、分析
となります。

データポータルの画面左上より、「グラフを追加」をクリックすると、作成するグラフの種類が選択できます。今回は、積み上げ横棒グラフを選択します。

選択すると、データから自動で適当な対象を選択してグラフが作成されます。
自分の環境では、「男女別」に「どこの港から乗船したか」を示すグラフが作成されました。

""

見る限り、男女で比率に大きな違いはありません。
データポータルでは画面の右側で分析する対象を設定することができます。
「ディメンション」と「指標」がキーワードです。ディメンションは分析をする際のデータの切り口、指標はグラフにおけるデータ量の大小をどのデータに基づいて表現するかを示します。

先ほどのグラフでは、ディメンションにSexが指定され、指標にRecord Count(レコード数)、内部ディメンションとしてEmbarkedが設定されているので、横棒の長さは性別ごとのレコード数の合計、横棒の内訳は乗船した港で区分されています。

では、以下のように編集してみましょう。

  • ディメンション→Survived
  • 内部ディメンション→Sex
  • 指標→Record Count

下図のようなグラフができます。

""

trueが生存者となりますので、falseと比較すると女性の方が生存者数がとても多いことが分かります。これは、タイタニックの映画でも1シーンとしてあったのでイメージしやすい方もいらっしゃると思いますが、「避難する際に女性を優先した」ということが推測できます。そのため、予測を行う際には性別は重要な特徴量になりそうだと仮定できます。

続いて、生存者と年齢の関係を見てみましょう。
先ほどと同様に画面左上から「グラフを追加」をクリックし、積み上げ横棒グラフを選択します。

  • ディメンション→Survived
  • 内部ディメンション→Age
  • 指標→Record Count

デフォルトでは、データの系列が10個までしか表示されないため、画面右側の「スタイル」より「系列数」を最大の20にします。(データポータルではこのような表示制限がいくつかの箇所であるのが難点です。)

""

ご参考までに、後ほどご紹介するTableauで同様の分析行ったのが下図となります。

""

乗船者の年齢分布で、30歳の方が多いことがあらためて確認できます。多少は若い人や高齢者の方の生存率が高いように見受けられますが、先ほどの性別ほどハッキリしている傾向ではありません。避難時に、子供やご年配の方が優先はされたものの、体力や運動能力も関係していたのかもしれない、と想像することもできそうです。

このように実際のビジネスにおいても、ハッキリと因果関係が見られるデータというのは多くはありません。売上数一つを取ってみても、天気やキャンペーン、近隣のイベント情報や交通規制など、非常に様々な事象が複雑に影響し合って、最終的な売上数へと帰結します。

その全てを正確に予測することは、おそらく現実的では無いのかもしれませんが、少なくともデータ分析を通じて、見当をつけていくことが重要です。機械学習においては、そうした「関係しそうな」データを大量に集めて、予測の精度を上げていきます。

また、その際に非常に重要となるのが「ドメイン知識」と呼ばれる前提知識です。
どれだけデータ分析の手法そのものに通じていても、現場の方がこれまで蓄積してきた「経験と勘」の世界を、一切のヒアリングなしに実現することは不可能です。ドメイン知識とは、その業界、その分野に携わる方の持つ専門的な情報を指します。
例えば、近隣のレストランがお休みの日は、従業員の方が知り合いの居酒屋によく来る、という非常に限定的な状況があったとします。この居酒屋の来店客数を予測する際には、一般的に見当のつく曜日や給料日前後といった情報以外に、こうした特異な要素を加味することで、予測の精度を向上させることができます。したがって、実際に居酒屋の方とお話をして、「何となく」の世界であっても構わないので、どのような要素が関係し得るか、共に検討することが重要となります。
これは、実際のビジネスにおいても、データ分析部門に全てを任せるのではなく、現場の方々も巻き込んで協働していく重要性を示唆しているかと思います。

データの分析パートは以上になりますが、ぜひ、その他の関係も探ってみてください。

データポータルのその他の機能としては、グラフの共同編集やメールでの配信、Webページへの埋め込みなど、無料ながら多くの機能があります。以下のヘルプページからご確認いただくことが可能です。

基本的な使い方 - データポータルのヘルプ

なお、データポータル自体は設定に基づいて、裏側でBigQuery のクエリを発行して結果を取得しており、BigQuery の料金が発生する仕様です。数TBを超えるような大規模なデータに対しては、今回のような横断クエリ(アスタリスクを使用した全指定)だと、料金が高くつくため、本格運用される際は以下のページもご参照ください。

BigQuery の料金

BIツールにはその他、代表的なものとしてTableau (タブロー)というサービスがあるので、簡単にご紹介をします。

データポータルではディメンションや指標といった設定を一つ一つ設定しましたが、Tableau はドラッグ&ドロップを中心とした直感的な操作でデータの可視化が可能です。
また、一般的な棒グラフなどの形式だけでなく、地図やグラフ間の連携が簡単に利用できるようになっており、データの掘り下げなどもすぐに行うことができます。

実際の操作動画や無償のトライアルキャンペーンなど、以下のリンク先に詳しくご案内しておりますので、ぜひあわせてご覧ください。

さて、この節の最後に、タイトルの「マルチクラウド対応」を回収したいと思います。
今回はデータをまずGCP上にアップロードし、加工を行い、分析もしました。この後、機械学習と予測もGCP上で行いますが、AWSやAzureといった他のクラウドにデータが存在する場合もあるかと思います。

GCPでは他のクラウドからのデータ転送機能も豊富に揃えており、AmazonのストレージサービスであるS3やデータウェアハウスであるRedshiftから、GCSやBigQuery へデータを転送することができます。
また、GCPはデータ分析と機械学習のサービスに定評があり、元データはAWSに格納しつつ、分析または機械学習を行う際はGCPにデータを転送し、実施するという複数のクラウドを使い分ける動きも加速しています。これがいわゆる「マルチクラウド」の考え方であり、各クラウドの良い所取りをする使い方です。

""

本稿で手順をご案内するのは量の関係から、ドキュメントのリンクのみとさせていただきますが、移行にあたってのご相談もソフトバンクまでお気軽にご連絡ください。

このように、分析に必要なデータをGCSまたはBigQuery 上に集約することで、データポータルをはじめ様々なサービスと連携することが可能です。Tableau もBigQuery を直接データソースとして参照することが可能ですし、実は前編でご案内したDataprep は、出力時にBigQuery への登録をそのまま行うことができます。
今回は他クラウドからcsvファイルなどをGCSに転送した場合を想定して、GCSからBigQuery に登録する手順をご案内いたしました。

各クラウドの良い所取りをするにあたっては、ぜひ以下の記事も参考にしてみてください。

機械学習と予測 - AutoML Tables

データ分析パートでは、用意した学習データが予測したい対象(生存するか、しないか)とどのような関係があるかを分析しました。今回は新しく特徴量の追加は行いませんが、実際のビジネスではここでデータ収集のプロセスに戻ることもよくあります。

今回、機械学習で使用するのがGCPのAutoML Tables という機能になります。ご利用にあたって、今回のデータだと2点、事前準備が必要となりますので、まずそちらをご案内いたします。

1. GCPのメニューより、「人工知能 > テーブル」という項目がありますので、クリックし、AutoML Tables のAPI有効化画面が表示されるので、有効化します。
2. AutoML Tables の制約として、「最低1,000行以上のデータセット」という条件があるので、今回の889行のデータでは不足しています。実際のビジネスでも、画像認識モデルを作成する際にはDataAugmentationと呼ばれるデータの水増しを行うことは少なくないのですが、いくつかの注意点があります。今回はデータ活用の一連の流れを体感していただくという目的のため、水増しのデメリットはいったん考慮せず、データの追加を行います。

GCPのメニューより、再度BigQuery を選択し、先ほど作成したテーブルをクリックします。クエリエディタに以下のクエリをコピーして実行します。1回ごとに、37行のデータが追加される処理が3回実行されます。これにより、1,000行のデータとすることができます。

※BQでの実行クエリ(datasetとtableはそれぞれ設定した名前に読み替えてください。)

DECLARE
  x INT64 DEFAULT 1;
WHILE
  x <= 3 DO
INSERT
  dataset.table (Pclass,
    Sex,
    Age,
    SibSp,
    Parch,
    Fare,
    Embarked,
    Survived)
VALUES
  (1, 'male', 30, 0, 0, 7.0, 'C', TRUE),
  (2, 'male', 31, 0, 0, 7.0, 'Q', TRUE),
  (3, 'male', 32, 0, 0, 7.0, 'S', TRUE),
  (3, 'male', 33, 0, 0, 7.0, 'C', TRUE),
  (1, 'male', 34, 0, 0, 7.0, 'Q', TRUE),
  (2, 'male', 35, 0, 0, 7.0, 'S', TRUE),
  (3, 'male', 30, 0, 0, 7.0, 'C', TRUE),
  (3, 'male', 31, 0, 0, 7.0, 'Q', FALSE),
  (1, 'male', 32, 0, 0, 7.0, 'S', FALSE),
  (2, 'male', 33, 0, 0, 7.0, 'S', FALSE),
  (3, 'male', 34, 0, 0, 7.0, 'S', FALSE),
  (3, 'male', 35, 0, 0, 7.0, 'S', FALSE),
  (1, 'male', 31, 0, 0, 7.0, 'S', FALSE),
  (2, 'male', 32, 0, 0, 7.0, 'S', FALSE),
  (3, 'male', 33, 0, 0, 7.0, 'S', FALSE),
  (3, 'male', 34, 0, 0, 7.0, 'S', FALSE),
  (1, 'male', 35, 0, 0, 7.0, 'S', FALSE),
  (2, 'male', 30, 0, 0, 7.0, 'S', FALSE),
  (3, 'male', 30, 0, 0, 7.0, 'S', FALSE),
  (3, 'male', 30, 0, 0, 7.0, 'S', FALSE),
  (1, 'female', 30, 0, 0, 7.0, 'C', TRUE),
  (2, 'female', 31, 0, 0, 7.0, 'Q', TRUE),
  (3, 'female', 32, 0, 0, 7.0, 'S', TRUE),
  (3, 'female', 33, 0, 0, 7.0, 'C', TRUE),
  (1, 'female', 34, 0, 0, 7.0, 'Q', TRUE),
  (2, 'female', 35, 0, 0, 7.0, 'S', TRUE),
  (3, 'female', 30, 0, 0, 7.0, 'C', TRUE),
  (3, 'female', 31, 0, 0, 7.0, 'Q', TRUE),
  (1, 'female', 32, 0, 0, 7.0, 'S', TRUE),
  (2, 'female', 33, 0, 0, 7.0, 'C', FALSE),
  (3, 'female', 34, 0, 0, 7.0, 'Q', FALSE),
  (3, 'female', 35, 0, 0, 7.0, 'S', FALSE),
  (1, 'female', 30, 0, 0, 7.0, 'S', FALSE),
  (2, 'female', 30, 0, 0, 7.0, 'S', FALSE),
  (3, 'female', 30, 0, 0, 7.0, 'S', FALSE),
  (3, 'female', 30, 0, 0, 7.0, 'S', FALSE),
  (1, 'female', 30, 0, 0, 7.0, 'S', FALSE);
SET
  x = x + 1;
END WHILE;

無事にレコードが追加されたのを確認しましたら、再度AutoML Tablesの画面に戻ってください。

「新しいデータセット」をクリックし、任意のデータセット名を設定して、リージョンはグローバルのまま「データセットの作成」をクリックします。

「BigQuery からデータをインポート」を選択し、それぞれのIDを入力します。
それぞれのIDはBigQuery の画面左側から確認できます。

入力を完了したら、インポートをクリックします。完了まで、少々時間を要しますが、完了すると以下のような画面が表示されます。

""

Pclass(乗船チケットのクラス)がカテゴリとして認識されているので、クリックして数値に変換します。
次に、「ターゲット列」をクリックし、今回の予測対象であるSurvivedを設定します。

""

以上で、設定は完了です。「モデルトレーニング」をクリックすると、開始の確認画面が出ますが、予算に「1」を設定して、トレーニングを開始します。この数字についてはデータ量に応じたおよその目安を右側の「?」マークから確認できます。

トレーニング完了時にはGoogle アカウントのメールアドレスに対して、メールが届きます。今回1,000行という比較的少ないデータだったので、1時間半程度で完了しました。

機械学習において、モデルを作成した後は、どれくらいの精度を持つのか確認します。
「評価」をクリックすると、以下のような画面が表示されます。

""

画面上に多くの指標があり、混乱するかと思われます。それぞれ「?」マークをクリックすることで、解説が表示されます。ページの下部では、「特徴量の重要度」という項目があり、学習したデータのうち、どのデータが予測対象に大きく関係しているかを大まかに把握することができます。事前の分析でも仮説を立てていたように、性別による影響が大きいことが分かります。

車を運転する時に、信号や標識、速度や回転数を確認しながら進むのと同様、機械学習も様々な指標を参考にしながら、ビジネスでの活用を検討します。今回のモデルは総合して悪くはない精度と言えそうですが、 重要なのは実際のビジネスに投入した際に、費用対効果を上手く生み出せる精度まで達しているかという観点です。「正解率80%以上」のような絶対的な目標ではなく、様々な条件を考慮しながら、「利益を5%確保する削減率を達成できる精度」のように相対的な目標を設定することが大切です。

評価の見方について詳しくは以下のドキュメントにもございますので、あわせてご確認ください。
モデルの評価 | AutoML テーブル

さて、いよいよ予測です。
前編でダウンロードしたtest.csvを使用します。
注意点として、機械学習で予測を行う際は、学習データと予測用データのスキーマを揃える必要があります。したがって、前編で行ったtrain.csvの不要列削除や欠損値の補完を、同様の手順で行ってください。ただし、PassengerIDについては、予測した行がどの行なのか把握するために、残しておきます。

""

加工した予測用データは学習データと同様にBigQuery へ読み込みます。
予測用データの準備ができましたら、AutoML Tables (テーブル)の「テストと使用」をクリックします。

""

「バッチ予測」を選択し、学習時と同様に、今度は予測用データと出力先のBigQuery 各IDを入力します。
入力が完了したら、「バッチ予測を送信」をクリックして、後は結果を待つだけです。

""

処理が完了すると、BigQuery の指定した場所にテーブルが作成されます。PassengerIdごとに、どのように予測を行ったかが確認できます。scoreが、trueまたはfalseのどちらを強く判定したかの指標で、基本的にはscoreの高い方を予測結果として採用します。

予測結果をBigQueryに出力することで、データの分析で使用したデータポータルなど、様々なツールからも確認が可能です。実際のビジネスでは、予測結果が正しかったかを実データに照らし合わせて確認することになります。本稿の最終章にて、機械学習の運用に関する内容をご案内します。

以上、AutoMLという機械学習の自動化を目指した技術をご紹介させていただきました。いくつかの設定を行うだけで、モデルの作成から予測まで、非常に簡単に行うことができます。
一つ一つの操作を説明させていただくとかなりの量にはなってしまいましたが、一度慣れれば、様々なデータを同様の流れで活用することが可能です。

この節の最後は、その他の手法・サービスについても簡単にご紹介させていただきます。

  • AI Platform
  • BigQueryML
  • MAGELLAN BLOCKS

AI PlatformはGCPのサービス群の呼称で、機械学習を行う際に必要な機能が揃ったサービスです。一般的な機械学習エンジニアは、Pythonというプログラミング言語を使用して、データ収集から前処理、学習から予測結果の出力とデータの分析までを一貫して行います。Pythonの実行環境として一般的なのが、JupyterNotebookと呼ばれるツールであり、利用者は自身のコードを一つ一つ確認しながら、効率的にモデル構築を進めることができます。
AI Platformではノートブック用の環境用意は勿論のこと、すでに作成済みのアルゴリズムで推論を行ったり、モデルの管理をすることができます。
AI Platform のドキュメント

BigQueryMLはBigQueryの一機能という位置づけで、BigQueryに格納しているデータから、BigQuery 上で機械学習モデルを作成できる機能です。使い方としては、専用のSQL文を作成し、実行するだけなので、非常に簡単に利用が可能です。選択できるアルゴリズムは限られていますが、TensorFlowと呼ばれる機械学習のライブラリを使用して自作したモデルをSQL文で呼び出すこともできるので、BigQuery 上でデータの格納から分析、モデル作成から予測まで全てを完結させる、という使い方ができます。
BigQuery ML のドキュメント

MAGELLAN BLOCKSは株式会社グルーヴノーツが提供する機械学習プラットフォームサービスです。今回ご案内したAutoMLの位置づけのサービスであり、機械学習の専門的な知識がなくても、直感的な操作でデータ整備・学習と予測・可視化を行うことができます。画像・数値・テキストといった幅広いデータに対応しているのも特徴で、様々なビジネスニーズに応える利用が可能です。
MAGELLAN BLOCKS | AI・機械学習

コラム:Explainable AI(XAI)について

前編にて、機械学習の中にも様々な分野があるというお話をさせていただきました。特に、近年注目を浴びたディープラーニングは、機械学習の中の一つの学習方法です。
機械学習のアルゴリズムは統計学をベースとした数式で表現できるものから、ディープラーニングのようなニューラルネットワークをベースとしたものまで幅広く存在します。
ディープラーニングは、従来のアルゴリズムでは達成し得なかった高い精度を、膨大な量の学習データによって実現することができる一方、「どのような論理に基づいて予測結果を出力したのか?」という部分を、人間が理解できる形で説明することができません。
単純な線形回帰ではy=ax+bのような数式の形で予測対象の表現ができるため、例えば「気温が1℃上昇すると、客足が30減ると考えられるのか」のように、人間が分かりやすい形で説明することが可能です。

「因果関係を説明できない」というディープラーニングにおけるデメリットを、「ブラックボックス」と表現する場面は多く、お客さまからも「現場からは説明が求められるため、導入に踏み切れない」という相談をよく受けます。こうした課題に取り組む動きがExplainable AI(XAI)と呼ばれるもので、「説明可能な人工知能」と和訳できます。極端な例ですが、犯罪を行う確率が高い人物を割り出すAIを作成したとします。AIが危険な人物と判定し、逮捕された人がいたとして、逮捕された人自身や、そのAIの管理者がAIの判断根拠が分からないという状況は、様々な観点から問題があるかと思います。その他、医療現場におけるAI活用でも、なぜそのような推論に至ったか説明可能であることは重要であり、研究が進められています。

今回使用したGCPでもXAIの技術は提供されており、作成したモデルに対する説明を行うためのツールが利用可能です。

Explainable AI

この分野はまだまだ課題も多く存在しますが、ビジネスを始めとしてAIと共存するための技術は日々進歩しているので、これまでAIの活用に前向きでなかった、または課題を感じていたお客さまにも、最新の情報をお届けできればと思っています。

データの可視化と見直し

データの分析パートでご案内した内容とほぼ同一となりますが、予測結果をグラフで可視化した場合どうなっているのかを確認します。今回はTableauを使用した際のイメージですが、データポータルでも同様の処理が可能です。

""

学習データの分析の際に確認した分布よりも、女性の生存者の割合が増えているように見えます。予測結果の確認の際に必須なのは、実際のデータとの答え合わせです。
例えば、3日後の来店客数を予測するモデルを作成したとして、予測の時点ではどこまで予測が正しいかを確認する術はありません。あくまで、モデルの評価指標は目安となります。

実際のデータと照らし合わせて、どうも精度が良くないと感じる場合は、学習データの見直しが必要になります。

具体的には、

  • 学習しているデータに偏り(または不足)はないか?
  • 学習データに含まれていない傾向はないか?
  • 学習データでは反映していたが、最近無くなった傾向はないか?

などが一般的です。

""

再掲となりますが、分析を都度繰り返し、各ステップを見直し、ビジネス活用における効果の最大化を目指す。これが機械学習の王道的な取り組み方です。

続いての最終章にて、この機械学習サイクルの継続的な運用、MLOpsについてご紹介します。

ビジネスでの継続的な運用 - MLOpsとは?

本稿でここまでご案内してきた手順は、全て手動での操作が始点となっていました。
しかし、既述の通り、ビジネスで継続的に機械学習モデルを活用するには、データのメンテナンスや学習モデルの更新が欠かせません。手動の作業では、作業を忘れてしまったり、作業そのものが負担となってしまい、継続的な運用を行うことが難しくなります。

MLOpsとは、Machine Learning Operationsの略称であり、上記の課題に取り組む際、参考になる考え方です。Google の定義では、MLOpsにはレベルが0から2まで存在しています。

  • レベル0 - モデルの構築から予測の実行まで「手作業」で行われている段階
    • モデルの更新と評価が頻繁に行われないため、データの見直しも行われず、最新の傾向などを反映できずに、モデルの精度が低くなっていくことが懸念される状態。改善にあたって何が必要かの分析も断続的なため、効果的な施策や新たな技術を実行することも難しい。
  • レベル1 - MLパイプラインの自動化
    • モデルの作成と検証が自動化されることで、継続的な改善が可能な状態。基本的な運用は自動化されているので、最新の傾向の分析に注力したり、テストを行うことが可能。ただし、一部のステップで手動の部分が残っており、そこがボトルネックとなって、最新の傾向を反映したモデルの実装まで多少の時間差が生まれている。
  • レベル2 - CI / CD パイプラインの自動化
    • CIとはContinuous Integration、CDとはContinuous Deliveryの略称。レベル1でボトルネックとなっていた手動の作業も自動化され、例えば新規のデータが一定量追加されたことを始点として、特徴量の分析や学習データ設計、モデル作成とテストを自動で実施、既存モデルとの比較を通じて、より良いモデルへと改善を重ねる、といったパイプライン全体の自動化が実現された状態。

レベル2に達しているお客さまはおそらく世界中を見てもかなり小数なのではと思いますが、活用を勧めていく上での指針としては非常に参考になるかと思われます。詳細なドキュメントは以下となります。まずはレベル0を目標に、機械学習全体の流れを理解し、少しずつ上位の自動化を目指していく進め方が堅実です。
MLOps: Continuous delivery and automation pipelines in machine learning

また、このMLOpsの考え方はwithコロナの時代において、非常に重要 となります。
短期間で大きく社会情勢が変わった今回のような場合、過去のデータをもとに作成した機械学習モデルは突如役に立たなくなるケースがあります。お客さまからも、こうした状況下での対応や、AI活用の是非についてご質問をいただくことが多いです。

現在のところ、絶対的な解はないのですが、ポイントとなるのはまさにMLOpsでご紹介した継続的な運用です。過去2年分のデータでは確かに、今年の2~4月頃の来店客数や販売数を予測するのは非常に困難だったかと思います。

様々な手法が現在考案されていますが、

  • より現在に近いデータのみで学習する
  • 過去のデータにバイアスをかけて学習する
  • 特徴量選択の見直し

などが分かりやすい手法かと思われます。

過去のデータにバイアスをかける、というのは、データ分析を通じて、例えば来店客数が一定の割合で減っていることを確認できた場合、新型コロナの影響が顕在化する前のデータであっても、データに一定の係数をかけて学習データとして採用する、といった手法です。

また、特徴量選択の見直しとは、新型コロナ感染者数や緊急事態宣言の発令期間など、今回の状況下で社会に大きな影響を与えていそうなデータを新たに採用したり、これまで採用していた特徴量のうち、不要なものはないか検証することを指します。

いずれも、簡単な取り組みではありませんが、継続的な運用、まさにMLOpsが前提となる方法です。今後、分かりやすい成功事例が続々と登場してくるかと思われます。ソフトバンクとしても、お客さまの判断材料に役立つ情報を引き続き発信していきたいと思います。

まとめ

以上、前編・後編と非常に長い内容となってしまいましたが、いかがだったでしょうか。
データ活用の一連の流れを実際に体感することで、これまでお持ちだったイメージが変わった部分もあるかと思います。データの活用には、本稿で記載した内容を遥かに凌駕する量のテクニックやノウハウが存在します。今回はより多くの読者の方にご理解いただけるよう、基礎となる知識を解説しながら、様々なサービスのご紹介をさせていただきました。

最初から上手くいく機械学習のプロジェクトというのはおよそ存在せず、どのお客さまも試行錯誤を重ねながら、できること・できないことの線引を行い、最終的なビジネスでのメリットを享受されています。本稿の内容が、皆さまのデータ活用の一歩につながれば幸いです。

今回、中心的にご紹介させていただいたGoogle Cloud Platform については、最新のサービスや事例を紹介するGoogle Cloud Nextというイベントが、今年はGoogle Cloud Next ’20: OnAir(7月14日〜 9月8日)として、オンライン開催が予定されています。
参加は無料かつ、どこからでも最新のクラウド技術に触れられる良い機会かと思いますので、ご興味のある方はぜひ確認してみてください。
(イベントへの参加には公式サイトからの登録が必要です。)
公式サイト:Google Cloud Next OnAIr

ソフトバンクはGoogle Cloud Platform の最上位パートナーであるプレミアパートナーとして、お客様のクラウド導入を支援しており、2019年度においては、優れたパートナーを表彰するGoogle Cloud Expansion Partner of the Yearのグローバル部門でも受賞いたしました。
・Google Cloud Platform サービス詳細
・プレスリリース「2019 Google Cloud™ Expansion Partner of the Year を受賞」

また、自社開発のプライベートクラウドである「ホワイトクラウド ASPIRE」や、「Microsoft Azure」や「IBM Cloud」、「Alibaba Cloud」といったパブリッククラウド、それらをセキュアにお客さま環境と接続する各種専用線サービスも取り揃えております。
小さなことからでも結構ですので、お困りの課題がございましたらソフトバンクまでご相談ください!

・「ホワイトクラウド ASPIRE」サービス詳細
・「Microsoft Azure」サービス詳細
・「IBM Cloud」サービス詳細
・「Alibaba Cloud」サービス詳細
・クラウドアクセスサービス一覧

以上、最後までお読みいただき、ありがとうございました。

""