机器学习(八)——在线学习、K-Means算法、混合高斯模型和EM算法

http://antkillerfarm.github.io/

贝叶斯统计和规则化(续)

p(θ|S) 可由前面的公式得到。

假若我们要求期望值的话,那么套用求期望的公式即可:

E[y|x,S]=yyp(y|x,S)dy

由上可见,贝叶斯估计将 θ 视为随机变量, θ 的值满足一定的分布,不是固定值,我们无法通过计算获得其值,只能在预测时计算积分。

上述贝叶斯估计方法,虽然公式合理优美,但后验概率 p(θ|S) 通常是很难计算的,因为它是 θ 上的高维积分函数。

观察 p(θ|S) 的公式,在分母 P(S) 一定的情况下,分子越大则值越大,也就是 p(θ|S) 的概率越大。

因此,可得如下算法:

θMAP=argmaxθ(i=1mp(y(i)|x(i),θ))p(θ)

这个算法叫做最大后验概率估计(maximum a posteriori)。

和ML相比,MAP算法只是在最后多了一项 p(θ) 。通常使用中,我们认为 p(θ) 符合 θN(0,τ2I)

由于 p(θ) 实际上就是先验分布,它会对最后结果进行一定的修正。因此,实际上最大后验概率估计相对于最大似然估计来说,较容易克服过度拟合的问题。

这里写图片描述

参见:

http://www.cs.cornell.edu/courses/cs5540/2010sp/lectures/Lec9.Estimation-continued.pdf

在线学习

我们之前讨论的算法,都是给定一个训练集S,经训练之后,得到预测函数h,然后再在新的样本集上进行预测。这种方法被称为批量学习(batch learning)。

与之相对的,还有一种边学习边预测的在线学习(online learning)算法。其步骤如下:

1. i:=0
2.输入 x(i) ,算法预测 y(i)
3.根据 y(i) 的真实值,修正算法模型。这一步也被称作更新过程(update procedure)
4.令 i:=i+1 ,以处理下一个数据样本。

在线学习的优点:
1.算法在学习过程中,即可预测。
2.随着数据样本的增多,预测会更加准确,即具有自我完善的的能力。

下面以感知器(perceptron)算法为例,讨论一下在线学习的误差问题。

首先回忆一下感知器算法:

hθ(x)=g(θTx),y{1,1}

g(z)={1,1,z0z<0

对于训练样本 (x,y) ,其更新过程为:

θ:={θ,θ+yx,hθ(x)=yotherwise(1)

这里给出一个和感知器算法有关的定理:

对于给定的m个样本序列(注意“序列”二字,在线算法对于样本的顺序是敏感的) x(i) ,如果所有的 x(i)D ,并且存在单位向量u,使得所有样本的 y(i)(uTx(i))γ ,则感知器算法在该序列上的预测错误个数最多为 (D/γ)2

这个定理是Henry David Block和Albert B. J. Novikoff于1962年提出的。

注:Henry David Block,1920~1978,美国数学家。
这个人的经历有点非典型。20岁本科毕业,由于专业是文学和心理学,结果找不到工作。只好回炉,又读了个土木工程的本科。
二战期间在Goodyear的飞机工厂(没错就是那个卖轮胎的Goodyear)担任测试工程师。在那里碰到一个当医生的英国妹子,搞定之。
1946年,他老婆在Iowa State University获得了一个职位,于是他也跟着搬了过去。估计是无所事事,他经常到大学里蹭课,然后就发现自己对数学很感兴趣。
于是继续读书,1949年拿到博士学位。经过几年助教生涯之后,最终成为康奈尔大学应用数学教授。
话说,根据缩写找人真是太痛苦了,很多资料都不是你要找的人,Block又是个大路货。我最后是在他的一位同事的论文中找到他的全名的。那篇论文发表于1985年,距离他去世已经7年,但他仍是作者之一,可见人缘不错。

Albert B. J. Novikoff,全名不详,只知道是纽约大学教授。从岁数来看应该已经退休了。

下面给出这个定理的证明过程:

由公式1可知, θ 的值只有在发生预测错误的时候才会改变,因此我们可以使用 θ(k) 表示第k个错误。同时令 θ1=0

根据更新公式可得:

(θ(k+1))Tu=(θ(k))Tu+y(i)(x(i))Tu(θ(k))Tu+γ

所以:

(θ(2))Tu(θ(1))Tu+γ=γ

(θ(3))Tu(θ(2))Tu+γ2γ

由数学归纳法可得:

(θ(k+1))Tukγ(2)

另外,

θ(k+1)2=θ(k)+y(i)x(i)2=θ(k)2+y(i)x(i)2+2y(i)(x(i))Tθ(k)

由感知器算法的定义可得:

y(i)(x(i))Tθ(k)0

所以:

θ(k+1)2θ(k)2+x(i)2θ(k)2+D2

同样,由数学归纳法可得:

θ(k+1)2kD2(3)

因为:

(θ(k+1))Tu=θ(k+1)ucosϕθ(k+1)u=θ(k+1)(4)

由公式2、3、4可得:

kDθ(k+1)(θ(k+1))Tukγ

所以:

k(D/γ)2

K-Means算法

聚类算法属于无监督学习算法的一种。它的训练样本中只有 x(i) ,而没有 y(i) 。聚类的目的是找到每个样本x潜在的类别y,并将同类别y的样本x放在一起,形成一个聚类(clusters)。样本 x(i) 所属的聚类用 c(i) 表示。

K-Means算法的步骤如下:

1.随机选取k个聚类质心点(cluster centroids) μ1,,μk
2.重复下面过程直到收敛 {
对于每一个样例i,计算其应该属于的聚类: c(i):=argminjx(i)μj2
对于每一个聚类j,重新计算该聚类的质心: μj:=mi=11{c(i)=j}x(i)mi=11{c(i)=j}
}

其中,k是我们事先定义的聚类个数。下图展示了对n个样本点进行K-means聚类的效果,这里k取2。

K-means算法面对的第一个问题是如何保证收敛。前面的算法中强调结束条件就是收敛,可以证明的是K-means完全可以保证收敛性。下面我们定性的描述一下收敛性,我们定义畸变函数(distortion function)如下:

J(c,μ)=i=1mx(i)μc(i)2

J函数表示每个样本点到其质心的距离平方和。K-means算法的目的是要将J调整到最小。假设当前J没有达到最小值,那么首先可以固定每个类的质心 μj ,调整每个样例的所属的类别 c(i) 来让J函数减小,同样,固定 c(i) ,调整每个类的质心 μj ,也可以使J减小。 这两个过程就是内循环中使J单调递减的过程。当J递减到最小时, μ 和c也同时收敛。(在理论上,可以有多组不同的 μ 和c值,能够使得J取得最小值,但这种现象实际上很少见。)

由于畸变函数J是非凸函数,意味着我们不能保证算法取得的最小值是全局最小值,也就是说k-means对质心初始位置的选取比较敏感。但一般情况下k-means达到的局部最优已经满足需求。但如果你怕陷入局部最优,那么可以选取不同的初始值跑多遍k-means,然后取其中最小的J对应的 μ 和c输出。

参考:

http://www.csdn.net/article/2012-07-03/2807073-k-means

http://www.cnblogs.com/leoo2sk/archive/2010/09/20/k-means.html

http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006910.html

高斯混合模型和EM算法

本篇讨论使用期望最大化算法(Expectation-Maximization)进行密度估计(density estimation)。

从上面的讨论可以形象的看出,聚类问题实际就是在数据集上,找出一个个数据密度较高的“圆圈”。我们可以反过来思考这个问题:如果我们已知圆圈的圆心和半径,那么也可以根据圆心、半径以及样本分布模型,来随机生成这些数据。显然,这和前一种做法在效果上是等效的。

首先我们假设样本数据满足联合概率分布

p(x(i),z(i))=p(x(i)|z(i))p(z(i))(5)

其中, z(i)Multinomial(ϕ) (这里的 ϕj=p(z(i)=j) ,因此 ϕj0,kj=1ϕj=1 ), z(i) 的值为k个聚类之一。

假定 x(i)|z(i)=jN(μj,Σj) ,则该模型被称为高斯混合模型(mixture of Gaussians model)。

整个模型简单描述为对于每个样例 x(i) ,我们先从k个类别中按多项分布抽取一个 z(i) ,然后根据 z(i) 所对应的k个多值高斯分布中的一个生成样例 x(i) 。注意的是这里的 z(i) 是隐含的随机变量(latent random variables)。

这里写图片描述

因此,由全概率公式可得:

p(x(i);ϕ,μ,Σ)=z(i)=1kp(x(i)|z(i);μ,Σ)p(z(i);ϕ)(6)

该模型的对数化似然函数为:

(ϕ,μ,Σ)=i=1mlogp(x(i);ϕ,μ,Σ)=i=1mlogz(i)=1kp(x(i)|z(i);μ,Σ)p(z(i);ϕ)

这个式子的最大值不能通过求导数为0的方法解决的,因为它不是close form。(多项分布的概率密度函数包含阶乘运算,不满足close form的定义。)

为了简化问题,我们假设已经知道每个样例的 z(i) 值。这实际上就转化成《机器学习(二)》所提到的GDA模型。和之前模型的区别在于, z(i) 是多项分布,而且每个聚类的 Σ 都不相同,但结论是类似的。

这里的直接推导非常复杂,可参考以下文章:

http://www.cse.psu.edu/~rtc12/CSE586/lectures/EMLectureFeb3.pdf

上面这篇文章比较直观,比Andrew讲义的Problem Set详细的多。然而Andrew这样写是有原因的,在后面的章节,借助Jensen不等式,Andrew给出一个更简单且一般化的推导过程。

接下来的问题就是: z(i) 的值我们是不知道的,该怎么办呢?

EM算法的思路是:

1.猜测 z(i) 的值。(这一步即所谓的Expectation,简称E-Step。)
2.最大化计算,以更新模型的参数。(这一步即所谓的Maximization,简称M-Step。)

具体到这里就是:

Repeat until convergence {
(E-step) For each i, j:
w(i)j:=p(z(i)=j|x(i);ϕ,μ,Σ)
(M-step) Update the parameters:
ϕj:=1mmi=1w(i)j
μj:=mi=1w(i)jx(i)mi=1w(i)j
Σj:=mi=1w(i)j(x(i)μj)(x(i)μj)Tmi=1w(i)j
}

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值