13.4 次元削減

ここまで, 単体の特徴量を別の値に変換する処理を主に説明してきましたが, ここでは単なる変換だけでなく特徴量の次元も変化するタイプの前処理を紹介します. 特徴量次元は増やすよりも減らすことが多いです. 次元を増やしても新たな情報は増えないことが多いですが, 次元を減らすとそれだけ計算量が減ります. よって, 以下で紹介する手法は次元削減と呼ばれます. 次元削減は, 計算量の削減のために, いかに情報のロスを減らしつつ特徴量次元を減らせるかが重要です.

13.4.1 Feature Hashing

カテゴリカル変数の one-hot エンコードは, 単純ですが次元が非常に大きくなることがあります. そしてその中にはあまり意味のない特徴量も多いかもしれません. そこで, 正確さを犠牲に計算量を削減する feature hashing あるいは hash trick と呼ばれる方法が Weinberger et al. (2009) によって考案されています. 本来の提案では, 特徴量のハッシュ変換と SVM におけるカーネルトリックを組み合わせることで計算量を削減するというものでしたが, 現在は SVM でなくても使われています. そのため hash trick というより feature hashing と呼ぶのが適切かもしれません. カーネルトリックを伴わない feature hashing は, 単にカテゴリカル変数を任意のレンジのハッシュに変換してから one-hot エンコードするというものです. 当然ながら, ハッシュのレンジがカテゴリカル変数の濃度より大きければ意味はありませんし, 同じならば one-hot と変わりません. より小さい時はハッシュの衝突が起こるため, 本来の特徴量を正しく表現できなくなります. よって feature hashing とは特徴量の次元の削減と, 当てはまりの悪さのトレードオフを自由に調整するためのテクニックと言えます.

13.4.2 主成分分析 (PCA)

主成分分析 (PCA) は特異値分解 (SVD) と数学的には同等な操作で, 直観的にいうなら「相関の高い特徴量どうしを統合して1つの変数にする」というものです. たとえば通常のL1/L2正則化は特徴量どうしが相関しないという前提条件がありますから, PCA には単に次元を減らす以上の効果があります. PCA は正則化と同様に, 特徴量の標準化が前処理として必要であることに注意してください. より正確に言えば, 各特徴量の分散をそろえる必要があります. PCA は特徴量の分散を最大化する問題を解くことで計算されるため, 特徴量ごとの分散の大きさを揃えない場合, 得られる結果は歪んだものとなります.59

参考文献一覧

Weinberger, Kilian, Anirban Dasgupta, John Langford, Alex Smola, and Josh Attenberg. 2009. “Feature Hashing for Large Scale Multitask Learning.” In Proceedings of the 26th Annual International Conference on Machine Learning - ICML ’09, 1–8. Montreal, Quebec, Canada: ACM Press. https://doi.org/10.1145/1553374.1553516.

  1. 最近の書籍には主成分分析の標準化について触れずに紹介しているものも多いです. もちろん標準化しないほうが結果として良い性能になる場合もあるかもしれませんが, 13.1 節と同じ理由で, 原因の切り分けのためにも基本的に標準化を行うべきでしょう.↩︎