0 前言
KNN算法是由Cover和Hart在1968年提出的使用邻居信息构建最近邻图来做分类的算法,它是机器学习中常用且简单的分类算法。它的核心主要包括三个要素:k值的选择、距离计算、分类规则,主要弄懂了这三个要素便能上手KNN算法了。
1 工作原理概述
首先,你得理解KNN算法的工作原理:假如我们有一堆的二维数据点(多维的也是可以,用二维方便举例),将这些点描绘在一个二维平面图上(如下图,五角星为一类,圆圈也为一类)。
现在我们有一个新样本需要我们去预测,也将它画到图中(如下图的三角形),然后计算离他最近的k个样本点,每个类别个数。比如k取5的时候,找到离它最近的5个样本(假设是圈出来的五个),计算这5个邻居样本点各类点个数:五角星为4个、圈圈为1个,所以三角形这个新样本预测为五角星类别!!!
2 K值的选择
对于k值的选取会直接影响模型的好坏,一般我们通过会通过交叉验证方法来选择合适的k值(k是奇数,如果是偶数,两者样本一样多讲无法判断属于哪个类别)。当k值越小过拟合风险就越大(比如k取1时,新样本最接近哪个样本类别就被分为哪个类别,就像长头发是女的,那么以后模型只要遇到新样本中是长头发它都会被预测为女的(有些男的也长有长头发,所以会预测错误));当k越大时欠拟合风险就越大(比如你训练样本一共就1000条,k也取1000的话,那么无论新样本是什么,它的取值都会固定(为什么会固定,自己好好想一想!))。
3 距离的计算
在前面我们说取离新样本点的k个样本点,那么我们怎么知道那几个样本点离新样本最近呢?所以这就需要用到距离计算,一般来说最常用的是欧氏距离,这种距离计算方法我们在高中还是初中就应该学过了。假设我们要计算两个样本(x1,x2)、(y1,y2)的距离d,它的计算公式为:
当我们样本不止二维的时候,两个样本变成n维:(x1,x2,x3,…,xn)、(y1,y2,y3,…,yn),那么计算公式可以写为:
4 分类规则
在KNN中的分类规则是非常简单的,一般采用的是多数表决法,即k个近邻样本中哪个类别的个数比较多就分为哪类。