概率kNN与朴素贝叶斯之间的差异

时间:2016-05-01 17:34:34

标签: machine-learning artificial-intelligence bayesian knn naivebayes

我试图修改标准kNN算法以获得属于类的概率,而不仅仅是通常的分类。我还没有找到关于概率kNN的大量信息,但据我所知,它与kNN类似,不同之处在于它计算给定半径内每个类的例子的百分比。

所以我想知道Naive Bayes和Probabilistic kNN之间的区别是什么?我只能发现Naive Bayes考虑到了先前的可能性,而PkNN却没有。我弄错了吗?

提前致谢!

2 个答案:

答案 0 :(得分:3)

说实话,几乎没有相似之处。

Naive bayes假设每个类按照简单的分布分布,独立于特征。对于连续的情况 - 它将适合您的整个班级(每个班级)的径向正态分布,然后通过argmax_y N(m_y, Sigma_y)

做出决定 另一方面,KNN不是概率模型。您所参考的修改只是一个平滑的"原始想法的版本,其中您返回最近邻集中每个类的比率(并且这实际上不是任何"概率kNN",它只是常规kNN概率的粗略估计)。这不假设数据分布(除了当地平滑)。特别是 - 它是一个非参数模型,给定足够的训练样本,将完全适合任何数据集。朴素贝叶斯只适合K高斯(其中K是班级数)。

答案 1 :(得分:0)

(我不知道如何格式化数学公式。有关更多详细信息和清晰的表示形式,请参见this。)

我想提出相反的观点,认为KNN是一种简化的朴素贝叶斯(NB),方法是将KNN视为密度估计的平均值

要执行密度估计,我们尝试估计p(x)= k / NV,其中k是位于区域R中的样本数,N是总样本数,V是区域R的体积通常,有两种估算方法:(1)固定V,计算k,这称为核密度估计或Parzen窗; (2)固定k,计算V,这是基于KNN的密度估计。后一种由于其许多缺点而远没有前一种出名。

但是,我们可以使用基于KNN的密度估计来连接KNN和NB。在给定总共N个样本,ci类的Ni个样本的情况下,我们可以通过考虑包含x的区域,以基于KNN的密度估计的形式编写NB:

P(ci | x)= P(x | ci)P(ci)/ P(x)=(ki / NiV)(Ni / N)/(k / NV)= ki / k,

其中ki是该区域中ci类的样本数。最终形式ki / k实际上是KNN分类器。