KNN是判别式学习算法吗?


Answers:


19

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

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

P=∫[Rp(X)dX

如果您有分怎么办?这个点中的个点落在区域的概率遵循二项式分布, 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=∫[Rp(X)dX≈p(X)V
其中V是模型的总体积区域。在这个近似值下,p(X)≈ķñV。

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

p(X|Cķ)=ķķñķV
ķķķñķCķ∑ķñķ=ñ

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

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

P(Cķ|X)=p(X|Cķ)p(Cķ)p(X)=ķķķ

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.