1、生成学习算法
之前讲的回归模型属于判别模型,今天引入新的模型——生成学习算法:对训练集建立两个概率模型,测试特征代入两个模型比较哪个模型的最终概率高来判断类别(而不是计算出两个概率,而是比较两个概率)
利用贝叶斯概率得到两个模型的统一性:
对p(x|y)和p(y)建模后,根据贝叶斯公式p(y|x) = p(xy)/p(x) = p(x|y)p(y)/p(x),
其中,p(x) = p(x|y=0)p(y=0) +p(x|y=1)p(y=1)
比较两个模型的概率:
举例说明argmax函数:
min(x-5)^2=0
argmin(x-5)^2=5
2、高斯判别分析(其中一种生成学习算法)
多值高斯分布:
其概率密度函数为:
协方差矩阵E[(x-μ)(x-μ)T]
其图形如下:
增加矩阵对角元素的值,即变量间增加相关性,高斯曲面会沿z1=z2(两个水平轴)方向趋于扁平。其水平面投影图如下:
而改变u,中心位置发生变化:
高斯判别分析:
假设:
即:
最大似然估计:
此处假设协方差相同,期望值不同,则只是中心位置不同。
求导后,可得各参数如下:
如图所示:
这就是所要的分类器。
3、高斯判别分析与logistic回归的关系
即:
当使用GDA模型时,p(x|y)属于高斯分布,计算p(y|x)时,几乎能得到和logistic回归中使用的sigmoid函数一样的函数。但实际上还是存在本质区别的。(逆推并不成立,因为高斯的假设更多)
4、Naive Bayes朴素贝叶斯模型
高斯判别分析里地变量x是连续的,当x是离散的,则采用朴素贝叶斯模型
比如判断邮件是否是垃圾邮件:
假设邮件出现“a”和“buy”,没有出现“aardvark”、“aardwolf”、“zygmurgt”,则表示为:
假设有5000个关键词,则又2^5000种可能。
假设给定y值时,xi是条件独立,也就是:
设置:
因此最大似然估计:
求解得:
所以我们要求的是:
朴素贝叶斯存在的问题:
设有一封新邮件中出现一个字典没有的新词,设其标号为35000,因为这个词在垃圾邮件和非垃圾邮件中都不存在,则p(x3500|y=1)=0,p(x35000|y=0)=0,计算p(y=1|x)如下:
则结果是未定义的。
其问题在于,统计上认为p(x35000|y)=0是不合理的。即在过去两个月邮件里未出现过这个词,就认为其出现概率为0,并不合理。
概括来讲,即之前没有见过的事件,就认为这些事件不会发生,是不合理的。通过Laplace平滑解决这个问题。
5、Laplace平滑
根据极大似然估计,p(y=1) = #”1”s / (#”0”s + #”1”s),即y为1的概率是样本中1的数目在所有样本中的比例。Laplace平滑就是将分子分母的每一项都加1,,即:
p(y=1) = (#”1”s+1) / (#”0”s+1 + #”1”s+1)
用公式表达如下:
在naive bayes中,
Laplace平滑中,
故bayes公式修正为: