周志华老师亲讲-西瓜书全网最详尽讲解-1080p高清原版《机器学习初步》
周志华机器学习(西瓜书)学习笔记(持续更新)
周志华《Machine Learning》学习笔记
绪论
基本术语
- 数据集(data set):一堆关于某种事物的 数据的集合
- 示例(instance)或样本(sample):每条记录是关于一个事件或对象的描述,称为一个示例或样本
- 属性(attribute)或特征(feature):反映事件或对象在某方面的表现或性质的事项,例如“颜值”
- 属性值(attribute value):属性上的取值,例如“美丽动人”
- 学习(learning)或训练(training):从数据中学得模型的过程
- 训练数据(training data):训练过程中使用的数据
- 训练样本(training sample):训练数据中的每一个样本
- 训练集(training set):训练样本组成的集合
- 假设(hypothesis):学得模型对应了关于数据的某种潜在的规律,也称假设
- 真相或真实(ground-truth):这种潜在规律自身
- 分类(classification):预测的是离散值的学习任务,例如‘0’、‘1’
- 分类中又分为二分类和多分类任务。
二分类顾名思义,只需分2类,一般分别称为“正类”与“反类”,且一般正类用“1”表示,反类用“0”表示。
- 分类中又分为二分类和多分类任务。
- 回归(regression):预测的是连续值的学习任务
- 测试(test):学得模型后,对其进行预测的过程
- 测试样本(test sample):被预测的样本
- 监督学习:训练数据有标记信息的学习过程,也叫有导师学习
- 无监督学习:训练数据木得标记信息的学习过程,也叫无导师学习
分类和回归属于典型的监督学习问题,聚类属于无监督学习问题。
- 分类:训练数据已经有人为标记信息,计算机通过学习这些训练数据,把未出现在训练样本中的陌生的数据 分到已有的类别中的过程
- 聚类:训练数据中没有任何标记信息,计算机需要自行寻找特征,将这些数据分为几个簇,然后把陌生的数据分到计算机自己划分的几个簇中的过程
- 聚类(clustering):把训练集中样本分为若干组,每一组称为一“簇”(cluster)
- 泛化:机器学习所学得模型适用于陌生数据的能力。
机器学习的目的:使学得的模型可以更好地适用于未知样本。
我们常说泛化性能优劣,即模型对于陌生数据的适用性的好坏。
一般我们假设全体数据在样本空间上满足一个未知的分布,那么学习的目的就可以认为寻找最契合这个分布的一个函数来把训练样本完美的分到各自的类中。一般情况下,训练样本越多,我们得到的关于该分布的信息就越多,这样就越有可能找到这个函数,也就越有可能通过学习活得具有强泛化能力的模型。
假设空间
归纳和演绎是科学推理的两大基本手段,前者是从特殊到一般的“泛化”过程,即从具体的事实归结出一般性规律;后者则是从一般到特殊的“特化”,即从基础原理推导出具体状况。
学习过程可以看作是一个在所有假设组成的空间中进行搜索的过程,目的是找到与训练集匹配的假设。而现实中,可能会有多个假设和训练集一致,即存在一个与训练集一致的“假设集合”,称之为“版本空间”
归纳偏好
机器学习算法在学习过程中对某种假设类型的偏好,称为归纳偏好
需要注意,任何一个机器学习算法都有其归纳偏好,否则将无法产生确定的学习结果
- NFL定理或者没有免费的午餐定理(No Free Lunch Theorem):算法A若在某问题上比另一个算法B好,比存在另一些问题算法B比算法A好。换言之,无论学习算法A多么聪明,学习算法B多么笨拙,它们的期望性能完全一样(总误差与学习算法无关)
但需要注意,NFL定理的前提是所有问题出现的机会相同或所有问题同等重要,但是实际情况并非如此.
NFL定理最重要的寓意是:具体问题具体分析!即脱离具体问题而空泛的谈论什么学习算法更好毫无意义.
最优方案:按需设计,度身定制 - 奥卡姆剃刀原则主张选择和经验观察一致的 最简单假设。若无必要,勿增实体!
习题
- 下列有关机器学习基本术语的说法错误的是
A、从数据中学得模型的过程称为“学习”或“训练”
B、训练过程中使用的数据称为“训练数据”,每一个样本称为一个“训练样本”,训练样本组成的集合称为“训练集”
C、学得模型对应了关于数据的某种潜在的规律,称为“假设”
D、学习过程就是为了找出数据的某种潜在规律,这个规律自身,一般称为“数据特征”
解析:学习过程是为了找出数据的某种潜在规律,这种规律自身一般称为假设;从数据中学得模型的过程称为学习,也可以称为训练;训练过程使用的数据称为训练数据,其中的样本称为训练样本。
- 以下关于机器学习预测任务的说法错误的是()
A、一般地,预测任务是希望通过对训练集进行学习,建立一个从输入空间 x xx 到输出空间 y yy 的映射
B、对于二分类任务,一般令 y = { − 1 , + 1 } y={-1,+1}y={−1,+1}或 { 0 , 1 } {0,1}{0,1}
C、对于回归问题,一般 y = R y=Ry=R
D、预测任务不需要训练样本的的标记信息
解析:监督学习需要训练样本的标记信息
- 学出来的模型适用于新样本的能力,称为 ____ 能力。该能力越强,说明学得的模型越能很好地适用于整个样本空间。
解析:泛化
泛化能力(generalization ability)是指机器学习算法对新样本的适应能力。 学习的目的是学到隐含在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。这种能力也是学习到的模型对未知数据的预测能力,这个未见过的测试数据必须是和训练数据处于同一分布,不在同一分布的数据是不符合独立同分布假设的(对同一规律不同的数据集的预测能力)。通常通过测试误差来评价学习方法的泛化能力。 - 学得模型后,使用其进行预测的过程称为____。
解析:测试
学得模型后,使用其进行预测的过程称为"测试" (testing) ,被预测的样本称为测试样本" (testing sample)。 - 下列说法错误的是()
A、模型是通过学习算法得到的
B、机器学习通常解决高度不确定性和复杂性的问题
C、分类和回归是监督学习的代表
D、机器学习一定需要类别标记
解析:D 聚类等任务不需要类别标记
- 下列说法错误的是()
A、学得模型适用于新样本的能力称为“泛化”能力
B、机器学习一般有“独立同分布”假设
C、机器学习在只要见过的数据上做好就行了,未见过样本上的性能不重要
D、一般假设拿到的所有数据都来自一个潜在的分布
解析:C机器学习主要用于处理未来的新数据
- 把见过的汽车分成若干组,这是一个____(分类/回归/聚类)任务
解析:聚类
把见过的汽车分组这样一个任务中,任务本身并未要求按什么样的准则划分、划分为什么样的类别;这样我们很难对汽车加上合适的label并将其看作是一个监督学习来实现分类过程。故本题应为无监督学习中的聚类任务,本题应填聚类。
模型评估与选择
经验误差和过拟合
何为一个好的模型,错误率低、精确度高、召回率高等指标都可以,但视具体任务和使用者需求而异。在评价模型性能时,我们更希望它泛化能力强。
- 错误率E(error rate)=分类错误的样本数a/总样本数m
- 精度(accuracy)=1 - 错误率E
- 误差(error):更一般地,把学习器的实际预测输出和样本的真实输出之间的差异称为误差
- 训练误差(training error)或经验误差(empirical error):学习器(模型也称为学习器)在训练集上的误差。经验误差并非越小越好,因为会出现过拟合
- 泛化误差(generalization error)或测试误差:在新样本上的误差。泛化误差越小越好
实际希望的,是在新样本上能表现得很好的学习器。但可能出现的问题是:
- 欠拟合(underfitting):对训练样本的一般性质尚未学好。例如以为有四肢就是人类。
- 过拟合或过配(overfitting):对训练样本学得太“好”,已经把训练样本本身的一些特点作为所有潜在样本都会具有的一般性质。例如长得帅才是人类。
进行模型评估和选择:
- 没有未来数据,如何知道模型的泛化能力=>涉及到评估方法的设计
- 对某个具体任务的需求把握,是性能度量要考虑的。
例如信用卡欺诈的检测,本身发生的概率就极低,那么认定所有的都不是欺诈准确率高达99%,但不能实现找出欺诈的目标并没有意义。 - 为了说明模型在统计意义上表现好,我们最需要考虑比较检验
评估方法
测试集应该与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。
通常,我们会得到一个含m个样例的数据集,如何通过适当处理,划分为训练集S和测试集T,有以下三种常见做法:
留出法(hold-out)
留出法即直接将数据集D划分为两个互斥的集合,其中一个作为训练集S,另一个作为测试集T,保证S∩T=∅且S∪T=D。
在划分训练集和测试集之后,根据在测试集上不同算法的表现选择最优的算法,然后再用该算法去在全部的数据M上训练的模型给用户。
交叉验证法(cross validation)
交叉验证法即将数据集D划分为k个大小相似的互斥子集,即D=D1∪D2∪…∪Dk,Di∩Dj=∅(i≠j)。每个子集Di都尽可能保持数据分布的一致性,即从D中分层采样得到。然后每次用k-1个子集的并集作为训练集,剩下的那个子集作为测试集,这样就可以得到k组训练/测试集,从而进行k次训练和测试,最终返回这k次测试的均值。
留一法(Leave-One-Out,简称LOO):假定数据集D中有m个样本,令k=m,则会发现,m个样本只有唯一的划分方法来划分为m个子集——每个子集一个样本,所以留一法的训练集与数据集D相比只差一个样本,故留一法中被实际评测的模型与期望评估的用D训练出的模型很相似,因此,留一法的评估结果往往被认为较准确。
但是未必永远适用,记住NFL“没有免费的午餐”定理在机器学习各个环节都是适用的。
自助法(bootstrap sampling)
在留出法和交叉验证法中,由于保留了一部分样本作为测试,所以实际评估的模型中所使用的训练集比D小,而我们希望评估的是D训练出的模型,所以这必然会引入一些因训练样本规模不同而导致的估计偏差。留一法受训练样本规模变化的影响较小,但计算复杂度又太高了。
自助法是种较好的解决方案。自助法以自助采样(bootstrap sampling)为基础(自助采样也叫“可重复采样”与“有放回采样”):
给定包含m个样本的数据集D,我们对它进行采样产生数据集D’:每次从D中随机选一个样本,将其拷贝如D’中,再将其放回D中,重复m次,那么就可以得到包含m个样本的数据集D’。显然D中一部分样本会在D’中多次出现,而另一部分不出现,由一个简单的估计可以得到样本在m次采样中不被采到的概率约为
把D’当做训练集,D-D’作为测试集,则实际评估模型与期望评估模型都有m个训练样本,而我们仍然有数据总量1/3的样本用于测试,这样的测试结果,称为“包外估计”。
- 小结:
- 自助法在数据量较少,难以有效划分训练集和测试集的时候很有用,然而自助法改变了初始数据分布,引入了估计偏差
- 故在初始数据量足够的时候,留出法和交叉验证法更常用一些。
调参和最终模型
- 调参(parameter tuning):在进行模型评估和选择时,除了要对使用学习算法进行选择,还需要对算法参数进行设定,即“参数调节”或“调参”(其中模型选择指的是确定变量,将使用的算法是变量,将确定的算法参数也是变量,对其的确定都是模型选择的过程)。
我们通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,
- 验证集(validation set):模型评估与选择中用于评估测试的数据集。
注意调参数的过程也是训练过程的一部分,则调参数的数据集不能来自测试集。
例如,在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计泛化性能,而把训练数据另外划分为测试集和验证集,基于验证集上的性能来进行模型选择和调参。
性能度量(performance measure)
对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,即性能度量。性能度量反映了任务需求。
要评估学习器f的性能,就要把学习器预测结果f(x)和真实标记y进行比较。
本文已提到过的错误率和精度,是分类任务种最常用的两种性能度量,既适用于二分类任务,也适用于多分类任务
但是我们通常会有更复杂的需求,引入查准率和查全率与F1.
对于二分类任务,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(true negative)与假反例(false negative)四种情形。分别对应为TP、FP、TN、FN。
TP:被模型预测为正类的正样本(实际为正,预测也为正)。
TN:被模型预测为负类的负样本(实际为负,预测也为负)。
FP:被模型预测为正类的负样本(实际为负,预测为正)。
FN:被模型预测为负类的正样本(实际为正,预测为负)。
查准率和查全率是一对矛盾的度量。一般,查准率高时,查全率往往偏低;而查全率高时,查准率偏低。考虑如何均衡两者,一种办法是F1度量
比较检验
假设检验
交叉验证t检验
McNemar检验
习题
- 为了说明模型在统计意义上表现好,我们最需要考虑
A、评估方法
B、性能度量
C、比较检验
D、以上三个选项都不需要考虑
解析:C
比较检验主要是用于判断模型是否在统计意义上表现良好;其余A选项的评估方法,主要用于衡量模型在未来的表现好坏;B选项性能度量是针对具体问题给定的度量标准,对不同问题不太一样(如欺诈问题,10次欺诈99990次非欺诈,如果全分类为非欺诈,虽然精度很大,但是对该问题没有意义)。 - 下列什么方法可以用来获得从原始数据集中划分出“测试集”?
A、留出法
B、交叉验证法
C、自助法
D、以上三个选项都可以
解析:D - 调参以什么集合上的性能作为评价标准?
A、训练集
B、测试集
C、验证集
D、以上选项都可以
解析:C - 当我们使用一个多项式函数去逼近数据集时,下面哪一个说法是正确的?
A、多项式的次数是超参数
B、多项式的系数是超参数
C、多项式的次数必须通过数据去学习
D、以上说法都是正确的
解析:A
在使用多项式逼近数据集时,会人工赋予多项式次数(x的多少次方),然后通过训练数据学习多项式的系数(y=wx+b的w和b);因此多项式的次数是超参数,而多项式的系数不是超参数。超参数虽然可以通过学习得到,但一般由人工决定,C选项太过绝对。 - 在训练集上的误差被称作
A、泛化误差
B、经验误差
C、测试误差
D、以上三个选项都不对
解析:B
训练误差(training error)或经验误差(empirical error):学习器(模型也称为学习器)在训练集上的误差。经验误差并非越小越好,因为会出现过拟合
泛化误差(generalization error)或测试误差:在新样本上的误差。泛化误差越小越好 - 当学习任务对数据分布的轻微变化比较鲁棒且数据量较少时,适合使用什么样的数据集划分方式?
A、留出法
B、交叉验证法
C、自助法
D、以上三个选项都可以
解析:C
本题关键是考虑“数据量较少”,此时无论是使用留出法还是交叉验证法,都会使得训练集数据量进一步变少,而使用自助法则不会有这样的问题(不改变样本数量);其次考虑“对数据分布轻微变化比较鲁棒”,说明使用自助法时带来的训练数据分布变化不会有太多负面影响。 - 考虑一个三分类数据集,其由30个西瓜,30个苹果,30个香蕉构成。先有一个学习策略为预测新样本为训练集中样本数目最多类别的分类器(存在多个类别样本数量一样多时则随机选择一个类别预测),请问通过什么评估方式会导致其平均准确率为0。____(留出法/交叉验证,每一折样本数大于1/留一法)
解析:留一法
线性模型
基本形式
给定由d个属性描述的示例x=(x1; x2; ……;xd),其中xi是x在第i个属性上的取值,线性模型(linear model)试图学得一个通过属性的的线性组合来进行预测的函数,即
一般用向量形式写为
其中
线性模型形式简单、易于建模、有很好的可解释性。
线性回归
- 对离散属性
- 若属性值间存在“序”(order)关系,
可通过连续化将其转化为连续值。
例如属性“身高”的取值“高”“矮”可转化为{1.0,0.0},三值属性“高度”的取值“高”“中”“低”可转化为{1.0,0.5,0.0} - 若属性值间不存在序关系,
假定有k个属性值,则通常转化为k维向量
例如属性“瓜类”的取值“西瓜”“南瓜”“黄瓜”可转化为(0,0,1),(0,1,0),(1,0,0)
- 若属性值间存在“序”(order)关系,
给定数据集D = {(x1,y1),(x2,y2),…,(xm,ym)},其中xi = (xi1;xi1;…;xid),yi ∈R。线性回归(linear regression)试图学得一个线性模型以尽可能准确地预测实值输出标记。线性回归试图学得:
确定w和b 关键在于如何衡量f(x)和y之间的差别。均方误差是回归任务中最常用的性能度量,则可试图把均分误差最小化,即
均方误差具有很好的几何意义,它对应了常用的欧几里得距离或简称“欧氏距离”(Euclidean distance)。基于均方误差最小化来进行模型求解的方法称为最小二乘法(least square method)。在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧氏距离之和最小。
求解w和b使均方误差最小化的过程,称为线性回归模型的最小二乘“参数估计”(parameter estimation)。可对E(w,b)分别对w和b求导,并令导数为0解得闭式(closed-form)解。
多元线性回归
更一般的情形是如同先前提到的数据集D,样本由d个属性描述。此时我们试图学得:
称为“多元线性回归”(multivariate linear regression)。
类似的,可利用最小二乘法对w和b进行估计。为便于讨论,我们把w和b吸收入向量形式
w
^
\widehat{w}
w
= (w;b),相应的,把数据集D表示为m*(d+1)大小的矩阵X,其中每行对应于一个示例,该行前d个元素对应于示例的d个属性值,最后一个元素恒置为1,即
再把标记也写为向量形式,则有
对
w
^
\widehat{w}
w
求导,并令其为0得
w
^
\widehat{w}
w
最优解的闭式解。
如果XTX为满秩矩阵或者正定矩阵,那么令上式为零有
现实中XTX往往不是满秩矩阵,许多任务中会遇到变量的数目超过样例数的情况,导致X的列数多于行数,显然不满秩,此时会解出多个**w^**满足均方误差最小的条件,选择哪一个作为输出就是问题,常见的做法是引入正则化(regularization)项。
广义线性模型
考虑能否让模型预测值逼近y的衍生物?例如,假设我们认为示例所对应的输出标记是在指数尺度上变化,则可将输出标记的对数作为线性模型逼近的目标,即lny=wTx+b。这就是对数线性回归(log-linear regression)。实质上是在求取 输入空间到输出空间的非线性函数映射。如上图所示,对数函数起到了将线性回归模型的预测值和真实标记联系起来的作用。
更一般地,考虑单调可微函数g(),这样得到的模型称为“广义线性模型”(generalized linear model)。显然,对数线性回归是广义线性模型在g()=ln()时的特例。
对率回归
上一节讨论了如何使用线性模型进行回归学习,当要做的是分类任务是:只需找一个单调可微函数把分类任务的真实标记y和线性回归模型的预测值联系起来。
考虑二分类任务,其输出标记y∈{0,1},而线性回归模型产生的预测值z=wTx+b是实值,需要把实值z转换为0/1值。最理想的是“单位阶跃函数”(unit-step function)
即若预测值z大于零就判为正例,小于零则判为反例,预测值为临界值零则可任意判别。
但是从上图可知,单位阶跃函数不连续,则不能直接作为广义线性模型,我们希望能找到在一定程度上近似单位阶跃函数的“替代函数”(surrogate function),且能单调可微。
而对数几率函数(logistic function)正是这样一个常用的替代函数。
若将y视为样本x作为正例的可能性,则1-y是其反例可能性,两者的比值
y
1
−
y
\frac{y}{1-y}
1−yy称为“几率”(odds),反映了x作为正例的相对可能性。对几率取对数则得到“对数几率”(log odds,也称logit)
l
n
y
1
−
y
ln\frac{y}{1-y}
ln1−yy
由此看出,实际上是在用线性回归模型的预测结果去逼近真实标记的对数几率,则其对应的模型称为“对数几率回归”(logistic regression,也称logit regression)。注意,虽然名字是“回归”,但实际是一种分类学习方法。
- 对数回归几率(对率回归)方法优点;
- 无需事先假设数据分布
- 可得到“类别”的近似概率预测
- 可直接应用现有数值优化算法求取最优解
对率回归求解
先验概率(prior probability):指根据以往经验和分析。在实验或采样前就可以得到的概率。
后验概率(posterior probability):指某件事已经发生,想要计算这件事发生的原因是由某个因素引起的概率。
下面来确定式中的w和b。把式中的y视为类后验概率估计p(y=1|x),则
可重写为:
显然有:
于是,可通过“极大似然法”(maximum likelihood method)来估计w和b。
对率回归模型最大化“对数似然”(log-likelihood)
即令每个样本属于其真实标记的概率越大越好。
线性判别分析
线性判别分析(Linear Discriminant Analysis,简称LDA)是一种经典的线性学习方法。在二分类问题上因为最早由Fisher提出,也称“Fisher判别分析”。
LDA的思想非常朴素:给定训练样例集,设法把样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。
若将数据投影到直线w上,则两类样本的中心在直线上的投影分别为wTμ0和wTμ1;若将所有样本点都投影到直线上,则两类样本的协方差分别为wT∑0w和wT∑1w。
要让同类样例投影点尽可能接近,可以让同类样例投影点的协方差尽可能小;而欲使异类样例的投影点尽可能远离,可以让类中心之间的距离尽可能大。同时考虑这两个因素,则可得到欲最大化的目标
定义“类内散度矩阵”(within-class scatter matrix)和“类间散度矩阵”(between-class scatter matrix),则上式J可重写为下图所示,即LDA欲最大化的目标
W的闭式解其实是N-1个最大广义特征值所对应的特征向量组成的矩阵。
若将W视为一个投影矩阵,则LDA将样本投影到了N-1维空间上,N-1往往远小于数据原有的属性数 ,于是,LDA也常被视为一种经典的监督降维技术。
【学长小课堂】什么是奇异值分解SVD(视频版20min)
奇异值分解(SVD)(文字版)
- 拉格朗日乘子法:即拉格朗日乘数法,其主要思想是引入一个新的参数 λ (即拉格朗日乘子),将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得到原函数极值的各个变量的解。
类别不平衡
前面介绍的分类学习方法都有一个共同的基本假设,即不同类别的训练样例数目相当。
类别不平衡(class-imbalance)指分类任务中不同类别的训练样例数目差别很大的情况,类别不平衡需要处理的情况:小类比大类更重要。
本节以反例样例较多为例展开。类别不平衡学习的一个基本策略:再缩放(rescaling)现有技术主要有三类:
- 过采样(oversampling)
增加一些正例使得正、反例数目接近,再进行学习。即对训练集里的正类样例进行“过采样”。- 注意不能简单地对初始正例样本进行重复采样,否则会导致严重的过拟合。过采样法的代表性算法SMOTE是通过对训练集里的正例进行插值来产生额外的正例。
- 欠采样(undersampling)
去除一些反例,是得正、反例数目接近,再进行学习。即直接对训练集里的反类样例进行“欠采样”- 欠采样法若随即丢弃反例,可能丢失一些重要信息。欠采样的代表性算法EasyEnsemble是利用集成学习机制,把反例划分为若干集合供不同学习器使用,这样对每个学习器来看都进行了欠采样,但在全局来看却不会丢失重要信息。
- 阈值移动(threshold-moving)
直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,把嵌入到其决策过程中
习题
- 对数几率回归为什么不能通过令偏导为0求解?
A、均方损失函数太复杂
B、均方损失非凸
C、均方损失没有偏导为0的点
D、均方损失没有极值点
解析:B - 下列关于梯度下降法描述错误的是?
A、可以用于求解对数几率回归
B、是一种迭代求解的方法
C、可以比较好的并行化
D、可以高效地求解所有凸优化问题
解析:D - 极大似然法最大化____函数
解析:似然 - 在线性判别分析中,类内散度矩阵的计算方法是将每个类别的样本与其____[最近样本/类别均值]进行求差,然后对差值向量进行矩阵乘积
解析:类别均值 - 下列哪个模型不是广义线性模型?
解析:D - 下列哪个选项不是多元线性回归使用正则化的原因?
A、计算机数值精度有限
B、样例维度大于样例数
C、样例的采样过程存在偏差
D、存在大量线性相关的样例
解析:C - 在求解对率回归时,下列哪个选项不是极大似然法的优势?
A、优化目标是凸函数
B、具有闭式解
C、可以使用梯度下降法 - 下列有关线性判别分析和主成分分析的说法错误的是
A、两者都是通过线性变换将数据转换到新的坐标系中
B、两者都是数据降维方法
C、主成分分析主要用于有监督学习,线性判别分析主要用于无监督学习
D、主成分分析主要用于提取数据中的主要成分,线性判别分析主要用于分类
解析:0.500
解析:0.535- 比较上述两题求得的斜率值,最小二乘法求得的斜率____(大于/等于/小于) 最小化数据集到线性模型欧式距离的平方和求得的斜率。这一结论对一般问题也成立,可尝试证明之。
解析:小于 - OvR是一种常用的多分类方法,该方法每次将一个类的样例作为正例、所有其他类的样例作为反例。对于类别均衡的10分类问题,若使用OvR以及阈值移动法来训练,则阈值应设为____ (保留3位小数)。
解析:0.100
决策树
决策树也称判定树,根据上下文,有时指学习方法,有时指学得的树。
决策树的基本流程
一般的,一颗决策树包含一个根节点,若干个内部节点和若干个叶节点。叶节点对应于决策结果,其他每个节点则对应于一个属性测试;
每个节点包含的样本集合根据属性测试的结果被划分到子节点中;
根节点包含样本全集。
从根节点到每个叶结点的路径对应了一个判定测试序列。决策树学习的目的是为了产生一颗泛化能力强,即处理未见示例能力强的决策树,其基本流程遵循简单且直观的“分而治之”策略。
信息增益划分
一般而言,随着划分过程不断进行,我们希望决策树的分支节点所包含的样本尽可能属于同一类别,即节点的“纯度”越来越高。
假定当前样本集合D中第k类样本所占的比例为pk(k=1,2……,|y|),则D的信息熵定义如下:
假定离散属性a有V个可能的取值{a1,a2, …,aV},若使用a来对样本集D进行划分,则会产生V个分支节点,其中第v个分支结点包含了D中所有在属性a上取值为aV的样本,记为Dv。我们可根据上式计算出Dv的信息熵,再考虑到不同的分支结点所包含的样本数不同,给分支结点赋予权重|Dv|/|D|,即样本数越多的分支节点,其影响越大。
计算出用属性a对样本集D进行划分所获得的“信息增益”(information gain)。
一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大。从而我们可以用信息增益来进行决策树的划分属性选择。著名的ID3决策树学习算法就是以信息增益为准则来选择划分属性。
其他属性划分准则
上述的信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响,C4.5决策树算法不直接使用信息增益,而是使用“增益率”(gain ratio)来选择最优化分属性。
增益率准则对可取值数目较少的属性有所偏好,则C4.5并非直接选择增益率最大的候选划分属性,而是使用一个启发式(因为关键在于如何界定何为纯净):先从候选划分属性中找出信息增益高于平均水平的属性(抵消偏向于分支数多的情况),再从中选择增益率最高的。
CART决策树使用“基尼指数”(Gini index)来选择划分属性。数据集D的纯度可用基尼值来度量:
决策树的剪枝
剪枝(pruning)是决策树学习算法对付过拟合的主要手段。在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,就有可能因训练样本学得“太好”,以致于把训练集自身的一些特点作为所有数据都具有的一般性质而导致过拟合。因而,可通过主动去掉一些分支降低过拟合的风险。
- 决策树剪枝的基本策略有“预剪枝”(prepruning)和“后剪枝”(post-pruning)。
- 预剪枝:指在决策树生成过程中,对每个结点在划分前先进行估计,若当前节点的划分不能带来决策树泛化性能提升,则停止划分并将当前节点标记为叶节点
- 后剪枝:先从训练集生成一颗完整的决策树,再自底向上地对非叶节点进行考察,若将该节点对应的子树替换成叶节点能带来决策树泛化性能提升,则将该子树替换为叶节点。
预剪枝和后剪枝
-
预剪枝
预剪枝基于信息增益原则来进行划分属性选择
-
预剪枝使得决策树的很多分支都没有“展开”
- 优点:
- 降低了过拟合的风险
- 减少了决策树的训练时间开销和测试时间开销
- 缺点:
- 有些分支的当前划分虽不能提升泛化性能、甚至可能导致泛化性能暂时下降,但在其基础上进行的后续划分却有可能导致性能显著提高;预剪枝基于“贪心”本质禁止这些分支展开,给预剪枝决策树带来了欠拟合的风险
- 优点:
-
后剪枝
后剪枝思想类似于预剪枝,不同之处在于后剪枝是自下而上
该情况中验证集精度虽无提高,但根据奥卡姆剃刀原则,剪枝后的模型更好。因此,实际的决策树算法在这种情况下通常要剪枝,本教程为绘图的方便,采取了不剪枝的保守策略。
一般情况下,后剪枝决策树的欠拟合风险很小,泛化性能往往会优于预剪枝决策树;
但后剪枝过程是在生成决策树之后进行的,并且要自底向上地对树中的所有非叶节点进行逐一考察,则其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多
- 预剪枝VS后剪枝
缺失值的处理
习题
- 对视频中出现的西瓜数据集2.0(《机器学习》教材第76页),划分前的信息熵为0.998,若使用编号属性进行划分,则信息增益为____(保留3位小数)
解析:0.998 - 决策树划分时,当遇到以下哪种情形时,将结点标记为叶节点,其类别标记为当前样本集中样本数最多的类
A、当前属性集为空,或所有样本在所有属性上取值相同
B、当前属性集不为空,或所有样本在所有属性上取值相同
C、当前结点包含的样本集合为空,或当前属性集为空
D、当前结点包含的样本集合为空,或所有样本在所有属性上取值相同
解析:A - 若数据集的属性全为离散值,决策树学习时,____(可以/不可以)把用过的属性再作为划分属性。
解析:不可以 - 通常来说,子节点的基尼不纯度与其父节点是什么样的关系?
A、通常更低
B、通常更高
C、永远更高
D、永远更低
解析:A
支持向量机
支持向量机基本型
由于训练集的局限性或噪声的因素,训练集外的样本可能比上图中的训练样本更接近两个类的分割界,使得很多划分超平面出现错误,而正中间受影响最小。换言之,这个划分超平面是最鲁棒的,对未见示例的泛化能力最强。
鲁棒性:即健壮性,指应对异常情况的处理能力。换言之,指一个系统或组织抵御或克服不利条件的能力
其中w=(w1;w2;……wd)为法向量,决定了超平面的方向;
b为位移项,决定了超平面和原点之间的距离。
显然,划分超平面可以被法向量w和位移b确定,下面将其记为(w,b)。样本空间中任意点x到超平面(w,b)的距离可写为上式r。
假设超平面(w,b)能把训练样本正确分类,即对于(xi,yi)∈D,
若yi=1,则有wT+b>0;若yi=-1,则有wT+b<0,令
如上个课件图所示,距离超平面最近的这几个训练样本点使上式的等号成立,将其称为“支持向量”(support vector),两个异类支持向量到超平面的距离之和为
γ
=
2
∣
∣
w
∣
∣
γ=\frac{2}{||w||}
γ=∣∣w∣∣2将之称为“间隔”(margin)
欲找到具有“最大间隔”(maximum margin)的划分超平面,即找到能满足上上图中式子约束的参数w和b,使得γ最大。
为了最大化间隔,等价于最大化||w||-1,又等价于最小化||w||2。于是,可重写为上图式子,即支持向量机(Support Vector Machine,简称SVM)的基本型。
对偶问题和解的特性
对上式使用拉格朗日乘子法可得到其“对偶问题”(dual problem)。具体而言,对上式的每条约束添加拉格朗日乘子αi≥0;则该问题的拉格朗日函数可写为下图所示。
解出α后,求出w和b即可得到模型。从对偶问题中解出的αi是式中的拉格朗日乘子,它恰好对应着训练样本(xi,yi).且有不等式约束,则上述过程需满足KKT(Karush-Kuhn-Tucker)条件。
对任意训练样本(xi,yi),总有αi=0或yif(xi)=1.当αi=0,则该样本将不会在式中的求和出现,也就不会对f(x)有任何影响;若αi>0,则必有yif(xi)=1,所对应的样本点位于最大间隔边界上,是一个支持向量。这表明支持向量机的一个重要性质:训练完成后,大部分的训练样本都无需保留,最终模型只和支持向量有关。(解的稀疏性)
求解方法
如何求解该问题呢?
这是一个二次规划问题,可使用通用的二次规划算法来求解。但是,该问题的规模正比于训练样本数,会在实际任务中造成很大的开销。为了避免开销大的问题,大牛们通过利用问题本身的特性提出了很多高效算法,SMO(Sequential Minimal Optimization序列最小优化算法)是其中一个代表。
SMO的基本思路是先固定αi之外的所有参数,再求αi上的极值。由于存在约束
当固定αi之外的其他变量,则αi可由其他变量导出。故SMO每次选择两个变量αi和αj,并固定其他参数。因此,在参数初始化后,SMO不断执行如下两个步骤直至收敛:
- 选取一对需要更新的变量αi和αj
- 固定αi和αj之外的参数,求解上上式获得更新后的αi和αj
注意只需选取的αi和αj中有一个不满足KKT条件,目标函数就会在迭代后增大。直观上看, KKT条件违背的程度越大,则变量更新后可能导致的目标函数增幅越大。因此,SMO先选取违背KKT条件程度最大的变量。第二个变量应选择一个使目标函数值增长最快的变量,但由于比较各变量所对应的目标函数增幅的复杂度过高,因此SMO采用了一个启发式:使选取的两变量所对应样本之间的间隔最大。 一种直观的解释是,这样的两个变量有很大的差别,与对两个相似的变量进行更新相比,对它们进行更新会带给目标函数值更大的变化。
SMO算法之所以高效,正是由于在固定其他参数后,仅优化两个参数的过程能做到非常高效。
特征空间映射
在之前的讨论中,我们假设训练样本是线性可分的,即存在一个划分超平面能将训练样本正确分类。但在现实任务中,原始样本空间内也许并不存在一个能拿个正确划分两类样本的超平面,看例如下图的“异或”问题。
对这类的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。例如下图中把原始的二维空间映射到一个合适的三维空间,就能找到一个合适的划分超平面。
且当原始空间是有限维,即属性数优先,则一定存在一个高维特征空间使样本可分。
核函数
求解上式涉及计算φ(xi)Tφ(xj),这是样本xi和xj映射到特征空间之后的内积。由于特征空间维数可能很高,甚至可能是无穷维,因此直接计算φ(xi)Tφ(xj)通常是困难的。为了避开这个问题,可设想这样的一个函数
即xi和xj在特征空间的内积就等于它们在原始样本空间中通过函数k(,)计算的结果。有了这样的函数,就不必直接去计算高维甚至无穷维 特征空间中的内积。则可重写为:
求解后可得
这里的函数k(,)就是“核函数”(kernel function)。上式表明模型最优解可通过训练样本的核函数展开,这一展式也称“支持向量展式”(support vector expansion)
上述定理表明,只要一个对称函数所对应的核矩阵半正定(恰满足距离矩阵的含义),它就能作为核函数使用。
事实上,对于一个半正定核矩阵,总能找到一个与之对应的映射φ。换言之,任何一个核函数都隐式地定义了一个称为“再生核希尔伯特空间”(Reproducing Kernel Hilbert Space,简称RKHS)的特征空间。
通过前面的讨论可知,我们希望样本在特征空间内线性可分,则特征空间的好坏对支持向量机的性能至关重要。需要注意的是,在不知道特征映射的形式时,我们并不知道什么样的核函数是合适的,而核函数也只是隐式地定义了这个特征空间。故“核函数选择”成为支持向量机的最大变数。若核函数选择不合适,则意味着把样本映射到了一个不合适的特征空间,很可能导致性能不好。(这方面有一些基本的经验,例如对文本数据通常采用线性核,情况不明时可先尝试高斯核)
常用的核函数如下:
还可以通过函数组合得到,例如:
软间隔SVM
前面的讨论中,我们一直假定训练样本在样本空间或特征空间中是线性可分的,即存在一个超平面能将不同类的样本完全划分开。但在现实任务中往往很难确定合适的核函数使得训练样本在特征空间中线性可分;退一步说,即便找到了某个核函数使训练集在特征空间中线性可分,也很难判定这个看似线性可分的结果不是由过拟合造成的。
缓解该问题的一个方法是允许支持向量机在一些样本上出错。故引入“软间隔”(soft margin)的概念。
具体而言,前面介绍的支持向量机形式是要求所有样本均满足约束,即所有样本都必须划分正确,这称为“硬间隔”(hard margin),而软间隔则是允许某些样本不满足约束
在最大化间隔的同时,不满足约束的样本应尽可能少(允许有一些不满足约束,但不能都不满足)。因而,优化目标可写为:
其中C>0(C越小,容忍度越大)是一个常数,l0/1是“0/1损失函数”
当C为无穷大时,使所有样本均满足约束;当C取有限值时,允许有一些样本不满足约束。
l0/1非凸、非连续,数学性质不太好,使得优化目标不易直接求解。因此人们通常用其他一些函数来代替l0/1,称为“替代损失”(surrogate loss)。替代损失函数一般具有较好的数学性质,例如通常是凸的连续函数且是l0/1的上街。常用的替代损失函数有:
当采用hinge损失,优化目标变为
引入松弛变量,可重写为下式。这就是常用的“软间隔支持向量机”
显然,下式中每个样本都有一个对应的松弛变量,用以表征该样本不满足约束的程度。但是这仍是一个二次规划问题。因此,可通过拉格朗日乘子法得到拉格朗日函数
αi,μi是拉格朗日乘子。
求偏导并变换可得对偶问题
与硬间隔的对偶问题的唯一差别:对偶变量αi的约束不同。
软间隔的KKT条件为
正则化
我们还可以把上式中的0/1损失函数换为别的替代损失函数来得到其他学习模型,这些模型的性质和所用的替代函数直接相关,但它们具有一个共性:优化目标中的第一项用来描述划分超平面的“间隔”大小,另一项用来表述训练集上的误差,可写为更一般的形式如下式。
C用于对二者进行折中。从经验风险最小化的角度来看,Ω(f)表述了我们希望获得具有何种性质的模型(例如希望获得复杂度较小的模型),这为引入领域知识和用户意图提供了途径;另一方面,该信息有助于消减假设空间,从而降低了最小化训练误差的过拟合风险。从该角度而言,上式称为“正则化”(regularization)问题,Ω(f)称为正则化项,C称为正则化常数。Lp范数(norm)是常用的正则化项。
如何使用SVM
考虑回归问题。给定训练样本D,希望学得一个回归模型,使得f(x)和y尽可能接近,w和b是待确定的模型参数。
对于样本(x,y),传统回归模型通常直接基于模型输出f(x)和真实输出y之间的差别来计算损失,当且仅当f(x)和y完全相同时,损失才为0;
支持向量回归(Support Vector Regression,简称SVR)假设我们能容忍f(x)和y之间最多有ε的偏差,即仅当f(x)和y之间的差别绝对值大于ε时才计算损失。这相当于以f(x)为中心,构建了一个宽度为2ε的尖阁待,若驯良样本落入此间隔带,则认为是被预测正确的
则SVR问题(支持向量回归)可形式化为
其中C为正则化常数,lc是图中的ε-不敏感损失(ε-insensitive loss)函数
引入松弛变量ξi和ξ^i重写为
习题
- 下面关于支持向量机的说法错误的是?
A、支持向量机基本型是一个凸二次规划问题
B、将训练样本分开的超平面仅由支持向量决定
C、支持向量机的核心思想是最大化间隔
D、以上选项存在说法错误的
解析:D - 下面关于支持向量机对偶问题的说法错误的是
A、对偶问题需要满足KKT条件
B、通过对偶问题推导出的模型表达式能够体现解的稀疏性
C、在推导对偶问题时,引入的拉格朗日乘子没有约束条件
D、对偶问题的最优值是原始问题最优值的下界
解析:C(D?) - 下面关于SMO算法说法正确的是
A、是一个迭代更新的算法
B、先选取KKT条件违背程度最大的变量
C、当变量固定后,原始问题具有闭式解
D、以上说法都是正确的
解析:D - 在求解支持向量机截距项的时候错误的说法是
A、通过任意支持向量都能够求解出截距项
B、为了提高鲁棒性,通常使用所有支持向量求解的平均值
C、通过任意样本都能够求解出截距项
D、截距项的求解能够体现支持向量机学习到的超平面仅与少量支持向量有关 - 在统计学习中,归纳偏好项通过()相关的项确定。
A、结构风险
B、经验风险
C、结构风险与经验风险
D、以上答案都不对
解析:A
神经网络
神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。当我们在机器学习中谈论神经网络时指的是“神经网络学习”,或者说,是机器学习和神经网络这两个学科领域的交叉部分。
神经网络模型
神经网络中最基本的成分是神经元(neuron)模型,即上述定义中的“简单单元”。在生物神经网络中,每个神经元和其他神经元相连,当它“兴奋” 时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;若某神经元的电位超过了一个“阈值”(threshold),那么它就会被激活,即“兴奋”起来,向其他神经元发送化学物质。
将上述情形抽象出的简单模型,就是一直沿用至今的“M-P神经元模型”。在这个模型中,神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”(activation function)处理以产生神经元的输出。(激活函数也称响应函数)
理想的激活函数是阶跃函数,它把输入值映射为输出值“0”或“1”,其中“0”对应于神经元抑制,“1”对应于神经元兴奋。但是阶跃函数具有不连续、不光滑等不太好的性质,因此实际常用Sigmoid函数作为激活函数。典型的Sigmoid函数如下图所示,它把可能在较大范围内变化的输入值挤压到(0,1)输出值范围内,因此有时也称为“挤压函数”(squashing function)
把多个这样的神经元按一定的层次结构连接起来,就得到了神经网络。只需将一个神经网络视为包含了许多参数的数学模型,这个模型是若干个相互(嵌套)代入而得。
感知机(Perceptron)由两层神经元组成,如下图
输入层接收外界输入信号后传递给输出层,输出层是M-P神经元,也称“阈值逻辑单元”(threshold logic unit)。
更一般地,给定训练数据集,权重wi(i=1,2,…,n)以及阈值θ可通过学习得到。阈值θ可视为一个固定输入为-1.0的“哑结点”(dummy node)所对应的连接权重wn+1,这样权重和阈值的学习可统一为权重的学习。感知机的学习规则非常简单,对训练样例(x,y),若当前感知机的输出为
y
^
\widehat{y}
y
,则感知机权重将这样调整:
其中η∈(0,1)称为学习率(learning rate)。从上式可看出,若感知机对训练样例(x,y)预测正确,即
y
^
\widehat{y}
y
=y,则感知机不发生变化,否则将根据错误的程度进行权重调整。
需要注意的是,感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元(functional neuron),其学习能力非常有限。
若两类模式是线性可分的,即存在一个线性超平面能够将它们分开。
“非线性可分”意味着用线性超平面无法划分。
要解决非线性可分问题,需考虑使用多层功能神经元。例如下图中这个简单的两层感知机就能解决异或问题(与、或、非问题是线性可分的;异或问题是非线性可分的)。输出层和输入层之间的一层神经元,被称为隐层或隐含层(hidden layer),隐含层和输出层神经元都是拥有激活函数的功能神经元。
更一般地,常见的神经网络是形如下图的层级结构,每层神经元和下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。这样的神经网络结构通常称为“多层前馈神经网络”(multi-layer feedforward neural networks)(“前馈”并不意味着信号不能向后传,而是指网络拓扑结构上不存在环或回路),其中输入层神经元接受外界输入,隐层和输出层神经元对信号进行加工,最终结果由输出层神经元输出;换言之,输入层神经元仅是接受输入,不进行函数处理,隐层和输出层包含功能神经元。则下图a通常称为“两层网络”,为避免歧义,本书称其为“单隐层网络”。只需包含隐层,即可称为多层网络。神经网络的学习过程,就是根据训练数据来调整神经元之间的“连接权”(connection weight)以及每个功能神经元之间的阈值;换言之,神经网络“学”到的东西,蕴含在连接权和阈值中。
万有逼近能力
万有逼近性并非神经网络独有,例如傅里叶变换,泰勒展示等也具有。
强调神经网络具有万有逼近性是为了说明解是可以找到的,我们要做的是去逼近。
BP算法推导
误差逆传播(error BackPropagation,简称BP)算法是迄今最成功的神经网络学习算法。现实任务中使用神经网络时,大多在使用BP算法进行训练。BP算法不仅可用于多层前馈神经网络,还可用于其他类型的神经网络,例如训练递归神经网络。但通常说“BP网络”时,一般是指用BP算法训练的多层前馈神经网络。
缓解过拟合
习题
- 神经网络模型的两个最重要的要素是什么?
A、网络结构、激活函数
B、网络结构、神经元模型
C、激活函数、学习算法
D、学习算法、神经元模型
解析:B - 下列哪个模型不具备万有逼近性?
A、线性模型
B、泰勒展开
C、傅里叶变换
D、决策树
解析:A - 多层前馈网络具有的强大表示能力称为神经网络的____性 (4个字)。
解析:万有逼近 - 下列关于BP算法的描述哪个是错误的?
A、BP算法适用于平方损失等许多常用损失函数
B、BP算法是迄今最成功、最常用的神经网络算法
C、BP算法的正式完整描述最早出现在1974年Werbos的博士学位论文中
D、BP算法只能用于回归任务
解析:D - BP算法的每一轮采用的是什么学习规则?
A、广义感知机学习规则
B、广义最小二乘学习规则
C、广义决策树学习规则
D、广义支持向量机学习规则
解析:A - 以下哪种情况下停止训练以缓解过拟合?
A、训练误差降低、验证误差降低
B、训练误差降低、验证误差升高
C、训练误差升高、验证误差降低
D、训练误差升高、验证误差升高
解析:B - 在误差目标函数中增加连接权平方和这一项后,训练过程将偏好比较____(大/小)的 连接权。
解析:小 - 下列关于BP算法使用小步长优化神经网络的说法中正确的是哪个?
A、一定能学到最优解
B、可以较好的避免振荡现象
C、训练速度快
D、学得的解比使用大步长具有更小的泛化误差
解析:B - 多层前馈神经网络可以视为线性函数与激活函数的复合,而单隐层前馈神经网络中这种复合的次数有限,因而单隐层前馈神经网络的万有逼近性对激活函数有一定要求。你认为使用下列哪个激活函数的单隐层前馈神经网络能具有万有逼近性质?
A、双曲正切函数
B、常值函数
C、线性函数
D、三次函数
解析:A - 下列哪个选项的步长调整方法是给出的四种方案中最好的?
A、先使用较大的步长,后使用较小的步长
B、先使用较小的步长,后使用较大的步长
C、一直使用较大的步长
D、一直使用较小的步长
解析:A(学习率即每次迭代的步长) - 下列关于万有逼近描述正确的是哪个选项?
A、万有逼近是神经网络独有的性质
B、神经网络的万有逼近性表明可以很容易的找到一个很好的解
C、具有万有逼近性是将神经网络作为机器学习模型的前提
D、神经网络的万有逼近性可以指导我们设置隐层神经元数
解析:C - 具有10个隐层结点的单隐层网络在处理输入维度为6维的三分类任务时 (有3个输出层结点),网络中共有____ (填写一个整数) 个参数。
解析:103 - 实际应用中常使用试错法来设置隐层神经元数,当问题较复杂时,通常使用较____(多/少) 隐层神经元。
解析:多 - 当神经网络参数寻优陷入局部极小时,____(过/欠)拟合更有可能发生。
解析:欠
贝叶斯分类器
贝叶斯决策论(Bayesian decision theory)是概率框架下实施决策的基本方法,对分类任务来说,在所有相关概率都已知的理想情况下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。下面以多分类任务来解释其基本原理。
贝叶斯决策论
假设有N种可能的类别标记,即y={c1,c2,……,cn},λij是把一个标记为cj的样本误分类为ci所产生的损失。基于后验概率P(ci|x)可获得将样本x分类为ci所产生的期望损失(expected loss),即在样本x上的“条件风险”(conditional risk)
先验概率(prior probability):指根据以往经验和分析。在实验或采样前就可以得到的概率。
后验概率(posterior probability):指某件事已经发生,想要计算这件事发生的原因是由某个因素引起的概率。
我们的任务是寻找一个判定准则h以最小化总体风险。显然,对每个样本x,若h能最小化条件风险,则总体风险也将被最小化,这就产生了贝叶斯判定准则(Bayes decision rule):为最小化总体风险,只需在每个样本上选择那个能使条件风险最小的类别标记,即
称h*为贝叶斯最优分类器(Bayes optimal classifier),与之对应的总体风险R(h*)称为贝叶斯风险(Bayes risk)。1 - R( h*)反映了分类器所能达到的最好性能,即通过机器学习所能产生的模型精度的理论上限。
若损失函数取0-1损失,有
生成式和判别式模型
想要使用贝叶斯判定准则来最小化决策风险,首先要获得后验概率P(c|x),但是在现实任务种这通常难以直接获得。从该角度来看, 机器学习要实现的是基于有限的训练样本集尽可能准确地估计出后验概率P(c|x)。主要有两种策略:
- “判别式模型”(discriminative models):给定x,可通过直接建模P(c|x)来预测c。之前学习的决策树、BP神经网络、支持向量机都可归入判别式模型的范畴。
- 生成式模型(generative models):先联合概率分布P(x,c)建模,再由此获得P(c|x)
贝叶斯分类器和贝叶斯学习
贝叶斯分类器 != 贝叶斯学习
- 贝叶斯分类器
- 属于频率主义流派(统计学习属于频率主义)
- θ是确定存在的,直接估计出来θ
- 贝叶斯学习
- 属于贝叶斯主义
- 想要先把θ背后的分布找出来,再找出来θ本身(所谓的为了分类,借助把世界本原找出来作为中间问题)
极大似然估计
极大似然估计(Maximum Likelihood Estimation,简称MLE),是一种根据数据采样来估计概率分布的经典方法。常用的策略是先假定总体具有某种确定的概率分布,再基于训练样本对概率分布的参数进行估计。运用到类条件概率p(x | c )中,假设p(x | c )服从一个参数为θ的分布,问题就变为根据已知的训练样本来估计θ。极大似然法的核心思想就是:估计出的参数使得已知样本出现的概率最大,即使得训练数据的似然最大。
- 求最大似然估计参数步骤:
- 1.写出似然函数;
- 2.对似然函数取对数,并整理;
- 3.求导数,令偏导数为0,得到似然方程组;
- 4.解似然方程组,得到所有参数即为所求。
需注意的是,这种参数化的方法虽能使类条件概率估计变得相对简单,但估计结果的准确性严重依赖于所假设的概率分布形式是否符合潜在的真实数据分布。在现实应用中,想要做出能较好地接近潜在真实分布的假设,往往需在一定程度上利用关于应用任务本身的经验知识,否则仅凭“猜测”来假设概率分布形式,很可能产生误导性的结果。
朴素贝叶斯分类器
基于贝叶斯公式来估计后验概率P(c|x)的主要困难在于:类条件概率P(c|x)是所有属性上的联合概率,难以从有限的训练样本直接估计而得。为了避免这个问题,朴素贝叶斯分类器(naive Bayes classifier)采用了“属性条件独立性假设”(attribute conditional independence assumption):对已知类别,假设所有属性相互独立。换言之,假设每个属性独立地对分类结果发生影响。则类条件概率P(c|x)可改写为:
拉普拉斯修正
相比原始贝叶斯分类器,朴素贝叶斯分类器基于单个的属性计算类条件概率更加容易操作,需要注意的是:若某个属性值在训练集中和某个类别没有一起出现过,这样会抹掉其它的属性信息,因为该样本的类条件概率被计算为0。因此在估计概率值时,常常用进行平滑(smoothing)处理,拉普拉斯修正(Laplacian correction)就是其中的一种经典方法,具体计算方法如下:
当训练集越大时,拉普拉斯修正引入的影响越来越小。对于贝叶斯分类器,模型的训练就是参数估计,因此可以事先将所有的概率储存好,当有新样本需要判定时,直接查表计算即可。
习题
- 极大似然中,若直接连乘,易造成什么现象?
A、下溢
B、上溢
C、内存不足
D、计算开销大
解析:A(用取对数解决) - 极大似然估计____(需要/不需要)假设某种概率分布形式
解析:需要 - 拉普拉斯修正实质上假设了属性值与类别服从什么先验分布?
A、均匀分布
B、二项分布
C、泊松分布
D、正态分布
解析:A - 贝叶斯最优分类器____(达到了/没达到)了贝叶斯风险。
解析:达到了 - 下列说法错误的是()
A、极大似然估计做了独立同分布假设
B、极大似然估计的任务是利用训练集估计参数
C、极大似然估计需先假设某种概率分布形式
D、极大似然估计属于贝叶斯主义
解析:D - 考虑二分类问题,若数据集中有100个样本,其中负类样本有48个。令 c 表示正类,则 P© 的估计值是____(保留2位小数)
解析:0.52 - 最小化分类错误率的贝叶斯最优分类器为:对每个样本选择能使以下哪个选项最大的类别标记?
A、后验概率
B、类条件概率
C、先验
D、以上都不是
解析:A - 拉普拉斯修正适用于()
A、朴素贝叶斯分类器
B、半朴素贝叶斯分类器
C、贝叶斯网
D、以上答案都对
解析:D - 在训练样本的数量一定的情况下,与朴素贝叶斯分类器相比,半朴素贝叶斯分类器对拉普拉斯修正的需求更____(大/小)。
解析:大
集成学习和聚类
集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统(multi-classifier system)、基于委员会的学习(committee-based learning)等。
集成学习
集成学习的一般结构为:先产生一组“个体学习器”(individual learner),再用某种策略将它们结合起来。个体学习器通常由一个现有的学习算法从训练数据产生,例如C4.5决策树算法、BP神经网络算法等,此时集成中只包含同种类型的个体学习器,例如“决策树集成”中全是决策树,“神经网络集成”中全是神经网络,这样的集成是“同质”的(homogeneous)。同质集成中的个体学习器也称为“基学习器”(base learner),相应的学习算法称为“基学习算法”(base learning algorithm)。集成也可包含不同类型的个体学习器,例如同时包含决策树和神经网络,这样的集成是“异质”的(heterogenous)。异质集成的个体学习器由不同的学习算法生成,就不再有基学习算法;相应的,个体学习器一般不称为基学习器,而称为“组件学习器”(component learner)或直接称为个体学习器。
集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能。这对“弱学习器”(weak learner)尤为明显,则集成学习的很多理论研究都是针对弱学习器(弱学习器指泛化性能稍微优于随即猜测的学习器。例如在二分类问题上精度略高于50%的分类器)进行的,而基学习器有时也直接称为弱学习器,但需注意的是,虽然从理论上来说使用弱学习器集成足以获得很好的性能,但在实践中出于种种考虑,例如希望使用较少的个体学习器,或是重用关于常见学习器的一些经验等,人们往往会使用比较强的学习器。
好而不同
集成学习把多个学习器结合起来,如何能获得比最好的单一学习器更好的性能呢?考虑一个简单的例子:在二分类任务中,假定三个分类器在三个测试样本上的表现如下图所示,其中对号表示分类正确,❌表示分类错误,集成学习的结果通过投票法(voting)产生,即“少数服从多数”。这个例子体现出:要获得好的集成,个体学习器应“好而不同”,即个体学习器要有一定的“准确性”,即学习器不能太坏,且要有“多样性”(diversity),即学习器间要有差异。
考虑二分类的简单情形,假设基分类器之间相互独立(能提供较高的差异度),且错误率相等为 ε,则可以将集成器的预测看做一个伯努利实验,易知当所有基分类器中不足一半预测正确的情况下,集成器预测错误,所以集成器的错误率可以计算为:
此时,集成器错误率随着基分类器的个数的增加呈指数下降,但前提是基分类器之间相互独立,在实际情形中显然是不可能的,假设训练有A和B两个分类器,对于某个测试样本,显然满足:P(A=1 | B=1)> P(A=1),因为A和B为了解决相同的问题而训练,因此在预测新样本时存在着很大的联系。因此,个体学习器的“准确性”和“差异性”本身就是一对矛盾的变量,准确性高意味着牺牲多样性,所以产生“好而不同”的个体学习器正是集成学习研究的核心。现阶段有三种主流的集成学习方法:Boosting、Bagging以及随机森林(Random Forest),接下来将进行逐一介绍。
两类常用的集成学习方法
- 根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类
- 个体学习器间存在强依赖关系、必须串行生成的序列化方法。代表有Boosting
- 个体学习器间不存在强依赖关系、可同时生成的并行化方法。代表有Bagging和随机森林(Random Forest)
Boosting
Boosting是一族可将弱学习器提升为强学习器的算法。这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直到基学习器数目达到事先指定的值T,最终把这个T个基学习器进行加权结合。
换言之,Boosting是一种串行的工作机制,即个体学习器的训练存在依赖关系,必须一步一步序列化进行。其基本思想是:增加前一个基学习器在训练训练过程中预测错误样本的权重,使得后续基学习器更加关注这些打标错误的训练样本,尽可能纠正这些错误,一直向下串行直至产生需要的T个基学习器,Boosting最终对这T个学习器进行加权结合,产生学习器委员会。
Boosting族算法最著名的代表是AdaBoost,因此下面主要是对AdaBoost算法进行介绍。AdaBoost使用的是指数损失函数,因此AdaBoost的权值与样本分布的更新都是围绕着最小化指数损失函数进行的。看到这里回想一下之前的机器学习算法,不难发现机器学习的大部分带参模型只是改变了最优化目标中的损失函数:如果是Square loss,那就是最小二乘了;如果是Hinge Loss,那就是著名的SVM了;如果是log-Loss,那就是Logistic Regression了。
AdaBoost算法的指数损失函数定义为:
- 具体说来,整个Adaboost 迭代算法分为3步:
- 初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权值:1/N。
- 训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权值就被降低;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后,权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
- 将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。
可以看出:AdaBoost的核心步骤就是计算基学习器权重和样本权重分布,那为何是上述的计算公式呢?这就涉及到了我们之前为什么说大部分带参机器学习算法只是改变了损失函数,就是因为大部分模型的参数都是通过最优化损失函数(可能还加个规则项)而计算(梯度下降,坐标下降等)得到,这里正是通过最优化指数损失函数从而得到这两个参数的计算公式,具体的推导过程此处不进行展开。
Boosting算法要求基学习器能对特定分布的数据进行学习,即每次都更新样本分布权重,这里书上提到了两种方法:“重赋权法”(re-weighting)和“重采样法”(re-sampling)
重赋权法 : 对每个样本附加一个权重,这时涉及到样本属性与标签的计算,都需要乘上一个权值。
重采样法 : 对于一些无法接受带权样本的及学习算法,适合用“重采样法”进行处理。方法大致过程是,根据各个样本的权重,对训练数据进行重采样,初始时样本权重一样,每个样本被采样到的概率一致,每次从N个原始的训练样本中按照权重有放回采样N个样本作为训练集,然后计算训练集错误率,然后调整权重,重复采样,集成多个基学习器。
从偏差-方差分解来看:Boosting算法主要关注于降低偏差,每轮的迭代都关注于训练过程中预测错误的样本,将弱学习提升为强学习器。从AdaBoost的算法流程来看,标准的AdaBoost只适用于二分类问题。
Bagging和随机森林
Bagging是并行式集成学习方法,基于自助采样法(bootsrtap sampling)。所谓“并行”即基学习器的训练之间没有前后顺序可以同时进行,Bagging使用“有放回”采样的方式选取训练集,对于包含m个样本的训练集,进行m次有放回的随机采样操作,从而得到m个样本的采样集,这样训练集中有接近36.8%的样本没有被采到。按照相同的方式重复进行,我们就可以采集到T个包含m个样本的数据集,从而训练出T个基学习器,最终对这T个基学习器的输出进行结合。
算法流程:
可以看出Bagging主要通过样本的扰动来增加基学习器之间的多样性,因此Bagging的基学习器应为那些对训练集十分敏感的不稳定学习算法,例如:神经网络与决策树等。从偏差-方差分解来看,Bagging算法主要关注于降低方差,即通过多次重复训练提高稳定性。不同于AdaBoost的是,Bagging可以十分简单地移植到多分类、回归等问题。总的说起来则是:AdaBoost关注于降低偏差,而Bagging关注于降低方差。
随机森林(Random Forest 简称RF)是Bagging的一个扩展变体。RF在已决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。具体而言,传统决策树在选择划分属性时是在当前节点的属性集合(假设有d个属性)中选择一个最有属性;而在RF中 ,对基决策树的每个结点,先从该节点的属性集合中随机选择一个包含k个属性的子集,再从这个子集中选择一个最优属性用于划分。此处的参数k控制了随机性的引入程度,一般,推荐值k=log2d。
换言之,它的基学习器固定为决策树,多棵树也就组成了森林,而“随机”则在于选择划分属性的随机,随机森林在训练基学习器时,也采用有放回采样的方式添加样本扰动,同时它还引入了一种属性扰动,即在基决策树的训练过程中,在选择划分属性时,RF先从候选属性集中随机挑选出一个包含K个属性的子集,再从这个子集中选择最优划分属性。
这样随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,从而进一步提升了基学习器之间的差异度。相比决策树的Bagging集成,随机森林的起始性能较差(由于属性扰动,基决策树的准确度有所下降),但随着基学习器数目的增多,随机森林往往会收敛到更低的泛化误差。同时不同于Bagging中决策树从所有属性集中选择最优划分属性,随机森林只在属性集的一个子集中选择划分属性,因此训练效率更高。
多样性度量
在集成学习中,基学习器之间的多样性是影响集成器泛化性能的重要因素。因此增加多样性对于集成学习研究十分重要,一般的思路是在学习过程中引入随机性,常见的做法主要是对数据样本、输入属性、输出表示、算法参数进行扰动。
- 数据样本扰动,即利用具有差异的数据集来训练不同的基学习器。例如:有放回自助采样法,但此类做法只对那些不稳定学习算法十分有效,例如:决策树和神经网络等,训练集的稍微改变能导致学习器的显著变动。
- 输入属性扰动,即随机选取原空间的一个子空间来训练基学习器。例如:随机森林,从初始属性集中抽取子集,再基于每个子集来训练基学习器。但若训练集只包含少量属性,则不宜使用属性扰动。
- 输出表示扰动,此类做法可对训练样本的类标稍作变动,或对基学习器的输出进行转化。 算法参数扰动,通过随机设置不同的参数,例如:神经网络中,随机初始化权重与随机设置隐含层节点数。
多样性的定义是集成学习中的圣杯问题
聚类
在“无监督学习”(unsupervised learning)中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质和规律,为进一步的数据分析提供基础。
监督 | 无监督 |
---|---|
分类 | 聚类 |
回归 | 密度估计 |
无监督学习任务中,研究最多、应用最广的的“聚类”(clustering).聚类则是试图将数据集的样本划分为若干个互不相交的类簇,从而每个簇对应一个潜在的类别。
聚类直观上来说是将相似的样本聚在一起,从而形成一个类簇(cluster)。那首先的问题是如何来度量相似性(similarity measure)呢?这便是距离度量,在生活中我们说差别小则相似,对应到多维样本,每个样本可以对应于高维空间中的一个数据点,若它们的距离相近,我们便可以称它们相似。那接着如何来评价聚类结果的好坏呢?这便是性能度量,性能度量为评价聚类结果的好坏提供了一系列有效性指标。
距离计算
我们知道属性分为两种:连续属性和离散属性(有限个取值)。对于连续值的属性,一般都可以被学习器所用,有时会根据具体的情形作相应的预处理,例如:归一化等;而对于离散值的属性,需要作下面进一步的处理:若属性值之间存在序关系,则可以将其转化为连续值,例如:身高属性“高”“中等”“矮”,可转化为{1, 0.5, 0}。 若属性值之间不存在序关系,则通常将其转化为向量的形式,例如:性别属性“男”“女”,可转化为{(1,0),(0,1)}。
在进行距离度量时,易知连续属性和存在序关系的离散属性都可以直接参与计算,因为它们都可以反映一种程度,我们称其为“有序属性”;而对于不存在序关系的离散属性,我们称其为:“无序属性”,显然无序属性再使用闵可夫斯基距离就行不通了。
对于无序属性,我们一般采用VDM进行距离的计算,例如:对于离散属性的两个取值a和b,定义:
于是,在计算两个样本之间的距离时,我们可以将闵可夫斯基距离和VDM混合在一起进行计算:
若我们定义的距离计算方法是用来度量相似性,例如下面将要讨论的聚类问题,即距离越小,相似性越大,反之距离越大,相似性越小。这时距离的度量方法并不一定需要满足前面所说的四个基本性质,这样的方法称为:非度量距离(non-metric distance)。
聚类方法概述
习题
- 下列关于Boosting算法中样本权重调整的说法中错误的是哪个?
A、所有样本的权重和保持不变
B、前一个基学习器分错的样本会获得更大的权重
C、只要权重调整的方向正确,Boosting算法的性能就可以获得理论保证
D、决策树可以直接处理带权重的样本
解析:C - Boosting是一种____ (同质/异质) 集成学习方法。
解析:同质 - 下列关于Bagging算法描述中错误的是哪个?
A、Bagging算法中每个基学习器使用相同的数据集
B、分类任务中使用投票法获得输出
C、回归任务中使用平均法获得输出
D、Random Forest是具有代表性的Bagging算法
解析:A - 下列关于误差-分歧分解的说法中正确的是哪个?
A、这一分解表明特定条件下,集成学习的性能与个体学习器多样性正相关
B、这一分解体现了多样性在回归、分类等机器学习任务中的重要性
C、这一分解给出了一种可操作的多样性定义
D、这一分解中的误差可以使用训练误差进行估计
解析:A - 随机森林与传统决策树构成的森林相比,多样性往往____(更高/相同/更低)。
解析:更高