当前位置: 首页 > news >正文

分类算法(Classification algorithms)

逻辑回归(logical regression):

逻辑回归这个名字听上去好像应该是回归算法的,但其实这个名字只是在历史上取名有点区别,但实际上它是一个完全属于是分类算法的。

我们为什么要学习它呢?在用我们的线性回归时会遇到一个很大的问题,就比如一下的图形。

在这里我们把以上的图形进行了我们的线性回归得到了在0.5纵坐标的分界线,在0.5左侧是我们的良性肿瘤而在右边是我们的恶性肿瘤,这时我们得到了我们判断是否是良性肿瘤的方法,但当我们再添加一个数据时。

  

我们会发现我们的线性回归往右边平移了,而判断是否为良性肿瘤的值也往右边移动了,这时我们的模型就会因为我们的数据而发生变化,这很明显不是一个准确的方法,让我们得到我们需要的数据。所以我们需要学习一种叫做逻辑回归的算法。

逻辑函数(sigmoid function)

所以我们要创建一种新的函数。 

这里我们使用了sigmoid函数, 

可以看到我们这个函数,g(z)=\frac{1}{1+e^{-z}},它所得到的函数可以是我们上图所示的样子。(可以自己手动画一下)在无限接近正无穷的地方它还是在缓慢的上升,而在负无穷处它则是无限接近于0。

那我们如何才能写一个逻辑回归函数呢?

第一步:我们的回归函数是f_{w,b}(\vec{x}),它的具体写法是z = \vec{w}\cdot \vec{x}+b.。

第二步:我们sigmoid函数是g(z)=\frac{1}{1+e^{-z}}

第三步:我们把第一个式子代入,也就变成了f_{w,b}(x)=g( \vec{w}\cdot \vec{x}+b)=\frac{1}{1+e^{-( \vec{w}\cdot \vec{x}+b)}}

我们解释一下我们得到的函数,在原来g(z)=\frac{1}{1+e^{-z}}函数中我们知道它的y值在0到1,所以我们输入的x总会得到我们的一个值,而这个值一定在0和1之间,举一个例子。就那我们的判断肿瘤是否是恶性的例子,当我们的值为1时,则肿瘤为恶性肿瘤,当我们的值为0时,则它为良性肿瘤,当我们代入一个值时,y值输出为0.7,那么它就表示你有70%的概率会是恶性肿瘤。那为良性肿瘤的概率则为我们的30%。

这里有几个写法需要我们注意:1.p(y=1)+p(y=0)=1,它指的是我们为1和为0的概率加起来为100%。2.f_{w,b}(\vec{x})=p(y=1|\vec{x};\vec{w},\vec{b}),它代表的意思就是我们的y=1时,我们的概率,而这里的w,b他们代表的只是它们对我们的答案会造成影响。

决策边界(Decision Boundary):

简单来说我们的决策边界就是当我们的逻辑函数曲线,在y值等于0.5时,也就是我们的z=0时,我们可以看看这个图。

也就是 \vec{w}\cdot \vec{x}+b = 0。我们举一个例子。比如得到了以下的图形。

在图中我们的❌指的是我们的好的事物,而⭕️指的是坏的事物,这时,我们要找到我们的决策分界线。

我们得到的数据是f_{w,b}(x)=g( \vec{w}\cdot \vec{x}+b)=g(x1\cdot w1+x2\cdot w2+b),这时我们假设我们的w1=1,w2=1,b=-3。这时我们得到的决策函数也就是x_{1}+x_{2}+b=0,x_{1}+x_{2}=3,这时我们就可以画出完美的决策边界。

在上面就是我们的好事物,下面就是坏事物。这里有一个要强调,我们一般把0.5以上的看作是1,把0.5以下的看作成0。 

当然也有多项式的情况,比如下图。

逻辑函数的成本函数(cost function):

在这个例子里面,我们的判断是否是一个良性肿瘤需要多组训练集,这里在前面几个特征与线性回归类似,而最后一个判断是否是良性或恶性用的是1和0来表示。

我们用原来的线性回归中,使用的成本函数,我们得到的图形将是。凹凸不平的,这让我们用梯度下降时只能取到我们的局部最小值,而不能得到我们的全局最小值。 

所以我们要用一个不一样的成本函数。

我们得到了一个新的成本函数:L(f_{\vec{w},b}(\vec{x}^{(i)}),y^{(i)}) ,它的值和\frac{1}{2}(f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})^{2}相同,这个比较难推导,可以自己试一下(不建议)。

这时我们会得到两个对数函数,我们会在1和0时用到不同的函数去进行计算。

我们先看上面那一个方程,我们会发现预测的值越接近于1我们的损失就会越小,而我们接近于0的损失就会变大。同样的道理对于下面拿个方程。 

这里的损失函数,每一个都是一个单独的训练项,而不是一个集合。所以在这里的完整的成本函数写法是:J(\vec{w},b)=\frac{1}{m}\sum_{i=1}^{m}L(f_{\vec{w},b}(\vec{x}^{(i)},y^{(i)})) 

因为在这里我们的\hat{y}不是1就是0,所以我们可以简化我们的式子,那么它就变成了:

L(f_{\vec{w},b}(\vec{x}^{(i)}),y^{(i)})=y^{(i)}log(f_{\vec{w},b}(\vec{x}^{(i)}))-(1-y^{(i)})log(1-f_{\vec{w},b}(\vec{x}^{(i)}))J(\vec{w},b)=-\frac{1}{m}\sum_{i=1}^{m}(y^{(i)}log(f_{\vec{w},b}(\vec{x}^{(i)}))-(1-y^{(i)})log(1-f_{\vec{w},b}(\vec{x}^{(i)})))

很明显它与我们在上面的式子是等价的。它是一种叫做最大似然估计的统计原理。

逻辑回归的梯度下降(gradient descent for logical regression):

在我们得到了我们的成本函数,接下来我们就要进行我们的梯度下降,还是一样的公式。

得到了我们的成本函数的式子:J(\vec{w},b)=-\frac{1}{m}\sum_{i=1}^{m}(y^{(i)}log(f_{\vec{w},b}(\vec{x}^{(i)}))-(1-y^{(i)})log(1-f_{\vec{w},b}(\vec{x}^{(i)})))

然后我们还是用相同的方法进行我们的梯度下降。

{ w_{j}=w_{j}-\alpha \frac{\partial }{\partial w_{j}}J(\vec{w},b) }b=b-\alpha \frac{\partial }{\partial b}J(\vec{w},b)

同样的道理,在这里的w,b的值是同时进行改变的,而没有先后的关系。两个偏导数算完之后我们才可以得到我们在上面的两个我们需要的特征值。

上面这个式子似乎和我们一开始在线性回归中用到的函数似乎是一样的但其实我们的f函数是完全不一样的,我们在我们的线性回归中,我们的函数是:f_{\vec{w},b}(\vec{x})=\vec{w}\cdot \vec{x}+b,而在我们的逻辑回归中我们的函数是sigmoid函数(逻辑函数)。只是在我们算我们的梯度下降时我们用到的公式相同罢了。

相关文章:

分类算法(Classification algorithms)

逻辑回归(logical regression): 逻辑回归这个名字听上去好像应该是回归算法的,但其实这个名字只是在历史上取名有点区别,但实际上它是一个完全属于是分类算法的。 我们为什么要学习它呢?在用我们的线性回归时会遇到一…...

深度学习-Softmax 回归 + 损失函数 + 图片分类数据集

Softmax 回归 损失函数 图片分类数据集 1 softmax2 损失函数1均方L1LossHuber Loss 3 图像分类数据集4 softmax回归的从零开始实现 1 softmax Softmax是一个常用于机器学习和深度学习中的激活函数。它通常用于多分类问题,将一个实数向量转换为概率分布。Softmax函…...

分布式锁从0到1落地实现01(mysql/redis/zk)

1 准备数据库表 CREATE TABLE user ( id bigint(20) NOT NULL COMMENT 主键ID, name varchar(30) DEFAULT NULL COMMENT 姓名, age int(11) DEFAULT NULL COMMENT 年龄, email varchar(50) DEFAULT NULL COMMENT 邮箱, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8;I…...

安全运营方案的基本框架和关键要素

一、前言 阐述安全运营方案的目的和重要性。强调安全运营与组织整体战略目标的关联。 二、安全运营原则 确立安全运营的基本原则,如保密性、完整性和可用性。明确安全责任划分,确保各部门和人员履行安全职责。 三、安全风险评估与管理 进行全面的安…...

用C语言执行SQLite3的gcc编译细节

错误信息: /tmp/cc3joSwp.o: In function main: execSqlite.c:(.text0x100): undefined reference to sqlite3_open execSqlite.c:(.text0x16c): undefined reference to sqlite3_exec execSqlite.c:(.text0x174): undefined reference to sqlite3_close execSqlit…...

matlab双目相机标定-需要什么参数、怎么获得

相机标定目的:获得相机内参、外参、畸变系数,摄像头的内参(f,1/dx,1/dy,cx,cy)、畸变参数(k1,k2,k3,p1,p1)和外参(R,t),用于接下来的双目校正和深度图生成从而实现二维到三维的转换。 相机标定方法:opencv 双目相机标定以及立体…...

大型语言模型的智能助手:检索增强生成(RAG)

背景 在人工智能的浪潮中,大型语言模型(LLMs)如GPT系列和LLama系列在自然语言处理(NLP)领域取得了显著成就。它们能够完成复杂的语言任务,如文本摘要、机器翻译、甚至创作诗歌。然而,这些模型在…...

Ubuntu 安装谷歌拼音输入法

一、Fcitx 安装 在Ubuntu 下,谷歌拼音输入法是基于Fcitx输入法的。所以,首先需要安装Fcitx。一般来说,Ubuntu最新版中都默认安装了Fcitx,但是为了确保一下,我们可以在系统终端中运行如下命令: sudo apt ins…...

修改MonkeyDev默认配置适配Xcode15

上一篇文章介绍了升级Xcode15后,适配MonkeyDev的一些操作,具体操作可以查看:Xcode 15 适配 MonkeyDev。 但是每次新建项目都要去修改那些配置,浪费时间和精力,这篇文章主要介绍如何修改MonkeyDev的默认配置&#xff0…...

deepinlinux打包deb文件完善

最近学习了一篇qt入门文章,做了一个小应用,要给另一台电脑用时发现还需考虑另一台没有qt,要把相关库带过去,后来就学了打包成deb安装包,看起来更专业。 win下搜索qt依赖库的程序是windeployqt,先将应用输出…...

Android studioSDK集成:com.yechaoa.yutilskt

文章目录 1、工具介绍2、集成 1、工具介绍 com.yechaoa.yutilskt是一个Android开发工具库,提供了一些常用的工具类和方法,方便开发者进行Android应用程序的开发。该库包含了以下功能: 网络请求工具类:提供了简化的网络请求方法&…...

openssl3.2 - exp - PEM <==> DER

文章目录 openssl3.2 - exp - PEM <> DER概述笔记加密用的私钥(带口令保护) - PEM > DER加密用的私钥(不带口令保护) - DER > PEM将不带口令的PEM转成带口令的PEM支持口令的算法备注END openssl3.2 - exp - PEM <> DER 概述 想将客户端私钥 服务端公钥 数…...

云计算的部署方式(公有云、私有云、混合云、社区云)

云计算的部署方式(公有云、私有云、混合云、社区云) 目录 零、00时光宝盒 一、云计算的部署方式 1.1、公有云&#xff08;Public Cloud&#xff09; 1.2、私有云&#xff08;Private Cloud&#xff09;  1.3、混合云&#xff08;Hybrid Cloud&#xff09; 1.4、社区云&am…...

umi4 项目使用 keepalive 缓存页面(umi-plugin-keep-alive、react-activation)

umi4使用keepalive 配置文件config\config.ts export default defineConfig({plugins: [umi-plugin-keep-alive], });安装add umi-plugin-keep-alive yarn add umi-plugin-keep-alive页面 A import { KeepAlive, history, useAliveController } from umijs/max; const Page…...

new;getline();重载<<和>>

面向对象程序设计的优点&#xff1a; 易维护易扩展模块化&#xff1a;通过设置访问级别&#xff0c;限制别人对自己的访问&#xff0c;保护了数据安全 int main(){ return 0;} 返回值0在windows下编程一般没用&#xff0c;但是在linux中编程&#xff0c;返回值有时有用 汇编与…...

python报错

Missing optional dependency ‘xlrd’. Install xlrd > 1.0.0 for Excel support Use pip or conda to install xlrd 安装xlrd库...

Android14 Handle机制

Handle是进程内部, 线程之间的通信机制. handle主要接受子线程发送的数据, 并用此数据配合主线程更新UI handle可以分发Message对象和Runnable对象到主线程中, 每个handle实例, 都会绑定到创建他的线程中, 它有两个作用,: (1) 安排消息在某个主线程中某个地方执行 (2) 安排…...

spark 总结

1.spark 配置文件 spark-default.conf spark.yarn.historyServer.address xiemeng-01:18080 spark.history.port18080 hive-site.xml <configuration><property><name>javax.jdo.option.ConnectionURL</name> </property><property>&…...

Gitlab修改仓库权限为public、Internal、Private

Public&#xff08;公开&#xff09;&#xff1a;所有人都可以访问该仓库&#xff1b; Internal&#xff08;内部&#xff09;&#xff1a;同一个GitLab群组或实例内的所有用户都可以访问该仓库&#xff1b; Private&#xff08;私人&#xff09;&#xff1a;仅包括指定成员的用…...

Python语言例题集(008)

#!/usr/bin/python3 #建立链表类和遍历此链表 class Node(): def init(self,dataNone): self.datadata self.nextNone class LinkedList(): def init(self): self.headNone def printList(self):ptrself.headwhile ptr:print(ptr.data)ptrptr.nextlinkLinkedList() link.he…...

实验间隙高效读文献?对比8款翻译工具后,我发现这款最适合理工科研究生

理工科研究生每天要读大量英文文献&#xff0c;但实验间隙时间碎片化&#xff0c;传统翻译工具要么术语翻译错误&#xff08;把"对照组"翻成"控制组"&#xff09;&#xff0c;要么图表公式全丢失&#xff0c;要么得不停切换原文和译文。结果&#xff1f;一…...

【PAT甲级真题】- Forwards on Weibo (30)

题目来源 Forwards on Weibo (30) 注意点 下标从 1 开始 题目描述 Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may follow many other users as well. Hence a social network is formed with followers relations.…...

联想天逸100-15ibd旧本升级:光驱位装固态,我踩过的坑你别再踩了(附BIOS设置图)

联想天逸100-15ibd光驱位升级SSD全避坑指南 四年前入手的联想天逸100-15ibd笔记本&#xff0c;最近开机时间已经慢到让人焦虑。看着市面上那些秒开的电脑&#xff0c;决定给自己的老伙计来个"心脏移植"——加装固态硬盘。本以为是个简单的DIY小工程&#xff0c;没想到…...

ESP32-S3+LVGL内存优化实战:240x320屏上如何避免卡顿与闪屏

ESP32-S3LVGL内存优化实战&#xff1a;240x320屏上如何避免卡顿与闪屏 当你在ESP32-S3上运行LVGL驱动240x320分辨率的屏幕时&#xff0c;是否遇到过界面卡顿、内存不足或屏幕闪烁的问题&#xff1f;这可能是由于内存分配不当或渲染参数配置不合理导致的。本文将深入探讨如何在…...

【大模型应用】AI服务上架合规性-微信小程序使用硅基流动服务

一、目的 目前开发的微信小程序&#xff0c;使用了AI问答功能。在上架后收到了微信的违规处罚警告。在网上搜索了一圈发现目前还没有类似的文章总结过该问题&#xff0c;这里详细记录一下博主对该问题的解决过程。 处罚警告&#xff1a; 违规的小程序内容&#xff1a; 二、解决…...

【UnityEditor】运行时动态监控场景模型面数与顶点数

1. 为什么需要实时监控模型面数与顶点数 在Unity项目开发中&#xff0c;3D模型的性能开销主要来自两个方面&#xff1a;顶点数和面数。顶点数决定了GPU需要处理的几何数据量&#xff0c;而面数则直接影响渲染调用次数。我遇到过不少项目&#xff0c;明明场景看起来很简单&#…...

基于STM32的正弦波测频计设计与实现(优化篇)

1. 从院赛到工业级&#xff1a;STM32正弦波测频计的优化之路 去年参加院赛时&#xff0c;我和队友用STM32F103C8T6在24小时内赶工完成的测频计&#xff0c;虽然基本功能达标&#xff0c;但测量下限只能到720Hz&#xff0c;1MHz以上误差明显增大&#xff0c;特别是遇到幅值较小的…...

从AD18到AD23:这些年Altium Designer为‘人性化’做了哪些升级?附与PADS/Allegro操作习惯的对比

Altium Designer的进化之路&#xff1a;从AD18到AD23的UX革命与行业启示 在电子设计自动化&#xff08;EDA&#xff09;领域&#xff0c;软件工具的交互体验往往决定着工程师的工作效率和创意发挥空间。作为PCB设计领域的标杆产品&#xff0c;Altium Designer&#xff08;AD&am…...

从蓝图到契约:软件需求规格说明(SRS)的实战撰写指南

1. 为什么SRS是开发者的"宪法"&#xff1f; 我第一次参与中型软件项目时&#xff0c;团队花了三个月开发的系统被客户全盘否决。原因很简单&#xff1a;我们理解的"用户权限管理"是简单的角色分配&#xff0c;而客户实际需要的是带审批流的多级授权体系。这…...

从三相交流电到家庭插座:揭秘零线与火线背后的物理与安全设计

1. 交流电的奥秘&#xff1a;从发电机到家庭插座 当你把手机充电器插入墙上的插座时&#xff0c;有没有想过插座里那两根线为什么一根叫"火线"一根叫"零线"&#xff1f;这个问题看似简单&#xff0c;背后却隐藏着从发电厂到千家万户的完整电力传输智慧。要…...