西瓜书(《机器学习》周志华)习题解析-第2章-模型评估与选择

西瓜书(《机器学习》周志华)习题解析-第2章-模型评估与选择


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

500个正例和500个反例,根据分层抽样的原则,30%的测试样本共300个,其中必须包含150个正例和150个反例。若不考虑样本其他的分布情况,则选取方式为:从500个正例中随机抽取150个,再从500个反例中随机抽取150个,两个过程相互独立,则共有 ( C 500 150 ) 2 (C_{500}^{150})^2 (C500150)2 种方式。

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

10折交叉验证:将样本集划分为10个同分布不相交的子集,将其中9个作为训练集,1个作为测试集,每个划分可得到10次不同的训练和验证。对于题目所述的模型,总是将新样本预测为训练样本较多的类别,但每一次验证时,训练集的正例和反例一样多,将会进行随机猜测。每次都进行随即猜测,其错误率的期望是50%。

留一法:k折交叉验证中k等于样本个数的特例。在题目所述的情况下,即将100个样本每次取出1个样本用于测试,99个用于训练。当1个测试样本为正例时,99个训练样本为50个反例和49个正例,新样本将被预测为出现较多的反例,而测试样本的ground truth是正例,必然会预测错误。当测试样本为反例时同理必然会预测错误,此时错误率的期望为100%。

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

首先,了解什么是F1,什么是BEP。F1:查准率P和查全率R的调和平均;BEP:Beak-Even Point,P-R曲线上P = R时二者的取值。

F1和BEP有概念上的巨大差异,二者没有必然联系。P-R曲线的定义是:学习器将所有样本按“可能是正例”的概率从前向后排序,然后依次将前若干个样本按正例进行预测,所得出的预测结论。注意此时BEP曲线只是衡量了学习器进行“排序”的性能,并不包含最终预测的结果。也就是说,给定了P-R曲线的情况下,根据不同的预测策略,会产生不同的P和R。而F1是一个确定的概念,是在P和R都确定的情况下计算出的二者的调和平均。因此在同一P-R曲线上,F1在不同的位置有不同的取值。

因此对于题目所述的假设,我们很容易给出反例:对于R-P曲线完全相同的两个学习器,二者的P-R曲线上存在两个不同位置,使得对应的F1值不同。不妨设F1值较大的位置所对应的预测策略为学习器A,另一个为B,此时学习器A的F1值比学习器B高,但二者P-R曲线完全相同,也有相同的BEP值。

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

查全率: 真实正例被预测为正例的比例
真正例率: 真实正例被预测为正例的比例
显然查全率与真正例率是相等的。

查准率:预测为正例的实例中真实正例的比例
假正例率: 真实反例被预测为正例的比例
两者并没有直接的数值关系。

2.5 试证明式(2.22)

南瓜书:https://datawhalechina.github.io/pumpkin-book/#/chapter2/chapter2?id=_221的链接证明了书中大部分公式。但同时,根据南瓜书的建议:

对于初学机器学习的小白,西瓜书第1章和第2章的公式强烈不建议深究,简单过一下即可,等你学得有点飘的时候再回来啃都来得及。

同学们可以根据自己的情况选择性啃食该公式。

2.6 试述错误率与ROC曲线的联系

与2.3中所述的情况相似,ROC曲线本质上只反映学习器的“排序能力”,而具体的预测策略则取决于在ROC曲线上的哪一点作截断。当确定了一种预测策略时,才会对应一个确定的错误率。因此可以说,ROC曲线上的每一点,对应了学习器一种情况下的错误率。

(由代价矩阵所确定的错误率,参照西瓜书2.3.4节与公式2.23)

2.7 试证明任意一条ROC曲线都有一条代价曲线与之对应,反之亦然

代价曲线、ROC曲线、P-R曲线都是为了描述某一学习器的“排序能力”而引入的概念。ROC曲线下方的面积仅能在“错误代价均等”的条件下反应学习器的排序质量,而在错误代价并不均等的情况下,引入代价矩阵后,应当使用代价曲线来反应考虑代价的排序质量。但不论使用哪一种曲线,衡量哪一种面积,一旦学习器给定,其排序质量是一定的,则三种曲线都是确定的。从这一角度来看,任意一条ROC曲线都对应了一个确定的学习器,而该学习器有唯一确定的代价曲线,反之亦然。

若要严格证明该结论,西瓜书给出了ROC曲线和代价曲线的转换方法:ROC曲线上没一点对应了代价平面上的一条线段,设ROC曲线上点的坐标为(FPR, TPR),则可计算相应的FNR,然后再代价平面上绘制一条从(0, FPR)到(1, FNR)的线段,如此求出ROC曲线上所有点对应的线段,其下界围成的曲线即代价曲线。同理,在代价曲线上寻找一个连续的分段,将其线段计算出相应的FPR与FNR,再计算出TPR,即得到ROC曲线上的一个点,连接所有如此的到的点即得ROC曲线。

2.8 Min-max规范化和z-score规范化是两种常用的规范化方法。令 x x x x ′ x' x 分别表示变量在规范化前后的取值,相应地令 x m i n x_{min} xmin x m a x x_{max} xmax 分别表示规范化前的最小值和最大值, x m i n ′ x'_{min} xmin x m a x ′ x'_{max} xmax 表示规范化后的最小值和最大值, x ˉ \bar x xˉ σ x \sigma_x σx 分别表示规范化前的均值和标准差,则min-max规范化、z-score规范化分别如式(2.43)和(2.44)所示,试析二者的优缺点。

x ′ = x m i n ′ + x − x m i n x m a x − x m i n × ( x m a x ′ − x m i n ′ ) , (2.43) x' = x'_{min} + \frac{x - x_{min}}{x_{max} - x_{min}} \times (x'_{max} - x'_{min}), \tag{2.43} x=xmin+xmaxxminxxmin×(xmaxxmin),(2.43)

x ′ = x − x ˉ σ x , (2.44) x' = \frac{x - \bar x}{\sigma_x}, \tag{2.44} x=σxxxˉ,(2.44)

从公式可以看出,min-max规范化会将整个样本线性地拉伸到新的区间,其优点有:简单易于计算(新的元素加入后,只有当其超出最大最小值范围时才需要重新计算全部元素)、可灵活设置归一化后的区间;其缺点在于:容易受极端数据影响(一旦有极端大或极端小数据,整个范围会受到拉伸)。

z-score规范化会将整个样本映射到0均值和1方差的准正态分布状态,其优点在于:不受个别极端数据影响;其缺点在于:无法灵活控制规范化后的范围,每当加入新的元素都需要重新计算整个样本集。

2.9 试述 χ 2 \chi^2 χ2 检验的过程

卡方检验是统计学领域的知识,在此建议大家若无特别的需求,了解其在机器学习模型评估中的应用即可,具体内容请查阅统计学相关书籍。

2.10* 试述在Friedman检验中使用式(2.34)与(2.35)的区别

这篇博客简洁但清楚地叙述了该问题:https://www.cnblogs.com/daigz1224/p/7163342.html

### 关于周志华机器学习》(西瓜)第二的学习笔记 #### 模型评估选择概述 模型评估选择机器学习领域的重要组成部分,旨在通过合理的方法评价不同模型的表现并挑选最优者。这一过程不仅涉及如何衡量单个模型的好坏,还包括怎样对比多个候选方案以做出最佳决策。 #### 偏差、方差和噪声的概念解析 偏差度量了学习算法的期望预测实际结果之间的差距,反映了算法自身的拟合精度;方差描述的是相同规模训练集变化引起的学习效果波动情况,体现了数据扰动带来的影响;而噪声则设定了给定任务下所有可能采用的学习方法能达到的最佳预期泛化误差界限,揭示了问题本身固有的复杂性和挑战性[^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 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值