我今天来推导一下根据 概率模型 来推导一下分类的问题.
题目的大概就是, 我们抽取一个样本, 然后去判断这个样本应该属于哪个分类.
首先大概的复习一下跟概率论相关的知识概率论的一些基础知识
我们把问题限定为两个类别的分类. 即我们有一个 \(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, 梯度就无法下降. 这个是根本你的原因.
来源: https://www.cnblogs.com/bbird/p/11527763.html