機械学習で欠かせない!データの前処理の必要性と方法

機械学習には膨大なデータが必要ですが、一般的には集めたデータをそのまま機会学習に使うのでなく、データの前処理を行ってデータを整えています。

今回は、機械学習欠かせない工程「データの前処理」について、その必要性や方法を紹介します。

データの前処理とは

データの前処理とは、機械学習の元となるデータをAIに学習させる前にデータを加工することです。収集した生のデータを、AIが学習しやすいようにきれいに整える作業と言えます。

なぜデータの前処理が必要なのか?

AIや機械学習というと便利で勝手に学習して賢くなるものという印象を持たれることがありますが、AIが学習するためのデータを用意しているのは人間です。(場合によってはAIが学習データを生成することもありますが、基本的には人が手をかけて細かな調整をしたりしています。)

AIや機械学習はデータを元に結果を導き出すため、学習させるデータの形式やそれが適切かどうかは非常に重要です。しかし、収集したデータが完璧な状態でそのまま使える可能性は限りなく低いです。ほとんどのデータにはエラーやノイズ、欠損値などが含まれていたり、データによってフォーマットが異なることもあります。このようなデータをそのまま機械学習に使用すると学習の精度が下がったり、エラーが出てしまうなどの問題が起こります

そのため、機械学習を行う前にデータを適切な状態に加工するデータの前処理が欠かせません。

具体的な前処理の方法

前処理の方法は収集したデータによって様々ですが、代表的なものをいくつか紹介します。

欠損値の処理

欠損値のあるデータは統計処理ができなくなったり、学習結果に悪影響を与える可能性があります。そのため、前処理をして欠損値への対応を行います。

欠損値の処理方法として最も簡単なのは、欠損値ごとデータを削除する方法です。しかし、データを削除しすぎることで学習の信頼性が失われる場合もあるため、データを削除するのは欠損値の数が少ない場合のみです。欠損値を削除せずに処理する方法としては、欠損値を平均値や中央値、最頻値などの違う値に置き換えて埋める方法が一般的です。

欠損値の表
(引用:https://www.codexa.net/missing_value_python/

外れ値の処理

外れ値とは、測定された値の中で他のデータとかけ離れているものを指します。

他のデータとかけ離れた位置にデータがあることで、全体の平均値や標準偏差に影響を与えてしまいます。それを防ぐために散布図から目視で外れ値を削除したり、箱ひげ図を作成して外れ値を検出するなどの処理を行います。

外れ値のある散布図
(引用:https://www.ipc.shimane-u.ac.jp/food/kobayasi/sanpuzunoigi.htm)
箱ひげ図
(引用:https://cacco.co.jp/datascience/blog/statistics/203/)

定量データの標準化

標準化とは、データを平均が「0」、標準偏差が「1」になるように変換することです。

収集したデータによっては、特徴量の範囲が0~1の場合もあれば-50~+5000の場合もあります。このようにデータによって数値の範囲が違いすぎると、機械学習で影響を受ける値に偏りができてしまい学習がうまくできなかったり、学習により多くの時間がかかる可能性があります。そのため、データの前処理として標準化を行います。

ダミー変数化

文字で表現されたデータ(定性データ)は特徴量として使用できないため、事前に数値に変換する必要があります。

しかし、例えば「朝→1」「昼→2」「夜→3」といった形で数値に変換してしまうと、本来は大小関係がない事柄であっても、朝より夜のほうが大きいという大小関係を持ってしまうことになります。

これを防ぐためにダミー変数化という手法があり、数字ではないデータを「0」と「1」だけの数列に変換します。具体的にはラベルに該当する箇所を「1」、該当しない箇所を「0」として扱うのですが、これにより数値に意味を持たせずにカテゴリとして表現することが可能になります

主成分分析による特徴量の次元削減

特徴量の数がたくさんある場合、機械学習では計算量が膨大になり学習に時間がかかったり、特徴が複雑すぎて学習が進まないということがあります。それを防ぐために特徴量の次元削減を行います。

次元削減とは、データを圧縮したり可視化するためにデータの次元数を減らすことです。次元削減の代表的な手法に主成分分析(PCA)があり、特徴量を抽出することによって、データセット内の特徴量を削減することが出来ます。

データセットが膨大になりやすい機械学習において、データの圧縮は計算資源の有効活用という点で非常に有用です。

まとめ

今回は、機械学習の工程で最も重要で手間がかかると言っても過言ではない「データの前処理」について紹介しました。

このデータの前処理が機械学習の精度に大きく関係しているため、時間がかかってでも調整をすることが重要です。データに合わせて最適な前処理の方法を選択できるスキルが必要ですね。

▼その他、機械学習に関してはこちらの記事も参考にしてください。

何ができるの?機械学習の学習モデル10種類の特徴と活用事例