見出し画像

データの前処理自動化を成功させる3ステップアプローチ【データ利活用の道具箱 #14】

はじめに

データドリブン経営を目指して、データを利活用するための基盤やツールを導入する企業が増えています。

データをビジネスに活用するには、ニーズに合わせて集めたデータを使いやすく加工する作業(「データの前処理」)が欠かせません。しかしこの作業には手作業が多くて手間がかかることから、データ利活用の足かせになることも多いです。

本記事では、この「データの前処理」にフォーカスし、3つのステップでデータの前処理の自動化してデータ利活用の効率を上げるための方法を紹介します。


データはそのままでは使えない

よくある勘違いとして、「たくさんのデータをもっているので、データの利活用に使えばかなりの効果を生むことができる」というものがあります。これは半分正解で半分不正解です。

データ利活用においてデータの量は重要という部分は正解で、たくさんのデータがあることで予測の精度が上がったり、隠れていたインサイトを発見したりできます。
一方で単にたくさんのデータがあれば良いというのは不正解で、データ利活用の効果を上げるにはデータの質も重要になります。収集可能なデータをかき集め、そのまま分析しても期待する効果を得られません。

企業が扱うデータは通常、基幹システムや業務システムなど用途で別れたシステムそれぞれが持つ異なるデータベースに格納されています。これらのデータは、各システムでの業務遂行に適した形で格納されているので、データ利活用の視点では最適な形ではないことが多くあります。

例えば「ある商品は特定の顧客属性(性別や年代)に人気である」と仮説を立てたとします。この仮説を検証するために、データ分析者は販売データと顧客データを使おうとしますが、ここで様々な問題が発生します。

販売データは販売管理システムから、顧客データは顧客情報管理システムから取り出す必要があり、手作業で紐づけをしなければいけません。具体的にはSQLの実行やシステムからのダウンロードによって複数のファイルを準備し、それらのファイルとExcelのvlookup関数などを使って、一つの表にまとめる・・・といった手間のかかる作業です。だからといって全てのデータを1つのデータベースに集約するわけにもいきません。こうして、様々な用途のシステムのデータを使うほど、手間が大きくなるのです。

他にも、使いたいデータが必ずしも分析ユーザの期待する形ではないこともあります。「年代」というデータ項目に空白が入っているようなケースで、これを「欠損」と呼びます。
データ分析する側はすべてのレコードに「年代」が入力されていることを期待しますが、データ登録側の都合では任意入力となっている場合にこのような状況が発生します。
この場合、欠損がない前提での分析手法が使えなくなったり、欠損を含むレコードを削除した結果分析の精度が下がる、といった問題が発生します。

データ分析に必要不可欠な『データの前処理』

前述のような、データの質に起因する問題を解決するために実施するのが「データの前処理」です。
データの前処理は、図2のように各システムからデータを抽出・結合し、異常値を削除したり欠損値を補完、匿名化対応など多段階のタスクで構成されています。図1では、5つのタスクからなる例を示していますが、利用するデータや分析の仕方などによって、必要なタスクの内容や数は変化します。

図1 データの前処理は複数のプロセスから構成される

「ある商品は特定の顧客属性(性別や年代)に人気である」という仮説の例を使って、もう少し具体的に説明します。

まず、販売管理システムからは販売履歴と商品マスタを、顧客情報管理システムからは顧客情報を抽出します。次にこれらのデータを結合して分析用のデータを作成します。

その中で、前掲のように欠損が生じている場合、欠損値を含むレコードを分析対象外としたり、欠損している項目を代表値(平均や中央値)で補完したりといった対応(欠損値補完)をします。
他にも、明らかに不正とわかるデータを削除する「異常値削除」や、名前などの個人情報を個人が特定できないように加工する「匿名加工」といった処理を行うことで、データを分析に適した形に加工します。

これらの処理を経たデータは、一つのデータベースとしてまとまっており、かつ分析に必要な項目に値が入った状態です。そのため、分析者は効率よく分析作業を進めることができるようになります。

手動でのデータの前処理は、データ利活用の足かせになる

このようにデータ前処理は、データ利活用において非常に重要な工程です。しかし実際のデータ利活用の現場では、このデータの前処理が手作業で行われていることが多く見られます。
手作業によるデータの前処理は、以下のような点でデータ利活用の足かせとなります。

1.いつでも実行できない
データの前処理では、アウトプットするデータの品質を維持・向上するために、継続的な改修が必要すし、定期的にデータを最新化する必要もあります。しかし手作業の場合属人化が発生しやすく、実行できる担当者が限られると、実行できるタイミングも限定されてしまいます。

2.データ分析できるまでのリードタイムが長くなる
データの前処理を手作業で行う場合、作業に時間がかかってしまうため、分析用のデータが準備できるまでのリードタイムが長くなります。
データの発生から分析開始までのタイムラグが大きくなってしまうと、分析の結果適切な判断を下せても、機を逸してしまう可能性があります。

3.高い正確性を担保できない
万が一データの前処理に不備があり、不正確なデータをアウトプットしてしまった場合、分析手法が正しくても分析結果が誤りとなります。
手作業でデータの前処理を行う場合、担当者のスキルや繁忙度で作業品質にブレが発生し、高い正確性を維持することが難しくなります。

データの前処理の自動化を成功させる3ステップ

そのような問題を避けるため、データの前処理を自動化することが重要です。

現状は手作業でも業務に支障がない場合でも、自動化は進めていくべきです。なぜなら、データ分析は進化し続けるからです。
データ利活用が企業の中で活性化し、前処理の内容が複雑になったり、増加するデータ量に対応する中で、手作業で行うことで発生する問題の影響が大きくなるからです。

ただし、いきなりデータの前処理をすべて自動化しよう!と着手するのは危険です。

データの前処理は複数の処理が複雑に連携するので、いくつものツールやサービスを連動させることも多く、一度にすべてを自動化するアプローチは失敗するリスクが大きくなります。
また、データ分析は関連するシステムも多く、またビジネス環境により分析のニーズも変化します。自動化の範囲が大きくなると開発期間が長くなり、関連システムの改修や分析ニーズの変化に対応することが難しくなります。

そこで、一度に全てを自動化するのではなく、以下のような3つのステップで進めていくことをお勧めします。
①簡単なタスクから着手する
②難しいタスクにもチャレンジする
③一連のタスクを最適化する

自動化のステップ①簡単なタスクから着手する

データ前処理を自動化する最初のステップは、簡単なタスクに絞って自動化することです。

自動化の対象を局所化できるので開発難易度を下げ、開発期間を短縮できます。もう一つの利点として、一部の処理を流用したり、改修する際の影響範囲を特定しやすくなります。

図2 ステップ①では簡単なところを自動化する

では、どのタスクから着手するのが良いのでしょうか?
処理内容によりケースバイケースではありますが、多くの場合は「欠損値補完」から取り組むのがお勧めです。「欠損値補完」は判定と対応のルールが単純なことが多く、自動化に取り組むハードルが低いです。

もしくは、タスクの内容がシンプル(指名をカラムごと削除や年齢を年代に置換など)なのであれば「匿名加工」もお勧めです。

自動化のステップ②難しいが効果も大きいタスクに自動化を広げる

簡単なタスクを自動化できたら、徐々に自動化スコープを拡げます。

難しいタスクから自動化対象を選ぶ際のポイントは、「自動化によるメリットの大きさ」です。効果の大きいタスクを優先して自動化しましょう。
例えば、「異常値削除」が候補になります。異常値かどうかを判断するルールを定める難しさはありますが、手作業の負荷がとても大きいので、自動化できた場合のメリットが大きくなります。

図3 ステップ②では自動化が難難しいが効果も大きいタスクに自動化を広げる

逆に、「データの抽出」のような繰り返し回数の少ない処理は後回しで良いでしょう。レコードごとに作業が必要な「欠損値補完」などと比べ、1回の作業で行う回数が少なく、自動化によるメリットが小さいためです。

自動化のステップ③一連のタスクを最適化する

ここまで、個々のタスクの独立性を保ちながら自動化を少しずつ進める方法をみてきました。タスクの自動化を成し遂げた後に実施すべき最後のステップは、自動化した一連のタスクを最適化する方法です。
ここで、オーケストレーションによって一連のタスクを最適化する方法を紹介します。

オーケストレーションとは

オーケストレーションとは、複数のタスクを連動して動作させるための考え方であり、仕組みです。ステップ②までで、個々のタスクが独立したまま自動化したため、処理の全容が把握しにくかったり、実行に手間がかかるといる問題があります。

オーケストレーションは、個々のタスクの独立性を保ちながら、一連の処理として管理ができるため、そのような課題を解消できます。

※一般的なオーケストレーションは、クラウド環境全般やコンテナなども含む広い範囲を対象とします。本記事では、データの前処理にフォーカスするため、範囲を絞って解説します。(データオーケストレーションと呼ばれることもあります)

図4 ステップ③では一連のタスク全体を管理する

オーケストレーションの実現方法

オーケストレーションの一般的な実現方法は、専用のオーケストレーションツールを導入することです。

代表的なオーケストレーションツールであるApache Airflowは、コマンドを実行したり、AWSやGoogle Cloudなどの外部システムと連携する仕組みを備えており、処理の自動化を簡単に行えます。また、導入事例が多く、コミュニティも大きいため、情報を得やすいという特徴もあります。
さらに、Amazon Managed Workflows for Apache Airflow(AWS)やCloud Composer(Google Cloud)など、クラウドベンダーがマネージドサービスとして提供するApache Airflowの機能を活用することもできます。

Apache Airflow以外にも、動的な処理を定義できるPrefectやHadoop向けのLuigiといったツールがあります。

💡Tips!:自動化を進める上での注意点
オーケストレーションツール導入で自動化に大きな効果を見込めることは間違いありませんが、導入するのがベストとは言えない場合もあるので注意が必要です。

まず、オーケストレーションツール導入にはコストがかかります。
また、自動化したタスクのメンテナンスの負担も高くなります。例えば、データ利活用を始めて間もない頃はデータ量も少なく、運用でも試行錯誤が多くなるため、メリットに見合わないメンテナス負担が発生しがちです。
自社への導入を検討する際には、こうした観点も考慮しながら時期を検討すると良いです。

オーケストレーションツールの導入が時期尚早であると判断される場合には、個々のタスクの自動化までで留めることをお勧めします。

まとめ

今回はデータ利活用における、「データの前処理」の重要性と「データの前処理」の自動化を効率的よく進める方法を説明しました。

「データの前処理」を自動化する際には、いきなり全部自動化ではなくて3ステップで進めるのが重要です。はじめは部分的に自動化し、最終的に全体を最適化するとムダのないアプローチになります。
これから自動化に取り組む方は、ぜひ参考としてみてください。

おわりに

今回のこの記事が、皆さんの理解の一助となりましたら、幸いです。もし少しでもお役に立てたのであれば「スキ」を押してください。私たちのモチベーションになります。
この「データ利活用の道具箱」では、データ利活用を推進したり、データをもっと活用したいと奮闘している皆さんに役立つ情報をnoteで発信しています。ぜひ他の記事もご覧ください!


ウルシステムズでは「現場で使える!コンサル道具箱」でご紹介したコンテンツにまつわる知見・経験豊富なコンサルタントが多数在籍しております。ぜひお気軽にご相談ください。