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

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

実務の現場においてモデリング(統計学的・機械学習的問わず)を行う上での注意点を挙げてみる

気が付いたら僕がデータ分析業界に身を置くようになってそろそろ5年近くになるんですね*1。この5年間の間に色々勉強したり業界内で見聞してきた経験をもとに、「実務の現場においてモデリングを行う上での注意点」についてだらだらと書いてみようと思います。


と言うのも、色々な現場で様々なモデリング統計学的にせよ機械学習的にせよ)が行われていることが伝わってくるようになった一方で、ともすれば「え?こんな基礎的なポイントも守ってないの?」みたいなとんでもないモデリングがまかり通る現場があると愚痴る声を業界内で聞くことが少なくないので。自戒の意も込めて重要なポイントを備忘録としてブログ記事にまとめておくのも有益かなと思った次第です。


この記事では手法選択(線形・一般化線形・ベイズMCMC・識別関数・識別モデル・生成モデル・樹木モデル・Deep Learning etc.)の話題は割愛しました。一般に、モデリングの多くは手法選択以前のメタな問題設定の部分でそのクオリティが決まってしまいがちなので、そちらをこの記事では重視しています。ただし、時系列データだけはそうもいかないため若干手法ドリヴンな問題提起をしています。


あ、いつも通り炎上ラーニング上等(笑)で書いてますので、僕よりずっともっと詳しい方々*2からのマサカリを心よりお待ちしております。多分どこかしら間違っていると思いますので、皆様の集合知を頼りにより良くより正しい内容に改めていければ有難いです。

*1:つまり5歳近く歳取ったわけで。。。

*2:特に経済学クラスタの方々

続きを読む

統計的因果推論(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:昨年移籍して現在同じ会社にいるのだと知りました笑

続きを読む