feature hashing
100個の(例えば)単語を0,1の出現でパターン化することを考えると、100個の特徴量で、2^100=30(10の)桁となる。 特徴量の数を一定数に絞りたい。どうするか?
例えば、文が複数あり、10このパターンに絞りたい。どうする?
単語ごとに、ハッシュ関数に与えて、その値の剰余を使って、0~9のいずれかに。 その観測値の行(文1つで)で、それらの単語の0-9のレベル別のカウントして、文としての10次元の頻度数のベクトル作成
これを、類似度計算に使っても良いし、この10次元を、10個の特徴量として、データ行列に加えても良い?
(ここでは)単語に関する洞察?は得られないが、機械学習なら目指す誤差の最適化には支障ない。
実際に手を動かしてないし、数式もよめてないけど、、こんな理解でよいかな。
高次元ベクトルを、低次元ベクトルに精度の低下をある程度まで甘受しつつ、計算量、メモリの制約を回避できる.
scikit-learn, azureにも関数が用意されてる。
ここのluisの説明を端折って読んだだけだが、、
通常ハッシュ関数というと、単射な変換というイメージだが、何かの性質を保ちながら低次元につぶすという拡張(逆で見ると通常が特殊) 近似のメトリックスとしては、期待値、分散などがある?
TF-IDFの利用と、feature hasingが代替するケース。(詳細はわからずだけど)