一 生成学习算法
两种学习算法的定义
1 判别学习算法:直接学习p(y|x),其中x是某类样例的特征,y是某类样例的分类标记。即给定输入特征,输出所属的类或学习得到一个假设hθ(x),直接输出0或1。通俗的说就是直接对问题求解,比如logistic算法,在解空间中寻找一条直线从而把两种类别的样例分开。
2 生成学习算法:对p(x|y)进行建模,p(x|y)表示在给定所属的类的情况下,显示某种特征的概率。处于技术上的考虑,也会对p(y)进行建模。 p(x|y)中的x表示一个生成模型对样本特征建立概率模型,y表示在给定样本所属类的条件下。
例:对恶性肿瘤和良性肿瘤的分类
除了寻找一个将两类数据区分的直线外,还可以用如下方法:
1) 遍历训练集,找到所有恶性肿瘤样本,直接对恶性肿瘤的特征建模;同理,对良性肿瘤建模。
2) 对一个新的样本分类时,即有一个新的病人时,要判断其是恶性还是良性,用该样本分别匹配恶性肿瘤模型和良性肿瘤模型,看哪个模型匹配的更好,预测属于恶性还是良性。
对p(x|y)和p(y)建模后
根据贝叶斯公式p(y|x) = p(xy)/p(x) = p(x|y)p(y)/p(x)
可以计算:p(y=1|x) = p(x|y=1)p(y=1)/p(x)
其中,p(x) = p(x|y=0)p(y=0) + p(x|y=1)p(y=1)
二 高斯判别分析算法
高斯判别分析(GDA)算法即为一种生成学习算法。
高斯判别分析的两个假设(使用条件):
假设输入特征x∈Rn,并且是连续值;
p(x|y)是多维正态分布(即高斯分布)。
多维正态分布(高斯分布)详解
多维正态分布是正态分布在多维变量下的拓展。均值向量(mean vector),协方差矩阵(convariance matrix)
(其中n是多维变量的向量长度),写成z~N(μ,∑), 其密度函数为:
其中表示行列式(determinant)。
对于服从多维正态分布的随机变量x,均值由下面的公示得到:
协方差矩阵与协方差函数得到:
Cov(Z)==
= ∑ (5)
对于多维高斯分布只要注意上述两个参数即可。
多维高斯分布图像与参数的关系
左图:μ=0,∑=I(单位矩阵)
中图:μ=0,∑=0.6I,图形变陡峭
右图:μ=0,∑=2I,图形变扁平
三图中μ=0,∑如下:
可见增加矩阵对角元素的值,即变量间增加相关性,高斯曲面会沿z1=z2(两个水平轴)方向趋于扁平。其水平面投影图如下:
即增加∑对角线的元素,图形会沿45°角,偏转成一个椭圆形状。
若∑对角线元素为负,图形如下:
∑分别为:
不同μ的图形如下:
μ分别为:
多维高斯分布图像与参数总结:
μ决定分布曲线中心的位置。
协方差∑决定陡峭程度。
高斯判别分析算法
假设:目标值y服从伯努利分布,条件概率p(x|y)服从多维正态分布。所以,他们的概率密度为:
所以数据集的极大似然函数的对数如下所示:
对极大似然函数对数最大化,我们就得到了GDA模型的各参数的极大似然估计,即得到了如何使用GDA算法的方法。
各个参数的极大似然估计如下:
其中的的意义:遍历整个训练样本集,从中找到所有y=0的样本,之后对所有这些y=0的样本,对它们的x取均值。
结果如图所示:
由上表可以看出,高斯判别分析器的主要思想是:观察正样本数据,拟合出一个符合正样本数据的高斯分布;观察负样本数据,拟合出一个符合负样本数据的高斯分布;把它们放在一起,这两个高斯分布的密度函数可以定义出两个类别的隔离器。
预测
当我们得到新的x时,预测目标是:
的含义:使得这一项最大的那个y的值。
比如:
优缺点
如果x|y大概服从高斯分布,此时你在算法中显示地做出了这个假设,那么这个算法的表现将会更好。因为这个算法利用了更多的关于数据的信息,算法知道数据服从高斯分布,所以如果高斯假设成立或大概成立,那么高斯判别分析将会优于logistic回归。
相反地,如果你不确定x|y的分布情况,那么logistic回归一个判别算法,它的表现可能会更好。
三 朴素贝叶斯
朴素贝叶斯(NB)也是一种学习算法。GDA针对的是特征向量x为连续值时的问题,而朴素贝叶斯则针对的是特征向量x为离散值时的问题。
朴素贝叶斯最常用与文本的分类,例如甄别邮件是否为垃圾邮件。
例子:垃圾邮件分类问题
首先是把一封邮件作为输入特征,与已有的词典进行比对,如果出现了该词,则把向量的xi=1,否则xi=0,例如:
我们要对p(x|y)建模,但是假设我们的词典有50000个词,那么,如果采用多项式建模的方式,会有
,明显参数太多了,这个方法是行不通的.
为了对p(x|y)建模,我们做一个很强的假设,假设给定y,xi是条件独立(conditionally independent)的.这个假设成为朴素贝叶斯假设(Naive Bayes assumption).
因此得到下式:
朴素贝叶斯假设在文本分类问题上的解释为文本中出现某词语时不会影响其他词语在文本中出现的频率。
模型中的参数有:
于是,我们就得到了NB方法的极大似然估计函数:
其中n为词典大小,最大化该函数,我们得到参数的极大似然估计:
Φi|y=1的分子为标记为1的邮件(垃圾邮件)中出现词j的邮件数目和,分母为垃圾邮件数,总体意义就是训练集中出现词j的垃圾邮件在垃圾邮件中的比例。
Φi|y=0就是出现词j的非垃圾邮件在非垃圾邮件中的比例。
Φy就是垃圾邮件在所有邮件中的比例。
求出上述参数,就知道了p(x|y)和p(y),用伯努利分布对p(y)建模,用上式中p(xi|y)的乘积对p(x|y)建模,通过贝叶斯公式就可求得p(y|x)
对于新样本,按照如下公式计算其概率:
总结:朴素贝叶斯的总体思想即根据贝叶斯公式,先求条件概率与先验概率,在得出结果。具体在本例中即先分别求出为垃圾邮件时出现某词的频率,和为非垃圾邮件时出现某词的频率以及垃圾邮件的频率,然后根据贝叶斯公式,求出出现某词时为垃圾邮件的频率
朴素贝叶斯的问题:
假设在一封邮件中出现了一个以前邮件从来没有出现的词,在词典的位置是35000,那么得出的最大似然估计为:
也即使说,在训练样本的垃圾邮件和非垃圾邮件中都没有见过的词,模型认为这个词在任何一封邮件出现的概率为0.
假设说这封邮件是垃圾邮件的概率比较高,那么
模型失灵.