《机器学习》西瓜书课后习题作业笔记

仅以此纪念我大学最后一门也可能是对我读研最有用的一门选修课。

目录

前言

第一章 绪论

T1.1

T1.2

第二章 模型评估与选择

T2.1

T2.2

T2.3

T2.4

总结


前言

虽然只剩了0.5学分需要修,但是为了以后读研入门方便所以义无反顾地选了这门上课人数只有个位数的3学分的选修课。听课听的确实有些吃力,而且感觉机器学习不像自己之前想当然以为的那样是一种纯编程的课程。目前个人感觉机器学习更像是一种解决问题的数学方法,而编程只是实现这一方法的工具。

为了以后读研(和期末考试)方便,特此将西瓜书的课后题(作业部分)记录在此,希望能加深自己的理解。希望评论区能有大佬对我不成熟且非独立思考出来的解题思路进行指正,共勉


第一章 绪论

主要知识点:机器学习的定义,强化学习和监督学习,机器学习算法的流程(提取特征、不同的算法对特种空间做不同划分、产生不同结果),没有免费午餐定理NFL,基本术语,假设空间,归纳偏好……

※Tom Mitchell定义:一个计算机程序被称为可以学习,是指它能够针对某个任务T和某个性能指标P,从经验E中学习。这种学习的特点是,它在T上被P所衡量的性能会随着经验E的增加而提高。

※没有免费午餐定理:任何一个预测函数,如果在一些训练样本上表现好,那么必然在另一些训练样本上表现不好,如果不对数据在特征空间的先验分布有一定假设,那么表现好与表现不好的情况一样多。

奥卡姆剃刀:若有多个假设与观察一致,选择最简单的假设。

T1.1

表1.1中若只包含编号1和4的两个样例,试给出相应的版本空间。

编号 色泽 根蒂 敲声 好瓜(标记)
1 青绿 蜷缩 浊响 好瓜
4 乌黑 稍蜷 沉闷 坏瓜

解:训练数据集对应的假设空间有3×4×4+1=49种假设。而搜索过程中可以不断删除与正例不一致,或与反例一致的假设,最终得到与训练集一致的结果假设。

经删除处理后,假设空间中剩余的假设为

①色泽=青绿,根蒂=*,敲声=*

②色泽=*,根蒂=蜷缩,敲声=*

③色泽=*,根蒂=*,敲声=浊响

④色泽=青绿,根蒂=蜷缩,敲声=*

⑤色泽=青绿,根蒂=*,敲声=浊响

⑥色泽=*,根蒂=蜷缩,敲声=浊响

⑦色泽=青绿,根蒂=蜷缩,敲声=浊响

以上为最后的假设集合,也就是版本空间。

T1.2

与使用单个合取式来进行假设表示相比,使用“析合范式”将使得假设空间具有更强的表示能力。例如

好瓜((色泽=*)^(根蒂=蜷缩)^(敲声=*))V((色泽=乌黑)^(根蒂=*)^(敲声=沉闷)),

会把“(色泽=青绿)^(根蒂=蜷缩)^(敲声=清脆)”以及“(色泽=乌黑)^(根蒂=硬挺)^(敲声=沉闷)”都分类为“好瓜”,若使用最多包含k个合取式的析合范式来表达表1.1西瓜分类问题的假设空间,试估算共有多少种可能的假设。

解:老师上课讲了两种结果。

结果一:在不包括空集的情况下,一个合取范式表示的假设有(2+1)×(3+1)×(3+1)=48种。

               则最多包含1个合取范式的析合范式可表示为1+48=49种假设。

               因为题中问“最多包含k个合取式”,所以用0、1、……、k个合区试表示假设空间均符合。

               因此最多包含k个合取式的析合范式可表示的假设共有(去掉空集)

 \sum_{n=0}^{k} C_{48}^{n} - 1 = 2^{48}-1

“但是,”老师说道,“48种假设中包含了众多含有通配符*的假设情况,所以在析取多个包含通配符的合取式时必然会出现冗余情况,所以实际可表示的假设并没有这么多。”

结果二:不考虑通配符 “*”,则一个合取式只能包含2×3×3=18种假设。若将假设成立视为“1”,假设

               不成立视为“0”,那么包含了18个合取式的析合范式可表示为一个18位的二进制数,每位

               的数字代表了该位表示的假设情况是否出现。因此可表示的假设一共有(去掉空集)

 2^{18} -1


第二章 模型评估与选择

T2.1

数据集包含1000个样本,其中500个正例、500个反例,将其划分为包含70%样本的训练集和30%样本的测试集用于留出法评估,试估算共有多少种划分方式。

解:根据分层抽样原则,测试样本可有300个,其中包含150个正例和150个反例。可理解为从500个正例中随机抽取150个,再从500个反例中随机抽取150个,因此划分方式共有

\left ( C_{500}^{150} \right )^2

T2.2

数据集包含100个样本,其中正、反例各一半,假定学习算法所产生的模型是将新样本预测为训练样本数较多的类别(训练样本数相同时进行随机猜测),试给出用10折交叉验证法和留一法分别对错误率进行评估所得的结果。

解:100个样本中有50个正例50个反例。

        用10折交叉验证时,每个训练集有45个正例、45个反例,测试集有5个正例、5个反例。因为训练样本中正反例个数一样多,所以在预测测试集样本时会进行随机预测,错误率期望值应为50%。

        用留一法验证时,k=m=100,有99个训练集和1个测试集。当训练集中正例为45个、反例为44个时,模型会将测试样本(1个反例)预测为“正例”;反之,当训练集中正例为44个、反例为45个时,模型会将测试样本(1个正例)预测为“反例”。因此错误率为100%。

T2.3

若学习器A的F1值比学习器B高,试析A的BEP值是否也比B高。

解:由以下公式可知

F_1=\frac{2\times P\times R}{P+R},\quad BEP=P=R=\frac{2\times P\times P}{P+P};

        BEP只是F1的特殊情况,但BEP与F1无明确大小关系,因此F1A>F1B并不能推导出BEPA和BEPB的大小关系。

T2.4

试述真正例率(TPR)、假正例率(FPR)与查准率(P)、查全率(R)的联系。

解: TPR:真实正例被预测为正例的比例。

        R:真实正例被预测为正例的比例。

        FPR:真实反例被预测为正例的比例。

        P:预测正例是真实正例的比例。

TPR=\frac{TP}{TP+FN}\qquad P=\frac{TP}{TP+FP}

FPR=\frac{FP}{TN+FP}\qquad R=\frac{TP}{TP+FN}

        所以有:TPR=R,但FPR与P无必然联系。


总结

希望能快点领悟机器学习神经网络的内涵吧(ง •_•)ง

更新于2022.9.16

你可能感兴趣的:(机器学习,python,人工智能)