之前介绍过了一系列的简单线性区别学习算法(discriminative learning algorithm)。而生成学习算法(generative learning algorithms)不同于此。前者是通过训练集训练后,根据输入空间X,将样本分为{0,1}两类,分类依据在概率上表示为P(y|x)。而后者,则是通过P(x|y)和P(y),进而通过贝叶斯公式求得P(y|x)。就好比传统的猫狗分类问题,前者是在X空间上建立一个决策边界,这样,当新的样本进来,可以直接根据这个点落在X输入空间中的哪一边来对其进行分类。而后者则是,首先根据训练样本对猫和狗分别建立一个特征模型(即猫是什么样的的,狗又是什么样的),建立二者的特征分布(x|y的分布),然后,当新样本进来,就观察它是更像猫还是更像狗。
生成学习算法主要有 :
1. 高斯判别分析法
必须要基本满足p(x|y)的分布近似于多维高斯分布,即y~Bernoulli(φ),x|y=0 ~ N(μ0,Σ),x|y=0 ~ N(μ1,Σ),因此该数据的对数最大似然(就是最大化贝叶斯公公式的分子,即联合概率分布)为
根据训练集最大化似然估计,求得
最后的决策边界以 P(y=1|x) = 0.5 为界。
2. 朴素贝叶斯
按照文本分类,朴素贝叶斯方法也如上,根据贝叶斯公式来反向计算概率。与高斯判别分析法不同,朴素贝叶斯方法假设X空间向量的各维分量在y给定的条件下相互独立(条件独立于y)。这样就有
它的似然函数仍然是贝叶斯公式的分子,也就是联合分布似然,如下
最大化似然估计,得到三个参数的估计值如下:
这样可以求得判别函数:
由于在分类过程中,文本中可能出现一个从未出现过的词,导致P(xi|y=0)和P(xi|y=1)均为0,这样就会导致p(y=1|x) = 0/0 ,为了防止这种情况发生,会加上一个拉普拉斯平滑,即改变参数估计值如下:
其中分子永远是+1,分母则是加上xi可能取值的所有种类的数目,此处xi只能取0和1,故分母+2。
3. 文本分类事件模型
对朴素贝叶斯方法在文本分类中的应用加以改进,考虑每个词出现的次数,这样会得到文本分类事件模型。不同于朴素贝叶斯中的x是一个字典向量,此处的x是文本向量。朴素贝叶斯中xi代表字典中每个词在文本中出现与否(只能取0或者1),而文本分类事件模型中xi代表文本中每个词在字典中的index(可取1到字典总长度|V|)。因此,朴素贝叶斯中的x长度为字典长度,而文本分类事件模型中的x长度为文本长度。
这样文本分类事件模型的似然函数为
最大化似然函数得到估计值:
为防止冷启动情况,加上拉普拉斯平滑:
这就是几种常见的生成学习算法。
巧合的是,当p(x | y)的分布满足指数族分布(上文的三种模型的分布均满足指数族分布)时,均能将p(y=1 | x)的分布转化为logistic回归函数形式。因此,生成学习算法在本质上,往往与线性区别学习算法相吻合。