ワンホットエンコーディングとは、カテゴリカルデータを機械学習モデルが処理できる数値データに変換するための手法です。該当する要素を1、それ以外を0とするベクトルで表現し、機械学習におけるカテゴリ変数の数値化に広く利用されます。
ワンホットエンコーディングとは
一言でいうと、カテゴリ変数(文字やラベル)を「0と1のフラグの列」に変換し、機械学習モデルが計算できるようにする前処理の手法です。
詳しく解説
コンピュータや機械学習モデルは基本的に数値を計算対象としますが、実際のデータには「赤・青・緑」や「犬・猫・鳥」のような文字列のカテゴリデータが多く含まれます。これらをそのまま扱うことはできないため、カテゴリの数だけ次元(要素数)を用意し、該当する項目のみを1、残りをすべて0として表現します。これにより、機械学習モデルが等価なデータとして特徴量を正しく学習できるようになるという重要な役割を持ちます。
具体例・使われ方
例えば、「赤」「青」「緑」という3つの色をワンホットエンコーディングする場合、「赤」は[1, 0, 0]、「青」は[0, 1, 0]、「緑」は[0, 0, 1]というベクトルに変換します。自然言語処理の分野では、単語をベクトル化する際にも応用されます。
似た用語との違い
ラベルエンコーディング(整数エンコーディング)との違いとして、ラベルエンコーディングは各カテゴリに「1, 2, 3」といった連番の整数を割り当てるのに対し、ワンホットエンコーディングはカテゴリごとに独立した列を作成します。ラベルエンコーディングでは意図しない大小関係や順序関係が機械学習モデルに誤認される恐れがありますが、ワンホットエンコーディングにはその懸念がありません。
注意点
カテゴリの数(次元数)が非常に多い場合、特徴量の数が膨大になり、メモリ消費量の増大や計算効率の低下を引き起こす「次元の呪い」という問題が生じます。そのため、高カーディナリティな変数に対してはembeddingなどの別の手法を検討する必要があります。