为什么scikit学习中SVC上的GridSearchCV在给定相同输入的情况下产生不同的概率



由于某种原因,在给定相同输入的情况下,带有svc的GridSearchCV产生的概率较小。在我下面发布的样本中,差异很小,但在其他问题上,我的差异要大得多。在每次输入相同的情况下,GridSearch不应该产生相同的结果吗?

还参见另一用户先前的问题,predict_proba或decision_function as estimator";信心;它解决了逻辑回归的相同问题,但结果是一个错误——也许这也是?或者GridSearchCV使用随机种子?这个演示问题中的差异并不太大,但我还有其他更复杂的问题,其中概率差异足以预测二进制状态的另一面。

from sklearn import svm, grid_search, datasets
iris = datasets.load_iris()
parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
svr = svm.SVC(probability=True)
clf = grid_search.GridSearchCV(svr, parameters)
clf.fit(iris.data, iris.target)
clf.predict_proba(iris.data)
array([[  9.75883684e-01,   1.55259588e-02,   8.59035759e-03],
       [  9.61565216e-01,   2.74888948e-02,   1.09458891e-02],
       [  9.74605121e-01,   1.68928925e-02,   8.50198656e-03],
       [  9.58212635e-01,   2.97479036e-02,   1.20394616e-02],
....

当我再次运行完全相同的代码时,我得到:

array([[  9.76047242e-01,   1.54138902e-02,   8.53886802e-03],
       [  9.61893348e-01,   2.72510317e-02,   1.08556202e-02],
       [  9.74780630e-01,   1.67675046e-02,   8.45186573e-03],
       [  9.58586150e-01,   2.94842759e-02,   1.19295743e-02],'

我可以一次又一次地跑,得到更多不同的结果。

这对svc上的GridSearchCV来说是正常的吗,还是我做错了什么,或者这是一个错误?

我正在使用scikit学习。14.1。

谢谢。

SVM不支持概率。解决这一问题的技巧是对每个数据点到SVM决策边界的裕度距离进行逻辑回归。如果我们直接这样做,可能会因为所有支持向量的距离都是+-1而出现一些问题。为了避免这种偏差,创建了3个折叠,并进行了类似CV的程序,以一次获得1/3数据的裕度值(对另2/3数据进行训练)。然后对这些值进行逻辑回归,并对整个数据集进行SVM再训练。这被称为Platt缩放。CV部分是随机性的来源。

我有一篇文章,里面有一些2D的例子和更多的解释。

相关内容

  • 没有找到相关文章

最新更新