数学推导
对于二分类问题 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) ,则上式可以转换为
[
上式结果即为对数似然相对于w的梯度,接下来可以采用梯度上升或者随机梯度上升的方法来求解最优的w。
代码实现
注意:
样本量少时,适合采用梯度上升法
样本量很大时,适合采用随机梯度上升法
代码实现请参考:https://github.com/sarahzhouUestc/machine-learning-algorithms/tree/master/logisticRegression