先日、CNNを使ってシータ、キキ、ナウシカの画像を分類しました。今回はAutoMLのpycaretを使って同じものを分類してみました。
pycaretでさらさらとコードを書くつもりが、pycaretが動きません。処理中のバーが途中で止まって、30分経ってもピクリとも動きません。原因はデータのサイズ。横300×縦162×奥行き3の約15万の特徴量を持つ訓練用画像が420枚あって、処理が遅い。もっとデータ数が多いことはざらにあるのですが...。
そこでデータサイズを縦横をそれぞれ10分の1にして、特徴量を横30×縦16奥行き3の1440にギュッと圧縮。これで何とか、サクサクとまではいかないものの、ズルズル程度には進められます。
pycaretの分類ではここに出ているモデルから選んで、あるいは複数組み合わせて使います。今回はチューニング前で最も成績の良いlightgbmの1点張りで、パラメータチューニングしていきます。パラメータチューニングするとはいえ、「チューンしてね」みたいなコードを1行書くだけでpycaretがやってくれます。もうグリッドサーチとかoptunaする必要ないのね。
最終的なモデルの精度は0.7748となり、CNNを使った時の精度0.8116を少しだけ下回りました。しかし画像のサイズを10分の1に縮小したデータからの結果であることを考えると、どうなんでしょうか。
保育園児が体重190キロの照ノ富士並みに強い・・・考えただけで恐ろしいです。
まあいいや。結果を比較すると
pycaretのlightgbm
正解 予測
シータ キ キ 4
シータ 34
ナウシカ 2
キキ キキ 44
シータ 10
ナウシカ 4
ナウシカ キキ 2
シータ 6
ナウシカ 32
CNN
正解 予測
シータ シータ 30
キキ 5
ナウシカ 5
キキ シータ 7
キキ 51
ナウシカ シータ 9
キキ 51
シータはpycaretの勝ち、キキがCNNの勝ち、ナウシカがほぼ同じ(僅差でCNNの勝ち)。
CNNのパラメータをきっちり仕上げて0.9台の精度を出さないと、うかうかしていると負けてしまいますね。