概述
k近邻的思想就是:对于任意一个新的样本点,我们可以在这M个已知类别标签的样本点中选取K个与其距离最接近的点作为它的最近邻点,然后统计这个K个最近邻点的类别标签,采取多数投票表决的方式,即把这K个最近老点中绝大多数类别的点所对应的类别拿来当作要预测点的类别。
k近邻分类原理
k近邻模型主要有三个要素,即K值的选择、距离的度量方法、分类决策规则。
K值的选择
K值的选择会对k近邻法的结果产生较大影响:
如果K值选得较小,这种情况下得到的模型,只有与训练实例比较靠近的实例才会对预测结果起作用,理论上来说,学习的近似误差会比较小。缺点是模型估计误差比较大,预测结果对少部分邻近的实例点十分敏感。
如果K值选得太大,相当于使用一个比较大的邻域中的训练实例来训练模型。优点可以降低学习的估计误差,缺点是学习的近似误差会增大,因为这种情况下与输入较远的训练实例也会对预测起作用。
距离度量
度量距离的方式有多种:
- 闵可夫斯基距离
- 曼哈顿距离(p = 1)
- 欧氏距离(p = 2)
- 汉明距离
需要注意的是,在使用距离度量之前,一般应先对数据做归一化处理。如果不做归一化处理,那些取值较小但实际比较重要的特征参数的作用可能就会被掩盖掉。
分类决策规则
k近邻中主要使用的是多数表决规则。
优化
在实际实现k近邻法时,还需要考虑计算过程优化问题。如,在训练数据量较多或特征空间的维数较大时,如果直接采用暴力计算的方式去遍历所有点来确定K个最近邻点,则明显计算开销过大的。
为了提高计算效率,可以考虑使用特殊的数据结构来组织和存储训练数据。KD树就是一个方法。
小结
优点
- 简单易于实现
- 比较适合多分类问题
- 对异常值不敏感
- 无数据输入假定
缺点
- 预测精度一般
- 当样本存在范围重叠时,k近邻的分类精度很低
- 即便分类一个样本也要计算所有数据,在大数据环境下很不适应