您的位置:首页 > 其它

统计学习浅谈

2016-10-19 13:55 239 查看
  如果一个系统能够通过执行某个过程改进它的性能,这就是学习。     ————赫尔伯特.西蒙人类的不断学习,经验占了很大的部分。通常我们遇到一件事需要判断,都是根据以往的经验,综合现在的情形,做出决策。而计算机呢?计算机没有自主学习的能力,它的经验就只能靠我们去提供。我们提供的就只能是能被计算机识别的一串串数字,那么计算机如何利用这些数字来形成经验呢?统计学习方法应运而生。计算机通过对数据进行统计,提取出数据的特征,抽象出数据模型,并应用相关算法,选出最优的模型,从而为更多的新数据提供出以往的经验以便做出各种决策。可见,在一整套统计学习方法中,有三个步骤需要做。首先,我们得根据实际情况选择一个模型,这里的依据是我们要做回归任务或者分类任务或者标签任务等等,不同任务所选择的模型是不一样的。而这里的模型,实际上是一个模型的集合,因为模型里的参数可以取任意值;接着,该考虑的是以什么准则来确定哪一个模型才是最优的模型,例如常见的用极大似然估计值作为最优模型参数,或者以最小二乘作为衡量准则;最后,还要考虑的是用什么样的算法来简单有效地求出最优值,毕竟,计算机性能是有限的,不是任意算法都能够计算的出来,所以我们需要考虑优化算法。以上所讨论的学习形式,其实就是所说的监督学习模式。计算机通过已有的一部分数据集,去统计里面蕴含的经验,形成一个模型。而后,计算机便可以对任意的一个输入,利用模型学到的知识,对其产生一个输出。这就是目前使计算机具有智能化的最简单的方法。就我个人来看,计算机这样学习,已经跟人类的学习方式且仅限于学习方式非常吻合了,如果能够被学习的数据集达到足够大,那么计算机的识别能力就会大幅度提升。但是,这一切都是人赋予给它的,人类所具有的知识迁移能力,计算机有吗?说白了,计算机所充当的角色,其实就是帮助人类统计出人类世界里所发生的每一件事的概率是怎样的。回到统计学习上,我们把输入X与输出Y看做随机变量,并且遵循联合概率分布P(X,Y),但是这个联合概率分布只是我们假设它是存在的,我们能学习到的,通常都是边缘概率或者条件概率,并不能直接得出这个分布,因为如果联合概率分布都知道了,就等于告诉了你输出的确定性,那就没有必要再去学习了。我们同样假设训练数据与测试数据都是依照同一个联合概率分布产生的,这样的假设使得测试数据能够真实测得模型的可靠性。要让计算机进行统计学习任务,也就是要告诉计算机模型是什么,选择最优模型的策略,以及计算最优模型的算法这三件大事。

模型

在监督学习里,我们做的要么是回归,要么是分类任务。对回归问题的模型,即是一个集合F={f|Y=F(X)},而这个F(X)通常就是由一个参数向量决定的形式,例如$latex F(X)=\theta_{0}\cdot\omega_{0}+\theta_{1}\cdot\omega_{1}+\cdot\cdot\cdot+\theta_{n}\cdot\omega_{n}$,参数向量θ的不同取值,构成了这个假设空间。回归模型实际上跟我们以前数值方法课程里学的插值及曲线拟合有异曲同工之妙,统计学习里只是将其引用过来,作为自己的一个分支,使学科构成完整性。类似的,引用别的学科例子还有马尔科夫随机场及条件随机场,其思想都或多或少借鉴了自动控制原理课程里现代控制部分状态观测器的思想。回归模型实际上在统计学习领域内进行研究是有限制的,更多的还是得靠数值方法进行解决。在分类任务的模型里,有两种模型。一是与回归问题一样的模型。但是它不是做回归任务,它建立的模型根据输入,来输出一个决策,例如决策树等,这种属于非概率模型。另一种是建立条件概率模型,即是一个集合F={P|P(Y|X)}。同样的,P(Y|X)里也含有参数θ,构成了整个假设空间,这种,就属于概率模型。事实上,分类任务本质上都应该是概率模型,它都是应用统计方法,计算出哪个事件概率大一点,就将它作为一个主因,其它的就被抛弃。

策略

这里的策略,要解决的就是要找到一个衡量什么是最优模型的准则。这个准则必须是可以量化的,这样计算机才能通过算法来求得最优模型。在模型里,我们建立的模型是给定一个输入X,那么会由F(X)或者P(Y|X)来给出一个输出Y',这个输出的Y'与真实值Y可以进行比较,这样就能衡量一个模型的好坏了。这里用的损失函数(又叫代价函数)L(Y,f(X))可以为:0-1损失:预测值与真实值相等则为1,否则为0平方损失:$latex L(Y,F(X))=(Y-F(X))^{2} $对数损失:$latex L(Y,F(X))=-logP(Y|X) $注意到这个对数损失,在以前学习极大似然估计的时候,我们也是对极大似然函数取对数,然后求导取极值,这里求得的参数值是 使得似然函数取得最大值时的极值。而此处这个对数损失有什么不一样?问题就在于对数前边有个负号,它之所以能作为损失函数,就是因为多了负号后,我们求得的恰恰变为了使得似然函数取得最小值时的极值,而我们最终选取模型的策略就是要选损失函数最小的。就是这个原因,对数损失才能作为求解最好的概率模型的一种策略。以上我们谈的仅仅是单个样本点的损失。将模型关于训练集的平均损失叫做经验风险。它是由于学习训练集的数据得出自己的经验,然后进行预测,预测存在偏差造成了经验风险。其求法为$latex \frac{1}{N}\sum_{i=1}^{N}L(y_{i},f(x_{i}))$,这里以一个平均的想法去衡量经验风险,1/N实际上相当于P(X,Y),而求和意味着求积分。根据大数定律,当N趋于无穷大时,频率就变为了概率,即为损失函数的期望:$latex \int_{x \cdot y} L(y,f(x))P(x,y)dxdy$。选择模型的策略,就是要使经验风险最小化,这一策略的效果是很好的。例如有一个条件概率分布的模型,我们选择损失函数时,就选择对数损失,那么我们可以用极大似然估计来估计模型中的参数值。注意,这里的极大是使似然函数极大,而我们的损失函数是似然函数的相反数,自然就是极小了,符合我们的预期经验风险最小。根据以上分析,使经验风险最小化,实际上就是要让训练集的预测的所有值都尽可能地与真实值相等,这就造成了一个问题,我们的模型可以对训练集表现的很好,但是泛化能力可能很糟糕,这就是所说的过拟合现象。为了避免这个现象,我们引入了结构风险最小化的原理。结构风险是在经验风险最小化的基础上,添加一项惩罚项,记为$latex \lambda J(f)$,这项值的大小,恰恰正比于模型的复杂度。例如J(λ)可以用f(x)里的参数θ的二范数来表示,模型越复杂,θ的项越多,那么二范数就越大了。总的来说,结构风险最小化就是要$latex \min_{f\in F} \frac{1}{N}\sum_{i=1}^{N}L(y_{i},f(x_{i}))+\lambda J(f)$。

算法

这里的算法,就是要以一种能使得计算机高效计算的数值方法,来寻找达到最优策略的参数值,即要从假设空间中选择出真正的最优模型出来。对于每一种模型,几乎都存在一种或多种算法来求得最优解,且都是通过数值计算方法来求得的。回归模型,用的比较多的就是梯度下降算法。分类模型对于不同模型也有不同算法,以后慢慢说吧。

总结

对于任何问题,以后都要通过建立模型——选择策略——实现算法三个步骤来分析。模型不是越复杂越好,模型越复杂,训练集误差会越低,但是测试集误差会先减少后增加,如何找到平衡点,这需要多多积累。总的来说,选择模4000型需要符合奥卡姆剃刀原理,能够很好解释已知数据并且十分简单的模型就是最好的模型。查看原文:http://www.wyblog.cn/2016/10/19/%e7%bb%9f%e8%ae%a1%e5%ad%a6%e4%b9%a0%e6%b5%85%e8%b0%88/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: