当前位置: 首页 > 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…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

如何在Windows本机安装Python并确保与Python.NET兼容

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法

用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...

Linux基础开发工具——vim工具

文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...