データ分析や機械学習を始めたばかりの方にとって、カテゴリ変数の処理は意外と悩ましいです。特に「ダミー変数化(One-Hot Encoding)」や「ダミートラップ(Dummy Variable Trap)」という言葉に戸惑う方も多いのではないでしょうか?
この記事では、ダミー変数化とダミートラップについて、初心者でも分かりやすく解説します。さらに、Pythonのコード例とヒートマップを用いて、実際のデータ処理の流れを丁寧に紹介します!
ダミー変数とは?
ダミー変数(Dummy Variable)とは、カテゴリ変数を数値データに変換する方法の一つです。カテゴリ変数は文字列やラベルで表現されるため、機械学習モデルではそのまま利用できません。そこで、各カテゴリを0か1の数値に変換することで、モデルが扱いやすい形にします。
例
性別データが「男性」と「女性」の2種類ある場合:
性別 | ダミー変数(男性) | ダミー変数(女性) |
---|---|---|
男性 | 1 | 0 |
女性 | 0 | 1 |
ダミー変数化(One-Hot Encoding)
ダミー変数化は、カテゴリ変数を複数の0と1で表現する方法です。Pythonでは、pandas
のget_dummies
関数を使うと簡単にダミー変数を作成できます。
import pandas as pd
# サンプルデータ
data = {'性別': ['男性', '女性', '男性', '女性', '女性']}
df = pd.DataFrame(data)
# ダミー変数化
df_dummies = pd.get_dummies(df, columns=['性別'])
print(df_dummies)
実行結果
性別_女性 性別_男性
0 0 1
1 1 0
2 0 1
3 1 0
4 1 0
ダミートラップ(Dummy Variable Trap)とは?
ダミートラップとは、ダミー変数化の際に全てのカテゴリをそのまま使うことで、多重共線性が発生してしまう問題です。多重共線性とは、説明変数同士が強く相関してしまう状態で、回帰分析などのモデルで問題となります。
例
性別の「男性」「女性」を両方ダミー変数にすると、以下のようにどちらか一方が分かれば、もう一方も確定します。
性別_女性 | 性別_男性 |
0 | 1 |
1 | 0 |
相関のヒートマップ
カラム間の相関をヒートマップで可視化してみると、お互いに相関係数1で完全に相関していることがわかります。
解決策
1つのカテゴリを削除することで多重共線性を防ぎます。
df_dummies = pd.get_dummies(df, columns=['性別'], drop_first=True)
print(df_dummies)
実行結果
性別_男性
0 1
1 0
2 1
3 0
4 0
これで「性別_男性」が1なら男性、0なら女性と簡単に判断できます!
まとめ
- ダミー変数はカテゴリ変数を0と1に変換する方法です。
- ダミー変数化(One-Hot Encoding)はカテゴリごとにダミー変数を作成する手法。
- ダミートラップは、すべてのダミー変数を使用することで多重共線性が発生する問題。
- 対策として、
drop_first=True
で1つのカテゴリを削除します。 - ヒートマップで相関関係を視覚的に確認するのも効果的です。
Pythonのコードと一緒に理解することで、データ分析の実務でもすぐに活用できるはずです!
ダミー変数とダミートラップをしっかり理解して、より精度の高い分析やモデル作成に役立ててくださいね!