美文网首页
3.2Logistic回归模型

3.2Logistic回归模型

作者: Yuanshuo | 来源:发表于2019-08-07 00:40 被阅读0次
    The core values of Chinese socialism

    逻辑回归的代价函数

    image
    image

    上图是之前线性回归问题时的代价函数,现将上图公式进行改写:

    Cost(h_{\theta}(x^{(i)}),y^{(i)})= \frac{1}{2}(h_{θ}(x^{(i)})-y^{(i)})^{2}

    在线性回归问题中,代价函数会被定义为以上形式,但在逻辑回归里,这个代价函数会变成参数 θ 的非凸函数。

    \begin{align*} h_{\theta}(x) = \frac{1}{1+e^{-\theta^{T}x}} \end{align*}

    h_{(θ)}(x)是非线性的,如果将这个值带入Cost函数,然后再求代价函数J(θ),会得到如下有多个局部最优的函数:

    image

    所以,另找一个是凸函数的代价函数使得能够方便的找到代价函数的全局最小值。

    因此对于逻辑回归的代价函数:

    image

    对应的函数的图形如下:

    y = 1时 y = 0时
    image image

    当假设函数和期望值越接近时,代价函数值越小,反之越大。

    简化代价函数以及梯度下降

    简化单个样本的代价函数Cost(h_{\theta}(x),y)

    逻辑回归代价函数

    对于单个样本的代价函数Cost(h_{\theta}(x),y),可以把 y = 1,y = 0的两种情况合二为一,写成统一的式子:

    Cost(h_{\theta}(x),y)=-ylog(h_{\theta}(x))-(1-y)log(1-h_{\theta}(x))

    拟合逻辑回归的参数θ

    image

    核心问题在于求解最小化代价函数:

    image

    对上图的偏导数项展开:

    image

    由于假设函数不同,实际上线性回归和逻辑回归的梯度下降是两个完全不同的东西。

    高级优化

    使用实例

    比如一个包含两个参数的问题:

    image

    对于上图中的代价函数,可以求得θ_1 = 5,θ_2 = 5时,J(θ)的值最小。

    如何使用octave程序计算θ_1θ_2

    function [jVal, gradient] = costFunction(theta)
    
    jVal = (theta(1)-5)^2 + (theta(2)-5)^2;
    
    gradient = zeros(2,1);
    gradient(1) = 2*(theta(1)-5);
    gradient(2) = 2*(theta(2)-5);
    

    上面这段代码定义了一个函数costFunction(theta),参数是一个theta向量,返回值是jValgradient

    接下来调用高级优化函数fminunc

    options = optimset('GradObj', 'on', 'MaxIter', '100');
    initialTheta = zeros(2,1);
    [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);
    

    fminunc表示Octave里无约束最小化函数,调用这个函数时,需要传入一个存有配置信息的变量options。上面的代码中,设置项中'GradObj', 'on',代表设置梯度目标参数为打开状态(on),这也意味着现在确实要给这个算法提供一个梯度。'MaxIter', '100'代表设置最大迭代次数为100次。initialTheta代表我们给出的一个𝜃的猜测初始值。

    然后调用fminunc这个函数,传入三个参数,其中第一个参数@costFunction这里的@符号代表指向之前定义的costFunction函数的指针。后面两个参数分别是定义的𝑡ℎ𝑒𝑡𝑎初始值和配置信息options

    当调用这个fminunc函数时,它会自动的从众多高级优化算法中挑选一个来使用。

    最终会得到三个返回值,分别是满足最小化代价函数𝐽(𝜃)的𝜃值optThetacostFunction中定义的jVal的值functionVal,以及标记是否已经收敛的状态值exitFlag,如果已收敛,标记为1,否则为0

    具体操作:
    首先在当前工作目录下创建costFunction.m脚本,写入costFunction函数:


    image

    然后在Octave终端下带入fminunc函数:

    image

    在逻辑回归中使用优化算法

    image

    相关文章

      网友评论

          本文标题:3.2Logistic回归模型

          本文链接:https://www.haomeiwen.com/subject/xhogdctx.html