1 min read

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


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


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

In particular \(x_i|y\) is now a multinomial, rather than a Bernoulli distribution.

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

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

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

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

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

下面可以解释下模型。


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

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

假设训练集, \(\{x^{(i)},y^{(i)};i=1,\cdots,m\}\)\(m\)封邮件。 \(x^{(i)}=(x_1^{(i)},\cdots,x_{n_i}^{(i)})\),第\(m\)封邮件中每个word的情况。


\[P(x;y)=(\prod_{i=1}^nP(x_i|y))\cdot P(y)\]

\(x\)是一组向量。 \(y\)是一个向量,表示\(0\)不是垃圾邮件,\(1\)是垃圾邮件。 然后,假设参数, \(\phi_{k|y=1}=P(x_j=k|y=1)\)\(\phi_{k|y=0}=P(x_j=k|y=0)\)\(\phi_y=P(y)\)


并且

\[\phi_{k|y=1}= \frac{ \sum_{i=1}^m (\mathcal I\{y^{(i)}=1\} \sum_{j=1}^{n_i} \mathcal I\{x_j^{(i)}=k\} ) }{ \sum_{i=1}^m ( \mathcal I\{y^{(i)}=1\} \cdot n_i ) }\]

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

因为不用\(i\)样本,\(n_i\)不用,因此

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

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

\[\sum_{i=1}^m (\mathcal I\{y^{(i)}=1\} \sum_{j=1}^{n_i} \mathcal I\{x_j^{(i)}=k\}\]

衡量了在conditional\(y=1\)后,所有的可能性的count。

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

\[\phi_{k|y=1}= \frac{ \sum_{i=1}^m (\mathcal I\{y^{(i)}=1\} \sum_{j=1}^{n_i} \mathcal I\{x_j^{(i)}=k\} )+1 }{ \sum_{i=1}^m ( \mathcal I\{y^{(i)}=1\} \cdot n_i )+50000 }\]


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