データ前処理機械学習自然言語処理

ワンホット表現

わんほっとひょうげん · One-Hot Representation
4 views

ワンホット表現とは、機械学習や自然言語処理においてカテゴリカルデータを数値のベクトルに変換する手法です。対象のカテゴリに該当する1箇所のみを「1」とし、他を「0」にするベクトルで表します。カテゴリ間の擬似的な順序関係を排除できるメリットがある一方、項目数が増えるとベクトルの次元数が膨大になり、意味の類似度を表現できないという限界もあります。

ワンホット表現とは

ワンホット表現とは、機械学習においてカテゴリデータを数値として扱うためのデータ前処理手法です。特定のカテゴリに該当する要素だけを「1」、それ以外を「0」とするバイナリベクトル(1つの要素だけが「ホット=オン」の状態)に変換し、コンピュータが理解しやすい特徴量を作成します。

詳しく解説

機械学習アルゴリズムの多くは、数値データを前提として設計されています。そのため、テキストデータ(例:「赤」「青」「緑」のようなカテゴリ)をそのまま入力できません。そこで用いられるのがワンホット表現です。この手法では、カテゴリの種類数(語彙数)と同じ長さのベクトルを用意し、該当するカテゴリの位置だけを「1」に、それ以外の位置をすべて「0」にします。例えば、3つの色「赤」「青」「緑」がある場合、赤は [1, 0, 0]、青は [0, 1, 0]、緑は [0, 0, 1] というベクトルに変換されます。このようにして作られたベクトルは、直交しているため、各カテゴリが互いに独立した関係であることを表現できます。自然言語処理の初期の単語表現や、画像分類のラベルデータ、テーブルデータのカテゴリカル変数の変換において、極めて重要な役割を果たしてきました。

具体例・使われ方

具体的な利用例として、自然言語処理における単語の表現があります。例えば、「AI」「学習」「データ」という3つの単語からなる語彙がある場合、「AI」は [1, 0, 0]、「学習」は [0, 1, 0]、「データ」は [0, 0, 1] というベクトルに変換されます。これにより、文字データをニューラルネットワークにインプット可能な数値特徴量に変換できます。また、犬、猫、鳥などの多クラス分類モデルにおける、正解データ(教師ラベル)の表現にも広く使われています。

似た用語との違い

混同されやすい概念にラベルエンコーディングがあります。ラベルエンコーディングは「赤=0、青=1、緑=2」のように単一の整数に変換する手法です。しかし、これでは「緑(2)は赤(0)より大きい」といった本来存在しない順序や大小関係がモデルに誤って学習されるリスクがあります。ワンホット表現は各カテゴリを独立して表現するため、この問題を回避できます。また、単語の意味関係や類似度を低次元の密なベクトルで表現する分散表現(ワード埋め込みなど)とも異なります。ワンホット表現では単語間の「意味の近さ」を表現できませんが、分散表現では「犬」と「猫」を近いベクトルとして表現できます。さらに、複数のカテゴリが同時に選択されるマルチホット表現(例:[1, 1, 0])とも異なります。

注意点

ワンホット表現の最大の限界は、カテゴリの数が膨大になると、ベクトルの次元数も膨大になる点です。例えば、自然言語処理において語彙数が数万から数十万に達すると、ベクトルのほとんどが「0」で埋め尽くされた疎(スパース)な巨大ベクトルになります。これは次元の呪いを引き起こし、メモリの浪費やモデルの計算コストの急増につながります。また、どの2つのベクトルを掛け合わせても値が「0」になるため、カテゴリ同士の「意味の類似度」を全く考慮できないという注意点があります。

更新日時: 2026年8月29日 20:21