数学推导
对于二分类问题
y∈{0,1}
,对于分类边界线进行拟合操作
- 样本集(m,n) 即m个样本,每个样本的维度为n
- 边界线拟合直线
y=w0x0+w1x1+...+wnxn=wTx
,其中,w是系数向量,x是某个样本
- 将Sigmoid函数
g(z)=11+e−z
作用于y,得到的结果介于(0,1)之间,并且g(z)是单调增函数,当z=0时,g(z)=0.5
令
ui=g(wTxi)=p(yi=1|xi)
, 其中
xi
是样本集中的第i个样本,
yi
是该样本的类别,该式表示将
g(wTxi)
作为
xi
类别为1的概率,那么
p(xi)=uiyi(1−ui)1−yi
似然函数为
L=∏i=1muiyi(1−ui)1−yi
对数似然 log likelihood 为
logL=∑i=1myilogui+(1−yi)log(1−ui)
考虑最大似然估计的方法,最优的参数w使得对数似然最大,因此对
logL
针对w求导,令导数为0,即可求得
logL
取得极值时候的最优的w。但是,这里的w是维度很大的向量,采用最大似然估计无法得到解析解,因此,考虑使用梯度上升法。
∂g(z)∂z=g(z)(1−g(z))
∂ui∂w=∂g(wTxi)∂w=xi
∂logL∂w=∑i=1myi∗1ui∗∂ui∂w+(1−yi)∗11−ui∗(−1)∗∂ui∂w
因为
ui=g(zi)=g(wTxi)
,则上式可以转换为
[
∂logL∂w=∑i=1myi∗1g(zi)∗∂g(zi)∂zi∗∂zi∂w+(1−yi)∗11−g(zi)∗(−1)∗∂g(zi)∂zi∗∂zi∂w=∑i=1myi∗1g(zi)∗g(zi)∗(1−g(zi))∗xi+(1−yi)∗11−g(zi)∗(−1)∗g(zi)(1−g(zi))∗xi=∑i=1myi∗(1−g(zi))∗xi+(yi−1)∗g(zi)∗xi=∑i=1m[yi−g(zi)]∗xi
]
上式结果即为对数似然相对于w的梯度,接下来可以采用梯度上升或者随机梯度上升的方法来求解最优的w。
代码实现
注意:
样本量少时,适合采用梯度上升法
样本量很大时,适合采用随机梯度上升法
代码实现请参考:https://github.com/sarahzhouUestc/machine-learning-algorithms/tree/master/logisticRegression