【问题标题】:What is the difference in interpretation of the "probability" returned by a kNN or a DNN algorithmkNN或DNN算法返回的“概率”的解释有什么区别
【发布时间】:2018-03-23 15:44:38
【问题描述】:

我有两个数据集,每个数据集都由相同的两个参数定义。如果将它们绘制在散点图上,则会有一些重叠。我想对它们进行分类,但也得到一个给定点在一个或另一个数据集中的概率。所以在重叠区域,我永远不会期望概率是 100%。

我已经使用 python 的 scikit-learn 包和 kNN 算法 KNeighborsClassifier 实现了这一点。看起来还不错!当我使用predict_proba 来返回概率时,它看起来就像我所期望的那样!

然后我尝试用 TensorFlow 和 DNNClassifier 分类器做同样的事情,主要是作为我自己的学习练习。当我评估测试样本时,我使用predict_proba 返回概率,但概率分布看起来与 kNN 方法大不相同。看起来 DNNClassifier 确实试图将概率驱动到 1 或 0,而不是重叠区域之间的某个位置。

我没有在这里发布代码,因为我的问题更基本:我可以以相同的方式解释这两种方法返回的概率吗?还是它们之间有根本的区别?

谢谢!

【问题讨论】:

  • 我不明白你的目标是什么。如果您的两个分类器都在猜测相同的事物(类/标签)并且返回的概率以相同的方式定义(每个类的概率,或一对一;阅读文档)它们是可比较的。 “将概率驱动到 0 或 1”...您是说 DNN 在分类方面做得更好,在较低的 logloss 中可以看到?

标签: python tensorflow machine-learning scikit-learn knn


【解决方案1】:

是的。如果您使用 sigmoid 或 softmax 进行预测,您应该得到可以合理解释为概率的值(据我所知,DNNClassifier 将使用 softmax)。

现在您没有向我们提供有关模型的任何详细信息。根据模型的复杂性和训练参数,您可能会过度拟合。

如果您看到重叠区域的极端值(0 或 1),则可能是过度拟合。使用测试/验证集对其进行检查。

根据您所描述的一个非常简单的模型应该做的事情,尽量减少深度,减少参数。

【讨论】:

  • 谢谢。我确实使用了验证集,但我应该检查参数的数量和深度。我这样做后会在这里发帖!
猜你喜欢
  • 2017-07-11
  • 2019-12-09
  • 2016-08-26
  • 2015-02-27
  • 2022-08-06
  • 2020-02-01
  • 2020-05-09
  • 2023-04-01
  • 1970-01-01
相关资源
最近更新 更多