Sklearn GridSearch的训练复杂度是多少?

时间:2018-09-28 00:06:40

标签: python scikit-learn svm grid-search svc

gs_clf = GridSearchCV(SVC(probability=False, class_weight='balanced', max_iter=100, random_state=2018, tol=1e-10),
                          param_grid={'C': [2, 5, 10] , 'kernel': 'linear'},
                          n_jobs=1,
                          refit=False,
                          cv=2,
                          scoring='f1_weighted',
                          verbose=1)
gs_clf.fit(X, y)

这就是我将Gridsearch与SVC配合使用以适应数据的方式。基本上,我针对随机训练数据调整数据点的行数和标签数,并记录时间消耗。从理论上讲,SVC内核中的linearSVC(不是linear)使用OVO多类实现,计算复杂度为O(#samples * #class * iter)。

这是我遇到的两个问题:

  1. 似乎Gridsearch正在为多类分类进行一些内部优化。训练时间相对于log(#label)呈线性增长(大致)。与单一SVC训练相反,时间在#label上呈线性增长。 Gridsearch到底在做什么?

Training Complexity against numbers of labels (Rows are fixed)

  1. 当标签数量较少时,例如max.iter,训练时间以max_iter的函数线性增长。 #label=2。但是#label不是大的情况。当#label=40时,time(max_iter=200)time(max_iter=400)没什么不同。这不仅发生在gridsearch中,而且也发生在SVC中。我将tol设置得很小,希望拟合总是能达到最大迭代次数,但似乎不起作用。其背后的机制是什么?

我正在使用sklearn == 0.18.1。谢谢!

0 个答案:

没有答案