什么可能导致liblinear达到最大迭代次数?

时间:2014-08-07 10:37:41

标签: c machine-learning classification liblinear

我在我的程序中使用liblinear来使用L2R_L2LOSS_SVC_DUAL解算器执行多类分类。在当前的测试设置中,我有总共9个类的1600个实例,每个类有1000个特征。

我试图通过5次交叉验证来确定训练的最佳C参数,但即使小的C值为1.0,liblinear达到最大迭代次数:

................................................................................
....................
optimization finished, #iter = 1000

WARNING: reaching max number of iterations
Using -s 2 may be faster (also see FAQ)

Objective value = -637.100923
nSV = 783

FAQ site提到了两个可能的原因:

  1. 数据未缩放。
  2. 使用大C参数。
  3. 使用了许多具有少量功能的实例,因此解算器L2R_L2LOSS_SVC可能会更快。
  4. 两者都不适用于我的情况。由于我的特征向量是某种直方图,因此有一个自然最大值,我用它来将特征缩放为[0,1]。

    我为liblinear设置了参数,如下所示:

    struct parameter svmParams;
    svmParams.solver_type = L2R_L2LOSS_SVC_DUAL;
    svmParams.eps = 0.1;
    svmParams.nr_weight = 0;
    svmParams.weight_label = NULL;
    svmParams.weight = NULL;
    svmParams.p = 0.1;
    svmParams.C = 1.0;
    

    我的问题是:常见问题中未提及的其他原因可能会导致liblinear在这种情况下运行缓慢,我可以采取哪些措施来对付它?

0 个答案:

没有答案