機械学習では、まずデータを用意し、それを適切なアルゴリズムに与えて学習させる、というプロセスを経るのが一般的です。
しかしその際に、用意したデータをそのままアルゴリズムに与えてうまく学習できることはまれです。実際にはアルゴリズムに入れる前に、データの前処理というものが大抵必要になります。
本記事ではこのデータの前処理について、その概要を説明をしていきます。
データの前処理とは
データの前処理とは、得られたデータを何らかの機械学習アルゴリズムに入れる前に、そのデータに何かしら手を加えることをいいます。
用意した”生”のデータを、アルゴリズムが学習できる、あるいは学習しやすいように”きれいな”データに整える、といったようなイメージです。
以下が、機械学習のフロー全体の中でのデータの前処理の位置付けになります。
データの前処理はなぜ必要?
まず、何らかの手段で欲しいデータが手に入ったとして、そのデータが完璧である可能性はほぼありません。
大抵データ内には欠損、ノイズ、エラー値などがあります。これらは無視してもよい場合もありますが、データの欠けに対しては適切な値で埋めたり、好ましくないデータ値は除いたりする必要があります。
さらに生のデータというのは、今の値の見え方がそのデータの内部構造や関係性を表すのにベストであることは滅多にありません。最大限にそのデータを活用するには、何らかの統計的処理を施す必要があります。
また機械学習アルゴリズム自体にも、利用するデータのフォーマットに相性があります。
例えば、ランダムフォレストはnull値に対応していないので、その値には何かしら手を加える必要があります。ニューラルネットワークに画像を流すときも、大抵流せる画像のサイズは固定なので、大きすぎたり小さすぎたりする画像はリサイズする必要があります。
以上のような理由から、機械学習アルゴリズムに与える前に、事前に得られた生のデータをできるだけ構造や関係性がつかみやすく、かつ機械学習アルゴリズムが学習しやすいような形に整えてあげる必要があるのです。
データ前処理のテクニック
それではデータの特徴量を整える手法をメインに、具体的なテクニックをいくつか紹介します。
ここで紹介するテクニックは、広く色々なデータに使われるものです。
Rescaling
各特徴量の値の幅を揃えることをいいます。共通のスケールで、公平に特徴量を比較できるようにするために行われる処理です。ニューラルネットからKNNまで、幅広いアルゴリズムに有効です。
具体的な計算処理としては、[math]Xmax, Xmin[/math]をそれぞれ特徴量[math]X[/math]の最大値、最小値、σを各特徴量の標準偏差とした
- [math]Xnorm=X-Xmin / Xmax-Xmin[/math] (Normalization(正規化))
- [math]X = X/σ[/math]
があります。
Centering
各特徴量の中心を0に揃えることをいいます。各特徴量において、平均を計算し、それを各値から引きます。結果としてどの特徴量でもデータの平均値は0となります。
計算式は、μを各特徴量の平均として
- [math]X=X-μ[/math]
です。
Standardization/規格化
RescalingとCenteringの組み合わせです。各特徴量でデータの平均値が0、標準偏差が1となるようにします。結果、データは標準正規分布(標準ガウス分布)というアルゴリズム側が扱いやすい分布に従うことになります。
計算式はRescalingとCenteringの組み合わせの
- [math]X=(X-μ) / σ[/math]
です。
以下にCenteringとStandardizationのイメージ図を載せておきます。
Principal component analysis (PCA)
データ内の重要な(分散の大きい)特徴量のみを取り出す処理です。特に線形回帰に有効となります。
今後PCAをテーマにまた別で記事を書く予定なので、詳しくはそちらを参照してください。
Independent component analysis (ICA)
データ内の独立した特徴量を取り出す処理です。例としてはAさん・Bさん・Cさんの混声合唱の音声シグナルから、Aさんの歌声・Bさんの歌声・Cさんの歌声のシグナルを分けるといったような処理があげられます。
特徴量間の独立性を仮定するNaive Bayesアルゴリズムに特に有効です。
Naive Bayesアルゴリズムの解説は機械学習入門者向け Naive Bayes(単純ベイズ)アルゴリズムに触れてみるをご覧ください。実際にJupyter Notebook上でプログラムを書きながら学ぶことができます。
以下に、PCAとICAでデータのどの特徴量(軸)を取り出すことになるのかのイメージ図を載せておきます。
PC1, 2及びIC1, 2は図のようなデータ点群にPCA及びICAを適用したときに取り出される軸になります。
PCAではその軸方向から見たときにデータの分散(散らばり度合い)が大きくなるように、ICAではできるだけ多くのデータがその軸に沿うように、軸が選ばれていることがわかります。
まとめ
ここでは機械学習での重要なプロセスの1つ、データの前処理について説明してきました。
このデータの前処理は、データの種類によってもまたそれぞれ独自の手法があり、詳細に見ていくと内容も広範になりがちです。
しかし全般的に適切なデータの用意はアルゴリズムのパフォーマンス向上には欠かせません。データの前処理を制するものは機械学習を制するとも言えるかもしれません。
関連記事
【機械学習入門】 クラスタリング
【機械学習入門】 教師あり学習と教師なし学習
【機械学習入門】深層強化学習の基礎
Avintonエンジニア育成アカデミー
*Avintonアカデミーは機械学習コンテンツも揃っています。
あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?
社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?