logistic regression 逻辑回归

时间:2021-10-21 23:39:51

数学推导

对于二分类问题 y{0,1} ,对于分类边界线进行拟合操作

  1. 样本集(m,n) 即m个样本,每个样本的维度为n
  2. 边界线拟合直线 y=w0x0+w1x1+...+wnxn=wTx ,其中,w是系数向量,x是某个样本
  3. 将Sigmoid函数 g(z)=11+ez 作用于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(1ui)1yi

似然函数为
L=i=1muiyi(1ui)1yi

对数似然 log likelihood 为
logL=i=1myilogui+(1yi)log(1ui)

考虑最大似然估计的方法,最优的参数w使得对数似然最大,因此对 logL 针对w求导,令导数为0,即可求得 logL 取得极值时候的最优的w。但是,这里的w是维度很大的向量,采用最大似然估计无法得到解析解,因此,考虑使用梯度上升法。

g(z)z=g(z)(1g(z))

uiw=g(wTxi)w=xi

logLw=i=1myi1uiuiw+(1yi)11ui(1)uiw

因为 ui=g(zi)=g(wTxi) ,则上式可以转换为

[

logLw=i=1myi1g(zi)g(zi)ziziw+(1yi)11g(zi)(1)g(zi)ziziw=i=1myi1g(zi)g(zi)(1g(zi))xi+(1yi)11g(zi)(1)g(zi)(1g(zi))xi=i=1myi(1g(zi))xi+(yi1)g(zi)xi=i=1m[yig(zi)]xi
]

上式结果即为对数似然相对于w的梯度,接下来可以采用梯度上升或者随机梯度上升的方法来求解最优的w。

代码实现

注意:
样本量少时,适合采用梯度上升法
样本量很大时,适合采用随机梯度上升法

代码实现请参考:https://github.com/sarahzhouUestc/machine-learning-algorithms/tree/master/logisticRegression