如何用贝叶斯概率解释 KNN?

机器算法验证 机器学习 分类
2022-03-24 22:45:33

我想知道如何从贝叶斯方法解释 k 最近邻域算法,特别是如何证明 k 值的最佳选择是合理的?

2个回答

贝叶斯观点的 kNN

假设我们有一个数据集,包含类中个点,总点数为,因此 N。NkCkNkNk=N

我们想通过绘制一个以 \mathbf{x} 为中心的球体 ,该球体包含精确个点,而与它们的类别无关。假设这样一个球体的体积为并且包含来自类个点。xxKVKkCk

然后,

p(x|Ck)=KkNkV

提供与每个类别相关的密度估计。同样,无条件密度由下式给出

p(x)=KNV,

而类先验由

p(Ck)=NkN.

我们现在可以使用贝叶斯定理组合这三个方程来获得类成员的后验概率

p(Ck|x)=p(x|Ck)p(Ck)p(x)=KkK.

如果我们希望最小化错误分类的概率,我们必须将测试点分配给具有最大后验概率的类,对应于的最大值。xKkK

正如其他答案中详细解释的那样,kNN 是一种判别方法。为了将其投射到贝叶斯框架中,我们需要一个生成模型,即一个说明如何生成样本的模型。这个问题在这篇论文中有详细的阐述(Revisiting k-means: New Algorithms via Bayesian Nonparametrics)。

该方法遵循两个步骤:首先找到一个平滑版本的 k-means (GMM),然后使用Dirichlet Process (DP) 对高斯混合进行建模。

第一步建立在 kmeans 和 GMM 之间的渐近关系之上。这是必要的,以便有一个有效的条件概率模型,为此我们有有效的采样算法。

如前所述,DP 对可能产生观测数据的高斯混合分布进行建模。最初,一个甚至可能有无数个组件!然后,目标是找到可能生成数据的最可能值。