机器学习课后习题答案(周志华)
20页1、第二章 模型评估与选择1.数据集包含1000 个样本,其中500 个正例, 500 个反例,将其划分为包含70%样本的训练集和 30% 样本的测试集用于留出法评估,试估算共有多少种划分方式。一个组合问题,从500500 正反例中分别选出150150 正反例用于留出法评估,所以可能取法应该是 (?500150)2。2.数据集包含100 个样本, 其中正反例各一半,假定学习算法所产生的模型是将新样本预测为训练样本数较多的类别(训练样本数相同时进行随机猜测),试给出用10 折交叉验证法和留一法分别对错误率进行评估所得的结果。10 折交叉检验:由于每次训练样本中正反例数目一样,所以讲结果判断为正反例的概率也是一样的,所以错误率的期望是5050%。留一法: 如果留下的是正例,训练样本中反例的数目比正例多一个,所以留出的样本会被判断是反例;同理,留出的是反例,则会被判断成正例,所以错误率是100% 。3.若学习器A 的 F1 值比学习器B 高,试析A 的 BEP 值是否也比B 高。4.试述真正例率(TPR) 、假正例率(FPR)与查准率(P) 、查全率( R)之间的联系。查全率 : 真实正例被预测
2、为正例的比例真正例率 : 真实正例被预测为正例的比例显然查全率与真正例率是相等的。查准率 :预测为正例的实例中真实正例的比例假正例率 : 真实反例被预测为正例的比例两者并没有直接的数值关系。9.试述卡方检验过程。第三章 线性模型2.试证明,对于参数w,对率回归( logistics回归)的目标函数(式1)是非凸的,但其对数似然函数(式2)是凸的。如果一个多元函数是凸的,那么它的Hessian 矩阵是半正定的。3.编程实现对率回归,并给出西瓜数据集3.0 上的结果http:/ 数据集,比较10 折交叉验证法和留一法所估计出的对率回归的错误率。http:/ 上的结果。http:/ LDA 仅在线性可分数据上能获得理想结果,试设计一个改进方法,使其能较好地用于非线性可分数据。在当前维度线性不可分,可以使用适当的映射方法,使其在更高一维上可分,典型的方法有KLDA,可以很好的划分数据。9.使用 OvR 和 MvM将多分类任务分解为二分类任务求解时,试述为何无需专门针对类别不平衡性进行处理。书中提到,对于OvROvR,MvMMvM来说,由于对每个类进行了相同的处理,其拆解出的二分类任务中类别不平
3、衡的影响会相互抵消,因此通常不需要专门处理。以ECOCECOC 编码为例,每个生成的二分类器会将所有样本分成较为均衡的二类,使类别不平衡的影响减小。当然拆解后仍然可能出现明显的类别不平衡现象,比如一个超级大类和一群小类。第四章 决策树4.1.试证明对于不含冲突数据(即特征向量完全相同但标记不同)的训练集,必存在与训练集一致(即训练误差为0)的决策树。因为决策树是通过属性来划分,相同属性的样本最终肯定会进入相同的叶节点。一个叶节点只有一个分类, 如果样本属性相同而分类不同,必然产生训练误差。反之,决策树只会在当前样本集合是同一类或者所有属性相同时才会停止划分,最终得到训练误差为0 的决策树。4.2.试析使用“最小训练误差”作为决策树划分选择的缺陷。从机器学习最开始就讲起,最小训练误差并不可靠,由于过度学习样本特性最终导致严重的过拟合,而没有泛化能力。4.3.试编程实现基于信息熵进行划分选择的决策树算法,并为表 4.3 中数据生成一棵决策树。http:/ ID3 算法4.4.试编程实现基于基尼指数进行划分选择的决策树算法,并为表4.2 中数据生成预剪枝、后剪枝决策树,并与未剪枝决策树进行比
4、较。http:/ CART 算法4.5.试编程实现基于对率回归进行划分选择的决策树算法,并为表4.3 中数据生成一棵决策树。http:/ 的多变量决策树 模型,这里我们将每个非叶节点作为一个对率回归分类器,输出为”是”、”否”两类,形成形如二叉树的决策树。4.6.试选择 4 个 UCI 数据集,对上述3 种算法所产生的未剪枝、预剪枝、后剪枝决策树进行实验比较,并进行适当的统计显著性检验。答案一简要的分析一下:ID3 算法基于信息熵增益,CART 算法则采用了基尼系数。两种划分属性选择均是基于数据纯度的角度, 方法差距应该不大(CART 可能要好一点) 。而对率回归进行划分选择,以斜划分的方式,实现了多变量参与划分,其模型决策边界更光滑。相比于决策树的生成算法,剪枝操作更影响模型性能。答案二这里要对上面三种实现的算法进行未剪枝,预剪枝,后剪枝做比较,对率回归划分就算了,都不知道是个什么情况,信息增益和基尼指数的差别并不大,其实就是为了比较未剪枝,预剪枝,后剪枝对测试样本的输出结果。显著性分析,对2 种算法, 3 种剪枝方式的错误数做方差分析, 信息增益和基尼指数有显著区别是拒绝的,未剪枝
5、,预剪枝,后剪枝有显著区别是接受的。4.7.图 4.2 是一个递归算法,若面临巨量数据,则决策树的层数会很深,使用递归方法易导致“栈”溢出,试使用“队列”数据结构,以参数 maxDepth控制数的最大深度,写出与图4.2等价、但不使用递归的决策树生成算法。答案一直接用递归会导致大量的临时变量被保存,当层数过深时会导致“栈”溢出。用队列对决策树进行层次遍历来生成,用Max_Depth 来控制树的最大层数。队列中每个元素代表着决策树的每个节点,它必要的属性有:样本集合、剩余属性集合,当前层数指示,父节点序号。队列一开始里面只有一个元素,就是最初初始化,带着所有样本的根节点。然后当队列不为空的时候开始循环,每次取出一个元素,判断是否需要划分,如果不要, 就是一个叶节点,出队列就不用管了;如果需要划分,那么找出最好的划分属性,然后划分成n个子区间,依次送入队列,继续循环,直到队列为空。是否需要划分有3 个依据 : 当前所有样本属于一类当前所有样本属性完全相同达到了 Max_Depth 的深度这样就完成了层次遍历(广度优先搜索 )对决策树的构建。显然由于每次出队的元素要先完全划分,那么如果是进行
《机器学习课后习题答案(周志华)》由会员p****杀分享,可在线阅读,更多相关《机器学习课后习题答案(周志华)》请在金锄头文库上搜索。
2021-06-01 17页
2021-02-21 7页
2021-02-21 12页
2021-02-21 11页
2021-02-21 12页
2021-02-21 8页
2021-02-21 28页
2021-02-21 18页
2021-02-21 14页
2021-02-21 21页