在 Weka 中使用 RBFKernel(C 和 gamma)优化 SMO
我正在尝试使用 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 工作(使用默认值并在网格搜索中)?
I'm trying to train a set of ~30,000 instances using an SMO classifier with an RBFKernel in Weka. I'm using grid search to find the optimal values for the parameters C and gamma. Here is my configuration:
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"
I let it run for > 9 hours with no result, Weka's status message remains as "Building model on training data...". At first I thought grid search was the problem, but when I tried to train using the default values for C and gamma without performing a grid search I got the same result. I tried using a PolyKernel instead and the classifier was trained in a couple of seconds (but not in grid search).
How can I get the RBFKernel to work (using the default values and in grid search)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您对训练数据进行预处理吗?这对于RBF核来说非常重要。您可以尝试将特征标准化为 [-1,1],然后再次尝试 RBF 内核。
Do you preprocess your training data? It is very important for the RBF kernel. You could try to normalize the features to [-1,1] and try the RBF kernel again.
这对我有用:
XExpression = pow(BASE,I)
,XMin = -5
,XMax = 5
、XStep = 1
和XBase = 10
(Y 相同)。DistributionBasedBalance
过滤器,并将p
设置为某个值。numExecutionSlots
设置为 4(我的机器中的核心数量)。This is what worked for me:
XExpression = pow(BASE,I)
,XMin = -5
,XMax = 5
,XStep = 1
andXBase = 10
(same for Y).DistributionBasedBalance
filter withp
set to some value.numExecutionSlots
to 4 (the number of cores in my machine).