忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【DS検定対策】ビッグデータのメモリを救う!「特徴量ハッシング」の仕組み

テキストの単語数やカテゴリ変数の種類が数百万〜数千万個に膨れ上がると、コンピュータのメモリが足りなくなったり学習が極端に遅くなったりします。そんな高次元データを一瞬で圧縮・削減する巧妙な技術が「特徴量ハッシング(Feature Hashing)」(別名:ハッシュ化トリック)です!

1. 【 問題 】

機械学習の前処理において、元の特徴量(単語やカテゴリ)をハッシュ関数に通してあらかじめ決まった固定長のインデックス(番号)に変換し、メモリ消費を抑えながら次元数を削減する手法を何と呼ぶでしょうか?

① 特徴量ハッシング(Feature Hashing / ハッシュ化トリック)
② 主成分分析(PCA:Principal Component Analysis)
③ 埋め込み法(Embedded Method)
④ ラッパー法(Wrapper Method)


2. 【 解答 】

正解: ① 特徴量ハッシング(Feature Hashing / ハッシュ化トリック)

3. 整理:特徴量ハッシングの仕組みとメリット

通常の One-Hot エンコーディングや辞書作成(全単語を記憶する方式)とは異なり、ハッシングには大きな特徴があります。

特徴・仕組み内容
辞書が不要
(メモリ節約)
「どの単語がどの番号か」という全辞書をメモリに保持しておく必要がありません。ハッシュ関数に文字を通すだけで、その場で一意の番号(例:0〜1000のいずれか)に変換されます。
固定長の次元削減 どれだけ新しい単語や未知のデータが増えても、出力先の次元数をあらかじめ「1000次元」や「10000次元」など固定サイズに抑えることができます。

4. 注意点:ハッシュ衝突(Collision)

非常に便利なハッシングですが、致命的なトレードオフも存在します。

・ハッシュ衝突(Collision):
まったく異なる意味の2つの単語(例:「リンゴ」と「みかん」)が、ハッシュ関数によって偶然「同じ番号(インデックス)」に割り振られてしまう現象のことです。

・対策:
出力先の次元数を十分に大きく設定することで衝突確率を下げる、あるいは線形モデルなどの影響を受けにくいアルゴリズムと組み合わせることで実用上問題なく利用されます。

5. DS検定形式:実戦4択クイズ

問:機械学習における「特徴量ハッシング(ハッシュ化トリック)」に関する記述として、最も適切なものはどれか。

① 主成分分析(PCA)と同様に、データから共分散行列を計算して分散の最大化を図ることで新しい直交軸を作り出す教師なし次元削減手法である。
② ハッシュ関数を用いて高次元な特徴量を固定長の小さな空間にマッピング(変換)することで、単語の辞書を持たずにメモリを節約しながら次元削減を行う手法である。
③ 決定木の分岐をハッシュ化して高速に検索するアルゴリズムであり、ランダムフォレストの計算速度を何倍にも高速化する専用の前処理である。
④ 異なる特徴量が偶然同じインデックスに変換される「ハッシュ衝突」は理論上絶対に発生しないため、高精度なテキスト分類に最適である。

【 正解: ② 】

解説: 特徴量ハッシングの目的と仕組みを問う標準問題です。
②が正解です。ハッシュ関数で固定長にマッピングし、メモリを節約しつつ次元を削減します。
①は「主成分分析(PCA)」の説明です。
③決定木の高速化技術ではなく、主に高次元スパースデータ(テキスト等)の圧縮技術です。
④ハッシュ衝突は原理上発生する可能性があります(そのため次元数を適切に大きく取ります)。


6. まとめ

DS検定や資格試験で「ハッシュ関数」「辞書を持たない」「固定長への変換」「メモリ節約・次元削減」「ハッシュ衝突」といったキーワードが出たら、正解は「特徴量ハッシング(ハッシュ化トリック)」です! 主成分分析(PCA)との違い(計算をせず関数で一発変換する点)も含めて整理しておきましょう!

PR