第一章:绪论
1.1 引言
在机器学习的领域内,一个程序通过利用经验在特定任务上获得性能改善,我们就说该程序对相关经验进行了学习。这种学习过程类似于人类根据过往观察和知识积累来做出决策。例如,通过对天气特征的观察,我们可以预测未来的天气状况;同样地,计算机程序可以通过分析历史数据来优化其性能。机器学习的核心在于通过计算手段,利用数据训练出能够改善系统性能的模型。
1.2 基本术语
-
训练集/数据集:用于训练算法的样本集合。
-
标记/标签:每个样本对应的目标值或类别信息,对于分类和回归任务至关重要。
-
训练/学习过程:从数据中提取规律,构建模型的过程。
-
假设/真相/真实:学得模型所对应的潜在规律,可能与真相一致也可能有偏差。
-
测试集/样例:未参与训练的新样本,用于验证模型泛化能力。
1.3 假设空间
在学习过程中,我们面对的可能是一个庞大的假设空间。有效的学习策略需要在这个空间中找到合适的假设。归纳偏好是学习算法在众多等效假设中进行选择的一种“价值观”,它决定了算法在遇到新样本时的行为。
-
归纳学习: 从样例中学习概念或规律。
-
版本空间: 与训练集一致的假设集合。
1.4 归纳偏好
归纳偏好体现了学习算法在选择假设时的倾向性,例如是否倾向于选择简单或者复杂的模型。奥卡姆剃刀原则(Occam's razor)是选择简单假设的一种常用方法,但并非唯一可行的原则。一个有效的学习方法应该基于具体问题的特点来决定其归纳偏好。
-
简单性原则: Occam's Razor,选择最简单的假设。
-
归纳偏好的作用: 指导搜索假设空间,避免等效假设迷惑。
1.5 发展历程
机器学习的发展经历了从逻辑推理到神经网络再到统计学习的演进过程。每个阶段都有其代表性的成果和技术,如专家系统的研制、连接主义学习的复兴以及统计学习理论的建立等。这些进展不仅推动了机器学习学科的发展,也对实际应用产生了深远影响。
-
早期研究: 逻辑推理、专家系统的发展。
-
连接主义学习: 神经网络的复兴。
-
统计学习: SVM和核方法成为主流。
-
深度学习: 再次兴起,以深度神经网络为核心。
1.6 应用现状
机器学习现已广泛应用于各个领域,包括但不限于生物信息学、政治选举分析等。随着大数据时代的到来,机器学习技术已成为处理和分析海量数据的重要工具。
第二章:模型评估与选择
2.1 经验误差与过拟合
理解经验误差和泛化误差的区别至关重要,因为这是我们评价模型好坏的基础。过拟合是指模型过度拟合训练数据而忽略了数据的一般性质,这会导致在新样本上的泛化能力下降。为了避免这种情况的发生,我们需要关注模型的泛化误差而非仅仅依赖于训练集中的经验误差。
-
经验误差: 训练集中的误差。
-
泛化误差: 新样本上的误差。
-
过拟合: 过度拟合训练数据导致泛化能力下降。
-
欠拟合: 未充分拟合训练数据导致泛化能力不足。
2.2 评估方法
为了准确评估模型的性能,我们通常需要使用测试集来进行评估,这要求测试集与训练集相互独立且分布相似。留出法、交叉验证法和自助法都是常用的评估方法,它们各有优缺点并适用于不同的场景。调参是模型评估过程中不可忽视的一部分,适当的参数设置可以显著提升模型性能。最终提交给用户的模型应该是基于完整数据集重新训练得到的。
-
留出法: 将数据集分为训练集和测试集进行评估。
-
交叉验证法: 也称k折交叉验证,通过多次划分来估计泛化误差。
-
自助法: 通过自助采样生成多个训练集进行评估,减少偏差。
-
调参: 根据参数设置的不同,可能会影响模型性能。
-
最终模型选择: 根据完整的数据集重新训练选定的模型参数配置。
2.3 性能度量
性能度量指标包括错误率和精度、查准率、查全率以及F1分数等。这些指标帮助我们从不同角度理解和比较模型的性能。ROC曲线和AUC则是评估二分类问题中模型泛化能力的重要工具。代价敏感错误率和代价曲线则针对具有非均等代价的问题提供了解决方案。
-
错误率与精度: 分类错误的样本数与总数的比例,以及正确分类的比例。
-
查准率、查全率与F1: P为查准率,R为查全率,F1为调和平均数。
-
ROC与AUC: ROC曲线下的面积表示模型的期望性能。
-
代价敏感错误率与代价曲线: 根据非均等代价调整错误率的计算方式。
2.4 比较检验
为了公正地比较不同模型的性能,可以使用统计假设检验方法来进行验证。例如,t检验、成对t检验、McNemar检验和Friedman检验等方法都可以在不同情境下使用。当涉及多个数据集和多个算法时,Friedman检验及其后续的Nemenyi检验提供了有效的比较手段。
-
假设检验: 根据测试错误率推断泛化错误率分布情况。
-
交叉验证t检验: k折交叉验证的结果用于比较两个学习器的性能差异。
-
McNemar检验: 用于比较两个分类器的二分类问题的性能差异。
-
Friedman检验与Nemenyi后续检验: 多组数据集上对多个算法进行比较的方法。