生成式模型和判别式模型
决策函数$Y=f(X)$与条件概率分布$P(Y|X)$
决策函数$Y=f(x)$:输入一个$x$,它就输出一个$y$值,这个$y$与一个阈值比较,根据比较结果判定$x$属于哪个类别。
条件概率分布$P(y|x)$:输入一个$x$,它通过比较它属于所有类的概率,然后预测时应用最大后验概率法(MAP)即比较条件概率最大的类为x对应的类别。
举个例子,对于一个二分类问题:对于$Y=f(x)$形式的分类模型,如果输出$Y$大于某个阈值$V$就属于类$w_1$,否则属于类$w2$;而对于$P(y|x)$形式的分类模型,分别计算条件概率,如果$P(w_1|x)$大于$P(w_2|x)$,$x$就属于类$w_1$,否则属于类$w_2$。
生成式模型与判别式模型
生成式模型(Generative Model):由数据学习联合概率密度分布P(x,y),然后生成条件概率分布P(y|x),或者直接学得一个决策函数 Y=f(x),用作模型预测。
判别式模型(Discriminative Model):由数据直接学习决策函数f(x)或者条件概率分布P(y|x)作为预测。
异同点
1.生成模型和判别模型都属于监督学习的模型。
2.生成式模型可以根据贝叶斯公式得到条件概率分布P(y|x),但反过来不行,即判别方法不能还原出联合概率分布P(x,y)。
3.生成方法学习联合概率密度分布P(x,y),所以就可以从统计的角度表示数据的分布情况,能够反映同类数据本身的相似度,但它不关心到底划分各类的那个分类边界在哪;判别方法不能反映训练数据本身的特性,但它寻找不同类别之间的最优分类面,反映的是异类数据之间的差异。
常见模型分类
生成式模型:
判别式分析
朴素贝叶斯
混合高斯模型
隐马尔科夫模型(HMM)
贝叶斯网络
Sigmoid Belief Networks
马尔可夫随机场(Markov Random Fields)
深度信念网络(DBN)
判别式模型:
线性回归(Linear Regression)
逻辑斯特回归(Logistic Regression)
K近邻(KNN)
感知机
神经网络(NN)
支持向量机(SVM)
决策树
最大熵模型(maximum entropy model, MaxEnt)
高斯过程(Gaussian Process)
条件随机场(CRF)
区分度训练
boosting方法
借用一个网友举的通俗易懂的例子
假如你的任务是识别一个语音属于哪种语言,对面一个人走过来,和你说了一句话,你需要识别出她说的到底是汉语、英语还是法语等。那么你可以有两种方法达到这个目的:
(1)学习每一种语言,你花了大量精力把汉语、英语和法语等都学会了,我指的学会是你知道什么样的语音对应什么样的语言。然后再有人过来对你说,你就可以知道他说的是什么语音.
(2)不去学习每一种语言,你只学习这些语言之间的差别,然后再判断(分类)。意思是指我学会了汉语和英语等语言的发音是有差别的,我学会这种差别就好了。
第一种方法就是生成方法,第二种方法是判别方法。
判别式模型(Discriminative Model)
即判别(数据输出量)的模型,直接对条件概率$p(x|y;\theta)$建模。常见的判别式模型有线性回归模型、线性判别分析、支持向量机SVM、神经网络等。
判别式模型举例:
要确定一个羊是山羊还是绵羊,用判别模型的方法是从历史数据中学习到模型,然后通过提取这只羊的特征来预测出这只羊是山羊的概率,是绵羊的概率。(logistic回归,>0.5为正例,否则,为反例)
生成式模型(Generative Model)
即生成(数据的分布)的模型,会对x和y的联合分布$p(x,y)$建模,然后通过贝叶斯公式来求得$p(x,y)$,然后选取使得$p(y_i|x)$最大的$y_i$,即:
常见的生成式模型有 隐马尔可夫模型HMM、朴素贝叶斯模型、高斯混合模型GMM、LDA等。
生成式模型举例:
利用生成模型是根据山羊的特征首先学习出一个山羊的模型,然后根据绵羊的特征学习出一个绵羊的模型,然后从这只羊中提取特征,放到山羊模型中看概率是多少,在放到绵羊模型中看概率是多少,哪个大就是哪个。(朴素贝叶斯分类就是这样)
常见的模型大多是判别模型,生成模型有:朴素贝叶斯(需要求联合概率分布),隐马尔科夫HMM,高斯混合模型GMM,LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,也称为一个三层贝叶斯概率模型。