野良DBの適当な解説~ぼやっとしたデータは性能が落ちる
最初のQA
質問)機械学習の苦手なデータって何があるの?
回答)対象がぼんやりしていると性能は出ないかな。
解説しよう
まぁ、工業系ではあんまりないんですけど、実世界では対象がぼんやりしていることはよくあります。
わかりやすいのは人間。明日出掛けるか出掛けないかを予測するモデルなんてもの、作ったとしてもぜんぜん性能なんてでないですよね。
人間って、行動とかそういうものががっちり決まっているものじゃないんですよ。かなーりぼんやりしている。だから、性能を出すことはとても難しい。
だったら、確信度で何とかならんか?
うーん、その確信度の計算式をみると、これがまたすげー適当だったりするから、これを元に確率を判断するのは正直辞めた方が良いと思うのですよ。
MLP つくって Softmax 経由させて確信度出せばえーじゃんって何となく思ったりするかもしれませんが、Softmax は別に確率を出すわけではないということを忘れちゃいけない。
ほんとか読むとしれっと確率みたいなことが書いてあるけど、個人的にはそれは誤解を招く表現だと思う。だって、確率に繋がるような式なんて Softmax には入っていない。Softmax は、ただ単にバラバラの信号をまとめ上げて、足すと1になるもっともらしい数値に変換するだけの式だからね。これが出す値が確率だなんて言うのはちょっと問題があるような気がするわけですよ。
だったら、他の手法は?いろんな手法で出しているでしょ?
うん、例えば Random Forest の方がまだ確率に近いような雰囲気はあると思う。枝にある正解の割合がベースだからね。
だから、確信度的な言葉でしれっとまとめているけど、確率だと思って使うんだったら注意した方が良いとは思うのです。
んで、ぼんやりしたデータの予測に戻る
ぼんやりしたデータの予測だと、今ひとつ決定打がないんですよね。つまり、出掛ける/出掛けないという2択だったとしても、もう絶対にいくでしょ?絶対にいかないでしょ?なんてことはあんまりないのは日常生活でも普通にあるしわかりますよね。じゃあどうなの?という訳なのですが、こういう問題は機械学習じゃなくって、普通にBI使って下さいと思うのですよ。んで、大体これぐらいの条件の時はこれぐらい出掛けてましたよという方が正直とっても役に立つのです。ここから、出掛ける割合なんての簡単に求められますからね。
この辺はBIの領域です
まぁ、BI がやるべき領域なのですが、いつのまにか BI はレポート作成用のツールになっちゃったので、データと戯れるという本来の姿からはちょっと外れちゃいましたよね。
いや、もちろん BI が該当機能を失ったわけではないんで、BI 使おうよという話なんだけど、なんか、もやもやしますよね。
人間の行動予測する時って
条件がいくつもあって、その条件の時にどうだった?って話になると思うんですよ。で、こういう、条件が色々変わるケースって、機械学習モデルだとどうにもなんない。
この条件だけ無効にして予測してね!ってお願いできる機械学習モデルって何かあったっけなぁ?多分ないと思うんですよ。
※誰か知っていたら教えてください
つまり、今回予測したい事項に関係ないケースも全部データとして与えないと機械学習モデルで予測することなんて出来ない。
というわけで、勢い色々なモデルを作ることになっちゃうんですよね…
さて、機械学習モデルの利点って何?
BI的に求めようとするとDBスキャンしないといけなくて遅くってたまらないんですが、機械学習使ってモデルに圧縮しちゃえば DB のスキャンやらなくて良いから早くおわる。そんだけです。
だから、今みたいにデータ数が増えても何とか処理できちゃうぐらい PC の性能が向上してきたら、ものによっては機械学習モデルなんか使わなくてもいいと思うんですよ。
そうすると、学習のやり直しとかもいらんですしね。
まぁ、画像データみたいに毎回10万枚のデータと比較せにゃならんとか言われるとモデル作らんとやってられんのですが、1万人のデータからの行動予測とかそんなレベルだったら、もうBIの方が良い。結局、インメモリでそこそこのデータが処理できるようになったから、いちいちモデルにしなくても良いケースって増えてきていると思うんですよ、実際のところ。
とはいえ、ケースバイケースだから、やっぱりモデルにした方が良いケースなんてのもある。この手の議論をするとじゃあモデルはもう要らないのねとか言い出す人が居ていつも困るのですが、ケースバイケースであるという点は昔から変わっていない。その境界線がリソースが大量に使えるようになったことでちょっとずつ動いてきていますよということなんですよ。お間違えなきよう。
個人的に思うのは
世の中道具はいっぱいある。一つの道具でうまく行くなんてことはない。それだけです。プロの人なんか、道具をいっぱい使い分けていますよね。
これは、どの世界でも一緒なんですよ。だから、ちゃんとデータ使って何かしたいなと思ったら、本来は適用する場所に合わせて道具を使い分けていくべきなんですよ。
でも、それが面倒くさいという人の方が圧倒的に多いのも事実。ボタン一つで答えが出るように!なんてリクエストは珍しくもなんともないですよね。
ここは、正直永遠の課題だと思っています。楽が出来るようになるように努力し続けることも必要だし、性能が欲しいならばやっぱり道具を使い分けることにも理解してもらう必要があるわけです。
今回の結論
「機械学習の苦手なデータは、機械学習以外の手段を使うことも考えましょう。」
「昔に比べてPCの性能が格段に上昇したんだから、機械学習以外の解決策も十分実用的になってきたよ。」
覚えときましょう。