k \boldsymbol{k} k-近邻算法
目录
1. 概念
k
\boldsymbol{k}
k-近邻算法采用测量不同特征之间的距离方法进行分类。没有显式的训练过程,在训练阶段仅仅是把样本保存起来,在收到测试样本以后再进行处理。
k
\boldsymbol{k}
k-近邻算法的特殊情况是
k
\boldsymbol{k}
k=1,称为最近邻算法
-
优点:
精度高、对异常值不敏感、无数据输入假定。 -
缺点:
1. 计算复杂度高、空间复杂度高。 k \boldsymbol{k} k-近邻算法必须保存全部数据集,如果训练数据集很大,必须使用大量的存储空间。必须对数据集中的每个数据计算距离值,非常耗时。
2. 无法给出任何数据的基础结构信息,因此无法知道平均实例样本和典型实例具有什么特征。 -
适用数据范围:
数值型(需要进行计算距离)和标称型。
数值型:数值型目标变量则可以从无限的数值集合中取值,如1,2等 (数值型目标变量主要用于回归分析)
标称型:标称型目标变量的结果只在有限目标集中取值,如真与假(标称型目标变量主要用于分类)
算法步骤
- 计算已知类别数据集中的点与当前点之间的距离
- 按照距离递增次序排序
- 选取与当前点距离最小的 k \boldsymbol{k} k个点;
- 确定前 k \boldsymbol{k} k个点所在类别的出现频率
- 返回前 k \boldsymbol{k} k个点所出现频率最高的类别作为当前点的预测分类
常用的计算距离
距离公式:
L
p
(
x
i
,
x
j
)
=
(
∑
i
=
l
n
∣
x
i
l
−
x
j
l
∣
p
)
1
/
p
L_{p}(x_{i},x_{j})=(\sum_{i=l}^{n}|x_{i}^{l}-x_{j}^{l}|^{p})^{1/p}
Lp(xi,xj)=(i=l∑n∣xil−xjl∣p)1/p
公式 | 优点 | 缺点 | |
---|---|---|---|
欧式距离 | p=2 | 精度高、对异常值不敏感、无数据输入假定 | 计算复杂度高、空间复杂度高 |
曼哈顿距离 | p=1 | ||
切比雪夫距离 | p=∞ | ||
马氏距离 | |||
汉明距离 | |||
皮尔逊系数 | |||
信息熵 |
k值的选取
KNN采用投票的方法(即少数服从多数),在选取k的时候太大(一般不会大于20的整数加粗样式),选取奇数。- K值很小:容易受异常点影响
- k值很大:容易受数量的波动