0

机器学习(三)——广义线性模型, 生成学习算法

 2 years ago
source link: http://antkillerfarm.github.io/ml/2016/08/14/Machine_Learning_3.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

广义线性模型

广义线性模型(Generalized Linear Model,GLM)是解决指数类分布的回归问题的通用模型。

它的建模过程如下:

1.首先弄清楚y服从什么分布:

(1)y∣x;θ∼ExponentialFamily(η)

2.为参数η设置linear predictor:

(2)η=θTx

公式2实际上就是通常意义上的线性模型,即simple linear model。

3.寻找一个合适的link function,将Y的均值映射到linear predictor上,使得:

(3)g(h(x))=η

其中,h(x)=E[T(y)∣x]

可见,上一节中的η实际上就是link function。

从上一节的推导还可看出,simple linear model对应的是高斯分布,而其他分布则需要link function进行扩展,这也是广义线性模型得名的由来。

下面以多项分布为例展示一下GLM的处理方法。

y的取值为k个离散值的分布,被称为k项分布。显然k=2时,就是二项分布了。

这里将k个离散值出现的概率记作ϕ1,…,ϕk。由于∑i=1k=1,因此,k项分布的自由度为k−1。

定义k−1维空间上的向量T(y):

T(1)=[100⋮0],T(2)=[010⋮0],T(k−1)=[000⋮1],T(k)=[000⋮0]

我们使用(T(y))i表示T(y)的第i个元素。

定义函数1{True}=1,1{False}=0,则(T(y))i=1{y=i},E[(T(y))i]=P(y=i)=ϕi。

p(y:ϕ)=ϕ11{y=1}ϕ21{y=2}⋯ϕk1{y=k}=ϕ11{y=1}ϕ21{y=2}⋯ϕk1−∑i=1k−11{y=i}=ϕ1(T(y))1ϕ2(T(y))2⋯ϕk1−∑i=1k−1(T(y))i=exp⁡((T(y))1log⁡(ϕ1)+(T(y))2log⁡(ϕ2)+⋯+(1−∑i=1k−1(T(y))i)log⁡(ϕk))=exp⁡((T(y))1log⁡(ϕ1ϕk)+(T(y))2log⁡(ϕ2ϕk)+⋯+(T(y))k−1log⁡(ϕk−1ϕk)+log⁡(ϕk))η=[log⁡(ϕ1ϕk)log⁡(ϕ2ϕk)⋮log⁡(ϕk−1ϕk)],a(η)=−log⁡(ϕk),b(y)=1(4)ηi=log⁡(ϕiϕk)⇒eηi=ϕiϕk⇒ϕkeηi=ϕi⇒ϕk∑i=1keηi=∑i=1kϕi=1(5)⇒ϕk=1∑i=1keηi

由公式4、5可得:

ϕi=eηi∑j=1keηj=eθiTx∑j=1keθjTx

这种从η映射到ϕ的函数,被称作softmax函数。

注:由于softmax函数给出的是分类结果的概率,因此对于某些分类结果中,所有类别概率都很低的情况,我们有理由认为遇到了未知的类别。softmax函数的这种概率可解释性,是它优于其他函数的地方。

hθ(x)=E[T(y)∣x;θ]=[ϕ1ϕ2⋮ϕk−1]=[exp⁡(θ1Tx)∑j=1kexp⁡(θjTx)exp⁡(θ2Tx)∑j=1kexp⁡(θjTx)⋮exp⁡(θk−1Tx)∑j=1kexp⁡(θjTx)]

最大似然估计对数函数:

ℓ(θ)=∑i=1mlog⁡p(y(i)∣x(i);θ)=∑i=1mlog⁡∏l=1k(exp⁡(θlTx(i))∑j=1kexp⁡(θjTx(i)))1{y(i)=l}

http://statmath.wu.ac.at/courses/heather_turner/

INTRODUCTION TO GENERALIZED LINEAR MODELS

https://mp.weixin.qq.com/s/jeloJDgfa3eFXUPduhesVA

logistic函数和softmax函数

https://mp.weixin.qq.com/s/iGJ7Xt4_QSZOC0fG0yJfhg

从最大似然估计开始,你需要打下的机器学习基石

生成学习算法

比如说,要确定一只羊是山羊还是绵羊。从历史数据中学习到模型,然后通过提取这只羊的特征,来预测出这只羊是山羊还是绵羊。这种方法叫做判别学习算法(DLA,Discriminative Learning Algorithm)。其形式化的写法是:p(y∣x)。

换一种思路,我们可以根据山羊的特征首先学习出一个山羊模型,然后根据绵羊的特征学习出一个绵羊模型。然后从这只羊中提取特征,放到山羊模型中看概率是多少,再放到绵羊模型中看概率是多少,哪个大就是哪个。这种方法叫做生成学习算法(GLA,Generative Learning Algorithms)。其形式化的写法是:建立模型——p(x∣y),应用模型——p(y)。

由贝叶斯(Bayes)公式可知:

(6)p(y∣x)=p(x∣y)p(y)p(x∣y=1)p(y=1)+p(x∣y=0)p(y=0)=p(x∣y)p(y)p(x)

其中,p(x∣y)称为后验概率,p(y)称为先验概率。

注:Thomas Bayes,1701~1761,英国统计学家。

由于我们关注的是y的离散值结果中哪个概率大(比如山羊概率和绵羊概率哪个大),而并不是关心具体的概率,因此公式6可改写为:

(7)arg⁡maxyp(y∣x)=arg⁡maxyp(x∣y)p(y)p(x)=arg⁡maxyp(x∣y)p(y)

先验/后验概率还可从参数估计的角度来考虑:

p(θ∣x)=p(x∣θ)p(θ)p(x)

这里的θ表示模型的参数。先验概率是根据经验设定的参数值,后验概率是样本实测值,代入Bayes公式即可得到参数的真实值。

常见的判别式模型有Logistic Regression,Linear Regression,SVM,Traditional Neural Networks,Nearest Neighbor,CRF等。

常见的生成式模型有Naive Bayes,Mixtures of Gaussians, HMMs,Markov Random Fields等。

判别式模型,优点是分类边界灵活,学习简单,性能较好;缺点是不能得到概率分布。

生成式模型,优点是收敛速度快,可学习分布,可应对隐变量;缺点是学习复杂,分类性能较差。

上面是一个分类例子,可知判别式模型,有清晰的分界面,而生成式模型,有清晰的概率密度分布,也就是所谓的生成label的能力。生成式模型,可以转换为判别式模型,反之则不能。

https://zhuanlan.zhihu.com/p/42726550

为什么要对参数设先验(Prior)

https://mp.weixin.qq.com/s/6_BSs7SK2HWq0-7RgNeuzA

理解生成模型与判别模型

https://zhuanlan.zhihu.com/p/37768413

小白之通俗易懂的贝叶斯定理(Bayes’ Theorem)

高斯分布的向量形式

高斯分布的向量形式N(μ,Σ)的概率密度函数为:

p(x;μ,Σ)=1(2π)n/2|Σ|1/2exp⁡(−12(x−μ)TΣ−1(x−μ))

其中,μ表示均值向量(Mean Vector),Σ表示协方差矩阵(Covariance Matrix),|Σ|表示协方差矩阵的行列式。

矩阵行列式计算

对于高阶矩阵行列式,一般采用莱布尼茨公式(Leibniz Formula)或拉普拉斯公式(Laplace Formula)计算。

首先,定义排列A的反序向量V(Inversion Vector)。下面举一个包含6个元素的例子:

序列 4 1 5 2 6 3
反序向量 0 1 0 2 0 3
Vi=∑j=1i−1f(i,j),f(i,j)={1,Ai<Aj0,Ai>Aj

反序向量的模被称为总序数(Total Order),例如上面例子的总序数为1+2+3=6。

总序数为奇数的排列被称为奇排列(Odd Permutations),为偶数的排列被称为偶排列(Even Permutations)。

定义勒维奇维塔符号(Levi-Civita symbol)如下:

εa1a2a3…an={+1if (a1,a2,a3,…,an) is an even permutation of (1,2,3,…,n)−1if (a1,a2,a3,…,an) is an odd permutation of (1,2,3,…,n)0otherwise

注:Tullio Levi-Civita,1873~1941,意大利数学家。他在张量微积分领域的贡献,帮助了相对论的确立。

莱布尼茨公式:

det(A)=∑i1,i2,…,in=1nεi1⋯ina1,i1⋯an,in

高斯判别分析

高斯判别分析(GDA,Gaussian Discriminant Analysis)模型需要满足以下条件:

y∼Bernoulli(ϕ)x∣y=0∼N(μ0,Σ)x∣y=1∼N(μ1,Σ)

注:这里只讨论y有两种分类的情况,且假设两种分类的Σ相同。

相应的概率密度函数为:

p(y)=ϕy(1−ϕ)1−yp(x∣y=0)=1(2π)n/2|Σ|1/2exp⁡(−12(x−μ0)TΣ−1(x−μ0))=1Aexp⁡(f(μ0,Σ,x))p(x∣y=1)=1(2π)n/2|Σ|1/2exp⁡(−12(x−μ1)TΣ−1(x−μ1))=1Aexp⁡(f(μ1,Σ,x))

将上面三个分布的概率密度函数代入《机器学习(二)》公式7,可求得arg⁡maxyp(y∣x),然后进行最大似然估计,可得该GDA的最大似然估计参数为:(过程略)

ϕ=1m∑i=1m1{y(i)=1}μ0=∑i=1m1{y(i)=0}x(i)∑i=1m1{y(i)=0}μ1=∑i=1m1{y(i)=1}x(i)∑i=1m1{y(i)=1}Σ=1m∑i=1m(x(i)−μy(i))(x(i)−μy(i))T

上图中的直线就是分界线p(y=1∣x)=0.5。

GDA vs 逻辑回归

p(y=1∣x)=p(x∣y=1)p(y=1)p(x∣y=1)p(y=1)+p(x∣y=0)p(y=0)=1Aexp⁡(f(μ0,Σ,x))ϕ1Aexp⁡(f(μ0,Σ,x))ϕ+1Aexp⁡(f(μ1,Σ,x))(1−ϕ)=11+exp⁡(f(μ1,Σ,x))(1−ϕ)exp⁡(f(μ0,Σ,x))ϕ=11+exp⁡(f(μ1,Σ,x)+log⁡(1−ϕ)−f(μ0,Σ,x)−log⁡(ϕ))=11+exp⁡(−θTx)

从上面的变换可以看出,GDA是逻辑回归的特例。

一般来说,GDA的条件比逻辑回归严格。因此,如果模型符合GDA的话,采用GDA方法,收敛速度(指所需训练集的数量)比较快。

而逻辑回归的鲁棒性较好,对于非GDA模型或者模型不够准确的情况,仍能收敛。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK