「one-hotベクトル(ワンホットベクトル)」とは何か?

こんにちは。ゆうせいです。
今回は、機械学習の前処理でとてもよく使われる
「one-hotベクトル(ワンホットベクトル)」とは何か?を、新人エンジニアの方に向けてやさしく解説します。
この「one-hot(ワンホット)」という言葉、最初は「???」となりがちですが、
意味と使い方をきちんと理解すれば、データの前処理がグンとスムーズになりますよ!
結論!one-hotベクトルとは?
カテゴリ(文字やラベル)を、数値ベクトルで表す方法のひとつ
特徴は、「1つだけが1、他はすべて0」というシンプルな構造!
つまり、カテゴリ情報を「0と1のベクトル」で表現し直すことで、
機械学習モデルが理解できる数値の形に変換するんです!
具体例で理解しよう!
たとえば、「曜日」というカテゴリがあったとします。
["月", "火", "水"]
これをone-hotベクトルで表すとこうなります:
曜日 | one-hotベクトル |
---|---|
月 | [1, 0, 0] |
火 | [0, 1, 0] |
水 | [0, 0, 1] |
ポイントは:
- 要素数=カテゴリの数(ここでは3)
- その中で「1つだけが1」、残りは全部0
つまり「そのカテゴリであることを示すスイッチ」のようなイメージですね!
名前の由来:「one-hot」って何?
「one-hot」は英語で:
- one = ひとつ
- hot = アクティブ、スイッチが入っている状態
→ 「1個だけスイッチがONで、それ以外は全部OFF!」という状態をそのまま表しています。
まるでリモコンのボタンのように、1つだけ押されていて他は無反応。それがone-hotベクトルです。
どんな場面で使われるの?
使用例 | 内容 |
---|---|
分類問題のラベル表現 | 正解ラベルを [0, 1, 0, 0, …] の形で表す |
カテゴリ変数の前処理 | 文字情報を数値ベクトルに変換する |
ニューラルネットワークの入力・出力 | 活性化関数や損失関数とセットで使われる |
たとえば、犬・猫・鳥の3クラス分類なら:
- 正解が「猫」なら [0, 1, 0]
- モデルの出力も同じ形にして学習・比較します
one-hotのメリット・デメリット
メリット
- モデルが扱える形(数値)になる
- 意味のない順序や距離を与えずに済む
- 実装が簡単で、解釈しやすい
デメリット
- カテゴリ数が多いと次元が増える(=スパースになる)
- データ量が増えて、計算が重くなる可能性あり
他の表現方法とどう違う?
方法 | 特徴 |
---|---|
ラベルエンコーディング | 「月=0, 火=1, 水=2」など数値に置き換える→ 距離や大小の意味が生まれてしまう(NGな場合あり) |
one-hotエンコーディング | 各カテゴリに1列ずつ → 意味のない数値的順序を防げる |
覚え方のコツ!
- 「ホットなスイッチが1つだけON」
- 「カテゴリごとの旗を1本だけ立てる」
- 「YES/NOを列ごとに表して、YESが1本だけ」
というふうに、「1つだけ選ばれている状態」をイメージすれば、すぐ覚えられます!
今後の学習の指針
one-hotベクトルの意味がつかめたら、次はこんなことを学んでみましょう:
- Python(pandas / scikit-learn)で
get_dummies()
やOneHotEncoder
を使ってみる - ダミー変数との違いを学んで、線形回帰などで使い分けられるようにする
- カテゴリが多い場合の対処法(例:ターゲットエンコーディング、エンベディングなど)を検討する
one-hotは「機械学習が理解できるように、データを“翻訳”する大事なステップ」です。
データ前処理の基礎として、しっかり理解しておきましょう!
生成AI研修のおすすめメニュー
投稿者プロフィール
