knn(k-NearestNeighbor):邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。
理解:计算出每个预测对象临近对象(已知类型)的对象,在限定k值(邻居数量)的条件下,预测对象的类型,被判定为k个最近的邻居中类型占比最大的那种类型。
理解示例: 每个人已知三个特征:“身高(cm)”,“每天饮食量(kg)”,“每天跑步里程(km)”,预测张小明(15)体重是“胖”还是“瘦”。现有5个已知胖瘦的人信息,具体数据信息如下:
姓名 | 体重类型 |
东方不败(165,4,10) | 胖 |
独孤求败(175,3,12) | 瘦 |
西门吹雪(154,4,10) | 胖 |
令狐冲(175,2,10) | 瘦 |
曾阿牛(175,2,10) | 胖 |
姓名 | 体重类型 | 距离张小明距离 |
东方不败(165,4,10) | 胖 | 103 |
独孤求败(175,3,12) | 瘦 | 101 |
西门吹雪(154,4,10) | 胖 | 104 |
令狐冲(175,2,10) | 瘦 | 102 |
曾阿牛(175,2,10) | 胖 | 104 |
当k=3(取三个最近的邻居):则离张小明最近的邻居中:占比最多为瘦人,瘦人占比:2/3=67% 则张小明体重为瘦。
当k=5(取五个最近的邻居):则离张小明最近的邻居中:占比最多为胖人,胖人占比:3/5=60% 则张小明体重为胖。
疑问理解:预测对应和对应的邻居如何计算?
使用预测对象的每个特征和已知对象的每个特征 之间的差异值进行测算。计算方法,一般使用欧式距离或曼哈顿距离:
其算法的描述为:
1)计算测试数据与各个训练数据之间的距离;
2)按照距离的递增关系进行排序;
3)选取距离最小的K个点;
4)确定前K个点所在类别的出现频率;
5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。