Part IV
Generative Learning algorithms生成学习算法
到现在为止,我们已经学习关于
模型、y关于x的条件分布学习算法。例如:回归
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
模型的
是应用
,g是激活函数。在本节中,我们将会学习到一些不一样类型的学习算法。
思考一个分类问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
我们想要把大象(y=1)和狗(y=0)识别出来基于一些动物的特征.给定一个训练集,一个类似于逻辑回归的算法或者感知计算法试图找到一条直线-----一个判定边界----去区分大象和狗。然后,去分类一个动物既不是大象也不是狗,这个算法核实这个动物是在这个判定边界的哪一边,并且给出他相应的预测是大象或者是狗。
这里有一个不一样的方法。首先,对于大象,我们能建立一个什么是大象的模型。然后对于狗,我们能建立一个单独的模型对于什么是狗。最后,去识别一个新的动物,我们会拿这个动物去和大象的模型对比,然后再去和狗的模型去对比,看这个新的动物是像大象多一些还是像狗多一些在我们的训练集中。
算法试图直接去得到一个函数P(y|x)(像逻辑回归那样)或者算法试图去直接从输入x到标签{0,1}建立一个映射(像感知机算法一样)都叫做区别学习算法。这里,我们将要学习一个算法不是去建立一个函数P(x|y)。这些算法被叫做生成学习算法。例如,如果y的值
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示一个样本是狗或者大象,那么p(x|y=0)代表狗的特征的分布p(x|y=1)代表着大象的特征的分布。
建立模型p(y)和p(x|y)之后,我们的算法能够用贝叶斯
规则
编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf
去表示y在给定x的条件下的概率
这里分母是由p(x)=p(x|y=1)p(y=1)+p(x|y=0)p(y=0)得到。(全概率公式)因此也同样能够表示p(x|y)和p(y)。事实上,如果我们计算p(y|x)只是为了去做预测,我们根本不需要去算这个分母的值因为:
1 Gaussian discriminant analysis高斯判别分析
我们将要学习的第一个生成学习算法是高斯判别分析。在这个模型中我们假设p(x|y)是离散的用一个正态分布函数去赋值。在讲这个算法前,简单说一下正态分布。
1.1 The multivariate normal distribution
多元正态分布在n维空间中也叫做多维高斯分布,由参数μ(μ∈
)和协方差矩阵∑(∑∈
),∑>=0并且是正定的和对称的。也写作
,他的概率密度分布是
在上面的等式中,|∑|是∑的模。
对于一个随机的变量X分布为
,均值是μ
随机变量Z的协方差的定义是Cov(Z) =E[(Z — E[Z])(Z — E[Z])T ].把这个公式推广到一般化。这个协方差也被定义为Cov(Z) =
(你可以自己证明这两个等式是相等的。)如果X~N(μ, ∑),Cov(X)= ∑
下面有一些高斯分布的图像:
最左边的图像表示的是均值是0(2*1的零向量)协方差矩阵∑=1(2*2的单位矩阵)这个高斯分布也叫做
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
正态分布。中间的图像表示的均值是0和∑=0.6I;右边的表示的是∑=2I。我们从图中可以看出来∑越大,高斯分布越“细长”当他变小时候分布变的更加“扁平”
来看更多的例子:
上面的图像表示的是高斯分布的均值都是0,协方差矩阵分别为:
最左边的图像表示的是常见的标准正态分布,我们可以看到当我们增加∑的副对角线的元素的值时,这个分布的密度变的更加“扁平”朝着45度方向(x1=x2)。我们能够更清楚的看出来这个规律,当我们看这三副图的俯视图的时候。
下面这个是最后一个训练样本的一组俯视图通过改变∑
从最左边和中间的图像,我们可以看到通过减少协方差矩阵副对角线元素的值,这个图像密度再次变“扁平”,但是在相反的方向。最后我们改变使的形状类似一个椭圆(最右边的图像表示出来了。)
像我们在最后一个例子中设置的,使的∑=I,通过改变μ的值,我们也能改变这个密度。
1.2 The Gaussian Discriminant Analysis model高斯判别分析模型
当我们拿到一个输入变量是连续分布的随机值的分类问题的时候,这时我们能够使用高斯判别分析模型去处理,像对于p(x|y)使用多元正态分布。这个模型是:
写出这个分布规律:
这里,我们模型使用的参数是φ,∑,μ0,μ1。(注意这里有两个不同含义的变量值μ0和μ1,这个模型通常使用一个协方差矩阵∑)这个数据极大似然对数是:
通过最大化关于参数的函数ι,我们找到了使的极大似然函数最大化的参数值:
在下面图中可以很明显的看出来这个算法是怎么工作的:
在图中显示的是训练集,两个高斯分布的等高线已经表明把这个训练集分为两部分。注意这两个高斯的等高线是一样的形状和方向,因此他们的使用的是一个相同的协方差矩阵∑,但是他们有不一样的均值μ0和μ1。在这个图中另外一个就是这条直线给出了判定边界在
p(y = 1|x) = 0.5处。在这个边界的一边我们可以预测y=1对大部分的输入都是成立的,在另一边我们预测y=0的。
1.3 Discussion: GDA and logistic regression
1.3讨论:GDA和逻辑回归
高斯判别模型和逻辑回顾之间有一个有意思的联系。如果我们把这个数量p(y = 1|x; φ; μ0; μ1; ∑)看作是x的函数,我们会发现他可以被表示为:
θ是φ,∑,μ0,μ1的函数。这确实是逻辑回归的一种形式---一个区别的算法---适用于模型p(y=1|x)。
什么时候我们会觉得一个模型比另一个更好?一般情况下,GDA和逻辑回归有不一样的判定边界对同样一组训练集。那一个更好呢?
我们仅仅确定p(x|y)是多元高斯分布(∑已给定)那么p(y|x)必定是一个逻辑函数。然而,反过来这个结论是不成立的;例如:p(y|x)是一个逻辑函数但不是代表p(x|y)是一个多元高斯函数。这也表明GDA比着逻辑函数有着更强的模型假设能力。那也表明当假设模型是正确的时候,GDA或更好的适合数据,也会是一个更好的模型。特别的是,当p(x|y)确实是高斯分布,GDA就会渐渐有效。不严格的说,对于有限制的大型数据训练集,没有什么算法比GDA更加好的算法。(也可以说没有其他算法可以更精确的预测p(y|x))。特别的是,在这个环境中也可以证明GDA是一个比着logistic回归更好的算法,更一般的说,即使对于小的训练集,我们也希望GDA更好。
相反的是,在一些微弱的假设中,逻辑回归函数也是很强健的和对错误的模型预测不敏感的算法。这有一些使用逻辑回归算法预测想法。例如:如果x|y=0~Poisson(λ0),并且x|y=1~Poissson(λ1),这个p(y|x)就是逻辑回归函数。逻辑回归函数在泊松分布数据上的应用很好。但是如果我们想使用GDA在这个数据上—并且找到一个高斯分布函数在没有高斯分布的数据上---这个结果将会不好说的,有可能GDA会做的更好,也有可能更差。
总结一下:GDA给出了很好的模型预测,并且适合于大多数的数据。(需要很少的数据就可以学习的很好)当这个模型预测是对的或者是接近的对的。逻辑回归模型给出了相对较差的模型预测,并且预测出来的模型和真是数据有偏差。特别的是,当数据不是高斯分布是,在大量的预测数据条件下,逻辑回归模型几乎经常比GDA做的更好。鉴于这个原因,在实践中,逻辑回归比GDA使用的更多更经常。(一些有关联的需要考虑的因素影响模型更加适合贝叶斯模型,我们在接下来的章节中会讨论,但是贝叶斯算法仍然被认为是一个很好并且是一个很流行的分类算法。)
2 Naive Bayes 朴素贝叶斯
在GDA算法中,特征向量x是连续的、实际的值。现在我们讨论一种不一样的算法,训练集x是离散的值。
对于我们的激励函数的例子,考虑建造一个邮件分类系统使用机器学习。这里我们想分类这些邮件基于是否他们是未经许可的商业邮件(垃圾邮件),或者非垃圾邮件。当学习到做这些之后,我们接下来可以使我们的邮件分类器自动的分开这些垃圾邮件并且把他们放在一个隔开的邮件文件夹中。分类邮件只是一个使用界限分类的文本分类的例子。
现在我们有一个训练集(一个关于垃圾邮件和非垃圾邮件的训练集)。我们会开始我们的构建关于我们的邮件分类器通过指定关于能识别出来邮件x的特征。
我们会描绘一封邮件通过一个特征向量,这个特征向量的值是邮件中的单词在字典中的号码。特别的是,如果一封邮件包含了第i个单词,我们会令xi=1;否则会使xi=0.
例如,这个向量:
就是用来表示一封邮件中包含单词“a”和“buy”,但是不包含“aardvark”“aaedwolf”或者“zygmurgy”。这个给向量编码的方式叫做词汇表法,因此这个x的维度就是词汇表的长度。
已经选定了我们的特征向量,现在我们想要去构建一个比较有识别力的模型。因此,我们不得不对p(x|y)进行建模。但是如果我们有一个词汇表包含50000个单词,那么
x∈{0,1}^50000(x是一个50000维0和1组成的向量),并且如果我们想要对一个多元分布x精确建模那将会有2^50000个输出,我们需要有(2^50000-1)维的参数向量。很明显这太多了。
为了对p(x|Y)进行建模,我们因此做一个很强烈的假设。我们会假设Xi和y是相对独立的。这个假设被叫做朴素贝叶斯假设,并且这个结果算法被叫做朴素贝叶斯分类器。例如:如果y=1代表垃圾邮件;“busy”是第2087个单词和“price”是第39831个单词,然后我们会假设如果我告诉你y=1(代表这个是垃圾邮件),然后x2087(表示“buy”是否出现在这个信息里)对x39831这个值是否出现在邮件中没有任何的影响。更一般的说,这个也可以被写成
。(这个并不表示x2087和x39831是相互独立的表示为
),然而,我们仅仅是假设x2087和x39831对于y是相对独立的。
现在有:
第一个等式代表了一般的概率的表达式,第二个式子是用了NB假设。我们注意即使朴素贝叶斯假设是极端强烈的假设,这个结果算法对很多问题都能算出很好的结果。
我们的模型参数化
。通常情况下,给定一个训练集(
);i=1,…,m),我们能够写出下列结合极大似然函数:
改变
以便最大化这个似然函数,
和
给了极大似然函数一个估算
在上面的等式中,“
”表示“和”。这个参数有一个很自然的解释。例如,
是一部分的j没有出现的垃圾邮件。
调整好参数后,预测一个新的关于x的样本,我们可以简单的计算: