1 min read

吴恩达 机器学习导论 朴素贝叶斯算法 学习笔记


学习这个视频的方法就是,其实笔记不多,重点是看懂视频,如果还有wrap up也好好听,有recap也好好看对比。 看下讲义, 最后写200行不到的笔记就够了, 重点是听懂。


Multivariate Bernoulli Event Model,这里的x都是0,1。 Multinomial Event Model, 这里的x可以是多种情况。

In particular xi|y is now a multinomial, rather than a Bernoulli distribution.

今天先看完这个第二种贝叶斯估计好了。 今天的课很难,看了三遍才看明白,并且这个也是不考虑词的位置的。

通俗来说, 这个第二个模型想考虑一个次的词频。 假设我们的训练组有m封邮件,每封邮件有n个次,那么我们有m×n种可能性,假设训练组里面所有的词我们的字典里面都有,假设字典是50000个词, 那么一共一个位置上的可能性有m×n×50000种。

但是细想n在不同训练组的邮件中是不一样的, 为了表达这种差异性, 假设i=1,,m表示第i封邮件。 因此ni表示第i封邮件的字数,j=1,,nj表示第i封邮件的第j个词位置。 如果这个词是字典上第35000个词,假设是apple,用I{xj(i)=apple}=True=1

然后注意看,这个模型考虑了字典上某个词的词频,因为I{xj(i)=apple}=True=1只是m×n众多情况中的一种, apple在其他位置满足了,也会=True=1,因此完成了表达词频的重要性。

词频很重要,比如<促销>这个词,出现一次和出现多次不能作为一个标志,因为出现多次后我们才能更相信这个是垃圾邮件,但是只出现一次,很可能是误操作,可以等同于0的情况。

下面可以解释下模型。


值得注意的地方,在第一个模型中,我们可以用onehot来达到词频的方法,并且如果是连续变量的概念,可以分类就好。但是这两种方法都没有考虑词的位置,这个之后才会介绍。

如果一个word有多频,可以onehot就好了,不是大问题。 虽然word之间不可能是完全独立,但是bayes的效果好,只能说明实践中, word间的关系不强,也可以出很好的效果。

假设训练集, {x(i),y(i);i=1,,m}m封邮件。 x(i)=(x1(i),,xni(i)),第m封邮件中每个word的情况。


P(x;y)=(i=1nP(xi|y))P(y)

x是一组向量。 y是一个向量,表示0不是垃圾邮件,1是垃圾邮件。 然后,假设参数, ϕk|y=1=P(xj=k|y=1)ϕk|y=0=P(xj=k|y=0)ϕy=P(y)


并且

ϕk|y=1=i=1m(I{y(i)=1}j=1niI{xj(i)=k})i=1m(I{y(i)=1}ni)

怎么理解这个公式? 很好理解,I{y(i)=1}是一种conditoal的概念,表达了P(...|y=1)

因为不用i样本,ni不用,因此

i=1m(I{y(i)=1}ni) 表达了所有可能性,每种可能性含有字典里面的每一种, 假设字典里面有50000个次,词编好了号,那么就有50000中可能性。

I{xj(i)=k}衡量了,一个可能性等于字典里面第k个词的情况, j=1niI{xj(i)=k}衡量了,第m封邮件,一共可能性的count。

i=1m(I{y(i)=1}j=1niI{xj(i)=k}

衡量了在conditionaly=1后,所有的可能性的count。

Laplace就是在分子加1,分母加50000。 因为laplace的修正就是在所有发生可能性的情况下,设置了下限为至少一种而已。

ϕk|y=1=i=1m(I{y(i)=1}j=1niI{xj(i)=k})+1i=1m(I{y(i)=1}ni)+50000


之后开始说非线性生成模型了。