在Weka中使用RBFKernel(C和gamma)优化SMO

时间:2011-12-01 15:22:07

标签: optimization machine-learning classification weka svm

我正在尝试在Weka中使用带有RBFKernel的SMO分类器训练一组~30,000个实例。我正在使用网格搜索来查找参数C和gamma的最佳值。这是我的配置:

weka.classifiers.meta.GridSearch -E ACC -y-property classifier.kernel.gamma -y-min -10.0 -y-max 5.0 -y-step 1.0 -y-base 10.0 -y-expression pow(BASE,I) -filter weka.filters.AllFilter -x-property classifier.c -x-min 5.0 -x-max 20.0 -x-step 1.0 -x-base 10.0 -x-expression I -sample-size 100.0 -traversal COLUMN-WISE -num-slots 1 -S 1 -W weka.classifiers.functions.SMO -- -C 1.0 -L 0.0010 -P 1.0E-12 -N 0 -V -1 -W 1 -K "weka.classifiers.functions.supportVector.RBFKernel -C 250007 -G 0.01"

我让它运行> 9小时没有结果,Weka的状态信息仍为“建立训练数据模型......”。起初我认为网格搜索是问题所在,但是当我尝试使用C和gamma的默认值进行训练而不执行网格搜索时,我得到了相同的结果。我尝试使用PolyKernel而且分类器在几秒钟内被训练(但不在网格搜索中)。

如何让RBFKernel工作(使用默认值并在网格搜索中)?

2 个答案:

答案 0 :(得分:1)

您是否预先处理了您的训练数据?这对RBF内核非常重要。您可以尝试将功能标准化为[-1,1]并再次尝试RBF内核。

答案 1 :(得分:1)

这对我有用:

  • 使用对数步骤 XExpression = pow(BASE,I)XMin = -5XMax = 5XStep = 1XBase = 10(Y相同)。
  • 使用过滤器出于我的目的,我使用DistributionBasedBalance过滤器并将p设置为某个值。
  • 增加执行插槽的数量我将numExecutionSlots设置为4(我的计算机中的核心数)。