AI開発プロジェクト/データ分析プロジェクトに必要なスキル
「データの利活用」といえば、「AIの開発」もしくは「データ分析」のいずれかになるのではないでしょうか。
前者はIT系の企業に限られるかもしれませんが、後者はシンクタンクやコンサルティングファームを始めとした殆どの企業で行うべきものです。
しかし、「AI開発PJ」と「データ分析PJ」はどう異なり、それぞれどういった流れで行い、またどんなスキルが必要となるのでしょうか。
そのあたりについて細かく整理してみました。
AI開発PJとデータ分析PJの違い
それぞれのPJの「目的」は何になるのでしょうか。
まず、AI開発の真髄は「予測」することにあります。
例えば、今月までのある製品の売上を元に、来月の売上を予測する。
売れる個数を推定できたら、あわよくば製品の仕入れまで自動で行う。
・・・つまり、作業効率化のために、今まで人間がやっていた作業の一部をAIに担ってもらうことを目的にしています。
数値だけでなく、画像、動画、音声など複雑なデータを扱うこともよくあります。
その一方、データ分析の真髄は「現状把握」することにあります。
例えば、今月までのある製品の売上を元に、売れる月と売れない月の違いを考え、その製品をもっと売るための手立てを考える。
・・・つまり、現状をより正確に把握し、人間が次に取るべきアクションを策定することを目的にしています。
アンケート調査、CS調査、ES調査などもこの類です。
つまりは、データを使ってやりたいことが「予測」や「自動化」なのか、それとも「現状把握」や「方針策定」なのか。
それにより、「AI開発PJ」なのか、「データ分析PJ」なのかが分岐します。
それぞれの作業フロー
AI開発PJとデータ分析PJの作業フローと、必要となるスキルについて一枚絵にしました。
図を見てわかるように、AI開発PJとデータ分析PJのフローは重複しています。
作業ウェイトの違いはありますが、途中までやることは一緒と考えていて差し支えありません。
それでは作業ごとに行う内容について、具体的に見ていきます。
課題理解
何はともあれ、しっかりと課題・目的を理解することが必要です。
要望をしっかりと噛み砕き、やりたいことが「AI開発」なのか「データ分析」なのかを見極め、そして適切なツール選定をしたり、適切なPJメンバをアサインしたりします。
当然ですが、ここは人間の頭でしっかり考えなければいけません。
データ収集
方針が決まったらデータを集めます。
自社のデータであれば、関連しそうなデータを片っ端からかき集めます。
顧客データであれば、データを貰えるだけ貰います。
作業が進むにつれて別のデータが必要となる、もしくは後追いでデータが増える場合も良くあります。
ただ、なるべく無駄な手戻りを減らすため、この段階で色々とヒアリングして、データを集めれるだけ集めた方が良いでしょう。
また、使用するデータは分析ツールに読み込ませてみて、きちんと分析できる状態になっているかどうかくらいはざっと確認しておくべきです。
EDA(探索的データ分析)
さて、いよいよデータと向き合っていきます。
まずは手元のデータをきちんと把握するところからです。
これはEDA(Explanatory Data Analysis)、日本語では「探索的データ分析」と呼ばれるステップです。
手元のデータを整理して、それぞれ
・どんなカラムがあるか
・数値なのか、カテゴリなのか、それ以外なのか
・数値ならば、分布はどうなっているのか
・カテゴリならば、どんなカテゴリがそれぞれ何件ずつあるのか
・欠損値はどれだけあるのか
・・・などなどの観点を、グラフ化したり統計分析したりして解明していきます。
これからの方針を正しく立てていくために、このステップでデータを正しく知る必要があります。
データ分析・示唆出し
ここでいよいよ分析となります。データ分析PJであればこれが最後のステップです。
手元にあるデータを無理にすべて使う必要はありませんし、複数データの結合が必要ならくっつけます。
データクレンジングが必要なら適宜行います。
データ分析PJであっても簡単な機械学習の手法を適用することもあります。
ここで注意が必要なのは、このステップで大事なのは、数字をいじる事でなく「いかに重要な示唆を見つけるか」にあります。
そして、それぞれのPJで「出すべき示唆」は異なってきます。
データ分析PJであれば、「課題解決に繋がる示唆」を出す事が重要です。
分析結果から得られた結果を掘り下げ、具体的な課題解決方法を立案します。
AI開発であれば、「良いAIを作るための示唆」を出す事が重要です。
データの傾向を見ることによって、適切な機械学習手法やパラメータを検討することができます。
つまり、データ分析PJならば「人間が扱いやすい形式」へとデータを整形させ、AI開発PJならば「AIが扱いやすいデータ」へとデータを整形させることになります。
モデル作成
ここからはAI開発PJ特有の作業です。AIの学習モデルを作っていきます。
適用する機械学習の手法と性能の評価方法を決めたら、まず動くものを作ってみて、性能を評価します。
そこからハイパーパラメータの調整や特徴量エンジニアリングをすることで、より良いAIに育て上げていきます。
時間が許せば、複数の手法を試して、どの手法が最も良い性能を出すのか比較評価してみる事もあります。
導入・運用
無事にシステムが完成したら、その導入、そして運用が始まります。
AIシステムの運用では、きちんとAIが動作しているか、その性能を定期的に追っていく必要があります。
また、モノによっては定期的に学習モデルをアップデートしていくことも必要です。
もし、運用してからAIの性能が予定外に落ちていくようなことがあればその原因究明が要ります。
必ずしも導入したAIに問題があるわけではなく、いきなりデータの傾向が変わったという事もあります。
これは「バグ」とは違うので、必ずしも直るかどうかは分かりませんが、AIをより正しく機能させるために最善を尽くす必要があります。
必要となるスキルセット
さて、AI開発PJとデータ分析PJの作業フローを見ていきました。
続いては、それぞれのPJを遂行するにあたり必要なスキルセットについて細かく整理します。
なお、AI開発やデータ分析以外でも大概必要となる一般的なビジネススキルについては省きます。
データ操作
複数のテーブルを結合したり、欠損値を除いたり穴埋めしたり、などデータを自由自在に加工できるスキルです。
単純な操作ならばExcelでもできますが、データが複雑になってくればSQLやPythonのDataFrameなどの操作に精通する必要があります。
統計分析
主に、扱うデータの傾向を判断するために必要な統計学の知識や、グラフ作成スキルです。
統計学のスキルとしては、最低でも相関分析、仮説検定などの高校〜大学初歩のレベルが理解できていることが必要です。
グラフ作成スキルとしては、データを理解するために最も適切なグラフを選ぶことと作れることが必要です。
AIの開発についても、扱うデータを正しく選択することや、より高度な特徴量エンジニアリングのためには統計分析にもある程度精通しておく必要があります。
機械学習
シンプルな線形回帰モデルからディープラーニングまで、様々な機械学習の手法を知り、また実装できることが必要です。
ここには特徴量エンジニアリングの観点の理解も含まれます。
AIを作るだけならば多少のプログラミングスキルがあれば作れてしまうのですが、そこからより良いAIにチューニングしていくには機械学習の理論や統計学の深い理解がモノを言います。
ちなみに、開発不要のデータ分析PJにおいても、教師なし分析(次元削減、クラスタリングなど)、シンプルな教師あり学習(回帰分析、決定木分析など)は重要な示唆を与えてくれることが多く、是非知っておきたい機械学習手法となります。
性能評価
こちらはデータ分析PJでは不要となりますが、AIの性能を正しく測る技術です。
「機械学習」の項目とまとめようか迷いましたが分離しました。
なぜなら、正しい性能評価をできるスキルとは、機械学習のスキルよりも、課題理解のスキルに近いと位置付けたからです。
素晴らしい機械学習の技術を用いても、性能指標を間違えたらそのAIは無意味です。
「一体、このAIには何を求められているのか」という問題を正しく理解して、それを数式に落とし込まなければなりません。
ここは必要不可欠な要件定義となりますので、マネージャーもしっかりと理解して、顧客とすり合わせておく必要があります。
AIに明るくない相手であっても、ここだけはしっかりと理解して貰えるように努めましょう。
おわりに
以上、AI開発PJやデータ分析PJのフローと、必要となるスキルでした。
必要なスキルセットについては似通っていますが、その「目的」は大きく異なる事がお分かり頂けたでしょうか。
「データの利活用」と一言で言っても、その目的が予測なのか現状把握なのか、そこを間違えないようにしましょう。