渋谷駅前で働くデータサイエンティストのブログ

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

統計的因果推論(5): Platt's scalingで機械学習分類器による傾向スコアを調整してみる

この記事は以下の記事の続きです。

機械学習分類器で算出した傾向スコアを調整する話ですが、最後に課題として残ったのがprobability calibrationによる実践。探してみると前回の記事でもやったisotonic regressionとか色々出てくるんですが、もう一つ出てくるのがPlatt's scaling。これはあのSVMのSMOを提案したPlatt*1がprobability calibrationのために提案しているもので、web上にも幾つか資料があるようです。

https://www.researchgate.net/publication/2594015_Probabilistic_Outputs_for_Support_Vector_Machines_and_Comparisons_to_Regularized_Likelihood_Methods


やってることは極めて単純で、最初の分類確率値の計算をする際に0 / 1の二値への分類モデリングをやるのではなく、

y_+ = \frac{N_+ + 1}{N_+ + 2}, ~ y_- = \frac{1}{N_- + 2}

という別の二値に変換した上で(ただしN_+は正例の数でN_-は負例の数)、これを回帰したモデルで分類確率値を予測させるというだけです。


ということで、サクッとやってみましょう。ただしPlatt's scalingは流石はと言うべきかSVMの研究者が提案したものゆえ、SVMによる傾向スコア(というか分類確率値)のcalibrationのみを念頭に置いたものということなので、SVMの場合のみここでは扱います。その他の分類器による傾向スコアの調整は皆さんご自身でお願いしますということで。

*1:昨年移籍して現在同じ会社にいるのだと知りました笑

続きを読む

『コンピューターで「脳」がつくれるか』は人工知能に興味のある人なら知識ゼロからでも読める入門書

先日Japan.R 2016に大学時代の先輩*1を案内がてら参加したんですが、休憩時間に技術評論社のTさんがご恵贈くださったのがこちらの本。

コンピューターで「脳」がつくれるか

コンピューターで「脳」がつくれるか

著者は以前下記の過去記事でも筆頭にご紹介した@さん。

で、その内容なんですが基本的には初心者向けということもあり、なおかつ僕自身は@さんと同じく機械学習と神経科学双方の知識がある*2ということもあり、僕が書評すると「玄人が素人向けテキストを読んで明後日の方向の論評をする」状態になる恐れがあるかなと思いましたので、あえて機械学習人工知能も全くのド素人のうちの嫁さんに読んでもらいました。その嫁さんからのコメントをもとに、僕自身の感想も交えて書評させていただこうかと思います。

*1:とある会社の経営者です

*2:僕は元々ヒト認知神経科学分野の研究者をしておりました、ボンクラでしたが

続きを読む

統計的因果推論(4): 機械学習分類器による傾向スコアを調整してみる

この記事は以下の記事の続きです。

ご覧の通り、機械学習分類器3種で傾向スコアを算出してみたらおかしな結果になったわけです。この点について、実は後日2点ほどコメントをいただきました。1つはブコメで、

統計的因果推論(3): 傾向スコア算出を機械学習に置き換えてみると - 渋谷駅前で働くデータサイエンティストのブログ

CM接触群と非接触群に分けて、傾向スコアの分布をみてみると、2群のスコアが0.25~0.75でしか重複していません。傾向スコアが0.25~0.75のデータに絞って比較すると、とりあえずは妥当な結論が出ると思います。後は、傾向

2016/10/12 21:46

とのことでした。これは確かにその通りかもということで、試してみる価値がありそうです。一方で半可通のMLerとしては以下の[twitter:@toshi_k_datasci]さんからのコメントも気になったのでした。

ということでRでもprobability calibrationやりたいなぁと思ったんですが、調べても出てこないしこれは自分でRスクリプト書くしかないのかなぁと思っていたらありました。こんな感じです。

{caret}を使えば良いということなので、こちらについてはひとまず同じ{randomForest}を共通して使うことになるランダムフォレストに的を絞ってprobability calibrationを行った上で、傾向スコアを算出し直してみようと思います。


上記二者のどちらについても、前回の記事までで用いていたワークスペースをそのまま利用する前提ですので、この記事から読み始めたという方はお手数ですが過去2回分記事を遡ってRスクリプトを実行しておいてください。

続きを読む