ワンホットベクトルとは?意味・仕組み・活用例をわかりやすく解説

ワンホットベクトルとは?意味・仕組み・活用例をわかりやすく解説

AIの初心者

「ワンホットベクトル」って、どんなものですか? ベクトルということは、数字が並んでいる表現なんですよね?

AI専門家

はい。ワンホットベクトルは、0と1だけでカテゴリを表すベクトルです。例えば「りんご、みかん、ぶどう」を扱うなら、りんごは[1, 0, 0]、みかんは[0, 1, 0]、ぶどうは[0, 0, 1]のように表します。

AIの初心者

それぞれの種類に場所を決めて、当てはまる場所だけを1にするんですね。でも、種類が増えるほどベクトルも長くなりそうです。

AI専門家

その通りです。カテゴリが100個あれば長さ100のベクトルになります。多くの値が0になるため、分かりやすい一方で高次元で疎な表現になりやすい点に注意が必要です。

ワンホットベクトルとは。

ワンホットベクトルとは、1つの要素だけが1で、残りの要素がすべて0になるベクトル表現です。人工知能や機械学習では、文字列やカテゴリ名をそのまま扱えない場面が多いため、カテゴリを数値の並びに変換する必要があります。その代表的な方法がワンホットベクトルです。

ワンホットベクトルの全体像

例えば「りんご」「みかん」「ぶどう」という3種類を扱う場合、各カテゴリに1つずつ位置を割り当てます。りんごなら[1, 0, 0]、みかんなら[0, 1, 0]、ぶどうなら[0, 0, 1]のように、該当する位置だけを1にします。この表現を使うと、カテゴリ同士に本来ない大小関係を持ち込まずに、コンピュータが処理できる形へ変換できます。

まず押さえたいベクトルの考え方

複数の数値をまとめて扱うベクトルのイメージ

ベクトルとは、複数の数値をひとまとまりにして扱うための表現です。数学では向きと大きさを持つ量として説明されることもありますが、機械学習では「データを数値の列として表す方法」と考えると理解しやすくなります。

例えば、店舗にある果物の在庫を「りんご10個、バナナ5個、みかん8個」と表したい場合、[10, 5, 8]というベクトルにできます。文章でも同じように、「りんご」が2回、「バナナ」が1回、「みかん」が0回出てきたなら、[2, 1, 0]のように表せます。

このように、ベクトルは画像、文章、表形式データなどを数値として扱うための土台になります。AIモデルは基本的に数値を入力として計算するため、現実のデータをベクトルへ変換する作業は、機械学習の前処理として重要です。

ワンホットベクトルの作り方

カテゴリをワンホットベクトルへ変換する流れ

ワンホットベクトルを作る手順はシンプルです。まず、扱うカテゴリの一覧を決めます。次に、それぞれのカテゴリへ固定の位置を割り当てます。最後に、対象のカテゴリに対応する位置だけを1にし、それ以外を0にします。

カテゴリ ワンホットベクトル 意味
りんご [1, 0, 0] 1番目のカテゴリに該当
みかん [0, 1, 0] 2番目のカテゴリに該当
ぶどう [0, 0, 1] 3番目のカテゴリに該当

ここで重要なのは、カテゴリの順番を一度決めたら、学習時と予測時で同じ対応関係を使うことです。学習時は「りんご、みかん、ぶどう」の順だったのに、予測時に「みかん、りんご、ぶどう」の順で変換してしまうと、同じベクトルでも意味が変わってしまいます。

また、単純に「りんご=1、みかん=2、ぶどう=3」のように番号を振る方法もありますが、この方法では「ぶどうはりんごより大きい」といった不要な順序関係が生まれます。ワンホットベクトルは、カテゴリを互いに独立したものとして扱える点が特徴です。

ワンホットベクトルが使われる場面

ワンホットベクトルの活用場面

ワンホットベクトルは、カテゴリカルデータを機械学習で扱うときによく使われます。カテゴリカルデータとは、性別、職業、地域、商品カテゴリ、曜日、単語など、数値の大小よりも「どの種類に属するか」が重要なデータです。

自然言語処理では、単語や文字を区別するためにワンホットベクトルを使うことがあります。例えば語彙が1万語ある場合、各単語は長さ1万のベクトルで表され、その単語に対応する位置だけが1になります。これにより、モデルは「どの単語が入力されたか」を数値として受け取れます。

表形式データの分析でも、職業や商品の種類のようなカテゴリをワンホット化することで、回帰モデルや分類モデルに入力しやすくなります。例えば「職業」が「会社員」「学生」「自営業」の3種類なら、それぞれを[1, 0, 0]、[0, 1, 0]、[0, 0, 1]のように変換できます。

メリットと注意点

ワンホットベクトルのメリットは、表現が単純で意味を確認しやすいことです。どの位置がどのカテゴリに対応しているかが分かれば、ベクトルの意味を人間も追いやすくなります。また、カテゴリ同士に不要な大小関係を作らないため、順序のないデータを扱うときに適しています。

一方で、カテゴリ数が増えるほどベクトルの長さも増えます。100種類なら100次元、1万種類なら1万次元です。しかも、そのうち1つだけが1で、残りは0になります。このように大半が0である表現は疎な表現と呼ばれ、メモリや計算量の面で負担になることがあります。

さらに、ワンホットベクトルはカテゴリ同士の近さを表せません。「りんご」と「みかん」はどちらも果物ですが、ワンホットベクトル上では互いに完全に別の位置にあるだけです。意味の近さや関連性を扱いたい場合は、埋め込み表現など別の方法を検討します。

他のベクトル表現との違い

疎なワンホットベクトルと密な埋め込み表現の比較

カテゴリを数値化する方法は、ワンホットベクトルだけではありません。代表的な比較対象として、ラベルエンコーディングと埋め込み表現があります。それぞれの特徴を理解しておくと、データの性質に合わせて選びやすくなります。

方法 特徴 向いている場面 注意点
ワンホットベクトル 該当カテゴリだけ1、残りは0 順序のない少数から中規模のカテゴリ カテゴリ数が多いと高次元になりやすい
ラベルエンコーディング カテゴリに整数番号を割り当てる 順序があるカテゴリ、または番号扱いに強い手法 順序のないカテゴリに使うと誤解を招くことがある
埋め込み表現 カテゴリを短い連続値ベクトルで表す 単語、商品、ユーザーなど関連性を学習したい場面 学習データやモデル設計が必要になる

初心者がまず押さえるべきポイントは、ワンホットベクトルが「カテゴリを区別する」ための表現であり、「カテゴリ同士の意味的な近さを表す」ための表現ではないということです。近さや関係性まで表したい場合は、単語埋め込みや特徴量設計の考え方が関係してきます。

学習・実務でつまずきやすいポイント

実務でワンホットベクトルを使うときは、未知カテゴリへの対応を考えておく必要があります。学習時には存在しなかったカテゴリが予測時に現れると、どの位置を1にすればよいか決められません。そのため、「その他」カテゴリを用意したり、未知カテゴリを無視するルールを決めたりします。

また、カテゴリ数が非常に多い列をそのままワンホット化すると、特徴量の数が急増します。商品ID、ユーザーID、郵便番号のように種類が多いデータでは、ワンホット化が適切かを慎重に判断します。場合によっては、頻度の低いカテゴリをまとめる、埋め込み表現を使う、特徴量を別の粒度に変えるといった工夫が必要です。

もう1つの注意点は、カテゴリの対応表を保存しておくことです。学習時と同じカテゴリ順で変換できなければ、モデルに入力される意味が変わります。ワンホットベクトルは簡単に見えますが、前処理の再現性を保つことが精度や運用の安定性につながります。

まとめ

ワンホットベクトルとは、1つの要素だけを1にし、残りを0にすることでカテゴリを表すベクトルです。順序や大小のないデータを機械学習で扱いやすくするために使われ、自然言語処理、表形式データ分析、分類問題など幅広い場面で利用されます。

メリットは、仕組みが単純でカテゴリを明確に区別できることです。一方で、カテゴリ数が多いと高次元で疎な表現になり、意味の近さを表せないという制約があります。まずは「カテゴリを数値化する基本的な方法」として理解し、データの規模や目的に応じてラベルエンコーディングや埋め込み表現と使い分けることが大切です。

更新履歴

日付 内容
2025年2月2日 初回公開
2026年5月20日 作り方、用途、表現の違いを追いやすい流れに調整