前言
时至今日,以机器学习为代表的人工智能技术已经取得令人惊叹的成就。从计算机视觉、自然语言处理、推荐系统,到人脸识别、自动驾驶、医学诊断和电子竞技等,机器学习已逐渐普及到各行各业。
作为一名算法工程师,笔者从2017年以来一直从事医疗数据和医学影像数据的处理和分析工作。在笔者的技术成长过程中,李航老师的《统计学习方法》和周志华老师的“西瓜书”《机器学习》,给了笔者极大的帮助和启发。对于国内机器学习相关方向的学生和从业人员,这两本书几乎人手一本。
这两本书有一个共同的特点,就是理论功底相当深厚,但不太注重算法的代码实现。这两年笔者接触了不少求职者,其中大部分人除了在机器学习基本原理上狠下功夫之外,并不满足于现有机器学习调包的学习方式,希望能够从底层的算法实现逻辑和方法上更加深入地掌握机器学习。事实上,随着这几年机器学习的火爆,从业门槛也越来越高,以至于经常出现让面试者现场手推对数几率回归1和手写反向传播代码的情况。这些都使得笔者产生了撰写这本书的想法。
1英文为logistic regression,本书遵从“西瓜书”的叫法。
机器学习是一门建立在数学理论上的应用型学科,完备的数学公式推导对于每一个机器学习研究者都是非常必要的。而代码实现是更加深入地理解机器学习算法的内在逻辑和运行机制的不二法门。因此,本书取名为《机器学习:公式推导与代码实现》。
本书力求系统、全面地展示公式推导和代码实现这两个维度。全书分为六大部分,26章,包括入门篇、监督学习单模型、监督学习集成模型、无监督学习模型、概率模型和总结。其中监督学习的两大部分是本书的重点内容。在叙述方式上,全书每一章对应一个具体的模型和算法,一般会以一个例子或者概念作为切入点,然后重点从公式推导的角度介绍算法,最后辅以一定程度的基础代码实现,重在展现算法实现的内在逻辑。各部分、各章内容相对独立,但前后又多有联系,读者可以从头到尾通读全书,也可以根据自身情况选读某一部分或某一章节。
本书既可以作为机器学习相关专业的教学参考书,也可以作为相关从业者的面试工具书。本书的理论体系在很大程度上参考了《统计学习方法》和“西瓜书”《机器学习》,在此也向二位老师表示感谢。本书初稿完成后,人民邮电出版社图灵公司的王军花老师认真对本书做了审稿和编校,提出了很多建设性的修改意见,并全程指导了本书的出版过程,在此向王老师表示衷心的感谢。全书代码实现思路和框架部分参考了开源库的官方教程、GitHub的开源贡献和一些网络资源,包括但不限于斯坦福大学的CS231n计算机视觉课程、吴恩达deeplearningai深度学习专项课程、博客园和知乎专栏。写作过程中也得到了一些开源贡献者的支持,在此一并表示感谢。因篇幅有限,部分章节的模型和算法借助了一些现成的算法库进行实现,全书代码可参考笔者的GitHub地址(luwill)2。
2本书源码也可在图灵社区(iTuring.cn)本书主页下载。
因为笔者水平有限,成书时间仓促,书中难免会有错误和不当之处,欢迎各位读者指正或提出修改意见。
鲁伟
2021年9月5日