机器学习之逻辑回归算法

article/2025/9/16 19:05:24

文章目录

  • 逻辑回归原理推导
  • 逻辑回归求解

逻辑回归(Logistic Regression)是机器学习中的一种分类模型,它是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。

看到回归二字,很多人可能会认为逻辑回归算法是线性回归算法的升级,还是属于回归任务吧?其实并不是这样的,逻辑回归本质上是一个经典的二分类问题,要做的任务性质发生了变化,也就是一个是否或者说0/1问题,有了线性回归的基础,只需稍作改变,就能完成分类任务。

由于逻辑回归算法的简单和高效,在实际中应用非常广泛,比如判断是否为垃圾邮件、是否患病、金融诈骗、虚假账号等等,看到这里,我们可以发现其中的特点,那就是都属于两个类别之间的判断。一句话:逻辑回归就是解决二分类问题的利器。

逻辑回归原理推导

先来回顾一下线性回归算法得到的结果:输入特征数据,输出一个具体的值,可以把输出值当作一 个得分值。此时如果想做一个分类任务,要判断一个输入数据是正例还是负例,就可以比较各自的得分值,如果正例的得分值高,那么就说明这个输入数据属于正例类别。

例如,在图5-9中分别计算当前输入属于猫和狗类别的得分值,通过其大小确定最终的分类结果。但是在分类任务中用数值来表示结果还是不太恰当,如果能把得分值转换成概率值,就变得容易理解。假设正例的概率值是0.02,那么负例就是1–0.02=0.98(见图5-10)。
在这里插入图片描述
那么如何得到这个概率值呢?先来介绍下Sigmoid函数,定义如下:
在这里插入图片描述

在Sigmoid函数中,自变量z可以取任意实数,其结果值域为[0,1],相当于输入一个任意大小的得分值,得到的结果都在[0,1]之间,恰好可以把它当作分类结果的概率值。
在这里插入图片描述

判断最终分类结果时,可以选择以0.5为阈值来进行正负例类别划分,例如输入数据所对应最终的结果为0.7,因0.7大于0.5,就归为正例。
将任意的输入映射到[0,1]区间,我们在线性回归中可以得到一个预测值,再将该值映射到Sigmoid 函数中,这样就完成了由值到概率的转换,也就是分类任务。

下面梳理一下计算流程,首先得到得分值,然后通过Sigmoid函数转换成概率值,公式如下:
在这里插入图片描述
这个公式与线性回归方程有点相似,仅仅多了Sigmoid函数这一项。x依旧是特征数据,θ依旧是每个 特征所对应的参数。下面对正例和负例情况分别进行分析。

在这里插入图片描述

逻辑回归求解

逻辑回归该如何进行求解呢?之前在推导线性回归的时候得出了目标函数,然后用梯度下降方法进行优化求解,这里貌似只多一项Sigmoid函数,求解的方式还是一样的。首先得到似然函数:
在这里插入图片描述

对上式两边取对数,进行化简,结果如下:
在这里插入图片描述

这里有一点区别,之前在最小二乘法中求的是极小值,自然用梯度下降,但是现在要求的目标却是极大值(极大似然估计),通常在机器学习优化中需要把上升问题转换成下降问题,只需取目标函数的相反数即可,此时应用梯度上升求最大值,引入
在这里插入图片描述

转换为梯度下降任务。

此时,只需求目标函数的极小值,按照梯度下降的方法,照样去求偏导:
在这里插入图片描述
上式直接给出了求偏导的结果,计算量其实并不大,但有几个角标容易弄混,这里再来强调一下, 下标i表示样本,也就是迭代过程中,选择的样本编号;下标j表示特征编号,也是参数编号,因为参数θ
和数据特征是一一对应的关系。观察可以发现,对 θ j θ_j θj求偏导,最后得到的结果也是乘以 x j x_j xj,这表示要对哪个参数进行更新,需要用其对应的特征数据,而与其他特征无关。

得到上面这个偏导数后,就可以对参数进行更新,公式如下:

在这里插入图片描述
这样就得到了在逻辑回归中每一个参数该如何进行更新,求解方法依旧是迭代优化的思想。找到最 合适的参数θ,任务也就完成了。

最后来总结一下逻辑回归的优点。

  1. 简单实用,在机器学习中并不是一味地选择复杂的算法,简单高效才是王道。
  2. 结果比较直观,参数值的意义可以理解,便于分析。
  3. 简单的模型,泛化能力更强,更通用。

基于以上优点,我们遇到分类问题都是先考虑逻辑回归算法,能解决问题根本不需要复杂的算法。往往简单的方法也能得到不错的结果,还能大大降低其过拟合风险,何乐而不为呢?

给时间一点时间,让过去过去,让开始开始。


http://chatgpt.dhexx.cn/article/UPdjA83q.shtml

相关文章

机器学习算法 之 逻辑回归算法

1 逻辑回归之第一次学习 本文内容主要转自两处: [1] 逻辑回归从入门到深入(logistic regression) 本文内容从Python 逻辑回归实际使用的角度出发,较为通俗易懂,感谢其作者的分享。 [2] 《百面机器学习》之逻辑回归 注意&#xf…

逻辑回归算法简介

逻辑回归算法:虽然名字中带有回归两个字,但它却不是回归算法,它是一个经典的二分类算法。 回归与分类的区别: 回归:可以得到一个准确值或一个区间值,比如房屋价格预测,NBA比赛得分等。 分类&am…

逻辑回归算法原理

回归与分类的不同在于其目标变量是否是连续的。分类是预测出一个标签,找到一条线或超平面去区分数据,输出是离散的、有限的。回归是预测出一个量,找到一条线去尽可能的拟合逼近这些数据,输出是连续的、无限的。 逻辑回归本质上是线…

机器学习算法--逻辑回归原理介绍

一、逻辑回归基本概念 1. 什么是逻辑回归 逻辑回归就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。 Logistic回归虽然名字里带“…

逻辑回归算法

逻辑回归算法-龙珠计划 一、逻辑回归算法原理 逻辑回归(Logistic Regression) 属于机器学习 — 监督学习 — 分类。 逻辑回归(Logistic Regression)主要解决二分类问题,用来表示某件事情发生的可能性。 逻辑回归本…

【机器学习】逻辑回归算法

逻辑回归算法 学习目标1. 逻辑回归的介绍1.1 逻辑回归的应用场景1.2 逻辑回归的原理1.2.1 输入1.2.2 激活函数 1.3 损失以及优化1.3.1 损失1.3.2 优化 1.4 小结 2. 逻辑回归api介绍3. 案例:癌症分类预测-良/恶性乳腺癌肿瘤预测3.1 背景介绍3.2 案例分析3…

java中字符流和字节流的区别_java中字节流和字符流有哪些区别

java中字节流和字符流的区别有:1、定义不同;2、结尾不同;3、处理方式不同;4、缓冲区不同;5、编码方式不同。字节流默认不使用缓冲区,而字符流使用缓冲区。字节流采用ASCII编码,字符流采用unicod…

JAVA--字节流和字符流区别

(一)功能区别 1、FileInputSteam和FileOutputStream可以完成所有格式文件的复制; 2、FileReader和FileWriter只能完成文本格式的复制,无法完成视频、音频等文件的复制; (二)区别原理 1、字节…

Java进阶(四十五)java 字节流与字符流的区别

字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区&a…

字节流与字符流的区别用字节流好还是用字符流好?

字节流: (A)FileOutputStream(File name) 创建一个文件输出流,向指定的 File 对象输出数据。 (B)FileOutputStream(FileDescriptor) 创建一个文件输出流,向指定的文件描述器输出数据。 (C)FileOutputStream(String name) 创建一个文件输出流&…

Java基础面试题 | 字节流和字符流有什么区别?

字节流按 8 位传输,以字节为单位输入输出数据,字符流按 16 位传输,以字符为单位输入输出数据。 但是不管文件读写还是网络发送接收,信息的最小存储单元都是字节。 java 字节流与字符流的区别_afa的专栏-CSDN博客_java中字节流和…

JAVA字节流和字符流的区别

之前在复习IO的时候,为了方便记忆,提到了以Stream结尾的为字节流,以Writer或者Reader结尾的为字符流。 除了在使用上的不一样,那究竟两者有什么区别呢。直接给出结论:字节流在操作时本身不会用到缓冲区(内…

字节流与字符流的区别及相互转换

转载:http://www.cnblogs.com/sjjsh/p/5269781.html 先来看一下流的概念: 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用…

字节流与字符流

字节流、字符流 主要内容 IO 流 字节流 字符流 异常处理 Properties 教学目标 能够说出IO流的分类和功能 能够使用字节输出流写出数据到文件能够使用字节输入流读取数据到程序 能够理解读取数据read(byte[])方法的原理能够使用字节流完成文件的复制 能够使用FileWirter…

Java字节流和字符流的区别?

字符流:就是在字节流的基础上,加上编码,形成的数据流 字符流出现的意义:因为字节流在操作字符时,可能会有中文导致的乱码,所以由字节流引申出了字符流。 程序中所有的数据都是以流的方式进行传输或保存的…

字节流和字符流的区别

目录 1.区别 2.字节流 2.1没执行代码前: 2.2效果: 3.字符流 3.1代码 3.2效果前: 3.3执行后 没效果:(因为数据还在临时内存) 3.4需要:多上面多个关闭资源 3.5 效果图:(可以关…

字节流和字符流区别(附例子)

字节流和字符流的用法几乎完成全一样,区别在于字节流和字符流所操作的数据单元不同,字节流操作的单元是数据单元是8位的字节,字符流操作的是数据单元为16位的字符。 区别 字节流一般用来处理图像、视频、音频、PPT、Word等类型的文件。字符流…

Java 字节流与字符流的区别详解

原文地址:https://www.cnblogs.com/DONGb/p/7844123.html 1. 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。…

字节流和字符流详解

1.流的概念 在编程中是一种抽象的概念,就好比“水流”,从一段流向另一端在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用…