《机器学习》周志华 学习笔记
第一章 绪论
1.1 引言
机器学习:致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。
经验:“经验”通常以“数据”的形式存在。
学习算法:是关于在计算机上从数据中产生“模型”的算法,即“学习算法”。
因此,机器学习是研究关于“学习算法”的学问。
1.2 基本术语
一批关于西瓜的数据:
(色泽 = 青绿;根蒂 = 蜷缩;敲声 = 浊响),
(色泽 = 乌黑;根蒂 = 稍蜷;敲声 = 沉闷),
(色泽 = 浅白;根蒂 = 硬挺;敲声 = 清脆),… …
每对括号内是一条记录,“=” 意思是 “取值为” 。
这组记录集合称为一个数据集,其中每条记录是关于一个事件或对象(西瓜)的描述,称为一个 “示例” 或 “样本“ 。
”色泽“,”根蒂“,”敲声“ 称为 ”属性“ 或 ”特征“ ,则”乌黑“,”蜷缩“,… …则为 ”属性值“ 。
属性长成的空间称为:”属性空间“,”样本空间“,”输入空间“ 。
例如我们把“ 色泽”,“ 根蒂”,“ 敲声” 作为三个坐标轴, 则它们张成一个用于描述西瓜的三维空间, 每个西瓜都可在这个空间中找到自己的坐标位置, 由于空间中的每个点对应一个坐标向量, 因此我们也把一个示例称为一个“ 特征向量” (feature vector)。
一般地,令
D
=
{
x
1
,
x
2
,
.
.
.
,
x
m
}
D = \{x_1, x_2, ... , x_m\}
D={x1,x2,...,xm}
表示包含m个示例的数据集,每个示例由d个属性描述组成,则每个示例
x
i
=
(
x
i
1
;
x
i
2
;
.
.
.
;
x
i
d
)
x_i = (x_{i1}; x_{i2}; ... ; x_{id})
xi=(xi1;xi2;...;xid)
是d维样本空间X中的一个向量,d为一个样本的维数。
从数据中学得模型的过程称为“ 学习” (learning) 或 “训练” (training) ,这个过程通过执行某个学习算法来完成。训练过程中使用的数据称为“ 训练数据” (training data) , 其中每个样本称为一个“ 训练样本” (training sample) ,训练样本组成的集合称为“ 训练集” (training set)。学得模型对应了关于数据的某种潜在的规律, 因此亦称 “假设”(hypothesis) ; 这种潜在规律自身, 则称为“ 真相” 或“ 真实” (ground-truth) , 学习过程就是为了找出或逼近真相。本书有时将模型称为“ 学习器” (learner) , 可看作学习算法在给定数据和参数空间上的实例化。
如果希望学得一个能帮助我们判断没剖开的是不是 “好瓜” 的模型, 仅有前面的示例数据显然是不够的, 要建立这样的关于 “预测” (prediction) 的模型, 我们需获得训练样本的“ 结果” 信息, 例如“ ( ( 色泽: 青绿; 根蒂一蜷缩;
敲声: 浊响) , 好瓜) ” 。这里关于示例结果的信息, 例如“ 好瓜” , 称为“ 标记” (label) ; 拥有了标记信息的示例, 则称为“ 样例” (example) 。
一般地,用
(
x
i
,
y
i
)
(x_i, y_i)
(xi,yi)
表示第i个样例,Y是所有标记的集合,亦称 ”标记空间“ 或 ”输出空间“ 。
学习任务的分类
根据目的
- 分类(离散值)
- 回归(连续值)
一般地,预测任务是希望通过对训练集
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
}
\{(x_1, y_1), (x_2, y_2), ... , (x_m, y_m)\}
{(x1,y1),(x2,y2),...,(xm,ym)}
进行学习,建立一个从输入空间X到输出空间Y的映射
f
:
X
−
>
Y
f:X->Y
f:X−>Y
根据是否拥有标记信息
- 监督学习(分类,回归)
- 无监督学习(聚类)
需注意的是, 机器学习的目标是使学得的模型能很好地适用于 “新样本”而不是仅仅在训练样本上工作得很好; 即便对聚类这样的无监督学习任务, 我们也希望学得的簇划分能适用于没在训练集中出现的样本。学得模型适用于新样本的能力, 称为 “泛化” (generalization) 能力. 具有强泛化能力的模型能很好地适用于整个样本空间. 于是, 尽管训练集通常只是样本空间的一个很小的采样, 我们仍希望它能很好地反映出样本空间的特性, 否则就很难期望在训练集上学得的模型能在整个样本空间上都工作得很好. 通常假设样本空间中全体样本服从一个未知“ 分布” (distribution) D我们获得的每个样本都是独立地从这个分布上采样获得的, 即 “独立同分布” (independent and identically distributed , 简称显i.i.d.)。 一般而言, 训练样本越多, 我们得到的关于D的信息越多,这样越有可能通过学习获得具有强泛化能力的模型。
1.3 假设空间
归纳(induction) 与演绎(deduction) 是科学推理的两大基本手段。前者是从特殊到一般的 “泛化” (generalization) 过程, 即从具体的事实归结出一般性规律; 后者则是从一般到特殊的 “特化” (specialization) 过程, 即从基础原理推演出具体状况, 例如, 在数学公理系统中, 基于一组公理和推理规则推导出与之相洽的定理, 这是演绎; 而 “从样例中学习” 显然是一个归纳的过程, 因此亦称 “归纳学习” (inductive learning) 。归纳学习有狭义与广义之分, 广义的归纳学习大体相当于从样例中学习,而狭义的归纳学习则要求从训练数据中学得概念( concept ) , 因此亦称为 “概念学习” 或 “概念形成” 。概念学习技术目前研究、应用都比较少, 因为要学得泛化性能好且语义明确的概念实在太困难了, 现实常用的技术大多是产生“ 黑箱” 模型, 然而, 对概念学习有所了解, 有助于理解机器学习的一些基础思想。
我们可以把学习过程看作一个在所有假设( hypothesis ) 组成的空间中进行搜索的过程, 搜索目标是找到与训练集 “匹配” (fit) 的假设, 即能够将训练集中的瓜判断正确的假设, 假设的表示一旦确定, 假设空间及其规模大小就确定了。
需注意的是, 现实问题中我们常面临很大的假设空间, 但学习过程是基于有限样本训练集进行的, 因此, 可能有多个假设与训练集一致, 即存在着一个与训练集一致的 “假设集合” 我们称之为 “版本空间” (version space) 。
1.4 归纳偏好
任何一个有效的机器学习算法必有其归纳偏好, 否则它将被假设空间中看似在训练集上“ 等效” 的假设所迷惑, 而无法产生确定的学习结果。可以想象,如果没有偏好, 我们的西瓜学习算法产生的模型每次在进行预测时随机抽选训练集上的等效假设, 那么对这个新瓜“(色泽 = 青绿;根蒂 = 蜷缩;敲声 = 沉闷)” , 学得模型时而告诉我们它是好的、时而告诉我们它是不好的, 这样的学习结果显然没有意义。
归纳偏好的作用在下图这个回归学习图示中可能更直观。这里的每个训练样本是图中的一个点办要学得一个与训练集一致的模型, 相当于找到一条穿过所有训练样本点的曲线, 显然, 对有限个样本点组成的训练集, 存在着很多条曲线与其一致, 我们的学习算法必须有某种偏好, 才能产出它认为 “正确” 的模型。
![归纳偏好_1](\pictures\归纳偏好_1.bmp)
归纳偏好可看作学习算法自身在一个可能很庞大的假设空间中对假设进行选择的启发式或“ 价值观” .那么, 有没有一般性的原则来引导算法确立 “正确的” 偏好呢? “奥卡姆剃刀” (Occam’s razor )是一种常用的、自然科学研究中最基本的原则, 即“ 若有多个假设与观察一致, 则选最简单的那个” 。如果采用这个原则, 并且假设我们认为 “更平滑” 意味着 “更简单” ( 例如曲线 A 更易于描述,而曲线 B 则要复杂得多),则在上图中我们会自然地偏好 “平滑” 的曲线A。然而,奥卡姆剃刀并非唯一可行的原则。
事实上, 归纳偏好对应了学习算法本身所做出的关于 “什么样的模型更好” 的假设, 在具体的现实问题中, 这个假设是否成立, 即算法的归纳偏好是否与问题本身匹配, 大多数时候直接决定了算法能否取得好的性能。
![归纳偏好_2](\pictures\归纳偏好_2.bmp)
无论学习算法多聪明、随机胡猜算法多笨拙, 它们的期望性能竟然相同! 这就是 “没有免费的午餐” 定理( No Free Lunch Theorem , 简称NFL定理)[WoIpert, 1996 ; WoIpert and Macready, 1995 ] ,这下子, 读者对机器学习的热情可能被一盆冷水浇透了: 既然所有学习算法的期望性能都跟随机胡猜差不多, 那还有什么好学的?我们需注意到, NFL 定理有一个重要前提: 所有“ 问题” 出现的机会相同、或所有问题同等重要。但实际情形并不是这样,很多时候, 我们只关注自己正在试图解决的问题( 例如某个具体应用任务), 希望为它找到一个解决方案,至于这个解决方案在别的问题、甚至在相似的问题上是否为好方案, 我们并不关心, 例如, 为了快速从A 地到达B 地, 如果我们正在考虑的A 地是南京鼓楼、B 地是南京新街口, 那么 “骑自行车” 是很好的解决方案; 这个方案对A地是南京鼓楼、B 地是北京新街口的情形显然很糟糕, 但我们对此并不关心。
事实上, 上面NFL 定理的简短论述过程中假设了的均匀分布, 而实际情形并非如此. 例如, 回到我们熟悉的西瓜问题, 考虑 { 假设1 : 好瓜( 色泽 = * )^ ( 根蒂 = 蜷缩) ^ ( 敲声 = 浊响) } 和 { 假设2 : 好瓜( 色泽 = * ) ^ ( 根蒂 = 硬挺)^ ( 敲声 = 清脆) } 。 从NFL 定理可知, 这两个假设同样好,我们立即会想到符合条件的例子, 对好瓜( 色泽 = 青绿; 根蒂 = 蜷缩; 敲声 = 浊响) 是假设1 更好, 而对好瓜( 色泽 = 乌黑; 根蒂 = 硬挺; 敲声 = 清脆) 则是假设2 更好, 看上去的确是这样, 然而需注意到, “ ( 根蒂 = 蜷缩; 敲声 = 浊响) ” 的好瓜很常见, 而“ ( 根蒂 = 硬挺; 敲声 = 清脆) " 的好瓜罕见, 甚至不存在。
所以, NFL 定理最重要的寓意, 是让我们清楚地认识到, 脱离具体问题, 空泛地谈论“ 什么学习算法更好” 毫无意义, 因为若考虑所有潜在的问题, 则所有学习算法都一样好。要谈论算法的相对优劣, 必须要针对具体的学习问题; 在某些问题上表现好的学习算法, 在另一些问题上却可能不尽如人意, 学习算法自身的归纳偏好与问题是否相配, 往往会起到决定性的作用。
第二章 模型的评估与选择
2.1 经验误差与过拟合
通常我们把分类错误的样本数占样本总数的比例称为 “错误率” (error rate),即如果在m个样本中有a个样本分类错误,则错误率
E
=
a
/
m
E=a/m
E=a/m
相应的,
1
−
a
/
m
1-a/m
1−a/m
称为“精度”(accuracy),即 “精度=1- 错误率 ”.更一般地,我们把学习器的实际预测输出与样本的真实输出之间的差异称为 “误差” (error),学习器在训练集上的误差称为 “训练误差” (training error) 或 “经验误差” (empirical error) ,在新样本上的误差称为 “泛化误差” (generalization error)。显然,我们希望得到泛化误差小的学习器。然而,我们事先并不知道新样本是什么样,实际能做的是努力使经验误差最小化。在很多情况下,我们可以学得一个经验误差很小、在训练集上表现很好的学习器,例如甚至对所有训练样本都分类正确,即分类错误率为零,分类精度为100%,但这是不是我们想要的学习器呢?遗憾的是,这样的学习器在多数情况下都不好。
我们实际希望的,是在新样本上能表现得很好的学习器。为了达到这个目的,应该从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”,这样才能在遇到新样本时做出正确的判别。然而,当学习器把训练样本学得 “太好” 了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降。这种现象在机器学习中称为 “过拟合” (over fitting) 。与 “过拟合” 相对的是 “欠拟合” (under fitting) ,这是指对训练样本的一般性质尚未学好。下图给出了关于过拟合与欠拟合的一个便于直观理解的类比。
![过拟合和欠拟合](\pictures\过拟合欠拟合对比.bmp)
2.2 评估方法
-
留出法
直接将数据集D划分为两个互斥的集合(尽可能保持数据分布的一致性)。
-
交叉验证法
先将数据集D划分成k个大小相似的互斥子集(尽可能保持数据分布的一致性),然后,每次用k - 1个子集的并集作为训练集,余下的子集作为测试集,进行k次训练和测试,最后返回k个测试结果的均值。又称 “k折交叉验证” 。
-
自助法
在给定的m个样本的数据集D,我们对它采样产生数据集D‘:每次随机从D中挑选一个样本,将其拷贝放入D’;这个过程重复执行m次后,我们就得到了包含m个样本的数据集D‘。用D’作为训练集,D\D‘作为测试集。
2.3 性能度量
性能度量:衡量模型泛化能力的评价标准。
- 错误率与精度
- 查准率、查全率与 F1
- ROC 与 AUC
- 代价敏感错误率与代价曲线
2.4 比较检验
- 假设检验
- 交叉验证 t 检验
- McNamar 检验
- Friedman 检验与 Nemenyi 后续检验
2.5 偏差与方差
对学习算法除了通过实验估计其泛化性能,人们往往还希望了解它 “ 为什么” 具有这样的性能, “ 偏差一方差分解” (bias-variance decomposition) 是解释学习算法泛化性能的一种重要工具。
第五章 神经网络
5.1 神经元模型
神经网络中最基本的成分是神经元(neuron)模型,即上述定义中的 “简单单元” 。在生物神经网络中每个神经元与其他神经元相连,当它 “兴奋” 时,就会向相连的神经元发送化学物质, 从而改变这些神经元内的电位;如果某神经元的电位超过了一个“阈值”(threshold) ,那么它就会被激活,即 “ 兴奋 ”起来,向其他神经元发送化学物质。
![](.\pictures\M-P_Model.bmp)
理想中的激活函数是跳跃函数,将输入值映射为输出值 “0” 或 “1” ,下图为常使用的激活函数:
![](.\pictures\active_function.bmp)
把许多这样的神经元按一定的层次结构连接起来,就得到了神经网络。
5.2 感知机与多层网络
感知机 (Perceptron) 由两层神经元组成,如下图所示,输入层接收外界输入信号后传递给输出层, 输出层是M-P 神经元,亦称 “阈值逻辑单元” (threshold logic unit) 。
![](.\pictures\感知机.bmp)
更一般的,常见的神经网络如下图所示的层级结构,每层神经网络与下层全相连,不存在同层以及跨层连接,这样的神经网络通常称为 “多层前馈神经网络” 。
![](.\pictures\前馈神经网络.bmp)
神经网络的学习过程是根据训练数据来调整神经元之间的 “连接权” 和每个功能神经元的阈值。换言之,神经网络学习到的东西蕴含在连接权和阈值当中。
5.3 误差逆传播算法
多层网络的学习能力比单层感知机强得多,欲训练多层网络,需要更强大的学习算法。误差逆传播(error BackPropagation, 简称BP)算法就是其中最杰出的代表,它是迄今最成功的神经网络学习算法。现实任务中使用神经网络时,大多是在使用BP算法进行训练。值得指出的是,BP算法不仅可用于多层前馈神经网络,还可用于其他类型的神经网络,例如训练递归神经网络[Pineda, 1987]。但通常说"BP网络” 时,一般是指用BP算法训练的多层前馈神经网络。
![](.\pictures\BP神经网络.bmp)
以下为BP算法的流程:
![](.\pictures\BP算法.bmp)
累积BP算法与标准BP算法都很常用,一般来说,标准BP算法每次更新只针对单个样例,参数更新得非常频繁,而且对不同样例进行更新的效果可能出现“抵消”现象,因此,为了达到同样的累积误差极小点,标准BP算法往往需进行更多次数的迭代。累积BP算法直接针对累积误差最小化,它在读取整个训练集D一遍后才对参数进行更新,其参数更新的频率低得多。但在很多任务中,累积误差下降到一定程度之后,进一步下降会非常缓慢,这时标准BP往往会更快获得较好的解,尤其是在训练集非常大时更明显。
正是由于其强大的表示能力,BP神经网络经常遭遇过拟合,其训练误差持续降低,但测试误差却可能上升。有两种策略常用来缓解BP网络的过拟合。第一种策略是“早停” (early stopping) :将数据分成训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值,第二种策略是“正则化” (regularization) [Barron, 1991 ;Girosi et al., 1995] ,其基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分, 例如连接权与阈值的平方和。
5.4 全局最小与局部极小
显然,参数空间内梯度为零的点,只要其误差函数值小于邻点的误差函数值,就是局部极小点;可能存在多个局部极小值,但却只会有一个全局最小值,也就是说,“全局最小” 一定是“局部极小” ,反之则不成立。例如下图中有两个局部极小,但只有其中之一是全局最小。显然, 我们在参数寻优过程中是希望找到全局最小。
基于梯度的搜索是使用最为广泛的参数寻优方法。在此类方法中,我们从某些初始解出发,迭代寻找最优参数值,每次迭代中,我们先计算误差函数在当前点的梯度,然后根据梯度确定搜索方向。例如,由于负梯度方向是函数值下降最快的方向,因此梯度下降法就是沿着负梯度方向搜索最优解。若误差函数在当前点的梯度为零,则己达到局部极小,更新量将为零,这意味着参数的迭代更新将在此停止。
显然,如果误差函数仅有一个局部极小,那么此时找到的局部极小就是全局最小;然而,如果误差函数具有多个局部极小,则不能保证找到的解是全局最小。对后一种情形,我们称参数寻优陷入了局部极小,这显然不是我们所希望的。
![](.\pictures\全局最小与局部极小.bmp)
在现实任务中,人们常采用以下策略来试图“跳出”局部极小,从而进一步接近全局最小:
- 以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数。这相当于从多个不同的初始点开始搜索,这样就可能陷入不同的局部极小,从中进行选择有可能获得更接近全局最小的结果。
- 使用 “模拟退火” (simulated annealing) 技术[Aarts and Korst ,1989 ]。模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于 “跳出” 局部极小,在每步迭代过程中,接受 “次优解” 的概率要随着时间的推移而逐渐降低,从而保证算法稳定。
- 使用随机梯度下降。与标准梯度下降法精确计算梯度不同,随机梯度下降法在计算梯度时加入了随机因素,于是,即便陷入局部极小点,它计算出的梯度仍可能不为零,这样就有机会跳出局部极小继续搜索。
5.5 其他常见的神经网络
- RBF网络(激活函数为径向基函数)
- ART网络(竞争型学习,无监督学习)
- SOM网络(竞争型学习,无监督学习)
- 级联相关网络(结构自适应网络的代表)
- Elman网络(递归神经网络,允许出现环形结构)
- Boltzmann机(基于能量的模型)
5.6 深度学习
理论上来说,参数越多的模型复杂度越高、“容量” (capacity) 越大,这意味着它能完成更复杂的学习任务。但一般情形下,复杂模型的训练效率低,易陷入过拟合,因此难以受到人们青睐。而随着云计算、大数据时代的到来,计算能力的大幅提高可缓解训练低效性,训练数据的大幅增加则可降低过拟合风险,因此,以“深度学习” (deep learning)为代表的复杂模型开始受到人们的关注,典型的深度学习模型就是很深层的神经网络。
显然,对神经网络模型,提高容量的一个简单办法是增加隐层的数目。隐层多了,相应的神经元连接权、阈值等参数就会更多。模型复杂度也可通过单纯增加隐层神经元的数目来实现,前面我们谈到过,单隐层的多层前馈网络己具有很强大的学习能力;但从增加模型复杂度的角度来看,增加隐层的数目显然比增加隐层神经元的数目更有效,因为增加隐层数不仅增加了拥有激活函数的神经元数目,还增加了激活函数嵌套的层数。然而,多隐层神经网络难以直接用经典算法( 例如标准BP算法)进行训练,因为误差在多隐层内逆传播时,往往会发散(diverge) 而不能收敛到稳定状态。
节省训练开销的方法:
- 预训练+微调
- 权共享(卷积神经网络CNN)
第六章 支持向量机
6.1 间隔与支持向量
给定的训练样本集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
}
,
D = \{ (x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m}) \},
D={(x1,y1),(x2,y2),...,(xm,ym)},
分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开。划分超平面可能会有很多,应该选择哪一个呢?
![](.\pictures\多个划分超平面.bmp)
在样本空间中,划分超平面可以通过如下线性方程来描述:
ω
T
x
+
b
=
0
,
\omega^{T}x + b = 0,
ωTx+b=0,
其中,
ω
=
(
w
1
;
w
2
;
.
.
.
;
w
d
)
\omega = (w1;w2;...;wd)
ω=(w1;w2;...;wd)
为法向量,决定了超平面的方向;b为位移项,决定了超平面与原点之间的距离。样本空间任意一点x到(w, b)的距离可写为
KaTeX parse error: Undefined control sequence: \abs at position 12: r = \frac{\̲a̲b̲s̲{\omega^{T}x+b}…
假设超平面(w, b)能将训练样本正确分类,即
{
ω
T
x
i
+
b
≥
+
1
,
y
i
=
+
1
;
ω
T
x
i
+
b
≤
−
1
,
y
i
=
−
1.
\begin{cases} \begin{aligned} \omega^{T}x_{i}+b\ge+1,\quad y_{i}=+1;\\ \omega^{T}x_{i}+b\le-1,\quad y_{i} = -1. \end{aligned} \end{cases}
{ωTxi+b≥+1,yi=+1;ωTxi+b≤−1,yi=−1.
如下图所示,距离超平面最近的这几个训练样本使上式等号成立,它们被称为 “支持向量” ,两个异类支持向量到超平面的距离之和为
KaTeX parse error: Undefined control sequence: \abs at position 20: …mma = \frac{2}{\̲a̲b̲s̲{\abs{\omega}}}…
它被称为 “间隔” 。
![](.\pictures\支持向量与间隔.bmp)
欲找到具有 “最大间隔” 的划分超平面,也就是找到满足上式中约束的参数w和b,使GAMMA最大,即
KaTeX parse error: Undefined control sequence: \abs at position 53: …space \frac{2}{\̲a̲b̲s̲{\abs{\omega}}}…
显然,为了最大化间隔仅需要最大化
KaTeX parse error: Undefined control sequence: \abs at position 2: \̲a̲b̲s̲{\abs{\omega}}^…
这等价于最小化
KaTeX parse error: Undefined control sequence: \abs at position 2: \̲a̲b̲s̲{\abs{\omega}}^…
于是,上式可以重写为
KaTeX parse error: Undefined control sequence: \abs at position 55: …ace \frac{1}{2}\̲a̲b̲s̲{\abs{\omega}}^…
这是支持向量机(SVM)的基本型。
6.2 对偶问题
上式本身是一个凸二次规划问题,能直接用现成的优化计算包求解,但我们可以有更高效的做法。
对上式使用拉格朗日乘子法可得到其“对偶问题” (dual problem) 。具体来说,对上式的每条约束添加拉格朗日乘子
α
i
≥
0
,
\alpha_{i}\ge0,
αi≥0,
则该问题的拉格朗日函数可写为
KaTeX parse error: Undefined control sequence: \abs at position 34: …) = \frac{1}{2}\̲a̲b̲s̲{\abs{\omega}}^…
其中
α
=
(
α
1
;
α
2
;
.
.
.
.
;
α
m
)
.
\alpha = (\alpha_{1};\alpha_{2};....;\alpha_{m}).
α=(α1;α2;....;αm).
令L(w, b, x)对w和b的偏导为零可得
KaTeX parse error: Expected 'EOF', got '&' at position 10: \omega =&̲ \sum_{i = 1}^{…
将上式代入可得SVM的对偶问题
m
a
x
α
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j
s
.
t
.
∑
i
=
1
m
α
i
y
i
=
0
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
m
.
max_{\alpha}\thinspace \sum_{i = 1}^{m}\alpha_{i} - \frac{1}{2}\sum_{i = 1}^{m}\sum_{j = 1}^{m} \alpha_{i}\alpha_{j}y_{i}y_{j} x_{i}^{T}x_{j}\\ s.t.\sum_{i = 1}^{m}\alpha_{i}y_{i} = 0\\ \alpha_{i}\ge0,\quad i = 1,2,...,m.
maxαi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxjs.t.i=1∑mαiyi=0αi≥0,i=1,2,...,m.
求解可得模型
f
(
x
)
=
ω
T
x
+
b
=
∑
i
=
1
m
α
i
y
i
x
i
T
x
+
b
\begin{aligned} f(x) &= \omega^{T}x+b\\ &=\sum_{i = 1}^{m}\alpha_{i}y_{i}x_{i}^{T}x+b \end{aligned}
f(x)=ωTx+b=i=1∑mαiyixiTx+b
上述过程要满足KKT条件,即要求
{
α
i
≥
0
;
y
i
f
(
x
i
−
1
)
≥
0
;
α
i
(
y
i
f
(
x
i
−
1
)
)
=
0.
\begin{cases} \begin{aligned} &\alpha_{i}\ge0;\\ &y_{i}f(x_{i} - 1)\ge0;\\ &\alpha_{i}(y_{i}f(x_{i} - 1))=0. \end{aligned} \end{cases}
⎩⎪⎨⎪⎧αi≥0;yif(xi−1)≥0;αi(yif(xi−1))=0.
支持向量机一个重要的性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
上式可使用SMO算法求解。
6.3 核函数
在本章前面的讨论中,我们假设训练样本是线性可分的,即存在一个划分超平面能将训练样本正确分类。然而在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面。例如下图的“异或”问题就不是线性可分的。
![](.\pictures\异或问题与非线性映射.bmp)
对这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分,例如在上图中:若将原始的二维空间映射到一个合适的三维空间,就能找到一个合适的划分超平面。幸运的是,如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分。
核函数直接决定了支持向量机与核方法的最终性能。
常用核函数有:
![](.\pictures\常用核函数.bmp)
6.4 软间隔与正则化
在前面的讨论中,我们一直假定训练样本在样本空间或特征空间中是线性可分的,即存在一个超平面能将不同类的样本完全划分开。然而,在现实任务中往往很难确定合适的核函数使得训练样本在特征空间中线性可分; 退一步说,即便恰好找到了某个核函数使训练集在特征空间中线性可分,也很难断定这个貌似线性可分的结果不是由于过拟合所造成的。
缓解该问题的一个办法是允许支持向量机在一些样本上出错,为此,要引入“软间隔” (soft margin) 的概念,如下图所示。
![](.\pictures\软间隔.bmp)
- 硬间隔(所有样本必须满足约束)
- 软间隔(允许有些样本不满足约束)
正则化可理解为一种“罚函数法”,即对不希望得到的结果施以惩罚,从而使得优化过程趋向于希望目标,从贝叶斯估计的角度来看,正则化项可认为是提供了模型的先验概率。
6.5 支持向量回归
![](.\pictures\支持向量回归.bmp)
落入间隔带的样本不计算损失。
6.6 总结与提升
6.6.1 概念
支持向量机,因其英文名为support vector machine,故一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
6.6.2 对偶问题的求解思路
- 首先固定alpha,要让 L 关于 w 和 b 最小化,我们分别对w,b求偏导数,即令 ∂L/∂w 和 ∂L/∂b 等于零
- 求alpha的极大,即是关于对偶问题的最优化问题。经过上面第一个步骤的求w和b,得到的拉格朗日函数式子已经没有了变量w,b,只有alpha。
- 在求得L(w, b, a) 关于 w 和 b 最小化,以及对alpha的极大之后,最后一步则可以利用SMO算法求解对偶问题中的拉格朗日乘子alpha。
6.6.3 核函数的作用
具体来说,在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身不好分的非线性数据分开。如图所示,一堆数据在二维空间无法划分,从而映射到三维空间里划分:
来看个核函数的例子。如下图所示的两类数据,分别分布为两个圆圈的形状,这样的数据本身就是线性不可分的,此时咱们该如何把这两类数据分开呢?
通过核函数映射到三维空间后
6.6.4 SVM的应用
或许我们已经听到过,SVM在很多诸如文本分类,图像分类,生物序列分析和生物数据挖掘,手写字符识别等领域有很多的应用,但或许你并没强烈的意识到,SVM可以成功应用的领域远远超出现在已经在开发应用了的领域。
第七章 贝叶斯分类器
7.1 贝叶斯决策论
是概论框架下实施决策的基本方法。
P
(
c
∣
x
)
=
P
(
c
)
P
(
x
∣
c
)
P
(
x
)
P(c|x) = \frac{P(c)P(x|c)}{P(x)}
P(c∣x)=P(x)P(c)P(x∣c)
P© 是先验概率,P(x|c) 是样本x相对于类标记c的类条件概率(似然),P(x) 是用于归一化的 “证据” 因子。
7.2 朴素贝叶斯分类器
特点:假设输入数据的特征都是独立的(属性条件独立性假设)。
改进:为了避免其他属性携带信息被训练集中未出现的属性值 “抹去” ,在估计概率值时通常要进行 “平滑” 处理,常用拉普拉斯修正。
7.3 半朴素贝叶斯分类器
考虑一部分的属性间的依赖信息,因为属性条件独立性假设很难实现。
- 超父(NB,SPODE)
- 最大带权生成树(TAN)
7.4 EM算法
如果样本的一些属性是未知时,如何对模型参数进行估计?
EM算法(期望最大化算法)可以实现。
基本想法:
-
E步:计算对数似然关于Z的期望
Q ( Θ ∣ Θ t ) = E Z ∣ X , Θ t L L ( Θ ∣ X , Z ) . Q(\Theta | \Theta^t) = \Bbb{E}_{Z|X,\Theta^t}LL(\Theta|X,Z). Q(Θ∣Θt)=EZ∣X,ΘtLL(Θ∣X,Z). -
M步:寻找最大化期待似然
Θ t + 1 = a r g Θ m a x Q ( Θ ∣ Θ t ) . \Theta^{t+1} = arg_{\Theta}max Q(\Theta|\Theta^{t}). Θt+1=argΘmaxQ(Θ∣Θt).
简要来说,EM 算法使用两个步骤交替计算:第一步是期望( E )步,利用当前估计的参数值来计算对数似然的期望值;第二步是最大(M)步,寻找能使E步产生的似然期望最大化的参数值。然后,新得到的参数值重新被用于E步…直至收敛到局部最优解。
事实上,隐变量估计问题也可通过梯度下降等优化算法求解,但由于求和的项数将随着隐变量的数目以指数级上升,会给梯度计算带来麻烦;而EM 算法则可看作一种非梯度优化方法。
7.5 思维导图总结
![](.\pictures\贝叶斯总结.bmp)
第八章 集成学习
8.1 个体与集成
集成学习通过构建并结合多个学习器来完成学习任务,又称多分类器系统、基于委员会的学习等。
![](.\pictures\学习器.bmp)
如上图,如果所有个体学习器是同质的,则称为基学习器;如果不同质(异质),则称为组件学习器。
集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能。这对弱学习器尤为明显。基学习器有时也被直接称为弱学习器。
![](.\pictures\集成个体-好而不同.bmp)
上例表明:想要获得好的集成,个体学习器应 “好而不同” 。
如何产生并结合 “好而不同” 的个体学习器,恰是集成学习研究的核心。
目前,集成学习方法大致可以分成两大类:
- 个体学习器之间存在强依赖关系、必须串行生成序列化方法(代表:Boosting)
- 个体学习器间不存在强依赖关系、可同时生成并行化方法(代表:Bagging和随机森林)
8.2 Boosting
Boosting是一族可将弱学习器提升为强学习器的算法。
工作机制:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本的分布进行调整,使得先前学习器做错的训练样本在后续中受更多的关注,然后基于调整后的样本分布来训练下一个基学习器;重复执行直至学习器数目达到T,最终将T个学习器进行加权结合。
Boosting算法的两种调整方法:
- 重赋权法
- 重采样法
8.3 Bagging与随机森林
8.3.1 Bagging
Bagging是并行式集成学习方法中最著名的代表,它基于自主采样法。
给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过m次随机采样操作,我们得到含m 个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现, 初始训练集中约有63.2%的样本出现在采样集中。
照这样,我们可采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合。这就是Bagging的基本流程,在对预测输出进行结合时,Bagging 通常对分类任务使用简单投票法,对回归任务使用简单平均法。若分类预测时出现两个类收到同样票数的情形,则最简单的做法是随机选择一个,也可进一步考察学习器投票的置信度来确定最终胜者。
Bagging 的算法描述如下图所示:
![](.\pictures\Bagging算法.bmp)
从偏差一方差分解的角度看,Bagging 主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显。
8.3.2 随机森林
随机森林(RF)是Bagging的一个扩展变体。RF在以决策树为基学习器构建Bagging集成上,进一步在决策树的训练过程中引入了随机属性选择。具体来说,传统决策树在选择划分属性时是在当前结点的属性集合( 假定有d个属性)中选择一个最优属性;而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k (推荐: k = log2(d)) 个属性的子集, 再从子集中选择一个最优属性用于划分。
随机森林简单、容易实现、计算开销小,它在很多现实任务中展现出强大的性能,被誉为 “代表集成学习技术水平的方法” 。
8.4 结合策略
学习器结合可能会从三个方面带来好处[Dietterich ,2000]
首先,从统计的方面来看,由于学习任务的假设空间往往很大,可能有多个假设在训练集上达到同等性能,此时若使用单学习器可能因误选而导致泛化性能不佳,结合多个学习器则会减小这一风险;
第二,从计算的方面来看,学习算法往往会陷入局部极小,有的局部极小点所对应的泛化性能可能很糟糕,而通过多次运行之后进行结合,可降低陷入糟糕局部极小点的风险;
第三,从表示的方面来看,某些学习任务的真实假设可能不在当前学习算法所考虑的假设空间中,此时若使用单学习器则肯定无效,而通过结合多个学习器,由于相应的假设空间有所扩大,有可能学得更好的近似,下图给出了一个直观示意图:
![](.\pictures\学习器结合的好处.bmp)
常见策略:
- 平均法
- 投票法
- 学习法
8.5 多样性
个体学习器的准确性越高, 多样性越大, 则集成越好。称为 “误差-分歧分解” 。
多样性的度量:
- 不合度量
- 相关系数
- Q-统计量
- k-统计量
多样性增强:
- 数据样本扰动 (基于采样法)
- 输入属性扰动 (随机子空间)
- 输出表示扰动 (翻转法)
- 算法参数扰动 (负相关法)
第九章 聚类
9.1 聚类任务
“监督学习” 和 “无监督学习” 的区别是否有标签(label)。
无监督学习最常用的是聚类。
9.2 性能度量
性能度量亦称 “有效性指标” 。
分类:
-
外部指标:将聚类结果与某个 “参考模型” 进行比较。
常用指标:Jaccard系数, FM指数, Rand指数。
-
内部指标:直接考察聚类结果而不利用任何参考模型。
常用指标:DB指数, Dunn指数。
理想结果:
- 簇内相似度高
- 簇间相似度低
9.3 距离计算
连续属性:有序属性
离散属性:有序属性,无序属性
-
闵可夫斯基距离(有序属性)
p = 1 曼哈顿距离
p = 2 欧氏距离
-
VDM (无序属性)
-
闵可夫斯基距离结合VDM(混合属性)
9.4 原型聚类
- k均值算法(k-means)
- 学习向量量化(LVQ)
- 高斯混合聚类
- 密度聚类(DBSCAN)
- 层次聚类(AGENS)
第十章 降维与度量学习
10.1 k近邻学习
kNN学习是常用的监督学习方法。它实际上是 “懒惰学习” 的著名代表,此类学习技术在训练阶段仅仅是把样本保存起来,训练时间开销为零,待收到测试样本后再进行处理;相应的,那些在训练阶段就对样本进行学习处理的的方法,称为 “急切学习” 。
![](.\pictures\kNN.bmp)
10.2 低维嵌入
属性维数为1时,邻近分类器的泛化错误不超过贝叶斯最优分类器的错误率的两倍。但是,维数变大,会给计算带来很大的麻烦,事实上,事实上,在高维情形下出现的数据样本稀疏、距离计算困难等问题,是所有机器学习方法共同面临的严重障碍,被称为“ 维数灾难” (curse of dimensionality) 。
缓解维数灾难的一个重要途径是降维( dimension reduction) ,亦称“ 维数约简” ,即通过某种数学变换将原始高维属性空间转变为一个低维“ 子空间” (subspace) ,在这个子空间中样本密度大幅提高,距离计算也变得更为容易。为什么能进行降维? 这是因为在很多时候,人们观测或收集到的数据样本虽是高维的,但与学习任务密切相关的也许仅是某个低维分布,即高维空间中的一个低维“ 嵌入” 。
![](.\pictures\低维嵌入.bmp)
如果要求原始空间中样本之间在低维空间中得以保持,如上图所示,即得到 “多维释放”(MDS)。
10.3 常用降维方法
-
主成分分析(PCA)
满足条件的超平面有以下性质:
-
最近重构性:样本点到这个超平面的距离足够近;
-
最大可分性:样本点在这个超平面上的投影能尽可能分开
-
-
核化线性降维
-
流形学习
- 等度量映射
- 局部线性嵌入
-
度量学习
在机器学习中,对高维数据进行降维的主要目的是希望找到一个合适的低维空间,在此空间中进行学习能比原始空间性能更好。事实上,每个空间对应了在样本属性上定义的一个距离度量,而寻找合适的空间,实质上就是在寻找一个合适的距离度量。那么,为何不直接尝试“ 学习” 出一个合适的距离度量呢?这就是度量学习(metric learning) 的基本动机。
10.4 分类
懒惰学习 | 急切学习 |
---|---|
k临近学习器 | 朴素贝叶斯分类器 |
懒惰决策树 | 决策树 |
朴素贝叶斯分类器 | SVM |
无监督线性降维方法 | 监督的线性降维方法 |
---|---|
主成分分析 | KLDA |
第十三章 半监督学习
13.1 未标记样本
已标记样本过少,未标记样本的数量远大于已标记的样本数,对未标记的样本进行标记花费大量时间与精力,不标记,仅用少量的标记样本训练模型,学习得来的模型的泛化能力不佳。半监督学习可以实现利用未标记的样本来提高泛化能力。
事实上,未标记样本虽然未直接包含标记信息,但是它们与有标记的样本是从同样的数据源独立同分布采样来的。
如下图所示,若仅基于图中的一个正例和一个反例,则带判别样本恰位于两者的中间;若能观察到图中的未标记样本,则很有把握地判别为正例。
![](.\pictures\未标记样本.bmp)
让学习器不依赖外界交互、自动地利用未标记的样本来提升学习性能,就是半监督学习。
常用的方法:
- 聚类假设(见上图)
- 流形假设(邻近样本有相似的输出,聚类假设的推广)
本质:相似的样本拥有相似的输出。
半监督学习可以进一步分成:
- 纯半监督学习(假定未标记样本并非待预测的数据,“开发世界”)
- 直推学习(假定未标记的样本就是待预测的数据,“封闭世界”)
请见下图图解:
![](.\pictures\半监督学习的分类与区别.bmp)
13.2 生成式方法
生成式方ii(generative methods)是直接基于生成式模型的方法。此类方法假设所有数据(无论是否有标记)都是由同一个潜在的模型“生成”的。这个假设使得我们能通过潜在模型的参数将未标记数据与学习目标联系起来,而未标记数据的标记则可看作模型的缺失参数,通常可基于EM 算法进行极大似然估计求解。此类方法的区别主要在于生成式模型的假设,不同的模型假设将产生不同的方法。
常用:高斯混合模型。
13.3 半监督SVM
半监督支持向量机(S3VM)是支持向量机在半监督学习上的推广。S3VM试图找到能将两类有标记样本分开,且穿过数据低密度区域的划分超平面。这里的基本假设是 “低密度分隔”,如下图:
![](.\pictures\S3VM.bmp)
13.4 图半监督学习
给定一个数据集,我们可将其映射为一个图,数据集中每个样本对应于图中一个结点,若两个样本之间的相似度很高(或相关性很强),则对应的结点之间存在一条边,边的“强度” (strength) 正比于样本之间的相似度(或相关性)。 我们可将有标记样本所对应的结点想象为染过色,而未标记样本所对应的结点尚未染色。于是,半监督学习就对应于“颜色” 在图上扩散或传播的过程。由于一个图对应了一个矩阵,这就使得我们能基于矩阵运算来进行半监督学习算法的推导与分析。
13.5 基于分歧的方法
“协同训练” 是此类方法的代表。
13.6 半监督聚类
聚类是一种典型的无监督学习任务,然而在实现聚类任务中我们往往能获得一些额外的监督信息,于是可通过半监督聚类来利用监督信息以获得更好的聚类效果。
聚类任务中获得的监督信息有两种:
- 必连与勿连
- 必连:指样本必属于同一簇
- 勿连:指样本必不属于同一簇
- 少量的有标记样本
第十四章 概率图模型
14.1 隐马尔可夫模型
概率图模型(probabilistic graphical model)是一类用图结构来表达各属性之间相关关系的概率模型,一般而言: 图中的一个结点表示一个或一组随机变量,结点之间的边则表示变量间的相关关系,从而形成了一张“变量关系图”。若使用有向的边来表达变量之间的依赖关系,这样的有向关系图称为贝叶斯网(Bayesian nerwork)或有向图模型;若使用无向边,则称为马尔可夫网(Markov network)或无向图模型。
隐马尔可夫模型(Hidden Markov Model,简称 HMM)是结构最简单的一种贝叶斯网,在语音识别与自然语言处理领域上有着广泛的应用。
隐马尔可夫模型中的变量有两种:
- 状态变量,yi表示第i时刻的系统状态,通常假定状态时隐藏的、不可被观测的,因此状态变量亦称隐变量。
- 观测变量,xi表示第i时刻的观测值。
下图中箭头表示了变量间的依赖关系
![](.\pictures\隐马尔可夫模型的图结构.bmp)
在任一时刻,观测变量的取值仅依赖于状态变量,与其他状态变量的及观测变量的取值无关。同时,t时刻的状态yt仅依赖于t-1时刻的状态yt-1,与前t-2个状态无关。这就是所谓的“马尔可夫链” ,即:系统下一时刻的状态仅由当前状态决定,不依赖于以往的任何状态。因此,联合概率分布为
P
(
x
1
,
y
1
,
.
.
.
,
x
n
,
y
n
)
=
P
(
y
1
)
P
(
x
1
∣
y
1
)
∏
i
=
2
n
P
(
y
i
∣
y
i
−
1
)
P
(
x
i
∣
y
i
)
.
P(x_{1},y_{1},...,x_{n},y_{n}) = P(y_{1})P(x_{1}|y_{1})\prod_{i = 2}^{n}P(y_{i}|y_{i-1})P(x_{i}|y_{i}).
P(x1,y1,...,xn,yn)=P(y1)P(x1∣y1)i=2∏nP(yi∣yi−1)P(xi∣yi).
欲确定一个隐马尔可夫模型还需要以下三组参数:
- 状态转移概率
- 输出观测概率
- 初始状态概率
14.2 马尔可夫随机场
马尔可夫随机场(MRF)是典型的马尔可夫网,这是一种著名的无向图模型。利用势函数进行建模。
![](.\pictures\马尔可夫随机场.bmp)
- 团与极大团
- 势函数
- 全局马尔可夫性 -> 局部马尔可夫性 + 成对马尔可夫性
14.3 条件随机场
概率图模型分类:
- 第一种
- 有向图:贝叶斯网,隐马尔可夫模型,话题模型
- 无向图:马尔可夫随机场
- 第二种
- 生成式模型:隐马尔可夫模型、马尔可夫随机场、话题模型
- 判别式模型:条件随机场
条件随机场和马尔可夫随机场均使用团上的势函数定义概率,两者在形式上没有显著区别;但条件随机场处理的是条件
概率,而马尔可夫随机场处理的是联合概率。
14.4 话题模型
话题模型是一族生成式的有向图模型,用于处理离散数据,在信息检索以及自然语言处理上有广泛的应用。
隐迪利克雷分配模型是话题模型的典型代表。