整理:统计学习-1

来源:互联网 发布:少儿编程课程要会什么 编辑:程序博客网 时间:2024/06/07 05:00

最近准备把李航的《统计学习方法》这本书学一遍,给机器学习入个门。

第一章已经搞完了,主要的内容就是统计学习的基本概念和理论,搞清楚什么是统计学习。那么什么是统计学习呢,我的理解就是,以数据为基础对象,运用各种统计学习方法构建模型来拟合这些数据,得到的模型能对新的输入数据预测出较为合理的输出,这个模型就是我们想得到的成果。学习的过程就相当于在已知的数据中找规律,所以可以用概率分布来构建模型。

统计学习的组成分为:监督学习(surpervised learning)、非监督学习、半监督学习和强化学习。这里主要讨论监督学习。监督学习的学习方法包括模型的假设空间(就是需要学习的模型属于某个函数的集合)、模型选择的准则以及模型学习的算法这三要素,即模型(model)、策略(strategy)和算法(algorithm)。那么具体的学习方法步骤就可以归纳为:

确定学习模型的集合,确定学习的策略,实现求解最优模型的算法,利用训练数据集做迭代训练,选择最优的模型,对新数据进行预测分析。

方法=模型+策略+算法


基本概念

输入空间(input space):输入的所有可能取值。每个具体的输入是一个实例,通常表示为特征向量,所有特征向量构成特征空间(feature space)。输入空间到特征空间有个映射关系,而模型一般定义在特征空间上。

输入实例 x 的特征向量记作

                  x=(x(1),x(2),...,x(i),...,x(n))T

比如二维坐标中的点,表示为实例点 x1=(2,5)T, x2=(3,9)T,那么一般给的训练集通常表示为

                 T={(x1,y1),(x2,y2),...,(xn,yn)}

输出空间(output space):输出的所有可能取值。有可能是离散的有限个。

联合概率分布:监督学习假设输入与输出的随机变量X和Y遵循联合概率分布函数P(X,Y)。但一般概率分布函数是未知的,如果已知的话就不用学习了。

假设空间:学习的范围,可能模型的集合。模型可以是概率模型或非概率模型,由条件概率分布P(Y|X)或决策函数Y=f(X)表示。


书中的描述监督学习学习和预测两个过程的那个图很清晰直观。在后面解决3个问题也是套用的这个过程。


三要素

方法=模型+策略+算法

模型不用多说。策略是用来选择一个最优的模型,那么就需要对模型进行度量,这便引入损失函数和风险函数

损失函数是f(x)和Y的非负实值函数,记作 L(Y,f(X)).

包含:0-1损失函数,


平方损失函数,


绝对损失函数,


对数损失函数或对数似然损失函数(loglikelihood loss function)

当然,损失函数值越小,模型越好,损失函数的期望就是风险函数,即期望损失Rexp(f)

学习的策略就是让期望风险最小。但是,一般联合概率分布P(X,Y)是不知道的,知道了就不用学了,所以,根据大数定律,当样本无穷多时,经验风险Remp(f)趋于期望风险,

经验风险:

那么问题就转化为让经验风险最小化,为了防止过拟合,采用结构风险最小化(SRM),就是正则化,在经验风险上加上一个正则化项,即罚项,对模型的复杂度进行约束。


那么有了假设空间,有了策略,接下来就是算法负责选出最优模型了。


怎样选择模型

当损失函数给定时,训练误差和测试误差就成为学习方法的评估标准。

训练误差是模型关于训练数据集的平均损失:


测试误差是模型关于测试数据集的平均损失:


正则化:

测试误差小的方法是更有效的方法。有时候某模型可能训练误差很小,但是测试误差反而很大,这就是过拟合。书上第13页的图清楚地表现了训练误差和测试误差之间的关系。那么到底如何选择模型呢,典型的方法是正则化,即实现结构风险最小化策略:

正如上面正则化的式子表示,就是在经验风险最小化的基础上加上一个罚项 k·J(f),k>=0,是调整经验风险项和罚项之间关系的系数,J(f)是有关模型复杂度的度量,比如可以是模型参数向量的范数。

正如书中所说,正则化体现了奥卡姆剃刀原理,即在所有可能选择的模型中,能够很好地解释已知数据并且十分简单的才是最好的模型。

交叉验证:

除了提高模型的泛化能力,我们还能通过交叉验证的方式选择好的模型。我认为这是一种增加一般性的方法,在实际数据不足的情况下比较有效。它的主要思想就是将数据分割成不同的训练集和测试集,迭代训练和测试,这样显然可以降低过拟合的概率并提高模型的泛化能力。交叉验证分为三种:

1、简单交叉验证:即直接将数据分为2部分,训练集一般比重更大,在此基础上训练并测试。

2、S折交叉验证:将数据集随机分成S部分,S-1个子集用来训练,余下的测试,然后将这一过程重复S次,每次选择不同的子集分割。

3、留一交叉验证:S折交叉验证的特殊情形,S=N。N为给定数据的总量。这是在数据缺乏的情况下使用。





0 0
原创粉丝点击