Python 类_权重=朴素贝叶斯的“平衡”等价物

Python 类_权重=朴素贝叶斯的“平衡”等价物,python,scikit-learn,logistic-regression,naivebayes,Python,Scikit Learn,Logistic Regression,Naivebayes,我正在对同一个不平衡数据使用两个不同的分类器执行一些二进制文本分类。我想比较两个分类器的结果 当使用sklearn逻辑回归时,我可以选择为sklearn naive bayes设置类_权重=‘平衡’,因为没有这样的参数可用 我知道,我可以从较大的类中随机抽取样本,以便最终得到两个类的相同大小,但是数据会丢失 为什么朴素贝叶斯没有这样的参数?我猜这与算法的性质有关,但我找不到关于这个具体问题的任何信息。我还想知道等价物是什么?如何实现类似的效果,即分类器意识到不平衡的数据,并给予少数类更多的权重,

我正在对同一个不平衡数据使用两个不同的分类器执行一些二进制文本分类。我想比较两个分类器的结果

当使用sklearn逻辑回归时,我可以选择为sklearn naive bayes设置类_权重=‘平衡’,因为没有这样的参数可用

我知道,我可以从较大的类中随机抽取样本,以便最终得到两个类的相同大小,但是数据会丢失


为什么朴素贝叶斯没有这样的参数?我猜这与算法的性质有关,但我找不到关于这个具体问题的任何信息。我还想知道等价物是什么?如何实现类似的效果,即分类器意识到不平衡的数据,并给予少数类更多的权重,而给予多数类更少的权重?

逻辑回归是一种线性模型,即它通过数据绘制一条直线,数据的类别由它位于直线的哪一侧决定。这条线只是特征加权和的线性组合,因此我们可以通过调整权重来调整不平衡数据

另一方面,Naïve Bayes通过计算给定单个特征的标签的条件概率来工作,然后使用Naïve Bayes假设特征是独立的,通过乘以每个特征的条件概率和比例来计算具有特定标签的数据的概率。没有明显的参数可以调整以解释不平衡的类


您可以尝试过采样,而不是欠采样—使用重复数据或稍微调整的数据扩展较小的类,或者根据您的问题域研究其他方法,因为您正在进行文本分类,因此有一些建议的方法。

逻辑回归是一个线性模型,也就是说,它在你的数据中画了一条直线,而数据的类别取决于它在这条直线的哪一边。这条线只是特征加权和的线性组合,因此我们可以通过调整权重来调整不平衡数据

另一方面,Naïve Bayes通过计算给定单个特征的标签的条件概率来工作,然后使用Naïve Bayes假设特征是独立的,通过乘以每个特征的条件概率和比例来计算具有特定标签的数据的概率。没有明显的参数可以调整以解释不平衡的类


您可以尝试过采样,而不是欠采样—使用重复的或稍微调整的数据扩展较小的类,或者根据您的问题域研究其他方法,因为您正在进行文本分类,所以有一些建议的方法。

我写这篇文章部分是为了回应这里的另一个答案

Logistic回归和朴素贝叶斯都是产生线性决策边界的线性模型

Logistic回归是朴素贝叶斯生成模型的有区别的对应物。根据plabel |数据对每个模型进行解码以找到最佳标签。使朴素贝叶斯与众不同的是,它通过贝叶斯规则:plabel | data实现了这一点∝ pdata |标签*plabel

另一个答案是正确的,根据朴素贝叶斯假设,给定类,朴素贝叶斯特性彼此独立。对于共线特征,这有时会导致朴素贝叶斯的错误概率估计,尽管分类仍然很好

这里的因式分解是NaiveBayes如何很好地处理类不平衡的:它为每个类保留单独的账簿。每个特征都有一个参数,即标签对。这意味着超级普通类不能搞乱超级稀有类,反之亦然

有一个不平衡的地方可能会渗透进来:格子分布。它将与你的训练集中的经验分布相匹配:如果它是90%的标签A,那么pA将是0.9。
如果您认为标签的训练分布不代表测试分布,您可以手动更改plabels值,以匹配您之前关于标签A或标签B等在野外的频率的信念。

我写这篇文章部分是为了回应这里的另一个答案

Logistic回归和朴素贝叶斯都是产生线性决策边界的线性模型

Logistic回归是朴素贝叶斯生成模型的有区别的对应物。根据plabel |数据对每个模型进行解码以找到最佳标签。使朴素贝叶斯与众不同的是,它通过贝叶斯规则:plabel | data实现了这一点∝ pdata |标签*plabel

另一个答案是正确的,根据朴素贝叶斯假设,给定类,朴素贝叶斯特性彼此独立。对于共线特征,这有时会导致对朴素贝叶斯定理的错误概率估计 呃,分类还是很好的

这里的因式分解是NaiveBayes如何很好地处理类不平衡的:它为每个类保留单独的账簿。每个特征都有一个参数,即标签对。这意味着超级普通类不能搞乱超级稀有类,反之亦然

有一个不平衡的地方可能会渗透进来:格子分布。它将与你的训练集中的经验分布相匹配:如果它是90%的标签A,那么pA将是0.9。
如果您认为标签的训练分布不能代表测试分布,您可以手动更改plabels值,以匹配您之前对标签A或标签B等在野外的频率的看法。

谢谢您的回答。有一件事我不明白,那就是它是如何为每堂课分别备书的。请你再解释一下好吗?好问题!朴素贝叶斯对每个特征、标签对和模型pfeature |标签都有单独的参数。因此,如果可能的标签是J、K和L,那么就有pfeature1 | J、pfeature1 | K和pfeature1 | L的参数。非常感谢-我完全忘记了朴素贝叶斯是线性分类器,因为某种原因,我认为决策边界是二次的。不用担心!我知道这种感觉谢谢,@aryamcarthy,这句话真的帮了我的忙,让我想起了你的答案。有一件事我不明白,那就是它是如何为每堂课分别备书的。请你再解释一下好吗?好问题!朴素贝叶斯对每个特征、标签对和模型pfeature |标签都有单独的参数。因此,如果可能的标签是J、K和L,那么就有pfeature1 | J、pfeature1 | K和pfeature1 | L的参数。非常感谢-我完全忘记了朴素贝叶斯是线性分类器,因为某种原因,我认为决策边界是二次的。不用担心!我知道这种感觉谢谢你,@aryamcarthy,这个评论真的帮助了我哦,对不起,完成了:哦,对不起,完成了:谢谢你的回答,特别是关于欠采样和过采样的术语!我不知道它有名字:现在我可以得到更多关于它的信息谢谢你的回答,特别是关于欠采样和过采样的术语!我不知道它有名字:现在我可以得到更多关于它的信息