请帮助我理解生成算法和判别算法之间的区别 ,记住我只是一个初学者。
#1楼
在实践中,模型使用如下。
在判别模型中 ,要从训练示例x
预测标签y
,您必须评估:

这只是选择考虑x
的最可能的类y
。 这就像我们试图模拟类之间的决策边界 。 这种行为在神经网络中非常清楚,其中计算出的权重可以看作是一个复杂形状的曲线,隔离了空间中一个类的元素。
现在,使用贝叶斯的规则,让我们替换


y
都是相同的。 那么,你就离开了

这是你在生成模型中使用的等式。
在第一种情况下,你有条件概率分布 p(y|x)
,它模拟了类之间的边界,在第二种情况下,你有联合概率分布 p(x,y),因为p(x,y)= p (x | y)p(y),它明确地模拟每个类的实际分布 。
使用联合概率分布函数,给定y
,您可以计算(“生成”)其各自的x
。 因此,它们被称为“生成”模型。
#2楼
生成算法模拟数据的生成方式,以便对信号进行分类。 它提出了一个问题:基于我的一代假设,哪个类别最有可能产生这个信号?
判别算法不关心数据是如何生成的,它只是对给定信号进行分类。
#3楼
一个额外的信息点,与上面的StompChicken的答案很好。
判别模型和生成模型之间的根本区别在于:
判别模型学习类之间的(硬或软)边界
生成模型模拟各个类的分布
编辑:
生成模型是可以生成数据的模型 。 它模拟了特征和类(即完整数据)。
如果我们模拟P(x,y)
:我可以使用这个概率分布来生成数据点 - 因此所有建模P(x,y)
算法都是生成的。
例如。 生成模型
朴素贝叶斯模型
P(c)
和P(d|c)
- 其中c
是类,d
是特征向量。另外,
P(c,d) = P(c) * P(d|c)
因此,Naive Bayes在某些形式模型中,
P(c,d)
贝叶斯网
马尔科夫网队
判别模型是仅能用于区分/分类数据点的模型 。 在这种情况下,您只需要对P(y|x)
进行建模(即给定特征向量的类概率)。
例如。 判别模型:
逻辑回归
神经网络
条件随机字段
一般而言,生成模型需要比判别模型更多地建模,因此有时不那么有效。 事实上,大多数(不确定是否所有)无监督学习算法(如聚类等)可以称为生成,因为它们模型为P(d)
(并且没有类别:P)
PS:部分答案来自消息来源
#4楼
这是CS299(Andrew Ng)与该主题相关的讲义中最重要的部分,它真正帮助我理解判别性和生成性学习算法之间的区别 。
假设我们有两类动物,大象( y = 1
)和狗( y = 0
)。 而x是动物的特征向量。
给定训练集,像逻辑回归或感知器算法(基本上)的算法试图找到一条直线 - 即决策边界 - 将大象和狗分开。 然后,为了将新动物分类为大象或狗,它检查决定边界的哪一侧,并相应地进行预测。 我们称这些判别性学习算法 。
这是一种不同的方法。 首先,看大象,我们可以建立一个大象的模型。 然后,看着狗,我们可以建立一个单独的模型,看看狗的样子。 最后,为了对新动物进行分类,我们可以将新动物与大象模型相匹配,并将其与狗模型相匹配,以查看新动物是否更像大象或更像我们在训练组中看到的狗。 我们称这些生成学习算法 。
#5楼
我的两分钱:歧视性方法强调差异生成方法不关注差异; 他们试图建立一个代表班级的模型。 两者之间存在重叠。 理想情况下,应该使用两种方法:一种方法可用于查找相似性,另一种方法可用于查找不相似性。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3156080