机器学习与数据挖掘第三、四周
为什么第二周没有呢……因为刚换老师,自学要适应一段时间。
本课程作者之后的学习目标是:实操代码,至少要将作者参加数学建模中用到的数据处理方法都做一遍。
首先,作者复习一下李宏毅老师的两节课程。
机器学习概述
机器学习就是让机器帮我们找一个函数!而这个函式,其实就是类神经网络!这个函式的输入可以是向量、矩阵和序列。
矩阵往往用于表示图像。
语音往往可以被表示为序列。
输出可以是数值regression、类别classification(提供给机器几个类别选项,让机器帮忙选择)、txt/image(用于机器学习的structured learning,让机器去创造事物)

其中pm2.5浓度预测就属于数值型regression的机器学习类型。
机器学习的过程
函式定义
写出一个带有未知参数的函式/模型(Model),先猜测一下f的数学式到底长什么样子。其中Model被称为机器学习的模型; 被称为feature,即特征;w被称为权重,b被称为偏置。
这样的猜测需要一定的domain knowledge,有一定的经验。但猜测不一定是对的,需要回过头来修正这个猜测w和b。

Loss定义
定义Loss,也是一个function,输入是Model里面的参数,即L(b,w)。我们一开始给参数赋一定的初值,Loss输出的值代表当前设定的参数的值的好坏。

其中,y^真实值叫做label,e表示每次预测值与实际值的误差。L和误差e正相关,越大,表示参数越不好。这个误差可以有很多种表示法,比如差绝对值,差平方等。

代价函数有可能是一条波浪线(在二维中表示),也可以随着自变量相关因子的增多其函数也变为高维的、无法可视化展示的复杂函数。

不断测试参数的值,给出不同参数的L值的情况,上图使用色温和等高线展示了L的值,在模型选择中尽量使用Small L。越偏蓝色系,其值越小。
Optimization

第三步本质上就是找到最好的一组w和b,使L最小。用w*,b*表示。
Gradient Descent:梯度下降方法
选取一个参数,算它与Loss值的函数:

首先要寻找一个初始点w0(最好使用特定算法使得初始值位置更优),然后计算L对w的微分是多少,根据微分正负移动w,尽量使得微分越来越接近于0。
这个移动速率取决于η,η表示学习速率,人为定义设置,能够影响w参数的移动步长,在机器学习中,人为可以设定的参数被称为hyperparameter超参数,超参数优化是我们进行的重要的步骤。
当然这个Loss可以是任何形状,取决于一开始的loss函数的定义。

当前方法有两种方式停止步进,其一是迭代次数达到一开始认为设定的某一上限,另一种表示找到导数为0的点了,但很明显如图这个不是最小的Loss点
后续改进
考虑到课程中的数据在每周具有周期性,所以x1这样的feature只能体现与前一天播放数据的关系,不如增加特征的数量为7天,这样能够更好地反映出规律,再将其增加到28天、56天,得到下面关于训练集和测试集的L值:

可以得知,在一定的范围内,Model函式的feature越多,模型的拟合预测效果越佳。但往往会出现效果停滞等情况,这是为什么呢?
其实,在上图中,Model都是y关于x的线性模型,即Linear Model,线性模型是具有局限性的,往往不可能通过一条直线很好地预测现实生活的数据关系。
如何绘制非线性的model呢?以红色model为例,它属于piecewise linear curve,即分段线性函数,每个自区间上的函数都是线性函数。它本质上只由常数和一组蓝色折线函数(Hard Sigmoid)组成。

即使是超出分段线性函数的model,也能通过插值函数进行拟合:

所以,只要我们有足够多的蓝色Function,就能组合成任何形状的函数model曲线。
如何写出蓝色的Function呢?
方法一:通过sigmoid函数逼近

sigmoid函数的形状和c/b/w取值有关,通过不断变化三者的取值来选取合适的sigmoid曲线,即:

所以想要拟合非线性函式,就把原来的b+wx1换成b+所有sigmoid函数之和!注意,上图只是考虑x1这一个feature,如果考虑多个feature,就把wx1换成相应的即可:

i表示sigmoid函数的数量,或者可以理解为标号id。

其实就是,把整个函数分成多个线性段,每个线性段通过sigmoid函数去拟合,而每个线性段都有可能和每个特征有关,所以对于每个线性段都结合权重与特征进行表示。

利用线性代数的知识表示成如上形式。这个r不是sigmoid函数,sigmoid需要将取负再改变一些,用a表示:

根据函式的参数得到Loss后,使用梯度下降法得到最优解。
方法二:通过ReLU函数逼近

将两条ReLU合并,就能生成一个Hard Sigmoid,也就是之前的蓝色Function,用于拟合非线性Model的。
无论是Sigmoid还是ReLU在机器学习中都属于一类函数:Activation function 激活函数。
深度神经网络

a向量是Model的参数,是众多激活函数(Sigmoid/ReLU/...)组成的。我们可以进一步改进这个a,将a作为新的输入,分配新的权值、偏置和激活函数,形成a‘。只要能优化结果,让Loss更小,那么就选取新的a'作为函式的参数,本质上就是超参数不断迭代改进的过程。不断加深网络的层数layer,就形成了深度神经网络。
这些Sigmoid或者ReLU可以被称为神经元Neuron,很多的Neuron就叫做Neuron Network。每层神经元叫做隐藏层,所有隐藏层构成了深度学习Deep Learning的基础。

梯度下降
Gradient Descent(梯度下降)是一种常用的优化算法,用于求解机器学习模型中的参数。它通过迭代的方式不断更新参数,以最小化目标函数的值。
基本步骤
1. 初始化参数:选择初始参数值作为算法的起点。
2. 计算损失函数的梯度:计算目标函数(损失函数)对于每个参数的偏导数,即参数的梯度。这可以通过反向传播算法来实现。
3. 更新参数:根据参数的梯度和学习率(步长),更新参数的值。梯度乘以学习率表示每次迭代时参数的更新量。
4. 重复迭代:重复执行步骤2和步骤3,直到满足停止条件,例如达到最大迭代次数或参数变化很小。

梯度下降的核心思想是沿着梯度的反方向更新参数,以逐步接近损失函数的最小值。
常见的梯度下降算法
此外,还有几种变体的梯度下降算法,包括批量梯度下降(Batch Gradient Descent)、随机梯度下降(Stochastic Gradient Descent)和小批量梯度下降(Mini-batch Gradient Descent):
1.批量梯度下降BGD:在每次迭代中,使用所有训练样本来计算梯度和更新参数。这种方法的计算量较大,但能够更准确地估计梯度。最原始形式。
2.随机梯度下降SGD:在每次迭代中,随机选择一个样本来计算梯度和更新参数。这种方法的计算量较小,但参数更新的方向可能更不稳定。
3.小批量梯度下降MBGD:在每次迭代中,随机选择一小部分样本(称为mini-batch)来计算梯度和更新参数。这种方法综合了批量梯度下降和随机梯度下降的优点,通常是最常用的梯度下降算法。也称为最速下降法!
每次更新一次参数叫做一次Update,每遍历一次训练集叫做一次epoch:

梯度下降是机器学习中常见的优化算法之一,广泛用于线性回归、逻辑回归、神经网络等模型的参数优化过程中。
梯度下降的痛点并不是Local Minimum(陷于局部最优解),而是步长的选择如果过大,会错过最优解。
梯度下山的优化算法
1.AdaGrad(适应性梯度算法):根据历史梯度信息动态调节学习率。经常更新的参数学习率就小一些,不经常更新的参数学习率就大一些。但是,在训练深度网络时可能会导致学习率过早和过量地减小。
2.RMSProp(均方根传递):优化动态学习率,为了解决 AdaGrad 在训练深度网络时的问题。它使用梯度的移动平均来调整学习率,有助于防止学习率单调下降。
3.AdaDelta:不需要设置学习率,这有助于限制累积的历史信息量。
4.Adam(自适应矩估计)算法目前最适合优化,结合了 Momentum模拟动量和RMSProp,第一阶段估计了梯度的均值,第二阶段估计了梯度的无偏方差,有助于自适应地调整学习率。
5.Momentum(动量):模拟物体运动时的惯性,使梯度下降过程更快、更稳定。
相关文章:
机器学习与数据挖掘第三、四周
为什么第二周没有呢……因为刚换老师,自学要适应一段时间。 本课程作者之后的学习目标是:实操代码,至少要将作者参加数学建模中用到的数据处理方法都做一遍。 首先,作者复习一下李宏毅老师的两节课程。 机器学习概述 机器学习就…...
黎明加水印微信小程序源码 支持流量主接入
黎明加水印微信小程序源码,支持流量主接入。支持从聊天记录选择文件、相机拍摄、直接选择文件 支持白底、黑底的隐形水印,制作后,通过增加蒙版方能看到水印 纯前端,可嵌入任何项目。 部署教程 1、解压后得到项目文件夹 3、把…...
22 Python的argparse模块
概述 在上一节,我们介绍了Python的datetime模块,包括:datetime模块中一些常用的属性和函数。在这一节,我们将介绍Python的argparse模块。argparse模块是Python的一个标准库,用于编写命令行界面。它可以处理命令行参数和…...
Unity之NetCode多人网络游戏联机对战教程(3)--NetworkObject组件讲解
文章目录 NetworkObjectAlways Replicate As RootSynchronization TransformActive Scene SynchronizationScene Migration SynchronizationSpawn With ObserversDont Destroy With OwnerAuto Object Parent Sync 后话 NetworkObject 为了复制任何Netcode感知属性或发送/接收R…...
正点原子lwIP学习笔记——Socket接口UDP实验
1. Socket接口UDP连接配置 Socket接口的UDP配置流程如下: sin_family 设置为 AF_INET 表示 IPv4 网络协议;sin_port 为设置端口号, 可设置为 8080;sin_addr.s_addr 设置本地 IP 地址;调用函数 Socket 创建 Socket 连…...
连接组学中的机器学习:从表征学习到模型拟合
前言 机器学习(ML)由于其高自动化程度、高灵敏度和特异性优势,在医学影像领域取得了巨大的成功。由于具备这些优势,机器学习已被广泛应用于神经成像数据,目的是提取与感兴趣变量(如疾病状态)相关的特征。这使我们能够形成关于不同条件下大脑…...
数据结构-----二叉树的创建和遍历
目录 前言 二叉树的链式存储结构 二叉树的遍历 1.前序遍历 2.中序遍历 3.后序遍历 二叉树的创建 创建一个新节点的函数接口 1.创建二叉树返回根节点 2.已有根节点,创建二叉树 3.已有数据,创建二叉树 前言 在此之前我们学习了二叉树的定义和储…...
【算法题】1333. 餐厅过滤器
题目: 给你一个餐馆信息数组 restaurants,其中 restaurants[i] [idi, ratingi, veganFriendlyi, pricei, distancei]。你必须使用以下三个过滤器来过滤这些餐馆信息。 其中素食者友好过滤器 veganFriendly 的值可以为 true 或者 false,如果…...
linux脚本笔记
目录 1.增加环境变量 2.自定义命令快捷键 3.关闭selinux和防火墙 4.增加别名快捷键 5.Linux链接 1.增加环境变量 新建add_env.sh #!/bin/bashapp_dir"/root/docker"# 检查配置文件中是否已存在相同的环境变量 if grep -q -E "^export APP_HOME.*" ~…...
目标检测YOLO实战应用案例100讲-面向路边停车场景的目标检测(中)
目录 3.1.1 特征图相似度计算 3.1.2 特征图相似度实验 3.1.3 基于GhostBlock的网络结构改进...
[论文笔记]Prefix Tuning
引言 今天带来微调LLM的第二篇论文笔记Prefix-Tuning。 作者提出了用于自然语言生成任务的prefix-tuning(前缀微调)的方法,固定语言模型的参数而优化一些连续的任务相关的向量,称为prefix。受到了语言模型提示词的启发,允许后续的token序列注意到这些prefix,当成虚拟toke…...
electron快速入门
新建electronstu01文件夹 以管理员身份运行powershell,切换到该文件下 npm init -y安装依赖包 npm install --save-dev electron失败 npm install -g cnpm --registryhttps://registry.npm.taobao.org cnpm install --save-dev electron修改 package.json &qu…...
C语言的stdio.h的介绍
C语言的stdio.h的介绍 C语言的stdio.h的介绍 C语言的stdio.h的介绍C语言stdio.h的介绍 C语言stdio.h的介绍 这个含义是导入标准输入输出库 包含头文件.h,std标准库,io是input output输入输出库 <>代表系统库,自定义的话用""…...
使用香橙派 在Linux环境中安装并学习Python
前言 在实际项目中,经常会遇到需要使用人工智能的场景,如人脸识别,车牌识别等...其一般的流程就是由单片机采集数据发送给提供人工智能算法模型的公司(百度云,阿里云...),然后人工智能将结果回…...
如何开发物联网 APP?
如何开发物联网 APP? 这个问题本身是不严谨的,APP只是手机端的一个控制或者用于显示的人机交互页面,物联网是通过传感器,物联网卡等模块把物体接入网络以方便远程监控或者控制等。 你问的应该是怎么开发出来一个远程控制物体的APP吧&#x…...
配置pytorchGPU虚拟环境-python3.7
cuda版本的pytorch包下载地址戳这里 winR->输入cmd->输nvcc -V回车 cuda 11.0 输入以下命令来查找 CUDA 的安装路径: Windows: where nvcc 输入以下命令来查找 cuDNN 的版本号: Windows: where cudnn* cuDNN 8.0 本机安装的是cuda 11.0&…...
Logic Pro X10.7.9(mac乐曲制作软件)
Logic Pro X是由苹果公司开发的一款专业音频制作软件,主要用于音乐制作、录音、混音和母带处理等方面。以下是Logic Pro X的特点: 强大的音频编辑功能:Logic Pro X提供了丰富的音频编辑工具,包括波形编辑器、音频自动化、时间拉伸…...
第一部分:HTML5
目录 一:网页 1.1:什么是网页? 1.2:什么是HTML? 1.3:网页的形成 二:常用浏览器 三:Web标准 3.1:为什么需要Web标准? 3.2:Web标准的构成 四&a…...
Linux 基础入门
目录 一、计算机 1、组成 2、功能 二、操作系统 1、定义 2、主要工作 3、操作系统内核功能 4、常见的操作系统 三、Linux的组成 四、搭建Linux学习环境 五、安装远程连接Linux的软件 1、安装xshell 2、安装mobaxterm 六、Linux操作系统学习大纲 一、计算机 1、组…...
【数据结构】插入排序:直接插入排序、折半插入排序、希尔排序的学习知识总结
目录 1、排序的基本概念 2、直接插入排序 2.1 算法思想 2.2 代码实现 3、折半插入排序 3.1 算法思想 3.2 代码实现 4、希尔排序 4.1 算法思想 4..2 代码实现 1、排序的基本概念 排序是将一组数据按照预定的顺序排列的过程,排序的基本概念包括以下内容…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
