ダミー変数化とワンホットエンコーディングの違いと使い分け
こんにちは。ゆうせいです。
機械学習や統計分析を学ぶ過程において、文字列などのカテゴリ変数を数値に変換する処理に出会う機会は多くあります。代表的な変換方法として、ワンホットエンコーディングとダミー変数化が存在します。名称や処理内容が似ているため混同されやすい処理ですが、生成されるデータの列数や適用すべき分析手法に明確な違いがあります。
この文章では、両手法の基本的な仕組み、具体的な処理の違い、それぞれの利点や留意点について順を追って解説します。
カテゴリ変数を数値化する理由
コンピュータや機械学習の計算アルゴリズムの多くは、文字データを直接計算できません。例えば、血液型のようなA型、B型、O型、AB型というカテゴリデータを扱う場合、数式で扱える数値へ変換する必要があります。
単純にA型を1、B型を2、O型を3、AB型を4と置き換える方法もあります。しかし、この方法では、数値の大きさや順序に意味がないにもかかわらず、計算過程で「AB型はA型の4倍」というような誤った順序関係や間隔がモデルに伝わってしまいます。
意図しない順序関係を持たせずにカテゴリを表現するために、フラグ形式のデータへと変換する手法が用いられます。
ワンホットエンコーディングの仕組み
ワンホットエンコーディングは、カテゴリの種類と同じ数だけ新しい列を作成し、該当する項目に1を、それ以外の項目に0を割り当てる変換手法です。
高校生向け比喩による解説
クラス全員に番号が振られた名簿を想像してください。点呼を取る際、全員分のマス目を用意し、名前を呼ばれた生徒のマス目だけにチェック(1)を入れ、他の全員のマス目を空白(0)にする方式がワンホットエンコーディングです。1箇所だけが有効になるため、One-Hot(1つだけ点灯する)と呼ばれます。
データの変換例
血液型のデータを変換する場合、カテゴリ数が4種類(A、B、O、AB)あるため、変換後も4列作成されます。
- A型の場合:A型列が1、B型列が0、O型列が0、AB型列が0
- B型の場合:A型列が0、B型列が1、O型列が0、AB型列が0
- O型の場合:A型列が0、B型列が0、O型列が1、AB型列が0
- AB型の場合:A型列が0、B型列が0、O型列が0、AB型列が1
ダミー変数化の仕組み
ダミー変数化は、ワンホットエンコーディングと非常に似ていますが、基準となるカテゴリを1つ定め、その基準を除いたカテゴリ数マイナス1個の列を作成する手法です。
高校生向け比喩による解説
先ほどの出席確認において、基準として出席番号1番の生徒をあらかじめ決めておきます。そして、2番以降の生徒のマス目だけを用意します。2番以降の生徒が呼ばれたら該当するマス目にチェック(1)を入れます。もし用意されたマス目がすべて空白(0)であれば、消去法として1番の生徒であると分かります。これがダミー変数化の考え方です。
データの変換例
基準カテゴリをA型と設定した場合、作成される列はA型を除いた3列(B、O、AB)となります。
- A型の場合:B型列が0、O型列が0、AB型列が0(すべて0で表現)
- B型の場合:B型列が1、O型列が0、AB型列が0
- O型の場合:B型列が0、O型列が1、AB型列が0
- AB型の場合:B型列が0、O型列が0、AB型列が1
両手法の違いと使い分け
作成される列の数と、分析モデルにおける計算上の影響に違いが存在します。
列数の違い
カテゴリの総数をK個とした場合、生成される列数は以下のようになります。
- ワンホットエンコーディング:K列
- ダミー変数化:K - 1列
多重共線性(マルチコ)とダミー変数トラップ
線形回帰分析などの統計モデルにおいて、ある変数が他の変数の組み合わせで完全に予測できてしまう状態を完全な多重共線性(マルチコ)と呼びます。
ワンホットエンコーディングで作成したK個の列をすべて足し合わせると、すべての行で必ず合計が1になります。これは、切片項(常に1をとる定数項)と完全に同じ情報を持つことになり、行列計算において逆行列が計算できなくなるダミー変数トラップを引き起こします。
上記の逆行列計算が破綻するため、通常の最小二乗法による重回帰分析では、列を1つ削ったダミー変数化(K - 1列)を用いる必要があります。
各手法のメリット・デメリット
ワンホットエンコーディングのメリットとデメリットは以下の通りです。
- メリット:すべてのカテゴリが等価に1列ずつ割り当てられるため、決定木アルゴリズムや深層学習において特徴量の分岐や重み付けの解釈が直感的になります。
- デメリット:線形回帰分析において多重共線性が発生します。また、カテゴリ数が多い場合に列数が増加し、メモリ消費量が増加します。
ダミー変数化のメリットとデメリットは以下の通りです。
- メリット:ダミー変数トラップを回避できるため、通常の線形回帰分析やロジスティック回帰分析に直接適用可能です。基準カテゴリに対する効果の差として回帰係数を解釈できます。
- デメリット:基準カテゴリをどれにするかによって回帰係数の推定値の意味合いが変化します。また、木構造モデルなど一部の機械学習手法では、基準カテゴリのみが0の組み合わせで表現されるため、対称性が崩れる場合があります。
まとめ
ワンホットエンコーディングとダミー変数化は、どちらもカテゴリ変数を0と1のフラグで表現する手法ですが、列数と適用先のモデルが異なります。
- 線形回帰など行列の逆行列計算を伴う統計モデルを扱う場合は、多重共線性を防ぐためにダミー変数化(K - 1列)を選択します。
- 決定木、ランダムフォレスト、勾配ブースティング、ニューラルネットワークなどを扱う場合は、ワンホットエンコーディング(K列)を選択しても計算上の問題は発生しません。
今後の学習ステップとして、まずは手元の小さなサンプルデータを用いて、カテゴリ数が3つのデータを手作業でK列とK-1列の表に書き起こしてみてください。その次に、Pythonのpandasライブラリに用意されているget_dummies関数の引数であるdrop_firstの設定を切り替え、出力されるデータフレームの列構造の変化を確認すると理解が深まります。
セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。
投稿者プロフィール


