我正在使用ruby 分类器 gem,它的分类方法返回根据训练模型分类的给定字符串的分数。
分数是百分比吗?如果是这样,最大差异是 100 分吗?
我正在使用ruby 分类器 gem,它的分类方法返回根据训练模型分类的给定字符串的分数。
分数是百分比吗?如果是这样,最大差异是 100 分吗?
这是概率的对数。对于一个大的训练集,实际概率是非常小的数字,所以对数更容易比较。从理论上讲,分数的范围从无限接近零到负无穷。 10**score * 100.0
会给你实际的概率,它确实有100的最大差异。
实际上,要计算以 b 为基数的典型朴素贝叶斯分类器的概率,它是 b^score/(1+b^score)。这是逆 logit (http://en.wikipedia.org/wiki/Logit) 但是,鉴于 NBC 的独立性假设,这些分数往往过高或过低,并且以这种方式计算的概率将在边界处累积. 最好计算保持集中的分数,并对分数进行准确(1 或 0)的逻辑回归,以更好地了解分数和概率之间的关系。
来自 Jason Rennie 的一篇论文:2.7 朴素贝叶斯输出通常过于拘泥文本数据库通常有 10,000 到 100,000 个不同的词汇;文档通常包含 100 个或更多术语。因此,有很大的复制机会。为了了解有多少重复,我们用 20 个新闻组文档中的 80% 训练了一个 MAP 朴素贝叶斯模型。我们对剩余 20% 的数据产生了 p(cjd;D)(后验)值,并在表 2.3 中显示了关于 maxc p(cjd;D) 的统计信息。这些值是高度过度自信的。当四舍五入到 9 位小数时,60% 的测试文档的后验为 1。与逻辑回归不同,朴素贝叶斯未进行优化以产生合理的概率值。逻辑回归执行线性系数的联合优化,使用足够的训练数据收敛到适当的概率值。朴素贝叶斯逐一优化系数。只有当独立性假设成立时,它才会产生实际的输出。当特征包括重要的重复信息(通常是文本的情况)时,朴素贝叶斯提供的后验是高度过度的。