精华内容
下载资源
问答
  • 生成式模型

    2019-07-19 08:36:00
    本文通过分类问题讲解判别式和生成式模型,会用到Logistics Regression 和 几率模型 首先介绍一下,判别式模型是完全根据数据得出结果,而生成式模型会有人为设定的条件建立模型,再通过利用假设建立的模型得出结果...

    本文通过分类问题讲解判别式和生成式模型,会用到Logistics Regression 和 几率模型

    首先介绍一下,判别式模型是完全根据数据得出结果,而生成式模型会有人为设定的条件建立模型,再通过利用假设建立的模型得出结果。

    Generative (生成式模型)

    例: 利用iris数据进行分类
    本文仅仅才用了target0和target1,且仅仅利用了前两种属性(便于可视化)

    数据可视化
    在这里插入图片描述
    利用生成式建立模型,首先假设每一种花的属性服从高斯分布,即
    \[f(x) = \frac{1}{\sqrt{2 \pi}\sigma}e^{-\frac{(x-u)^2}{2\sigma^2}}\]
    相当于每一种属性主要分布在在以\(u\)为中心,以\(\sigma\)为半径的圆中。
    这样就可以利用概率的大小来判断图中对应的点应该属于哪一个分组。例如此例中在这里插入图片描述
    越靠近某类中心,该点为此类的概率越大。(本文假设其服从高斯分布,也可以假设其为其他分布,这也是生成式模型与判别式模型的不同之处

    首先看蓝色的点,由于我们假设其为高斯分布,也就是说,某一个高斯分布会产生如此分布的点。很明显,这样高斯分布有无穷多个,我们需要找到一个高斯分布能够最大概率的生成这样分布的点。这就需要用到最大似然估计。

    首先对于一个高斯分布的模型(参数为\(u,\sigma\)),图中的任何一个点都会产生一个概率,我们只需要找到一个模型,让产生这些点的概率最大即可(最大似然估计),公式化即为

    \[ \begin{aligned} L(u,\sigma) &= f_{u,\sigma}(x^1)f_{u,\sigma}(x^2)\cdots f_{u,\sigma}(x^n) \\ &= \prod_{i=1}^{n} f_{u,\sigma}(x^i) \end{aligned} \]

    极大似然函数

    \[u^{'} ,\sigma^{'} = \mathop{\arg \max_{u, \sigma}(L(u,\sigma))}\]

    明显对于连乘的问题取对数变为连加问题
    \[L(u,\sigma) = \sum_{i=0}^{n}f_{u,\sigma}(x^i)\]
    将偏导数等于0,求得\((u^{'},\sigma^{'})\)


    这部分可跳过。

    以下为 \(u\) 的推导过程,(字很丑,请忽略,,,)

    打开链接即可,,,csdn总是加载失败,,emmm
    http://img.caohongchuan.cn/picgo/20190708203542.jpg

    得出
    \[u^{'} = \frac{1}{n} \sum_{i=1}^{n}x^i\]
    \[\sigma^{'} = \frac{1}{n} \sum_{i=1}^{n}(x^i-u^{'})^2\]

    分别求出attribute0和attribute1,得出
    在这里插入图片描述
    这即为蓝色点的中心。
    其各自的方差为:
    在这里插入图片描述


    上面的推导过程都是利用1元高斯分布求得的,但是本文有2个自变量,\(attribute_0,attribute_1\),需要使用多元高斯分布。可参考博客

    多元高斯分布
    \[f(x) = \frac{1}{(\sqrt{2\pi})^n |\sum |^{\frac{1}{2}}}e^{-(x-u_x)^T \sum^{-1} (x-u_x)}\]
    其中\(\sum\)为协方差矩阵,\(n\)为自变量的个数,\(u_x\)为每个自变量的均值
    其中各个变量的均值和方差在一元高斯分布中已经求出。

    之后,由贝叶斯公式
    \[P(blue|x) =\frac{P(x|blue)P(blue)}{P(x|blue)P(blue)+P(x|green)P(green)}\]

    其中\(P(blue) = \frac{N(blue)}{N(blue)+N(green)},P(green) = \frac{N(green)}{N(blue)+N(green)}\), 其中的\(P(x|blue),P(x|green)\)的概率由我们上方假定的高斯分布模型求出。

    至此为止,我们已经能够得到 \(P(blue|x)\) 即选择一个x,其为blue类的概率。假设此概率大于0.5,我们就认为这个x属于blue类,否则不属于。

    画出blue的高斯分布等高线
    在这里插入图片描述

    这样就可以求出两类的分界线。或许概率为0.6为分界线对上图更加合适(仅仅根据图做出的判断)一般都选0.5作为分界点。

    分类问题结束。
    总结一下 : 生成式模型最大的特点是假设了各个变量之间的联合分布函数\(f(attribute_0,attribue_1)\)——其服从高斯分布且两者相互独立。之后再利用贝叶斯公式,求得对于每个点其为blue类的概率。

    对于判别式模型将利用Logistics Regression进行讲解

    判别式模型讲解链接https://www.cnblogs.com/caohongchuan/p/11211087.html


    附上本文的代码(代码写的很烂,而且没有注释,,请大佬们勿笑,,)
    为自己洗白一发,,这个代码没有通用性,所以我也懒得美化了,,就这样,,

    # classification
    # @author Hongchuan CAO
    # @date 2019-7-8
    
    from numpy.core.multiarray import ndarray
    from sklearn import datasets
    import numpy as np
    import matplotlib.pyplot as plt
    import copy
    
    class Genrative:
    
        def __init__(self):
            self.iris = datasets.load_iris()
            self.part = [[],[],[]]
    
    
        def classify(self):
            for i in range(len(self.iris.target)):
                self.part[self.iris.target[i]].append(self.iris.data[i,:2])
    
            # change list to array
            for i in range(0,3):
                self.part[i] = np.array(self.part[i])
    
        def cal_par(self):
            u0 = np.mean(self.part[0],axis=0)
            u1 = np.mean(self.part[1],axis=0)
    
            record = copy.deepcopy(self.part)
    
            for i in range(len(record[0])):
                record[0][i][0] = (record[0][i][0] - u0[0])**2
                record[0][i][1] = (record[0][i][1] - u0[1])**2
    
            v0 = np.mean(record[0],axis=0)
            v1 = np.mean(record[1],axis=0)
    
            self.u = u0
            self.v = v0
            self.uu = u1
            self.vv = v1
    
        def f1(self,xx):
            u0 = self.u
            v0 = self.v
    
            summ = np.zeros([2,2])
            summ[0][0] = v0[0]
            summ[1][1] = v0[1]
    
            xx = xx-u0
            z = np.dot(np.dot(xx,np.linalg.inv(summ)),xx.T)
            zz = np.sqrt(np.linalg.det(summ))
    
            return 1.0/(zz*np.sqrt(2*np.pi)**2)*np.exp(-1/2*z)
    
        def f2(self,xx):
            u1 = self.uu
            v1 = self.vv
    
            summ = np.zeros([2,2])
            summ[0][0] = v1[0]
            summ[1][1] = v1[1]
    
            xx = xx-u1
            z = np.dot(np.dot(xx,np.linalg.inv(summ)),xx.T)
            zz = np.sqrt(np.linalg.det(summ))
    
            return 1.0/(zz*np.sqrt(2*np.pi)**2)*np.exp(-1/2*z)
    
        def pobablity(self,xx):
            p1 = len(self.part[0])/(len(self.part[0]+self.part[1]))
            p2 = len(self.part[1])/(len(self.part[0]+self.part[1]))
    
            return self.f1(xx)*p1/(self.f1(xx)*p1+self.f2(xx)*p2)
    
        def plot1(self):
    
            x_a = [x for x in np.arange(3,8,0.1)]
            y_a = [y for y in np.arange(1,6,0.1)]
            z_a = [[self.pobablity([xx,yy]) for xx in x_a] for yy in y_a]
            print(z_a)
            X,Y = np.meshgrid(x_a,y_a)
            cntr1 = plt.contourf(X,Y,z_a)
            plt.clabel(cntr1, colors='k', inline_spacing=3, fmt='%.1f', fontsize=10)
    
            plt.plot(self.part[0][:,0], self.part[0][:,1], 'b.', label='0')
            plt.plot(self.part[1][:,0], self.part[1][:,1], 'g.', label='1')
            # plt.plot(self.part[2][:,0], self.part[2][:,1], 'r.', label='2')
            plt.legend()
            plt.xlabel('attribute0')
            plt.ylabel('attribute1')
            plt.show()
    
    if __name__ == '__main__':
        obj = Genrative()
        obj.classify()
        obj.cal_par()
        obj.plot1()

    转载于:https://www.cnblogs.com/caohongchuan/p/11211107.html

    展开全文
  • 搞懂生成式模型和判别式模型

    LawsonAbs的认知与思考,还请各位读者审慎阅读。

    总结

    • 文章来源:csdn:LawsonAbs
    • 持续更新~

    1.生成式模型和判别式模型

    1.1 共同点

    二者的目的都是要计算在给定条件(也就是特征)x的情况下,属于某个类别yiy_i的概率pyip_{y_i},写成数学式子
    也就是计算条件概率P(yix)P(y_i|x)

    1.2 不同点

    虽然目的相同,但是计算方法却有所区别,下表给出二者的比较。

    比较项 生成式模型 判别式模型
    建模对象 联合分布P(x,y) 条件分布P(y|x)
    计算公式 P(YX)=P(X,Y)P(X)P(Y\|X)=\frac{P(X,Y)}{P(X)} 直接计算
    模型集合 朴素贝叶斯,贝叶斯网络,隐马尔可夫模型,LDA 最大熵模型,条件随机场

    下面给出一张图【《百面》的P125】,用于解释整个计算的流程:
    在这里插入图片描述

    2 生成式模型

    2.1 主要思想

    • 首先构建并学习输入特征和输出类别的联合分布
    • 然后利用贝叶斯公式推导出输出类别的后验分布
    • 最后结合决策损失函数构建判别函数进行分类决策

    2.2 实例

    朴素贝叶斯分类器。

    3 判别式模型

    3.1 主要思想

    • 直接构建并学习出输出类别在输入特征条件下的条件分布
    • 结合决策损失函数构建判别函数进行分类决策

    3.2 实例

    逻辑回归。

    参考资料

    • 《百面机器学习算法》
    展开全文
  • 生成式模型 得到的是联合概率分布,能够得到更多信息,但是付出代价需要样本较多,计算更多; 当样本数据较多,能够快速收敛 (隐马尔科夫、朴素贝叶斯、LDR) 判别式模型 得到条件概率分布; 样本数据需求较少, ...

    优缺点

    • 生成式模型
      得到的是联合概率分布,能够得到更多信息,但是付出代价需要样本较多,计算更多;
      当样本数据较多,能够快速收敛
      (隐马尔科夫、朴素贝叶斯、LDR)
    • 判别式模型
      得到条件概率分布;
      样本数据需求较少, 得到的信息较少,节省计算资源,准确率一般比生成式模型高;
      (SVM、感知机、KNN、决策树)
      例子
      判断狗是哈士奇还是金毛:
      1. 判别式只学习一种模型;
      2. 生成式模型学习多种模型,根据金毛学习一个模型,根据哈士奇学习一个模型,有多少类别生成多少模型;
      3. 生成式模型可以检测异常点;
    展开全文
  • 其实机器学习的任务是从属性X预测标记Y,即求概率P(Y|X)。 判别式模型 对于判别式模型来说求得P(Y|X),对未见示例X,根据P(Y|X)可以求得标记Y,即可以直接判别出来,如上图的左边所示,实际是就是直接得到...生成式模型
  • # 判别式模型与生成式模型 生成式模型(Generative Model)与判别式模型(Discrimitive Model)是分类器常遇到的概念,它们的区别在于:(对于输入x,类别标签y) 1. 生成式模型估计它们的联合概率分布P(x,y) 2. 判别...

    # 判别式模型与生成式模型


    生成式模型(Generative Model)与判别式模型(Discrimitive Model)是分类器常遇到的概念,它们的区别在于:(对于输入x,类别标签y)

    1. 生成式模型估计它们的联合概率分布P(x,y)

    2. 判别式模型估计决策函数F(X)或条件概率分布P(y|x)

    3. 生成式式模型可以根据贝叶斯公式得到判别式模型,但反过来不行

    ## 生成式模型
    1. 判别式分析
    2. 朴素贝叶斯Native Bayes
    3. 混合高斯型Gaussians
    4. K近邻KNN

    5. 隐马尔科夫模型HMM
    6. 贝叶斯网络
    7. sigmoid belief networks
    8. 马尔科夫随机场Markov random fields
    9. 深度信念网络DBN
    10. 隐含狄利克雷分布简称LDA(Latent Dirichlet allocation)
    11. 多专家模型(the mixture of experts model)

    ## 判别式模型
    1. 线性回归linear regression
    2. 逻辑回归logic regression
    3. 神经网络NN
    4. 支持向量机SVM

    5. 高斯过程Gaussian process
    6. 条件随机场CRF
    7. CART(Classification and regression tree)
    8. Boosting

    展开全文
  • 生成式模型:能反映同类数据本身的相似度,不关心各类边界在哪。 估计的是联合概率分布 判别式模型:在于寻找不同类别之间的最优分界面,反映异类数据之间的差异估计的是条件概率分布 生成式模型能得到判别式模型...
  • 点击上方“Datawhale”,选择“星标”公众号第一时间获取价值内容生成式模型和判别式模型的概念是机器学习领域非常重要的基础知识,但能准确区分开二者并不是一件非常容易的...
  • 生成式模型 VS 判别式模型前言 在学习机器学习中,有两种经典模型,生成式模型和判别式模型,本文尽量用通俗易懂的语言来说明这两者区别。 以狗分类问题为例,简化之以二分类说明,狗分 A 种类,B 种类。 判别式...
  • 生成式模型、判别式模型的区别?

    千次阅读 2019-05-16 13:12:57
    生成式模型、判别式模型的区别? ​ 对于机器学习模型,我们可以根据模型对数据的建模方式将模型分为两大类,生成式模型和判别式模型。如果我们要训练一个关于猫狗分类的模型, 对于判别式模型,只需要学习二者...
  • 生成式模型(Generative Model)则会对x和y的联合分布p(x,y)建模,然后通过贝叶斯公式来求得p(yi|x),然后选取使得p(yi|x)最大的yi常见生成式模型:混合高斯模型,估计了不同输入和类别的联合分布。朴素贝...
  • 判别式模型与生成式模型 机器学习模型有两个重要类别:判别式模型与生成式模型。这两种模型的区别,是很多初学者会遇到的一个坎儿。 判别式模型的意思是,给出一条数据,模型要为数据给出一个类别。一般来说,数据...
  • 1 定义1.1 生成式模型 生成式模型(Generative Model)会对x和y的联合分布p(x,y)建模,然后通过贝叶斯公式来求得 p(yi|x),然后选取使得p(yi|x) 最大的 yi,即:简单说生成式模型就是生成数据分布的模型。...
  • 生成式模型 参考:https://blog.csdn.net/asdfsadfasdfsa/article/details/80960315 判别式模型,就是只有一个模型,你把测试用例往里面一丢, label 就出来了,如 SVM。 生成式模型,有多个模型(一般有多少类就有...
  • 什么是判别式模型和生成式模型

    万次阅读 2018-06-30 09:39:56
    生成式模型(Generative Model):对联合分布概率p(x,y)进行建模,常见生成式模型有:隐马尔可夫模型HMM、朴素贝叶斯模型、高斯混合模型GMM、LDA等;生成式模型更普适;判别式模型更直接,目标性更强生成式模型关注...
  • 判别式模型与生成式模型是机器学习领域中的基本概念,今天将两者的特点总结一下,如下表所示: 对比 判别式模型 生成式模型 特点 寻找不同类别之间的最优分类面,反映异类数据之间的差异 以统计的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,899
精华内容 1,559
关键字:

生成式模型