逻辑回归算法原理及用于解决多分类问题

逻辑回归算法又叫做对数几率回归,作为一种分类算法,在统计学中属于广义的线性模型。实际上逻辑回归是通过对数几率函数将线性函数的结果进行mapping,这样一来目标函数的取值空间就发生了如下的变化:
(−∞,+∞)映射到(0,1)(-\infty,+\infty)映射到(0,1) (−∞,+∞)映射到(0,1)
这样一来,逻辑回归就可以用来处理分类问题。

一、逻辑回归的基本原理

在训练时,线性回归模型在整个实数域上对于异常数据点的敏感性一致,所以用于分类效果较差。对于二分类任务,逻辑回归的输出标记如下:
y∈{0,1}y\in\{0,1\} y∈{0,1}
而线性回归的预测值是实值,如下:
y=θTxy=\theta^{T}x y=θTx
因此我们就需要一个特定的函数将实值映射为0/1。

直接的想法就是使用单位阶跃函数,这样一来:预测值大于零就为正例;预测值小于零就为负例;如若预测值为临界值则可以任意判别。但是这样是有问题的:单位阶跃函数不连续而且不光滑,或者说不可导,故而无法进行求解。

那么我们就看中了对数几率函数(S函数),或者说对数概率函数。两者参见下图:



图一为单位阶跃函数的数学表达式,图二为单位阶跃函数和对数几率函数的图像。

线性回归模型:
y=WTx+by=W^{T}x+b y=WTx+b
对数线性回归:
lny=WTx+blny=W^{T}x+b lny=WTx+b
它实际上实在试图达到如下目标:
让eWTx+b逼近y。这里依旧是线性回归,但实际上已经在求取输入空间到输出空间的非线性函数映射。让e^{W^{T}x+b}逼近y。这里依旧是线性回归,但实际上已经在求取输入空间到输出空间的非线性函数映射。 让eWTx+b逼近y。这里依旧是线性回归,但实际上已经在求取输入空间到输出空间的非线性函数映射。

这里的取对数的作用是:将线性回归魔心过的预测值与真实标记联系起来。

推广:考虑单调可谓函数g(.)令:
y=g−1(WTx+b)y=g^{-1}(W^{T}x+b) y=g−1(WTx+b)
对数几率函数(Sigmoid函数)表达式:
y=11+e−zy=\cfrac{1}{1+e^{-z}} y=1+e−z1​
带入到上述推广之中,得到:
y=11+e−(WTx+b)y=\cfrac{1}{1+e^{-(W^{T}x+b)}} y=1+e−(WTx+b)1​
两边取对数求解得到:
lny1−y=WTx+bln\cfrac{y}{1-y}=W^{T}x+b ln1−yy​=WTx+b

其中,P(Y=1∣X)=11+e−(WTx+b)其中,P(Y=1\vert{X})=\cfrac{1}{1+e^{-(W^{T}x+b)}} 其中,P(Y=1∣X)=1+e−(WTx+b)1​

P(Y=0∣X)=11+e(WTx+b)P(Y=0\vert{X})=\cfrac{1}{1+e^{(W^{T}x+b)}} P(Y=0∣X)=1+e(WTx+b)1​

在这里,x∈Rn是输入,Y∈{0,1}是输出,WT是参数,b为截距。逻辑回归在分类的时候,根据给定在这里,x\in{R^n}是输入,Y\in\{0,1\}是输出,W^T是参数,b为截距。逻辑回归在分类的时候,根据给定 在这里,x∈Rn是输入,Y∈{0,1}是输出,WT是参数,b为截距。逻辑回归在分类的时候,根据给定

的输入,分别计算P(Y=1∣X)和P(Y=0∣X),根据概率大小,将实例进行分类到概率值较大的一类。的输入,分别计算P(Y=1\vert{X})和P(Y=0\vert{X}),根据概率大小,将实例进行分类到概率值较大的一类。 的输入,分别计算P(Y=1∣X)和P(Y=0∣X),根据概率大小,将实例进行分类到概率值较大的一类。

二、使用梯度下降法对逻辑回归进行求解

记hw=11+e−(WTx+b),构造最大似然概率如下:记h_{w}=\cfrac{1}{1+e^{-(W^{T}x+b)}},构造最大似然概率如下: 记hw​=1+e−(WTx+b)1​,构造最大似然概率如下:

ℓ(w,b)=∏i=1mp(yi∣xi;w,b)=∏i=1m(hw(x))y(1−hw(x))1−y\ell(w,b)=\prod_{i=1}^{m}p(y_i\vert{x_i};w,b)=\prod_{i=1}^{m}(h_w(x))^{y}(1-h_w(x))^{1-y} ℓ(w,b)=i=1∏m​p(yi​∣xi​;w,b)=i=1∏m​(hw​(x))y(1−hw​(x))1−y

上式为累乘形式,取对数以转化为累加形式便于求导操作,同时转化为求最小值问题:因此有下式:
ℓ(w,b)=−1m∑i=1m[yilnhw(xi)+(1−yi)ln(1−hw(xi))]\ell(w,b)=-\cfrac{1}{m}\sum_{i=1}^{m}[y_ilnh_w(x_i)+(1-y_i)ln(1-h_w(x_i))] ℓ(w,b)=−m1​i=1∑m​[yi​lnhw​(xi​)+(1−yi​)ln(1−hw​(xi​))]
使用梯度下降法求解:
wj+1=wj−α∂ℓ(w,b)∂(w)=wj−α1m∑i=1mxi[hw(xi)−yi]w_{j+1}=w_j-\alpha\cfrac{\partial\ell(w,b)}{\partial(w)}=w_j-\alpha\cfrac{1}{m}\sum_{i=1}^{m}x_i[h_w(x_i)-y_i] wj+1​=wj​−α∂(w)∂ℓ(w,b)​=wj​−αm1​i=1∑m​xi​[hw​(xi​)−yi​]

简写为:∂ℓ∂w=1mxi(hw(xi)−yi)和∂ℓ∂b=1m∑i=1m(hw(xi)−yi)简写为:\cfrac{\partial{\ell}}{\partial{w}}=\cfrac{1}{m}x_i(h_w(x_i)-y_i)和\cfrac{\partial{\ell}}{\partial{b}}=\cfrac{1}{m}\sum_{i=1}^{m}(h_w(x_i)-y_i) 简写为:∂w∂ℓ​=m1​xi​(hw​(xi​)−yi​)和∂b∂ℓ​=m1​i=1∑m​(hw​(xi​)−yi​)

三、逻辑回归解决多分类为题

逻辑回归分类器是线性分类器,可以方便的解决二分类问题,但也可以用于解决多分类问题。方案如下:

方案1:当存在样本可能属于多个标签的情况时,可以训练出k个二分类的逻辑回归分类器。第i个分类器用以区分每个样本是否可以归类为第i类,训练该分类器的时候,需要把标签重新整理为第i类标签非第i类标签两类。通过这样的方法,就解决了每个样本可能拥有多个标签的情况。

方案2:若每个样本只对应于一个标签,我们可以假设每个样本属于不同标签的概率服从几何分布,使用多项式逻辑回归(Softmax Regression)来进行分类。具体如下:
hθ(x)=[P(y=1|x;θ)⋮P(y=k|x;θ)]=1∑j=1kejTx[e1Tx⋮ekTx]h_\theta\left(x\right)=\left[\begin{matrix}P\left(y=1\middle|x;\theta\right)\\\vdots\\P\left(y=k\middle|x;\theta\right)\\\end{matrix}\right]=\frac{1}{\sum_{j=1}^{k}{e_j^Tx}}\left[\begin{matrix}e_1^Tx\\\vdots\\e_k^Tx\\\end{matrix}\right] hθ​(x)=⎣⎢⎡​P(y=1∣x;θ)⋮P(y=k∣x;θ)​⎦⎥⎤​=∑j=1k​ejT​x1​⎣⎢⎡​e1T​x⋮ekT​x​⎦⎥⎤​

其中,θ1,θ2,…,θk∈Rn为模型的参数,而1∑j=1keθjTx可以看作是对概率的归一化。为了方便起见:其中,\theta_1,\theta_2,\ldots,\theta_k\in\mathbb{R}^n为模型的参数,而\frac{1}{\sum_{j=1}^{k}e^{\theta_j^Tx}}可以看作是对概率的归一化。为了方便起见: 其中,θ1​,θ2​,…,θk​∈Rn为模型的参数,而∑j=1k​eθjT​x1​可以看作是对概率的归一化。为了方便起见:

将θ1,θ2,…,θk这k个列向量按顺序排列成n×k维的矩阵,写成θ表示整个参数集。一般来说,多项式逻辑将\theta_1,\theta_2,\ldots,\theta_k这k个列向量按顺序排列成n\times{k}维的矩阵,写成\theta表示整个参数集。一般来说,多项式逻辑 将θ1​,θ2​,…,θk​这k个列向量按顺序排列成n×k维的矩阵,写成θ表示整个参数集。一般来说,多项式逻辑

回归具有参数冗余的特点,即将θ1,θ2,…,θk同时加减一个向量后预测结果不变。特别的,当类别数为2时,回归具有参数冗余的特点,即将\theta_1,\theta_2,\ldots,\theta_k同时加减一个向量后预测结果不变。特别的,当类别数为2时, 回归具有参数冗余的特点,即将θ1​,θ2​,…,θk​同时加减一个向量后预测结果不变。特别的,当类别数为2时,

hθ(x)=1eθ1Tx+eθ2Tx[eθ1Txeθ1Tx]h_\theta\left(x\right)=\frac{1}{e^{\theta_1^Tx}+e^{\theta_2^Tx}}\left[\begin{matrix}e^{\theta_1^Tx}\\e^{\theta_1^Tx}\\\end{matrix}\right] hθ​(x)=eθ1T​x+eθ2T​x1​[eθ1T​xeθ1T​x​]

利用参数冗余的特点,将所有参数减去θ1,上式变成了如下形式,利用参数冗余的特点,将所有参数减去\theta_1,上式变成了如下形式, 利用参数冗余的特点,将所有参数减去θ1​,上式变成了如下形式,

hθ(x)=1e0∙x+e(θ2T−θ1T)x[e0∙xe(θ2T−θ1T)x]=[11+eθTx1−11+eθTx]h_\theta\left(x\right)=\frac{1}{e^{0\bullet{x}}+e^{\left(\theta_2^T-\theta_1^T\right)x}}\left[\begin{matrix}e^{0\bullet{x}}\\e^{\left(\theta_2^T-\theta_1^T\right)x}\\\end{matrix}\right]=\left[\begin{matrix}\frac{1}{1+e^{\theta^Tx}}\\1-\frac{1}{1+e^{\theta^Tx}}\\\end{matrix}\right] hθ​(x)=e0∙x+e(θ2T​−θ1T​)x1​[e0∙xe(θ2T​−θ1T​)x​]=[1+eθTx1​1−1+eθTx1​​]

其中,θ=θ2−θ1。其中,\theta=\theta_2-\theta_1。 其中,θ=θ2​−θ1​。

发现整理之后的式子与逻辑回归一致,因此多项式逻辑回归实际上时二分类逻辑回归在多标签分类下的一种拓展。

逻辑回归算法原理及用于解决多分类问题相关推荐

  1. 逻辑回归算法实现鸢尾花数据集的二分类

    1.介绍 前言   为了更好的理解本章内容,请参考下面的网址,自主学习一些矩阵求导运算. https://zhuanlan.zhihu.com/p/158182135机器学习约定规则: 向量对标量求导 ...

  2. 逻辑回归算法原理简介

    1,逻辑回归简介 逻辑回归完成分类任务,是经典的二分类算法(也可以解决多分类问题),机器学习算法一般选择先逻辑回归(优先选择)再用复杂的,逻辑回归的决策边界可以是非线性的(高阶).可以通过参数对结果进 ...

  3. 逻辑回归算法原理解读

    1.线性回归和逻辑回归的区别 线性回归是处理回归问题,而逻辑回归是处理分类问题,这是两者最本质的区别 2.逻辑回归的原理,损失函数,参数更新方式 线性回归的公式: ,此时Y和X是线性关系 逻辑回归则是 ...

  4. 机器学习-回归之逻辑回归算法原理及实战

    逻辑回归 简介 在一元回归和多元回归模型中,处理的因变量都是数值型区间变量,建立的模型描述的是因变量的期望与自变量之间的线性关系.然而,在实际的问题分析时,所研究的变量往往不全是区间变量而是顺序变量或 ...

  5. 逻辑回归算法python_逻辑回归算法原理和例子

    本课程讲解现在工业界和学术界流行的机器学习算法的相关知识,以及如何用python去实现这些算法.算法的讲解包括supervised learning(有监督式学习)和unsupervised lear ...

  6. 深度学习原理-----逻辑回归算法

    系列文章目录 深度学习原理-----线性回归+梯度下降法 深度学习原理-----逻辑回归算法 深度学习原理-----全连接神经网络 深度学习原理-----卷积神经网络 深度学习原理-----循环神经网 ...

  7. 机器学习笔记(10)——逻辑回归算法优化之随机梯度下降法

    在上一篇文章<机器学习笔记(9)--深入理解逻辑回归算法及其Python实现>中,详细学习了逻辑回归算法的分类原理和使用梯度下降法来最小化损失函数的数学推导过程,从而拟合出分类函数的参数θ ...

  8. Python使用逻辑回归算法根据三围数据判断用户性别

    逻辑回归算法是一种经典的分类算法,使用时应注意: 1)样本需要足够多. 2)样本的多个特征之间尽量不要存在线性相关性. 问题描述: 根据三围数据判断用户性别.假设男性和女性的三围和身高的计算公式如下: ...

  9. python实现逻辑回归算法_逻辑回归算法的实现

    前言 在之前的学习中,我们已经学习了逻辑回归算法的具体数学原理及其简单的推导过程,现在,我们可以用python实现逻辑回归的算法了. 环境 python3.6 jupyter-notebook 绘制数 ...

  10. 【机器学习入门】(9) 逻辑回归算法:原理、精确率、召回率、实例应用(癌症病例预测)附python完整代码和数据集

    各位同学好,今天我和大家分享一下python机器学习中的逻辑回归算法.内容主要有: (1) 算法原理:(2) 精确率和召回率:(3) 实例应用--癌症病例预测. 文末有数据集和python完整代码 1 ...

最新文章

  1. 【LeetCode | 二叉树前、中、后序遍历{迭代法}实现】
  2. HDU1716(全排列)
  3. 发现自己的代码写的越来越玄幻了
  4. vite打包编译后类名混淆冲突问题处理
  5. 透明轮播原生JavaScript实现
  6. VBS脚本恶作剧:关机+重启后自动关机
  7. 基于ARM9的视频采集传输系统
  8. 一分钟解决 Github 访问慢
  9. freecodecamp_freeCodeCamp的服务条款
  10. 台式电脑开机显示节电模式怎么办_台式电脑的开机密码忘记了怎么办?
  11. U890第二次开发的BOM表工具--自主知识产权
  12. 艺术名家|翰墨异彩“三分书”——访知名书法家蔡爱军
  13. 干部人事数字档案管理系统,实现从“纸件”到“指尖”的安全蜕变
  14. Linus ,扎克伯格,雷军等巨佬的办公桌
  15. 16版.订阅报刊杂志-答案代码(Java)
  16. UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in position 0: invalid start byte解决办法
  17. linux 清屏函数
  18. VMware 安装Ubuntu22.04
  19. wannier拟合能带总是拟合不上_科学网—Wannier90输入文件中num_wann, num_bands, 和energy window等参数设置规则 - 李云海的博文...
  20. 常州abb机器人编程_最新ABB机器人编程程序解析

热门文章

  1. Vscode——内置浏览器
  2. 如何为文件夹添加图标
  3. 利用云计算来实现业务转型呢,有五个步骤可以遵循
  4. 28部漫威电影按漫威时间全梳理
  5. 【2023王道数据结构】【树与二叉树】通过C++实现中序遍历的非递归算法(手动入出栈)C、C++完整实现(可直接运行
  6. ZYF loves binary(dp)
  7. Word文档中页眉页脚怎么设置
  8. 在linux平台上如何修改hostid
  9. 123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
  10. @click.native.prevent