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

【深度学习】线性回归、逻辑回归、二分类,多分类等基础知识总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 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世纪以来,随着科技的不断发展和创新&#xf…...

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…...

数据分析:某电商优惠卷数据分析

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

性能测试流程

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

zookeeper集群的搭建,菜鸟升级大神必看

一、下载安装zookeeperhttp://archive.apache.org/dist/zookeeper/下载最新版本2.8.1http://archive.apache.org/dist/zookeeper/zookeeper-3.8.1/二、上传安装包到服务器上并且解压&#xff0c;重命名tar -zxvf apache-zookeeper-3.8.1-bin.tar.gzmv apache-zookeeper-3.8.1-b…...

C语言之习题练习集

&#x1f497; &#x1f497; 博客:小怡同学 &#x1f497; &#x1f497; 个人简介:编程小萌新 &#x1f497; &#x1f497; 如果博客对大家有用的话&#xff0c;请点赞关注再收藏 &#x1f31e; 文章目录牛客网题号&#xff1a; JZ17 打印从1到最大的n位数牛客网题号&#x…...

Buuctf [ACTF新生赛2020]Universe_final_answer 题解

1.程序逻辑 程序逻辑并不复杂: 首先输入字符串,然后对字符串进行一个判断是否满足条件的操作 如果满足则对字符串进行处理并输出,输出的就是flag 2.judge_860函数 显然根据这十个条件可以通过矩阵解线性方程组,这里对变量的命名做了一些调整,让Vi对应flag[i]方便读 ​​​​…...

【Linux】环境变量

目录背景1.概念2.常见环境变量2.1 PATH指令和自定义程序向环境变量PATH中添加路径删除PATH中的路径2.2 env&#xff1a;显示所有环境变量2.3 环境变量相关的命令3.通过代码获取环境变量1.char* envp[]2.第三方变量enciron3.getenv函数获取指定环境变量4.利用获取的环境变量自制…...

单一职责原则

单一职责原则&#xff1a; 就一个类而言&#xff0c;应该只有一个引起它变化的原因&#xff0c;如果一个类承担的职责过多就等于把这些职责耦合在一起&#xff0c;至少会造成以下两方面的问题&#xff1a; 我们要去修改该类中的一个职责可能会影响到该类的其它职责。这种耦合…...

golangの并发编程(GMP模型)

GMP模型 && channel1. 前言2. GMP模型2.1. 基本概念2.2. 调度器策略2.3. go指令的调度流程2.4. go启动周期的M0和G02.5. GMP可视化2.6. GMP的几种调度场景3. channel3.1. channel的基本使用3.2. 同步器1. 前言 Go中的并发是函数相互独立运行的体现&#xff0c;Gorouti…...

MacBook Pro错误zsh: command not found: brew解决方法

问题描述&#xff1a;本地想安装Jenkins&#xff0c;但是brew指令不存在/我的电脑型号是19款的MacBook Pro&#xff08;Intel芯片&#xff09;。解决方法MacBook Pro 重新安装homebrew&#xff0c;用以下命令安装&#xff0c;序列号选择阿里巴巴下载源。/bin/zsh -c "$(cu…...

spring中BeanFactory 和ApplicationContext

在学习spring的高阶内容时&#xff0c;我们有必要先回顾一下spring回顾spring1.什么是springspring是轻量级的&#xff0c;指核心jar包时很小的&#xff1b;非侵入式的一站式框架(数据持久层&#xff0c;web层&#xff0c;核心aop)&#xff0c;为了简化企业级开发。核心是IOC&a…...

HC32L17x的LL驱动库之dma

#include "hc32l1xx_ll_dma.h"/// //函 数: //功 能: //输入参数: //输出参数: //说 明: // uint8_t LL_DMA_DeInit(DMA_TypeDef* DMAx, uint32_t Channel) {__IO uint32_t* dmac NULL;dmac &(DMAx->CONFA0);Channel << 4;dmac …...

SSM项目 替换为 SpringBoot

一、运行SSM项目 保证项目改为SpringBoot后运行正常&#xff0c;先保证SSM下运行正常。 项目目录结构 创建数据库&#xff0c;导入sql文件 查看项目中连接数据jar版本&#xff0c;修改对应版本&#xff0c;修改数据库配置信息 配置启动tomcat 运行项目&#xff0c;测试正常…...

RL笔记:动态规划(2): 策略迭代

目录 0. 前言 (4.3) 策略迭代 Example 4.2: Jack’s Car Rental Exercise 4.4 Exercise 4.5 Exercise 4.6 Exercise 4.7 0. 前言 Sutton-book第4章&#xff08;动态规划&#xff09;学习笔记。本文是关于其中4.2节&#xff08;策略迭代&#xff09;。 (4.3) 策略迭代 基…...

2023软件测试金三银四常见的软件测试面试题-【测试理论篇】

三、测试理论 3.1 你们原来项目的测试流程是怎么样的? 我们的测试流程主要有三个阶段&#xff1a;需求了解分析、测试准备、测试执行。 1、需求了解分析阶段 我们的SE会把需求文档给我们自己先去了解一到两天这样&#xff0c;之后我们会有一个需求澄清会议&#xff0c; 我…...