統計における標準化の概要
標準化は、データセット内の値を比較可能な形に変換するための統計的手法です。具体的には、元のデータのスケール(範囲)を変更し、平均を0、標準偏差を1に変換する操作を指します。これにより、異なるスケールや単位を持つデータを同じ基準で比較できるようになります。
なぜ標準化が重要か?
比較しやすくなる:
異なるスケールを持つ変数間での比較を容易にします。例えば、収入(ドル単位)と年齢(年単位)のように、異なるスケールのデータを比較する際に、標準化を行うことで同じ基準で分析が可能になります。
機械学習における重要性:
多くの機械学習アルゴリズム(例: k近傍法、サポートベクターマシン、ニューラルネットワークなど)は、変数間の距離に基づいて動作します。標準化を行わないと、スケールの大きい変数が過度に影響を与えてしまうため、標準化は非常に重要です。
データの分布を揃える:
標準化により、異なる分布を持つ変数のデータを揃えることができます。これにより、統計モデルや機械学習モデルの学習が安定しやすくなります。
Pythonのコード全文
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
# データの生成
np.random.seed(42)
data1 = np.random.normal(50, 10, 1000) # 平均50、標準偏差10の正規分布
data2 = np.random.normal(30, 5, 1000) # 平均30、標準偏差5の正規分布
# 標準化の実行
scaler = StandardScaler()
data1_standardized = scaler.fit_transform(data1.reshape(-1, 1)).flatten()
data2_standardized = scaler.fit_transform(data2.reshape(-1, 1)).flatten()
# 元のデータのヒストグラム
plt.figure(figsize=(14, 6))
plt.subplot(1, 2, 1)
plt.hist(data1, bins=30, alpha=0.6, color='blue', label='Original Data 1')
plt.hist(data2, bins=30, alpha=0.6, color='green', label='Original Data 2')
plt.title('Original Data')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.legend()
# 標準化後のデータのヒストグラム
plt.subplot(1, 2, 2)
plt.hist(data1_standardized, bins=30, alpha=0.6, color='blue', label='Standardized Data 1')
plt.hist(data2_standardized, bins=30, alpha=0.6, color='green', label='Standardized Data 2')
plt.title('Standardized Data')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.legend()
plt.tight_layout()
plt.show()
コード実行の結果
ステップ・バイ・ステップでのコードの説明
1. ライブラリのインポート
numpy と matplotlib.pyplot は、データの生成と可視化に使用される主要なライブラリです。
sklearn.preprocessing.StandardScaler は、データの標準化(平均を0、標準偏差を1に変換)を行うために使用されます。
2. データの生成
乱数生成のシードを設定することで、再現性を確保します。
2つの正規分布(平均50、標準偏差10および平均30、標準偏差5)に基づいて、それぞれ1000個のデータポイントを生成します。
3. データの標準化
StandardScaler を使ってデータを標準化します。これにより、データの平均が0、標準偏差が1になります。
標準化のため、データを1列の2次元配列に変換し、標準化後に再び1次元に戻します。
4. ヒストグラムの描画
グラフのサイズを設定し、2つのサブプロットを作成します。
左側のサブプロット: 元のデータをヒストグラムで表示します。
右側のサブプロット: 標準化後のデータをヒストグラムで表示します。
透明度、色、ラベルなどを設定して、ヒストグラムをわかりやすく表示します。
5. グラフのレイアウト調整と表示
tight_layout 関数で、グラフが重ならないようにレイアウトを自動調整します。
最後に、グラフを表示して結果を確認します。
まとめ
このコードでは、2つの異なる正規分布から生成されたデータを標準化し、元のデータと標準化後のデータをヒストグラムで視覚的に比較します。標準化によって、データの中心が0になり、スケールが統一されることを確認できます。