逻辑回归算法分析

本文深入探讨了逻辑回归的基本概念,包括sigmoid函数的定义及性质,如何利用逻辑回归解决二分类问题,以及通过极大似然估计进行参数优化的方法。文章详细解析了训练过程中的梯度上升法,并提供了迭代训练的伪代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    逻辑回归可以解决分类问题,属于监督学习。

一、sigmoid函数

    定义:σ(x)=11+e−x,  xϵR\sigma(x) = \frac{1}{1 + e^{-x}}, \ \ x \epsilon \mathbb{R}σ(x)=1+ex1,  xϵR,其值范围为(0, 1),函数图形如下图所示:
            在这里插入图片描述

    sigmoid函数有以下的性质:

    1、σ′(x)=σ(x)[1−σ(x)]\sigma'(x) = \sigma(x)[1 - \sigma(x)]σ(x)=σ(x)[1σ(x)]

    2、σ(x)+σ(−x)=1\sigma(x) + \sigma(-x) = 1σ(x)+σ(x)=1

    3、[logσ(x)]′=σ′(x)σ(x)=1−σ(x)[log\sigma(x)]' = \frac{\sigma'(x)}{\sigma(x)} = 1 - \sigma(x)[logσ(x)]=σ(x)σ(x)=1σ(x)

    4、[log(1−σ(x))]′=−σ′(x)1−σ(x)=−σ(x)[log(1 - \sigma(x))]' = \frac{-\sigma'(x)}{1 - \sigma(x)} = - \sigma(x)[log(1σ(x))]=1σ(x)σ(x)=σ(x)


二、二分类

    设X={x1,x2,⋯ ,xn}X=\left \{ x_1, x_2, \cdots, x_n \right \}X={x1,x2,,xn},可以把XXX理解成某种对象,x1,x2,⋯ ,xnx_1, x_2, \cdots, x_nx1,x2,,xn是对象的特征。

    引入分类向量θ={θ1,θ2,⋯ ,θn}\theta=\left \{ \theta_1, \theta_2, \cdots, \theta_n \right \}θ={θ1,θ2,,θn}

    定义:σ(X∣θ)=11+e−XTθ\sigma(X|\theta) = \frac{1}{1 + e^{-X^T\theta}}σ(Xθ)=1+eXTθ1,在给定θ\thetaθ时,σ\sigmaσ函数可以将XXX映射到(0,1)之间,如果将σ(x)&gt;0.5\sigma(x) &gt; 0.5σ(x)>0.5视为正类,σ(x)&lt;0.5\sigma(x) &lt; 0.5σ(x)<0.5视为负类,则可以将sigmoid函数用于解决分类问题。

    在σ(X∣θ)\sigma(X|\theta)σ(Xθ)函数中,有一个θ\thetaθ参数,如果已知这个参数,那么该函数可以用于分类。但如果只有数据集{x1,x2,⋯&ThinSpace;,xn}\left \{ x_1, x_2, \cdots, x_n \right \}{x1,x2,,xn},并已经数据集的分类标签{y1,y2,⋯&ThinSpace;,yn}\left \{ y_1, y_2, \cdots, y_n \right \}{y1,y2,,yn},那么怎样得到参数θ\thetaθ呢?这就是训练问题了。


三、逻辑回归训练

    给定样本集X={x1,x2,⋯&ThinSpace;,xn}X = \left \{ x_1, x_2, \cdots, x_n \right \}X={x1,x2,,xn}和样本对应的分类标签{y1,y2,⋯&ThinSpace;,yn},yiϵ{0,1}\left \{ y_1, y_2, \cdots, y_n \right \}, y_i \epsilon \left \{ 0, 1 \right \}{y1,y2,,yn},yiϵ{0,1},怎样从样本集中训练得到θ\thetaθ参数呢?

    定义:
        极大似然函数∏xϵXp(y∣x,θ)\prod_{x \epsilon X}p(y|x, \theta)xϵXp(yx,θ),将其取对数后得到:

        极大对数似然函数£=∑xϵXlog p(y∣x,θ)\pounds = \sum_{x \epsilon X} log \ p(y|x, \theta)£=xϵXlog p(yx,θ)

        条件概率p(y∣x,θ)={σ(xTθ),  y=11−σ(xTθ),y=0p(y|x, \theta) = \left\{\begin{matrix}\sigma (x^T \theta), \quad \quad \ \ y = 1 &amp; \\ &amp; \\ 1 - \sigma (x^T \theta), \quad y = 0 &amp; \end{matrix}\right.p(yx,θ)=σ(xTθ),  y=11σ(xTθ),y=0

    怎么理解上面的极大似然呢?考虑到分类的目的,最理想的结果是:分类器将样本集分成两类,一类包含全部的正类,一类包含全部的负类。但由于样本集存在噪声,这种理想结果是不可能达到的,在这种情况下,分类器的最优结果是:将更多的真实的正类样本标记为正类,将更多的真实的负类样本标记为负类。

    所以在优化的过程中,采用梯度上升法,对θ\thetaθ进行优化,让∏xϵXp(y∣x,θ)\prod_{x \epsilon X}p(y|x, \theta)xϵXp(yx,θ)到达极大值。

    将p(y∣x,θ)p(y|x, \theta)p(yx,θ)写成整体得:p(y∣x,θ)=[σ(xTθ)]y⋅[1−σ(xTθ)]1−yp(y|x, \theta) = [\sigma (x^T \theta)]^{y} \cdot [1 - \sigma (x^T \theta)]^{1 - y}p(yx,θ)=[σ(xTθ)]y[1σ(xTθ)]1y,代入对数似然函数得:

    £=∑xϵXlog p(y∣x,θ)\pounds = \sum_{x \epsilon X} log \ p(y|x, \theta)£=xϵXlog p(yx,θ)

       =∑xϵXlog [σ(xTθ)]y⋅[1−σ(xTθ)]1−y=\sum_{x \epsilon X} log \ [\sigma (x^T \theta)]^{y} \cdot [1 - \sigma (x^T \theta)]^{1 - y}=xϵXlog [σ(xTθ)]y[1σ(xTθ)]1y

       =∑xϵX{y⋅log⁡[σ(xTθ)]+[1−y]⋅log[1−σ(xTθ)]}=\sum_{x \epsilon X}\left \{ y \cdot \log [\sigma (x^T \theta)] + [1 - y] \cdot log [1 - \sigma (x^T \theta)] \right \}=xϵX{ylog[σ(xTθ)]+[1y]log[1σ(xTθ)]}

    函数中只有一个参数θ\thetaθ£\pounds£关于θ\thetaθ的梯度:

        ∂£∂θ=∂∂θ{y⋅log[σ(xTθ)]+[1−y]⋅log[1−σ(xTθ)]}\frac{\partial \pounds}{\partial \theta} = \frac{\partial }{\partial \theta}\left \{ y \cdot log [\sigma (x^T \theta)] + [1 - y] \cdot log [1 - \sigma (x^T \theta)] \right \}θ£=θ{ylog[σ(xTθ)]+[1y]log[1σ(xTθ)]}

            =y⋅[1−σ(xTθ)]x−[1−y]⋅[σ(xTθ)]x= y \cdot [1 - \sigma (x^T \theta)] x - [1 - y] \cdot [\sigma (x^T \theta)] x=y[1σ(xTθ)]x[1y][σ(xTθ)]x

            ={y⋅[1−σ(xTθ)]−[1−y]⋅[σ(xTθ)]}x= \left \{ y \cdot [1 - \sigma (x^T \theta)] - [1 - y] \cdot [\sigma (x^T \theta)] \right \}x={y[1σ(xTθ)][1y][σ(xTθ)]}x

            =[y−σ(xTθ)]x= [ y - \sigma (x^T \theta) ]x=[yσ(xTθ)]x

    按梯度上升法,θ\thetaθ的更新可写为:

        θ := θ+η[y−σ(xTθ)]x\theta \ := \ \theta + \eta [y - \sigma (x^T \theta) ] xθ := θ+η[yσ(xTθ)]x

    在机器学习中η\etaη为学习率。

    在给定样本集{X:Y}={(x1:y1), (x2:y2),⋯&ThinSpace;,(xn:yn)}\left \{X:Y \right \} = \left \{ (x_1:y_1), \ (x_2:y_2), \cdots, (x_n:y_n) \right \}{X:Y}={(x1:y1), (x2:y2),,(xn:yn)}训练伪代码如下:

    FOR(x:y)=(x1:y1):(xn:yn)DOFOR \quad (x:y) = (x_1:y_1):(x_n:y_n) \quad DOFOR(x:y)=(x1:y1):(xn:yn)DO
     {
         y~=σ(xTθ)\tilde{y} = \sigma(x^T\theta)y~=σ(xTθ)

         e=η[y−y~]xe = \eta [y - \tilde{y}]xe=η[yy~]x

         θ:=θ+e\theta := \theta + eθ:=θ+e
     }

    即迭代训练样本集中的每一个样本,对其进行一次二分类,将分类的误差更新到θ\thetaθ上,当迭代完成时,θ\thetaθ达到最优。

    当得到参数θ\thetaθ后,便可以将其运用于分类了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值