フォーム読み込み中
Google Cloud Platform を使ってゼロからのAI活用のステップとさまざまなノウハウをご紹介します。すでにデータ分析に携わっている方、未経験問わず、クラウドのパワーを体感しましょう。
永澤と申します。ソフトバンクでAI活用のサービス企画・開発、データ分析・予測ソリューションの導入支援などを担当しております。
これまでさまざまなビジネスのお客さまにて、実際のデータをお預かりしながらご支援をさせていただいてきました。本稿では、前編・後編に分けて、そこで得られたノウハウやAI活用におけるポイントをご紹介させていただきます。
後編は、下記からご確認ください。
【マルチクラウド対応】GCPを使ったゼロから始めるAI活用(後編)
この記事を読むと何ができる?
この記事の想定対象
※本稿で紹介させていただくサービス・機能・画面は2020年6月12日時点の内容となります。最新の情報とは異なる場合がございますので、ご了承ください。
今回の前編では以下の内容をご紹介いたします。
これまで数百社とまではいきませんが、製造・小売・インフラ・金融・サービスなどさまざまな業界のお客さまのご相談を数十社以上承ってきました。
その中で多いきっかけだったのが、「社長(経営層)がAIを使って何かやってみよう、と」のようなパターンです。昨今のAI・ビッグデータといったキーワードへの注目度からも分かりますが、各社の経営戦略においても、これらの言葉が入っていないケースは稀になってきている印象です。
実際の指令が下される現場の担当者の方からすれば、「何から始めればいいのか?」と思うのも無理はありません。自分はこのようにしてご相談をいただいた場合に、「いわゆるAIと活用可能な範囲の説明」および「現状の業務における課題の確認」を必ず実施しています。
まず、「いわゆるAIの説明」についてですが、「AI」という単語は話し手・書き手によって定義が多分に揺れる概念であり、議論をする際には出発点を揃えることが重要です。
総務省が毎年発行している「情報通信白書」では以下の図解がなされています。
こちらの図を見ていただいても、AI(人工知能)が抽象的な概念であることが分かるかと思います。
現在のビジネスの場面においては、「AIの活用」というと、さらに踏み込んだ「機械学習」や「深層学習」を指すことがほとんどかと思います。
(以降の説明でも、「AI」については基本的に「機械学習」を指すものとします。)
続いて、「機械学習」がビジネス上のどのような場面で活用できるか、ここで登場するのが「データ」になります。
例えば、とある小売店が過去5年分の日次販売データを持っているとします。販売データには、1日に「どの商品が」「何時に」「いくつ」売れたのかが記録されています。
小さな規模の商店であれば、販売記録やレジのレシートから、現場の方がおおまかな傾向を把握されているかもしれません。また、スーパーやデパートなど規模の大きな販売店であれば、専用のシステムでデータを保存している場合がほとんどでしょう。
これらの「記録」「データ」から、「夕方は肉がよく売れるな」といった「傾向」を判断するのは、不思議ではないかと思います。
人間は物事の大小に関わらず、これまでの経験や知識から、「未来がこうなりそう」と推論する能力を有しています。「機械学習」とはこの人間の能力と同様に、「データ」を「機械」に与えることで、「パターン」を見つけ出し、「推論」を可能にする技術です。
ビジネスにおいても、過去のデータから、未来の販売数を予測したり、正常な部品と異常な部品を識別するといったことが、機械学習によって実現を期待できます。
さて、このように機械学習を実施するには「データ」の存在が重要になります。機械学習には、大きく3つの分類がありますが、いずれも何かしらのデータ・情報をもとに、パターンを見つけ出す構図は変わりません。
ここまで、「いわゆるAIと活用可能な範囲」を整理しました。本題として「現状の業務における課題」を確認します。
「AIを活用せよ!」の号令で問題となるのは、手段と目的が逆転している場合です。
すでに説明させていただいたように、機械学習を実施するにはいくつかの前提条件が存在します。AIだから何でもできる、という時代には残念ながらまだ到達していません。
企業の存在理由が、利益を生み出し、社会に広く価値をもたらすことであれば、機械学習はあくまでその手段の1つです。
AIを活用する、という点に腐心してしまうと、課題の設定において視野が狭くなりがちです。実際、少なくないお客さまにて、機械学習ではなく「データの蓄積と可視化」のみを実装することで業務課題を解決できたケースがございます。
ポイントは、現状の課題を広く整理し、その中で機械学習による恩恵を期待できる領域を、優先度を考慮しつつ確認することです。機械学習が得意とするのは、「推論」であり、数値の予測や対象の分類が含まれます。以下は実際のビジネスにおける活用イメージです。
ソフトバンクでもさまざまなAI活用の事例をご紹介しています。
企業や行政のAIによる業務改善事例を一挙紹介!
課題からスタートし、実際の事例も理解することで、お客さま側でも議論が活発になり、取り組まれたい内容が明確になるケースが多いです。AIを活用するにあたっては当然、サービスやシステムへの先行的投資が必要になります。出てきた課題をさらに分解し、「解決した場合、どのような効果が定量的・定性的に観測できるか?」「そのために必要なコストは何か?」「得られる効果はどのような観点で投資に見合うか?」と踏み込んだ議論を行っていきます。
「AIを活用せよ!」に潜む矛盾とは、本来は企業価値を高める目的で打ち出した方針が、「とにかくAIを使ってみよう…」と手段として現れてしまい、課題を適切に設定できず、時間や人員を無駄に費やしてしまう現象だと考えています。
さて、AIによって解決したい課題を整理したところで、ここからは「AIを活用」するまでの過程を説明いたします。
一般的には以下の流れで進行します。
それぞれのステップは基本的に大きな矢印の方向に進んでいきますが、前のステップに戻ったり、スキップしたりということはよく起こります。サイクルを常に回しながら、ビジネス活用における効果をより大きくしていくイメージです。
各プロセスをまとめると、
となります。
「可視化・分析」は、データを収集する際にも行いますし、もちろん前処理でも、そして予測結果を確認する際にも行います。すべてのプロセスに付随する内容のため、上記のような図で表現しています。データの可視化では、数字や文字の羅列であるデータを、グラフで表現したり、人間の目から見てデータの理解を効果的にすることを指します。
この他、データ活用のためのフレームワークはさまざまなものが存在します。
有名なものとして、CRISP-DM(CRoss-Industry Standard Process for Data Mining)と呼ばれるフレームワークでは、「ビジネス課題の理解」→「データの理解」→「データの準備」→「モデリング」→「評価」→「実装」というサイクルを回します。大きな枠組みは先述の内容と共通しているかと思います。
全体の進め方を確認したところで、いよいよ上記のプロセスに対応するクラウドサービスとその利用方法を紹介していきます。「マルチクラウド対応」とタイトルにありますが、基本的にはGoogle のクラウドサービスであるGoogle Cloud Platform (GCP)の機能を中心として紹介し、後編にてAmazonのクラウドサービスであるAmazon Web Service(AWS)と、MicrosoftのAzureとの統合に言及します。
今回はデータの例として、データ分析の界隈では有名なTitanic号の生存者データを使用します。また、予測するのは「生き残れそうかどうか」という、0か1の分類問題となります。
こちらのリンクから、train.csvとtest.csvのファイルをそれぞれダウンロードします。(右上のダウンロードマークをクリックします。)
ダウンロード後、Excelなどのツールで開くと、表形式のデータが確認できます。
導入支援においては、お客さまからサンプルのデータをお預かりして、中身を確認することも多いですが、このように何らかのcsvデータまたはxlsxデータをいただく場合が多いです。
このデータの簡単な説明は以下となります。
では、まず「データ収集」と「前処理」のプロセスを進めていきます。
なお、以降の操作ではGoogle Cloud Platform の利用が可能であることが前提となります。
新規アカウントの取得は無料かつ300USD分の無料枠が付与されていますので、本稿でご案内の内容をすぐにお試しいただくことが可能です。(公式スタートガイド)
操作にあたって想定しているレベルとしては、以下の内容をクリアしていれば、問題ありません。
今回の場合、「データ収集」はこのダウンロードで完了しているものとします。実際の業務では、さまざまな部門と調整して必要なデータを集めたり、気象庁や国交省のオープンデータを整理したり、有償のデータを購入したりなどして、それらを統合していきます。
「前処理」で用いるのはGoogle Cloud Platform のDataprep という機能です。
このDataprep のメリットとしては、
などが上げられます。
Google Cloud Platform のコンソールにログイン後、左上のナビゲーションメニューから、Dataprep を探します。初回起動時は、利用規約への合意や、データの保存先を指定する画面が出ますので、それぞれ確認してください。(基本的にデフォルトの設定で問題有りません)
設定が完了すると、以下のスタート画面が表示されます。
画面右上の「Import Data」より、先程ダウンロードしたファイルをアップロードします。
なお、Dataprep ではcsvファイルだけでなく、いわゆるExcelファイル(xlsxやxls)もそのままアップロードすることが可能です。Excelファイルの場合、アップロード時にファイル内のどのシートを読み込むか指定ができます。
画面左の「Library」より、アップロードしたデータを確認できます。
それでは、train.csvをクリックしてみましょう。データの詳細が確認できます。
続いて、画面右上に「Wrangle in new Flow」というボタンがあるので、クリックします。
データの読み込みが完了すると、棒グラフとともにデータの中身が表示されます。
この画面で実際にデータの加工を行っていきます。Dataprep の優れている特徴として、データをアップロードした段階で、中身の傾向をおおまかに把握することができます。今回の場合、乗客の性別割合や、年齢分布などが一目で分かります。それぞれの棒グラフにカーソルをかざすと、細かなパーセントなどが表示されます。また、データの中身と列名から、自動でデータの型(種類)を判別し、不適な値を赤色でマークしてくれます。赤色部分をクリックすると、実際のデータの中で該当する箇所がハイライトされ、対象にどのような操作をするかヒントが画面右側に表示されます。
(Ageは整数の値として認識されており、小数点以下を含む値が「mismatched value」としてハイライトされています。右側の「Suggestion」から、対象行を削除したり、置換する処理がすぐに追加できます。)
機械学習における前処理にはさまざまな手順がありますが、一般的なものとして、
などがあります。一つずつ、train.csvのデータを用いて実施します。
まず、欠損値です。欠損値とは、何かしらの原因でデータが含まれていない箇所を指します。今回だと、Age列やCabin列にいくつかの欠損が認められます。
最もシンプルな対応方法は、欠損を含む行を削除してしまうことですが、貴重な学習データを減らしてしまうことも意味します。また、欠損値は必ずしも削除する必要はなく、採用する機械学習の手法(アルゴリズムと一般的に呼ばれます)によって、対応が変わります。
今回はより多くのアルゴリズムを検討するために、Age列の欠損値を平均値で補完し、Cabin列は列そのものを削除してみます。
Dataprep 上でAge列の灰色の箇所をクリックすると、欠損値に対する推薦処理が画面右側に表示されます。英語のみの表記ではありますが、
といった操作が可能です。
今回は、Setを選択し、Editをクリックします。
Age列に対する変換ルールを設定する画面が出てきます。
Formulaで変換ルールを設定します。Excelの関数とほぼ同様です。今回の場合、欠損値に対して、Age列の平均を代入し、小数点以下を切り捨てています。
Addをクリックすることで、Recipeと呼ばれる部分に操作が記録されました。Excelでもマクロといった手段で操作手順の記録はできますが、Dataprep ではこれらの操作を前処理に特化して分かりやすく管理できる点が強みです。
つづいて、Ageの小数点以下を含む行も同様に修正します。
Previewでは、追加しようとしている操作によってデータがどのように変化するかすぐに確認ができます。
以上の操作によって、Age列の欠損値は0個になりました。
Dataprep では、こうした基本的なデータ操作の他にも、複数の表を結合する機能や、操作に関するコメント機能、柔軟なフィルター等、前処理に便利な機能が多く揃っています。
さて、上記のRecipeを完了すると、欠損値のないデータが完成します。
削除する列をどのように決定するかはいくつか観点がありますが、基本的な考え方として、「これから予測したい対象に関係があるか?」という視点が出発点となります。
この際実施するのが、データの分析であり、より専門的には探索的データ分析、EDA(Exploratory Data Analysis)とも呼ばれます。
今回の場合、PassengerIdはお客さま一人一人に固有ですし、特定のIDで生存率が高い、という傾向は見られませんでした。これはNameやTicketでも同様です。
また、Cabin列はデータの欠損値が70%以上と多く、補完が難しいため、列ごと削除をしています。Embarkedでは、2行のみ、欠損値がありましたが、どこの港から乗船したかを正確に補完するのは既存の情報からは難しいですし、行数も少ないため、思いきって削除をしています。
それでは、続いてデータの変換を行います。なお、今回のデータでは異常値は存在しませんでしたが、例えば、何らかのエラーで誤って年齢が999歳の方が数名存在し、いずれも生存していた、というデータが入っていたとします。この場合、「年齢が高い方が生存している可能性が高くなる」という誤った傾向を生み出してしまう可能性があります。このように、データの全体から見ると少数かつ際立った値を異常値と呼び、修正の対象となります。異常値は上記のように、何らかのエラーから発生する場合もありますが、たまたまという場合もあります。考え方としては、生じる確率が著しく低いような、一般的な傾向を表現するには乖離があるデータは異常値として取り扱うケースが多いです。
ここまで、
は完了していますので、残る確認点は、
です。
データ型とは、プログラミングのご経験がある方はとっつきやすいかもしれませんが、端的に言うとデータの種類を表します。整数であったり、小数点を含む数字であったり、文字列といったものが代表例です。
Dataprep では、各列名の左側にアイコンが有り、データ型を示しています。
例えば、Fare列はDecimalという小数点以下を含む数字であり、EmbarkedはStirng(文字列)です。Dataprep ではデータ型をデータの中身から自動で判別してくれますが、意図した型として認識してくれない場合があります。よくある例としては、数字として入力されているが、文字列として認識してほしい場合です。
数字と文字列(カテゴリ)ですが、大きな違いは他の値との関係性です。
数字の場合、1は10より小さく、100は10より大きいものとして認識します。
今回のデータでは、AgeやPclassが数字として認識されていますが、10歳は60歳より若く、1等乗船チケットは3等乗船チケットよりも上等なチケットです。
一方で、StringであるEmbarkedは、あくまで乗船地点を示すものであり、上下の関係はありません。
さて、Survived列を見てみると、Integer(整数)としてデータ型が認識されているかと思います。「生存」「死亡」は大小の関係ではなく、あくまで分類としての違いを表しています。このように、数字で入力している分類を整数として認識するケースはよくあるので修正します。
Survived列の#マークをクリックすると、データ型の変換メニューが出てきます。Stringでも可能ではあるのですが、今回のように「0が生存していない(=死亡)」「1が生存」といった「なし・あり」で表現をするデータをBoolean型のデータと呼びます。したがって、今回はBooleanを選択します。
Booleanを選択すると、Recipeにデータ型の変換操作が追加されます。
以上で、今回利用するAutoML Tables での機械学習前の処理は完了です。
選択するアルゴリズムによって、上記の文字列(カテゴリ)データを、さらに細分化(One-Hot Encodingなど)したり、より特徴を表す数値にまとめ上げたりすることもあります。
ここで初めて「特徴」というキーワードを用いましたが、予測したい対象に関係を持つ(表現できる)ことを機械学習において「特徴」という言葉で表します。
そして、「特徴」を測定可能な形で表したものを「特徴量」と呼び、関係するデータを必要な形に加工したり、新しいデータを作り出す工程を「特徴量エンジニアリング(Feature Engineering)」と呼びます。
これまでの操作がまさしく特徴量エンジニアリングということになります。
実際のビジネスにおいては、複数のバラバラなデータから形式を整えた学習データに統合する必要があったり、必要なデータを探索的データ分析を通して選択していったりと、このデータ前処理および特徴量エンジニアリングの過程でかなりの手間を要するケースが多いです。
データの分析については、後編で詳しく解説していきます。
これまでの処理を行ったデータを出力して、このステップは完了です。
画面左上の、「train Flow」という箇所をクリックすると、以下のような画面に遷移します。
一番左側が、最初にアップロードしたファイルを示しています。右側のtrainが、これまでの加工、つまりRecipeです。Dataprep では、このようにアップロードやRecipe自体を一つのまとまりとして、データの流れを制御することができます。
では、trainの右上にある出力ボタンをクリックします。
出力に関する詳細画面が表示されます。「Edit」より、出力先の設定やスケジュール実行の設定ができます。
出力先はGoogle Cloud Storage というストレージサービス上にCSVやJSONでの出力もできますし、後編にてご紹介するデータウェアハウスであるBigQuery への登録も可能です。(BigQuery の場合は事前にデータセットと呼ばれる出力先を作成する必要があります。)
今回は、CSVファイルの出力を行います。
先ほど表示した出力に関する詳細画面(Details)にて、「Edit」をクリックするとPublishing settingsという出力先設定の画面に遷移します。
さらに「Edit」をクリックすることで、出力先の指定画面に遷移します。
画面左側にてGCSを選択することで、すでに存在するフォルダーを選択したり、「Create Folder」より新規作成が可能です。
画面右側ではファイル名と、出力フォーマットが選択できます。
また、ファイル生成時のオプションとして以下が用意されています。
More optionsをクリックすると、以下の設定が可能です。
今回は、出力フォーマットをCSV、出力方法はReplaceを選択し、Include headersのチェックボックスを有効化します。また、Include quotesのチェックが外れていることを確認してください。Delimiterはコンマのままとします。
「Update」をクリックすることで設定が保存されます。
Dataflow Execution Settingsでは、今回の前処理をどのサーバで実施するかを選択できます。Google は全世界にデータセンターを有しており、Region・Zone・Machine Typeの3つが選択可能ですが、Regionにasia-northeast1を選択することで、東京のデータセンターが使用できます。Zoneとはさらに細分化された単位で、それぞれRegion内の独立したデータセンターを指します。また、Machine Typeでは前処理で用いるサーバの性能を選択できます。一般的には高性能なサーバほど処理は早く完了しますが、利用時間単位の価格も高くなります。
今回は特にこだわりが無ければ、デフォルトの値のままで問題ありません。
クラウドにおけるデータの取扱いについては後述のコラムにて詳述しましたので、ご興味のある方はご一読ください。
以上の設定が完了し、画面左下の「Save settings」をクリックすることで準備完了です。
先ほどのDetails画面が再度表示されますので、「Run Job」をクリックすることで確認画面に遷移し、もう一度「Run Job」をクリックすると処理が開始します。
実行中の処理はJobと呼ばれ、Detailsの画面及びDataprep の画面左側にある「Jobs」から進行状況の確認が可能です。完了すると、設定で指定したフォルダーにCSVファイルが格納されます。
「Jobs」より、詳細画面にて出力されたCSVのダウンロードや統計情報を確認することができます。
以上、細かな説明も含めると長くなってしまいましたが、データ前処理を便利に実施できるDataprep の操作をご紹介させていただきました。特別な知識は不要で、一度操作に慣れればさまざまなデータの前処理が簡易にできるようになります。また、料金面においては、Dataprep は処理を実行する際のサーバ利用料のみが発生しますが、今回の設定と処理に要した時間では、10円以下の利用料しか発生しません。非常に安価に利用ができ、強力にデータの処理過程を管理できる点は魅力的かと思われます。
(注意事項:料金に関しての正式な情報は公式ページをご確認ください。)
今回ご紹介した機能以外にも、前処理にあたって便利な多くの機能が日々アップデートされている点も注目です。深い知識を要することなく、少しの慣れで簡単に使うことができますので、ぜひご利用してみてください!
Dataprep 公式ドキュメント(英語)
お客さまへクラウドを提案する際に、よくいただくのが「クラウドは安全なのか?」というご質問です。今回ご紹介しているGoogle Cloud Platform をはじめ、クラウドサービスは利用開始時に規約への同意が必ずと言っていいほど求められます。
規約内では、データの取り扱いに関しての記載もあり、一般的に「責任共有モデル」という概念で説明されます。
今回のように、自分の持つデータをクラウド上にアップロードした場合、データのアクセス権限設定や削除などの操作は、ユーザー側の責任において実施されます。一方で、クラウドサービスを提供しているサーバは、クラウド事業者が管理しており、サーバの物理的な管理に不備があった結果、データが流出したり、消失した場合の責任はクラウド事業者が持つ、ということになります。したがって、規約内では、クラウド事業者の責任範囲が明記されており、不備があった際の補償に関しても記載があります。
しかし、常に100%の補償を受けられるという訳ではなく、さまざまな条件が記載されていますので、あくまで利用規約に合意した形での利用、ということになります。
とはいえ、Google をはじめ各クラウド事業者では、セキュリティに関する情報の開示に非常に積極的であり、国際的なセキュリティ認証の取得状況やサービス仕様に関する情報が公開されています。ユーザー責任となる運用上のセキュリティリスクを低減するためのさまざまなサービスも提供されており、適切な利用によってクラウドを効果的にビジネスへ取り入れることが重要かと思われます。
信頼とセキュリティ | Google Cloud
また、Dataprep でJobの実行の際に設定したように、「どこに・どこで」アップロード・処理するかも重要な観点です。GDPRのように、特定の地域でのデータ保護に関する規則が昨今では増えてきています。各国に存在するデータセンターは、所在国の法規制を満たす運用がされており、クラウドを活用する際は、取り扱うデータがどのようなものか考慮した上で、データセンターの地域を選択する必要があります。
もし、どうしてもクラウド上へのデータのアップロードが難しい場合は、お客さまのデータを秘密保持契約に基づいてお預かりまたは閲覧させていただいた上で、ネットワークに接続されていない手元のコンピュータ上で処理することもあります。
今回ご紹介したDataprep はWebブラウザー経由でしか利用できませんが、後編でご紹介するTableauは、デスクトップのアプリケーション内でノンプログラミングでのデータ前処理を可能にする機能が備わっています。また、より一般的なのはPythonやRなどのプログラミング言語を用いて、処理を行うことです。そして、場合によってはExcelも立派なツールとして使用できます。重要なのは、いかに作業を簡略化・自動化できるかという観点と、データ管理におけるセキュリティ基準・ポリシーを満たすツールを選択できるかだと考えております。
前編ではAI活用に取り組むにあたっての心構えと、実際のデータを前処理する過程をご案内いたしました。後編では、前処理したデータを用いて、データの分析・機械学習・予測・可視化を行っていきます。
【マルチクラウド対応】GCPを使ったゼロから始めるAI活用(後編)
条件に該当するページがございません