【机器学习】分类问题和逻辑(Logistic)回归算法详解

news2024/11/17 8:28:11

在阅读本文前,请确保你已经掌握代价函数、假设函数等常用机器学习术语,最好已经学习线性回归算法,前情提要可参考https://blog.csdn.net/weixin_45434953/article/details/130593910

分类问题是十分广泛的一个问题,其代表问题是:

  • 一个邮件是否为垃圾邮件
  • 一个肿瘤是否为恶性肿瘤

我们通常用y来表示分类结果,其中最简单y值集合为 0 , 1 {0,1} 0,1,比如对于一个邮件是否为垃圾邮件,有“是垃圾邮件(1)”和“不是垃圾邮件(0)”两种y的取值。假设以肿瘤大小为x轴,是否为恶性肿瘤为y轴,并且有如下一个数据集:
在这里插入图片描述
很显然,这个数据集合是无法使用之前学习的线性回归集合进行拟合的。因为一旦将直线延长,就会出现一个大概率是恶性肿瘤的数据被判定为良性,如下图所示
在这里插入图片描述
要解决这个问题,可以使用logistic回归算法,下面我们将会学习这个算法。

Logistic回归算法

作为一个回归算法,Logistics回归算法当然也有假设函数 h θ ( x ) = θ T x h_\theta(x)=\theta^Tx hθ(x)=θTx(其中x是一个向量),我们将数据集输入到x中,最后会输出个预测结果y。当然,由于我们要解决的是分类问题,如上面分析所示,我们的 h θ ( x ) h_\theta(x) hθ(x)的取值应该是位于 [ 0 , 1 ] [0,1] [0,1]之间,而传统的 h θ ( x ) h_\theta(x) hθ(x)函数的取值范围是整个实数域,因此我们要改造下 h θ ( x ) h_\theta(x) hθ(x)函数,让他的取值范围落在 [ 0 , 1 ] [0,1] [0,1]之间。因此我们定义Logistic回归算法的 h θ ( x ) h_\theta(x) hθ(x)函数如下所示:
h θ ( x ) = g ( θ T x ) (1) h_\theta (x)=g(\theta^T x)\tag{1} hθ(x)=g(θTx)(1) g ( z ) = 1 1 + e − z (2) g(z)=\frac{1}{1+e^{-z}}\tag{2} g(z)=1+ez1(2)上面的2式被称之为Logistic函数,或者称为Sigmoid函数。该函数的图像如下:
在这里插入图片描述
对于 z ∈ R z\in R zR,Logistics函数的取值范围是 [ 0 , 1 ] [0,1] [0,1],因此,将(1)(2)结合起来可以得到 h θ ( x ) = 1 1 + e − θ T x h_\theta(x)=\frac{1}{1+e^{-\theta^T x}} hθ(x)=1+eθTx1该函数的取值范围为[0,1]

我们需要做的,和之前线性回归一样,就是选定合适的参数 θ \theta θ来拟合我们的数据,从而在输入一定特征x的时候,可以获得正确的输出结果y。我们知道分类问题的结果一般只有0或1,而假设函数 h θ ( x ) h_\theta(x) hθ(x)的结果则代表着在输入特征为x的情况下,y=1的概率是多少,比如说,向量 x 0 x_0 x0代表着0号肿瘤的所有特征, h θ ( x 0 ) = 0.7 h_\theta(x_0)=0.7 hθ(x0)=0.7也就意味着该肿瘤为恶行的几率为0.7。

决策界限

那么当 h θ ( x ) h_\theta(x) hθ(x)等于多少的时候,我们会认为y=1呢?一个最简单的办法就是:当 h θ ( x ) ≥ 0.5 h_\theta(x)\geq 0.5 hθ(x)0.5的时候,我们认为当前情况下y=1;当 h θ ( x ) < 0.5 h_\theta(x)<0.5 hθ(x)<0.5的时候,我们认为y=0。我们再观察回Logistics函数,可以发现,当 z ≥ 0 z\geq0 z0的时候 h θ ( x ) ≥ 0.5 h_\theta(x)\geq 0.5 hθ(x)0.5,也就是当 θ T x ≥ 0 \theta^T x\geq0 θTx0

现在假设我们有如下的数据集,并且假设函数 h θ ( x ) h_\theta(x) hθ(x)如下:
在这里插入图片描述
我们假设 θ 0 = − 3 , θ 1 = 1 , θ 2 = 1 \theta_0=-3, \theta_1=1, \theta_2=1 θ0=3,θ1=1,θ2=1,那么我们可以在数据集上画出这样的一条线:
在这里插入图片描述
这将平面分为了两部分,其中在直线之下的会使得 h θ ( x ) < 0.5 h_\theta(x)<0.5 hθ(x)<0.5,我们会估计落在这部分的数据y=0。这一条切分平面的直线,我们称之为决策边界

Logistic下的代价函数

接下来我们需要分析Logistics回归算法的代价函数,让我们来复习下,代价函数主要是用来衡量算法输出结果和实际的正确值的拟合程度,代价函数 J ( θ ) J(\theta) J(θ)主要作用就是找到合适的 θ \theta θ值,使得代价函数 J ( θ ) J(\theta) J(θ)最小,从而使得算法拟合效果最优。 一般的代价函数表达式如下:
J ( θ ) = 1 m ∑ i = 1 n 1 2 C o s t ( h θ ( x ( i ) ) , y ) J(\theta)=\frac{1}{m}\sum_{i=1}^n\frac{1}{2}Cost(h_\theta(x^{(i)}),y) J(θ)=m1i=1n21Cost(hθ(x(i)),y)我们之前学习的线性回归算法的Cost函数为 C o s t ( h θ ( x ( i ) ) , y ) = ( h θ ( x ( i ) ) − y ( i ) ) 2 Cost(h_\theta(x^{(i)}),y) = (h_\theta(x_{(i)})-y_{(i)})^2 Cost(hθ(x(i)),y)=(hθ(x(i))y(i))2但是如果在Logistics中使用这种Cost函数会导致代价函数为一个非凸函数,这主要是因为Logistics的假设函数 h θ ( x ) h_\theta(x) hθ(x)中含有指数项的原因,在这不展开阐述,总之,其函数可能会类似于下图的形状。
在这里插入图片描述
可以看到上面有很多的局部最优值,如果使用梯度下降函数,它在大多数情况是无法拟合到最优值的。那么我们的需求就很清晰了,我们希望可以找到一个Cost函数,可以使得 J ( θ ) J(\theta) J(θ)的函数是一个凸函数,或者单弓型函数。那么实际上,他的Cost函数如下:
C o s t ( h θ ( x ( i ) ) , y ) = { − l o g ( h θ ( x ) ) i f   y = 1 − l o g ( 1 − h θ ( x ) ) i f   y = 0 \begin{equation} Cost(h_\theta(x^{(i)}),y) = \begin{cases} -log(h_\theta(x))& if\: y=1\\ -log(1-h_\theta(x))& if\: y=0\\ \end{cases} \end{equation} Cost(hθ(x(i)),y)={log(hθ(x))log(1hθ(x))ify=1ify=0
看起来式子十分复杂,但是容我仔细分析下:上文提到,h(x)代表的是算法认为y=1的概率是多少,并且 h ( x ) ∈ [ 0 , 1 ] h(x)\in [0,1] h(x)[0,1],那么当y=1的时候,Cost曲线如下图所示:
在这里插入图片描述
当h(x)越接近1,Cost函数的值越接近0,这样得出来的代价函数也越小。也就是在真实结果y=1的情况下,如果h(x)=1,也就是函数认为该实例一定为1,证明它完全预测成功了,那么Cost=0,最终得出的代价函数也会非常小,即使h(x)=0.9,也就是函数认为有90%的概率该实例为1,那Cost的值还不到0.05,最终代价函数的增加幅度也很小,因为它确实也大概率预测成功了。如果他对于一个y=1的实例预测值为0,也就是他认为该实例不可能为1,那么Cost函数将会狠狠地"惩罚"这个学习算法,Cost的值会直接趋于无穷大,从而导致代价函数也无穷大,很明显,这是一个很糟糕的 θ \theta θ取值

反之,如果y=0的时候其函数图像如下:
在这里插入图片描述
很显然,这和上面刚好相反。举一反三即可。

代价函数的简化和梯度下降

上面的Logistics代价函数可以总结为两个式子:
J ( θ ) = 1 m ∑ i = 1 n 1 2 C o s t ( h θ ( x ( i ) ) , y ) (1) J(\theta)=\frac{1}{m}\sum_{i=1}^n\frac{1}{2}Cost(h_\theta(x^{(i)}),y)\tag{1} J(θ)=m1i=1n21Cost(hθ(x(i)),y)(1)
C o s t ( h θ ( x ( i ) ) , y ) = { − l o g ( h θ ( x ) ) i f   y = 1 − l o g ( 1 − h θ ( x ) ) i f   y = 0 (2) \begin{equation} Cost(h_\theta(x^{(i)}),y) = \begin{cases} -log(h_\theta(x))& if\: y=1\\ -log(1-h_\theta(x))& if\: y=0\\ \end{cases} \end{equation}\tag{2} Cost(hθ(x(i)),y)={log(hθ(x))log(1hθ(x))ify=1ify=0(2)
当然,由于y只有等于1或者等于0两种取值,我们可以将2式简化为如下形式: C o s t ( h θ ( x ( i ) ) , y ) = − y l o g ( h θ ( x ) ) − ( 1 − y ) l o g ( 1 − h θ ( x ) ) (3) Cost(h_\theta(x^{(i)}),y)=-ylog(h_\theta(x))-(1-y)log(1-h_\theta(x))\tag{3} Cost(hθ(x(i)),y)=ylog(hθ(x))(1y)log(1hθ(x))(3)观察可以知道,3式和2式是等价的。

将他们合起来就得到了代价函数 J ( θ ) J(\theta) J(θ) J ( θ ) = 1 m ∑ i = 1 n 1 2 [ − y l o g ( h θ ( x ) ) − ( 1 − y ) l o g ( 1 − h θ ( x ) ) ] J(\theta)=\frac{1}{m}\sum_{i=1}^n\frac{1}{2}[-ylog(h_\theta(x))-(1-y)log(1-h_\theta(x))] J(θ)=m1i=1n21[ylog(hθ(x))(1y)log(1hθ(x))]

求得最小代价函数的任务自然就交给了梯度下降算法,对于每一个变量 θ j \theta_j θj反复采取以下式子处理: θ j : = θ j − α ∂ ∂ θ j J ( θ ) \theta_j := \theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta) θj:=θjαθjJ(θ)另外我们已经知道 J ( θ ) J(\theta) J(θ),对导数进行计算可以得出 ∂ ∂ θ j J ( θ ) = 1 m ∑ i = 1 n ( h θ ( x ( i ) − y ( i ) ) x j ( i ) \frac{\partial}{\partial\theta_j}J(\theta)=\frac{1}{m}\sum_{i=1}^n(h_\theta(x^{(i)}-y{(i)})x_j^{(i)} θjJ(θ)=m1i=1n(hθ(x(i)y(i))xj(i)则可以得出梯度下降的实际函数为 θ j : = θ j − α 1 m ∑ i = 1 n ( h θ ( x ( i ) − y ( i ) ) x j ( i ) \theta_j := \theta_j-\alpha\frac{1}{m}\sum_{i=1}^n(h_\theta(x^{(i)}-y{(i)})x_j^{(i)} θj:=θjαm1i=1n(hθ(x(i)y(i))xj(i)由于我们的代价函数已经是一个凹函数了,那梯度下降是可以得到最优值的。上述的例子中,为了方便理解, θ \theta θ中只有一个值,一个数据实例中也只有一个特征x来用于预测y的取值,实际上运用的时候, θ \theta θ可以是一个含有多个元素的向量,当数据集给出若干个特征 x i x_i xi的时候,可以用Logistics来进行拟合

之前我们介绍了二元分类问题,但是现实的很多分类问题并非是只需要将某一事物分类成两类,而是要划分为好多种类别。比如天气预报需要根据天气数据,将天气大致分为晴天、阴天、下雨、下雪等若干类别。下面我们开始介绍一对多分类问题的基本原理。

多元分类问题

在这里插入图片描述
假设我们需要将数据集中的数据分为三类:正方形、三角形和叉。那么我们采取的做法是,将正方形和叉视作一类,将三角形分离出来,然后将三角形和叉视作一类,使用一个二元分类算法将正方形分离出来,再将三角形和正方形视作一类,将叉分离出来。

上述的做法使用了3次二元分类算法,最终将三个类别分离了出来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/592824.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android studio 环境安装

1. Java JDK安装 https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe 下载jdk-17 并安装 安装完成后设置环境变量 #新增环境变量JAVA_HOME C:\Program Files\Java\jdk-17#Path 环境变量添加 %JAVA_HOME%\bin %JAVA_HOME%\jdk\bin#新增环境变量CLASSPAT…

HEVC量化编码介绍

介绍 ● 视频编码中&#xff0c;残差信号经过DCT&#xff0c;变换系数具有较大动态范围&#xff0c;因此对变换系数量化可以有效减小信号取值空间&#xff0c;获得更好的压缩效果&#xff1b; ● 多对一映射机制&#xff0c;所以不可避免的引入失真&#xff0c;这是视频编码中…

Spring(三)对bean的详解

一、引入外部属性文件 首先我们将依赖进行导入&#xff1a; <!--MySQL驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.22</version></dependency><!--数据…

idea连接Linux服务器

一、 介绍 配置idea的ssh会话和sftp可以实现对linux远程服务器的访问和文件上传下载&#xff0c;是替代Xshell的理想方式。这样我们就能在idea里面编写文件并轻松的将文件上传到linux服务器中。而且还能远程编辑linux服务器上的文件。掌握并熟练使用&#xff0c;能够大大提高我…

烂怂if-else代码优化方案 | 京东云技术团队

0.问题概述 代码可读性是衡量代码质量的重要标准&#xff0c;可读性也是可维护性、可扩展性的保证&#xff0c;因为代码是连接程序员和机器的中间桥梁&#xff0c;要对双边友好。Quora 上有一个帖子&#xff1a; “What are some of the most basic things every programmer s…

日本医疗保健和健康管理公司【Zerospo】申请纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;来自日本的医疗保健和健康管理公司【Zerospo】&#xff0c;近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯达克IPO上市&#xff0c;股票代码为&#xff…

感谢海洋一所陈老师用Pospac MMS解算pospac数据及GNSS验潮

非常感谢海洋一所陈老师 帮忙用Pospac MMS解算博主的pospa从数据。解算的结果txt文件大小有2个G&#xff0c;令人非常吃惊&#xff0c;因为原始数据的时长不到1天&#xff0c;打开文件才知道每行位置数据的间隔时间是5ms&#xff0c;5ms正是惯导数据的采样频率。 用抽稀软件按…

短视频矩阵系统源码-开源开发php语言搭建

短视频矩阵系统源码---------- php源码是什么&#xff1f; PHP源码指的就是PHP源代码&#xff0c;源代码是用特定编程语言编写的人类可读文本&#xff0c;源代码的目标是为可以转换为机器语言的计算机设置准确的规则和规范。因此&#xff0c;源代码是程序和网站的基础。 PHP…

【数据结构】插入排序详细图解(一看就懂)

&#x1f4af; 博客内容&#xff1a;【数据结构】插入排序详细图解&#xff08;一看就懂&#xff09; &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f989;所属专栏&#xff1a;数据结构笔记 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准前端&#xff0c;…

ARM-FS6818-点亮LED灯

点亮LED灯 1.开发板介绍 2.cpu控制硬件原理 六大指令里边&#xff0c;只有内存访问指令能访问cpu之外的内容。那cpu如何控制硬件&#xff1f; *load/store指令-->操作4G内存 任何一个芯片都有一个地址映射表。告诉地址空间是如何映射的&#xff0c;便于我们找到对应的硬件地…

ChatGPT3.5-4资源汇总,直连无梯子

什么是ChatGPT? ChatGPT&#xff0c;全称&#xff1a;聊天生成预训练转换器&#xff08;英语&#xff1a;Chat Generative Pre-trained Transformer&#xff09;&#xff0c;是OpenAI开发的人工智能聊天机器人程序&#xff0c;于2022年11月推出。该程序使用基于GPT-3.5、GPT-4…

limou的C语言学习路径

0.前言 你好这里是limou3434的一篇个人博文&#xff0c;感兴趣的话您可以到我的CSDN博客上看看&#xff0c;下面我将以前学习了大概7个月的C语言学习总结给您做一个集合&#xff0c;希望能够帮助到您。 1.C语言大略 学习C前的一些基础知识 这篇文章简单过一下C语言的基础&a…

U盘移动硬盘变本地硬盘怎么办 ,移动硬盘变本地硬盘的恢复方法

这是分区逻辑损坏后最常见的表现。U盘移动硬盘变本地硬盘怎么办 &#xff0c;移动硬盘变本地硬盘的恢复方法有些用人到这种情况后首先会尝试使用Windows系统自带的硬盘修复工具chk命令进行修复&#xff0c;不过&#xff0c;这样操作并不能解决问题&#xff0c;往往会造成更严重…

UFS 2 -UFS架构简介2

UFS 2 -UFS架构简介2 1 UFS架构简介1.1 System Boot and Enumeration1.2 UFS Interconnect (UIC) Layer1.2.1 UFS Physical Layer Signals1.2.2 MIPI UniPro1.2.3 MIPI UniPro Related Attributes 1.3 UFS Transport Protocol (UTP) Layer1.3.1 Architectural Model1.3.1.1 Cli…

ChatGPT时代:数据标注会成为一种人机交互“语言”么?

标注猿的第70篇原创 一个用数据视角看AI世界的标注猿 大家好&#xff0c;我是AI数据标注猿刘吉&#xff0c;一个用数据视角看AI世界的标注猿。 从去年的10月份到现在有半年的时间没有更新了&#xff0c;去年没有更新是疫情的原因&#xff0c;今年没有更新主要有两个原因一…

微软联合OpenAI发大招了,上线Windows Copilot,速来围观~

目录 前言 Windows Copilot 问世 Bing Chat 插件功能上线 Edge 与 365 Copilot 结合 搭建你的第一个AI应用&#xff08;Azure AI Studio&#xff09; 总结 写到最后 大家好&#xff0c;我是大侠&#xff0c;AI领域的专业博主 前言 ChatGPT如今已成为炙手可热的话题&am…

面向亚裔人群的美国华人超市【Maison Solutions】申请纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;来自美国南加州的面向亚裔人群的美国华人超市【美生科技Maison Solutions】近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯达克IPO上市&#xff0c;股票…

软考A计划-试题模拟含答案解析-卷十四

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

ipad触控笔是哪几款?一般电容笔和Apple pencil区别

和苹果Pencil最大的区别就是&#xff0c;电容笔没具备重力压感&#xff0c;只有一种倾斜的压感。如果你不经常画画&#xff0c;那么你可以使用一款平替电容笔。这种平替电容笔&#xff0c;不仅仅是用在办公上&#xff0c;还能用来做笔记和练习。更何况&#xff0c;现在苹果一款…

2023苹果电脑专用下载工具Folx5.27.13991

Mac 上免费的网络下载管理器 Folx Mac 下载器有一个支持 Retina 显示的现代界面。提供独特的系统排序、存储下载内容与预览下载文件。Folx 的 PRO 版是优秀的 BT 查找工具 - 您无需在网络浏览器中打开多个种子追踪器来查找您需要的内容。 虽然苹果系统比较封闭&#xff0c;如果…