データ前処理の手法と手順 - MATLAB & Simulink

データの前処理

データ前処理とは

データ前処理は、生データをクリーニングおよび変換して、解析とモデル化に適したデータに整えるタスクです。前処理の手順には、データクリーニング、データ正規化、およびデータ変換があります。データ前処理の目的は、下流工程の解析およびモデル化の精度と効率性の両方を向上させることです。

生データは多くの場合、解析において誤った結果につながる可能性のある欠損値と外れ値を含んでいます。MATLAB® を使用すると、欠損データの補完、外れ値の除去、平滑化など、データ前処理の手法を適用して、振幅、周波数、周期性の性質などの属性を可視化できます。

MATLAB でプロットされた欠損値と外れ値を示す折れ線グラフ。

欠損値と外れ値を含む生データの MATLAB プロット。

欠損データの補完や外れ値の除去など、データ前処理の手法を使用した平滑化の前と後のデータを示す MATLAB プロット。

元のデータと smoothdata 関数の適用により前処理されたデータ。(MATLAB コードを参照してください。)

データ前処理の手法

データ前処理の手法は、データクリーニング、データ変換、および構造演算の 3 つの主要なカテゴリにグループ分けすることができます。これらの手順はどの順番でも行うことができ、反復して行うこともできます。

データクリーニング

データクリーニングは、以下のような手法を使用してデータセットの異常に対処するプロセスです。

  • 外れ値の管理: 外れ値を特定して除去するか、または統計的な推定値に置き換えます
  • 欠損データの補完: 欠損していたり無効になっていたりするデータ点を特定して、内挿値に置き換えます
  • 平滑化: 移動平均、線形回帰、およびより専門的なフィルタリング手法などの技術を使用して、ノイズをフィルター処理で除去します
欠損値とデータ前処理の必要性を強調表示している 24 時間にわたる太陽放射照度の折れ線グラフ。

欠損値を含む、太陽放射照度の生データセットの時系列プロット。

データ前処理後、太陽放射照度データの MATLAB プロットは、生データセットの欠損値が補完されたことを示します。

fillmissing 関数を使用して欠損値を補完するよう前処理された太陽放射照度のデータ。(MATLAB コードを参照してください。)

データ変換

データ変換は、以下の演算を使用してデータセットを望ましいフォーマットに変更するプロセスです。

  • 正規化および再スケーリング: さまざまなスケールのデータセットを均一のスケールに標準化します
  • トレンド除去: 多項式トレンドを除去して、データセットの変動の可視性を高めます
トレンド除去が適用されると、トレンドバイアスが排除され、トレンド除去されたデータはトレンドラインに従わなくなります。

生データ、そのトレンド、detrend 関数を使用してトレンドバイアスを排除するよう前処理されたバージョン。(MATLAB コードを参照してください。)

構造演算

構造演算は多くの場合、データセットの結合、再編、および分類に使用され、以下を含みます。

  • 連結: 共通のキー変数を使用して行により 2 つの table または timetable を結合します
  • スタックおよびスタック解除: 多次元配列の形状を変更して、table のデータを統合または再分散することで解析を容易にします
  • グループ化およびビン化: データセットを再編して、有益な洞察を抽出します
  • ピボットテーブルの計算: 大規模な表形式データセットをサブテーブルに細分化して、的を絞った情報を得ます

データ前処理およびデータ型

データ前処理の手順は、データ型に応じて異なる場合があります。以下は、さまざまなデータ型で利用可能な 3 種類のデータ前処理手法の例です。

時系列データ 表形式データ 画像データ
欠損値の除去、フィルター処理、平滑化、および異なる時間ステップでのタイムスタンプ付きデータの同期など、さまざまなデータ前処理のタスクを実行できます。 table のデータが乱雑な場合は、さまざまなデータ前処理の手法を使用して、欠損値を補完したり除去したり、行や変数を別の順番に並べ替えたりして、table をクリーニングできます。 データ前処理は、AI などの画像を扱うアプリケーションで役立ちます。画像をサイズ変更またはトリミングしたり、ディープラーニング モデル用の学習データ量を増やしたりすることで、データを前処理することが可能です。
タイムスタンプ付きデータの前処理と探索 table 内の乱雑および欠損データの整理 ディープラーニング向け画像の前処理

データ前処理のベストプラクティス

データ前処理は、何にでも使える手法ではありません。データの特性、機械学習アルゴリズム、解決する問題により、選択すべき手法は異なります。ベストプラクティスは、データ前処理の手法を選択する際に役立ちます。

  • 用途に合わせて手法をカスタマイズする: 適切なデータ前処理の手法を選択することは、信頼性と精度の高い結果を達成するうえで重要です。データ前処理の手法を効果的に実行するには通常、さまざまな用途に合わせてカスタマイズする必要があります。たとえば、金融用と医用画像処理用では手法は大きく異なります。データ前処理の手法を特定の用途にカスタマイズすることで、入力データ内の最も重要な特徴量が強調され、カスタマイズした精度の高いモデルを作成できます。カスタマイズしたこの手法により、解析とモデル化のためのデータの最適な準備が行われ、より精度が高く効果的な結果を導き出します。
  • 影響を評価する: 適切なデータ前処理の手法を使用すると、モデルの精度、効率、解釈可能性を改善できます。ただし、前処理の手法がモデルの精度に悪影響を及ぼす場合もあります。したがって、モデルを構築するプロセス全体を通してモデルの性能を評価することが重要です。データ前処理の手順の影響を定期的に検証することで、調整がモデル全体の性能に好影響を与えていることを確認します。たとえば、医療データ解析では、患者の臨床検査結果の正規化や欠損値の入力などがデータ前処理の重要な手順になります。これらの手法により、各検査結果は予測モデルに等しく寄与し、欠損データや偏ってスケーリングされたデータによって解析にバイアスが生じないため、より精度が高く実用的な知見が導き出されます。

機械学習ワークフローにおけるデータ前処理

データ前処理は、機械学習のパイプラインにおける重要な手順です。データセットをクリーンにして関連性を高め、モデル化用に準備できます。適切に前処理されたデータは、精度が高く関連性があり標準化された入力を提供することにより、機械学習モデルの性能を大きく改善できます。

機械学習のワークフロー: 生データの読み込み、データ前処理、特徴抽出、モデルの学習、モデルの性能評価、予測の実行。

機械学習のワークフロー。

一般にデータ前処理を行うと、機械学習モデルを作成して学習させる前に、さらにいくつかの手順が必要になる場合があります。特徴量エンジニアリングとは、データ前処理の後に、機械学習で使用する特徴量に生データを変換する反復的なプロセスです。これには以下が含まれます。

  • 特徴抽出では、生データを機械学習アルゴリズムに適した情報に変換し、重要な情報を維持して、モデルの性能を改善します。この手順は、画像、信号、テキストなど、固有のデータタイプに関するドメイン知識を活用して手動で行うことができ、またアルゴリズムやディープラーニング ネットワークによって自動化することもできます。たとえば、ウェーブレット散乱は、信号や画像から特徴量を抽出するための自動化された手法で、データからモデル開発へのプロセスを効率化します。
  • 特徴量変換では、既存の特徴量を新しい特徴量 (予測子変数) に変更し、記述力がより小さい特徴量を落とすことができます。MATLAB では、主成分分析 (PCA)、因子分析、t 分布型確率的近傍埋め込み法 (t-SNE) などの手法が利用できます。これらを使用すると、モデルに対して、より有用な特徴量を作成できます。
  • 特徴選択は、次元削減手法の 1 つです。特徴量 (予測子変数) の部分集合を選択し、モデル化に最も高い予測力を提供します。MATLAB は、近傍成分分析 (NCA)、Minimum Redundancy Maximum Relevance (MRMR)、F 検定、カイ二乗による特徴選択など、さまざまな手法をサポートしており、最も関連性の高い特徴量がモデルで使用されるようになります。

さまざまなデータ前処理の手法が、さまざまなタイプの機械学習アルゴリズムに対してカスタマイズされます。これらの手法は、データを機械学習モデルに対して準備する際の基礎となり、さまざまなタイプのアルゴリズムやユースケースで、モデルの精度、効率、一般化可能性を高めることを目的としています。

前処理の手法 目的 適用可能な機械学習アルゴリズム
データクリーニング 欠損データを処理し、外れ値を削除して、エラーを修正する すべてのタイプ
データの標準化と正規化 特徴量をスケーリングして、統一性を実現し、モデルの性能を改善する すべてのタイプ、特にサポート ベクター マシン (SVM) とニューラル ネットワーク
カテゴリカル符号化 アルゴリズムで使用する categorical 変数を変換する ニューラル ネットワーク、決定木、森
特徴量スケーリング 特徴量のスケールを距離計算と収束のために調整する SVM、ニューラル ネットワーク、k 最近傍法 (KNN)
特徴選択変換 モデルの複雑度を軽減し、解釈可能性とモデルの適合度を改善する 決定木、森、回帰モデル
次元削減 変数を削減して最も情報量の多い側面に注力する クラスタリング、PCA

MATLAB によるデータ前処理

適切なデータ前処理の手法は、常に容易に選択できるわけではありません。MATLAB に用意されている対話型の機能 (アプリやライブ エディター タスク) や高水準関数により、さまざまな手法を試してデータにとって適切な手法を簡単に決定できます。異なる構成で繰り返し実行し、最適な設定を選択すると、より詳細な解析のためのデータの準備に役立ちます。

対話型の機能

データ クリーナー アプリを使用すると、コードを記述せずに時系列データを前処理できます。データをインポートしてクリーニングし、欠損データを補完し、外れ値を除去できます。その後、より詳細な解析のために、変更されたデータを MATLAB ワークスペースに保存することができます。また、MATLAB コードを自動的に生成することで、手順を文書化して後で再現できます。

MATLAB のデータ クリーナー アプリを使用した時系列データの探索およびクリーニング。

ライブ エディター タスクは、シンプルなポイント アンド クリック インターフェイスであり、スクリプトに直接追加して特定の操作のセットを実行することができます。これらのタスクを対話的に構成して、さまざまな設定で繰り返し行うことで、用途に最適な構成を特定することができます。データ クリーナー アプリと同様に、MATLAB コードを自動的に生成して作業を再現することもできます。

[欠損データの削除][外れ値データの削除][データの正規化] など一連のライブ エディター タスクの使用により、各手順でデータを可視化することで対話的にデータを前処理できます。

[データの前処理] ツールバーには、データの削除、変化点と極値の検出、トレンドの削除、データの正規化と平滑化が含まれています。

一連のライブタスクが配された MATLAB の [データ前処理] ツールバー

データ前処理のための [外れ値データの削除] タスクのスクリーンショット。入力データを A、クリーニング方法を線形内挿による外れ値の補完、検出方法を中央値に設定。結果のプロットが 2 つの補完された外れ値を示します。

中央値のしきい値で外れ値を検出し、線形内挿で補完する [外れ値データの削除] ライブ エディター タスク。(MATLAB コードを参照してください。)

MATLAB 関数の使用

MATLAB には、データ前処理などの、数学、科学、および工学計算向けに数千もの一般的な高水準の組み込み関数が用意されています。

生データセットを MATLAB で可視化することで、探索を開始できます。たとえば、典型的な 1 日に得られた太陽放射照度のデータセット には、欠損値と外れ値が含まれています。厳しい気象条件では無線テレメトリの送信が妨げられるため、欠陥のある生データが生成される場合があります。

データ前処理の後、太陽放射照度の生入力データの MATLAB 2D プロットは、ラベル付けされた欠損値と外れ値を示します。

欠損値と外れ値を特定した太陽放射照度の入力生データの時系列プロット。(isnan 関数と isoutlier 関数の MATLAB コードを参照してください。)

MATLAB では、5 つの一般的なデータ前処理の手法を、この生の太陽放射照度データセットに適用できます。

データ前処理の手法 MATLAB プロット

外れ値への対処

テレメトリデータ内の異常は、外れ値として示されます。外れ値は、filloutliers を使用して除去します。どの値が外れ値かを決定するために使用する手法や、外れ値のデータ点を置き換える値を推定するための補完手法を指定できます。

欠損データの補完

通信の損失は、テレメトリにおける欠損データの原因となります。fillmissing を使用して、データセット内の NULL 値を推定値に置き換えます。内挿手法や移動ウィンドウをベースとした手法を指定して、欠損値を推定することができます。

データの平滑化

ノイズを含む太陽放射照度データは、smoothdata を使用して除去します。データに最適な平滑化手法を選択および指定できます。

データの正規化

normalize 関数を使用すると、このデータセットでは、ピーク太陽放射照度の 50% を超える量を午前 8 時から午後 4 時の間に得ていることが簡単に確認できます。

グループ化

retime を使用して太陽放射照度のデータを 4 時間間隔でグループ化し、それらの時間範囲における平均太陽放射照度を特定します。

データは乱雑な場合がありますが、データ前処理の手法をデータ品質の改善やより詳細な解析のためのデータ準備に役立てることができます。詳細については、以下のリソースをご覧ください。


ソフトウェア リファレンス


参考: データクリーニング, MATLAB によるデータ解析, MATLAB グラフィックス, 時系列分析