背景・目的
私は、現在データエンジニアリングを生業としています。普段は、データ基盤の構築や、パフォーマンスチューニングなどビックデータに関する業務に従事しています。
ビックデータの収集や、蓄積、分析などの環境構築の経験はそこそこありますが、機械学習による予測や分類などのスキルは持ち合わせていませんでした。
今まで機械学習を避け続けてきましたが、一念発起し学ぼうと思います。
学び方としては、AWS Certified Machine Learning – Specialty(以降、ML試験という。)の勉強を通して、理解を深めていきます。
今回は、モデリング用のデータをサニタイズおよび準備について学習します。
まとめ
- 機械学習では、事前のデータセットの把握やサニタイズが十分に必要。
- データの把握では、以下のような方法を用いる。
- 列と行の数を把握
- 多変量統計により、属性間の相関を把握
- 属性統計により、属性毎の特徴を把握
- データを把握した後のサニタイズでは、以下のような方法を用いる。
- 言語・文法の標準化
- 同一スケールに揃える
- 同一特徴に揃える
- 異常値を把握し対応する
- 欠損を把握し対応する
概要
目的
データを取り込んでから、変換しデータを保存した状態では、以下の状態から理解ができません。そのためモデリング用に効果的にトレーニングができるようにサニタイズする必要があります。
- ノイズ
- バイアス
- 不均衡
手法
記述統計を使用する
データに関する重要なインサイトを得るために記述統計を使用します。
全体の統計を把握する
データセットの行と列の数を把握する。(行はインスタンス、列は特徴・属性とも言われる。)
特徴量が多い場合、次元が高くなりモデルのパフォーマンスに影響を与える可能性がある。
多変量統計を使用し相関を把握する
属性間の相関を特定する。2つの属性間の相関が高い場合、モデルのパフォーマンスに影響を与える可能性がある。
散布図により数値間数間の関係を可視化したり、相関行列により変数間の線形関係を定量化できる。
属性統計を使用して把握する
数値属性に関する統計。平均・標準偏差、分散、最小値・最大値などを求めてデータの特徴を把握する。
サニタイズする
記述統計によりデータ載り会ができた後、更にデータを詳しく調べてデータのクリーンアップを開始する。
言語と文法を標準化する
同一の属性内で以下のような状態の場外に、標準化する必要があります。
- 英語と日本語等他の言語が混在
- 大文字、小文字が混在
- 特殊文字
同じスケールか確認する
同一属性で、スケールが異なる場合に修正する必要がある。
例えば、km、m、マイル等
同一属性に複数の特徴が含まれていないか確認する
温度、距離、時間などが含まれるような場合、修正する必要がある。
異常値の存在を確認する
異常値は、必ずしも修正する対象にはならないが、予測結果などを歪める原因になるので、適宜判断が必要とのこと。
欠損データを確認する
データの欠損は、関連する特徴量とターゲット変数の関係を正確に解釈することが困難になるため、適切に対応する必要があるとのこと。
対応には、以下の方法が考えられるが、結果が変わるので適宜判断する必要がある。
- 欠損しているデータを含む列や行を削除する。
- 同一列の他の値の平均値や0等で補完する。
考察
機械学習では、学習前に事前にデータセットを準備することが必要になってくる。適切に行われないことでモデルの精度が正しく把握できない。
参考