梯度下降法实现Logistic回归

参考简书中Logistic回归及Python代码实现

Logistic函数的损失函数的偏导数为$\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x_i)-y_i)x_i^j$,所以$\theta$的更新可以写为:$\theta_j=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x_i)-y_i)x_i^j$,推导过程中使用了最大似然估计,具体过程见原文

推导过程如下:

1)Logistic函数如下

$$g(z)=\frac{1}{1+e^{-z}}$$

其中

$$z={\theta }_{0}{x }_{0}+{\theta }_{1}{x }_{1}+...+{\theta }_{n}{x }_{n}$$

向量表示为

$$Z={\Theta}^{T}X$$

2)目标函数变形

预测函数为

$$h_\theta(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}$$

函数$h_\theta(x)$的值有特殊的含义,它表示结果取1的概率,因此,对于输入x分类结果为类别1和类别0的概率分别为:

$$P(y=1|x;\theta)=h_\theta(x)\\ P(y=0|x;\theta)=1-h_\theta(x)$$

将以上两个式子合起来写为
$$P(y|x;\theta)=(h_\theta(x))^y(1-h_\theta(x))^{1-y}$$

3)取似然函数

$$L(\theta)=\prod_{i=1}^mP(y_i|x_i;\theta)=\prod_{i=1}^m(h_\theta(x_i))^{y_i}(1-h_\theta(x_i))^{1-y_i}$$

这是一组观测值的概率,取对数为

$$l(\theta)=\log L(\theta)=\sum_{i=1}^m(y_i\log h_\theta(x_i)+(1-y_i)\log (1-h\theta(x_i)))$$

最大似然估计就是求使$l(\theta)$最大时,$\theta$的值。设计函数$J(\theta)$如下

$$J(\theta)=-\frac{1}{m}l(\theta)$$

因为乘了一个负系数$-\frac{1}{m}$,所以$J(\theta)$最小时的$\theta$是最佳参数,最终函数为

$$J(\theta)=-\frac{1}{m}[\sum_{i=1}^m(y_i\log h_\theta(x_i)+(1-y_i)\log (1-h\theta(x_i)))]$$

 4)$\theta$更新

设置学习率为$\alpha$后,$\theta$的更新为

$$\theta_j=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta)$$

求偏导过程如下

$$\frac{\partial}{\partial\theta_j}J(\theta)=-\frac{1}{m}\sum_{i=1}{m}()$$ 

 

 

posted @ 2019-08-01 22:18  hi_heisen  阅读(533)  评论(0编辑  收藏  举报