关于周志华老师的《机器学习》这本书的学习笔记
记录学习过程
本博客记录Chapter1 to Chapter3
1 绪论
1.1 引言
机器学习是关于“学习算法”的学问。
1.2 基本术语
-
特征向量(feature vector):
-
维数(dimensionality):属性总数
-
预测:预测值离散—分类;预测值连续—回归;还有聚类
-
根据训练数据是否有标记信息:监督学习(supervised learning)和无监督学习(unsupervised learning)。分类和回归是前者;聚类是后者。
-
训练模型适用于新样本的能力称为“泛化”。
1.3 假设空间
归纳学习:induction,从特殊到一般的泛化过程。
学习过程是在所有假设(hypothesis)组成的空间中搜索的过程,搜索目标是找到与训练集匹配的假设。
1.4 归纳偏好
机器学习算法在学习过程中对某种类型假设的偏好,称为归纳偏好(inductive bias)
-
奥卡姆剃刀(Occam's razor):若有多个假设与观察一致,则选择最简单的那个。例如认为“更平滑”意味着“更简单”。
假设样本空间和假设空间都是离散的。
令是代表算法在训练数据产生假设的概率。令代表真是目标函数。训练集外误差,其中,表示指示函数,为真取1为假取0。:
- NFL定理(没有免费午餐):当所有问题出现的机会相同,即所有问题同等重要的情况下,所有学习算法的期望性能相同。(相同)。其重要意义在于让我们认识到脱离具体问题,空谈算法好坏毫无意义。
1.5 发展历程
推理—>知识—>学习
归纳逻辑程序设计(Inductive Logic Program,ILP):决策树,不适用于问题规模极大的情况
基于神经网络的连接主义:BP神经网络,黑箱模型,调参困难
统计学习(statistical learning):支持向量机,核方法。
深度学习:连接主义,多层神经网络。拥有大量参数,样本数据少容易过拟合。
2 模型估计与选择
2.1 经验误差与过拟合
-
经验误差:个样本中个分类错误,则错误率。精度为。学习器在训练集上的误差称为经验误差或训练误差。在新样本上的误差称为泛化误差。我们希望得到泛化误差小的学习器。
-
过拟合:学习器把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,导致泛化能力下降。
欠拟合:训练样本的一般性质尚未学好。
2.2 评估方法
-
用测试误差作为泛化误差的近似。
-
划分测试集和训练集的方法:
-
留出法:直接将数据集划分为两个互斥的集合。
- 结果:多次随机划分结果的平均值
- 一般将的数据用于训练集,剩余数据作为测试集
-
交叉验证法:将数据集划分为个大小相似的互斥子集。
- :十折交叉验证
- :留一法,结果可靠但是运算复杂,计算开销大
-
自助法(bootstrapping):以自助采样法(bootstrap sampling)为基础,给定包含个样本的数据集,对他采样产生数据集:每次随机从中挑选一个样本加入到并放回,重复该过程次。
- 简单估计,样本在次采样中均不被采样的概率
- 适用于数据集较小、难以有效划分训练集和测试集的情况。
-
-
调参和最终模型:
- 参数分为算法的参数(超参数,数量一般在10以内)和模型的参数(很多)
2.3 性能度量
-
回归:均方误差(mean squard error)
-
分类任务:
-
精度:
-
错误率:
-
混淆矩阵
-
查准率:
-
查全率:
- 查全率和查准率是一堆矛盾的较量
-
平衡点(),平衡点越大,可以认为学习器更好
-
度量:
- 本质是调和平均
-
度量:
- 本质是加权调和平均
- 表示查全率对查准率的影响;说明查全率影响
-
宏F1:先计算各混淆矩阵的查全率和查准率,在平均调和
-
微F1:先计算TP FP TN FN的平均,再计算查全率、查准率和F1
-
ROC和AUC:
-
ROC(受试者工作特征曲线):
- 纵轴(真正例率):
- 横轴(假正例率):
-
AUC:ROC曲线下的面积。
-
非均等代价:不同类型错误造成不同损失。
-
代表数据集的正例子集,代表数据集中的反例子集,代价敏感错误率为:
-
-
2.4 比较检验
-
统计假设检验:若在测试集上观察到学习器A比学习器B好,则A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大。
-
假设检验
-
思想:根据测试错误率推估出泛化错误率的分布。
-
泛化错误率,测试错误率。将个样本误分类的概率:,求解导数,令一阶导数为0得到****,满足二项分布。可使用二项检验,计算(误判样本数量不少于个样本的概率小于,其中最小的):
若测试错误率,根据二项检验,得出结论再的显著度下,假设不能被拒绝。
-
t检验:得到了个测试错误率,,则平均错误率和方差为:
- 服从自由度为的分布。若位于,则无法拒绝原假设。
-
-
交叉验证检验
- 两个学习器A和B,使用折交叉验证法得到测试错误率分别为和。计算差值(均值应该为0)。根据做检验:
-
McNemar检验
- 和应该相等。应服从正态分布。用卡方检验:服从自由度为1的卡方分布。(通常很小,需考虑连续性校正,因此分子中有-1项)。
-
Friedman检验和Nemenyi后续检验
- 对比多组算法的性能。在多个数据集对算法进行排序,求取排序的平均值。采用F检验判断算法是否性能相同。若拒绝原假设,则采用后续检验。
2.5 偏差和方差
-
泛化误差可以分为偏差、方差和噪声之和(假定噪声期望为0)。
- 期望输出:
- 偏差:期望输出与真实标记的差别(bias),刻画了算法本身的拟合能力。
- 使用样本数相同的不同训练集产生的方差,描述数据扰动所造成的影响。
- 噪声,描述了学习问题本身的难度。。(是数据集中的标记,是真实标记,即数据集中可能存在标错的情况)
- 泛化误差:
-
偏差-方差窘境:
- 假定能控制学习算法的训练程度。训练不足:学习器拟合能力不够强,训练数据的扰动不足以使得学习器发生显著变化,偏差主导了泛化错误率;训练程度加深,拟合能力增强,训练数据发生的扰动渐渐能被学习器学到,方差主导了泛化错误率。若训练数据自身的、非全局的特性被学习到,则将发生过拟合。
3 线性模型
3.1 基本形式
3.2 线性回归
最小二乘法:基于均方误差最小化。
-
针对一元回归
-
原理:找到一条直线,使得所有样本到直线上的欧氏距离之和最小
-
参数估计:
-
求解w:
-
求解b:
-
-
-
针对多元回归
-
原理:
-
参数估计:
-
求解:
- 当满秩矩阵,直接令上式为0,得
- 当不是满秩矩阵,可以解出多个,都能使得均方误差最小化。引入正则化项(regularization)选择解。
-
-
广义线性模型:,函数为联系函数。
3.3 对数几率回归
对数几率函数Sigmoid函数:
式(11)可变换为:
将看作样本作为正例的可能性,为反例的可能性,两者比值称为几率(odds),反应作为正例的相对可能性
3.4 线性判别分析(LDA)
LDA线性判别分析:也叫Fisher判别分析。是一种监督降维技术。
核心思想: 给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别
数学表达:极小化同类样例投影点的协方差;极大化异类样例中心之间的距离。
求解:与的长度无关,只与方向有关。令
由拉格朗日乘子法,后进行奇异值分解。
3.5 多分类学习
核心问题:基本思路是“拆解法”,即将多分类任务拆分为若干个二分类任务。关键在于如何对多分类任务进行拆分,以及对多个分类器进行集成。
拆分策略:
-
OvO(一对一):训练个分类器(两两一个),单个分类器的训练数据量较小
-
OvR(一对其余):训练个分类器,但是单个分类器训练数据较大
-
MvM(多对多):采用ECOC(纠错输出码技术)。一般来说,ECOC编码越长,纠错能力越强,开销也越大。
-
编码:划分M次(下图(a)为5次,五个分类器,分类器中,为正例)
-
解码:测试结果和各类的编码结果之间求解距离。
(a)中:
-
3.6 类别不平衡问题
- 再缩放策略:一般来说阈值设置为0.5()。更改分类器决策规则:若,预测为正例。
- 前提:训练集是真是样本总体的无偏采样。这个假设很难成立,因此我们未必有效地基于训练集观测几率odds来推断真实几率
- 解决方案:
- 欠采样:去除一些反例使得正反例数目接近。
- 可能会丢失信息。
- EasyEnsemble:随机丢弃反例
- 过采样:增加一些正例使得正反例数目接近。
- 不能简单的重复样本,不然会导致过拟合。
- SMOTE:对训练集的正例进行插值得到额外的正例。
- 阈值移动:再缩放策略。
- 欠采样:去除一些反例使得正反例数目接近。