zoukankan      html  css  js  c++  java
  • 判别模型与生成模型

    从贝叶斯的角度

      判别模型估计的是条件概率分布(后验概率),p(y | x)

      生成模型估计的是联合概率分布 p(y, x) = p(y | x) * p(x)

    从模型建立的角度

      判别模型是直接用决策模型做类别区分/计算概率。

      生成模型是首先学习出一个模型,即首先建立样本的联合概率概率密度模型P(X,Y),再得到后验概率P(Y|X),再利用它进行分类。

    从数据inter-class和intra-class的角度

      判别模型关注数据类别间(inter-class)的特点,寻找不同类别之间的分类面(decision boundary),反映的是异类数据之间的差异。

      生成模型关注数据类别内(intra-class)的特点,从统计的角度表示数据的分布情况,能够反映同类数据本身的相似度。

    一个形象的例子

      例如对面一个人走过来,和你说了一句话,你需要识别出她说的到底是汉语、英语还是法语等。那么你可以有两种方法达到这个目的:用生成模型的方法是学习每一种语言,你花了大量精力把汉语、英语和法语等都学会了,我指的学会是你知道什么样的语音对应什么样的语言。然后再有人过来对你说话,你就可以知道他的语言对应什么语言;用判别模型的方法是不去学习每一种语言,你只学习这些语言模型之间的差别,然后再分类。意思是指我学会了汉语和英语等语言的发音是有差别的,我学会这种差别就好了。

    两者的关系

      由生成模型可以得到判别模型,但由判别模型得不到生成模型。(生成模型带的信息一般要比判别模型丰富)

    常见算法举例

      判别模型:K 近邻、感知机(神经网络)、决策树、逻辑斯蒂回归、最大熵模型、SVM、提升方法、条件随机场

      生成模型:朴素贝叶斯、隐马尔可夫模型、混合高斯模型、贝叶斯网络、马尔可夫随机场

    优缺点比较

      见参考

    参考:

    https://blog.csdn.net/u012101561/article/details/52814571

  • 相关阅读:
    VC++:创建,调用Win32静态链接库
    VC++:创建,调用Win32动态链接库
    C++生成和解析XML文件
    C++实现16进制字符串转换成int整形值
    一个好隐蔽的C/C++代码bug
    【C++札记】标准模板库string
    Rabbitmq C++客户端 Rabbitmq Client
    C++:标准模板库map
    C++:标准模板库vector
    C++:标准模板库(STL)
  • 原文地址:https://www.cnblogs.com/sbj123456789/p/10562147.html
Copyright © 2011-2022 走看看