論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
カテゴリ変数
Categorical Variable
基礎統計

🔖 キーワード索引

カテゴリ変数質的変数名義順序エンコーディングOneHot

💡 30秒で分かる結論

カテゴリ変数 ── カテゴリ値を取る変数(質的変数の一種)

📍 文脈 ── どこで出会うか

質問紙、 アンケート、 顧客属性、 商品分類など、 実データはカテゴリだらけ。 正しく数値化しないと機械学習モデルが動きません。

🎨 直感で掴む

3種類の量的データ vs カテゴリ変数:

尺度大小比較差の計算
名義血液型, 性別××
順序満足度1-5×
間隔温度(℃)○(比は×)
比例身長, 所得

📐 定義/数式

OneHotエンコーディング(K個のカテゴリ → K個の0/1列):

【OneHot 例】
色 = "赤" → [1, 0, 0]
色 = "青" → [0, 1, 0]
色 = "緑" → [0, 0, 1]

回帰では K-1個 に減らす(ダミー変数の罠回避)。 sklearn なら drop='first'

🔬 記号を読み解く

名義尺度
大小なし。 例:地域、 性別、 ジャンル
順序尺度
大小あり、 間隔不明。 例:金銀銅、 学年
OneHot
カテゴリ毎に0/1列を作る
Label Encoding
0,1,2,…と整数化。 順序ありに使う
Target Encoding
カテゴリ毎に目的変数の平均で置換。 リーケージ注意

🧮 実値で計算してみる

都道府県(47カテゴリ)の扱い方:

状況により使い分け。 高次元すぎる場合は次元削減か集約を検討。

🐍 Python 実装

最小限のスニペットで動作確認できる例。 公的データ(SSDSE 等)を想定しています。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import pandas as pd
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)

# pandas での OneHot(基準1列削除)
dummies = pd.get_dummies(df['地域'], drop_first=True, prefix='region')
df2 = pd.concat([df.drop('地域', axis=1), dummies], axis=1)

# sklearn 版
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(drop='first', sparse_output=False)
encoded = enc.fit_transform(df[['地域']])
print(encoded[:3])

⚠️ よくある落とし穴

❌ 1. 順序のないカテゴリにLabelEncoding
0,1,2に距離があるかのように学習される
❌ 2. OneHotで列爆発
商品ID 10万件をOneHotすると列爆発。 Embedding等を検討
❌ 3. ダミー変数の罠
基準カテゴリを落とさず全て入れると多重共線性で係数が不定
❌ 4. Target Encodingでのリーケージ
全データでaggregateすると目的変数の情報がfeatureに混じる。 CV内で計算する
❌ 5. 未知カテゴリの扱い
本番で訓練時にないカテゴリが来た時の挙動を設計

📚 関連グループ教材

この用語の全体像を学ぶには、 横断的な教材で文脈を掴むのが効率的です。

🔎 深掘り解説

エンコーディング選択ガイド

状況推奨
順序なし、 少数カテゴリ(<10)OneHot
順序ありLabel Encoding(整数)
多数カテゴリ(10〜100)Target / Frequency Encoding
高カーディナリティ(>1000)Embedding(深層学習)
木モデル全般OneHotなしでもOK(CatBoost等)
線形モデルOneHot必須(drop_first=True)

カテゴリ変数の統計検定

✅ 使う前のチェックリスト

📖 さらに学ぶには

本サイト内

外部リソース

困ったときは

  1. データの可視化(散布図、 ヒストグラム、 箱ひげ図)で異常を確認
  2. サンプルサイズ・欠損・外れ値を確認
  3. 仮定が満たされているか診断(正規性検定、 等分散性検定など)
  4. 類似研究での標準的な手法を確認
  5. 結果を複数手法でクロスチェック(頑健性確認)

🔎 深掘り解説

エンコーディング選択ガイド

状況推奨
順序なし、 少数カテゴリ(<10)OneHot
順序ありLabel Encoding(整数)
多数カテゴリ(10〜100)Target / Frequency Encoding
高カーディナリティ(>1000)Embedding(深層学習)
木モデル全般OneHotなしでもOK(CatBoost等)
線形モデルOneHot必須(drop_first=True)

カテゴリ変数の統計検定

✅ 使う前のチェックリスト

📖 さらに学ぶには

本サイト内

外部リソース

困ったときは

  1. データの可視化(散布図、 ヒストグラム、 箱ひげ図)で異常を確認
  2. サンプルサイズ・欠損・外れ値を確認
  3. 仮定が満たされているか診断(正規性検定、 等分散性検定など)
  4. 類似研究での標準的な手法を確認
  5. 結果を複数手法でクロスチェック(頑健性確認)