そしてパターン認識といえばビッグデータという言葉を連想する。さらに、ビッグデータを処理する技術は計算速度を重視するであろうという点も最初は思い込みの範囲にあるだろう。
簡単な実験をして当然の結果を再確認したのでメモに残しておこう。使ったデータファイルは尾崎隆『ビジネスに生かすデータマイニング』第8章でとり上げられているもので、自由にダウンロードできる。ソーシャルゲームサービスの継続利用を調べたデータ("ch8_train.txt")である。
本の中ではサポートベクトルマシンとランダムフォレストで継続利用を予測していたが、予測するためなら一般線形モデル(GLM)や樹形図分析(RPARTなど)も役に立つ。そこで処理時間を比較した。
require(rbenchmark)
jikan <- benchmark(
glm(label~.,data=d.train,family=binomial),
rpart(label~.,data=d.train,method="class"),
svm(label~.,data=d.train),
randomForest(label~.,data=d.train)
)
glm(label~.,data=d.train,family=binomial),
rpart(label~.,data=d.train,method="class"),
svm(label~.,data=d.train),
randomForest(label~.,data=d.train)
)
> jikan[order(jikan$elapsed),]
test replications elapsed
1 glm 100 9.21
2 rpart 100 9.36
4 randomForest 100 236.56
3 svm 100 408.38
relative user.self sys.self user.child sys.child
1 1.000 9.19 0.01 NA NA
2 1.016 9.34 0.00 NA NA
4 25.685 225.75 10.57 NA NA
3 44.341 406.60 1.38 NA NA
まあ、これもまた当然の結果であるわけで以下のようにまとめておいた。
- GLMの計算速度が最も速く、RPARTがわずかな差でそれに次ぐ。
- 機械学習の定番ツールであるSVM(Support Vector Machine)とRandomForestは格段に時間がかかる。RandomForestは単純な樹形図を多数回反復する手法だから時間がかかって当然だが、SVMが最も遅い結果は(やってみるまでは)意外に感じるだろう。
- RandomForestやSVMは計算に時間がかかるという欠点がある。にもかかわらず有用であるとされ、定番になっているのは、非線形識別を可能にしていること、それ故に予測力が格段に上がっていることが挙げられよう。即ち、学習能力のレベルが高いという点に要約される。
- ニューラルネットも比較の対象に含めるべきだった。
- 今回のデータの場合、どの程度まで予測力が上がっているか。これを検証したうえでいずれの予測技術を用いるかを選択するべきだろう。
- 上で用いたデータは1万件であるが、ビッグデータサイズになった時に、それぞれの方法がどの程度の頑健性を示すかについては未確認である。
- もちろん上の処理時間はRという特定の処理系によるもので、それぞれの分析手法に本来含まれる特性を反映するものではないと考える余地はある。
何でもそうだが、「パワーアップの代償」は常にあるものだ。
その代償を支払っても、機械学習から人工知能への道筋にあるのは伝統的なモデル推定ではあるまい。『モデルはまず間違っている。しかしあるものは役に立つ』、一昨年に亡くなったGeorge Boxが語ったように、学習して進化するプロセスを内生化した方法がやはり今後の統計分析の本流なのだろう。
とはいえ、CPU能力がもう一段高速化されないとねえ・・・、かつ求めやすい低価格であることも必要か。幼いレベルから人知をはるかに上回るレベルにまで成長できる本格的なロボットが市場に登場する日もすぐそこまで来ているかもしれない。
0 件のコメント:
コメントを投稿