逻辑回归模型

2019-09-29  本文已影响0人  噗嗤噗哩噗通

逻辑回归推导公式(最大似然方法推导):

设计sigmoid函数 逻辑回归最大似然定义

通过最大似然得到的。y的取值为0,1;则认为这是一个伯努力的分布,也称为两点的分布,则公式表示如下:


image.png image.png

上图少了一个log


image.png

逻辑回归与softmax回归的关系:
可以认为 对于y|x;θ 逻辑回归是一个两点的分布,而 softmax是一个多项式的分布。利用广义线性模型可得到softmax的表示。

逻辑回归推导公式(这是和神经网络类似的,利用成本函数推导):

基本的概念:(x表示为向量,带上标^的y表示预测值,没有的为实际值)
第一步:线性映射:z=w^Tx+b
第二步:非线性映射:\hat y=\sigma (z), sigma公式为:\sigma (z)=\frac {1}{1+e^-z}
第三步:定义损失函数:这个是人为定义的,感觉目的是为了梯度求导比较好计算

定义代价函数.png
构建代价函数.png

L(y,\hat y) =-[ylog \hat y+(1-y)log(1- \hat y)]
第四步:代价函数,所有样本的所有数据
\begin{equation}\begin{split} L(w,b)&=\frac1m\sum_{r=1}^m L(y^{(i)},\hat y^{(i)} ) \\ & =-\frac1m\sum_{r=1}^m [y^{(i)}log \hat y^{(i)}+(1-y^{(i)})log(1- \hat y^{(i)})] \end{split}\end{equation}

第五步:对sigma函数求导,在用链式法则,先对z求导,在对w求导:
\begin{equation}\begin{split} dz&=\frac {e^-z}{(1+e^-z)^2} \\ & =\sigma (z)(1-\sigma (z)) \end{split}\end{equation}
第六步:以w为例:

\begin{equation}\begin{split} w_{j+1}&=w_j+\alpha(\frac {dL}{dw}) \\ &=w_j+\alpha(\frac {dL}{d\hat y}\frac {d\hat y}{dz}\frac {dz}{dw}) \\ & =w_j+\alpha((\frac {y}{\hat y} - \frac {1-y}{1-\hat y})\sigma (z)(1-\sigma (z))x)\\ & =w_j+\alpha((\frac {y}{\hat y} - \frac {1-y}{1-\hat y})\hat y(1-\hat y)x)\\ & =w_j+\alpha((y-\hat y)x) \end{split}\end{equation}

最终的最优化求解为:
\left \{ \begin{array}{c} w_{j+1}=w_j+\alpha((y-\hat y)x) \\ b_{j+1}=b_j+\alpha(y-\hat y) \end{array} \right.

python实现

1. numpy直接写的实现方式:

参照的机器学习那本书,由于梯度的筛选中出现了时间复杂度较高的问题,于是做了一个随机优化,我理解为不是一个向量进去计算,而是按照随机顺序一个个把x_i输入,调整w和b的取值。
python实现与随机梯度优化

python实现2:防止删除文章

2. sklearn实现方式

衍生:

在研究sklearn的逻辑回归算法的时候,在这里只介绍了用定义的损失函数来做梯度下降计算,梯度的逻辑对应sklearn里面的sag,之后看要不要再总结一张最优化算法的页面。

上一篇下一篇

猜你喜欢

热点阅读