逻辑回归的总结(详细步骤)

2023-11-16

什么是逻辑回归?

逻辑回归虽然名字中带有回归,但是并不是一个回归模型,而是一个分类模型。逻辑回归的目的就是解决分类问题,最常用的就是解决二分类问题。

逻辑回归和线性回归的关系

逻辑回归(Logistic Regression)与线性回归(Linear Regression)都是一种广义线性模型(generalized linear model)。逻辑回归假设因变量 y 服从伯努利分布,而线性回归假设因变量 y 服从高斯分布。 因此与线性回归有很多相同之处,去除Sigmoid映射函数的话,逻辑回归算法就是一个线性回归。可以说,逻辑回归是以线性回归为理论支持的,但是逻辑回归通过Sigmoid函数引入了非线性因素,因此可以轻松处理0/1分类问题。
这广义线性模型家族中的模型形式基本上都差不多,不同的就是因变量不同。

  • 如果是连续的,就是多重线性回归;
  • 如果是二项分布,就是逻辑回归;
  • 如果是Poisson分布,就是Poisson回归;
  • 如果是负二项分布,就是负二项回归;

逻辑回归问题解决的常规步骤

1.寻找一个合适的预测函数,一般是h函数(即hypothesis函数)。这个函数就是我们要找分类函数,用来预测输入数据的判断结果。这个过程很重要,需要对数据有一定的了解和分析,知道或猜测函数大概的形式,比如说是线性函数还是非线性函数。
2.构造一个Cost函数(即损失函数),该函数用来表示预测函数(h)与训练数据类别(y)之间的偏差,可以将二者之间的差(h-y)或者差平方 ( h − y ) 2 (h-y)^2 hy2或者其他的形式。综合考虑所有的训练数据的“损失”,将Cost求和或者求平均,记为 J ( θ ) J(\theta) J(θ)函数,表示所有的训练数据预测值与实际类别的偏差。
3.想办法使得 J ( θ ) J(\theta) J(θ)最小并且求得最佳参数 J ( θ ) J(\theta) J(θ)函数的值越小,表示预测函数越准确(即h函数越准确),所以要找到 J ( θ ) J(\theta) Jθ函数的最小值。找函数的最小值有不同的方法,这里使用的是梯度下降法(Gradient Descent)。

具体过程

1.寻找h函数

逻辑回归是一个分类方法,用于解决分类问题,常用于解决二分类问题,即输出类别有两种。在这里,我们要选用Sigmoid函数即: g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1简单解释下逻辑回归模型为什么要用Sigmoid函数。
从指数族分布讲起,指数族分布 (The exponential family distribution),区别于指数分布(exponential distribution)。在概率统计中,若某概率分布满足下式,我们就称之属于指数族分布。
p ( y ; η ) = b ( y ) e x p ( η T T ( y ) − a ( η ) ) p(y;η)=b(y)exp(η^{T}T(y)−a(η)) p(y;η)=b(y)exp(ηTT(y)a(η))
其中η是natural parameter, T(y)是充分统计量, exp−a(η))是起到归一化作用。 确定了T,a,b,我们就可以确定某个参数为η的指数族分布.
统计中很多熟悉的概率分布都是指数族分布的特定形式,如伯努利分布,高斯分布,多项分布(multionmal), 泊松分布等。下面介绍其中的伯努利分布。
伯努利分布
p ( y ; ϕ ) = ϕ y ( 1 − ϕ ) 1 − y p(y;ϕ)=ϕ^y(1−ϕ)^{1−y} p(y;ϕ)=ϕy(1ϕ)1y
= e x p [ y l o g ϕ + ( 1 − y ) l o g ( 1 − ϕ ) ] =exp[ylogϕ+(1−y)log(1−ϕ)] =exp[ylogϕ+(1y)log(1ϕ)]
= e x p [ y l o g ϕ 1 − ϕ + l o g ( 1 − ϕ ) ] =exp[ylog\frac{ϕ}{1−ϕ}+log(1−ϕ)] =exp[ylog1ϕϕ+log(1ϕ)]

把伯努利分布可以写成指数族分布的形式,且
T ( y ) = y T(y)=y T(y)=y
η = l o g ϕ 1 − ϕ η=log\frac{ϕ}{1−ϕ} η=log1ϕϕ
a ( η ) = − l o g ( 1 − ϕ ) = l o g ( 1 + e η ) a(η)=−log(1−ϕ)=log(1+e^η) a(η)=log(1ϕ)=log(1+eη)
b ( y ) = 1 b(y)=1 b(y)=1

同时我们可以看到 ϕ = 1 1 + e − η ϕ=\frac{1}{1+e{−η}} ϕ=1+eη1 就是logistic sigmoid的形式。
具体的解释,可以看这篇文章 logistics 为什么用sigmoid函数.
接下来需要确定数据划分的边界,对于图1和图2的两种数据分布,显然图1需要一个线性的边界,而图2需要一个非线性的边界。所以接下来我们只讨论线性边界。
线性边界

图1

非线性边界

图2

对于线性边界的情况,边界形式如下: θ 0 + θ 1 x 1 + . . . . + θ n x n = ∑ i = 0 n θ i x i = θ T x \theta_0+\theta_1x_1+....+\theta_nx_n =\sum_{i=0}^n\theta_ix_i =\theta ^Tx θ0+θ1x1+....+θnxn=i=0nθixi=θTx构造预测函数为: h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x h_\theta(x)=g(\theta^Tx)=\frac {1}{1+e^{-\theta ^Tx}} hθ(x)=g(θTx)=1+eθTx1
h θ ( x ) h_\theta(x) hθ(x)函数的值有特殊的含义,它表示结果取1的概率,因此对于输入x的分类结果为类别1和类别0的概率分别为:
P ( y = 1 ∣ x ; θ ) = h θ ( x ) P(y=1|x;\theta)=h_\theta(x) P(y=1x;θ)=hθ(x)
P ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) P(y=0|x;\theta)=1-h_\theta(x) P(y=0x;θ)=1hθ(x)

2.构造Cost函数

我们知道损失函数分为0-1损失,平方损失,绝对损失和对数似然损失(对数损失)。
在这里我们采用对数似然损失。当然,损失函数都是人为选择的,选择什么损失函数都行。但是如果这里用最小二乘法作为损失函数的话,函数曲线是非凸的,不利于求解参数。而对数似然函数作为损失函数的话,曲线是凸的,方便求解。
根据对数似然损失函数,有:
C o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) i f y = 1 − l o g ( 1 − h θ ( x ) ) i f y = 0 Cost(h_\theta(x),y) = \begin {cases} -log(h_\theta(x)) & {if y=1} \\ -log(1-h_\theta(x)) &{if y=0} \end {cases} Cost(hθ(x),y)={log(hθ(x))log(1hθ(x))ify=1ify=0
根据伯努利分布,有 p ( y ∣ x ; θ ) = h θ ( x ) y ( 1 − h θ ( x ) ) 1 − y p(y|x;\theta)=h_\theta(x)^y(1-h_\theta(x))^{1-y} p(yx;θ)=hθ(x)y(1hθ(x))1y
取似然函数:
L ( θ ) = ∏ i = 1 m p ( y i ∣ x i ; θ ) = ∏ i = 1 m h θ ( x i ) y i ( 1 − h θ ( x i ) ) 1 − y i L(\theta)=\prod_{i=1}^m p(y^i|x^i;\theta)=\prod_{i=1}^mh_\theta(x^i)^{y^i}(1-h_\theta(x^i))^{1-y^i} L(θ)=i=1mp(yixi;θ)=i=1mhθ(xi)yi(1hθ(xi))1yi
对数似然函数:
l ( θ ) = l o g L ( θ ) = ∑ i = 1 m [ y i l o g ( h θ ( x i ) ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) ] l(\theta)=logL(\theta)=\sum_{i=1}^m[y^ilog(h_\theta(x^i))+(1-y^i)log(1-h_\theta(x^i))] l(θ)=logL(θ)=i=1m[yilog(hθ(xi))+(1yi)log(1hθ(xi))]
最大似然估计就是要求 l ( θ ) 取 最 大 值 时 的 θ l(\theta)取最大值时的\theta l(θ)θ,故将 J ( θ ) = − 1 m l ( θ ) J(\theta)=-\frac{1}{m}l(\theta) J(θ)=m1l(θ),即
J ( θ ) = − 1 m ∑ i = 1 m [ y i l o g ( h θ ( x i ) ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) ] J(\theta)=-\frac{1}{m}\sum_{i=1}^m[y^ilog(h_\theta(x^i))+(1-y^i)log(1-h_\theta(x^i))] J(θ)=m1i=1m[yilog(hθ(xi))+(1yi)log(1hθ(xi))]
所以 J ( θ ) 取 最 小 值 时 的 θ 为 要 求 的 最 佳 参 数 J(\theta)取最小值时的\theta为要求的最佳参数 J(θ)θ

3.梯度下降法求 J ( θ ) J(\theta) J(θ)的最小值

求参优化也有不同的方法如梯度下降法,拟牛顿法等方法可以使用,在这里我们用梯度下降法。
梯度下降公式如下:
θ j : = θ j − α δ δ θ j J θ , ( j = 0 , 1 , 2 , . . . . , n ) \theta_j:=\theta_j-\alpha\frac{\delta}{\delta\theta_j}J\theta,(j=0,1,2,....,n) θj:=θjαδθjδJθ,(j=0,1,2,....,n)式子中 α 为 学 习 步 长 \alpha为学习步长 α,下面来求偏导:
求偏导的公式步骤
上面求解过程中用到的公式有:
在这里插入图片描述
因此,梯度下降公式可以更新为:
在这里插入图片描述

【参考文献】
  1. [Stanford机器学习公开课](https://www.coursera.org/course/ml)
  2. https://blog.csdn.net/xiaoxiangzi222/article/details/55097570
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

逻辑回归的总结(详细步骤) 的相关文章

随机推荐

  • 解决Mac安装LightGBM报错LightGBM and gcc 8 in MacOS: Library not loaded

    Github Issue上有一个解决方法 但是博主失败了 https github com Microsoft LightGBM issues 1369 以下是我的解决方法 博主解决方法 首先卸载 pip uninstall lightgb
  • 帝国CMS微信小程序服务器端接口API

    帝国CMS微信小程序服务器端接口API 100个左右接口详细请看 https www guiboweb com wxapi html 使用说明 使用示例 demo 安全验证 security 新闻模型 新闻列表与搜索 list 新闻内容 a
  • QT 设置窗口阴影,设置窗口圆角

    QT开发过程中 添加过自定义标题栏后 因为设置了 setWindowFlags Qt FramelessWindowHint 属性 widget界面后面阴影没有了 现在使用paint的方法绘制阴影和窗口圆角 一方面能设置阴影 一方面可解决设
  • 【java基础】包装类,自动装箱和自动拆箱

    文章目录 基本介绍 包装类 自动装箱 自动拆箱 包装类注意事项 包装类比较 包装器内容不可变 基本介绍 有时 需要将int这样的基本类型转换为对象 所有的基本类型都有一个与之对应的类 例如 Integer类对应基本类型int 通常 这些类称
  • python数据挖掘分析案例python_吴裕雄 数据挖掘与分析案例实战(4)——python数据处理工具:Pandas...

    导入模块 import pandas as pd import numpy as np 构造序列 gdp1 pd Series 2 8 3 01 8 99 8 59 5 18 print gdp1 取出gdp1中的第一 第四和第五个元素 p
  • verilog 四舍五入_IEEE 754 round-to-nearest-even Verilog代码

    IEEE 754 round to nearest even IEEE 754浮点数标准里面 对于取整的规定 浮点数的舍入任何有效数上的运算结果 通常都存放在较长的暂存器中 当结果被放回浮点格式时 必须将多出来的位元丢弃 有多种方法可以用来
  • el-checkbox中使用indeterminate 状态

    indeterminate 属性用以表示 checkbox 的不确定状态 一般用于实现全选的效果
  • 数学建模列题整理2

    微分方程组的数值模拟 例 某湖泊中有机物新城代谢系统模型的状态方程组 时间 t 是以年为单位 Xs 表示 t 时刻太阳提供的能量 Xp 表示 t 时刻植物生长的数 量 Xh 表示吞食植物的虫类生成数量 Xr 为 t 时刻食虫植物的生长数量
  • 9宫格for循环

    9宫格for循环 总数 NSUInteger totalCount 9 总列数 NSUInteger columnMaxCount 6 总行数 NSUInteger row totalCount columnMaxCount totalCo
  • 解决'webpack-dev-server --inline --progress --config build/webpack.dev.conf.js'

    我的报错 webpack dev server inline progress config build webpack dev conf js 报错截图 解决方法 1 在终端运行指令 npm install webpack dev ser
  • 解决vue图片不刷新问题:浏览器缓存与缓存控制头的终极对决

    在现代Web开发中 许多开发者都曾经遇到过一个令人困扰的问题 当图片URL没有变化但图片内容却发生了变化时 浏览器似乎不会主动刷新图片 从而导致显示旧的内容 这个问题在网站和应用中的图片更新时尤为突出 可能会影响用户体验和页面正确性 在这篇
  • Sourcetree的分支创建与合并

    一 Sourcetree简单介绍 通过Git可以进行对项目的版本管理 但是如果直接使用Git的软件会比较麻烦 因为是通过一条一条命令进行操作的 Sourcetree则可以与Git结合 提供图形界面 使用会方便很多 Git和Sourcetre
  • IDM 6.4.1逆向分析笔记

    环境准备 安装过程不做说明 1 x64dbg 官网地址 https x64dbg com 2 火绒剑 官网地址 https www huorong cn SPY 下载地址 https github com westoncampbell Sp
  • 小程序全局接口文件中限制loading动画在指定页面不显示

    默认加载动画是这样 我这里使用的方法是获取到指定页面的实例对象 然后对他页面地址进行判断 当不是指定页面时才去执行全局的加载动画 先把接口暴露出去 测试接口 var baseURL https aaa bbb cn api 预发布接口 va
  • ftp连接:读取目录列表失败

    本文转载自 http blog csdn net lgm252008 article details 7691182 连接的错误提示 状态 连接建立 等待欢迎消息 返回 220 vsFTPd 2 0 1 命令 USER xiaozhuren
  • 聊一聊会话编程

    HttpSession接口中常用方法 会话的创建 销毁的方法 会话与请求的区别 什么是会话 客户端向服务器发送请求 服务器端接收请求并生成响应返回客户端 客户端对服务器端这样一次连续的调用过程 被称为会话 seccion 登陆访问控制 某些
  • 如何在linux服务器部署sonar服务?

    文章目录 前言 一 上传sonar插件 二 设置sonar插件的权限 三 启动插件 四 配置环境变量 前言 sonar服务是代码质量扫描的工具 我们如何利用sonar进行代码质量扫描还有在linux服务器上部署呢 下面这篇文章详细的记录了我
  • 【Python基础知识整理】

    一 Python的基本信息 1 Python的起源 Python的创始人是吉多 范罗苏姆 Python的创作过程 吉多对于Python的定位 2 Python的基本工作机制 一个用编译性语言比如C或C 写的程序可以从源文件 即C或C 语言
  • SVN 解决冲突

    版本冲突原因 假设 A B 两个用户都在版本号为 100 的时候 更新了 kingtuns txt 这个文件 A 用户在修改完成之后提交 kingtuns txt 到服务器 这个时候提交成功 这个时候 kingtuns txt 文件的版本号
  • 逻辑回归的总结(详细步骤)

    什么是逻辑回归 逻辑回归虽然名字中带有回归 但是并不是一个回归模型 而是一个分类模型 逻辑回归的目的就是解决分类问题 最常用的就是解决二分类问题 逻辑回归和线性回归的关系 逻辑回归 Logistic Regression 与线性回归 Lin