【深度学习】线性回归、逻辑回归、二分类,多分类等基础知识总结
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 1. 线性回归
- 2、逻辑回归
- 3. 单层神经元的缺陷&多层感知机
- softmax 多分类
- 最后再来一个 二分类的例子
前言
入行深度学习快2年了,是时间好好总结下基础知识了.现在看可能很多结论和刚学的时候不一样.因此要不断总结和比较
1. 线性回归
线性回归本质就是线性规划,高中的时候两条线相交后, 问如何选点和坐标轴围城的面积最大.就是一种.
机器学习中跟常用的是,给几个因素 input ,预测另一个output
比如:受教育程度–>年薪
这样就构成了最简单的,单变量线性回归
单变量线性回归算法(比如,x代表学历,f(x)代表收入):
f(x) = w*x + b
目标是得到这个 f(x) 的系数
系数就是权重, w, b的值.
输出是是预测的收入,
如何评价准不准,模型好不好, 就需要 拿真实的收入和预测的 作差平方求和比较(Loss), 最接近就是好的.
预测目标与损失函数
预测函数f(x)与真实值之间的整体误差最小
如何定义误差最小呢?
损失函数:
使用均方差作为作为成本函数
也就是 预测值和真实值之间差的平方取均值
优化的目标(y代表实际的收入):
找到合适的 w 和 b ,使得 (f(x) - y)²越小越好
注意:现在求解的是参数 w 和 b
如何优化?? 优化测量:
使用梯度下降算法
2、逻辑回归
什么是逻辑回归 线性回归预测的是一个连续值,逻辑回归给出的”是”和“否”的回答?
其实是和否,是一种概率问题,就是多大的可能性是是,多大的可能性是否.比如 明天下雨的概率, 10%下 90% 不下.
但是我们的f(x) 计算的就是一个连续值啊, 如何转成概率呢,
他把给定的所有输入x(其实是f(x)的结果)映射到了0,1直接, >0.5 就是是,小于就是否了.
sigmoid函数是一个概率分布函数,给定某个输入,它将输出为一个概率值
拿到f(x)的结果后,平方差做损失函数线性回归用平方差所惩罚的是与损失为同一数量级的情形.
对于分类问题,我们最好的使用交叉熵损失函数会更有效
交叉熵会输出一个更大的“损失
假设概率分布p为期望输出,概率分布q为实际输出,H(p,q)
为交叉熵,则
交叉熵损失函数
由此可以看到,线性回归和逻辑回归在模型端的区别就是,线性回归输出的是连续值,逻辑回归输出的是(0,1)的概率。 逻辑回归比线性回归多了一个连续值转化为概率的过程.
在优化目标的不同,方差做损失函数和交叉熵损失函数
3. 单层神经元的缺陷&多层感知机
单层神经元的缺陷
无法拟合“异或”运算 异或 问题看似简单,使用单层的神经元确实没有办法解决
原因:神经元要求数据必须是线性可分的,异或 问题无法找到一条直线分割两个类
这个问题是的神经网络的发展停滞了很多年
为了继续使用神经网络解决这种不具备线性可分性的问题,采取在神经网络的输入端和输出端之间插入更多的神经元–多层感知机
softmax 多分类
对数几率回归解决的是二分类的问题,
对于多个选项的问题,我们可以使用softmax函数它是对数几率回归在 N 个可能不同的值上的推广.
神经网络的原始输出不是一个概率值,实质上只是输入的数
值做了复杂的加权和与非线性处理之后的一个值而已,那么
如何将这个输出变为概率分布?
这就是Softmax层的作用
softmax要求每个样本必须属于某个类别,且所有可能的样本均被覆盖
softmax个样本分量之和为 1 当只有两个类别时,与对数几率回归完全相同
opt.step()
opt.zero_grad()
#实际是替代了
with torch.no_grad():for p in model.parameters(): p -= p.grad * lrmodel.zero_grad()
loss.backward()#反向传播是记录各个参数变化,后续用来求导opt.step()#利用上一步计算的梯度对内部参数进行更新计算opt.zero_grad()#将梯度归零,便于后面再次迭代计算时不会产生累加现象
最后再来一个 二分类的例子
step 1: 引入库
import numpy as np
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import pandas as pd
数据初探:
data = pd.read_csv("./dataset/credit-a.csv",header=None)
data.head(5)
用前15列特征,预测最后一列
# 拆分数据X和y
X = data.iloc[:,:-1]
Y = data.iloc[:,-1]
# 把-1 替换成0 并做数据类型的转换
Y = data.iloc[:,-1].replace(-1, 0)
X = torch.from_numpy(X.values).type(torch.FloatTensor)
Y = torch.from_numpy(Y.values.reshape(-1, 1)).type(torch.FloatTensor)
step2 构建网络:
model = nn.Sequential(nn.Linear(15,1),nn.Sigmoid())
# 二元交叉熵, 二分类
loss_fn = nn.BCELoss()
# 目标函数,设置目标函数的优化策略
opt = torch.optim.Adam(model.parameters(), lr=0.0001)
step3 训练:
batches = 16
# 整除的方式, 不足一个batch的就舍掉,比如0.25
no_of_batches = len(Y)//16for epoch in range(1000):total_loss = 0for batch in range(no_of_batches):# 起始位置start = batch*batchesend = start + batches# start = batch*batches# end = start + batchesx = X[start: end]y = Y[start: end]# 计算lossy_pred = model(x)loss = loss_fn(y_pred, y)total_loss+=loss.item()opt.zero_grad()loss.backward()opt.step()# 实际预测结果print(epoch,"acc",((model(X).data.numpy() > 0.5).astype('int')==Y.numpy()).mean())print(epoch,"loss",total_loss)
查看训练的权重参数:
model.state_dict()
step4:实际的结果
# 实际预测结果
((model(X).data.numpy() > 0.5).astype('int')==Y.numpy()).mean()
相关文章:

【深度学习】线性回归、逻辑回归、二分类,多分类等基础知识总结
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言1. 线性回归2、逻辑回归3. 单层神经元的缺陷&多层感知机softmax 多分类最后再来一个 二分类的例子前言 入行深度学习快2年了,是时间好好总结下基础知识了.现…...

【MySQL】调控 字符集
一、 MySQL 启动选项 & 系统变量 启动选项 是在程序启动时我们程序员传递的一些参数,而 系统变量 是影响服务器程序运行行为的变量 1.1 启动项 MySQL 客户端设置项包括: 允许连入的客户端数量 、 客户端与服务器的通信方式 、 表的默认存储引擎 、…...

FME+YOLOV7写DNF自动刷图脚本
目录 前言 一、难点分析 二、实现流程 1.DNF窗口位置获取 2.获取训练数据 3.数据标注 4.数据格式转换 5.数据训练 5.刷图逻辑编写 前言 这是一篇不务正业的研究,首先说明,这不是外挂!这不是外挂!这不是外挂!这只是用a…...
Java语法面试题
多线程锁 Synchronized:一次只能被一个线程占有ReadWriteLock:被多个线程持有,写锁只能被一个线程占有ReentrantLock:一个线程的多个流程能获取同一把锁,就是可重入锁,即在一个线程中可以被重复的获取自旋锁…...

location
目录 匹配的目标 格式 匹配符号: 优先级 要表达不匹配条件,则用 if 实现 例子:根目录的匹配最弱 例子:区分大小写 和 不区分大小写 例子:以根开头 和 不区分大小写 例子:等号 匹配的目标 ng…...
简述RBAC模型
RBAC(Role-Based Access Control)模型是一种常用的访问控制模型,用于管理和控制用户对系统资源的访问权限。RBAC模型通过将用户分配给角色,并授予角色相应的权限,来实现安全的资源访问管理。 在RBAC模型中,…...

倒计时2天:中国工程院院士谭建荣等嘉宾确认出席,“警务+”时代来临...
近日伴随公安部、科技部联合印发通知,部署推进科技兴警三年行动计划(2023-2025年),现代科技手段与警务工作相结合的方式,正式被定义为未来警务发展的新趋势。 21世纪以来,随着科技的不断发展和创新…...

Python蓝桥杯训练:基本数据结构 [哈希表]
Python蓝桥杯训练:基本数据结构 [哈希表] 文章目录Python蓝桥杯训练:基本数据结构 [哈希表]一、哈希表理论基础知识1、开放寻址法2、链式法二、有关哈希表的一些常见操作三、力扣上面一些有关哈希表的题目练习1、[有效的字母异位词](https://leetcode.cn…...
MacOS 配置 Fvm环境
系统环境:MacOS 13,M1芯片 1. 安装HomeBrew: /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" speed 2. 使用brew安装Fvm: brew tap leoafarias/fvm brew install fvm 3…...
Python小白入门- 01( 第一章,第1节) 介绍 Python 编程语言
1. 介绍 Python 编程语言 1.1 Python 是什么 Python 是一种高级的、解释型、面向对象的编程语言,具有简洁、易读、易写的语法特点。Python 由 Guido van Rossum 于 1989 年在荷兰创造,并于 1991 年正式发布。 Python 语言广泛应用于数据科学、Web 开发、人工智能、自动化测…...
高并发系统设计之缓存
本文已收录至Github,推荐阅读 👉 Java随想录 这篇文章来讲讲缓存。缓存是优化网站性能的第一手段,目的是让访问速度更快。 说起缓存,第一反应可能想到的就是Redis。目前比较好的方案是使用多级缓存,如CPU→Ll/L2/L3→…...

【N32WB03x SDK使用指南】
【N32WB03x SDK使用指南】1. 简介1.1 产品简介1.2 主要资源1.3 典型应用2. SDK/开发固件文件目录结构2.1 doc2.2 firmware2.3 middleware2.4 utilities2.5 projects Projects3. 项目配置与烧录3.1 编译环境安装3.2 固件支持包安装3.3 编译环境配置3.4 编译与下载3.5 BLE工程目录…...

pytest测试框架——pytest.ini用法
这里写目录标题一、pytest用法总结二、pytest.ini是什么三、改变运行规则pytest.inicheck_demo.py执行测试用例四、添加默认参数五、指定执行目录六、日志配置七、pytest插件分类八、pytest常用插件九、改变测试用例的执行顺序十、pytest并行与分布式执行十一、pytest内置插件h…...
KAFKA安装与配置(带Zookeeper)2023版
KAFKA安装与配置(带Zookeeper) 一、环境准备: Ubuntu 64位 22.04,三台 二、安装JDK1.8 下载JDK1.8,我这边用的版本是jdk1.8.0_2022、解压jdk tar -zxvf jdk1.8.0_202.tar.gz 3、在/usr/local创建java文件夹,并将解压的jdk移动到/usr/local/java sudo mv jdk1.8.0_202…...

深入浅出解析ChatGPT引领的科技浪潮【AI行研商业价值分析】
Rocky Ding写在前面 【AI行研&商业价值分析】栏目专注于分享AI行业中最新热点/风口的思考与判断。也欢迎大家提出宝贵的意见或优化ideas,一起交流学习💪 大家好,我是Rocky。 2022年底,ChatGPT横空出世,火爆全网&a…...
.net 批量导出文件,以ZIP压缩方式导出
1. 首先Nuget ICSharpCode.SharpZipLib <script type"text/javascript">$(function () {$("#OutPutLink").click(function () { // 单击下文件时$.ajax({ // 先判断条件时间内没有文件url: "/Home/ExistsFile?statTime" $(&q…...

数据分析:某电商优惠卷数据分析
数据分析:某电商优惠卷数据分析 作者:AOAIYI 专栏:python数据分析 作者简介:Python领域新星作者、多项比赛获奖者:AOAIYI首页 😊😊😊如果觉得文章不错或能帮助到你学习,可…...

性能测试流程
性能测试实战一.资源指标分析1.判断CPU是否瓶颈的方法2.判断内存是否瓶颈的方法3.判断磁盘I/O是否瓶颈的方法4.判断网络带宽是否是瓶颈的方法二.系统指标分析三.性能调优四.性能测试案例1.项目背景2.实施规划(1)需求分析(2)测试方…...

zookeeper集群的搭建,菜鸟升级大神必看
一、下载安装zookeeperhttp://archive.apache.org/dist/zookeeper/下载最新版本2.8.1http://archive.apache.org/dist/zookeeper/zookeeper-3.8.1/二、上传安装包到服务器上并且解压,重命名tar -zxvf apache-zookeeper-3.8.1-bin.tar.gzmv apache-zookeeper-3.8.1-b…...

C语言之习题练习集
💗 💗 博客:小怡同学 💗 💗 个人简介:编程小萌新 💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞 文章目录牛客网题号: JZ17 打印从1到最大的n位数牛客网题号&#x…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...