以下の本を読みます。キャラクターは架空のものです。解釈の誤りは筆者に帰属します。お気付きの点がありましたらコメント等でご指摘いただけますと幸いです。
機械学習のための特徴量エンジニアリング ―その原理とPythonによる実践 (オライリー・ジャパン)
- 作者: Alice Zheng,Amanda Casari,株式会社ホクソエム
- 出版社/メーカー: オライリージャパン
- 発売日: 2019/02/23
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
5章は「カテゴリ変数の取り扱い」というタイトルですね。以前参加した Kaggle のコンペティションでも「職業」というカテゴリ特徴があって「会社役員、会社員、…」といったカテゴリ値があった気がします。83ページの Effect コーディングというのは初めて聞きました。これ、サンフランシスコのデータの予測値が 、ニューヨークのデータの予測値が 、シアトルのデータの予測値が になるということですか。だから切片 が全体平均になると。
正確にいうと、「サンフランシスコのデータとニューヨークのデータとシアトルのデータを等しい重みで平均した値」だと思うな。元データ中にカテゴリ値の偏りがあったら はそのデータ全体の平均ということにはならないはず。
84ページの最下部の「参照カテゴリに対する各カテゴリの相対的な影響をエンコードすることは」という箇所を読んでイメージが湧きました。ダミーコーディングにおける は、ニューヨークを原点にとったときの各カテゴリ値の特徴量なんですね。確かに、「なぜニューヨークが原点なのか」という感じはしますね。決定木のような原点の場所がどこかということは何も関係ないモデルでは関係なさそうですが。5.2.1節の特徴量ハッシングというのは、ランダムにカテゴリ値をまとめてしまうということですよね…例 5-3 のコードでは、おそらくレビュー文章か何かの単語列(word_list)を、m 次元の数値ベクトルに変換していますね。単語毎にベクトルのどの成分をインクリメントするかは、その単語の生のハッシュ値を m で割った余りで決めています。例 5-4 の方は似ていますが、インクリメントするかデクリメントするかもまたハッシュ値で決めています。こうすると大きなバイアスが発生しない?? どういうことでしょう。
ちょっと例を考えてみようか。元々単語のユニーク数が9個だったとする。この時点でじゅうぶん少ないけどあくまで例だからね。いま手元の2つの文章を、どの単語IDが何回現れるかで9次元にエンコードしたとする。仮に以下のような感じになったとする。
- 文章X:
- 文章Y:
- 文章X:
- 文章Y:
- 文章X:
- 文章Y:
確かに bag-of-words ではコサイン類似度などで類似度が測られるのでしたっけ。次元を圧縮したいからといって内積が保たれない表現にしてしまっては台無しですね。元々の bag-of-words は「意味が近い文章どうしは距離が近くなっている」がゆえに文章を表現する特徴量たりえたのですから。意味が近くない文章どうしでなくても距離が近い表現など、適切な特徴量とはいえません。5.2.2 節は、カテゴリ毎の何かの最小値や最大値などでもよいのでしょうかね。94ページの最小カウントスケッチというのは? これはレアではないカテゴリも含めて 種類の 値へのマッピングを用意するということでしょうか。そして最小値を正式に採用する? うーん、やり方はわかるんですが、ハッシュ関数を 個にすると結局何がよかったのかとかなぜ最大値などではなく最小値をとるのかとかよくわかりません…。
Count-Min Sketch の原論文の [Cormode & Muthukrishnan, 2005] というのはおそらく以下の記事にリンクがあるものだね。
上の文書の3ページに書いてある手続きは本の94ページと全く一緒だ(絵も似ているね)。 のテーブルに合計 のカウントを加えるなら、この手続きによるアイテム のカウントの推定値は 以上の確率で誤差 以内になるらしい。理由は簡単だね。1つの行にのみ着目すると、アイテム が入っているマスに他のアイテムのカウントがどれだけ混入するか(誤差)の期待値は だ。となると、マルコフの不等式より、誤差が 以上になる確率は 以下だ。これが 行あるから、全ての行で誤差が 以上になる確率は になる。そうか、「余計なアイテムのカウントが一番小さいマスを選びたいのだ」という気持ちであれば最小値を選ばなければなりませんね。統計量が何かのカウントであるとは限らないと思いますが。
95ページの一番下の段落はどういう意味でしょうか。「任意のデータ点の有無によって統計量の分布がほぼ変わらない」?
音楽を推薦するモデルをつくるのに、アーティストを特徴量にしたいけど、アーティストはきっと多いからそのままカテゴリ値として扱いたくない。だから、「レディー・ガガ」というカテゴリ値の変わりに「レディー・ガガの曲の再生回数の全ユーザ合計」のような連続値にしたい。けど、1人だけ異様にレディー・ガガの曲を再生しているユーザがいたらよくない。任意のユーザを抜いたとしても、あらゆるアーティストの再生回数合計の分布が変わらない必要がある、ということかな…いや、任意のアーティストを抜いても分布が変わらない、かもしれないかな…もしレディー・ガガだけ再生回数が断トツで多かったら、どのユーザにもレディー・ガガばかり推薦されることになっちゃいそうだし…。
そんなに再生回数が多かったらもう万人にレディー・ガガを推薦しておけばよくないですか?
個々のユーザの嗜好を予測しようとして??
6章に入りますね。 特異値分解ですか…以前に特異スペクトル変換法で扱いましたね。
式 6-6 から式 6-7 はこうですね。以下に ZCA をやっている記事があったよ。一番下の方に画像があるね。