データの前処理
今日のデータは、そのサイズの大きさと異種のソースからの発信により、異常なデータの発生確率が高まっています。高品質なデータがより優れたモデルや予測につながることを考えると、データの前処理は不可欠であり、データサイエンス/機械学習/AIパイプラインの基本的なステップとなっています。この記事では、データを処理する必要性について学び、プロセスの各ステップに対するさまざまなアプローチについて議論します。
データを収集していると、データの質を左右する3つの主な要因に出くわすことがあります。
-
1.正確さ(Accuracy)。想定した値から外れた誤った値。不正確なデータの原因はさまざまですが、次のようなものがあります。
-
データ入力および送信時のヒューマンエラー、コンピューターエラー
- ユーザーが意図的に誤った値を送信すること(偽装欠損データと呼ばれる)
- 入力フィールドのフォーマットが間違っている
- トレーニング例の重複
2.2. Completeness:属性/特徴の値や関心のある値がないこと。データセットは以下の理由で不完全である可能性があります。
- データが利用できない
- 一貫性のないデータを削除した場合
- 初期状態では無関係と思われるデータの削除
3.3. 一貫性:データの集計には一貫性がありません。
また、データの品質に影響を与えるその他の特徴として、適時性(一定期間後にすべての関連情報が提出されるまで、データは不完全である)、信憑性(データがユーザーにどれだけ信頼されているか)、解釈可能性(データがすべての関係者にどれだけ容易に理解されるか)などがあります。
高品質なデータを確保するためには、データの前処理が重要です。このプロセスを容易にするため、データの前処理は「データクリーニング」「データ統合」「データリダクション」「データ変換」の4つの段階に分けられます。
データクリーニング¶
データクリーニングとは、外れ値の除去、欠損値の置き換え、ノイズの多いデータの平滑化、矛盾したデータの修正など、データを「きれい」にする技術のことです。これらのタスクを実行するために多くの技術が使われており、それぞれの技術はユーザーの好みや問題設定に応じて異なります。以下では、各タスクを克服するために使用される技術の観点から説明します。
欠損値¶
欠損データの処理には複数のアプローチが使えます。そのうちのいくつかを見てみましょう。
-
- 学習例を削除する:出力ラベルが欠落している場合、学習例を無視することができます(分類問題の場合)。これは、データセットに付加価値を与えることができる属性値も削除することになるので、データの損失につながるため、通常は推奨されません。
-
- 手動で欠損値を埋める。この方法は時間がかかるため、大規模なデータセットにはお勧めできません。
-
- 標準的な値を使って欠損値を置き換える。欠損値は「N/A」や「Unknown」などのグローバルな定数で置き換えることができます。これは簡単な方法ですが、確実ではありません。
-
- 属性の中心傾向(平均値、中央値、最頻値)を用いて欠損値を置き換える。データの分布に基づき、平均値(正規分布の場合)または中央値(非正規分布の場合)を用いて欠損値を補うことができる。
-
- 同じクラスに属する属性の中央傾向(平均、中央値、最頻値)を用いて欠損値を補う。この方法は,中央傾向の尺度が各クラスに固有のものであることを除けば,方法4と同じである。
- 最も可能性の高い値を用いて欠損値を補う。回帰や決定木などのアルゴリズムを用いて,欠損値を予測して置き換えることができる。
ノイズの多いデータ¶
ノイズとは、測定された変数のランダムな分散と定義されます。数値の場合、箱ひげ図や散布図を使って異常値を特定することができます。このような異常値に対応するために、以下のようなデータスムージング技術が適用されます。
-
- ビン化:ビニング法は、ソートされた値をその周辺の値を利用して平滑化する手法である。ソートされた値はビンに分割される。ビン化には様々なアプローチがある。ビンの平均値で平滑化する方法と、ビンの中央値で平滑化する方法があるが、それぞれのビンの値の中央値で平滑化する。
- 線形回帰。線形回帰および重回帰は、データを平滑化するために使用することができ、値はある関数に適合します。
- 外れ値分析。1. 外れ値の分析: クラスタリングなどの手法を用いて、外れ値を検出し、対処することができる。
データ統合¶
データが複数のソースから収集されるようになったため、データ統合が重要な役割を果たすようになりました。これにより、データの冗長性や一貫性のなさが生じ、データモデルの精度や速度が低下する可能性があります。このような問題に対処し、データの整合性を維持するために、タプルの重複検出やデータの衝突検出などのアプローチが求められています。データを統合するための最も一般的なアプローチを以下に説明します。
-
- データ統合。データを物理的に1つのデータストアにまとめます。これには通常、データ・ウェアハウスが必要となる。
- データプロパゲーション(Data propagation)。アプリケーションを使ってデータをある場所から別の場所にコピーすることをデータプロパゲーションと呼ぶ。データプロパゲーションには同期または非同期があり、イベントドリブンで行われる。
-
- データの仮想化:複数のソースからのデータをリアルタイムで統一的に表示するためのインターフェイスです。データは1つのアクセスポイントから見ることができる。
データ削減¶
データリダクションの目的は、元のデータセットの完全性を維持しつつ、より小さな容量のデータセットの凝縮された表現を持つことです。これにより、効率的でありながら同様の結果が得られます。データのボリュームを減らすためのいくつかの方法があります。
- 欠損値の比率。閾値よりも多くの欠損値を持つ属性を削除します。 2.2. 低分散フィルタ:正規化された属性のうち、分散(分布)がしきい値よりも小さいものも削除される。なぜなら、データの変化が少ないということは情報が少ないということだからだ。 3.3. 高相関フィルター。相関係数がしきい値以上の正規化された属性も、傾向が似ていると同じような情報を持っていることになるので、削除される。相関係数は通常、ピアソンのカイ二乗値などの統計的手法を用いて算出されます。 4.4. 主成分分析:主成分分析(PCA)とは、相関性の高い属性をまとめて属性数を減らす統計的手法である。繰り返すごとに、初期の特徴は主成分に還元され、前の成分と無相関であることを条件に、元のセットよりも大きな分散を持つようになります。ただし、この方法は、数値を持つ特徴にしか使えない。
データ変換¶
データ前処理の最後のステップは、データをデータモデリングに適した形に変換することである。データ変換を可能にする戦略には次のようなものがある。
- スムージング(Smoothing)。データに含まれるノイズを除去し、より多くのデータパターンを見る。 2.2. 属性/特徴の構築。与えられた属性のセットから新しい属性を構築する。 3.3. 集計。新しい属性を作成するために、与えられた属性のセットに要約と集約の操作が適用されます。 4.4. 正規化。各属性のデータをより小さい範囲、例えば0~1や-1~1の間でスケーリングする。 5.5. 細分化。数値属性の生の値は、離散的または概念的なインターバルに置き換えられ、さらに上位のインターバルに整理される。 6.6. 名目データの概念階層生成。名目データの値は高次の概念に一般化される。
まとめ¶
データの前処理には複数のアプローチがあるにもかかわらず、日々生成される支離滅裂なデータが多いため、今でも活発に研究されている分野です。IBMクラウドでは、データサイエンティスト向けのプラットフォーム「IBM Watson Studio」を提供しており、データサイエンティストが従来のプログラミングによる方法に加えて、ドラッグ&ドロップでデータの前処理ができるサービスを提供しています。Watson Studioがどのように[データ・サイエンス・ライフサイクル](https://www.ibm.com/jp-ja/cloud/watson-studio/details)に役立つかをご紹介します。