Data分析、機械学習、AI導入、これらの活動に取り組まれている企業、最近増えていますよね。
投稿主の私は現在ITコンサルタントをしていますが、Data分析、機械学習、AIといったものをビジネスに組み込み、何か新しいことをやっていきたい、と考えているクライアントもたくさんいらっしゃいますし、コンサルティングファームとしてもこうした領域のビジネスを取っていこうというスタンスを持っているところは非常に多くなっています。
しかしながら、言葉として「Data分析、機械学習、AI」というものが独り歩きしていて、実際に何ができるのかを知らないまま、また何をしたいのかもわからないままにとりあえずやってみたい、と考えているクライアント、およびファームの人々は多く散見されます。
従いまして、本投稿では、Data分析、機械学習、AIについて、なんだか面白そうだからやってみたい、と思われている方向けに、どんなことが出来るものなのか、そして実際にプロジェクトを進めていく上ではどういった進め方をするのか、解説していきたいと思います。
Agenda
想定読者
- データ分析、機械学習、AI導入を行いたいと考えている、あるいは行うことになった事業会社の方
- データ分析、機械学習、AI導入プロジェクトに関わりたいと考えている、あるいは関わることになったコンサルタント、エンジニアの方
- データ分析、機械学習、AIってなんだか面白そう、でも何ができるのかよく知らない、という方
メリット
- データ分析、機械学習、AI導入がビジネスにおいて出来ること、出来ないことがわかる
- データ分析、機械学習、AI導入に使用される手法がわかる
- データ分析、機械学習、AI導入プロジェクトの進め方がわかる
参考になる書籍・おすすめの本
はじめに、私がデータ分析、機械学習、AI導入プロジェクトに関わることになった際に実際に読んだ本を載せています。簡単にではありますが、内容についても触れておきます。本投稿の中でカバーしきれていない内容などで気になるものがありましたら、こちらの書籍も確認されるとよいと思います。
Pythonで儲かるAIをつくる
こちらの本では、AI、機械学習に使用される手法が複数紹介されており、それらの手法に関係する例を用いて実際にPythonでコードを書き進める形式でAI導入、機械学習の導入プロジェクトの進め方を学ぶことが出来ます。
コードのサンプルとしてはデータの前処理(欠損値の対処、正規化、離散化など)から始まり、複数のアルゴリズムを用いたモデルの評価、評価指標の使い方などが含まれています。
データのチューニングは概要の説明に閉じていますが、Pythonを使って機械学習のモデルを作ってみたい方、Pythonに限らずアルゴリズムにどんなものがあるのかを把握したい方にはオススメです。
コードのサンプルとして取り扱われているビジネスケースは以下の通りですが、なかなか実務寄りな内容です。
- 営業成約予測(分類)
- 天候による売り上げ予測(回帰)
- 季節などの周期性で売り上げ予測(時系列分析)
- お薦め商品の提案(アソシエーション分析)
- 顧客層に応じた販売戦略(クラスタリング、次元圧縮)
失敗しないデータ分析・AIのビジネス導入
こちらの本では、データ分析・AI導入プロジェクトの進め方が取り扱われています。Pythonでコードを実際に書いてみる、というものではないですが、プロジェクトのフェーズを複数に分け、その中で何をしていく必要があるのか、といった作業の内容が解説されています。
コンサルティングファーム、あるいはSIerの方ですとプロジェクトの進め方については提案時やプロジェクトマネジメントの観点でしっかりと理解しておく必要がありますので、そういった方にはオススメとなります。
Python実践データ分析100本ノック
こちらの本ではPythonで実際にコードを書いてみて、架空のシステムからダンプしたCSVファイル等を加工し、データ分析が出来るようにする、そして分析も実施することが出来るようになるまでが説明されています。
どのようなデータで、何をしようとしているのか、といった課題に関するイメージが共有された後、その課題に対処していくためにPythonを用いてデータ加工、データ分析をしていくという流れが繰り返される、という内容ですが、扱うデータはある程度シンプルなものにされてはいるものの、此方の本の内容を一通りこなせば実務の面でも汚いデータをどうすればきれいなデータに加工できるか、イメージがわくようになると思います。
Python実践機械学習システム100本ノック
こちらの本は「Python実践データ分析100本ノック」の続きのようなイメージで取り組んでいただける内容になっています。ただし、実践機械学習システム100本ノックというタイトルではあるものの、機械学習が取り扱われるのは後半に入ってからで、前半はデータの加工に紙面を割いています。
Pands等の基本をすでにご存じの方は、「Python実践データ分析100本ノック」はスキップして、此方の本から学習を始められてもよいかと思います。
AI・データ分析プロジェクトのすべて
こちらの本はAI導入、データ分析を行うプロジェクトの進め方について解説している書籍となります。AI導入とデータ分析プロジェクトにありがちな課題、難しさから、どのようにプロジェクトを進めていくとよいのか、といった内容がまとめられています。
AI、データ分析で出来ることよりもむしろ、どのように関係者を巻き込んでいくと躓くことがないのか、という観点が非常に参考になる書籍ですので、プロジェクト管理をしていく立場にある方向けの内容となっています。
そもそもデータ分析・機械学習・AIとは
データ分析、機械学習、AIの関係
それではここから、データ分析、機械学習、AI導入の内容に移っていきます。
まずはそもそものところから確認していきましょう。まず、データ分析、機械学習、AIとは、いったい何なのか?
データ分析
データ分析は、文字通りですがデータを分析することですね。ただ、分析にはもちろん目的が存在します。
したがって、ここでいうデータ分析とは、「データの背景、構造、原因をデータから読み取り、明らかにしていくこと」と言えます。そして、このデータ分析を行う際の手段として、機械学習が存在しています。
データ分析の結果、得られた内容を基にして意思決定をすることをデータ活用と言います。人によっては、データ分析は意思決定のところまで含めるという理解をされている方もいらっしゃると思いますが、ここではこのような定義とさせて頂きます。
機械学習
さきほど、機械学習はデータ分析に使用される手法であると説明しました。「機械学習を用いて、データの背景、構造、原因を読み取り、明らかにしていく」という文脈となります。
データ分析を行う際には、まず処理するデータ(input)があり、そのデータを処理して、何らかの出力(output)を行います。ここで、データの処理をするもの・仕組みをモデルと呼びますが、このモデルを処理するデータから作り上げていくというプロセスを機械自身に行わせることを機械学習と言います。
機械学習を有効活用すると、機械学習に適切なデータがあれば自動でモデルが構築され、そして得られたモデルを用いて自動でデータの分析結果が出力されるため、あとは結果をどう利用するかを人間が考えるだけでよい(場合によってはここも機械に代替させる)ため、これまでのスピード感ではできなかった仕事、業務が自動化・効率化されることとなります。
AI
AIは、Artifical Intelligence(人口知能)の略で、データに基づいて意思決定を行うところまでが可能となった機械のことを指します。データ分析のところで示した図を用いると、データ活用として記載した「意思決定」までが機械学習などの手段によって支えられて機械によって自動で実行されることが可能となっている姿となります。
例を挙げれば、対戦相手の打ち手に合わせてチェスや将棋を指す人工知能、人の音声を認識して返答したり情報の検索を行う人工知能などがあります。
今のところはまだまだ限定的なタスクに限るものの、機械が意思決定できるようになってきている領域はどんどん広がってきていますので、今後が楽しみですよね。
いずれにも共通することは「データの活用」
さて、ここまででざっくりとデータ分析、機械学習、AIとはそもそも何なのか、というところを見てきましたが、いずれにも共通するのは、「データの活用」であることがお分かりいただけたでしょう。
データを加工し、利用する、という点についていえば、データ分析、機械学習、AIのどれもが同じなのです。データ分析と言えば機械学習やAIとセットで語られますし、機械学習と言えばそれはデータ分析とAIのトピックでもある、と考えてよいでしょう。ここを明確に線引きして語る人は多くいません。
したがって、「データ活用がしたい」、「データ分析がしたい」、「機械学習を使いたい」、「AIを導入したい」という言葉が飛び出したとき、具体的にはどんなことを結果として求められているのか、実現したいのか、というGoalから考えていかないと、プロジェクトにかかわる全員の意識や方向性がバラバラになるリスクがあります。
データ分析・機械学習・AIで出来ること
ビジネス上の価値:状況把握、自動化/反復、予測・シミュレーション、要因把握
それでは、実際にデータ分析・機械学習・AIで出来ることとは何なのか?という部分を見ていきたいと思います。
これまでの章で、データ分析・機械学習・AIのいずれも密接に関係しているトピックなので、結局は何がしたいのか、というGoalから明らかにしてくことで全体像が明らかになる、というお話をしました。そのため、ここではそもそもデータ分析・機械学習・AIでは何が出来るのか、を解説していきます。
なんでも出来そうだと思われているデータ分析・機械学習・AIですが、得意な領域とそうでない領域がありますので、今回は特にビジネス上で用いられるうえでのメリット、データ分析・機械学習・AIが利用できる点について説明していきます。
状況把握
状況把握とは、画像や動画、あるいは数値を読み取ることでエラーの検知、異常行動の検出などを行うというものです。
たとえば、とある工場で釘を製造しているとします。釘には決まった規格で溝がないと釘としての役割を果たしてくれませんし、また長さや太さも規格を満たしている必要があります。こうした規格を無視した釘が作られてしまい、それを販売、納品してしまうと、あとで顧客からクレームを頂く可能性につながり、そこからさらに返品対応、代替品の出荷、などのコストがかさむこととなり、最悪の場合は取引停止につながる恐れもあります。
こうしたリスクを極限まで抑えるために、製造した釘を確認し、規格にそぐわないものが製造されてしまっていた場合はそれを特定し、顧客に対して出荷することを防ぐ、ということが求められます。こうしたエラーの検知を機械にやらせてしまう、というコンセプトが状況把握の例となります。
他には、駅のホームなどに監視カメラを設置しておいて、足取りがおぼつかない人がいたらホームから転落の恐れがあるので事前に異常行動として検出しておき、駅の係員さんに注意を払うようにアラートを出す、といったことも可能です。
データ分析・機械学習・AIを活用すると、人間が目で見て確認するよりもかなり精度の高い判定が出来ることがわかっています。
自動化/反復
自動化、反復とは、人間では常時出来ないことを、機械であれば常時出来るよね、ということで繰り返し作業を行わせる、というものです。
たとえば、飛行機のチケット、安くなったタイミングがあったら購入したい、と思っていても、人間が24時間365日、画面の前に張り付いてチケットの価格の上下を見続けるということは出来ません。しかし、こうした作業を機械に任せることが出来れば、常にチケットの価格を確認し続けるということが出来ます。
ある一定以下の金額になったら人間の確認をはさまずに機械に自動で購入させるということも出来ますし、さらには、こうした決まり事を事前に定義しておいて、一度実行したら終わりではなく、例えば旅行予定の10人分のチケットが集まるまで購入を繰り返す、といった反復活動も可能となります。
このように、何かしらの作業を自動で、繰り返し行うということもデータ分析・機械学習・AIが得意とする領域です。
予測/シミュレーション
データ分析というと、真っ先に思いつかれるのはこちらの予測/シミュレーションかもしれませんね。データ分析・機械学習・AIの活用によって、売り上げや株価、気候変動など、各種指標が今後どうなっていくのか、というものを予測、シミュレートできます。
やり方としてはこれまでに起きた過去の事象を情報源として、現在起きている事象と関連する環境情報を分析し、次に何が起こるのか、その可能性はどの程度なのか、というものを推定することが出来ます。
例としては、アイスクリームの売上が今後どのように変化していくのか、人口がどのように増減していくのか、などを予測/シミュレートします。
要因把握
要因把握は、何かしらの結果から、その理由や原因を推定するというものです。
例えば、とある食品製造企業の売上が急に落ちたとしたら、その要因は何なのか、ということを機械に自動で判定させるというものです。様々な情報を機械にきちんと与えてあげることが前提になりますが、その企業の売上急落の原因はとある地域の気温の変化が70%の確率で寄与しており、また競合企業の売上の急増によって80%説明できる、といった形式で要因の把握を行うことが出来ます。
ちょっと難しいのは、データ分析・機械学習・AIの性質上、ここで見つけられた関係性が、厳密に因果関係と言えるかどうか、という最後の判定は人間にゆだねられるという点です。データを扱っている性質上、事象Aと事象Bの間に関係性があるとデータが示していても、実態はその中間にある事象Cが事象Aと事象Bに相互の関係しているためである(事象A⇔事象C⇔事象C)ということはよくあるためです。
しかしながら、定量的に何%の確率で寄与しているのか、という点を理解することが出来る要員把握はビジネス上の意思決定にとても強く貢献できます。
状況把握、自動化/反復、予測・シミュレーション、要因把握の機能を組み合わせて価値を提供する
ここまでで、状況把握、自動化/反復、予測・シミュレーション、要因把握といった機能を簡単に説明してきましたが、実際にデータ分析・機械学習・AIが提供するビジネス上の価値は、これらを複数組み合わせて提供されます。
データ分析・機械学習・AIを活用した防犯カメラによる異常行動検知を例にとってみましょう。この仕組みは、防犯カメラに写っている人の行動を機械が確認し、何かしらの異常行動(放火、窃盗、強盗、など)の予兆が確認された場合には事前に対処ができるように警備員へ通知をする、というものです。
監視カメラに映る情報を毎秒、繰り返し分析にかけるという点では自動化/反復の側面がありますし、カメラに映った映像を都度都度分析して確認をする、という点では状況把握の要素もあります。
そうして確認された行動内容から、数秒あるいは数分先に異常行動をとる可能性がどれくらいあるか、というものを事前に検知する部分はまさに予測/シミュレーションの機能を使っています。
さらに、こうした予測/シミュレーションの精度を高めるには、過去データに対して要因把握を行うことで、過去に発生した異常行動と関連性の高い行動などを事前に整理しておくことが必要となるため、この例では上記4つの側面全てが組み合わさっていることがわかります。
データ分析・機械学習・AIを用いて何かしらのビジネス的な価値を生み出そう、都考える場合、こうした複数の側面を組み合わせるケースが大半になりますので、特定の領域だけでなく、バランスよく理解を進めていくことが重要となります。
アルゴリズム - データ分析・機械学習・AIに用いられる手法
アルゴリズムとは
それではここから、データ分析・機械学習・AIに用いられる手法にどんなものがあるのか、解説していきたいと思います。
データ分析・機械学習・AIいずれの場合においても、Inputとなる情報を基にして、Outputとなる情報を出力する、という流れ自体は変わりません。そして、このInputからOutputを出すという仕組みをモデルと言いました。
このモデルには、統計的な手法、すなわち計算の手順や複雑な数式が活用されています。こうした、データ分析・機械学習・AIなどの機能(モデル)を構築する際に使用される計算手順や数式のことを、アルゴリズムと表現します。
以降のセクションでは、アルゴリズムの例を確認していきたいと思います。
大まかにいうと教師あり/なし学習、強化学習に分かれる
以下に、アルゴリズムのカテゴリーとして主なものをまとめています。大まかにいうと、教師あり学習、教師なし学習、強化学習の3つに分かれることとなります。
教師あり学習と言うのはモデルがInputを処理した結果として出力したOutputに対して、そのOutputが正解だったのかどうかを判定するための正解データがあり、この正解データを用いることでInputに対して正しくOutputを出力することが出来るよう、モデルに学習をさせるというものです。
教師なし学習は、こうした正解データがないので、正解なのかどうかはわかりません。何かしらの結果をモデルが出力するので、それをどう解釈するのかは人間が決める、という場合に活用されます。学習の手法としては、今あるデータをそのままモデルに渡して、学習してもらう、という流れとなります。
最後に、教師あり学習、教師なし学習とも異なる強化学習というものがあるのですが、これは手法としては報酬という概念を用いることで、それを最大化させる方法を機械に探させるという方法です。
以下に、各アルゴリズムの例を記載しておりますので、ここからはこれらの手法の解説を行っていきます。
教師あり学習:分類(とその使用例)
分類とは、言葉のイメージからもわかる通り、与えられたデータを分析して、そのデータがどういうパターンに該当するのか、という分類分けをするというものです。
使用例となるのは、営業さんから得られた商談情報を基に、その商談が成約する or しないという2つの分類に分ける、といったもの、あるいはとある商品に関するアンケート結果から年内に再購入の確率があるか、ないかの2つの分類に分ける、といったものがあります。
ちなみに、A or Bの2つに分類するときは2値分類と言い、 A or B or C...と3つ以上の分類をするときは多値分類と言います。
学習の流れとしては、様々な情報と、分類の結果を学習用データとして、分類のアルゴリズムを用いたモデルに与えることでモデルを構築します。構築したモデルは次に正解データを隠した状態のテスト用データを処理し、ここまでの学習結果を基にして出力を行います。そして、テスト用データの正解と結果を比較し、調整を図っていく、という流れとなります。
分類に使用されるアルゴリズムの主なものを参考までに以下にリストアップしています。ここでは詳細の解説は省略させて頂きますが、こうしたアルゴリズムをある程度把握しておくことはデータ分析・機械学習・AI導入プロジェクトを円滑に進めるうえで重要となります。
- ロジスティック回帰
- サポートベクターマシン
- ニューラルネットワーク
- 決定木
- ランダムフォレスト
- XG Boost
いずれのアルゴリズムでも、分類の選択肢のいずれかである確率をそれぞれ計算し、最も高いものに分類をする、という考えは共通となります。
教師あり学習:回帰(とその使用例)
回帰では、学習の結果として、与えられたデータから数値を算出します。分類では「AかBか」という分類をしたのと比較すると、回帰は「Xである確率が78%である」、もしくは、「来月の売上は1000万円である」、というように数値で結果を返すことが求められる場合に使用されます。
使用例としては、とあるアミューズメントパークで得られた過去の天候データと入場者数実績を基にして、今後一週間の天候でどの程度の入場者数が見込まれるのかを計算してみる、などの予測、シミュレーションですね。
ちなみに、以下に学習の流れのイメージを書いておりますが、分類とほとんど同じになります。
分類でも、内部的には「AとBで比較をするとAである確率が95%なので、Aと分類する」といった処理が行われているので、計算の過程・方法自体は分類と回帰で似ているものもあるのですが、評価をする際には視点が異なります。
分類では「AかBか」という正解データとモデルが出力した結果があっているかどうかを評価し、調整をしていくのですが、回帰ではモデルが出力した数値と正解データがどの程度近いのか、という視点で評価を行います。
教師あり学習:時系列分析(とその使用例)
時系列分析は、自分自身の過去データを使って、将来を予測するというものです。
回帰と同じく、数値を算出する場合に用いられるのですが、違いは回帰の場合は複数の要因、特性情報を使って予測を行うのに対して、時系列分析では自分自身の過去データ「のみ」が情報源となります。例を挙げますと、あるミューズメントパークの売り上げの予測をする際に回帰を用いるのであれば、気候データ、為替などの要素を用いて数値を算出しますが、時系列分析では、過去にどれだけの売上があったか、という情報を使って予測をすることになります。
時系列分析の使用例としては、主に季節性や周期性があると想定されるものの予測が当てはまり、チョコレートの売上、お持ちの売上、アイスクリームの売上の推移を予測するときに使用されます。ただし、実際には回帰と組み合わせて使用されることが多いです。
学習の流れとしては、まずとあるデータを学習用のパートと、その予測の正解データに分けて学習を行いモデルを構築します。そうして、また別のテストデータを読み込ませ、予測を行った結果を正解データと比較することで評価、調整を行っていきます。
回帰と組み合わせて使うのが一般的ではあるのですが、情報源として設定するのが過去データだけなので、様々なデータを取得する必要性がなく、非常に簡単に予測を行うことが出来るという意味でお手軽に使用できるアルゴリズムとなります。
教師なし学習:アソシエーション分析(とその使用例)
ここからは教師なし学習になっていきます。アソシエーション分析は、一見しただけでは関連性や共通項が見えないものを機械が自動で見つけ出し、関係性を示してくれる、というものです。
使用例として挙がるのは、スーパーマーケットなどの購買履歴を分析し、特定の商品の購買活動と関連性の高いその他の商品を特定する、といったものです。結構有名な話ですが、ビールを購入するお客様の多くが、おむつなどの乳幼児向けの商品を購入していることが分かったとします。この結果から、因果関係を読み解き、子供が生まれたばかりの男性がおむつを購入するついでに育児のストレス発散を目的にビールを購入していると仮定し、おむつ売り場の近くにビールを配置したところビールの売上が向上した、といったお話もありますが、ここで使用されているアルゴリズムはアソシエーション分析となります。
気を付けるべきは、ここで機械が判定してくれた関係性をどう解釈するのかは、人間にゆだねられているという点です。したがって、正解データが存在しないため、教師なし学習となります。
教師なし学習:クラスタリング(とその使用例)
クラスタリングは、複数の情報を関連性や共通項によってグルーピングしてくれる、というものです。
ちょっとアソシエーション分析と似ているように見えますが、アソシエーション分析は大量にあるデータを確認し、その中で関連性のある傾向を見つけること目的としている一方で、クラスタリングは大量にあるデータを比較的少量のグループに分けることを目的としている点が異なります。
使用例としては、顧客情報のグルーピングです。通販サービスを使用している顧客情報をまとめた、膨大な情報量を持つデータベースがあるとします。ここには各顧客の過去の購買履歴、住所、性別、勤務先情報などがあるとします。こうした情報を機械に読み取らせて、A, B, Cという3つのグループに自動で分ける、といったことが可能となります。
ここでも注意したいのが、こうして分けられたA, B, Cの意味はやはり人間が解釈し、有効活用する方法も考える必要があります。よって、正解データなしの教師なし学習となります。
教師なし学習:次元圧縮(とその使用例)
次元圧縮とは、複数の次元を持つデータを、無理やり次元数を減らしてグラフで表現しやすくすることを言います。
次元という表現が難しいかもしれませんので、ここに複数の行と列からなる表があると考えましょう。この表には、とあるスーパーマーケットの購買履歴がまとめられており、列情報として金額、地域、製品、その他にもいろいろな特性情報がまとめられているとします。
この表ですが、分析をしようとすると、地域別の売上金額、製品別の売上金額、地域別・製品別の売上金額、というように、複数の軸をもって分析することが出来ます。ここでいうところの、列情報が分析をする際の視点(分析軸)になり、これを次元と言います。この表は、複数の列譲歩を持つので、次元が多く、多次元の情報となります。
表形式ですといまいちわかりにくいので、グラフにして確認してみたいのですが、このように複数の次元を持つ情報は簡単にはグラフにできません。二次元、三次元までは何とかなるかもしれませんが、それ以上となると難しくなることはお判りいただけるかと思います。
次元圧縮では、こうした多次元の情報を無理やり二次元の情報へ圧縮し、グラフにもできるようにします。
圧縮された情報を基にグラフなどを作成し、意思決定の際の参考情報とすることが出来ます。
強化学習(とその使用例)
最後に、教師あり学習とも、教師なし学習とも違う強化学習の解説です。
これはゲームをイメージしてもらえるとわかりやすいと思います。例えばある地点Aから別の地点Bへの移動を最も早く行う、というゲームをするとします。こうしたときに、モデルに実現してほしいのは最も早く移動を行うことが出来る経路や移動の方法を見つけてもらうことですが、このときにモデルに対して一番短い時間で移動できる経路に対して高い得点(報酬)を与えるということにします。
この条件下で、最も得点(報酬)が高くなるような経路、移動方法を繰り返し施行することで見つけてもらう、その過程で学習をしてもらう、という手法が強化学習となります。
強化学習は、先ほども述べた通りゲームに使用されることが多く、チェス、将棋などの人工知能に用いられています。その他にも、ロボットの歩行を支援する機能として、どういった道を選ぶと安全かつ早く目的地にたどり着けるのかを学習させる際などにも使用されています。
データ分析・機械学習・AI導入プロジェクトの流れ
それではここから、データ分析・機械学習・AIの導入を行う立場となった場合、どのようにプロジェクトが流れていくのか、という点を解説していきます。これからこうしたプロジェクトにかかわるという方も、既にかかわっているという方のどちらの方にとっても、プロジェクトの流れを把握していることは非常に有益となります。
PDCAサイクルを回しつつ、前のステップに戻ることもある
データ分析・機械学習・AI導入のプロジェクトの流れは、大まかに以下のようになります。特徴として挙げられるものは、従来のERP導入などのWater Fall型とは異なり、PDCAサイクルを回すことで、必要に応じて前のステップに戻るといったことも柔軟に行うという点です。
前のステップに戻ったりする理由は、様々ありますが、例を以下に挙げておきます。
- PoCを実施してみた結果を評価したところ、
- 設定したゴールそのものを見直したほうが良いと考えられたとき
- より良い摘要領域が見つかったとき
- モデルを開発し、運用してみたところ、
- より良い摘要領域が見つかったとき
- より良いアルゴリズムが見つかったとき
こうした形で前のステップに戻ることがよくあるので、とにかく小さな単位で何かしらの動作をするものを作り、それを動かして評価してみる、というアプローチが主流です。こうした、あれもこれもと色々な機能を付けたシステムを作るのではなく、必要最小限の機能だけを持ったシステムを作ってみて、まずは検証してみるという手法をMVP(Minimum Viable Product)アプローチと言います。
それでは、各ステップでどういったタスクがあるのか、より詳細に見ていきましょう。
プロジェクト始動
まずはプロジェクトの立ち上げです。ここでは、主に以下の作業が待っています。
- 摘要領域の選択:ビジネス上の目的を決める
- ゴールの決定:データ活用の目標を決める
- 初期アセスメント:データを収集し、概要を把握する
- チームビルディング:チームメンバーを集める、ステークホルダーを巻き込む
- Scope、WBSの定義:作業範囲、作業計画を明確化する
摘要領域の選択
ここでは、データ分析・機械学習・AIを業務上のどの領域に活用していくのか、というポイントを整理します。
たとえば、請求書をチェックして内容を会計伝票に転記していくという作業にすごく時間がかかっているので、この部分を摘要領域として、請求書の中身のチェックと会計伝票への入力を自動化する、ということを目的にする、
デリバリーピザの売上が落ちているので、その原因を分析し、同様の事象が発生している営業所については売上減少の可能性についてアラートを上げる仕組みを作るということを目的とする、といった、目的を整理する活動となります。
ゴールの決定
どういった業務に使うのか、その目的は、ということを整理したら、次に具体的な数値に落とし込む形で目標を決めます。最終的にデータ分析・機械学習・AI導入の効果を測定する際にも、ここで設定しておいたゴールがどの程度達成されたのか、という点で評価薄るため、非常に重要なステップとなります。
先ほどの例を使えば、従来かかっていた請求書の確認と会計伝票への入力に要する時間を50%削減する、あるいは、デリバリーピザの売上減少割合を5%改善する、などが目標となります。
一点、重要なのは、データ分析・機械学習・AIの精度は100%ではないということです。何かしらの作業を自動で行わせる、何かしらの指標を予測させるとすれば、その中には数%の誤差が含まれてしまいます。
したがって、こうした点は織り込み済みでゴールを決定することが必要です。つまり、100%の精度が必ず求められる領域であれば、この前の摘要領域の設定の時点でデータ分析・機械学習・AIが対処する領域ではない、という判断をしておくことが重要です。
初期アセスメント
データ分析・機械学習・AIの目的と、具体的な目標が決まったら、実際に活用できるデータの中身を見てみます。
過去データがある場合はそれを見ますが、ないのであれば、代わりにどのようにデータ収集を行い、どのような形状のデータが集まるのか、と言う点でデータの確認を進めていきます。
この段階では、まだまだプロジェクトの指導段階になりますので、見ていくべきポイントはデータの中身というよりは、データの概要です。具体的には、自社内で完結しているデータなのか、それとも外部のデータも必要なのか、または自社内のデータであっても部門を複数またいだ情報になるのか、あるいはそうした形で複数の情報ソースを持つ場合はキーは同じなのか、粒度は同じなのか、こうしたポイントを確認していきます。
概要をつかむことで、今後のデータ収集の際にどうやってデータを取得してくればいいのか、あるいは誰にお願いするべきなのか、といった点もつかむことが出来ます。
チームビルディング・ステークホルダーの巻き込み
ここまでで、データ分析・機械学習・AIの目的、目標、データのとり方やそれに付随してどういったメンバーが関係者になるのか、といった点が明らかになってきました。ここまでで集めた情報を基に、プロジェクトを推進していくためのチームメンバー、そしてステークホルダーを明らかにしていきます。
データ分析・機械学習・AIも、プロジェクトを推進するうえで一番重要なのは、「人」です。必要な権力を持っている方から必要なサポートを得られることが非常に重要で、この点で誰がどういった役割を持ってプロジェクトに関与するのか、という点を明らかにしておくことは円滑なプロジェクト推進のための必須事項となります。
データのソースが複数の部署をまたぐのであれば、データの開示に関して取り扱うために関連部署のメンバーをチームの中に巻き込むべきですし、データ分析・機械学習・AIのそもそもの導入の意義を強く感じている方で、相応の権威を持つ持つ方がいればそうした方もステークホルダーとして巻き込んでおくことが望ましいです。
もちろん、データの中身について、そのビジネス上の意味を語ることのできる現場の方も必要ですし、データの加工をする技術力のある方なども必要ですが、そうしたことはイメージしやすいかと思いますので、ここではそうした現場で作業をする方々以外に、プロジェクト推進の観点で意思決定に強く作用することのできる方を巻き込んでおくことが必要、という点をご認識頂ければと思います。
Scope/WBS定義
最後に、ここまでで整理してきた内容をきちんと資料化しておきます。作業の範囲、目的、目標、関連メンバー、そして作業計画を整理します。
作成したScope(作業範囲)、WBS(作業計画)は、プロジェクト始動時にキックオフの位置づけで関係者を集めて打ち合わせを行い、認識合わせを行います。以降は、基本的にはここで作成したWBSに即して作業を進めていきますが、必要に応じて修正をかけていくこととなります。
PoC実施
データの入手・確認・加工
さて、それではここからより詳細にデータを確認していき、プロジェクト始動時に設定した目的達成の手法を明確にしていきます。PoCとは、Proof of Conceptの略で、システムで実現しようとしている内容が実際にできるかどうか、簡単に検証してみるというものです。
まずは短期間で構わないのでデータを実際に入手し、確認することから始めます。複数の情報ソースがある場合はそれらを紐づける、外れ値、異常値を除外する、などの加工も必要になります。
一通りの加工が終わったら、グラフなどの可視化してみたりすることで時系列の変化やトレンドを確認し、データの傾向をつかみます。データの傾向をつかむ意図は、この後のアルゴリズム採択の際にどういったアルゴリズムが適しているのかを考える際に役立ちます。
分析設計:データの前処理、加工方法、評価方法を詳細化する
データの傾向を確認したら、ここまでで簡単に実施してみた前処理、加工方法などを詳細化していきます。データに対する前処理や加工をしていくと、その過程で「あ、やっぱりこうした加工のほうがもっと良かったな」という気づきが得られるので、そうした気づきをまとめて、今回はこの手法で前処理、加工をする、という手順を詳細化、最終化します。
データソースの中でそもそも使用するデータはどこからどこまでにするか、複数のソースがある場合はどのように紐杖kるの科、抽出の際の条件はどういったものにするか、欠損値や異常値はどのように扱うか、こうした前処理・加工方法を整理します。
次に、加工の終ったデータをモデルに入力することで出力される結果を評価していくことになるわけですが、個々の評価をどのように行うか、という手順も詳細化します。教師あり学習のケースでは、テスト用データのの正解データとどの程度近いか、という点で評価できますが、教師なし学習のケースでは、何をもって評価するのか、という点の整理には注意が必要です。
分析の実施:簡易的なモデルで学習、評価を行う
では、データについては前処理・加工の手順が詳細化されましたので、準備が整いました。それではここで、どんなモデルがよいのか、という点を検証していきます。
まずはアルゴリズムを選択します。目的に応じて使用できるアルゴリズムは複数ありますが、どのアルゴリズムも得意分野があるため、今回の目的に最適なアルゴリズムはどれなのか、という点を検証していきます。検証の方法は、候補をすべて試す、というものです。
データは加工されているので、それを複数の候補となるアルゴリズムに実際に渡し、出力を確認します。このとき、あらかじめ定義しておいた評価方法に即して出力結果を評価し、どのアルゴリズムが最も良いかを検証します。
ただし、ここで最も良い結果が出たアルゴリズムをそのまま採択するわけではありません。モデルはパラメータを複数持ち、それらを調整することで出力結果を変化させることが出来ます。したがって、パラメータの調整も加味して、最も良い精度を出してくれるであろうアルゴリズムを採択し、モデルに組み込むこととします。
結果の考察・再検討
モデルの構築が終わったら、あらためてデータを入力し、出力を確認、評価します。ここで、結果の考察を行うことでこのモデルをビジネス適用に進めるのか否か、前のステップに戻すべきかを判断します。
当初設定していた目標値に達しないのであれば、その原因を突き止めることが必要ですが、データの加工やモデルの組み方の問題なのであれば再度データの前処理、加工、アルゴリズム採択、モデル構築をやり直します。しかし、もしデータの性質に起因する理由で目標値が達成できそうにないということが分かった場合は、そもそもの目的の見直しから修正を図る、といった流れとなります。
たとえば、売り上げの予測結果が実際の結果とあまりに異なるという結果が得られ、考察した結果、予測した製品については昨年度大規模なプロモーションを行っていた結果、特需が発生していたという点が考慮されていないことが判明したので、プロモーションの影響もモデルに組み込むように修正をかけるようにする、
または、請求書の自動読み取りシステムが請求書の内容を正しく読み取ることが出来ていないという結果が得られたが、原因は請求書のフォーマットが取引先ごとに複数存在しておりシステムで対応することが出来ていないことが原因だと分かったので、取引量の多い取引先の請求書だけに絞ってシステムが対応するようにする、とプロジェクトの範囲を修正する、などの例が挙げられます。
いずれの場合においても、一度の施行でそのまま後続のステップに進めるようなケースは相当にレアなので、何回かは前のステップに戻るということを前提としておくことがプロジェクト推進、管理の観点では重要となります。
ビジネス適用
モデル開発・評価
さて、PoCが終わりましたら、実際にモデㇽをビジネスでも使えるようにするためにさらに開発を行っていきます。PoCでは、あくまでモデルに使用したコードやデータの加工に使用したコードは実験の多面であるので、実際にビジネスの現場で使用されている環境などを想定したつくりにはなっていません。
PoCでは、デスクトップ上にすべてのデータを置いておいて、それを参照するというやり方が出来たかもしれませんが、ビジネスの現場ではデータはきちんとしたデータベース上にあると思いますので、そこからどのように抽出するのか、という点からコードを書き直していくことになります。
開発が終わりましたら、実際にビジネスの現場で発生し続けるデータをモデルに入力し、結果を出力し、現場のユーザーの方々に確認をしてもらい、評価をしていきます。当初設定した目的と目標を意識したうえで、どの程度の達成率なのか、という点を評価します。
もちろん、ここでも当初の目的、目標に会わないという結果が得られた場合はその結果を考察し、原因は何かを突き止め、適切なアクションを取ります。場合によっては前のステップに戻ることもあります。
保守/運用
無事にモデルがビジネスに適用され、使用され始めたとしましょう。これで終わりではありません。
なぜなら、データ分析・機械学習・AIの導入によって、データの傾向が変わる可能性があるからです。データ分析・機械学習・AIが何かしらの出力をするにはデータが必要だということは皆さんお分かりかと思いますが、そのデータに基づいてモデルは開発されています。
データ分析・機械学習・AIを導入し、そこから得られた示唆によって何かしらの意思決定を行ったりすることで、データの傾向が変化する可能性があります。よって、こうした傾向の変化を適切に受け入れ、より精度の高い出力をすることのできるモデルになるように継続的に見直しをかけていくことが必要となるのです。
自動化や反復を行う目的のシステムであれば、データの傾向は変わらないと思いますが、使いやすさはどうか、追加の要望はあるか、などを業務ユーザーの方にヒアリングし、さらに使い勝手の良いモデルを構築する、という継続的な改善活動も行います。
以上が、データ分析・機械学習・AI導入プロジェクトの流れでした。
おわりに
いかがでしたでしょうか。データ分析・機械学習・AI導入が出来ること、実際にプロジェクトを進める際の流れを概要レベルではありますが記述させて頂きました。こちらの内容がご参考になれば幸いです。
面白い書籍もどんどん出てきているので、継続して私自身勉強していきたいと思っていますが、今後はより具体的な話を取り扱えるようになっていきたいと思っています。