1 min read

吴恩达 机器学习导论 生成学习算法 学习笔记

主要讲了GDA和NB。 还有laplace smoothing。 感觉三个模型都不是特别难啊。


Gaussian Discriminant Analysis.

之前讲了广义线性模型、牛顿的算法。

之前说的都是discriminant algorithm。 学习\(P(Y|X)\)或者 output\(h_{\theta}(x) \in \{0,1\}\)


generative learning algorithm.

\(P(x|y), P(y)\) 看特征的情况。 根据bayes,

\[P(y=1|x) = \frac{P(x|y=1)P(y=1)}{P(x)}\]

并且 \(P(x) = P(y=0)P(x)+P(y=1)P(x)\)


举例。

Gaussian Discriminant Analysis.

多元高斯分布。

P(x|y) is Gaussian Distribution.

\[z \sim \mathcal N(\vec \mu,\Sigma) \]

\(\Sigma\)是协方差矩阵。

\[p(x;\mu,\Sigma)= \frac{1}{(2\pi)^{n/2}|\Sigma|^{1/2}}\exp(-\frac{1}{2}(x-u)^T\Sigma^{-1}(x-u))\]

\(\Box\)不是很懂这个公式,但是实际上正态分布函数是不需要算的。 这里可以看讲义。

注意这里就是做\(P(x|y=1)\)\(P(x|y=0)\)的二元高斯分布的投影,然后求交点连线。


定义式

\[P(y) = \phi^y(1-\phi)^{1-y}\] 并且,

\[P(x|y=0)= \frac{1}{(2\pi)^{n/2}|\Sigma|^{1/2}}\exp(-\frac{1}{2}(x-u_0)^T\Sigma^{-1}(x-u_0))\]

\[P(x|y=1)= \frac{1}{(2\pi)^{n/2}|\Sigma|^{1/2}}\exp(-\frac{1}{2}(x-u_1)^T\Sigma^{-1}(x-u_1))\]

实际上我不太懂这里又不是\(P(\epsilon)\)处于大事件,\(\to0\),为什么要\(\max \prod P(x^{(i)},y^{(i)})\). 就是另外一种算法而已。

然而,逻辑回归是 \(\max \prod P(y^{(i)}|x^{(i)})\)

就是这样,没说谁好。


它和logistic 的关系到底是什么样的?

假设点是正样本。

GDA是logistic,因为有更严格的假设。

所以这个计算是通过bayes出来的, 图中计算出,\(P(x|y=1),P(y=1)\) 然后,\(P(x) = P(x|y=1)P(y=1)+P(x|y=0)P(y=0)\)。 哈哈,原来是这样。 就得到了\(P(y|x)\)


这个多假设的条件是, \(x|y \sim \mathcal N\) \(\to\) \(P(y=1|x)\)是一个logistic函数。 但是不能反着来。

\(x|y=1 \sim \mathcal Possion(\lambda_1)\)\(x|y=0 \sim \mathcal Possion(\lambda_0)\) \(\to\) \(P(y=1|x)\)是一个logistic函数。

所以这又是个参数方程的锅啊。

但是呢,显然GDA不需要太多的数据,因为假设强啊。


第二个就是 Naive Bayes。 也是 generative learning algorithm. 为什么要说,因为GDA要求\(x\)都是连续变量。 但是NB可以是离散的。

\(y=1\)是垃圾邮件。

假设我们有个字典,按顺序,如果邮件中存在这个词,位于第\(i\)行,\(x_i=1\)否则\(x_i=0\)。 因此,\(x \in \{0,1\}^n\)。 也就是说\(x\)\(2^n\)种可能性。 因此每个\(x_i \sim \mathcal B\),那么就要联立那么多,显然是不可能的,要估计\(2^n-1\)个参数。

给一个强假设。 \(x_i|y\)条件独立。 \[\begin{alignat}{2} P(x_1,\cdots,x_n|y)& =P(x_1|y)P(x_2|y,x_1)\cdots P(x_n|y,x_1,\cdots,x_{n-1}) \\ & = P(x_1|y)P(x_2|y) \cdots P(x_n|y)\\ \end{alignat}\]

\(P(x_2|y,x_1) = P(x_2|y)\)说明,\(x_1\)不影响\(x_2\)。 虽然强到错,但是还是很有效。

假设一些参数,

\[\begin{alignat}{2} \phi_{i|y=1} &= p(x_i=1|y=1) \\ &=\frac{\sum_{i=1}^m\mathcal I\{x_j^{(i)}=1,y^{(i)}=1\}}{\sum_{i=1}^m\mathcal I\{y^{(i)}=1\}}\\ \end{alignat}\]

\[\phi_{i|y=0} = p(x_i=1|y=0)\]

\[\begin{alignat}{2} \phi_y&= p(y=1) \\ &=\frac{\sum_{i=1}^m\mathcal \{y^{(i)}=1\}}{m} \\ \end{alignat}\]

\[p(y|x)\gets p(x|y)p(y)\]

这个模型的假设,只在joint distribution上。


朴素贝叶斯这样写更容易理解,

\[p(y=1|x) = \frac{p(x|y=1)p(y=1)}{p(x|y=1)p(y=1)+p(x|y=0)p(y=0)}\]

但是\(p(x|y) = 0\)也就是说\(x\)对于\(y\)这个事件没有出现过,那么就出现了,

\[p(y=1|x) = \frac{0 \cdot p(y=1)}{0}\]

因此要修正。

就是laplace smoothing

laplace smoothing

\[P(y=1) = \frac{n_1+1}{n_1+1+n_0+1}\]

这样的话,即使训练组中,\(n_1=0\),也保留了一点可能性,预测\(y=1\)

一般地,

\[P(y=j)=\frac{\sum_{j=1}^m \mathcal I\{y^{(i)}=j\}+1}{m+k}\]


\[\begin{alignat}{2} \phi_{i|y=1} &= p(x_i=1|y=1) \\ &=\frac{\sum_{i=1}^m\mathcal I\{x_j^{(i)}=1,y^{(i)}=1\}+1}{\sum_{i=1}^m\mathcal I\{y^{(i)}=1\}+2}\\ \end{alignat}\]