• 梯度下降法实现Logistic回归


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

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

    推导过程如下:

    1)Logistic函数如下

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

    其中

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

    向量表示为

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

    2)目标函数变形

    预测函数为

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

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

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

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

    3)取似然函数

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

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

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

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

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

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

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

     4)$ heta$更新

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

    $$ heta_j= heta_j-alphafrac{partial}{partial heta_j}J( heta)$$

    求偏导过程如下

    $$frac{partial}{partial heta_j}J( heta)=-frac{1}{m}sum_{i=1}{m}()$$ 

     
  • 相关阅读:
    一个网络扫描程序
    ASCII
    一个linux下c++程序
    VC数字图像处理编程
    人际关系的55个绝招
    一些函数
    【转】Vim命令合集以及乱码问题解决
    【转】PHP程序员的技术成长规划
    【转】Nginx 服务器安装及配置文件详解
    【转】PHP网站常见安全漏洞,及相应防范措施总结
  • 原文地址:https://www.cnblogs.com/guesswhy/p/11285753.html
Copyright © 2020-2023  润新知