实现统计学习方法的步骤:
(1)得到一个有限的训练数据集合
(2)确定包含所有可能的模型的假设空间,即学习模型的集合
(3)确定模型选择的准则,即学习的策略
(4)实现求解最优模型的算法,即学习的算法
(5)通过学习方法选择最优模型
(6)利用学习的最优模型对新数据进行预测或者分析
监督学习的任务是学习一个模型,使得模型能够对任意给定的输入,对其相应的输出做一个好的预测
将输入与输出所有可能取值的集合分别称为输入空间,输出空间
每一个具体的输入是一个实例,通常由特征向量表示,所有特征向量存在的空间为特征空间
输入实例的特征向量为:
训练数据有由输入输出成对组成,输入与输出对又称为样本,样本构成训练集,通常表示为:
根据输入输出变量的类型可以分为:输入与输出均连续的预测问题为回归问题;输出变量为有限个离散变量的预测问题为分类问题;输入输出变量均为变量序列的预测问题为标注问题
监督学习假设输入与输出的随机变量 X X 和 Y Y 遵循联合概率分布 P(X,Y) P ( X , Y ) .
由输入空间到输出空间的映射的集合为假设空间,监督学习的模型可以是概率模型或者非概率模型,由条件概率分布 P(Y|X) P ( Y | X ) 或者决策函数 Y=f(X) Y = f ( X ) 表示.
方法=模型+策略+算法
统计学习首要考虑的问题是学习什么样的模型,在监督学习中,模型就是所要学习的条件概率分布或者决策函数.模型的假设空间包含所有可能的条件概率分布或者决策函数.
for instance:
假设要学习的决策函数是输入变量的线性函数,那么模型的假设空间就是所有这些线性函数构成的函数集合,假设空间中的模型一般由无穷多个
假设空间一般用 F F 表示,假设空间可以定义为决策函数的集合
假设空间也可以为条件概率的集合
有了假设空间,统计学习接着需要考虑的是按照什么样的准则学习或者选择最优的模型.统计学习的目标在于从假设空间中选取最优模型
损失函数是 f(X) f ( X ) 和 Y Y 的非负实值函数,记作 L(Y,f(X)) L ( Y , f ( X ) )
常用损失函数
(1) 0-1 损失函数(0-1 loss function)
模型 f(X) f ( X ) 关于训练数据集的平均损失,称为经验风险或者经验损失
根据大数定律,当N趋于无穷大的时候,经验风险趋于期望风险,可以使用经验风险去估计期望风险
但是由于训练数据集数量有限,估计往往不理想,因此监督学习有两个基本的策略
经验风险最小化与结构风险最小化
在假设空间,损失函数,以及训练数据集确定的情况下,经验风险函数式就可以确定
经验风险最小化的策略认为经验风险最小的模型就是最优的模型,根据这一策略按照经验风险最小化求
最优模型就是求解最优化的问题
其中 F F 为假设空间,当样本容量足够大的时候,经验风险最小化能保证有很好的学习效果
但是当样本容量很小时,经验风险最小化有可能会产生过拟合的现象
结构风险最小化是为了防止过拟合而提出来的策略,结构风险最小化等价于正则化
结构风险在经验风险上加上表示模型复杂度的正则化项或者惩罚项
在假设空间、损失函数、训练数据集确定的情况下结构风险的定义为
其中 J(f) J ( f ) 为模型的复杂度,模型 f f 越复杂,复杂度 J(f) J ( f ) 越大,复杂度表示对复杂模型的惩罚
结构风险最小化的策略
算法是指学习模型的具体计算方法,根据学习策略从假设空间中选择最优模型,考虑用什么样的计算方法求解最优模型
如果最优化有确定的解析式,那么可以直接求解解析式,如果不存在显式的解析式,那么就要考虑如何找到全局最优解
当损失函数给定时,基于损失函数的模型训练误差和模型测试误差就自然成为学习方法评估的标准
测试误差反映了学习方法对于未知测试数据集的预测能力
如果一味追求提高对训练数据的预测能力,所选择的模型的复杂度往往会很高,这一模型可能对已知数据预测的很好,但是对于
未知数据预测很差,这种现象就是过拟合
模型选择的典型方法就是正则化,正则化是结构风险最小化策略的实现,是在经验风险上加上一个正则项或者惩罚项
正则项一般是模型复杂度的单调递增函数,模型越复杂,正则化值越大
比如正则项可以是模型参数向量的范数
另一种常用的模型选择方法为交叉验证
交叉验证就是把给定的数据进行不断地切分,将切分的数据组合成不同的训练集和测试集,在此基础上反复进行训练
(1)简单交叉验证
首先随机将数据分为两部分,一部分作为训练集,一部分作为测试集,然后用训练集在不同条件(如参数改变)下训练得到
多个模型,然后用测试集评价测试误差找到最优模型
(2)S折交叉验证
应用最多的是S折交叉验证,随机将数据切分成S个互不相交的大小相同的子集,然后利用S-1个子集的数据作为训练集,剩下的
作为测试集,这一过程有S种选择,最后评选出S此测评中平均测试误差最小的模型
(3)留一交叉验证
当S=N为留一交叉验证