生成式模型 vs 判别式模型
有监督机器学习方法可以分为生成方法和判别方法(常见的生成方法有混合高斯模型、朴素贝叶斯法和隐形马尔科夫模型等,常见的判别方法有SVM、LR等),生成方法学习出的是生成模型,判别方法学习出的是判别模型。那么他们之间的真正区别和优缺点是什么了?
1、判别式模型
假设有一批训练数据 (xi,yi) ( x i , y i ) ,其中 xi x i 为训练数据的 feature f e a t u r e , yi y i 为训练数据的 label l a b e l ,当训练完毕后,输入册数数据 xn x n ,判别式模型会直接给出 p(yn|xn) p ( y n | x n )
2、生成式模型
生成式模型测试结果,并不直接会给出 p(yn|xn) p ( y n | x n ) 。而是求得联合分布 p(yn,xn) p ( y n , x n ) 。
具体解法如下:
y∗=argmaxp(yi|xi)=argmaxp(yi,xi)/p(xi)=argmaxp(yi,xi)=argmaxp(xi|yi)∗p(yi) y ∗ = a r g m a x p ( y i | x i ) = a r g m a x p ( y i , x i ) / p ( x i ) = a r g m a x p ( y i , x i ) = a r g m a x p ( x i | y i ) ∗ p ( y i )
所以选择的类别,只需要联合概率最大即可。
这里我们以朴素贝叶斯为例子,假设 x1,x2,x3 x 1 , x 2 , x 3 相互独立。
p(Y,x1,x2,x3)=p(Y)p(x1,x2,x3|Y)=p(Y)p(x1|Y)p(x2|Y)p(x3|Y) p ( Y , x 1 , x 2 , x 3 ) = p ( Y ) p ( x 1 , x 2 , x 3 | Y ) = p ( Y ) p ( x 1 | Y ) p ( x 2 | Y ) p ( x 3 | Y )
从公式可以看出,贝叶斯的求解思路:求解类别先验概率和类别条件概率。
3、优缺点:
1、一般来说, 生成式模型都会对数据的分布做一定的假设, 比如朴素贝叶斯会假设在给定的情况下各个特征之间是条件独立的。
2、生成式模型最终得到的错误率会比判别式模型高, 但是其需要更少的训练样本就可以使错误率收敛(具体原因我也不是很你了解)
3、生成式模型更容易拟合, 比如在朴素贝叶斯中只需要计下数就可以, 而判别式模型通常都需要解决凸优化问题
4、生成式模型给出的是联合分布,可以带来其他产物,比如边缘分布这些