Machine Learning in Action:KNN Algorithm

本文介绍了KNN算法,一种无参数模型,适用于分类问题。KNN算法无需训练过程,但预测阶段计算复杂度高。文章通过约会网站配对效果和手写数字识别两个案例,阐述了KNN的工作原理和应用,并讨论了算法的优缺点,包括距离计算、数据归一化和K值选择。同时,提供了GitHub代码链接供读者参考。

概述

对于分类问题,最主要的任务就是找到对应数据合适的分类。而机器学习的另一项任务就是回归,比如CTR预测之类的。ml算法按照有无label可以分为有监督学习和无监督学习,对于无监督学习的算法比较经典的有聚类算法,有监督的相对来说较多,回归类算法基本都是的。按照参数有可以划分成有参数模型和无参数模型和半参数模型,有参数模型有两个特征,一个是用参数代表从训练数据中获得的信息,只有当target function包含在了hypothesis set里面才会收敛。无参数模型是没有参数的,直接存储所以的训练数据,也就是不再用参数代表训练数据,比如KNN,无训练过程,而且一定收敛。对于半参数模型,参数一定有,但是一定收敛,最经典的就是神经网络模型,神经网络模型在理论上是可以拟合所有的target function,所有只要训练数据够多,一定可以收敛,因为他的hypothesis set包含了所以的target function。
如何选择算法,需要考虑两个方面:首先是使用这个算法的目的是什么,想要完成什么任务,其次就是数据怎么来,规模多大。开放ml程序一般要经历一下步骤,首先是收集数据,准备输入数据,也就是数据预处理,分析输入数据,训练算法。

KNN Algorithm

KNN算法是属于近邻算法的一种,之前的Chapter 6一章就有专门提到。KNN的VC维是无穷的,但是效果缺不会差过最优分类器的两倍,Chapter 6博客中有证明。这个算法优点很明显,没有training cost,因为他根本没有训练过程,所以很简单,拿到直接上手预测,所以需要存储完整的训练数据来预测测试数据;预测精度高,对异常值不敏感,偶尔有几个值超出预期对于预测不会有太大影响;另外也没有数据的假定输入。
没有十全十美的事物,training cost其实不是没有了,而是转换到了预测阶段,而且空间复杂度高,需要每一次都计算distance然后sort by order。
工作原理就很简单了,首先找到一个样本数据集合,也称作训练样本集,并且样本中每一个数据都存在label,也就是知道每一个样本和分类之间的对应关系。输入新的数据后,会计算与当前新数据点最近的k个数据,最后选择k个样本中classification最多的组合,通常对于k的选择是不能被类数所整除,避免有两个类的voting是相同的,事实上就是相当于一个poll,投票选举。
计算前就涉及到了相似度的衡量,前面的文章也提到了。

伪代码

首先要计算已知类别数据集中的点与当前点之间的距离。
然后就是排序,
选取最近的K个点,
确定k个点钟类别出现的频率,
频率最高的类别就是当前新数据点的类别。
当然,K的选择一搬就是3,越高,其实越好,但是,你的回报是无法和计算代价所平衡。比如k = 3,accuracy = 97%,k

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值