質問: SVMの実装、scikitsの実行時間の短縮、最速のSVM 私はSVMを使っていくつかの予測モデルを構築するscikit-learnを学んでいます。私は約5000の例と約700の特徴を持つデータセットを持っています。私は自分のトレーニングセットで18x17グリッド検索を使って5倍のクロスバリデーションを行い、次にテストセットに最適なパラメータを使用します。ランは私が予想したよりもはるかに長い時間を取っていると私は次のことに気づいた: 1)個々のSVMトレーニングの反復はわずか1分かかりますが、他のSVMトレーニングの反復は15分ほどかかります。これは異なるデータとパラメータ(Cとガンマ、私は `rbf` カーネルを使用しています)で期待されていますか? 2)私は余分なメモリを利用するために64ビットのPythonをWindows上で使用しようとしていますが、私のすべてのPythonプロセスは私のタスクマネージャで1ギガでトップに見えますが、ランタイム。 3)同じデータセットの前に32ビットを使用していましたが、結果は保存しませんでしたが、かなり高速です。私は、32ビットのPythonでこれを試してみるのが良いかどうかわからないので、第三者ビルドのscikit-learnを64ビットウィンドウ用に使用しましたか? (ソース) どのように私がランタイムを減らすことができるかについての提案は非常に高く評価されるだろう。私はグリッド検索の検索スペースを減らすのが助かりますが、最適なパラメータの範囲についてもわからないので、できるだけ大きなものにしておきたいと思います。より高速なSVM実装がある場合は、私に知らせてください。私はそれらを試すかもしれません。 補遺:私は戻って32ビット版をやり直してみました。何らかの理由ではるかに高速です。 16時間で64ビットバージョンに到達するまでには約3時間かかりました。なぜそのような違いがありますか?
回答: libsvmベースのSVCは、 `O(n_features * n_samples ^ 2)`と `O(n_features * n_samples ^ 3)`との間でトレーニングの複雑さがあります。 LinearSVC(liblinearに基づいています)には、複雑なテストの複雑さと `O(n_features)`の複雑さがあります。