机器学习(十八)——朴素贝叶斯(Naive Bayes)

原文:http://cs229.stanford.edu/notes/cs229-notes2.pdf

在GDA中,特征向量x是连续的实数向量。现在让我们来谈谈一种不同的学习算法,其中是离散值的。

对于我们的引入示例,考虑使用机器学习构建一个电子邮件垃圾邮件过滤器。在这里,我们希望根据是否是垃圾邮件,或非垃圾电子邮件进行分类。在学习了这一点之后,我们就可以让我们的邮件阅读器自动过滤掉垃圾邮件,或者将它们放在一个单独的邮件文件夹中。电子邮件分类是一个更广泛的问题集,称为文本分类的一个例子。

假设我们有一个训练集(一组被标记为垃圾邮件或非垃圾邮件的电子邮件的集合)。我们将通过指定用于表示电子邮件的特性来开始构建垃圾邮件过滤器。

我们将通过一个特征向量表示电子邮件,其长度等于词典中的单词数。具体来说,如果电子邮件包含字典的第一个单词,那么我们将设置=1;否则,让=0。例如,向量

机器学习(十八)——朴素贝叶斯(Naive Bayes)_第1张图片

用于表示包含“a”和“Buy”字样的电子邮件,但不包含“aardvark”、“aardWolf”或“zygmurgy”。这些编码到特征向量中的单词集合被称为词汇表,所以x的维数等于词汇表的大小。

在选择了特征向量之后,我们现在想要建立一个判别模型。所以,我们必须对p(x|y)建模。但如果我们有一个50000字的词汇表,那么x∈{0,1}^50000(x是0和1的50000维向量),如果我们在2个50000个可能的结果上用多项式分布明确地表示X,那么我们将得到一个(2^50000-1)维参数向量。这显然是太多的参数。

为了对p(x|y)建模,因此,我们将作出非常有力的假设。我们将假设在给定y的情况下是条件独立的。这种假设称为朴素贝叶斯(NB)假设,由此产生的算法称为朴素贝叶斯分类器。例如,如果y=1代表垃圾邮件;“Buy”是单词2087,“price”是单词39831;那么我们假设,如果我告诉你y=1(一封特定的电子邮件是垃圾邮件),那么的信息(关于消息中是否出现“Buy”的信息)将不会对关于值(是否出现“价格”)产生任何影响。更正式地说,这可以写成

我们现在有

机器学习(十八)——朴素贝叶斯(Naive Bayes)_第2张图片

第一个等式是从概率的一般性质出发的,第二个等式采用NB假设。我们注意到,尽管朴素Bayes假设是一个非常强的假设,但所得到的算法在许多问题上都能很好地工作。

我们的模型是由参数化的。像往常一样,给定训练集,我们可以写下数据的联合似然率:


对于给出了极大似然估计:

机器学习(十八)——朴素贝叶斯(Naive Bayes)_第3张图片

在上面的方程式中,“∧”符号的意思是“and”。这些参数具有非常自然的解释。例如,只是垃圾邮件(y=1)中出现单词j的一部分。

在对所有这些参数进行拟合之后,为了对一个新的具有特征x的例子进行预测,我们简单地计算了一下。

机器学习(十八)——朴素贝叶斯(Naive Bayes)_第4张图片

选择具有较高后验概率的类别。

最后,我们注意到,虽然我们主要针对特征是二进制值的问题开发了朴素贝叶斯算法,但是对于可以在直接取值。在这里,我们将简单地将建模为多项式,而不是作为Bernoulli。事实上,即使有些原始的输入属性(例如,像我们前面的例子那样,房子的生活区)是连续的,很常见的是将它离散化——也就是说,把它变成一个小的离散值集合-并应用朴素贝叶斯。例如,如果我们使用某些特性来表示生活区,我们可以将连续值离散如下:


因此,对于居住面积为890平方英尺的房子,我们会将相应的特征值设为到3。然后我们应用朴素贝叶斯算法,如前面所描述的,用多项式分布对建模。当原始的连续值属性不能很好地用多元正态分布建模时,离散特征和使用朴素贝叶斯(而不是gda)往往会产生更好的分类器。

你可能感兴趣的:(machine,learning,machine,learning)