KNN是判别式学习算法吗?


Answers:


19

KNN是一种判别算法,因为它可以属于给定类别的样本的条件概率进行建模。要看到这一点,只需考虑人们如何了解kNN的决策规则。

类标签对应于一组点,这些点属于特征空间中的某个区域。如果您从实际概率分布单独绘制样本点,则从该类中绘制样本的概率为 p X P = [R p X d X[RpX

P=[RpXdX

如果您有分怎么办?这个点中的个点落在区域的概率遵循二项式分布, K N R P r o b K = Nñķñ[R

P[RØbķ=ñķPķ1个-Pñ-ķ

随着ñ该分布急剧峰值,因此概率可以通过其平均值\ frac {K} {N}近似ķñ。另一种近似是,R上的概率分布[R保持近似恒定,因此可以通过以下 公式近似积分: P = \ int_ {R} p(x)dx \ approx p(x)V

P=[RpXdXpXV
其中V是模型的总体积区域。在这个近似值下,pXķñV

现在,如果我们有多个类,我们可以对每个类重复相同的分析,这将得出 ,其中是属于该区域的类别的点数,而是属于类别的点总数。通知。

pX|Cķ=ķķñķV
ķķķñķCķķñķ=ñ

用二项式分布重复分析,很容易看出我们可以估计先前的。PCķ=ñķñ

使用贝叶斯规则, ,这是kNN的规则。

PCķ|X=pX|CķpCķpX=ķķķ

2
该参考资料不包含有关KNN的任何信息。是对的吗?
bayerj 2014年

1
我的意思是强调区分性算法与生成性算法的理解。
jpmuc

5

@jpmuc的回答似乎并不准确。生成模型对基础分布P(x / Ci)进行建模,然后使用贝叶斯定理找到后验概率。这正是该答案中所显示的,然后得出了完全相反的结论。:O

为了使KNN成为生成模型,我们应该能够生成综合数据。一旦有了一些初步的训练数据,看来这是可能的。但是不可能从没有训练数据开始就生成综合数据。因此,KNN不太适合生成模型。

有人可能会说KNN是一种判别模型,因为我们可以画出判别边界进行分类,或者可以计算后验P(Ci / x)。但是所有这些对于生成模型都是正确的。真正的判别模型不会透露任何有关基础分布的信息。但是在KNN的情况下,我们对底层分布了解很多,实际上,我们正在存储整个训练集。

因此,似乎KNN介于生成模型和判别模型之间。也许这就是为什么在著名文章中,KNN未归类为任何生成或歧视模型。让我们称它们为非参数模型。


我不同意。“生成分类器学习输入x和标签y的联合概率p(x,y)的模型,并通过使用贝叶斯规则计算p(​​ylx)进行预测,然后选择最可能的标签y判别式分类器直接对后验p(ylx)建模,或者学习从输入x到类标签的直接映射。” 参见“关于判别式与生成式分类器:逻辑回归和朴素贝叶斯的比较
。– jpmuc


1

我同意kNN具有歧视性。原因是它没有显式存储或尝试学习解释数据的(概率)模型(与朴素贝叶斯相反)。

juampa的答案使我感到困惑,因为据我所知,生成分类器是试图解释如何生成数据的分类器(例如,使用模型),并且该答案表示由于该原因它是可区分的...


1
生成模型学习P(Ck,X),因此您可以使用该联合分布生成更多数据。相反,判别模型将学习P(Ck | X)。这就是@juampa用KNN指向的内容。
2014年

1
在分类时,生成式和判别式都使用条件概率进行预测。但是,生成分类器学习联合概率,并根据贝叶斯规则计算条件,而在判别式中,分类器要么直接计算条件,要么尽其所能提供近似值。
rapaio 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.