# 文章内容来自学习李航老师的《统计学习方法》后的总结,相当于学习笔记,若有不正确的地方还请大家指正。
# 所需先验知识:概率论与数理统计、线性代数
一、 统计学习概述
可能有些小伙伴没有听过统计学习,但是我相信机器学习大家一定都耳熟能详。没错,统计学习 = 统计机器学习 = 机器学习(也有可能只是机器学习的一个分支?但一定是最重要的)
那么统计学习(可以约等于机器学习了)研究什么?主要研究内容是什么?为什么需要统计学习?答案如下,统计学习以数据作为研究对象,通过一系列的方法(熟悉的如监督学习、半监督学习、强化学习等等)来构建一个可以预测未知数据的概率统计模型。它的应用场景有大家非常熟悉的人工智能、模式识别、数据挖掘、自然语言处理、语音识别、图像识别、信息检索和生物信息等计算机应用领域,早已和我们的生活息息相关。
看到这里相信大家已经对统计学习有一些模糊的了解了。
二、 监督学习概述
上面介绍过,统计学习的主要内容有监督学习、半监督学习、强化学习等等,其中最重要,内容最丰富、应用最广泛的就是监督学习,后面我们讨论的统计学习都指的是监督学习,这点请大家记住。
同所有的统计方法一样,监督学习的任务也是构建一个好的模型,使之对任何输入的数据都能做出正确的预测。因此下面介绍监督学习的相关概念,也是整个统计学习的相关概念。
输入空间、特征空间与输出空间
输入空间:所有的输入可能的取值构成的集合
输出空间:所有的输出可能的取值构成的集合,一般输出空间远小于输入空间
特征空间:输入的取值都是用特征向量进行表示的,特征向量的每一个维度都对应数据的一个特征。每个输入取值对应一个特征向量,而所有的特征向量所在的空间就是特征空间。因此有时默认输入空间等价于特征空间,不对两者做区分
将输入、输出看做是输入空间、输出空间中随机变量的取值,输入变量用大写的X表示,输出变量用大写的Y表示。输入的取值用小写的x表示(都是向量),输出的取值用小写的y表示(都是向量)。
= 表示第i个输入变量
训练数据集(Training Data)就是由多个输入输出对构成:
T = {}
输入输出对又叫做样本或者样本点。
输入变量和输出变量包括连续变量和离散变量,根据不同的输入变量和输出变量类型,可以把预测任务划分成三种不同的任务:
回归任务:输入变量与输出变量均为连续型变量。
分类任务:输出变量为有限个离散型变量。
标注问题:输入变量与输出变量均为随机变量序列。
联合概率分布
监督学习假设输入变量X与输出变量Y遵循联合概率分布,这是监督学习对于数据的基本假设。
假设空间
统计学习的任务是实现从输入到输出的映射,这和函数很像。而我们用模型来指代这种输入输出的映射关系。所有映射的集合就是假设空间,通俗的说就是所有模型的集合。
流程
监督学习的流程可以分为两部分,第一部分借助学习系统训练(学习)出一个模型;第二部分运用模型对未知数据进行预测。
在学习过程中,给出的xi在经过模型后会得到一个新的y*,这个y*应当和yi的差足够小才能说明模型够好。学习的过程,其实就是不断更换模型、挑选最好的模型的过程。
三、 统计学习三要素
统计学习就是由模型、策略与算法构成的。实现监督学习其实就是确定这三个要素,其他的如半监督学习、强化学习也是如此。
模型
统计学习首先需要确定学习什么模型(采用哪个模型),例如猜测输入与输出变量之间存在线性关系,那么应当假设采用线性模型,即线性函数。而此时的假设空间就是所有的线性函数,一般假设空间中的模型是无穷的。
而模型之间的区别就在于参数的不同,因此这时假设空间可以用如下方式表示:
其中F表示假设空间,Y表示输出变量,X表示输入变量,表示参数向量。
模型分为两种,决策函数表示的模型(非概率模型)和条件概率表示的模型(概率模型),两者分别用Y = f(X) 和 P(Y|X)表示。后续讨论一般以决策函数为例。
策略
在介绍什么是统计学习的策略时,先允许我介绍下面两个概念:损失函数(代价函数)与风险函数。
损失函数:用于度量模型一次预测的好坏
统计学习的目标就是从假设空间F中取得最优模型f。而我们知道对于一个模型f(X) = Y,当给定一个输入x时,可以取得一个输出y*,同时x也有对应的真实值y,这两个值可能一致,也可能不一致。两者之间的差距越小表明模型的预测越好,而衡量这个差距的方法就是损失函数(loss function)或者代价函数(coss function),用L(Y, f(X))表示。
常见的损失函数如下:
风险函数:用于衡量平均意义下模型预测的结果
通过上面的描述我们知道损失函数值越小越好,而我们还知道输入变量X与输出变量Y遵循联合分布P(X|Y),所以可以得到损失函数的期望是:
我们把这个期望称为风险函数,它表达的意思就是模型f(X)关于联合分布P(X, Y)的平均意义下的损失。所以模型学习的目标就是期望风险最小的模型,但是输入X与输出Y的联合分布P(X, Y)我们并不知道,这就是模型学习的目的——找到X和Y的联合分布函数P(X, Y)。
那么如何求得这个联合分布呢?我们给定一个训练数据集
T = {}
模型f(X)关于训练数据集的平均损失称为经验风险(empirical risk)或经验损失,其值为:
期望风险是模型关于联合分布的期望损失,经验风险是模型关于训练样本集的平均损失。根据大数定律,当样本容量 N 趋于无穷时,经验风险趋于期望风险。所以一个很自然的想法是用经验风险估计期望风险。
但是,由于现实中训练样本数目有限,甚至很小,所以用经验风险估计期望风险常常并不理想,要对经验风险进行一定的矫正。这就引出我们下面要提到的监督学习的两个基本策略:经验风险最小化和结构风险最小化:经验风险最小化就是依据测试数据集的误差去趋近结构风险最小化,而所谓的结构风险化则是在经验风险最小化后面添加一个惩罚项,即一个计算函数复杂度的函数,函数越复杂,则惩罚项越高。
算法
算法就是一个不断计算最终得到一个最优模型的过程。
四、模型评估与模型选择
在给定损失函数的情况下,依据训练数据集合测试数据集得到的误差自然就成为模型评估与选择的重要依据。但除此之外,还需要考虑模型的复杂度,即考虑过拟合的问题。
过拟合
所谓过拟合,就是模型为了去适应某一个数据集的特征,而不断复杂化自身的参数。最终得到的模型复杂度会非常高(简单理解就是模型的参数特别多),这个模型可以很好的解决某一个数据集,但是一旦换到别的数据就会很失败,因为它的参数都是用来解决这个数据集的,对稍微不同的数据集就不适用。也就是泛化能力不行。
因此我们需要选择复杂度合适的模型,有两种常用的模型选择的方法:正则化和交叉验证。
正则化
正则化就是上面提到的结构风险的实现:即在经验风险的基础上添加一个惩罚项,这样模型复杂度太高的话总误差依旧很高。
交叉验证
交叉验证包括简单交叉验证和S折交叉验证
简单交叉验证就是把总的数据集划分成不同比例(如7:3),然后用70%的数据集做不同的训练(如不同的参数量),期待在测试集上得到较小的误差。
S折交叉验证也是把数据集分成不同比例(如9:1),训练完后再重新划分成9:1继续训练。在S次训练后选择平均误差最小的模型。
五、泛化能力
泛化能力就是模型预测未知数据的能力,是评价模型好坏的本质,一般用泛化误差(模型预测测试数据集的误差)评价模型的好坏。
六、分类问题
分类是监督学习的一个核心问题.在监督学习中,当输出变量Y 取有限个离散值时,预测问题便成为分类问题.这时,输入变量 X 可以是离散的,也可以是连续的.监督学习从数据中学习一个分类模型或分类决策函数,称为分类器(classifier). 分类器对新的输入进行输出的预测(prediction),称为分类(classification).可能的输出称为类(class).分类的类别为多个时,称为多类分类问题.
评价指标:
评价分类器性能的指标一般是分类准确率(accuracy),其定义是:对于给定
的测试数据集,分类器正确分类的样本数与总样本数之比.也就是损失函数是 0-1
损失时测试数据集上的准确率(见公式 (1.17)).
对于二类分类问题常用的评价指标是精确率(precision)与召回率(recall).通
常以关注的类为正类,其他类为负类,分类器在测试数据集上的预测或正确或不
正确,4 种情况出现的总数分别记作:
TP——将正类预测为正类数;
FN——将正类预测为负类数;
FP——将负类预测为正类数;
TN——将负类预测为负类数.
精确率定义为:P = TP/(FN + FP)
召回率定义为:R = TP/(TP + FN)
此外,还有 F1 值,是精确率和召回率的调和均值,即2/F1 =1/P + 1/R ,F1 = 2TP/2TP + FP + FN
精确率和召回率都高时, F1 值也会高.
七、标注问题
标注(tagging)也是一个监督学习问题.可以认为标注问题是分类问题的一个推广,标注问题又是更复杂的结构预测(structure prediction)问题的简单形式.标注问题的输入是一个观测序列,输出是一个标记序列或状态序列.标注问题的目标在于学习一个模型,使它能够对观测序列给出标记序列作为预测.注意,可能的标记个数是有限的,但其组合所成的标记序列的个数是依序列长度呈指数级增长的.
八、回归问题
回归问题的学习等价于函数拟合:选择一条函数曲线使其很好地拟合已知数据且很好地预测未知数据。
举个例子:假设知道某一公司在过去不同时间点(比如,每天)的市场上的股票价格(比如,股票平均价格),以及在各个时间点之前可能影响该公司股价的信息(比如,该公司前一周的营业额、利润)。目标是从过去的数据学习一个模型,使它可以基于当前的信息预测该公司下一个时间点的股票价格。可以将这个问题作为回归问题解决。具体地,将影响股价的信息视为自变量(输入的特征),而将股价视为因变量(输出的值)。将过去的数据作为训练数据,就可以学习一个回归模型,并对未来的股价进行预测。
参考文献:
1)李航《统计学习方法》