【问题标题】:Why does GridSearchCV on an SVC in scikit-learn produce different probabilities given identical inputs?为什么 scikit-learn 中 SVC 上的 GridSearchCV 在给定相同输入的情况下会产生不同的概率?
【发布时间】:2013-11-30 02:46:42
【问题描述】:

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

另请参阅另一位用户predict_proba or decision_function as estimator "confidence" 的上一个问题,该问题解决了与逻辑回归相同的问题,但结果证明这是一个错误——也许这也是?还是 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-learn .14.1。

谢谢。

【问题讨论】:

  • 我认为交叉验证过程中存在随机化,是的。此外,SVM 拟合/预测本身将具有随机性元素。您可以尝试在 SVC 中包含 random_state 参数。
  • 谢谢你,布伦巴恩。将 random_state 添加到 svc 使结果一致。只要我明白为什么会发生这种情况,我就可以处理一点点差异。

标签: python machine-learning svm scikit-learn


【解决方案1】:

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

我有一个post,其中包含一些 2D 示例和更多解释。

【讨论】:

  • 谢谢你,拉夫。在您的详细解释和解释正在发生的事情的帖子,以及 BrenBarn 为 CV 设置随机种子的建议之间,我对这个问题以及如何解决它有了更多的了解。谢谢你们。
猜你喜欢
  • 2018-03-03
  • 1970-01-01
  • 2019-05-16
  • 2016-10-03
  • 2012-08-23
  • 2019-01-02
  • 2017-09-11
  • 2013-10-30
  • 2016-07-30
相关资源
最近更新 更多