Skip to Content

機械学習のためのデータ前処理とは?

機械学習(ML)のためのデータ前処理とは、ML モデルのトレーニングに適した形式に未加工データを作成して変換することをさします。これは、モデルの性能と精度に直接影響を与えるため、ML(または AI)パイプラインにおける重要なステップです。

データ前処理には、データのクリーニングによる欠損値の処理、外れ値の削除、特徴量スケーリング、カテゴリカル変数のエンコード、トレーニングやテストセットへのデータの分割など、いくつかの手法が含まれます。これらの手法は、データが ML アルゴリズムで一貫した使用可能な形式であることを保証する鍵となります。

この記事では、機械学習のためのデータ前処理について知っておくべきこと、そのメリット、手順、例などについて解説します。

データ前処理

データ前処理とは、未加工データを分析やモデルのトレーニングに適した形式に変換することです。データ前処理は、データの欠損値、ノイズ、不整合、外れ値などの問題に対処することで、ML モデルの品質と効率を向上させる上で重要な役割を果たします。

機械学習のためのデータ前処理のメリット

機械学習のためのデータ前処理には多くのメリットがあり、これらのメリットは、データ前処理に伴うステップと同じです。見てみましょう。

1. データ・クリーニング

データ・クリーニングは、機械学習におけるデータ前処理パイプラインの不可欠な部分です。これには、データセットのエラーや不整合を特定して修正し、データが高品質で、分析やモデルのトレーニングに適していることを確認することが含まれます。

データ・クリーニングには、通常、次のようなものがあります。

欠損値の取り扱い

実際のデータセットでは、欠損値は一般的な問題であり、ML モデルの性能に悪影響を及ぼす可能性があります。以下のような方法で欠損値を特定し、対処します。

  • 記述統計や可視化を使用して、欠損値のある列/特徴量を特定します。欠損値の一般的な指標には、NaN(Not a Number)または NULL 値が含まれます。
  • 欠損値が分析やモデルに与える影響を判断します。各列の欠損値の割合と、データセット全体に対する重要性を考慮します。
  • 欠損値の割合が少なく、行や列が重要でない場合は、pandas の dropna() などの方法や他のツールの同様の機能を使用して削除できます。
  • 数値的な特徴量の場合は、平均値、中央値、最頻値補完」(pandas の fillna() メソッド)などの手法を使用して、欠損値を補完できます。カテゴリカル特徴量の場合、最も頻度の高いカテゴリで補完できます。

回帰補完、k 近傍法による補完、他の特徴量に基づいて機械学習モデルを使って欠損値を予測するなど、より高度な補完方法も検討できます。

外れ値の取り扱い

外れ値は、データセット内の他の観測値と大きく異なり、統計分析や機械学習モデルを歪める可能性があるデータポイントです。

以下のような方法で外れ値を検出して処理します。

  • 箱ひげ図、ヒストグラム、散布図を使用して、数値特徴量の分布を視覚化し、外れ値の可能性を視覚的に特定します。
  • 平均、標準偏差、四分位数、四分位範囲(IQR)などの要約統計量を計算します。外れ値は、多くの場合、Q1 ~ 1.5 * IQR または Q3 + 1.5 * IQR を下回るデータポイントとして定義されます。
  • 外れ値の削除は、データ入力のエラーや異常に起因する場合に特に適切である場合があります。統計しきい値に基づくフィルタリング技術を使用して、外れ値を削除します。
  • ログ変換、平方根変換、Box-Cox 変換などの変換を適用することで、データをより正規分布にし、外れ値の影響を軽減します。
  • サポート・ベクター・マシン(SVM)、ランダム・フォレスト、アンサンブル法など、外れ値に対する感度が低い堅牢な機械学習モデルの使用を検討してください。

重複の処理

重複したレコードは、特定のパターンやバイアスを膨らませることで、分析やモデルのトレーニングを歪めます。

以下のような方法で重複を検出して処理します。

  • pandas の duplicated() 関数を使用して、特定の列や行全体に基づいて重複する行を識別します。
  • 重複レコードが冗長で、追加情報を提供しない場合は、pandas の drop_duplicates() 関数や他のツールの同様の方法で削除できます。
  • 重複は、複数のエントリが原因で発生する場合がありますが、一意の識別子を持つ場合があります。重複レコードを区別する一意の識別子やキー列を保持していることを確認します。

これらのステップに従い、適切な技術を使用することで、機械学習タスクのためのデータを効果的にクリーンアップして前処理し、モデル予測の品質と信頼性を向上させることができます。

2. データの正規化

正規化は、データセット内の特徴量の値を拡張および標準化するために使用されるデータ前処理技術です。正規化の主な目的は、値の範囲に差を生じることなく、全ての特徴量値を同じ範囲にすることです。多くの機械学習アルゴリズムは、入力特徴量が同様のスケールで、同様の分布を持つ場合に、優れた性能を発揮するか、より高速に収束するため、これは重要です。

正規化のメリット:

  • モデルのトレーニング中に、大規模な特徴量が小規模な特徴量に勝るのを防ぎます。
  • 勾配降下法などのアルゴリズムは、特徴量が正規化されると収束が速く、トレーニング時間が短縮されます。
  • 全ての値を境界範囲内にすることで、外れ値の影響を軽減します。正規化されたデータは、さまざまな特徴量間で解釈や比較が容易になります。

正規化のテクニック

最小最大スケーリング

  • 式:Xnorm = Xmax − Xmin / Xmax − Xmin
  • 範囲:値を 0~1 の範囲に変換します。

 

例:

Z スコアの正規化(標準化):

  • 式:Xstd = σX/μ
  • 範囲:値を平均 0、標準偏差 1 に変換します。

 

例:

正規化の適用に関するガイドライン

最小最大スケーリング:最小最大スケーリングは、ニューラル・ネットワークやサポート・ベクター・マシンなどの特定の範囲内の入力特徴量を必要とするアルゴリズムに適しています。外れ値はスケーリングに影響を与える可能性があるため、適切に処理されていることを確認してください。

Z スコアの正規化:これは、k-means クラスタリング、線形回帰、ロジスティック回帰などのアルゴリズムに適しています。これにより、平均が0で標準偏差が1の分布が得られ、正規分布したデータを前提とするアルゴリズムに最適です。

スパース(疎)なデータ:疎なデータセット(ほとんどの値がゼロの場合)では、正規化に MaxAbsScaler や RobustScaler などの技術の使用を検討してください。

カテゴリカル・データ:カテゴリカル特徴量については、正規化の前に One-Hot エンコーディングなどの技術を検討し、意味のあるスケーリングを確実にします。

正規化技術の選択は、データの特定の特性と、使用する機械学習アルゴリズムの要件に依存することに注意してください。モデルの性能への影響を実験し、理解することは、正規化を効果的に適用するための重要な要素です。

3. 特徴量スケーリング

特徴量スケーリングは、データセットの独立変数または特徴量の範囲を標準化するために使用されるデータ前処理技術です。特徴量スケーリングの目的は、モデルのトレーニングや分析中に他の特徴量よりも優位に立つことを避けるために、全ての特徴量を同じスケールや範囲にすることです。特徴量スケーリングは、最適化アルゴリズムの収束速度を向上させ、特定の特徴量がモデルに過度の影響を及ぼすのを防ぐことができます。

データ前処理における特徴量スケーリングの役割

特徴量をスケーリングすることで、ML アルゴリズムが全ての特徴量を平等に処理し、より大きなスケールで特徴量に偏向することを防ぎます。また、多くの最適化アルゴリズム(例えば、勾配降下法)が、特徴量スケーリング時により速く収束し、より迅速なモデルのトレーニングにつながるため、収束も強化されます。また、特徴量の大きさの大きな違いによって生じる可能性のある数値の不安定性の問題を防ぐこともできます。最後に、スケーリングにより、モデルの予測に対する特徴量の影響を簡単に解釈できます。

特徴量スケーリングの手法

上記の最小最大スケーリングと Z スコアの正規化に加えて、以下もあります。

MaxAbsScaler:これにより、各要素の最大絶対値がスケーリングされるため、結果として得られる値は -1~1 の範囲になります。テキスト分類やレコメンデーション・システムなど、ゼロの値を保持することが重要な疎なデータに適しています。

RobustScaler:これは、中央値や四分位範囲(IQR)などの外れ値に対して堅牢な統計を使用して、特徴量を拡張します。外れ値や歪んだ分布を含むデータセットに適しています。

特徴量スケーリングの適用に関するガイドライン

以下のような方法で特徴量スケーリングを適用します。

  • データが正規分布に従う場合や、線形回帰、ロジスティック回帰、k-means クラスタリングなどのアルゴリズムを使用する場合は、標準化(Z スコア正規化)を適用します。
  • ニューラル・ネットワークやサポート・ベクター・マシンなど、特定の範囲内にデータが必要な場合は、正規化(最小最大スケーリング)を適用します。
  • テキストデータや高次元の疎な特徴量など、スパース(疎)なデータを扱う場合には、MaxAbsScaler を使用します。
  • RobustScaler は、外れ値や正規に分散されていない特徴量を含むデータセットを扱うときに使用します。

特徴量スケーリングを適用する前に、カテゴリ特徴量(特に順序のないカテゴリの場合)はエンコーディング(One-Hot エンコーディングなど)が必要になる場合があることに注意してください。

4. カテゴリカル・データの処理

カテゴリカル変数は、グループやカテゴリを表し、多くの場合、本質的に数値ではないため、モデルのトレーニング中に次のような課題が発生します。

  • 数値以外の表現:カテゴリカル変数は通常、文字列やラベルで表され、ほとんどの機械学習アルゴリズムでは直接処理できません。アルゴリズムには、トレーニングと予測のための数値入力が必要です。
  • 通常変数と公称変数:カテゴリカル変数には、順序尺度(意味のある順序を持つ)と名義尺度(特定の順序を持たない)があります。順序尺度変数を名義尺度変数として扱ったり、その逆を行ったりすると、モデルの解釈が誤ったものになったり、予測に偏りが生じたりする可能性があります。
  • 次元の呪い:カテゴリカル・データを処理する一般的な手法である One-Hot エンコーディングは、特に多数の固有のカテゴリにおいて、データセットの次元性の向上につながります。これにより、モデルの性能に影響が及び、計算の複雑さが増す可能性があります。

カテゴリカル変数のエンコード方法

カテゴリカル変数をエンコードするテクニックには、次のようなものがあります。

ラベル・エンコーディング:ラベル・エンコーディングは、カテゴリカル変数内の各カテゴリに一意の数値ラベルを割り当てます。カテゴリ間に意味のある順序がある場合の順序変数に適しています。

Python の scikit-learn の例を以下に示します。

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()

encoded_labels = le.fit_transform(['cat', 'dog', 'rabbit', 'dog'])

One-Hot エンコーディング:One-Hot エンコーディングは、カテゴリカル変数内の各カテゴリに対してバイナリ列を作成します。各列は、そのカテゴリの有無を示します。カテゴリ間に特定の順序がない名義変数に適しています。

pandas の使用例を以下に示します。

import pandas as pd

df = pd.DataFrame({'category': ['A', 'B', 'C', 'A']})

one_hot_encoded = pd.get_dummies(df['category'], prefix='category')

ダミー・エンコーディング:ダミー・エンコーディングは One-Hot エンコーディングに似ていますが、線形モデルでの多重共線性の問題を避けるために、1 つのバイナリ列を削除します。これは、1 つのカテゴリが参照カテゴリとして機能する回帰モデルで一般的に使用されます。

pandas の使用例を以下に示します。

dummy_encoded = pd.get_dummies(df['category'], prefix='category', drop_first=True)

カテゴリカル・データの取り扱いに関するガイドライン

カテゴリカル・データを正しく処理するには、次のことを行う必要があります。

変数の種類を理解する:カテゴリカル変数が順序変数か名義変数かを判別し、適切なエンコーディング手法を選択します。

順序の誤解釈を避ける:名義変数に対してラベル・エンコーディングを使用すると、データに意図しない順序が生じる可能性があるため、注意してください。

高いカーディナリティへの対応:固有のカテゴリが多数あるカテゴリカル変数の場合は、頻度エンコーディング、ターゲット・エンコーディング、PCA などの次元削減技術を検討してください。

これは、既に言及した欠損値の取り扱いや数値データの正規化に加えて行われます。

5. 不均衡なデータへの対応

不均衡なデータへの対処は、特に分類タスクにおいてよく直面する課題です。ここでは、一方のクラス(少数クラス)のインスタンス数が他のクラス(多数クラス)よりも大幅に少ない場合に問題となります。不均衡なデータは、モデルのトレーニングや評価に大きな影響を与える可能性があり、多数クラスを優遇し、少数クラスでの性能が低下するバイアスのかかったモデルが生成されることがあります。

不均衡なデータや、データを処理するテクニックに関する重要なポイントは、次のとおりです。

不均衡なデータがモデルの性能に与える影響

不均衡なデータについてトレーニングされたモデルは、少数クラスを無視しながら、多数クラスの精度を優先する傾向があります。これにより、少数クラスの予測において性能が低下する可能性があります。また、精度などの指標は、不均衡なデータセットにおいて誤解を招く可能性があります。なぜなら、高精度は、少数クラスを無視しつつ、多数クラスを正しく予測することに起因する可能性があるからです。精度、再現率、F1 スコア、ROC 曲線下面積(AUC-ROC)などの評価指標は、精度のみの場合と比較して、不均衡なデータセットにとってより有益です。

不均衡なデータを扱うためのテクニック

不均衡なデータを処理する最も一般的な手法は、オーバーサンプリングとアンダーサンプリングです。オーバーサンプリングには、少数クラスのインスタンス数を増やして、多数クラスとのバランスを取ることが含まれます。アンダーサンプリングには、多数クラスのインスタンス数を減らし、少数クラスとのバランスを取ることが含まれます。また、オーバーサンプリングとアンダーサンプリングを組み合わせることで、ハイブリッド・アプローチを取ることもできます。

クラス重み付けもあります。モデルのトレーニング中にクラスの重みを調整して、少数クラスのエラーを多数クラスのエラー以上に罰します。これは、ロジスティック回帰やサポート・ベクター・マシンなど、クラスの重み付けをサポートするアルゴリズムにのみ役立ちます。

不均衡なデータの取り扱いに関するガイドライン

不均衡なデータを処理するには、次のことを行う必要があります。

データの分布を理解する:データセット内のクラス分布を分析して、不均衡の重大性を判断します。

適切な技術を選択してください。オーバーサンプリング、アンダーサンプリング、ハイブリッド技術は、データセットのサイズ、不均衡率、計算リソースに基づいて選択します。

評価指標:精度、再現率、F1 スコア、AUC-ROC 曲線などの適切な評価指標を使用して、両方のクラスでモデルの性能を評価します。

交差検証:交差検証の枠内で技術を適用することで、データ漏洩を回避し、信頼性の高いモデル性能の見積もりを得ることができます。

まとめ

データ前処理は、ML モデルが高品質で適切にフォーマットされたデータについてトレーニングされていることを保証し、モデルの性能、精度、一般化能力に直接影響を与えます。欠損値、外れ値、カテゴリカル変数、クラスの不均衡などの問題に対処することで、データ前処理により、モデルがより多くの情報に基づいた正確な予測を行うことができ、実際のアプリケーションにおける意思決定が向上します。

ML の実践者は、適切なデータ前処理により、データの可能性を最大限に引き出し、ドメイン間のさまざまなアプリケーションに対して、より正確で信頼性の高い予測モデルを構築できます。

しかし、現実世界でこれを実現するには、AI や機械学習を加速し、エンタープライズ AI イニシアチブを前進させるピュア・ストレージのような柔軟なデータ・ストレージ・ソリューションが必要です。

こちらの資料もご覧ください!

09/2024
Seven Key Storage Considerations for Digital Pathology
Explore 7 key considerations your organization should consider when choosing data storage for digital pathology.
ホワイト・ペーパー
4 ページ
ご相談・お問い合わせ
ご質問・ご相談

ピュア・ストレージ製品および認定についてのご質問・ご相談を承っております。ご連絡をお待ちしております。

デモのご用命

ライブデモのご用命を承っております。ピュアがいかにしてデータを成果に変えるお手伝いができるかをご説明します。 

ピュア・ストレージ・ジャパン株式会社

〒100-0014 東京都千代田区永田町 2 丁目 10-3 東急キャピトルタワー 12 階

 

一般: info-japan@purestorage.com

メディア: pr-japan@purestorage.com

03-4563-7443(総合案内)

閉じる
このブラウザは現在サポートされていません。

古いブラウザには、セキュリティ・リスクが存在する場合があります。ピュア・ストレージの Web サイトをより快適にご利用いただけるよう、最新のブラウザにアップデートしてください。