- 机器学习算法的数学解析与Python实现
- 莫凡
- 3363字
- 2023-06-16 17:32:51
前言
这是一本介绍机器学习的书,按常理来说,我应该首先介绍学习机器学习的重要性。可是,有必要吗?我记得约五年前,机器学习还是一个很有科幻色彩的术语,而现在技术学习圈几乎整版都换成了机器学习的各种模型,国内很多大学已经开始设立人工智能专业,机器学习当仁不让地成为核心课程。据说相关学者已经将该知识编制成课本,即将走入中学课堂。机器学习的火热,连带着让长年不温不火的Python语言也借机异军突起,甚至掀起一阵Python语言的学习热潮。机器学习已经成为“技术宅”的一种必备技能,因此,实在没必要再占篇幅介绍它的重要性。
但是,学习机器学习的路途是坎坷和颠簸的,唯一不缺的就是让你半途而废的借口。机器学习今日的成就是站在巨人的肩膀上取得的,因此,当你终于下定决心学习机器学习时,很多人会给你开出一串长长的学习清单:机器学习涉及大量向量和矩阵运算,所以线性代数是肯定要学的;机器学习的很多模型算法都以统计知识作为背景,所以统计学和概率论也是必修的;许多重要环节依赖微分运算,那本好久不看的《高等数学》是不是到了重出江湖的时候了?
想想看,如果告诉你学习机器学习,首先得把《线性代数》《概率统计》《高等数学》统统翻一遍,然后你才只是刚刚摸到学习机器学习的起跑线,如果不擅长数学,你得需要多大的毅力才能坚持下来,把机器学习学明白?
真的很难,如果开始学习机器学习时我就知道后面会承受这么多“痛苦”,也许我根本就不会开始。特别是如果你也是利用业余时间来自学机器学习,那么真的称得上煎熬:当你已经为别的事情绞尽脑汁,好不容易有了那么一点属于自己的时间,想要学习充电时,结果鼓起勇气翻开书本,扑面而来的全是各种难以理解的数学公式和闻所未闻的专业术语,你就能立即体会到什么是无力感。
那时我总是在想,能不能有一本教机器学习的书对读者友好一点。首先不要假设读者擅长数学,认为读者一上来就可以看懂各种高深的数学公式,在介绍机器学习具体模型算法时要能按照从宏观到微观的顺序介绍。刚接触新的知识领域,先把模型算法的主要原理和基本结构讲清楚,让读者在脑海里勾勒出基本的轮廓,明确各种概念之间的关系,然后才深入各个细枝末节展开介绍,这样读者才不至于觉得自己一直在各种陌生的公式里转来转去,最后看得晕头转向。最后我还想再贪心一点,希望这本书的文字能够稍微有趣一点,最好能像弹幕评论那样在不经意间引人会心一笑,毕竟我是利用睡前的时间来学习机器学习,辛苦了一天,身体和精神都很疲惫,文字太生硬的话恐怕是啃不动的。
我找了很久,可惜直到最后也未能找到这样的一本书。现在,我决定自己动手来写一本。不过,这本书也并不能让你在短期内就全面掌握机器学习的各种知识。机器学习不但自成体系,自身就拥有枝繁叶茂的知识结构,而且也从多门大学科里汲取养分,又带有交叉学科的一些特点,可能将一个子问题深入研究下去就能发展成一门新学科——从神经网络发展到深度学习就是一个很好的例子。弱水三千,一本书哪怕写得再凝练透彻,也只能取一瓢饮。学习机器学习犹如建造大厦,总是需要从最基础的开始学,筑牢根基,然后一本一本地往上堆叠各有侧重的书本,才可能最终构建出完整的知识体系。
每一本书都有自己的使命。初学机器学习时,遇到的最大问题是迷茫,我深有体会。面对机器学习领域数量繁多又互有交叉的知识点,就像身处一大片繁茂的森林,没有指南设备很难不迷失方向,而大量好不容易挤出来的宝贵时间就浪费在辨别方向上了。在本书中,我负责为你踹开机器学习世界的大门,绘制出这个庞大而陌生的世界中的“山河湖海”,总体是怎样的,哪里是重点,哪里是难点,哪些点用到了哪些学科知识,点和点之间的关系又是怎样的,我都迫不及待想要一一清楚地告诉你。为了完成这个使命,我会竭尽全力,但也请原谅我无法“送佛到西”,正如前面所述,每个知识点深入下去,可能又是一片茂密的森林,机器学习涉及的知识点众多,我希望通过本书能让你清楚地看到兴趣所在,不过知识点背后仍然有很长很长的路,还请加倍努力。
最后,我想谈一谈“要不要亲手实现一遍机器学习算法”这个争议很大的问题。我推崇学以致用,用机器学习算法解决实际问题才是本书的最终目的,所以本书将会涉及如何在实际中使用书中提及的机器学习算法的问题。对于这个问题,一般会有两种选择,一种是让读者亲手从头实现一遍算法,另一种则是直接使用现成的算法库。对于这个问题,如何选择争议很大,本书中选择的是后者。
学习机器学习的动机很多,可能是实际工作需要,可能是兴趣爱好,也可能是学业要求,从每种动机的角度看,这个问题都可能有不同的答案。我认同许多人所说的求知不能太功利这一观点,不过大家的时间和精力毕竟有限,就算不去追求投入产出比,至少也应该有一个学这门知识想要达到的目的。机器学习是更偏重于应用的学问,在当下的发展也确实使得机器学习越来越像一门技能,而不仅仅是技术。初学算法时我最想学的是里面的“最强算法”,不过在第1章我将介绍,机器学习算法没有最强的,只有最合适的,对于不同的问题,对应会有不同的最合适算法。所以,我们更需要关注的应该是问题,而不是算法本身。在本书中我选择介绍市面上成熟的机器学习算法包,通过现成的算法包,就能够根据实际要解决的问题直接选择所需要的机器学习算法,从而把注意力集中在对不同算法的选择上。
本书的目标读者是想要学习机器学习的学生、程序员、研究人员或者爱好者,以及想要知道机器学习是什么、为什么和怎么用的所有读者。本书第1章介绍机器学习总体背景,第2章介绍配置环境,第3章到第10章彼此独立,每一章介绍一种具体的机器学习算法,读者可以直接阅读想要了解的算法,第11章介绍了集成学习方法,这是一种组合机器学习算法的方法,也是当前在实际使用中常见又十分有效的提升性能的做法。
各章详细内容如下:
第1章首先介绍机器学习究竟是什么,特别是与“人工智能”“深度学习”这些经常在一起出现的术语究竟有什么关系,又有什么区别。本章也将对机器学习知识体系里的一些常用术语进行简要说明,如果读者此前并不了解机器学习,则可以通过本章了解相关背景知识。
第2章对当前机器学习算法常用的Python编程语言以及相关的Python库进行介绍,同时列举一些常用的功能。
第3章开始正式介绍机器学习算法,要介绍的第一款机器学习算法是线性回归,本章将对回归问题、线性模型和如何用线性模型解决回归问题,以及对机器学习解决问题的主要模式进行介绍。
从第4章开始,介绍当下机器学习应用最广的分类问题,第一款解决分类问题的算法是Logistic回归分类算法,即用线性模型结合Logistic函数解决分类问题。
第5章介绍KNN分类算法,这款算法不依赖太复杂的数学原理,因此一般被认为是最直观好懂的分类算法之一。
第6章介绍朴素贝叶斯分类算法,它基于贝叶斯公式设计,理论清晰、逻辑易懂,是一款典型的基于概率统计理论解决分类问题的机器学习算法。
第7章介绍决策树分类算法,这是一款很重要的算法,从思想到结构都对程序员非常友好,当前XGBoost等主流机器学习算法就是在决策树算法的基础上,结合集成学习方法设计而成的。
第8章介绍支持向量机分类算法,这是一款在学术界和工业界都有口皆碑的机器学习模型。在深度学习出现之前,支持向量机被视作最被看好的机器学习算法,能力强、理论美,也是本书中最为复杂的机器模型。
第9章介绍无监督学习的聚类问题,以及简单好懂的聚类算法——K-means聚类算法。
第10章介绍神经网络分类算法,当前大热的深度学习就是从神经网络算法这一支发展而来的,而且大量继承了神经网络的思想和结构,可以作为了解深度学习的预备。
第11章介绍集成学习方法,以及如何通过组合两个以上的机器学习模型来提升预测效果。
我自己也经常阅读各类书籍,常常看到不少作者提到写书不易,待自己写作了一本书之后,才真正体会到写书真是一段漫长的“马拉松”,只有真正经历了才能明白其中所需要的决心和毅力。本书能顺利写作完成,首先要感谢我的妻子,她的一句“真想看你写完的这本书”是我克服白天工作的疲惫,坚持写下来的最大动力;我还要感谢我的父母,他们培养了我学习新知识的兴趣,更让我懂得了学习新知识的最大乐趣在于分享,继而深深地埋下了写作本书的梦想种子;最后我需要特别正式地感谢本书的策划编辑吴怡女士,这个世界上大大小小的进程都需要一个第一推动力——吴怡女士促使了我写作本书的梦想变成现实。