机器学习与数据挖掘第三、四周

news2024/11/24 17:41:30

为什么第二周没有呢……因为刚换老师,自学要适应一段时间。

本课程作者之后的学习目标是:实操代码,至少要将作者参加数学建模中用到的数据处理方法都做一遍。

首先,作者复习一下李宏毅老师的两节课程。


机器学习概述

机器学习就是让机器帮我们找一个函数!而这个函式,其实就是类神经网络!这个函式的输入可以是向量、矩阵和序列

矩阵往往用于表示图像

语音往往可以被表示为序列

输出可以是数值regression、类别classification(提供给机器几个类别选项,让机器帮忙选择)、txt/image(用于机器学习的structured learning,让机器去创造事物)

其中pm2.5浓度预测就属于数值型regression的机器学习类型。


机器学习的过程

函式定义

写出一个带有未知参数的函式/模型(Model),先猜测一下f的数学式到底长什么样子。其中Model被称为机器学习的模型;x_1 被称为feature,即特征;w被称为权重,b被称为偏置。

这样的猜测需要一定的domain knowledge,有一定的经验。但猜测不一定是对的,需要回过头来修正这个猜测w和b。

Loss定义

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

其中,y^真实值叫做labele表示每次预测值与实际值的误差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换成相应的\sum_jw_{ij}x_i即可:

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

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

 利用线性代数的知识表示成如上形式。这个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(动量):模拟物体运动时的惯性,使梯度下降过程更快、更稳定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1044097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前言技术 VScode + 其他插件-1

一、VScode 提升编程效率,免费 IDE(Integrated Development Environment,集成开发环境)是含代码编辑器、关键词高亮、智能感应、智能纠错、格式美化、版本管理等功能于一身的 "高级代码编辑器" 每个 IT 工程师都要有自…

【专升本】1. 英语考试介绍

一、考试方式 基础题:80% 难题:20% 二、试卷结构 1. 语音 级别:不重要原因:1分/题 2. 语法与词 级别:基础,一般 原因:1分/题 3. 汇完形填空 级别:比较重要原因:…

PyTorch 深度学习之逻辑斯蒂回归Logistic Regression(五)

Revision-Linear Regression Classfication The MNIST dataset train: 训练集还是测试集 The CIFAR-10 dataset 1. Regression VS Classfication 输出概率 1.1 How to map [0,1] 导数: 正态分布 1.2 Sigmoid functions 2. Logistic Regression model loss function for Bin…

Spring事务this自调用的理解误区?真的会让事务失效吗?

文章目录 前言this调用是什么this调用事务失效案例this调用事务仍然生效案例?总结 如何解决this调用事务失效 前言 我们经常谈到Spring事务失效会有多种场景导致:可参考我另外一篇文章 一文清晰讲解Transactional 注解失效场景 Transactional 应用在非…

代码随想录算法训练营第四十九天 | 动态规划 part 10 | 买卖股票的最佳时机i、ii

目录 121. 买卖股票的最佳时机思路代码 122.买卖股票的最佳时机II思路代码 121. 买卖股票的最佳时机 Leetcode 思路 贪心:记录最低值,并且遍历股票逐个寻找股票卖出最大值 动态规划: dp[i][0] 表示第i天持有股票所得最多现金 dp[i][1] 表示…

uniapp - 微信小程序实现腾讯地图位置标点展示,将指定地点进行标记选点并以一个图片图标展示出来(详细示例源码,一键复制开箱即用)

效果图 在uniapp微信小程序平台端开发,简单快速的实现在地图上进行位置标点功能,使用腾讯地图并进行标点创建和设置(可以自定义标记点的图片)。 你只需要复制代码,改个标记图标和位置即可。

工地临时用电之智慧用电:全方位保障用电安全

随着科技进步和智能化的发展,工地用电管理也迎来了智慧化的革新。智慧用电,作为智慧工地的重要组成部分,通过集中式管理和创新的技术手段,为工地提供了全方位的用电安全保障。 针对工地临时用 的现状及系统结构,力安科…

ElementUI之动态树+数据表格+分页->动态树,动态表格

动态树动态表格 1.动态树 //src/components/LeftNav.vue <template><el-menu router :default-active"$route.path" default-active"2" class"el-menu-vertical-demo" background-color"#334157" text-color"#fff&quo…

OWASP Top 10漏洞解析(1)- A1:Broken Access Control 访问控制失效

作者&#xff1a; gentle_zhou 原文链接&#xff1a;OWASP Top 10漏洞解析&#xff08;1&#xff09;- A1:Broken Access Control 访问控制失效-云社区-华为云 Web应用程序安全一直是一个重要的话题&#xff0c;它不但关系到网络用户的隐私&#xff0c;财产&#xff0c;而且关…

Logic Pro X10.7.9(mac乐曲制作软件)

Logic Pro X是由苹果公司开发的一款专业音频制作软件&#xff0c;主要用于音乐制作、录音、混音和母带处理等方面。以下是Logic Pro X的特点&#xff1a; 强大的音频编辑功能&#xff1a;Logic Pro X提供了丰富的音频编辑工具&#xff0c;包括波形编辑器、音频自动化、时间拉伸…

【Linux】——基操指令(一)

个人主页 代码仓库 C语言专栏 初阶数据结构专栏 Linux专栏 LeetCode刷题 算法专栏 目录 前言 基操前的碎碎念 计算机的层状结构 基础指令 查看登录用户指令 查看用户指令 查看当前所处工作目录 清屏指令 基操指令 ls命令 cd命令 makdir指令 rmdir指令 &…

UE学习记录06----根据Actor大小自适应相机位置

背景&#xff1a; staticMesh 会根据业务需要随时变化&#xff0c;然后通过staticMesh的大小自适应相机位置&#xff0c;捕捉画面用来预览该模型&#xff0c;使模型在画布中不会太大导致显示不全&#xff0c;也不会太小 参考&#xff1a; UE实现相机聚焦物体功能_右弦GISer的…

TensorFlow入门(二、基本步骤)

深度学习是机器学习领域中的一个研究方向,它被引入机器学习使其更接近于最初的目标——人工智能。 深度学习的本质其实就是一个拟合函数&#xff0c;通过不断的“喂入”数据&#xff08;比如图片或者视频&#xff09;来调节神经网络的参数&#xff0c;从而找到输入数据的特征范…

嵌入式Linux应用开发-Framebuffer 应用编程

嵌入式Linux应用开发-Framebuffer 应用编程 第五章 Framebuffer 应用编程5.1 LCD 操作原理5.2 涉及的 API 函数5.2.1 open 函数5.2.2 ioctl 函数5.2.3 mmap 函数 5.3 Framebuffer 程序分析5.3.1 打开设备5.3.2 获取 LCD 参数5.3.3 映射 Framebuffer5.3.4 描点函数5.3.5 随便画几…

主机安装elasticsearch后无法登陆

问题描述 2023年7月31日11点02分&#xff0c;主机安装elasticsearch后无法登陆&#xff0c;通过后台查看主机宕机状态&#xff0c;CPU达到100%&#xff0c;按业务侧要求执行重启操作后发现主机黑屏无法正常进入系统&#xff0c;系统卡死。 2&#xff0e;原因分析 2.1通过故障…

自定义注解实现Redis分布式锁、手动控制事务和根据异常名字或内容限流的三合一的功能

自定义注解实现Redis分布式锁、手动控制事务和根据异常名字或内容限流的三合一的功能 文章目录 [toc] 1.依赖2.Redisson配置2.1单机模式配置2.2主从模式2.3集群模式2.4哨兵模式 3.实现3.1 RedisConfig3.2 自定义注解IdempotentManualCtrlTransLimiterAnno3.3自定义切面Idempote…

「Go框架」gin框架是如何处理panic的?

本文我们介绍下recover在gin框架中的应用。 首先&#xff0c;在golang中&#xff0c;如果在子协程中遇到了panic&#xff0c;那么主协程也会被终止。如下&#xff1a; package mainimport ("github.com/gin-gonic/gin" )func main() {r : gin.Default()// 在子协程中…

Apache DolphinScheduler 在奇富科技的首个调度异地部署实践

奇富科技&#xff08;原360数科&#xff09;是人工智能驱动的信贷科技服务平台&#xff0c;致力于凭借智能服务、AI研究及应用、安全科技&#xff0c;赋能金融机构提质增效&#xff0c;助推普惠金融高质量发展&#xff0c;让更多人享受到安全便捷的金融科技服务。作为国内领先的…

【RocketMQ】sendDefaultImpl call timeout 问题及其解决办法

问题描述&#xff1a; org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout解决&#xff1a; 需要开放10911、10909这两个端口 需修改broker.conf&#xff0c;设置公网IP 启动broker时&#xff0c;需用-c conf/broker.…

通俗易懂-OpenCV角点检测算法(Harris、Shi-Tomas算法实现)

目录 1 图像的特征 2&#xff0c;Harris角点检测 2.1 代码实现 2.2结果展示 3&#xff0c;Shi-Tomasi角点检测算法 3.1 &#xff0c; 代码实现 3.2结果展示 1 图像的特征 2&#xff0c;Harris角点检测 、 2.1 代码实现 import cv2 as cv import matplotlib.pyplot as …