机器学习 K-最近邻算法

一.概述
1.概念:

"K-最近邻算法"(K-Nearest Neighbor;KNN)是常用的监督学习分类算法,由Cover和Hart于1968年提出,属于"基于实例的学习"(Instance-Based
Learning)"懒惰学习"(Lazy Learning).该算法对每个点都使用距该点最近的K个点(称为"K个最近邻")的类别来表示该点的类别

在这里插入图片描述
2.步骤:

①选择参数K
②计算未知实例到所有已知实例的距离
③选择K个最近邻
④根据少数服从多数的原则,将未知实例归类为K个最近邻中最多数的类别

3.注意事项
(1)参数K的选择:

KNN的结果对K的选择十分敏感,K过小时容易被噪音干扰;过大时会使较远的实例产生影响,出现错误.流行的选择方法包括交叉验证/贝叶斯/bootstrap

(2)距离的衡量:

"欧几里得距离"(Euclidean Distance)
"余弦值"(Cosine)
"相关度"(Correlation)
"曼哈顿距离"(Manhattan Distance)

4.优缺点
(1)优点:

①易于理解且容易实现
②K的选择合适时,对异常点不敏感,健壮性较好
③没有显式的训练("懒惰学习"),因而训练时间为0
④适合多分类问题

(2)缺点:

①空间复杂度高且计算量大
②属于懒惰学习,基本上不学习,导致预测时速度慢
③样本数量不平衡时,会偏向实例数量较多的类别
④对训练数据依赖度大且容错性差

在这里插入图片描述
(3)改进:

根据距离给实例加上权重,1/distance

二.实例

猜你喜欢

转载自blog.csdn.net/weixin_46131409/article/details/113794487