knn介绍

它的工作原理是:存在一个样本数据集合,也称作为训练样本集,
并且样本集中每个数据都存在标签,
即我们知道样本集中每一个数据与所属分类的对应关系
输入没有标签的新数据后,将新的数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。

2、距离度量

我们已经知道k-近邻算法根据特征比较,然后提取样本集中特征最相似数据(最邻近)的分类标签。
那么,如何进行比较呢?
比如,我们还是以表1.1为例,怎么判断红色圆点标记的电影所属的类别呢? 如下图所示。

KNN特殊情况是k=1的情形,称为最近邻算法。对于输入的实例点(特征向量)x
最近邻算法将训练数据集中与x
最近邻点的类作为x的类。 

在KNN算法中,常用的距离有三种,分别为曼哈顿距离、欧式距离和闵可夫斯基距离。 
  https://blog.csdn.net/sanqima/article/details/51276640

如果是离散值该怎么办?
https://blog.csdn.net/a8131357leo/article/details/89526656
 因为本身 categorical data 就是有顺序的,(ordinal data), 当你对衣服大小编码时就是没问题的。
 这时候编码就有问题了, 为什么学生会小于老师, 等于为原有的数据添加的而外的信息, 那我如果用不同的编码的话结果就可能很不一样,所以KNN会有问题

对于这些数据 因为没有顺序,所以他们的距离应该是相等的。 所以编码应该是

职业	编码
学生	0,0,1
老师	0,1,0
农民	1,0,0

这样距离就是相等了, 但是这又会出现另一个问题,
对于每一个职业都给了一个单独的binomial变量, 
很有可能导致高维的问题 也就是 P>N, 即便K设置的很小很小, 预测的误差还是很大。

总结一句, 再对分类变量进行KNN时, 
要仔细想想 KNN的“距离” 在分类变量的意义到底是什么
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值