【问题标题】:Optimizing SMO with RBFKernel (C and gamma) in Weka在 Weka 中使用 RBFKernel(C 和 gamma)优化 SMO
【发布时间】:2012-01-10 17:44:32
【问题描述】:

我正在尝试在 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 工作(使用默认值和网格搜索)?

【问题讨论】:

    标签: optimization machine-learning classification weka svm


    【解决方案1】:

    您是否对训练数据进行预处理?这对 RBF 内核非常重要。您可以尝试将特征归一化为 [-1,1] 并再次尝试 RBF 内核。

    【讨论】:

    • 是的,我将特征标准化为 [0,1]。如果我使用非常小的随机样本(大约 100 个实例),我可以获得网格搜索以产生结果。除此之外,没有运气。
    • 如果有很多训练实例,可能需要很长时间(9月份,我做了一个实验花了20天的时间进行网格搜索,没有产生合理的结果。训练数据集的大小为~ 30000,太。)完成网格搜索,因为它在其中进行交叉验证。尝试使用网格搜索在训练数据的小子集上选择参数(C 和 gamma),并使用这些参数用整个训练数据集训练模型。它可能会有所帮助。
    【解决方案2】:

    这对我有用:

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

    【讨论】:

    • 我在 Weka GUI 的 GridSearch 选项中找不到 numExecutionslots 或 DistributionBasedBalance。如果我在寻找正确的地方,请告诉我。另外考虑到我有一个 64 GB 内存的 CPU,X 和 Y 的最大值和最小值是多少?
    猜你喜欢
    • 2011-01-26
    • 2012-03-16
    • 2016-09-15
    • 2014-07-03
    • 2015-07-07
    • 1970-01-01
    • 2017-12-13
    • 2017-05-09
    • 2013-02-16
    相关资源
    最近更新 更多