AMELAジャパン株式会社

  • TOP/
  • NEWS LIST/
  • データサイエンスに欠かせないデータクレンジングとは?目的や具体的な作業まとめ

データサイエンスに欠かせないデータクレンジングとは?目的や具体的な作業まとめ

現在、多くの企業で
「蓄積させたデータの活用」
が課題となっています。

基幹システムをはじめ、多くのシステムが社内で導入される一方で、そのデータをうまく活用できていない企業は多いです。

データはただ蓄積させることに意味はなく、いかにビジネスに利用するのかが重要になります。

データの活用をする上で重要な作業に
「データクレンジング」
があります。

今回はこのデータクレンジングについて解説していきます。

データクレンジングとは

データクレンジングは、データの品質を向上させるためのプロセスで、
・誤ったデータ
・不完全なデータ
・重複したデータ
・不適切なデータ
を検出し、修正または削除することを指します。

例えば、顧客管理システムを使っている場合、
・人によって全角と半角が違う
・無駄な空白が入っている
・入力されていない項目がある
・テーブル定義のミスで、会員IDが重複している
などが考えられます。

こういったデータに対して
・プログラムで全角に統一して登録する
・SQLで空白を消す
・不要な重複データを手作業で削除する
などがデータクレンジングの方法として考えられます。

システムを利用している際に、発生するデータの矛盾や破損しているデータなどを
「ダーティデータ」
と呼び、これらを修正することがデータクレンジングのゴールであると言えます。

データクレンジングの目的

では、このデータクレンジングには、どの様な目的があるのでしょうか。

データの信頼性を担保する

1つ目の目的は、データの信頼性を担保することです。

例えば、データを分析する際に、市区町村別に購入者の分布を見たいとします。

この時、市区町村をテーブルに文字列として登録するような仕組みだった場合。

市区町村が選択式ではなく、自由記述での登録だったとすると、入力ミスの可能性が出てきます。

このデータを元に集計した結果
・北海道札幌市:500件
・ホッカイドウ札幌市:100件
・ほっかいどうさっぽろし:30件
・ほっかいどう札幌市:50件
・北海道札幌し:20件
などのように、別々にカウントされてしまったとすると、本来「北海道札幌市」は700件でカウントされるべき所が、500件でカウントされてしまっています。

このような場合、集計データの信頼性が低く、分析結果もずれてきてしまいます。

その結果、
「北海道札幌市に最も優良顧客が集まっているはずなのに、データ分析上では大阪府大阪市が最も優良顧客が集まっているとご認識する」
というような事が起こります。

こういったデータによる判断ミスを無くす上でも、データの信頼性は非常に重要になってきます。

この信頼性を担保するためにも、データクレンジングが重要になってきます。

複数システムのデータを同じ粒度で集計する

社内で複数のシステムを利用している場合、その情報の粒度や入力方法が違っている場合があります。

例えば、住所入力に対して、

【システムA】
・都道府県
・市区町村
・それ以下の住所
・建物名/部屋番号

【システムB】
・都道府県
・市区町村以下の住所

という風な登録方法だった場合、データを集計するのが困難になります。

システムBで市区町村を抜き出して、市区町村別に分析したいような場合には、
「東京都町田市」
の場合には、町田の町は、市区町村の町なのか・・・という問題が出てきます。

システム的に判断する場合には、こういった名前の問題で分類が難しい場合があるのです。

一方で、市区町村を別のカラムとして登録している場合には、この心配はありません。

この様に、データを自動的に変換する場合には、誤変換のおそれがあり、結果としてデータの粒度が合わなくなる可能性があります。

こういったデータの形式や粒度を合わせる事で、複数のシステムの情報を統合して分析するためにも、データクレンジングが重要になってきます。

ダーティデータの生まれる原因

データクレンジングのゴールがダーティデータをなくすことであることはお伝えしましたが、このダーティデータとは、どの様な過程で生まれてくるデータなのでしょうか。

入力ミス

1つ目の理由が入力ミスです。

システムの入力画面で、タイピングミスなどをすることでダーティデータが生まれる可能性があります。

特に接客情報などは、パソコンに不慣れなアルバイトが登録する必要がある会社もあるでしょう。

忙しい中で登録するような現場環境であれば、ちょっとした入力ミスが起こることは多々あります。

入力規則がない

次に、そもそもプログラムに入力規則が無いような場合です。

例えば、電話番号や郵便番号などの数値しか入ってこないデータに対して、
・テーブル定義がvarchar
・プログラムで文字も入力できる
という様な状況だったとすると、仮にひらがなを入力しても、登録できてしまいます。

いわゆるバリデーションエラーをしっかりと作っていない簡易的な仕組みの場合に発生する可能性が高く、こういった場合、よほどシステムの利用者がきちんとルールを決めていない限り、ダーティデータが生まれる可能性があります。

特に全角・半角のルールは、どれだけ注意してもミス入力が起こってしまう事があります。

登録時にプログラム側で調整していない

次に、プログラム側でデータの調整をしていない場合もダーティデータが生まれます。

プログラム側でのデータ調整とは、
「入力された項目に対して空白を削除して登録する」
などのいわゆるTrim作業などが当たります。

本来、空白が入るはずが無いデータに対しては、空白を削除して登録することで、データの確実性が上がります。

こういった処理をプログラム側で行っていない場合に、ダーティデータが生まれる可能性があるのです。

重複登録

次に、重複登録もダーティデータが生まれる理由です。

例えば、登録画面で通信が遅いタイミングで
「ボタンを連打する」
というような事は、多くの人がやっていることでしょう。

このボタンを押すごとに登録がされてしまう様な仕組みの場合には、重複したデータが生まれます。

会員番号などのキーになるデータが登録時に自動採番される場合には、かなり厄介になります。

回避するためには、ボタンを押した瞬間にボタンを非活性化するなどの画面制御が必要になります。

そこまでの制御をしていないシステムがある場合には、重複登録の可能性もあります。

運用ルールの煩雑化

次に、ルールの煩雑化が原因になることもあります。

例えば、画面での自動制御ではなく入力する人たちの中で、
「この商品の場合は、この選択肢を選ぶ」
「複数商品を買ったお客様は、この選択肢も選ぶ」
「1年以内に2回以上購入したお客様はリピート客と呼ぶ」
など、様々な暗黙の了解が出来ていたとします。

こういったシステム化されていないルールが多ければ多いほど、それを正しく理解していない人が増えてきます。

特に新人など、社内ルールが理解できていない人や、最近できた新しいルールなどは、入力間違いが発生しやすいものです。

その結果として、ダーティデータが生まれてしまうのです。

システムごとにデータベースのテーブル定義が違う

次に、システムごとにデータベースのテーブル定義が違う場合も、ダーティデータが発生しやすいです。

例えば、同じ「接客データ」という括りでも、一方のシステムは「購入ID」が主キーとなっており、もう一方のシステムでは「購入ID」と「店舗コード」の2つが主キーになっている様な場合。

全社は、店舗に関係なく購入IDを一意に採番していますが、後者は店舗ごとに採番しています。

結果、後者の場合は別の店舗であれば同じ購入IDが存在することになります。

その結果、データを統合した時に、主キーが重複してしまうなどの問題が起こります。

この場合は、主キーが重複すればデータの移行そのものが出来ないですが、主キーでないデータ同士がこの様に違う入力方法になることで、より多くのダーティデータが発生する可能性があるでしょう。

データクレンジングのメリット

さて、前項でお話したように、様々な場面で生まれるダーティデータですが、それをデータクレンジングすることには、どの様なメリットが有るのでしょうか。

意思決定が正確になる

最も大きなメリットが、データクレンジングによって意思決定が正確になることです。

データクレンジングをすることで、情報の抜けもれが減れば、判断するために利用するデータの母数が増えることになります。

100件のデータを分析した結果で判断するのと、1万件のデータを分析した結果で判断するのでは、情報の信頼度が違います。

偶然の要素が減り、必然的な結果が見えてくるからです。

こういった母数の大きな情報で経営判断を下す方が、より成功率が高くなることが予想されます。

これが、データクレンジングのメリットの1つ目です。

業務効率が上がる

データクレンジングのメリットの2つ目は、
「業務効率が上がる」
ということです。

データクレンジングをしていく中で、ダーティデータが生まれる根本的な理由にたどり着く可能性が高いです。

そのため、
「この画面で入力しているデータにダーティデータが多いから、バリデーションエラーを取り入れよう」
というように、システム側で判断したり、自動で修正したりする機能を追加する事が可能になります。

特に、システムの改修にはお金がかかったり、内製しているシステムであれば、人員というリソースを割く必要があります。

データクレンジングによって見つかった「優先順位の高い修正」から順に回収していく事が出来ます。

その結果、長期的に見た際にデータの修正にかかる時間が減り、業務の効率化に繋がります。

データ分析の精度が上がる

データクレンジングで情報が整理されることによって、データ分析の精度が高くなります。

これは前述した様に、使えるデータの母数が増えることによる信頼性の向上と、プログラムの修正が合わさった結果、
「一見正しい様に見えるデータ = 今まではダーティデータと認識されていなかったデータ」
も、正常なデータになる可能性があるからです。

例えば、古い運用ルールで、それを現場がきちんと把握していなかった場合。

誰もが気付かずに間違ったデータが蓄積していることになります。

しかし、システムによって改めて運用ルールを定義する事で、こういった曖昧さがなくなり、データが正確になります。

こういった事は、業務が属人化している企業に多いです。

また、データクレンジングを行う際には「データ分析を前提とした修正」が行われるため、
・この項目は分析に使いたい
・この項目は今まで必須項目ではなかったけど、必須項目にしたい
などの要望が出てくる可能性があります。

これらもシステム修正に加えることにより、将来的にデータ分析の精度が上がっていきます。

コスト削減

次に、コスト削減にも繋がります。

データクレンジングを繰り返していくと、プログラムの修正などによって、ダーティデータそのものが減っていくと予想されます。

結果、データクレンジングにかかるコスト自体は削減できます。

加えて、運用ルールを説明しなくても、
「システムに入れられるものが正しい」
という様になれば、社員の教育コストも削減可能です。

データクレンジングの進め方

では、具体的なデータクレンジングの進め方を見ていきましょう。

重要なデータフィールドの特定

まずは、重要なデータフィールドを特定していきます。

例えば、会員情報を取り扱っていたとすると、その中で
「会員の氏名や住所、電話番号は重要項目」
「生年月日や性別は重要項目ではない」
など、画面の必須項目とは別に、分析における重要度の高いデータとそうでないものがあります。

これらを、分析の目的に合わせて設定していきます。

現行のテーブル定義やデータの確認・調査

次に、現行のテーブル定義やデータの確認・調査をしていきます。

複数のシステムがある場合には、それぞれにテーブル定義を確認していきます。

余裕があれば、入力画面のデータの入力規則の確認も行っていくのが良いでしょう。

各テーブルの関連性の確認

次に、各テーブルの関連性の確認です。

例えば、会員IDは
・購入情報
・接客情報
などにつながっているなど、「1対1」「1対多」「多対1」「多対多」の関係性を見ていきます。

この後にデータを修正する段階で、関連性のあるデータも同時に修正しなければ、更にデータに矛盾が生まれる可能性があります。

そのためにも、各テーブルのつながりを確認しておくことが重要です。

データの修正方法の方針決定

次に、データの修正方法の方針を決めます。

データの重要性を元に、システム側で修正するのか、変換用のバッチ処理を設けるのかや、一旦手作業で様子を見るなど、データの修正方法を考えていきます。

この時に意識しておく点としては、
・どのくらいの頻度でデータが更新されるのか
・ダーティデータの件数がどのくらいあるカラムなのか
という事です。

開発環境でデータクレンジングの実施

前項の修正方法を元に、開発環境でのデータクレンジングを行っていきます。

開発環境には、本番環境と違い
「開発の過程でテストデータを手動作成したダーティデータ」
がある事を意識しておく必要があります。

例えば、テストのために本来システムから登録すれば起こり得ない矛盾のあるデータを作成することがあります。

しかし、テスト完了後にそのデータを削除し忘れている場合などがあり、これをダーティデータとしてしまうと、修正が非常に難しくなります。

できれば、一度開発環境のデータを削除した上で、本番環境のデータを移行して作業をしていくことが望ましいです。

データを確認する

次に、修正したデータの確認を取ります。

確認の方法としては、
・分析の仕方を想定した集計をしてみる
・各項目にNULLや空白データがどの程度入っているのかを調べる
などが考えられます。

これらのデータを確認し、修正方針が正しいのかを最終チェックしていく必要があるのです。

本番データのデータクレンジングを行う

実際に修正方針に問題がなければ、本番データでデータクレンジングを行っていきます。

開発環境を一度クリアし、再度本番データを移行し、バックアップとして残しておくのが良いでしょう。

運用ルールやプログラムの変更などを行う

データクレンジングを行った後は、運用ルールやプログラムの変更などを行い、
「今後ダーティデータが発生しにくい環境」
を作ることを目指します。

ダーティデータの発生頻度が下がれば、データクレンジング作業自体が少なくなっていくため、この工程が非常に重要になります。

定期的なデータクレンジングの実施もしくは仕組み化を行う

前項の運用ルールやプログラムの変更を行っても、完全にダーティデータがなくなることは無いでしょう。

新しいシステムを導入したり、新しいテーブルを追加する度に、ある程度ダーティデータが生まれると考える方が良いです。

そのため、定期的なデータクレンジングと仕組み化を行い、ダーティデータの観測と修正を繰り返していく必要があります。

頻度はダーティデータの発生頻度と、分析の頻度にもよりますが、具体的にデータを分析するタイミングにデータを確認できると尚良いでしょう。

データクレンジングの仕組み化はAMELAに

今回は、データクレンジングについて見てきました。

データの活用を行っていく上で、このデータクレンジングが非常に重要であり、データサイエンスを行っていくために欠かせない作業の1つと言えます。

しかし、ダーティデータの選別や修正には高い技術と経験が必要になります。

場合によっては、
「データクレンジングをした結果、システムが止まった」
という事もあります。

そのため、多くの経験を持ったエンジニアを採用する必要があります。

AMELAでは、経験豊富なIT人材の派遣を行っています。

特定のスキルに特化したエンジニアも多く、御社の要望に合った人材をご提案いたします。

是非、お気軽にご相談ください。