从概率模型到逻辑分类

我今天来推导一下根据 概率模型 来推导一下分类的问题。

题目的大概就是,我们抽取一个样本,然后去判断这个样本应该属于哪个分类。

首先大概的复习一下跟概率论相关的知识概率论的一些基础知识

我们把问题限定为两个类别的分类。即我们有一个\(C_1\)\(C_2\)分类。然后抽取一个样本\(X_i\),去判断\(X_i\)应该属于哪个分类。用概率的公式来描述我们的问题
\(P(C_?|X_i)\) 换言之 \(P(C_1|X_i)=1-P(C_2|X_i)\) 那么我们只要求出其中一个概率即可。

根据贝叶斯公式,我们可知 \(P(C_1|X_i) = \frac{P(X_i|C_1)*P(C_1)}{P(X_i|C_1) * P(C_1) + P(X_i|C_2)*P(C_2)}\)

我们对公式进行一些简单的变换:分子和分母同除以分子可以得到 \(P(C_1|X_i)=\frac{1}{1+\frac{P(X_i|C_2)*P(C_2)}{P(X_i|C_1)*P(C_1)}}\)

我们设:\(Z=ln(\frac{P(X_i|C_1)P(C_1)}{P(X_i|C_2)P(C_2)})\)得到了\(P(C_1|X_i)=\frac{1}{1+exp(-Z)}\)

我们进一步对Z进行变换:\(Z=ln\frac{P(X_i|C_1)}{P(X_i|C_2)} + ln\frac{P(C_1)}{P(C_2)}\)

\(\frac{P(C_1)}{P(C_2)}\) 我们得到的办法主要是查学习样本的数量,\(C_1\)的数量为\(N_1\),\(C_2\)的数量为\(N_2\),从而得到

\[\frac{P(C_1)}{P(C_2)}= \frac{\frac{N_1}{N_1+N_2}}{\frac{N_2}{N_1+N_2}}=\frac{N_1}{N_2} \]

带入Z中可以得到$$Z=ln\frac{P(X_i|C_1)}{P(X_i|C_1)}+ ln\frac{N_1}{N_2}$$

我们假定我们的样本是符合高斯(正态)分布的,高斯分布的概率密度公式如下

\[f(x)=\frac{1}{\sqrt{2\pi}\sigma} exp(\frac{(x-u)^2}{2\sigma^2}) \]

即:

\[P(X_i|C_1) = \frac{1}{\sqrt{2\pi}\sigma_1} exp(\frac{(x_i-u_1)^2}{2\sigma_1^2}) \]

\[P(X_i|C_2) = \frac{1}{\sqrt{2\pi}\sigma_2} exp(\frac{(x_i-u_2)^2}{2\sigma_2^2}) \]

带入以后,我们得到原式子简化以后

\[Z=ln\frac{\frac{1}{\sigma_1}}{\frac{1}{\sigma_2}} + ln\frac{exp(\frac{(x_i-u_1)^2}{2\sigma_1^2})}{exp(\frac{(x_i-u_2)^2}{2\sigma_2^2})}+ln\frac{N_1}{N_2} \]

进一步简化

\[Z=ln\frac{\sigma_2}{\sigma_1} + \frac{(x-u_1)^2}{2\sigma_1^2} + \frac{(x-u_2)^2}{2\sigma_2^2}+ln\frac{N_1}{N_2} \]

我们假定两个分类的高斯分布的方差是相等的,即\(\sigma_1==\sigma_2==\sigma\) 得到

\[Z=\frac{-2U_1X+2U_2X+U_1^2-U_2^2}{2\sigma^2}+ln\frac{N_1}{N_2}=\frac{U_2-U_1}{\Sigma^2}X + \frac{U_1^2-U_2^2}{2\sigma^2}+ln\frac{N_1}{N_2} \]

我们得知U和\(\sigma\)都是根据样本统计得到,我们并不关系他们具体的数值,所以我们可以假设\(W=\frac{U_2-U_1}{\Sigma^2}\)\(b=\frac{U_1^2-U_2^2}{2\sigma^2}+ln\frac{N_1}{N_2}\)

我们可以得到$$Z=Wx+b$$

所以我们的机器学习如果我们利用极大似然函数,求得样本的均值和方差,我们就可以根据特征分布来估计一个样本是否属于一个分类,通过变化,我们完全可以不去计算样本的均值和方差,只需要找到合适的W和B,我们一样可以判断样本属于的分类。

我们只需要找到一个合适的评估函数,去评估我们找到的W和b是否合适。然后不断的去测试我们找到的W和b即可。而我们要找的这个函数如下:

\[loss=-[yln\hat{y}+(1-y)ln(1-\hat{y})] \]

至于为什么选择这样的损失函数呢?吴恩达老师在机器学习的课程中大概提了下,可以分成两种情况,去分别计算

\[loss= \begin{cases} -ln\hat{y} \quad y=1 \\ -ln(1-\hat{y}) \quad y=0 \end{cases} \]

把这两个式子整合成一个就得到了上述的损失函数,我们不适用\(loss=(y-\hat{y})^2\)作为损失函数呢?吴恩达老师大概解释是因为他在逻辑回归中不是凸函数,没法进行很好的梯度下降。李宏毅老师的课程中详细进行了分析。

具体的分析如下:加入我们选择了\(loss=(y-\hat{y})^2\)作为损失函数,我们在求梯度下降的时候,需要求得该函数的导数

\(\frac{dloss}{dw}=2(y-\hat{y})\hat{y}(1-\hat{y})*X\)

当我们得到的输出为0或者1时候,不管label是0还是1,得到的导数都是0,梯度就无法下降。这个是根本你的原因。

posted @ 2019-09-16 15:58  bbird2018  阅读(890)  评论(0编辑  收藏  举报