类似于K最近邻分类的“概率”

6
我有一组数据点(约10个)位于2D空间中,每个点都有一个类别标签。我希望根据现有的数据点标签对新的数据点进行分类,并为其分配属于任何特定标签类别的“概率”。
将新点标记为其最近邻居的标签是否合适(如K最近邻,K=1)?为了获取概率,我希望排列所有标签,并计算未知点与其余点之间的所有最小距离,并找到最小距离小于或等于用于标记的距离的情况的比例。
谢谢
5个回答

8
最近邻方法已经使用贝叶斯定理来估计概率,使用包含所选K个点的球中的点。无需进行转换,因为每个标签的球中K个点的数量除以该球中所有点的总数已经是该标签的后验概率的近似值。换句话说:
P(label|z) = P(z|label)P(label) / P(z) = K(label)/K
这是在使用数据子集估计的概率上应用贝叶斯规则得到的。特别地,使用以下内容:
VP(x) = K/N(这给出了体积为V的球中点的概率)
P(x) = K/NV(来自上面)
P(x=label) = K(label)/N(label)V(其中K(label)和N(label)分别是给定类别的球中点数和该类别的样本总数中的点数)

P(label) = N(label)/N。
因此,只需选择一个K,计算距离,计算点数,并通过检查其标签和重新计数即可获得概率。

6
Roweis在他的论文《邻域分量分析》中使用了一个带有KNN的概率框架。其思想是使用“软”最近邻分类,其中点i使用另一个点j作为其邻居的概率由公式enter image description here定义,其中d_ij是点i和j之间的欧几里得距离。

7
请注意 - 在两个指数中都应该是 -d_ij(负距离),以便概率与距离成反比! - Maciej Gryka

3

这种K最近邻分类方法没有概率,因为它是判别式分类,就像SVM一样。应该使用后处理来学习生成模型(如逻辑回归)上未见过的数据的概率。 1. 学习K最近邻分类器 2. 对验证数据的距离和K个最近邻的平均距离进行训练逻辑回归。

有关详细信息,请查看LibSVM文章。


1

将距离排序到10个中心; 它们可能是
1 5 6 ... ——一个近,其他远
1 1 1 5 6 ... ——3个近,其他远
... 很多可能性。
您可以将10个距离组合成一个数字,例如 1 - (nearest / average) ** p,
但这样会丢失信息。 (不同的幂p使中心周围的山丘更陡峭或平缓。)

如果您的中心确实是高斯山丘,请查看 多元核密度估计

补充: 有无数个函数在0和1之间平滑过渡, 但这并不意味着它们是某种概率。
“概率”意味着涉及机会、可能性, 就像下雨的概率一样;
或者你正在试图给某人留下印象。

再次添加:scholar.google.com上的“(单一|1)最近邻分类器”有超过300个结果;“k最近邻分类器”几乎有3000个结果。
在我看来(非专家),在将k-NN距离映射到标签的10种不同方法中,
每种方法对于某些数据和某些误差度量可能比其他9种更好。
无论如何,您可以尝试询问stats.stackexchange.com


非常感谢belisarius和Denis提出的建议。有人可以对我提出的“概率”计算发表评论吗? - WoA
你好 Denis,我可以使用 R 的 "ks" 包绘制我的双变量数据的核密度估计等高线。但有没有人告诉我如何使用核密度来对一个测试点进行分类或标记?还是仅用于可视化?是否有任何 R/Perl 模块可以进行这样的分类?谢谢 - WoA
我能否像维基百科中的“Old Faithful Geyser data kernel density estimate”那样绘制一个图表?红色/橙色/黄色区域是否重叠? - denis

0

答案是:这取决于情况。

想象一下,你的标签就像一个人的姓氏,而X、Y坐标则代表着该人DNA序列的一些重要特征。显然,更接近的DNA描述增加了具有相同姓氏的可能性。

现在假设X、Y是该人工作办公室的经纬度。工作地点的距离并不与标签(姓氏)共享相关。

因此,这取决于您的标签和轴的语义。

希望对您有所帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接