周志华机器学习第二章总结及课后答案

本文探讨了机器学习中过拟合与欠拟合的概念,解释了为什么过拟合无法完全避免,以及如何通过评估方法如留出法和交叉验证法来缓解过拟合的风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.1 经验误差与过拟合

通常我们把分类错误的样本总数的比例称为错误率(error rate),即如果在m个样本中有a个样本分类错误,则错误率E=a/m;相应的,1-a/m称为”精度”(accuracy),更一般的,我们把学习器的实际预测输出与样本的真实输出之间的差异称为“误差”,学习器在训练集上的误差称为“训练误差”或“经验误差”,在新样本上的误差称为“泛化误差”。

  • 过拟合(overfitting):当学习器把训练样本学得“太好了”的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会有的一般性质,这样就会导致泛化性能下降。相反则称为欠拟合(underfitting)
  • 注意:我们必须认识到过拟合是无法避免的,我们所能做的只是“缓解”,或者说减小其风险。关于这一点,可大致这样理解:机器学习面临的问题是NP难甚至更难,而有效的学习算法必然在多项式时间内运行完成,若可避免过拟合,则通过经验误差最小化就能获得最优解,这就意为着我们构造性的证明了“P=NP”,因此只要相信P不等于NP过拟合就不可避免。

2.2 评估方法

  • 留出法(hold-out):直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即
    注意:训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。如果实在不能保证数据分布的一致性,请参考我在深度学习中的笔记 2.3在不同的划分上进行训练并测试
  • 交叉验证法(cross validation):先将数据集D划分为k个大小相似的互斥子集,即
  • 待更新……
### 周志华机器学习第二章课后习题答案 #### 2.10 Friedman检验中使用式(2.34) 和 (2.35) 的区别 Friedman检验是一种非参数统计方法,适用于多组相关样本之间的差异分析。当处理多个模型在同一测试集上的性能评估时尤为有用。 - **式(2.34)** 主要用于计算各算法排名的平均值及其方差,从而构建出一个衡量不同算法之间相对表现的标准。具体来说,该公式帮助量化每种算法在整个实验中的总体表现位置[^3]。 - **式(2.35)** 则进一步利用上述得到的信息来决定是否存在显著性的差别。通过引入临界值的概念,可以据此判断所观察到的表现差距是否超出了随机波动所能解释的程度之外。如果实际计算所得的结果超过了设定好的阈值,则说明至少有两个被比较的对象间确实存在明显不同的效果。 为了更直观理解这两个公式的应用过程以及它们各自的作用: ```python import numpy as np from scipy.stats import friedmanchisquare # 示例数据:假设有三个分类器A、B、C分别在五个数据集上进行了测试 data = [ [87, 92, 85], # 数据集1上的准确率 [89, 90, 88], [91, 93, 86], [88, 91, 87], [90, 94, 89] ] chi_statistic, p_value = friedmanchisquare(*np.array(data).T) print(f"Chi-square statistic: {chi_statistic}") print(f"P-value: {p_value}") if p_value < 0.05: print("At least two classifiers have significantly different performances.") else: print("No significant difference among classifier performances.") ``` 这段Python代码展示了如何运用SciPy库执行Friedman检验,并依据返回的卡方统计量和P值做出结论。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值