One-Hot表現とは、カテゴリカルなデータを機械学習モデルが扱えるよう、該当する要素のみを1とし、それ以外を0とした数値の並びへ変換する手法です。自然言語処理や表データの前処理で広く利用されますが、高次元化の課題もあります。
One-Hot表現とは
一言でいうと、カテゴリカルなデータを「0と1のフラグの並び」に変換し、コンピュータが数値として計算できるようにするデータの前処理手法です。
詳しく解説
機械学習アルゴリズムの多くは、文字列やカテゴリ名を直接理解することができず、数値として入力する必要があります。例えば「赤」「青」「緑」という色データを扱う場合、それぞれを[1, 0, 0]、[0, 1, 0]、[0, 0, 1]というベクトルに変換します。この仕組みにより、文字や単語を数値データとして自然言語処理モデルなどの入力に利用できるようになります。ニューラルネットワークにおける分類タスクの正解ラベルや、カテゴリ変数の数値化において非常に重要な役割を果たします。
具体例・使われ方
自然言語処理において、語彙サイズが10,000語ある辞書を想定します。この辞書に含まれる特定の単語を表現する場合、10,000次元のベクトルを用意し、その単語に対応するインデックスの位置だけを1、残りの9,999次元をすべて0にします。また、アンケートの「性別」や「血液型」といったカテゴリカルデータを機械学習モデルに読み込ませる際にも用いられます。
似た用語との違い
カテゴリ変数を単に「赤=1、青=2、緑=3」のように1つの整数値で割り当てる「整数エンコーディング」とは異なります。整数表現では値の大小関係に意味があると誤認される恐れがありますが、One-Hot表現では各要素が独立しているため、不要な大小関係のバイアスを生じさせません。また、より密度を高めた連続値ベクトルである分散表現とも異なります。
注意点
データの種類やカテゴリ数が非常に多くなると、次元数が膨れ上がるという「次元の呪い」が発生し、メモリ消費量や計算コストが急増する点に注意が必要です。特に数万語以上の語彙を扱う自然言語処理では、非効率になるため、分散表現などの代替手法が検討されます。