自分で生成し取得した一次データであれ、他者が提供しているものを取得した二次データであれ、分析や可視化が可能となる状態に、クレンジングや整形と呼ばれる工程が必要となります。
この工程が人手がかかり泥臭く、退屈な工程であったりもするのですが、最近は手法の共有やツールが出揃ってきていることによって、かなり工程が洗練されてきました。
Exploratoryというツールではこのように紹介されています。
データラングリングとは、データの加工や整形などを含めた、データを分析するための前処理とも言うものですが、多くのデータ分析の実に80%の時間はここで費やされます。
Exploratoryでは、この作業を切り離したものとしてではなく、むしろデータの可視化や統計・機械学習のアルゴリズムを使った分析の一環として、シンプルですばやく、さらに再現可能な形で行える環境を提供しています。
https://exploratory.io/note/kanaugust/6235618967553110/note_content/note.html
ここでは全行程をリストします。具体的なやり方としてはGUIとよばれるアプリベース手法や、Pythonを使ったプログラミング的な手法があります。それらはデータビジュアライゼーション講習で学ぶことができますので、ご興味ある方は、受講を検討なさってください。
機械学習の有無に関わらず必ず必要な処理手順
読み込む前
- 文字コードを確認する
- リスト形式かマトリックス形式か確認する。
- マトリックス形式であればリスト形式へ修正する。
- ファイルフォーマットを確認する
列単位への処理
- 不要な列を削除する
- 列名を確認し、必要があれば適宜最適なものに修正する
- データ型を確認し、アプリ上のデータ型認識を、必要があれば適宜最適なものに変更する
- (必要に応じて)データの型を変換する(数値データへの変換、カテゴリーデータへ変換、対数化、正規化)
- (必要に応じて)日時差の算出
- (必要に応じて)季節や時間帯、平日休日といったカテゴリーデータの算出
- (必要に応じて)位置情報データの付加(絶対値、移動量)
- (必要に応じて)列の分割や結合、ある列を元にした別な列の生成などを行う
- (必要に応じて)複数の列を一つの列へ転置する
- (必要に応じて)指定した2つの列の値をkey/valueとして、新たに列を生成する
- (必要に応じて)セル値で列を生成する
- (必要に応じて)別なデータセットやWeb APIと結合する
行単位への処理
- 重複の検出
- 外れ値や不良データの検出とその対応(削除、補完)
- 配列やオブジェクトを一セルあたり一つの値になるよう展開する
セル値への処理
- 値の標準化(日付表記、数値や英語の全角半角表記など)
- 繰り返し記号の実データ化
- 単位表記がセル値に含まれている場合は削除。たとえばミリメートルとセンチメートルが混在しているなら統一する
- 名寄せ/ファジーマッチング
- Upper/Lower Case揃え
- URLエンコーディング、HTMLエンティティされた文字列をアンエスケープ(通常テキスト化)する
- 不要な空白文字を取り除く
機械学習に必要な処理
抽出
- ランダムサンプリング
- 恣意的な(顧客IDなどで集約、ある列のある値の幅による集約、など)サンプリング
分割
- (機械学習など目的に応じて)学習データと検証データの分割
生成
- (機械学習など目的に応じて)モデルを作る際に学習データが不均衡な場合、データの生成