六本木で働くデータサイエンティストのブログ

元祖「銀座で働くデータサイエンティスト」です / 道玄坂→銀座→東京→六本木

企業に移って5年が経ちました

月日が経つのは早いもので、かつてボンクラ研究者だった僕が企業(そしてインダストリー*1)に移ってからちょうど今日で5年が経ちました。インダストリーに移ってからのこの5年間で様々なことを体験し、あるいは見聞し、あるいは決断したりしてきたわけですが、良い区切りなので自分にとってのマイルストーンとするためにも、ここでこれまでの5年間を振り返ってみようと思います。

*1:ここでは「企業社会」「産業界」ぐらいの意味です

続きを読む

異常検知に用いられる1クラスSVMの決定境界をパラメータを変えながら描いてみた

これは前回の記事の補足です。

もう見たまんまで「そもそも1クラスSVMの決定境界を具体的に描画してみたらどうなるんだろう?」という興味を持ったので、漫然と2次元でやってみます。前回の記事同様、1クラスSVMの推定に用いるのは{e1071}パッケージのsvm関数で、type = 'one-classification'と指定した場合。カーネルはガウシアンです。


なお{e1071}のvignetteにも書かれていますが、1クラスSVM ( \nu-SVM)の主問題をおさらいすると以下の通りです。

 {argmin}_{\alpha} ~ \frac{1}{2} \alpha^T \mathbf{Q} \alpha
 s.t. ~ 0 \leq \alpha_i \leq \frac{1}{\nu l}, i = 1, \cdots, l
 where ~ \mathbf{e}^T \alpha = 0

 \nuを大きく(小さく)することで、 \alphaの動ける範囲が狭く(広く)なることが見て取れます。一般に \nuの値は学習データそのものに分類器を適用した場合の陰性率に近くなるらしいので、例えば0.01とかにすると陰性率が1%、逆に0.99とかにすると大半が陰性ということになるようです。

続きを読む

Rで異常検知(3): 非正規データからの異常検知(カーネル密度推定・EMアルゴリズム・K-means・1クラスSVM)

(注:ただの備忘録ゆえ、ほぼ確実に後で追記が出る見込みです)

今回はコロナ社井手本の第3章を取り上げます。

とは言っても全部丸写しするのはさすがに問題があるので、個人的に興味のあるトピックスだけを取り上げて、なおかつあくまでも個人的な備忘録として記する程度に留めておきます。本格的に勉強したい方はちゃんとコロナ社井手本をお求めの上ご自身で独学するようにして下さい。


ということで、今回個人的に取り上げるのは第3章の中のカーネル密度推定とクラスタリングSVMの箇所です。なおコロナ社井手本ではここでEMアルゴリズムそのものの説明もなされていますが、EMアルゴリズム自体はこのブログでも一度取り上げているので既知のものとしてこの記事では取り扱います。

ただし、個人的にはコロナ社井手本p.71に載っている混合モデル+EMアルゴリズムの簡単な実践例は割と親切で良いというか、多分知っている限りで最も分かりやすいEMアルゴリズムの解説だと思うので、EMアルゴリズム自体が初見という人はそこの前後の箇所をよく読んで勉強してみるのをお薦めいたします。少なくとも僕には非常に良い復習になりました。


ちなみに今回の記事はちょっと色々手が回らなかったのもあって結構手抜き気味です。後で追記の形で勉強し直した結果などが加わる可能性がありますので、どうしても気になるという方は後ほど改めてご覧ください。。。

続きを読む