K近邻算法(KNN)

K近邻算法(KNN)

  • 思想:用K个最近邻居代表待预测样本
  • KNN算法三要素:
    • K值的选择:
  • KNN分类预测规则
  • KNN回归预测规则
  • KNN算法中“特征标准化”重要性
  • KNN的Python伪代码

思想:用K个最近邻居代表待预测样本

KNN算法三要素:

  • K值选择
    • K过大——>模型简单——>容易“欠拟合”
    • K过小——>模型复杂——>容易“过拟合”
  • 距离
    • 欧式距离
  • 决策与规则
    • 分类模型
      • 多数表决法
      • 加权多数表决法
    • 回归模型
      • 平均值法
      • 加权平均值法

K值的选择:

假设有100个数据作为训练集,其中有60个1,40个0
如果这时我们取的 K = 100 ,即1 = 60%,0 = 40%
那么这个时候新进来一数据:x,取距离x最近的k=100个元素,最终x必然被预测成1,这时,预测的正确率仅为60%,在训练数据中正确率仅为60%,模型过于简单,容易发生“欠拟合
反之,若果设K=1,那么在训练集里的正确率为100%,模型过于复杂,当新进来数据时,取值过于片面,容易导致在测试集的训练结果反而不是很好,则模型“过拟合


KNN算法根据不同的决策规则既可以解决分类任务,也可以解决回归任务

KNN分类预测规则

  • 多数表决发(等权)
    • 邻近样本的权重一样
    • 最终预测结果 = K个样本中出现类别最多的那个类
  • 加权对数表决法
    • 权重 = 1/距离 (权重与距离成反比)
    • K个邻近样本中距离越小——>权重越大——>说明:越有资格代表 “待预测对象”

举例分析:
如图:
等权时:多数表决法
K近邻算法(KNN)_第1张图片
五角星:2/5
圆:3/5
最终输入的正方形被预测为 :圆


加权多数表决法
K近邻算法(KNN)_第2张图片
1、权重归一化
所有权重和 = 1/2 +1/2 +1/2 + 1/1 +1/1 = 7/2
使得权重和为1 ,就需要各个权重乘 2/7
2、计算各个类别权重和
圆的权重和 = 1/2 * 2/7 + 1/2 * 2/7 + 1/2 * 2/7 = 3/7
五角星权重和 = 1/1 * 2/7 + 1/1 * 2/7 = 4/7
3、比较权重和,大的更有资格代表“待预测样本”
五角星 4/7 > 圆 3/7 ==> 待预测样本为圆


KNN回归预测规则

  • 平均值法(等权)
    • 邻近样本权重一样
    • 最终预测结果 = 邻近K个样本目标属性值的均值
  • 加权平均值法
    • 邻近样本的权重不一样
    • 权重 = 1/距离 (权重与距离成反比)
      • 权重的计算同上要进行:权重归一化
    • 在计算平均值时进行加权操作

举例分析:
等权,平均值法
K近邻算法(KNN)_第3张图片
预测结果 = (3+3+3+2+5)/5 =2.6

加权平均值法
K近邻算法(KNN)_第4张图片
1、权重归一化
所有权重和 = 1/2 +1/2 +1/2 + 1/1 +1/1 = 7/2
使得权重和为1 ,就需要各个权重乘 2/7
2、计算加权平均值
加权平均值 = 圆1权重 * 值 + 圆2权重 * 值 + 圆3权重 * 值 + 方1权重 * 值 + 方2权重 * 值
3、预测结果 = 加权平均值
1/7 * 3 + 1/7 * 3 + 1/7 * 3 + 2/7 * 2 + 2/7 * 2 = 2.43


KNN算法中“特征标准化”重要性

要进行上述的两种预测规则,首先要得到这K个相邻的数据
这个相邻的判别标准用“欧氏距离”进行选择
在这里插入图片描述

我们传入的数据是特征向量的形式,如下
X1(x1, y1 )第一个人前2个月工资
X2(x2, y2 )第二个人前2个月工资
X3(z3, z3 )第二个人前2个月工资
假设计算X1和X2的欧式距离
这个时候如果我X1的所有特征是以千为单位,X2的所有特征是以元为单位,那么进行欧式距离的计算时:
(x1-x2)和(y1-y2)由于,x1,y1过小,最后的,x1,y1就起不到做用了
所以要对特征进行标准化
特征标准化内容后面会更新


KNN的Python伪代码

你可能感兴趣的:(机器学习,近邻算法,机器学习,算法)