hans

hans

【機械学習】【Python】三、PSO + PCAによるSVMパラメータCとgammaの最適化 ---- 《SVMオブジェクト分類と位置検出》


---------------------【6.27 更新 libsvm 使用方法】-------------------------------------------------------------------

先ず、GitHub からダウンロードし、どのディレクトリにも解凍してください: https://github.com/cjlin1/libsvm

コード内で以下のようにロードしてください:

import sys
sys.path.append('path/to/libsvm/')
from svmutil import *

完了~~~


** コードは GitHub で確認してください。新しいコードは、各イテレーションごとに高速になります。 **

最新のコードの GitHub リンク: https://github.com/HansRen1024/SVM-classification-localization

序文#

前の 2 つの記事と同様に、これもコードの共有と経験の共有の記事です。技術的な問題については詳しく説明しません。コードに問題がある場合は、コメントで質問してください。コードを変更すると、混乱する可能性があるため、以前のコメントも保持されません。うんざり~~~PSO を行う場合は、何度も試してみて、初期パラメータの範囲をできるだけ狭めることをお勧めします。範囲を狭めた後、完全な PSO を 1 回実行してください。最終結果は、最も高い正確性を持つ txt ファイルを探すことをお勧めします。
** 最新のコードは GitHub で確認してください。 **

[PSO+PCA コード]#

(https://github.com/HansRen1024/SVM-classification-localization)

後書き#

おおよそ計算してみましたが、30 個の鳥、50 回のイテレーション。合計で 1+30+(30+30)×50+(1+30)×50 =
4581 回のクロスバリデーションが必要で、各クロスバリデーションでは 3 回の計算が必要です。100 次元にまで次元を削減しても、数時間かかります。また、PSO 自体も局所最適解に陥る可能性があります。そのため、複数のプログラムを同時に実行して、結果の差を確認しました。

** GitHub 上の最新のコードの計算回数は 1+30+30×50+(1+30)×50 = 3081 とずっと速いですよ **

**
もう 1 つの小技は、このアルゴリズムのイテレーションが終わるのを待つ必要はありません。まず、C 値を固定し、gamma 値を小さな範囲で変更し、どの範囲で正確性が高いかを観察します。gamma の範囲が確定したら、C の範囲を探します。このように初期化すると、非常に高いレベルで実行され、最終的な効果もはるかに良くなります。焦っている友達は、イテレーションが終わるのを待たずに、後続の手順でパラメータのセットを見つけることができます。
**

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。