データ分析・機械学習システムの検証・開発依頼のための準備ポイントをまとめてみた
データアナリティクス事業本部の鈴木です。
私は業務でデータ分析や機械学習システムの開発のご支援をさせて頂いておりますが、その中で、こういう点に気を付けておくと、依頼側・分析者・開発者それぞれで準備がしやすいだろうなと思うポイントをまとめてみました。
はじめに
この記事で準備ポイントを押さえることで、ご依頼頂いた際にプロジェクトをスムーズに立ち上げ、より良い結果をご一緒に出せるようにしたい思いがあります。
今回は以下の4つの観点をまとめてみました。
- 目標設定のポイント:プロジェクトを進めていく上での観点です。
- データ作成のポイント:特に検証を始める際に準備しておくデータについての観点です。
- データの種類について:データ作成の前提に関する観点です。
- 検証・運用場所について:検証や運用開始後の環境に関する観点です。
以下、各観点について説明していきます。
目標設定のポイント
1. 解決したい課題とゴールを明確にしておく
データ分析・機械学習を使って解決したい要件を明確にしていると進めやすいです。具体的には、特に以下の3つの要件を決めておくと、ご対応する側とすり合わせがしやすいと考えています。
- 解決したい課題はなにか
- どんな施策を実施したいか
- なにを満たせば解決したことになるか
データ分析や機械学習は施策を実施するための具体的な方法に当たりますが、方法を使ってどこに向かうかや、その達成基準を決めておかないと、依頼側も分析者側も途中で迷子になってしまいます。
また、機械学習というトピック自体が面白いので、ついついやり方や言葉に引っ張られて解決したい課題が疎かになってしまうかもしれません。
解決したい課題とゴールを具体的に決めておき、そこを目指して一緒に課題解決を進める必要があります。
2. 運用のイメージを持っておく
ダッシュボードや機械学習モデルの検証では、もし良い結果が得られれば、多くの場合はシステム化して、長い期間の運用が行われます。 どのようなシステム構成で運用して行くかについても、少しイメージを持っておくと、検証を進める環境や手段を想像しやすくなるのでおすすめです。
例えば、機械学習モデルを開発したい場合、AWSなどパブリッククラウド上で運用しても問題がないのであれば、検証段階もAWS上で進めることができ、使用する手法も特別な制限(とても軽量な手法にしたいなど)を付ける必要がないことが分かります。
また、データも継続的に集めて保管しておく場合がほとんどです。データ分析・機械学習システムは、データの流れという観点で、システムの中でも一番末端と考えてよいでしょう。場合によっては、社内外のデータソースからデータを集約しておくデータ分析基盤を新しくつくったり、既にあるものと連携したりする必要があるかもしれません。
機械学習システムの立て付けの例
分析に使うデータをどこに保管するのか、保管するところを新しく作る必要があるのかも想定しておくと、検証後にやるべきことが見えやすいです。
データ作成のポイント
1. 仮説を立てる
データを作成するには、まず仮説を立てるとよいです。 以下のポイントに気をつけます。
- 施策を実現するために、なにが分析・推定できると良いか
- 上記を行うために、どんなデータが必要か
例えば、小売店の営業課題について考えてみます。以下のように課題設定を整理し、仮説を立ててみます。
- 課題:顧客のリピート率が□□%と低い
- 目標:顧客のリピート率を○○%にする
- 施策:次回来店が期待できなさそうな人に、クーポンを配布する
- 仮説:ユーザーの前回来店からの期間はリピート率に影響がある
次回に来てくれなさそうな人を考えるのに、「ここしばらく来店してくれていない人」はそのまま来てくれなくなってしまいそうなので、前回来店からの経過日数を施策で使うデータに選ぶのは妥当そうですが、「隣の県の気温」とかを根拠とするのは苦しそうです。
データ分析をしていると「もしかしたらこれも関係があるかも?」といろんなデータを使ってみたくなることもありますが、多くの場合は仮説を立てて効果がありそうなデータを確実に増やしていく方が改善効果が高いです。どんなデータでも、整形して分析手法にかけて結果を比較して、としていると時間がかかってしまうので、仮説のもとで優先順位の高い検証から進めていくと早く進みます。
2. 分析しやすいデータを作る
分析者が最初の分析を行うのに必要なデータを準備します。 既に自社内でデータ分析基盤があり、その中のデータを使う場合は、分析者用にアカウントと分析環境を準備するだけで済みますが、そうでない場合は、まずは分析者に共有するためのファイルを用意して渡すこととなります。
提供するデータを準備する上で、ポイントになりそうな点を挙げてみました。
- まずはCSVやExcel形式で用意する
- ファイルの形式は、レコード数が極めて膨大でない限りは、まずはCSVやエクセルファイルで用意するのがおすすめです。対応する側である程度柔軟に変換ができ、打ち合わせなどでもビューアーで投影しながら一緒に要件を確認しやすいためです。データが元々別の形式で加工が明らかに大変だったり、量が膨大になったりする場合は、対応してくれる方にどんな形で渡すと都合がよいか相談してみましょう。
- 未加工の元データを提供する
- できるだけデータは加工せず、取得した元の値をそのまま提供するのがよいでしょう。例えば、データを取り損ねて欠損している値があったとしても、分析者が適切な補完を検討する必要があるので、勝手に埋めるのは避ける必要があります。
- 個人情報に注意する
- 特にユーザーデータなど個人情報が入っているような場合は、データ収集時に結んだ規約を念頭に、取り扱いには十分注意しましょう。必要であればそのデータは削除したり、マスクしましょう。
データの種類について
一般的に、データの種別によって分析に都合がいい形式があるので、例を記載します。
構造化データ
構造化データは、行と列を持つ形式のデータです。例えば、エクセルの表で表現することができる形式のものです。テーブルデータと呼ばれることもあります。
以下のようなイメージです。
データの中には、仮説に合った、分析・推定対象のデータとその根拠となるデータが入っていることが必要です。一方で、仮説を持った上で、ちょっと関係ないかも知れないけれど気になるデータについては、ファイルに含めておいても問題ありません。
非構造化データ
構造化データではないデータ(例えば、画像・動画・音声データなど)を本稿ではまとめて非構造化データと呼ぶこととします。
非構造化データの例には以下があります。
- 画像データ
- 動画データ
- 音声データ
- テキストデータ(構造化されていないもの)
非構造化データは解きたい問題設定によってそれ用の準備が必要になります。
例えば画像データを使って物体検出を実現したい場合は、どの位置にどの物体が写っているのかマークをつける作業が必要になります。この作業については、以下でご紹介しています。
準備には時間がかかることが多いので、準備のやり方が分からない場合は、依頼時に準備はしていないことと、どうしたらお互いに都合が良いかを相談してみましょう。
検証・運用場所について
運用のイメージを持っておくで、パブリッククラウドの利用について言及しました。クラスメソッドは、パブリッククラウドでのシステム開発に強みがあるので、データ分析・機械学習システムについてもパブリッククラウド上で運用することが多いです。以下のご質問をよく頂くので、その理由の例をご紹介します。
システムはパブリッククラウド上で開発した方がいいの?
システム要件次第ではありますが、パブリッククラウド上では以下のメリットがあるのでご紹介します。
コンピューティングリソースが確保しやすい
特に手元にあるコンピュータを使いたいという場合、そのコンピュータの性能によって使える手法が制限されるケースがあります。まずはクラウド上でリソースを確保することも選択肢に入れて、使える手法のバリエーションを増やしておくと、想定していた方法がダメだったときにほかの手段が取れるので進めやすいです。
サーバー自体の保守が不要な場合がある
クラウドサービスのマネージドサービスを使うと、サーバーの保守をクラウド側にお任せすることができます。
データ分析基盤と連携がしやすい
データ集約のためデータ分析基盤を開発する場合、様々な製品が揃ったクラウドサービス上に整備するケースが多いです。先にみたように、データ分析・機械学習システムは、データ分析基盤のユースケースに位置付けることができます。同じパブリッククラウド上に置いておくことで、データ分析基盤との連携がしやすくなり、その恩恵を受けることができます。
最後に
今回は、これまでご対応させて頂いた開発業務の中で、データ分析を依頼する方が、こういうことに気を付けておくと、依頼者側・対応側ともに準備がしやすいだろうなと思っているポイントをまとめてみました。
クラスメソッドではデータ分析・機械学習の検証フェーズからシステム開発と運用のフェーズまでご担当していますが、これまでご紹介した点も念頭においてご依頼頂けると、より強力にご支援ができると思います。
ご参考になりましたら幸いです。