《机器学习》习题参考
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

机器学习是人工智能的核心领域之一,其理论和方法的教学、教材建设受到广泛关注,对培养人工智能高端人才极为重要.近年来大量优秀的机器学习相关书籍相继出版,它们详细介绍了机器学习的基础知识、常用算法或前沿技术.在学习机器学习之余,结合相应的习题、编程实践能够增强读者对相关概念的理解,加深对该领域的认识.

在众多机器学习相关书籍中,周志华教授所著的《机器学习》(读者昵称“西瓜书”)无疑是最知名的教材之一。《机器学习》已出版8年多,印刷40余次,印量达73万册,荣登各图书网站畅销书榜,成为世界知名、使用广泛的中文机器学习教材。本书是《机器学习》(本书中将简称为“教材”)的教学或自学的辅助参考书,包含大量习题,对教材中关于基本概念和常用算法的第1~10章内容进行考查.本书的习题与教材章节末的习题并不重合,一方面可以为教师授课提供作业、考评的思路参考,同时也可帮助学生在上课或自学之余通过习题练习的方式对知识点的掌握情况进行自我评测.书中习题具有不同难度,初学者可以通过这些习题了解和巩固机器学习的关键概念,而对机器学习有一定基础的读者则可以通过部分习题发现不同角度的知识点解读,为后续深入研究打下基础.本书所使用的术语和符号与教材一致.习题均具有详细解答,部分习题在解答后也给出了出题的主要思路、所考查的知识要点、其他可能的解法,以及相关知识点的关联和拓展,并对以往授课过程中发现的易错点进行了探讨.

周志华著,清华大学出版社于2016年1月出版,ISBN为978-7-302-42328-7.

章节安排

本书分为两部分.第一部分为“基础考评篇”,共10章,以计算题、简答题为主;第二部分为“综合应用篇”,共6章,以编程题、简答题为主.

第一部分对应教材第1~10章的内容,其中第1章的习题还包含对教材附录中机器学习数学基础部分的考查.这部分习题大多采用多个子问题的形式对书中知识点进行循序渐进的探究.例如,第3章关于线性模型的习题,从不同的视角对书中线性回归的公式进行推导或拓展,从而帮助读者加深理解.由于机器学习不同知识点之间关联紧密,因此各章节的习题间也有所关联.部分习题和当前机器学习的前沿研究相结合,对教材中知识点的当前研究进展进行了一定程度的介绍,并给出了相应的参考文献,供读者进行后续探索.

第二部分以“大作业”的形式考查对教材前10章知识点融会贯通的能力.此部分中每一章节将包含第一部分中一个或多个章节所覆盖的知识点.一方面考查将不同知识点灵活应用于实际问题的能力,另一方面考查对所学内容灵活拓展的能力.例如在第11章中,以线性模型为例,从最基础的数据预处理对线性模型的影响开始,逐步探究岭回归在线性分类中的应用,线性模型的调参方式,以及当训练数据量有限时如何提升线性模型的泛化能力.

实践环境

通过编程实践能够更便捷地在实际数据上探究知识点和算法的性质,同时也能更方便地展示如何在实际问题中应用机器学习算法,本书的实践环境基于Python 3这一脚本语言.Python目前已包含大量的数学、机器学习库,便于相关问题的建模和研究,例如:NumPy和SciPy中实现了大量的科学计算方法;matplotlib提供了数据交互式可视化函数;scikit-learn实现了大量的机器学习算法,且包含了模型拟合、数据预处理、模型选择、模型评估、数据集获取等常用接口.当前常用的深度学习框架,如PyTorch、TensorFlow、PaddlePaddle等,均基于Python实现.本书也默认读者具有一定的编程基础,如对编程环境不熟悉,可参考网络资源或编程相关书籍.

说明

由于篇幅所限,本书对相关知识点的细节不再另行详细介绍,仅在题目中给出所涉及知识点在教材中的对应章节.因此,本书默认读者已具备了机器学习的数学基础(如优化知识、概率论等,具体请参考教材附录),并掌握了机器学习的基本概念.例如,读者已在课堂上完成对机器学习的系统性学习,或对《机器学习》以及相关书籍进行了自学.

为避免重复,书中对于通用的基础符号仅在每章第一次出现时进行介绍.对代码的展示省略了大部分画图的代码,仅展示核心代码以及画图结果,默认所有代码均导入如下常用Python工具包:

完整代码可在https://github.com/Han-Jia/MLBookCodes获取.

机器学习领域发展极其迅速,各知识点的考查方式也极为多样,甚至主流的编程工具也在快速迭代更新.本书包含的习题仅从某个侧面对知识点进行考查,但并不妨碍读者从其他更加丰富的角度设计评测和巩固方式.由于笔者能力有限,对于机器学习仅略知皮毛,书中难免有错谬之处,望读者海涵指正,将不胜感激.

致谢

首先感谢周志华教授,他对机器学习科研的独到见解使笔者耳濡目染并在机器学习领域的研究过程中受益匪浅.笔者在和周老师共同教授“机器学习导论”课程期间,周老师对教学方式的指导也为本书习题的设计与讲解带来了巨大的帮助.本书在写作过程中也得到机器学习与数据挖掘(LAMDA)研究所的同学的帮助,特别感谢李新春、陆苏、韩路、杨嘉祺、周大蔚、施意、李岚、范文殊、明露以及“机器学习导论”课程历年的助教为本书提供了大量初步习题和解答,郑博文同学对代码格式和注释进行了统一的修改,张逸凯、蒋俊鹏、王琪玮等同学指出了本书的错误并提出了建设性意见.除了《机器学习》外,本书在写作过程中也参考了机器学习领域的优秀书籍,如Pattern Recognition and Machine LearningElements of Statistical LearningFoundations of Machine LearningProbabilistic Machine LearningAn Introduction,以及维基百科等网站上的内容.最后,笔者也特别感谢家人的理解和支持.