プログラミング 機械学習

【機械学習】標準化についてわかりやすく解説

 

 

プログラミングを学ぶ人「機械学習の標準化って何だろう?」

 

 

こんな方に向けた記事です。

 

今回はPython機械学習でデータ分析をする上で重要な標準化について一緒に勉強していきましょう。

 

復習になりますが、Python機械学習でのデータ分析の流れを簡単に表すと次のようになります。

 

データ分析の流れ

  1. データの読み込み
  2. データの把握
  3. データの前処理
  4. 機械学習予測モデル作成
  5. 予測モデルの評価

 

今回勉強する標準化は3. データの前処理で登場します。

 

この、3. データの前処理でいかにデータを扱いやすく処理しておくかで機械学習予測モデル作成や予測モデル評価などの次のステップが大きく変わってきます。料理でいう食材の仕込みです。

 

数値で表される変数はそのままモデルに入力することができますが、適切な変換や加工を施すことでより有効な特徴量になる場合が往々にしてあります。

 

例えば、ニューラルネットワークなどのモデルは変数同士のスケールの差が大きいと学習がうまくできないことがあります。

 

データの前処理には様々な手法が存在します。今回はその中でも代表的な標準化Min-Maxスケーリングについて一緒に勉強していきましょう。

 

本記事の学習目標

  • データ前処理の必要性を理解する。
  • データ前処理で代表的な標準化・Min-Maxスケーリングを理解する。

 

【機械学習】標準化についてわかりやすく解説

 

先述のように機械学習予測モデルでより良い精度を出すためにデータの前処理は非常に重要です。

 

データを一定の規定に従って加工し扱いやすくすることを正則化と言います。

 

例えば、心不全患者さんのデータを解析する時に身長がmm単位で入力されていて、体重がkg単位で入力されていると数値としては身長が体重の何倍もの値になってしまいます。私たち人間が身長が体重の10倍になっていたら、明らかに常識的におかしいと察することができます。しかし、機械にはその常識はありません。よって機械にもわかりやすい形に変換してあげる必要があります。それが正則化です。

 

今回はその中でも代表的な2つの手法、標準化とMin-Maxスケーリングについて解説します。

 

データ前処理の代表的な2つの手法

  • 標準化
  • Min_Maxスケーリング

 

標準化

 

標準化は変数の平均を0、標準偏差を1にスケーリングすることです。

 

標準化では一般的に線形変換(掛け算と足し算のみによる変換)によって変数のスケールを変更します。

 

標準化を数式で表すと次のようになります。

 

 

このように変数の平均を0に、そして標準偏差を1に近づけていきます。

 

scikit-learnのStandardScalerで標準化を行うことができます。


# 標準化 from sklearn.preprocessing import StandardScaler # 列1(column1)に対して標準化を行う scaler = StandardScaler() scaler.fit(train_x[column1]) # 標準化後のデータで各列を置換する train_x[columns1] = scaler.transform(train_x[column1]) test_x[columns1] = scaler.transform(test_x[column1])

Min-Maxスケーリング

 

変数のスケールをあわせるもう一つの手法にMin-Maxスケーリングがあります。

 

Min-Maxスケーリングは変数のとる範囲を特定の区間(通常は0-1)にスケーリングする手法です。

 

つまり変数の最小値が10、最大値が1000であった時は最小値を0、最大値を1にスケーリングします。

 

数式で表すと次のようになります。

 

 

scikit-learnのMinMaxScalerで標準化を行うことができます。

 

このように変数の最小値と最大値を用いて正則化を行います。

 

# Min-Maxスケーリング
from sklearn.preprocessing import MinMaxScaler

# 列1(column1)に対してMin-Maxスケーリングを行う
scaler = MinMaxScaler()
scaler.fit(train_x[column1])

# Min-Maxスケーリング後のデータで各列を置換する
train_x[columns1] = scaler.transform(train_x[column1])
test_x[columns1] = scaler.transform(test_x[column1])

 

【参考にさせていただきました】

WATLAB

・scikit-learn StandardScaler

・scikit-learn MinMacScaler

さいごに

 

今回はPython機械学習の基本的な考え方である標準化・スケーリングについて一緒に勉強しました。

 

データ前処理でデータを一定の規定に従って加工し扱いやすくする正則化が重要である。

データ前処理の代表的な2つの手法

  • 標準化
  • Min_Maxスケーリング

 

それぞれ概念自体の理解はとっつきにくいと思います。

 

具体例で実際にイメージしながらじっくりと理解していくのが良いと思います。

 

機械学習はプログラミング言語のPythonを用いれば、今持っている自分のパソコンですぐに実践することができます。

 

英語論文になっている手法もしっかりと勉強すれば、自分のパソコンで出来ます。

 

このサイトでは、プログラミングに興味のある医学生、医師のための情報を発信しております。

 

プログラミングの学習方法には大きく分けて、「独学」と「プログラミングスクール」の2つがあります。

 

当サイトでは一貫してプログラミングスクールを利用することをおすすめしています。

 

なぜなら、独学で勉強した私が非常に苦労したからです。

 

また私はプログラミングを学習するにあたり、師匠・メンターのような存在がいました。

 

わからないところは教えてもらっていました。

 

そのような環境でなければ0から独学で勉強するのはとても効率が悪いと思います。

 

詳しくは、プログラミングの独学は難しいです【私の失敗談】で紹介しています。

 

この記事が一人でも多くのプログラミングに興味のある方のお役に立てば幸いです。

-プログラミング, 機械学習

© 2024 医者がプログラミングで世界を変える Powered by AFFINGER5