k近邻

K近邻—近墨者黑
看门见上的说:就是目标点附近的(当然是最近的)k个点中,属于某一类别的个数最多,则该目标点就有很大的概率属于这个类别。
举个例子1:
水果摊买水果:某一个水果附近的k个中,有8个苹果,5个梨子,3根香蕉,则这个水果属于苹果的概率最大。
应用场景例子2:
一部电影怎么判断它是属于爱情片还是武打片?
给出两个评判标准:打斗次数以及轻吻次数
动作片:打斗次数更多
爱情片:亲吻次数更多
在这里插入图片描述
现在根据上面我们得到的样本集中所有电影与未知电影的距离,按照距离递增排序,可以找到 k 个距离最近的电影。
假定 k=3,则三个最靠近的电影依次是, He’s Not Really into Dudes 、 Beautiful Woman 和 California Man。
knn 算法按照距离最近的三部电影的类型,决定未知电影的类型,而这三部电影全是爱情片,因此我们判定未知电影是爱情片。

那么问题来了,我们评判距离的方法是什么呢?
欧式距离:也就是我们初中学的两点之间的距离公式:根号下(x^2 - y^2)
代码实现流程:
对于每一个在数据集中的数据点:
1、计算目标的数据点(需要分类的数据点)与该数据点的距离
2、将距离排序:从小到大
3、选取前K个最短距离
4、 选取这K个中最多的分类类别
5、返回该类别来作为目标数据点的预测值
那么我们如何正确的选取k呢?
对查询点标签影响显著(效果拔群)。k值小的时候 近似误差小,估计误差大。 k值大 近似误差大,估计误差小。
如果选择较小的 k 值,就相当于用较小的邻域中的训练实例进行预测,“学习”的近似误差(approximation error)会减小,只有与输入实例较近的(相似的)训练实例才会对预测结果起作用。但缺点是“学习”的估计误差(estimation error)会增大,预测结果会对近邻的实例点非常敏感。如果邻近的实例点恰巧是噪声,预测就会出错。换句话说,k 值的减小就意味着整体模型变得复杂(可以理解为将一个整体划分为更多的小块),容易发生过拟合。如果选择较大的 k 值,就相当于用较大的邻域中的训练实例进行预测。其优点是可以减少学习的估计误差。但缺点是学习的近似误差会增大。这时与输入实例较远的(不相似的)训练实例也会对预测起作用,使预测发生错误。 k 值的增大就意味着整体的模型变得简单。
太大太小都不太好,可以用交叉验证(cross validation)来选取适合的k值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值