它的工作原理是:存在一个样本数据集合,也称作为训练样本集,
并且样本集中每个数据都存在标签,
即我们知道样本集中每一个数据与所属分类的对应关系
输入没有标签的新数据后,将新的数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前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的“距离” 在分类变量的意义到底是什么
knn介绍
最新推荐文章于 2023-06-02 13:54:33 发布