zoukankan      html  css  js  c++  java
  • 机器学习入门(七)之----logistic回归(回归函数与概率模型)

    Toast to the ones here today,

    Toast to the ones we lost on the way。

    现在我们讨论分类问题。主要关注目标变量为0,1的二分类问题,1为正例,0为负例。目标变量在分类问题中又称为标签。

    logistic回归函数与概率模型

    我们用之前回归的方法来做分类最大的问题在于预测值小于0或者大于1都是无意义的。为此我们添加如下约束,将它限制在0到1之间,

    [egin{equation} h_{ heta}(x)=gleft( heta^{T} x ight)=frac{1}{1+e^{- heta^{T} x}} end{equation} ]

    [gleft( x_1 ight)=frac{1}{1+e^{- x_1}} ]

    其中称为logistic函数,或者sigmoid函数。函数长这样,

    对$gleft( x_1 ight) $ 不同选择会导致不同算法,以后我们会看到这个选择是非常自然的。关于这个函数的导数有如下性质,

    [egin{equation} egin{aligned} g^{prime}(z) &=frac{d}{d z} frac{1}{1+e^{-z}} \ &=frac{-1}{left(1+e^{-z} ight)^{2}}frac{d}{d z}left(e^{-z} ight) \ &=frac{1}{left(1+e^{-z} ight)^{2}}left(e^{-z} ight) \ &=frac{1}{left(1+e^{-z} ight)} cdotleft(1-frac{1}{left(1+e^{-z} ight)} ight) \ &=g(z)(1-g(z)) end{aligned} end{equation} ]

    现在有了logistic回归模型,怎样拟合他的参数呢?我们先给它一个概率模型,用最大似然法来拟合参数,假设给定$ x$ 标签满足二项分布,且输出0,1之间的值为标签为1的概率,则有,

    [egin{equation} egin{aligned} P(y=1 | x ; heta) &=h_{ heta}(x) \ P(y=0 | x ; heta) &=1-h_{ heta}(x) end{aligned} end{equation} ]

    即我们假设它的预测值是样本为正例的概率值。这两个等式子可以统一起来等价地,有,

    [egin{equation} p(y | x ; heta)=left(h_{ heta}(x) ight)^{y}left(1-h_{ heta}(x) ight)^{1-y} end{equation} ]

    对于一批独立样本,我们有,

    [egin{aligned} L( heta) &=p(vec{y} | X ; heta) \ &=prod_{i=1}^{n} pleft(y^{(i)} | x^{(i)} ; heta ight) \ &=prod_{i=1}^{n}left(h_{ heta}left(x^{(i)} ight) ight)^{y^{(i)}}left(1-h_{ heta}left(x^{(i)} ight) ight)^{1-y^{(i)}} end{aligned} ]

    老规矩,要最大化下式给出的对数似然函数,

    [egin{aligned} ell( heta) &=log L( heta) \ &=sum_{i=1}^{n} y^{(i)} log hleft(x^{(i)} ight)+left(1-y^{(i)} ight) log left(1-hleft(x^{(i)} ight) ight) end{aligned} ]

    logistic回归更新公式

    和求线性回归问题时用梯度下降最小化损失函数一样,我们在此用梯度上升最大化对数似然函数(因此是加号),

    [egin{equation} heta := heta+alpha abla_{ heta} ell( heta) end{equation} ]

    还是先只考虑一个样本$ (x,y)$ ,求梯度,

    [egin{equation} egin{aligned} frac{partial}{partial heta_{j}} ell( heta) &=left(y frac{1}{gleft( heta^{T} x ight)}-(1-y) frac{1}{1-gleft( heta^{T} x ight)} ight) frac{partial}{partial heta_{j}} gleft( heta^{T} x ight) \ &=left(y frac{1}{gleft( heta^{T} x ight)}-(1-y) frac{1}{1-gleft( heta^{T} x ight)} ight) gleft( heta^{T} x ight)left(1-gleft( heta^{T} x ight) ight) frac{partial}{partial heta_{j}} heta^{T} x \ &=left(yleft(1-gleft( heta^{T} x ight) ight)-(1-y) gleft( heta^{T} x ight) ight) x_{j} \ &=left(y-h_{ heta}(x) ight) x_{j} end{aligned} end{equation} ]

    第二个等式用到sigmoid函数导数性质。因此,有如下参数更新公式,

    [egin{equation} heta_j := heta_j+alpha left(y-h_{ heta}(x) ight) x_{j} end{equation} ]

    我们可以看到形式上更新公式和线性回归的一模一样。但这里要注意,假设函数是不同的两个函数。但这多少还是让人感到有些惊讶的。这到底是巧合,还是有更背后更深层的原因。我们在广义线性模型那里将会揭晓答案。

    img

    机器学

  • 相关阅读:
    Unity3D 中的灯光与渲染
    利用正态分布(高斯分布)绘制噪点图
    Unity3D 调用相机
    Unity3D开发安卓应用如何设置横屏显示和竖屏显示
    Unity3D中Excel表的读取与写入
    Unity3D启动外部程序并传递参数
    Unity动画系统Animator动态添加事件
    Unity3D编辑器扩展(六)——模态窗口
    Unity3D编辑器扩展(五)——常用特性(Attribute)以及Selection类
    Unity3D编辑器扩展(四)——扩展自己的组件
  • 原文地址:https://www.cnblogs.com/qizhien/p/11589124.html
Copyright © 2011-2022 走看看