机器学习-KNN算法
邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。
K近邻法(k-NearestNeighbor)是一种很基本的机器学习方法,能做分类和回归任务。
KNN直观解释
- 第一步:将训练集中的所有样例画入坐标系,也将待测样例画入。
- 第二步:计算待测分类的电影与所有已知分类的电影的欧式距离。
- 第三步:将这些电影按照距离升序排序,取前k个电影,假设k=3,那么我们得到的电影依次是《He’s Not Really Into Dudes》、《Beautiful Woman》和《California Man》。而这三部电影全是爱情片,因此我们判定未知电影是爱情片。
KNN的三个基本要素
-
距离度量
在引例中所画的坐标系,可以叫做特征空间。特征空间中两个实例点的距离是两个实例点相似程度的反应(距离越近,相似度越高)。kNN模型使用的距离一般是欧氏距离,但也可以是其他距离如:曼哈顿距离 -
k值的选择
k值的选择会对kNN模型的结果产生重大影响。选择较大的k值,相当于用较大邻域中的训练实例进行预测,模型会考虑过多的邻近点实例点,甚至会考虑到大量已经对预测结果没有影响的实例点,会让预测出错;选择较小的k值,相当于用较小邻域中的训练实例进行预测,会使模型变得敏感(如果邻近的实例点恰巧是噪声,预测就会出错)。
在应用中,k值一般取一个比较小的数值。通常采用一些验证方法来选取最优的k值。 -
决策规则
分类:往往是多数表决,即由输入实例的k个邻近的训练实例中的多数类决定待测实例的类。或带权投票
回归:取平均值。或带权取平均值
KNN模型的优缺点
- 优点
思想简单,能做分类和回归
惰性学习,无需训练(蛮力法),KD树的话,则需要建树
对异常点不敏感 - 缺点
计算量大、速度慢
样本不平衡的时候,对稀有类别的预测准确率低
KD树,球树之类的模型建立需要大量的内存
相比决策树模型,KNN模型可解释性不强