メニュー

Pythonと機械学習であそぼう(LinearSVCによる分類をPCAで高速化してみよう)

2020-05-17 - Pythonと機械学習, プログラミング - programming -
Pythonと機械学習であそぼう(LinearSVCによる分類をPCAで高速化してみよう)

前回は、lfwデータをLinearSVCを使って分類してみました。学習用データは855個だったのですが、学習にかなり時間がかかりました。実際、どのくらいの時間がかかるのか計測して、改善してみたいと思います。

前回は画像データそのままの状態で学習させましたが、分類に必要な情報に情報を削減して、学習させてみたいと思います。

PCAによる次元削減

情報削減するために、PCA(Principal Component Analysis)による次元削減を試してみたいと思います。

今回、元データを95%表現可能な範囲での主成分分析を行ったところ、145個の主成分で表現できるという結果が出ました。主成分145個の上位30個を表示してみましょう。これらのデータの組み合わせで全てのデータが表現されるということでしょうか。

145個の主成分のうち、30個を表示

ちなみに、主成分分析の結果、Bushさんはこんな感じになったということなのかな?

このように、855(データ数)×62(垂直)×47(水平)だったデータ量が855×145(主成分の数)に次元削減れたことで学習の演算量が削減されるはずです。

ライブラリや、GPU環境だとまた違った結果になるのでしょうが、貧弱なローカルマシンのCPUでの実行結果の比較です。

学習用データ数:855個
検証用データ数:285個
入力
62×47の画像
入力
PCA(主成分145個)
PCA分析時間0.530s
PCA変換時間0.044s
LinearSVC学習時間13.549s1.24s
LinearSVC予測時間0.019s0.001s
合計時間13.568s1.815s

かなり高速になりました。

ただ、正解率がかなり下がってしまいました・・・

実行結果はこちら・・・

次回は精度向上できないか?試してみたいと思います。

Pythonと機械学習であそぼう(LinearSVCによる分類をPCAで高速化してみよう)」への1件のフィードバック

  • ピンバック: Pythonと機械学習であそぼう(データ標準化で分類学習の精度を向上してみよう) | ぼちぼちいこらい

  • コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です