目录
1.1 统计学习方法的定义与分类
1.1.1 统计学习的概念
统计学习应用于很多领域,比如:人工智能、模式识别、数据挖掘、自然语言处理、语音处理、机器学习、信息检索、生物信息。比如百度使用了信息检索的内容;现在各个国家都在研究的人工智能。对于这些方法,统计学习就是它们的核心技术。
统计学习(Statistical Machine Learning)是关于计算机(平台)基于数据(研究对象)构建概率统计模型(方法)并运用模型对数据进行预测与分析(目的)的一门学科。简而言之,就是用已知的数据对未知的新数据进行预测和分析。
统计学习方法的步骤是:
1.得到一个有限的训练数据集合
2.确定学习模型的集合 -----------------------------------------模型
3.确定模型选择的准则 -----------------------------------------策略
4.实现求解最优模型的算法 -----------------------------------算法
5.通过学习方法选择最优模型
6.利用学习的最优模型对新数据进行预测或分析
模型、策略、算法 就是统计学习的三要素,构成了学习系统。训练集通过学习系统不断地学习,得到最优模型,新的数据X通过模型,得到输出Y
1.1.2 统计学习的分类
(1)基本分类可以分为:监督学习、无监督学习、强化学习、半监督学习、主动学习。
(2)按模型分类:概率模型和非概率模型、线性模型与非线性模型、参数化模型与非参数化模型。概率模型(决策树、朴素贝叶斯)就是用条件概率分布的形式表达模型,非概率模型(感知机、支持向量机、神经网络)使用函数形式表达;如果模型函数是线性的就是线性模型,反之是非线性模型;参数化模型(适用于简单问题)就是说模型的参数维数是固定的,可以由有限维的参数来刻画,非参数化模型(适用于复杂的现实问题)对应着参数模型不固定
(3)按算法分类:在线学习(每次接受一个样本,然后再预测学习模型,之后不断重复这个步骤)、批量学习(一次接受所有的数据,再学习模型进行预测)。当数据无法及时储存或者不能随时间动态变化的时候要选择在线学习。
(4)按技巧分类:贝叶斯学习(基于贝叶斯定理的方法,例如:朴素贝叶斯)、核方法(基于核函数,例如:核函数支持向量机)
1.2 统计学习方法的基本分类
统计学习方法按基本分类可以分为监督学习、无监督学习、强化学习,有时还包括半监督学习、主动学习。其中监督学习、无监督学习、半监督学习和主动学习都是根据学习的数据中,数据所包含的标记信息来区分的。其中监督学习所学习的数据都是已经标注过的;无监督学习所学习的数据是不具有标注信息的;半监督学习则是学习的数据只含有少量标注的,大多数都没有标注,主要是因为有时候标注信息需要注入大量的成本,而为了节约成本,利用未标注的数据辅助标注数据进行学习;主动学习是主动选择有用的实例来进行标注,从而达到通过较小的标注代价,实现比较好的学习效果。
1.2.1 监督学习
图里有很多点,我们把每个点称为一个实例,每个实例可以通过坐标表达,每个点除了坐标还有颜色类别不同,比如左上角的点是蓝色的,右下角的坐标是橘色的,输入是每个实例,输出是颜色类别,输入和输出成对的出现,我们就称之为一个样本。将这些样本作为训练集,进行监督学习,试图通过拟合函数得到一个边界平面将这两类点区分开。
监督学习是指从标注数据中学习预测模型的机器学习问题,其本质是学习输入到输出的映射的统计规律。映射是指:两个集合号中的元素相互对应的关系。
(1)输入空间(Input Space):输入的所有可能取值的集合
(2)实例(Instance):每一个具体的输入,通常由特征向量表示
(3)特征空间(Feature Space):所有特征向量存在的空间
输入空间和特征空间大多数同一个空间,但例如在支持向量机中它们可能不在同一个空间。
(4)输出空间(Output Space):输出的所有可能取值的集合
根据变量类型不同:
输入变量与输出变量均为连续变量的预测问题 ----------------回归问题
输入变量为有限个离散变量的预测问题 -------------------------分类问题
输入变量与输出变量均为变量序列的预测问题 ----------------标注问题
监督学习流程图:
1.2.2 无监督学习
这些点没有标注信息,也就是说每个点都可以用坐标表达,但看不出它的类别。对于这一类别的点,我们希望通过算法得到这些点隐含在内部结构的信息,比如我们可以通过聚类方法将它分为两个簇,这就是无监督学习。
无监督学习(Unsupervised Learning)是指从无标注数据中学习预测模型的机器学习问题,其本质是学习数据中的统计规律或潜在结构。
监督学习和无监督学习的区别:
监督学习 | 无监督学习 | |
数据 | 标注数据:表示输入输出的对应关系。 也就是:给一个输入会有一个输出。 | 无标注数据:自然得到的数据,只有输入 |
预测模型 | 对给定的输入产生相应的输出 | 表示数据的类别、转换或概率,主要通过聚类、降维方法 |
本质 | 学习输入到输出的映射的统计规律 | 学习数据中的统计规律或潜在结构 |
无监督学习相关概念
无监督学习的训练流程图:
1.2.3 强化学习
强化学习强调互动,这个互动是指智能系统与环境之间的连续互动,通过互动,我们学习最优行为策略。
强化学习流程图:
假如在环境中观察到一个状态St,一个奖励rt,那么如果采取动作at,环境既可以根据智能系统来决定下一个状态St+1和下一个奖励让rt+1,之后再不停地循环,智能系统决定下一个状态和奖励是根据长期累计奖励最大化来实现的。强化学习可以基于策略,也可以基于价值,基于策略就选择最优策略;基于价值,选择最优价值之后得到一个最优模型。
1.3 统计学习方法的三要素
统计学习方法由模型、策略、算法这三部分构成,这三项就是统计学习方法的三要素。对于监督学习,无监督学习、强化学习,它们同样具有这三个要素,只不过形式不同。对于监督学习,我们处理的是有标签数据,这类数据的类型是已知的,知道相应的输出大概是什么样子,相应的模型、策略和算法都是比较具体的;但是对于无监督学习,处理的数据是无标注的,所以我们希望找到隐含在数据内部的结构信息,这时候三要素就不会那么具体。
1.3.1 监督学习:模型
模型主要可以表达成两种类型:条件概率分布形式和决策函数形式。条件概率分布形式就是概率模型,决策函数形式则是非概率模型。所有可能的模型组成的空间就是假设空间。
每一个决策函数就要由一个参数向量来决定,参数向量所决定的函数簇就构成了假设空间,所有可能的参数向量组成了参数空间。
如果模型表示为条件概率分布的形式,此时的假设空间就是所有可能的条件概率分布组成的集合,X和Y分别表示输入空间的变量和输出空间的变量。
1.3.2 监督学习:策略
上述就是第一个要素----模型,而所有可能的模型就组成了假设空间。那么如何在假设空间里选择一个最优模型呐?这就需要用到第二个要素----策略。策略就是一种学习准则,是用来选择自由模型的。选择模型就一定要度量模型的好坏,引入几个概念:
风险函数就是对损失函数求概率期望,风险函数就是模型关于联合分布P(x,y)在平均意义下的损失。如果对假设空间中的每一个模型f,都求一下损失函数值,选择一个最小的损失所对应的模型就是想要的最优模型,但是联合分布P(x,y)并不是已知的,所以风险函数就不能直接进行计算,此时选择一个经验值或者是一个估计值来替代这个风险函数。假设给定一个样本量为N的训练集T,对于每个样本都可以表示出它的损失函数,求它的N个样本损失函数的平均值,这个值就是经验风险。当N趋向于无穷大时,根据大数定律,经验函数就会趋向于风险函数,所以在一定程度上用经验损失作为风险函数的估计值是合理的。但是在现实生活中,样本容量N是有限的,有时甚至会很小,所以仅仅用经验风险来估计风险函数,效果并不理想,所以需要进行一定的矫正。所以这里就涉及到监督学习的两个基本策略:经验风险最小化、结构风险最小化。
当样本容量N足够大时,我们可以认为经验风险是风险函数的一个估计值,所以这时候只需要选取使经验风险最小的那个模型即可。但是当样本容量N比较小时,仅仅使经验风险最小化容易造成过拟合现象,于是引入结构风险,结构风险就是在经验风险的基础上加入一个惩罚项,这个惩罚项是针对模型的复杂度,也就是J(f)。模型f越复杂,J(f)就越大,模型f越简单,J(f)就越小。所以结构风险平衡了经验风险和模型的复杂度。结构风险最小化,就是选取一个是结构风险最小的模型。
常见的损失函数:
0-1损失函数主要针对分类问题,平方损失函数和绝对损失函数主要针对回归问题,对数损失函数主要针对概率模型。
(1)0-1损失函数:当真实值和预测值不相等时,损失函数值取1,当真实值和预测值相等时,损失函数值取0。这是一种适性函数,朴素贝叶斯会使用到这种函数。
(2)平方损失函数和绝对损失函数:主要度量真实值和预测值之间的距离。平方损失函数使用平方距离,绝对损失函数使用绝对距离,K临近模型会使用这两种损失函数。
(3)对数损失函数:它涉及到的模型是在给定X的情况下,Y的条件概率分布,也就是使用了条件概率分布模型,所以对数损失函数就是针对概率模型
关于监督学习的策略就是选取一个目标函数或者是经验风险或者是结构风险,通过优化这个目标函数达到一个好的学习模型的目的。
1.3.3 监督学习:算法
之前学习到模型、策略,在假设空间里,根据策略去选择最优模型,需要一个具体的操作方案,这个操作方案就是算法,算法是用来求解最优模型的,如果这个最优模型存在显式解析解,算法简单,直接写出结果就行;但是通常不存在显式解析解,需要一定的数值计算方法,比如梯度下降法去求解。
1.3.4 无监督学习的三要素
无监督学习的三要素同样包括模型、策略、算法,但是无监督学习处理的是无标注数据,所以我们希望在数据的内部找到隐含的结构信息
1.4 模型的评估与选择
1.4.1 训练误差与测试误差
我们再看一下监督学习的流程图,假如存在样本容量为N的训练集,我们将训练集输入到学习系统中,通过训练学习得到一个模型,这个模型用决策函数的形式表达。关于模型的拟合好坏,可以通过训练集计算训练误差进行衡量,模型对于未知数据预测效果的好坏,可以通过测试集来衡量,把测试集里的所有输入都放到预测系统中,通过训练所得到的模型,就可以计算出一系列的预测值,预测值和真实值之间的差异,通过计算可得测试误差,测试误差就可以衡量模型的测试效果。
训练误差:
测试误差:
误差率和准确率:
误差率和准确率是是测试误差的两个特例。在误差率里,采用的损失函数是示性函数,也就是预测值和真实值不相等时,记为1;预测值和真实值相等时,记为0。误差率体现预测值和真实值不相等的样本点的个数,占测试集里面样本总个数的比值。准确率是真实值与预测值完全相等时样本点占测试集中所有样本点的比例。误差率+准确率=1
1.4.2 过拟合与模型选择
训练误差主要是衡量模型对已知数据的预测能力,测试误差是衡量模型对未知数据的预测能力。在模型选择时,我们希望训练误差和测试误差都很小。可是,有时训练误差很小的时候,测试误差却很大,所以这里就需要一个平衡。
我们来看一个多项式拟合的例子:
通过M次多项式对数据进行拟合,在拟合时,采取经验风险最小化的策略,采用平方损失,有一个系数1/2 是为了在求导时便于约去。
当取不同的M值,多项式不同,拟合结果分别如下:当M=0时,拟合曲线是平行于x轴的直线,这时候它与真实曲线差异非常大,此时的训练误差必然也会很大;当M=1时,拟合曲线是一条直线,相比较M=0时的拟合曲线,稍微接近了一些真实曲线;当M=3时,拟合曲线和真实曲线非常接近;M=9时,拟合曲线通过了所有的样本点,这是必然的,因为当M=9时,参数是10个,而样本点也有10个,所以这时候的拟合曲线恰好穿过了所有的样本点,此时训练误差几乎为0,但是M=9却是一个过拟合的现象。
过拟合(Over-Fitting):通过训练集学习所得模型包含参数过多,出现对已知数据预测很好,但对未知数据预测很差的现象。蓝色线代表训练误差:模型对已知数据的预测能力,橙色线代表测试误差:模型对未知数据的预测能力。
我们来看看怎么选择模型。当M=1时,训练误差和测试误差都比较大,而随着模型复杂度的增加,训练误差和测试误差都减小,当M=3时,测试测试误差达到最小,训练误差也达到了一个较小的情况 ;随着模型复杂度的增加,训练误差会继续减小,但是测试误差会随着模型复杂度的增加而增大,也就是在M大于3的时候,模型对于已知数据的预测越来越好,但是对于未知数据的预测越来越差。我们希望训练误差和测试了误差达到一个平衡,也就是M=3这个点,此时训练误差达到了一个较小的值,而测试误差达到了一个最小值,所以选模型时,要选测试误差和训练误差都较小的情况,即M=3。
1.5 正则化与交叉验证
正则化和交叉验证是两种常用的模型选择方法。
1.5.1 正则化
正则化:实现结构风险最小化策略
目标函数是结构风险,我们的目的是在假设空间里选择一个目标函数最小的模型,结构风险由经验风险和正则化项(或惩罚项)组成,经验风险主要度量模型在训练集中的平均损失 ,正则化项J(f)代表模型的复杂度,模型参数越多,复杂度越高,而λ越大,最后通过正则化选择模型,参数就会越少。我们的目的是选择经验风险和模型复杂度都很小的模型,这时候就需要λ来衡量。
正则化项有多种形式,最常见的有LI范数、L2范数:
在LI范数中,正则化项选用的是参数绝对值的求和项,在L2范数中,参数选择的是平方的求和项。L1范数更适用于进行特征筛选,也就是在正则化项里,我们可以在选择模型时,使某些参数直接为0,最后选择的是一个稀疏的模型,所谓的稀疏就是指非零参数的个数非常少;L2范数主要可以防止过拟合,因为它是取平方的求和项,所以参数可以无限的接近于0,它会使得模型越来越简单,防止过拟合,但是无法起到特征筛选的作用。
正则化指的是让模型根据训练数据集中常见的模式来学习相对简单的模型,它十分符合奥塔姆剃刀原理(在模型选择时,选择所有可能模型中,能很好解释已知数据并且十分简单的模型)。
1.5.2 交叉验证
当样本的数据足够充足的情况下,我们通常将数据集随机的分为训练集、验证集、测试集。训练集主要用来训练模型,验证集用来选择模型,测试集是最终对学习方法的评估。通过训练集得到的模型放到验证集里面,选择预测误差最小的就是最优模型。数据不足情况下,为了选择一个更好的模型,可以采用交叉验证的方法。交叉验证的基本思想是重复使用数据,来解决数据不足的问题。这里介绍几种交叉验证法:简单交叉验证、S折交叉验证、留一交叉验证。
简单交叉验证:将数据集随机的分为两部分,即训练集和测试集。假如将样本的70%作为训练集,30%作为测试集,在不同的情况下,我们可以通过训练集得到不同的学习模型,将学习到的模型放到测试集上,去计算它的测试误差,选择测试误差最小的模型就是最优模型。
S折交叉验证:随机将数据分为S个互不相交、大小相同的子集,其中以S-1个子集作为训练集,余下的子集作为测试集。
留一验证法:是S折交叉验证的特殊情形,S=N,N是指数据集的样本容量。这是在数据非常缺乏的情况下才使用的。
1.6 泛化能力
泛化能力:通过某一学习方法学习得到的模型对于未知数据的预测能力。在现实生活中,经常通过测试数据集来评价某一学习方法的泛化。但是测试数据集包含的样本是有限的,所以仅仅通过测试数据集评价学习方法的泛化能力,有时候并不可靠。这时候,我们就要从理论出发,对学习方法的泛化能力进行评价,此时我们是基于整个样本空间的。
1.6.1 泛化误差
泛化误差反映了学习方法的泛化能力,如果一种方法学习的模型比另一种方法学习的模型具有更小的泛化误差,那么这种方法就是有效的。
如果通过统计学习方法学习到的模型是,那么用这个模型对于未知数据预测的误差就是泛化误差:
在这里,我们考察的模型是,在全样本空间上求积分。如果有两种学习方法,学习方法A学习到的模型具有比学习方法B所学习到的模型更小的泛化误差,那么学习方法A更有效果。
这就是通过泛化误差来反映学习方法的泛化能力的。
1.6.2 泛化误差上界
泛化误差上界:学习方法的泛化能力分析往往是通过研究泛化误差的概率上界进行的。具体来说,就是通过比较两种学习方法的泛化误差上界的大小来比较它们的优劣。
泛化误差上界通常具有以下性质:
(1)它是样本容量的函数,假设样本容量为N,当样本容量N的增加,泛化误差上界逐渐趋于0。因为泛化误差定义为一个期望值,经验表达就是一个平均值,随着N的增加,平均值趋于0。
(2)它是假设空间容量的函数,假设空间是所有可能的模型,假设空间容量越大(参数越多),那么所有可能的模型种类就会越多,模型就越难学习(模型越复杂),泛化误差上界就越大(对未知数据的预测出错可能性就越大)。
现在我们看一下二分类问题:
假设训练数据集:。训练数据集包含了N个样本,N就是训练数据集的样本容量。其中,T是从联合概率分布P(X,Y)独立同分布产生的,X∈
,Y∈{-1,+1}。
假设空间:F={},其中d是函数个数。
为了下面泛化误差上界的定理引入,我们先给出几个表达式:
假设函数f是从假设空间F中任意选取的,损失函数为0-1损失,
期望风险是: 是损失函数的期望
经验风险:是一个平均值
,求模型时候通过经验风险最小化实现,选择经验风险最小的函数。
的泛化能力:
可以表达为
所对应的期望风险。
代表训练误差,
是与
相关的量。d代表假设空间中函数的个数,N代表训练集中样本的个数。如果N趋于无穷,
,同时训练误差是一个平均值,
,也会使得
,泛化误差上界趋于0。
当d越来越大时,也就是假设空间越来越复杂时候,就会增加,泛化误差上界也会增加。
1.7 生成模型与判别模型
对于监督学习,我们的任务就是通过训练集学习出一个模型,模型一般有两种形式,一种是决策函数的形式,一种是条件概率分布的形式,然后我们再利用所得到的模型对输入的变量做一个预测,而通过学习数据获得模型的方法又可以分为生成方法和判别方法,相对应的模型是生成模型和判别模型。
1.7.1 生成模型与判别模型的定义
由训练数据集学习得到联合概率分布,然后求出条件概率分布
作为预测的模型,即生成模型:
这样的方法这是所以称为生成模型,是因为我们给定一个输入变量x,就可以根据分布函数生成一个输出变量y(注:生成变量中的输入变量和输出变量都要求为随机变量)。
典型的生成模型有:朴素贝叶斯法、隐马尔可夫模型。
由训练数据集直接学习决策函数或者条件概率分布
作为预测的模型,即判别模型。判别方法是有针对性的研究:对特定的输入应该预测得到什么样的输出,判别模型并不要求输入变量和输出变量均为随机变量。
典型的判别模型有:K临近法、感知机、决策树等。
1.7.2 对比生成模型与判别模型
我们现在的目标是对大象和小狗进行分类,由于两种动物很明显的一个差距就是鼻子的长度:大象的鼻子长,小狗的鼻子短。
判别方法就可以通过动物鼻子的长短来判断它的类别。如果出现新的图片,我们只需要判断新图像中动物鼻子的长度就可以了,如果长度大于某个阈值就是大象,否则判断为小狗。
采用生成方法,通过大量数据分别构建小狗和大象的特征模型,包含鼻子、耳朵、嘴巴、眼睛、四肢等特征,当出现一个新的图像时,我们将图像中的动物分别与小狗和大象的特征模型比较,如果该动物与小狗的相似度高,则判断为小狗,否则判断为大象。
生成模型需要从大量的数据中寻找规律,通过学习知晓数据是如何生成的,然后再对数据进行分类;而判别模型侧重点只在于利用某个差别去分类就可以了,具有针对性。
生成模型所需的数据量大,因为只有在大数据量的时候去估计联合概率分布(所有变量的全概率模型);收敛速度快,能更快收敛到真实的模型上;由于更接近真实模型,所以生成模型能够反映同类数据本身的相似度。
判别模型是针对性的学习,只需要得到条件概率分布或者决策函数就可以了,所需的样本数量少于生成模型;它的针对性学习使得判别模型可以直接面对预测,准确率更高;由于是是直接学习,判别模型不需要学习很多的特征,因此可以简化学习问题;由于判别模型不考虑数据的各项特征,所以并不像生成模型那样反映同类数据本身的相似度。
1.8 监督学习的应用
当输出变量为有限个离散变量时候,就是分类问题;当输入和输出变量均为变量序列时,就是标注问题;输入和输出变量为连续变量时就是回归问题。
1.8.1 分类问题
通过对训练集的学习得到一个分类模型或者分类决策函数,对于一个新的样本,通过学习到的模型进行预测,最后得到可能的输出。
我们将学习到的分类模型或者分类决策函数称为分类器,相应的预测系统称为分类系统 ,预测所得到的输出称为类别class,类别有多个时,表示多分类问题。
对于给定的测试数据集,分类器正确分类的样本数与总样本数之比称为分类准确率:
在研究过程中,如果某个类是我们所关注的,我们就称之为正类,否则称为负类。
在测试数据集中,不同的样本所对应的类别也是不同的。我们用学习到的分类器可以对测试集中的样本进行预测,对每个输入我们也会得到正类或者负类的一个预测结果。我们把测试集中正类样本预测为正类的个数称为TP;把父类样本预测为正类的个数称为FP;FN是将正类预测为负类的样本数;TN是将负类预测为负类的样本数。
通过TP、FP、FN、TN这四个符号,给出二分类问题的评价指标:
精确率,正确将正类样本预测为正类的个数与预测结果为正类个数的比例。
召回率,正确将正类样本预测为正类的个数与样本真实类别为正类个数的比。
我们在进行二分类时,希望精确率和召回率越高越好,所以引入了调和值,
,
。当精确率和召回率都高时,
值也会高。
许多统计学习方法可以用于分类:感知机、K邻近法、朴素贝叶斯、决策树、Logistic回归等,分类问题可以应用于银行业务、网络安全、图像处理、手写识别、互联网搜索等。
1.8.2 标注问题
可以认为标注问题是分类问题的一个推广,标注问题又是更复杂的结构预测问题的简单形式。标注问题要求输入和输出变量均为变量序列,而且序列的长度相同,不同的样本可以有不同的长度。
假如给定训练集,
输入观测序列,i=1,2,...,N;
输出标记序列,i=1,2,...,N;
对于同一个样本i,输入序列和输出序列的长度是相同的;对于不同的样本,长度可以不同。
基于训练集构建学习的模型:;
预测:
新的输入观测序列:
预测的输出标记序列:
对于标注问题,它的评价指标与分类问题一样,即准确率、精确率、召回率。
标注问题的方法有:隐马尔可夫模型、条件随机场;标注问题可以应用于信息抽取、自然语言处理等。
我们看一个标注问题的基本例子:
这个例子是从文章中抽取基本名词短语,然后对其进行标注。上述的例子包含了22个单词。如果这个单词代表基本名词短语的开始,就标准为B(Begin);如果是短语的结束,则标为E(end); 如果不是基本名词短语,则标为O(others)。
在这个例子中,名词短语有:Microsoft Reaearch 、insatiable curiosity、desire、new technology、computing experience
我们可以看到这里的蓝色,也就是输出部分是22个,与所对应的序列长度是22,和输入是一致的。
1.8.3 回归问题
回归问题反映的是输入与输出之间映射关系,相应的学习过程就等价于进行一个函数拟合。
通过学习系统对训练集进行学习,得到一个模型,然后在预测系统里输入一个新的输入,利用之前学到的模型进行预测,得到一个可能的结果。
对于回归问题,按照输入的变量个数分类,可以分为:一元回归、多元回归。按照输入和输出变量之间的关系,可以分为:线性回归、非线性回归。损失函数一般采用平方损失,解决损失函数最常用的就是最小二乘法。回归问题可以用于商务领域:比如股票预测。