从概率模型到逻辑分类
我今天来推导一下根据 概率模型 来推导一下分类的问题。
题目的大概就是,我们抽取一个样本,然后去判断这个样本应该属于哪个分类。
首先大概的复习一下跟概率论相关的知识概率论的一些基础知识
我们把问题限定为两个类别的分类。即我们有一个C1和C2分类。然后抽取一个样本Xi,去判断Xi应该属于哪个分类。用概率的公式来描述我们的问题
P(C?|Xi) 换言之 P(C1|Xi)=1−P(C2|Xi) 那么我们只要求出其中一个概率即可。
根据贝叶斯公式,我们可知 P(C1|Xi)=P(Xi|C1)∗P(C1)P(Xi|C1)∗P(C1)+P(Xi|C2)∗P(C2)
我们对公式进行一些简单的变换:分子和分母同除以分子可以得到 P(C1|Xi)=11+P(Xi|C2)∗P(C2)P(Xi|C1)∗P(C1)
我们设:Z=ln(P(Xi|C1)P(C1)P(Xi|C2)P(C2))得到了P(C1|Xi)=11+exp(−Z)
我们进一步对Z进行变换:Z=lnP(Xi|C1)P(Xi|C2)+lnP(C1)P(C2)
而P(C1)P(C2) 我们得到的办法主要是查学习样本的数量,C1的数量为N1,C2的数量为N2,从而得到
P(C1)P(C2)=N1N1+N2N2N1+N2=N1N2
带入Z中可以得到
Z=lnP(Xi|C1)P(Xi|C1)+lnN1N2
我们假定我们的样本是符合高斯(正态)分布的,高斯分布的概率密度公式如下
f(x)=12π−−√σexp((x−u)22σ2)
即:
P(Xi|C1)=12π−−√σ1exp((xi−u1)22σ21)
P(Xi|C2)=12π−−√σ2exp((xi−u2)22σ22)
带入以后,我们得到原式子简化以后
Z=ln1σ11σ2+lnexp((xi−u1)22σ21)exp((xi−u2)22σ22)+lnN1N2
进一步简化
Z=lnσ2σ1+(x−u1)22σ21+(x−u2)22σ22+lnN1N2
我们假定两个分类的高斯分布的方差是相等的,即σ1==σ2==σ 得到
Z=−2U1X+2U2X+U21−U222σ2+lnN1N2=U2−U1Σ2X+U21−U222σ2+lnN1N2
我们得知U和σ都是根据样本统计得到,我们并不关系他们具体的数值,所以我们可以假设W=U2−U1Σ2和 b=U21−U222σ2+lnN1N2
我们可以得到
Z=Wx+b
所以我们的机器学习如果我们利用极大似然函数,求得样本的均值和方差,我们就可以根据特征分布来估计一个样本是否属于一个分类,通过变化,我们完全可以不去计算样本的均值和方差,只需要找到合适的W和B,我们一样可以判断样本属于的分类。
我们只需要找到一个合适的评估函数,去评估我们找到的W和b是否合适。然后不断的去测试我们找到的W和b即可。而我们要找的这个函数如下:
loss=−[ylny^+(1−y)ln(1−y^)]
至于为什么选择这样的损失函数呢?吴恩达老师在机器学习的课程中大概提了下,可以分成两种情况,去分别计算
loss={−lny^y=1−ln(1−y^)y=0
把这两个式子整合成一个就得到了上述的损失函数,我们不适用loss=(y−y^)2作为损失函数呢?吴恩达老师大概解释是因为他在逻辑回归中不是凸函数,没法进行很好的梯度下降。李宏毅老师的课程中详细进行了分析。
具体的分析如下:加入我们选择了loss=(y−y^)2作为损失函数,我们在求梯度下降的时候,需要求得该函数的导数
dlossdw=2(y−y^)y^(1−y^)∗X
当我们得到的输出为0或者1时候,不管label是0还是1,得到的导数都是0,梯度就无法下降。这个是根本你的原因。https://www.cnblogs.com/bbird/p/11527763.html