Machine learning K-nearest neighbor algorithm


1. Overview 1. Concept:

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

Insert picture description here
2. Steps:

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

3. Matters needing attention
(1) Selection of parameter K:

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

(2) Measurement of distance:

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

4.
Advantages and disadvantages (1) Advantages:

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

(2) Disadvantages:

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

Insert picture description here
(3) Improvement:

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

Two. Examples

Guess you like

Origin blog.csdn.net/weixin_46131409/article/details/113794487