【吃瓜教程】周志华机器学习西瓜书第三章答案

AI助手已提取文章相关产品:

线性模型结构梳理

3.1 试析在什么情形下式3.2中不必考虑偏置项b

答案一:

偏置项b在数值上代表了自变量取0时,因变量的取值;

1.当讨论变量x对结果y的影响,不用考虑b;
2.可以用变量归一化(max-min或z-score)来消除偏置。

 答案二:

线性规划的两个实例相减可以消去b,所以 可以令训练集的每一个样本减去第一个样本,然后对新的样本进行线性回归,此时就可不必考虑偏置项。(有点儿类似变量归一化的意思)。 

3.2试证明,对于参数w,对率回归的目标函数是非凸的,但其对数似然函数是凸的(参数存在最优解)。 

凸函数证明方法(充要条件):若f(x)在D上是半正定的,则f(x)在D上是凸函数。反之不是凸函数。

仅证明了是凸函数, 证目标函数非凸可以证明其海塞矩阵非凸即可。

3.3 编程实现对率回归,并给出西瓜数据集3.0a上的结果。 

编程实现对率回归:
思路一:* 采用sklearn逻辑斯蒂回归库函数实现,通过查看混淆矩阵,绘制决策区域来查看模型分类效果(直接调用封装好的对数几率回归函数);
思路二:* 自己编程实现,从极大化似然函数出发(找损失函数),采用梯度下降法得到最优参数(求解可行最优解),然后尝试了随机梯度下降法(优化参数)来优化过程。

1.获取数据、查看数据、预处理: 

(待更新)

3.4 选择两个UCI数据集,比较十折交叉验证法和留一法所估计存储的对率回归的错误率。

 (待更新)

3.5编程实现线性判别分析(LDA),并给出西瓜数据集3.0a上的结果。

(待更新)

3.6线性判别分析仅在线性可分数据集上能获得理想结果,试设计一个改进方法,使其能较好地用于非线性可分数据。 

在当前维度线性不可分,可以借助适当的映射函数映射到高维空间,使其在高维空间线性可分。(有定理证明:数据在低维线性不可分但经过映射后总会在一个高维空间线性可分,支持向量机处可能有证明)(事实上,这也是分类问题处理线性不可分数据的主要思路)

给出两种思路:

  • 参考书p57,采用广义线性模型,如 y-> ln(y)。
  • 参考书p137,采用核方法将非线性特征空间隐式映射到线性空间,得到KLDA(核线性判别分析)。

 3.7 令码长为9,类别数为4,试给出海明距离意义下理论最优的ECOC(纠错输出码)二元码并证明。

对于ECOC二元码,当码长为2的n次方时,至少可以使2n个类别达到最优间隔,他们的海明距离为2的n-1次方。

参考书p65,对于同等长度的编码,理论上来说,任意两个类别间的编码距离越远,纠错能力越强。那么如何实现呢,可参考文献Error-Correcting Output Codes。下图是截取文中的关于在较少类时采用exhaustive codes来生成最优ECOC二元码的过程:

机器学习(周志华)课后习题——第三章——线性模型 - 知乎 (zhihu.com)

原书对很多地方解释没有解释清楚,把原论文看了一下《Solving Multiclass Learning Problems via Error-Correcting Output Codes》。

先把几个涉及到的理论解释一下。

首先原书中提到:

对同等长度的编码,理论上来说,任意两个类别之间的编码距离越远,则纠错能力越强。因此,在码长较小时可根据这个原则计算出理论最优编码。

其实这一点在论文中也提到,“假设任意两个类别之间最小的海明距离为 d ,那么此纠错输出码最少能矫正   位的错误。

拿上图论文中的例子解释一下,上图中,所有类别之间的海明距离都为4,假设一个样本正确的类别为c1 ,那么codeword应该为 ‘0 0 1 1 0 0 1 1’,若此时有一个分类器输出错误,变成‘0 0 0 1 0 0 1 1’,那么此时距离最近的仍然为 c1 ,若有两个分类输出错误如‘0 0 0 0 0 0 1 1’,此时与   的海明距离都为2,无法正确分类。即任意一个分类器将样本分类错误,最终结果依然正确,但如果有两个以上的分类器错误,结果就不一定正确了。这是   的由来。

第一点其实就是原书提到的,已经解释过了,说说第二点:

如果两个分类器的编码类似或者完全一致,很多算法(比如C4.5)会有相同或者类似的错误分类,如果这种同时发生的错误过多,会导致纠错输出码失效。(翻译原论文)

个人理解就是:若增加两个类似的编码,那么当误分类时,就从原来的1变成3,导致与真实类别的codeword海明距离增长。极端情况,假设增加两个相同的编码,此时任意两个类别之间最小的海明距离不会变化依然为 d ,而纠错输出码输出的codeword与真实类别的codeword的海明距离激增(从1变成3)。所以如果有过多同时发出的错误分类,会导致纠错输出码失效。

另外,两个分类器的编码也不应该互为反码,因为很多算法(比如C4.5,逻辑回归)对待0-1分类其实是对称的,即将0-1类互换,最终训练出的模型是一样的。也就是说两个编码互为补码的分类器是会同时犯错的。同样也会导致纠错输出码失效。

当然当类别较少时,很难满足上面这些条件。如上图中,一共有三类,那么只有 2的3次方=8 中可能的分类器编码(   ),其中后四种(   )是前四种的反码,都应去除,再去掉全为0的 ,就只剩下三种编码选择了,所以很难满足上述的条件。事实上,对于  种类别的分类,再去除反码和全是0或者1的编码后,就剩下 [公式] 中可行的编码。

原论文中给出了构造编码的几种方法。其中一个是:

preview

回到题目上,在类别为4时,其可行的编码有7种,按照上述方法有:

当码长为9时,那么 f6 之后加任意两个编码,即为最优编码,因为此时再加任意的编码都是先有编码的反码,此时,类别之间最小的海明距离都为4,不会再增加。

类别数为4,因此1V3有四种分法,2V2有六种分法,3V1同样有四种分法。按照书上的话,理论上任意两个类别之间的距离越远,则纠错能力越强。那么可以等同于让各个类别之间的累积距离最大。对于1个2V2分类器,4个类别的海明距离累积为4;对于3V1与1V3分类器,海明距离均为3,因此认为2V2的效果更好。因此我给出的码长为9,类别数为4的最优EOOC二元码由6个2V2分类器和3个3v1或1v3分类器构成。

另一种答案

纠错输出码原理及文献综述

 3.8 ECOC编码能起到理想纠错作用的重要条件是:在每一位编码上出错的概率相当且独立。试分析多分类任务经ECOC编码后产生的二分类器满足该条件的可能性及由此产生的影响。

 ECOC编码能起到理想纠错作用的重要条件是:在每一位编码上出错的概率相当且独立。因为一个码位的出错率较高,会导致这个码位的保持相同的较低信用,进而不再具有分类作用。这就相当于全0或全1的分类器,这点和NFL定理(没有免费的午餐定理)前提很像。但由于样本很难满足每一位编码出错的概率相当且独立,所以书中提到了有多种问题依赖的ECOC问题

 3.9 使用OvR和MvM将多分类任务分解为二分类任务求解时,试述为何无需专门针对类别不平衡性进行处理。

参考书p66,对OvR、MvM来说,由于对每类进行了相同的处理,其拆解出的二分类任务中类别不平衡的影响会相互抵销,因此通常不需专门处理。

OvR(一对其余)为例,由于其每次以一个类为正其余为反(参考书p63),共训练出N个分类器,在这一过程中,类别不平衡由O的遍历而抵消掉。

以ECOC编码为例,每个生成的二分类器会将所有样本分成较为均衡的二类,使类别的不平衡性的影响减小。当然拆解后仍然可能出现明显的类别不平衡现象,比如一个超级大类和一群小类。

 3.10试推导出多分类代价敏感学习(仅考虑基于类别的误分类代价)使用“再缩放”能获得理论最优解的条件。

见 周志华《机器学习》课后习题(第三章):线性模型_红色石头的专栏-优快云博客

参考:周志华《机器学习》课后习题解答系列(四):Ch3 - 线性模型_Snoopy_Yuan技术部落格-优快云博客

西瓜书机器学习课后答案周志华.pdf-原创力文档 (book118.com)

您可能感兴趣的与本文相关内容

### 关于周志华机器学习》(西瓜)第二章的学习笔记 #### 模型评估与选择概述 模型评估与选择是机器学习领域的重要组成部分,旨在通过合理的方法评价不同模型的表现挑选最优者。这一过程不仅涉及如何衡量单个模型的好坏,还包括怎样对比多个候选方案以做出最佳决策。 #### 偏差、方差和噪声的概念解析 偏差度量了学习算法的期望预测与实际结果之间的差距,反映了算法自身的拟合精度;方差描述的是相同规模训练集变化引起的学习效果波动情况,体现了数据扰动带来的影响;而噪声则设定了给定任务下所有可能采用的学习方法能达到的最佳预期泛化误差界限,揭示了问题本身固有的复杂性和挑战性[^2]。 #### 性能度量指标——P-R图及其应用 为了更直观地展示各类分类器的工作特性,通常会绘制精确-召回(Precision-Recall, P-R)曲线来辅助分析。当面对多组实验结果时,可以通过观察这些图形相互间的位置关系来进行优劣评判:如果某条曲线始终位于另一条之上,则表明前者具有更好的整体表现;而对于那些存在交点的情况,则需进一步计算各自下方区域面积大小作为判断依据之一。此外,“平衡点”作为一种特殊的性能测度,在特定条件下也能提供有价值的参考信息[^3]。 #### 偏差-方差分解理论简介 该理论为理解学习算法的一般化能力提供了框架性的指导思路,通过对平均测试错误实施拆分操作,可以深入剖析导致过拟合现象背后的原因所在,据此探索改进措施的方向。具体而言,总误差由三部分构成——不可约减误差点(即噪声)、平方形式表达出来的偏差项以及线性累加而成的方差成分[^4]。 ```python import numpy as np from sklearn.model_selection import train_test_split from sklearn.metrics import precision_recall_curve, auc def evaluate_model_performance(model, X, y): """ 计算返回PR曲线下面积(AUC),用于量化模型的整体性能。 参数: model (object): 已经训练好的分类模型实例。 X (array-like of shape (n_samples, n_features)): 测试特征矩阵。 y (array-like of shape (n_samples,)): 对应的真实标签向量。 返回: float: PR AUC得分。 """ # 划分训练集/验证集 X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2) # 使用训练集拟合模型 model.fit(X_train, y_train) # 获取验证集中各观测对应的概估计值 probas_pred = model.predict_proba(X_val)[:, 1] # 绘制PR曲线求得AUC分数 precisions, recalls, _ = precision_recall_curve(y_val, probas_pred) pr_auc_score = auc(recalls, precisions) return pr_auc_score ```
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值