前処理について
仕事でモデルの学習に使用するデータの前処理を行うことになりましたので、前処理について軽くまとめたいと思います。
そもそも前処理とは
データ分析の前処理とは、データ分析の準備のための処理です。
対象となるデータ分析は大きく下記の3種類に分けられます。
- 指標、表、グラフ作成
- 機械学習(教師なし学習)
- 機械学習(教師あり学習)
直近の仕事では、教師あり学習に使用するデータの分析を行うため、教師あり学習に関することのみまとめています。
教師あり学習
「教師あり学習」とは、既知の正解データ(教師データ)を用いてモデルを学習させる機械学習の手法のことです。
教師データは、学習データや訓練データとも呼ばれますが、厳密には学習データとは、教師あり学習の中で使用される教師データのうち、モデルの訓練に使用されるものを指します。
学習データは、機械学習モデルを訓練するために使用されます。モデルは、学習データに基づいてパターンを学習し、そのパターンを利用して新しいデータに対して予測を行います。予測対象のデータは、テストデータと呼ばれます。一方、適用データとは、機械学習モデルを運用する際に使用されるデータのことで、一般的には「本番データ」と呼ばれることがあります。
学習データと適用データの違いは、予測対象のデータが持っているかどうかにあります。学習データは、モデルを訓練するために正解データが必要ですが、適用データは正解データが与えられないため、予測を行うことが目的です。
また、テストデータは、学習データと同様に正解データを持っていますが、適用データと同様に、機械学習モデルに入力せずに、テストのためだけに使用されます。
教師あり学習へ入力するための前処理
教師あり機械学習モデルに利用する学習データ、テストデータ、適用データの3種類のデータを準備することが目的です。
学習データとテストデータは、適用データと同様の処理に加えて、予測対象のデータを追加することで実現できます。
また、学習データとテストデータは本質的に同じデータであり、準備したデータを分割することで学習データとテストデータにすることもできます。
さらに、機械学習モデルの種類に応じて、モデルが扱いやすいデータに変換する前処理も必要になります。
前処理の重要性は、データ分析の目的を明確にすることから始まります。
そして、目的を達成するためにどのような分析が必要なのか判断し、集計内容や利用する機械学習モデルの特性を考慮して、必要な前処理を実施することが重要です。
前処理の流れ
前処理の流れを把握するために、データの何を対象として変換するかによって、前処理を以下の2つに分類できます。
- データの構造を対象とした前処理
- データの内容を対象とした前処理
データの構造を対象とした前処理
データの構造を対象とした前処理は、複数の行にまたがってデータ全体に及ぶ処理を指します。
大きなデータの操作となる処理が多く、データの前処理の中でも早い段階で実施されます。
特定のデータを抜き出す抽出処理や、データ同士を結合したり、あるルールに基づき複数の行を1行に集約したりすることがあります。
例えば、以下のような処理が挙げられます。
- ランダムサンプリングによって、ランダムに行を抽出
- 勾配レコードと商品マスタを商品IDをキーに結合して、商品情報を付与した購買レコードを生成
- 教師あり機械学習のモデルのために、学習データとテストデータを分割
- キャンペーンに反応するデータが少ないのでアップサンプリングによってデータを増やす
以上のような前処理を実施することで、データの構造を整え、モデルが扱いやすくなるため、正確な予測を行うことができます。
データ内容を対象とした前処理
データ内容を対象とした前処理は、行ごとのデータ値に応じた処理です。
データ構造を対象とした処理と違い、行ごとに独立して処理できる小規模なデータ操作が行われます。
この種類の前処理は、データの前処理の流れの中でも後半で実施されることが多く、また条件を変えて繰り返し検討されることも多いです。
例えば、日時のデータ列を月のデータ列に変換したり、数値の列を組み合わせて計算して新たな数値列を生成したりすることがあります。
- 年齢の数値を年代を表す10刻みのカテゴリ型データに変換
- 日付のデータを曜日のデータに変換
- 2地点の緯度/軽度から地点間の距離を計算
前処理の順番
典型的な前処理のパターンでは、まず対象のデータの抽出によってデータ量を減らします。
これは、マスタデータの結合やデータ内容の変換を抽出前に行った場合、最終的に利用しないデータに対しても前処理を行ってしまい、無駄に計算コストが高くなってしまうためです。
ただし、結合するマスタデータが持つデータが集約後の値の条件やサンプルサイズによってデータの抽出対象が変わる場合は、データの抽出を後に行う場合があります。