机器学习(2)回归

0.前提

上一期,我们简单的介绍了一些有关机器学习的内容。学习机器学习的最终目的是为了服务我未来的毕设选择之一——智能小车,所以其实大家完全可以根据自己的需求来学习这门课,我做完另一辆小车后打算花点时间去进行一次徒步行,回来就开始专心积累底层知识了(回归轻松时刻,去考试,本来预期是一个学期更新大概25篇文章的,现在看其实已经完全超过预期了)。

1.线性回归

1.线性回归的概念

线性回归:一种通过属性的线性组合来进行预测的线性模型,其目的是找到一条直线或者一个平面或者更高维的超平面,使得预测值与真实值之间的误差最小化。

如图为单变量的线性回归,蓝点为真实数据,红点为预测数据,红点与红线重合度越高,数据拟合的效果越好。

2.符号定义

·m代表训练集中样本的数量

·n代表特征的数量

·x代表特征/输入变量

·y代表目标变量/输出变量

·(x,y)代表训练集中的样本

·(x^{(i)},y^{(i)})代表第i个观察样本

·h代表学习算法的解决方案或函数也称为假设

·\widehat{y}=h(x)代表预测值

·x^{(i)}是特征矩阵中的第i行,是向量

·x_{j}^{(i)}是代表特征矩阵中第i行的第j个特征

3.算法流程

h(x)=w_{0}+w_{1}x_{1}+w_{2}x_{2}+...+w_{n}x_{n}

·损失函数:度量样本预测的错误程度,损失函数值越小,模型就越好。常用的损失函数包括:0-1损失函数、平方损失函数、绝对损失函数、对数损失函数等;损失函数采用平方和损失:l(x^{(i)})=\frac{1}{2}(h(x^{(i)})-y^{(i)})^{2},损失函数的1/2是为了便于计算,使对平方项求导后的常数系数为1。

·代价函数:也称成本函数,度量全部样本集的平均误差。常用的代价函数包括均方误差、均方根误差、平均绝对误差等;残差平方和:J(w)=\frac{1}{2}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})^{2}

·目标函数:代价函数和正则化函数,最终要优化的函数。

4.线性回归求解

求解 :min\frac{1}{2}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})^{2}的一组w,常见的求残差平方和最小的方法为最小二乘法和梯度下降法。

2.最小二乘法(LSM)

·其实就是求\frac{\partial J(w)}{\partial w}最小

·将向量表达形式转为矩阵表达形式,J(w)=\frac{1}{2}(Xw-Y)^{2},X为mn+1列的矩阵(m为样本个数,n为特征个数),wn+1行1列的矩阵(包含了w_{0}),Y为m行1列的矩阵:
J(w)=\frac{1}{2}(Xw-Y)^{2}=J(w)=\frac{1}{2}(Xw-Y)^{T}(Xw-Y)
·J(w)求偏导:
\frac{\partial J(w)}{\partial w}=\frac{1}{2}\frac{\partial (Xw-Y)^{T}(Xw-Y)}{\partial w}=X^{T}Xw-X^{T}Y
·结果:
w=(X^{T}X)^{^{-1}}X^{T}Y

3.梯度下降

梯度下降有3种形式:批量梯度下降、随机梯度下降、小批量梯度下降。

1.批量梯度下降(BGD)

批量梯度下降:梯度下降的每一步中,都用到了所有的训练样本。

参数更新:w_{j}:=w_{j}-\alpha \frac{1}{m}\sum_{i=1}^{m}((h(x^{(i)})-y^{(i)})·x_{j}^{(i)}) (同步更新w_{j}(j=0,1,...,n)),\alpha代表学习率,(h(x^{(i)})-y^{(i)})·x_{j}^{(i)}代表梯度。

2.随机梯度下降(SGD)

随机梯度下降:梯度下降的每一步中,用到一个样本,在每一次计算后更新参数,而不需要将所有的训练集求和。

参数更新:w_{j}:=w_{j}-\alpha((h(x^{(i)})-y^{(i)})·x_{j}^{(i)})(同步更新w_{j}(j=0,1,...,n)

3.小批量梯度下降(MBGD)

梯度下降的每一步,用到一定批量的训练样本,每计算常数𝑏次训练实例,更新一次参数 w
参数更新:w_{j}:=w_{j}-\alpha \frac{1}{b}\sum_{k=i}^{i+b-1}((h(x^{(k)})-y^{(k)})·x_{j}^{(k)})(同步更新 w_{j}(j=0,1,...,n)),当b=1时是随机梯度下降,b=m时是批量梯度下降,b=2的指数倍数(常见32、64、128等)时为小批量梯度下降

4.梯度下降与最下二乘法的比较

1.梯度下降

需要选择学习率\alpha,要多次迭代,当特征数量n较大时能较好适用,适用各种类型的模型。

2.最小二乘法

不需要选择学习率\alpha,一次计算得出,需要计算(X^{T}X)^{-1},如果特征数量n较大则运算代价大,因为矩阵逆得计算时间复杂度为0(n^{3}),一般当n小于10000时可以接受,只适用于线性模型,不适合逻辑回归等其他模型。

5.数据归一化/标准化

1.作用

标准化/归一化可以提升模型精度和加速模型收敛。

2.归一化(最大-最小规范化)

x^{*}=\frac{x-x_{min}}{x_{max}-x_{min}},将数据映射到[0,1]区间,数据归一化的目的是使得各特征对目标变量得影响一致,会将特征数据进行伸缩变化,所以数据归一化是会改变特征数据分布的。

3.Z-Score标准化

x^{*}=\frac{x-\mu }{\sigma },其中\sigma ^{2}=\frac{1}{m}\sum_{i=1}^{m}(x^{(i)}-\mu )^{2},\mu =\frac{1}{m}\sum_{i=1}^{m}x^{(i)},处理后的数据均值为0,方差为1,数据标准化为了不同特征间具备可比性,经过标准化变换后的特征数据分布没有改变,当数据特征取值范围或单位差异较大时,最好做标准化处理。

4.是否需要做数据归一化/标准化

1.需要

线性模型,如基于距离度量的模型包括KNN(K近邻)、K-means聚类、感知机和SVM。另外,线性回归类的几个模型一般情况下也是需要做数据归一化/标准化处理的。

2.不需要
决策树、基于决策树的Boosting和Bagging等集成学习模型对于特征取值大小并不敏感,如随机森林、XGBoost、LightGBM等树模型,以及朴素贝叶斯,以上这些模型一般不需要做数据归一化/标准化处理。

6.正则化

1.拟合

注释:拟合就好比成绩与刷题量之间的关系:欠拟合就是你刷题量特别少,考试得到的分数比你想象中的要低,这就说明欠拟合了;过拟合就是你知道刷题能提高成绩,然后一天16个小时都在刷题,是的你成绩变高了,但是你只是读了万卷书没能行万里路,这就是过拟合了;正合适就是,你刷了一定量的题,成绩不错,同时你也行了万里路,这就是正合适。

2.处理过拟合

1.获取更多的训练数据

使用更多的数据能有效解决过拟合,更多的数据样本能让模型学习更多更有效的特征,减少噪声影响。

2.降维

丢弃一些偏差较大的样本特征,手动选择保留的特征,也可以使用一些模型选择算法。

3.正则化

保留所有特征,减少参数大小,可以改善或减少过拟合问题。

4.集成学习

将多个模型集成在一起,来降低单一模型的过拟合风险。

3.处理欠拟合

1.添加新特征

特征不足或者现有特征与样本标签相关性不强时,模型容易欠拟合。挖掘组合新特征,效果会有所改善。

2.增加模型复杂度

简单模型学习能力差,增加模型的复杂度可以使模型有更强的拟合能力。例如:线性模型中添加高次项,神经网咯模型中增加网络层数或神经元个数等。

3.减小正则化系数
正则化是用来防止过拟合的,但当模型出现欠拟合现象时,则需要有针对性地减小正则化系数。

4.正则化

·λ为正则化系数,调整正则化项与训练误差的比例,λ>0。

·1≥ρ≥0为比例系数,调整L1正则化与L2正则化的比例。

1.L1正则化

J(w)=\frac{1}{2}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})^{2}+\lambda \sum_{j=1}^{n}|w_{j}|,(Lasso回归)

2.L2正则化

J(w)=\frac{1}{2}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})^{2}+\lambda \sum_{j=1}^{n}w_{j}^{2},(岭回归)

3.Elastic Net

J(w)=\frac{1}{2}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})^{2}+\lambda (\rho .\sum_{j=1}^{n}|w_{j}|+(1-\rho ).\sum_{j=i}^{n}w_{j}^{2}),(弹性网络)

7.回归的评价指标

y^{(i)}代表第i个样本的真实值;\widehat{y}^{(i)}代表第i个样本的预测值;m为样本个数。

1.均方误差(MSE)

MSE=\frac{1}{m}\sum_{i=1}^{m}(y^{(i)}-\widehat{y}^{(i)})^{2}

2.平均绝对误差(MAE)

MAE(y,\widehat{y})=\frac{1}{m}\sum_{i=1}^{m}|y^{(i)}-\widehat{y}^{(i)}|

3.均方跟误差(RMSE)

RMSE(y,\widehat{y})=\sqrt{\frac{1}{m}\sum_{i=1}^{m}(y^{(i)}-\widehat{y}^{(i)})^{2}}

8.总结 

在这里我强烈推荐大家去看一下吴恩达老师的课程,非常感谢大佬能将老师的课程翻译过来,当然,少看中文翻译能更好的克服语言障碍。

 (强推|双字)2022吴恩达机器学习Deeplearning.ai课程_哔哩哔哩_bilibili

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

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

相关文章

20:kotlin 类和对象 --泛型(Generics)

类可以有类型参数 class Box<T>(t: T) {var value t }要创建类实例&#xff0c;需提供类型参数 val box: Box<Int> Box<Int>(1)如果类型可以被推断出来&#xff0c;可以省略 val box Box(1)通配符 在JAVA泛型中有通配符?、? extends E、? super E&…

25. K 个一组翻转链表

给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的值…

自媒体原创改写工具,自媒体首发改写软件

自媒体平台已成为许多创作者表达观点、分享知识和积累影响力的关键渠道。创作是需要技巧和经验的。本文将分享一些自媒体文章改写技巧&#xff0c;并推荐一系列优秀的自媒体文章改写工具&#xff0c;帮助您提升创作效率&#xff0c;创作出更优秀的文章。 自媒体文章改写技巧 …

Backend - Django makemigrations

目录 一、迁移命令 &#xff08;一&#xff09;前提 &#xff08;二&#xff09;生成迁移文件 &#xff08;三&#xff09;执行迁移 二、迁移问题 1. Error&#xff1a;No changes detected 2. Error&#xff1a;You are trying to add a non-nullable field XXX to XXX…

[读论文]BK-SDM: A Lightweight, Fast, and Cheap Version of Stable Diffusion

github: GitHub - Nota-NetsPresso/BK-SDM: A Compressed Stable Diffusion for Efficient Text-to-Image Generation [ICCV23 Demo] [ICML23 Workshop] ICML 2023 Workshop on ES-FoMo 简化方式 蒸馏方式&#xff08;训练Task蒸馏outKD-FeatKD&#xff09; 训练数据集 评测指标…

在intelliJ spring boot gradle插件3.2.0中未找到匹配的变量

我正在尝试使用spring启动Gradle插件的版本3.2.0。这是我的build.gradle文件&#xff1a; plugins {id javaid org.springframework.boot version 3.2.0id io.spring.dependency-management version 1.1.4 }group com.yaxin version 0.0.1-SNAPSHOTjava {sourceCompatibilit…

GPIO的使用--时钟使能含义--代码封装

目录 一、时钟使能的含义 1.为什么要时钟使能&#xff1f; 2.什么是时钟使能&#xff1f; 3.GPIO的使能信号&#xff1f; 二、代码封装 1.封装前完整代码 2.封装结构 封装后代码 led.c led.h key.c key.h main.c 一、时钟使能的含义 1.为什么要时钟使能&#xff1f…

Python开发运维:Python 3.8 常用标准库

目录 一、理论 1.Python3.8 标准库 2.常用标准库 二、问题 1.Python 正则表达式如何实现 一、理论 1.Python3.8 标准库 &#xff08;1&#xff09;官网 Python 标准库 — Python 3.8.17 文档 &#xff08;2&#xff09;其他版本下拉列表查询 2.常用标准库 &#xff0…

MySQL笔记-第01章_数据库概述

视频链接&#xff1a;【MySQL数据库入门到大牛&#xff0c;mysql安装到优化&#xff0c;百科全书级&#xff0c;全网天花板】 文章目录 第01章_数据库概述1. 为什么要使用数据库2. 数据库与数据库管理系统2.1 数据库的相关概念2.2 数据库与数据库管理系统的关系2.3 常见的数据库…

Linux--网络编程-ftp(TCP)网络通信-文件交互

项目要求&#xff1a;实现以下内容 远程控制&#xff1a; 1、查看服务器当前路径文件 ls 3、进入、退出服务器文件夹 cd 4、上传文件到服务器 put xxx 本地控制&#xff1a; 1、查看本地&#xff08;客户端&#xff09;文件 lls 2、进入客户端文件夹 lcd 3、获取服务器的文件…

音频录制软件哪个好?帮助你找到最合适的一款

音频录制软件是日常工作、学习和创作中不可或缺的一部分。选择一个适合自己需求的录音软件对于确保音频质量和提高工作效率至关重要。可是您知道音频录制软件哪个好吗&#xff1f;本文将深入探讨两种常见的音频录制软件&#xff0c;通过详细的步骤指南&#xff0c;帮助您了解它…

编写Java应用程序,输出满足1+2+3+……+n<8888的最大正整数n。

源代码&#xff1a; public class Main { public static void main(String[] args) { int i 1; int sum 0; for(i 1;;i){ sum i; if (sum >8888) break; } System.out.println(i-1); } } 实验运行截图&#xff1a;

【滑动窗口】LeetCode2953:统计完全子字符串

作者推荐 [二分查找]LeetCode2040:两个有序数组的第 K 小乘积 本题其它解法 【离散差分】LeetCode2953:统计完全子字符串 题目 给你一个字符串 word 和一个整数 k 。 如果 word 的一个子字符串 s 满足以下条件&#xff0c;我们称它是 完全字符串&#xff1a; s 中每个字符…

深入理解:指针变量的解引用 与 加法运算

前言 指针变量的解引用和加法运算是非常高频的考点&#xff0c;也是难点&#xff0c;因为对初学者的不友好&#xff0c;这就导致了各大考试都很喜欢在这里出题&#xff0c;通常会伴随着强制类型转换、二维数组、数组指针等一起考查大家对指针的理解。但是不要怕&#xff0c;也许…

论文解读--PointPillars- Fast Encoders for Object Detection from Point Clouds

PointPillars--点云目标检测的快速编码器 摘要 点云中的物体检测是许多机器人应用(如自动驾驶)的重要方面。在本文中&#xff0c;我们考虑将点云编码为适合下游检测流程的格式的问题。最近的文献提出了两种编码器;固定编码器往往很快&#xff0c;但牺牲了准确性&#xff0c;而…

腾讯视频崩了,年终奖没了。。。

最近互联网的瓜可是不少啊&#xff01;最开始阿里云崩了&#xff0c;阿里云崩了之后&#xff0c;没几天滴滴也崩了&#xff0c;滴滴崩了之后&#xff0c;结果昨天腾讯视频也崩了......年底了&#xff0c;都要来刷刷存在感吗&#xff1f; 简直让我想起来一首儿歌&#xff1a; 阿…

使用autodl服务器,两个3090显卡上运行, Yi-34B-Chat-int4模型,并使用vllm优化加速,显存占用42G,速度23 words/s

1&#xff0c;演示视频地址 https://www.bilibili.com/video/BV1Hu4y1L7BH/ 使用autodl服务器&#xff0c;两个3090显卡上运行&#xff0c; Yi-34B-Chat-int4模型&#xff0c;用vllm优化&#xff0c;增加 --num-gpu 2&#xff0c;速度23 words/s 2&#xff0c;使用3090显卡 和…

25、矩阵乘法的本质

本来一直在介绍卷积,为什么突然出现一个矩阵乘法呢? 因为如果我们将卷积运算拆开,其中最核心的部分便是一个矩阵乘法。所以,卷积算法可以看做是带滑窗的矩阵乘法。 这里的滑窗,就是卷积运算中所示意的动图那样,所以,我们把滑窗固定,不看卷积核滑动这个动作,那么就是…

龙芯loongarch64服务器编译安装tokenizers

1、简介 Hugging Face 的 Tokenizers 库提供了一种快速和高效的方式来处理(即分词)自然语言文本,用于后续的机器学习模型训练和推理。这个库提供了各种各样的预训练分词器,如 BPE、Byte-Pair Encoding (Byte-Level BPE)、WordPiece 等,这些都是现代 NLP 模型(如 BERT、GP…