feature hashing
100個の(例えば)単語を0,1の出現でパターン化することを考えると、100個の特徴量で、2^100=30(10の)桁となる。
特徴量の数を一定数に絞りたい。どうするか?
例えば、文が複数あり、10このパターンに絞りたい。どうする?
単語ごとに、ハッシュ関数に与えて、その値の剰余を使って、0~9のいずれかに。
その観測値の行(文1つで)で、それらの単語の0-9のレベル別のカウントして、文としての10次元の頻度数のベクトル作成
これを、類似度計算に使っても良いし、この10次元を、10個の特徴量として、データ行列に加えても良い?
(ここでは)単語に関する洞察?は得られないが、機械学習なら目指す誤差の最適化には支障ない。
実際に手を動かしてないし、数式もよめてないけど、、こんな理解でよいかな。
高次元ベクトルを、低次元ベクトルに精度の低下をある程度まで甘受しつつ、計算量、メモリの制約を回避できる.
カーネルトリックとのアナロジー??
scikit-learn, azureにも関数が用意されてる。
Can you explain feature hashing in an easily understandable way? - Quora
ここのluisの説明を端折って読んだだけだが、、
PFI Seminar 2012/03/15 カーネルとハッシュの機械学習
通常ハッシュ関数というと、単射な変換というイメージだが、何かの性質を保ちながら低次元につぶすという拡張(逆で見ると通常が特殊)
近似のメトリックスとしては、期待値、分散などがある?
scikit-learnのFeatureHashingの実装についてメモ - ysk24ok.github.io
ケンタテクブロ: Azure Machine Leaning の Feature Hashing で日本語を試してみる
kaggleのMercari Price Suggestion Challengeでシルバーメダルを獲得する際に行なったこと 概要〜前処理 - Qiita
TF-IDFの利用と、feature hasingが代替するケース。(詳細はわからずだけど)
#encoding
TF-IDF
#ml