K近邻算法的基本原理:首先通过所有的特征变量构筑起一个特征空间,特征空间的维数就是特征变量的个数,然后针对某个测试样本,按照参数K在特征空间内寻找与它最为近邻的K个训练样本观测值,最后依据这K个训练样本的响应变量值或实际分类情况获得该样本响应变量拟合值或预测分类情况。
针对分类问题,按照“多数票规则”来确定,也就是说,K个训练样本中包含样本数最多的那一类是什么,测试样本的分类就是什么;针对回归问题,则按照K近邻估计量来确定,也就是将K个训练样本响应变量值的简单平均值作为测试样本的响应变量拟合值。
由此可以看出,K近邻算法比较简单,所以当不了解数据分布或者没有任何先验知识时,K 近邻算法是一个不错的选择。
K值代表着在K近邻算法中选择多少个近邻值用于算法构建,也是K近邻算法中最为重要的参数。比较极端的情形有两种:一种是K取值为1的时候,也就说对于特定样本,只选择与自己最近的近邻值,最近近邻值的响应变量值为多少或者分为何类,特定样本也就相应地取值为多少或者分为何类,完全一致;另一种是K取值为整个样本容量的时候,也就是说对于每一个样本,都是用所有的样本作为其近邻值,不再区分。
不难看出,这两种极端情形都不可取。如果K取值过小,整体模型变得复杂,那么就仅使用较小的邻域中的训练样本进行预测,只有距离非常近的(相似的)样本才会起作用,这会导致模型的方差过大,或者说容易过拟合,导致模型的泛化能力不足,比如在前述K取值为1的时候,可以通过数学公式证明其泛化错误率上界为贝叶斯最优分类器错误率的两倍;如果而K取值过大,整体模型变得简单,那么就会使用过大邻域中的训练样本进行预测,距离非常远的(不太相似的)样本也会起作用,这会导致模型的偏差过大,或者说容易欠拟合,导致模型没有充分利用最临近(相似)样本的信息,比如在前述K取值为整个样本容量的时候,K近邻算法对每一个测试样本的预测结果将会变得一样(或者说每个测试样本在整个样本全集中的位置与地位都是一样的)。
所以,从K取值为1开始,随着取值的不断增大,K近邻算法的预测效果会逐渐提升,然而当达到一定数值(也就是最优数值)后,随着取值进一步的增大,K近邻算法的预测效果就会逐渐下降。针对特定问题,需要找到最为合适的K,使得K近邻算法能够达到最优效果。
在K值的具体选择方面,要注意以下三点:一是在大多数情况下,K值都比较小;二是为了避免产生相等占比的情况,K值一般取奇数;三是为了更加精确地找到合适的K值,建议设置一个K值的取值区间,然后通过交叉验证等方法分别计算其预测效果,从而找到最好的K值。
上述内容节选自《Python机器学习原理与算法实现》(杨维忠、张甜著,2023年2月,清华大学出版社)。
很多朋友反映学Python、学机器学习比较难、效果不好,我的观点是:需要拿到Python、机器学习的源代码边学习边操作,从解决问题、上手操作中获得成就感,才会越学越深入,学习效果才会好。
针对数据分析或机器学习推荐两本入门级的图书:《Python机器学习原理与算法实现》(杨维忠 张甜 著 2023年2月新书 清华大学出版社)《Python数据科学应用从入门到精通》(张甜 杨维忠 著 2023年11月新书 清华大学出版社)。这两本书的特色是在数据分析、机器学习各种算法的介绍方面通俗易懂,较少涉及数学推导,对数学基础要求相对不高,在python代码方面讲的很细致,看了以后根据自身需要选取算法、优化代码、科学调参。
《Python机器学习原理与算法实现》(杨维忠 张甜 著 2023年2月新书 清华大学出版社)内容非常详实,包含了Python和机器学习,相当于一次获得了两本书。在讲解各类机器学习算法时,逐一详解用到的各种Python代码,针对每行代码均有恰当注释(这一点基本上是大多数书目做不到的)。《Python机器学习原理与算法实现》一书创作完成后,在正式出版之前,已经开发成一套系统课程,分9次授课,在某全国性股份制商业银行内部开展了培训,490人根据行内组织统一学习,授课完成后放在知鸟平台供回放学习,9次课程累计回放量近3万次,得到参训学员的一致好评,广泛应用于各位学员的工作实践。(所以,这是一本避雷避坑、已经被亲测可行的网红书,只要用心学,都没问题哦)。
《Python机器学习原理与算法实现》(杨维忠 张甜 著 2023年2月新书 清华大学出版社)
《Python数据科学应用从入门到精通》一书,旨在教会读者实现全流程的数据分析,并且相对《Python机器学习原理与算法实现》一书增加了很多概念性、科普性的内容,进一步降低了学习难度。国务院发展研究中心创新发展研究部第二研究室主任杨超 ,山东大学经济学院金融系党支部书记、副主任、副教授、硕士生导师张博,山东管理学院信息工程学院院长 袁锋 教授、硕士生导师,山东大学经济学院 刘一鸣 副研究员、硕士生导师,得厚投资合伙人 张伟民等一众大牛联袂推荐。全书内容共分13章。其中第1章为数据科学应用概述,第2章讲解Python的入门基础知识,第3章讲解数据清洗。第4~6章介绍特征工程,包括特征选择、特征处理、特征提取。第7章介绍数据可视化。第8~13章介绍6种数据挖掘与建模方法,分别为线性回归、Logistic回归、决策树、随机森林、神经网络、RFM分析。从数据科学应用和Python的入门,再到数据清洗与特征工程,最终完成数据挖掘与建模或数据可视化,从而可以为读者提供“从拿到数据开始,一直到构建形成最终模型或可视化报告成果”的一站式、全流程指导。买这一本书相当于一下子得到了5本书(Python基础、数据清洗、特征工程、数据可视化、数据挖掘与建模),入门超级简单,不需要编程基础,也不需要过多数学推导,非常适用于零基础学生。
两本书随书赠送的学习资料也很多,包括全部的源代码、PPT、思维导图,还有10小时以上的讲解视频,每一章后面还有练习题及参考答案,还有学习群,相对于只看网络上的视频,一方面更加系统、高效,另一方面照着书一步步操作学起来也事半功倍。全网热销中,当当、京东等平台搜索“Python机器学习 杨维忠”“Python数据科学 杨维忠”即可。