scikit-learn + RandomForestの性能評価 part2
はじめに
前回は均質なデータに対する性能評価だったので、今回はバラツキのあるデータに対して学習を行った。
使用したデータは前回と同じくmnist
前回はそれぞれの文字に対して2000サンプルずつ抽出したが、
今回は0から順に,1100,1300,1500,1700,1900,2100,2300,2500,2700,2900サンプルずつ抽出を行った。
テストデータは同じく10000の均質なデータ。
変化させる変数は
- 木の数
- 探索の深さ
- featureの数
の3種類。
実験
木の数
まず、木の数について、10、100、1000、10000の4種類に変化させる。
前回の一番精度がいい値が0965?くらいだったことから見ても、精度は若干下がったが、傾向は同じ
1000くらいあったら十分かなという感じ
探索の深さ
次に深さの探索について、
これは前回同様2~20まで変化させて学習。
木の数は1000、featureの数はsqrt(features)
結果は下の図
これも前回と同じ、精度もほぼ変わらない、深くまで探索しても過学習は起こしていない。
featureの数
最後にfeatures
10から55まで変化
木の数は1000、depthはmaxで固定
sqrtの時が28なので、それよりも少なめの方が今回は精度がいい?
ただ、0.001のオーダーの違いなので、20以上だったら大差ないとも言えるかも。
比較実験
最後に比較のためにSVMでやった結果
RBFカーネルでC=1.0, gamma=1/784
- one-versus-one: 0.932
- one-versus-all: 0.920
やはり、RamdomForestの方が精度がいいが、
SVMは前回よりも精度が上がった・・・?
ランダムにサンプリングしていることを考慮すればあり得ることだが、
RandomForestの方は0.05ほど精度が下がったことを考えると、
もしかしてSVMの方がデータのばらつきに強い・・・?
MNISTは精度が高すぎるからあまり評価できない・・・