【机器学习】多元线性回归详解和特征压缩

news2025/1/21 6:22:20

注意⚠️阅读本文前,你应该需要掌握:机器学习线性回归模型、高等数学微积分部分内容、线性代数矩阵部分内容
前情提要:https://blog.csdn.net/weixin_45434953/article/details/130593910

一、多元线性回归的假设函数

首先我们考虑以下的例子:
有一个数据集,里面给出了房屋的价格、面积大小、楼层数、房龄和寝室数量,希望可以建立模型,根据面积大小、楼层数、房龄和寝室数量推测出房屋售价。

在这里插入图片描述

  • n用于表示特征量数量
  • x ( i ) x^{(i)} x(i)用于表示第i个样例
  • x j ( i ) x_j^{(i)} xj(i)用于表示第i个样例的第j个特征的值

那么第二个样例写成矩阵形式如下:
x ( 2 ) = [ 1416 2 2 40 ] x^{(2)}=\begin{bmatrix}1416 \\2 \\2 \\40\end{bmatrix} x(2)= 14162240
我们在前面的线性回归中,使用了 h θ = θ 0 + θ 1 x h_\theta = \theta_0+\theta_1x hθ=θ0+θ1x作为假设函数,但是在这里显然已无法满足有4个自变量的线性回归,那么当前样例的假设函数应该设置为 h θ = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + θ 4 x 4 h_\theta = \theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+\theta_4x_4 hθ=θ0+θ1x1+θ2x2+θ3x3+θ4x4。当然,我们推广开来可得,如果 x 0 x_0 x0恒为1的话,对于拥有n个特征量的线性回归的假设函数应该为 h θ = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + . . . . + θ n x n h_\theta = \theta_0x_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+....+\theta_nx_n hθ=θ0x0+θ1x1+θ2x2+θ3x3+....+θnxn,裆燃,如果你想用向量的形式表示,那么则如下所示
h θ = [ θ 0 θ 1 θ 2 . . . θ n ] [ x 0 x 1 x 2 . . . x n ] ( x 0 = 1 ) h_\theta=\begin{bmatrix} \theta_0 & \theta_1 & \theta_2 & ... & \theta_n\end{bmatrix}\begin{bmatrix}x_0\\x_1 \\x_2 \\... \\x_n\end{bmatrix}(x_0=1) hθ=[θ0θ1θ2...θn] x0x1x2...xn (x0=1)

二、多元梯度下降法

上面已经得出了假设函数,在含有n个特征的多元线性回归下我们可以将n个特征值看为一个有n个元素的向量,上面已经提到其假设函数为 h θ = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + . . . . + θ n x n ( x 0 = 1 ) h_\theta = \theta_0x_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+....+\theta_nx_n(x_0=1) hθ=θ0x0+θ1x1+θ2x2+θ3x3+....+θnxn(x0=1),那么多元线性回归的代价函数是什么呢?根据之前学习单特征值的线性回归的经验推导,可知其代价函数为 J ( θ 0 , θ 1 . . . , θ n ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 (1) J(\theta_0,\theta_1...,\theta_n) = \frac{1}{2m}\sum_{i=1}^{m} (h_\theta(x^{(i)})-y^{(i)})^2\tag{1} J(θ0,θ1...,θn)=2m1i=1m(hθ(x(i))y(i))2(1)也就是会使用预测点和实际点的差值的平方的和作为代价函数
同时,他的梯度下降函数如下:
θ j : = θ j − α ∂ J ( θ 0 , θ 1 . . . , θ n ) ∂ θ j (2) \theta_j := \theta_j-\alpha\frac{\partial J(\theta_0,\theta_1...,\theta_n)}{\partial \theta_j } \tag{2} θj:=θjαθjJ(θ0,θ1...,θn)(2)
j = 0 , . . . . , n j=0,....,n j=0,....,n循环该函数
将公式(1)和公式(2)合并起来,并且进行求导,可以得到梯度下降函数如下:
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) (3) \theta_j := \theta_j-\alpha\frac{1}{m}\sum_{i=1}^{m} (h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}\tag{3} θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)(3)
这里 j = 0 , 1 , 2 , . . n j={0,1,2,..n} j=0,1,2,..n,并且 ( x 0 = 1 ) (x_0=1) (x0=1)

三、使用特征缩放改进梯度下降

这里我歪一下楼,先介绍一些梯度下降的技巧,其中一个技巧就是特征缩放,假设有一个拥有房屋面积和房间数两个特征量和一个房屋价值的结果变量的数据集,其中房屋面积 θ 1 \theta_1 θ1取值为0到2000,房间数 θ 2 \theta_2 θ2的取值为0到8。可以看出两个特征向量差别特别大。如果我们画出该数据集的代价函数 J ( θ ) J(\theta) J(θ),会发现它特别的狭长,这对梯度下降并不友好,下降的路径可能会较为曲折并且花费的时间也会比较多
代价函数图,红色为梯度下降路径
一个简单的解决办法就是,对特征值的取值进行缩放,比如 θ 1 : = θ 1 2000 , θ 2 = θ 2 8 \theta_1 := \frac{\theta_1}{2000},\theta_2=\frac{\theta_2}{8} θ1:=2000θ1,θ2=8θ2,这样一来, θ 1 \theta_1 θ1 θ 2 \theta_2 θ2取值范围都是0到1,这样得到的梯度下降函数收敛将会更加快速
在这里插入图片描述
在更普遍的情况中,我们的目标一般是将特征值约束在 ( − 1 , 1 ) (-1,1) (1,1)的区间中,因此特征缩放又被称为归一化。假设有一个特征向量 x 1 x_1 x1,其取值范围为 ( 0 , 2000 ) (0,2000) (0,2000),平均值 A v g ( x 1 ) = 1000 Avg(x_1)=1000 Avg(x1)=1000,那么一般采用以下式子进行归一化:
x 1 = x 1 − A v g ( x 1 ) 2000 x_1 = \frac{x_1-Avg(x_1)}{2000} x1=2000x1Avg(x1)
这又被称为均值归一化。

说到底,特征缩放是用于将特征向量的取值范围限制在一个相近的范围内,使得梯度下降更加顺滑,所需的次数更少。

四、多项式回归

假设有如下一个数据集合,其中特征为房屋大小,结果集为房屋价格
在这里插入图片描述
可以看到,这些点不太适合用线性回归,我们可以试着使用二元假设函数 h ( x ) = θ 0 + θ 1 x + θ 2 x 2 h(x)=\theta_0+\theta_1x+\theta_2x^2 h(x)=θ0+θ1x+θ2x2来拟合。
在这里插入图片描述
但是这种二次方假设函数会让房子面积达到一定地步后,价格反而下降了,所以使用 h ( x ) = θ 0 + θ 1 x + θ 2 x 2 + θ 3 x 3 h(x)=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3 h(x)=θ0+θ1x+θ2x2+θ3x3会更合理。如果x的取值为0到2000,那么x3将会是相当大的数字,因此归一化是十分必要的。

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

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

相关文章

linux Ubuntu Python 3.10 环境报错与解决方案集合

环境配置参考文章:使用Alpaca-Lora基于LLaMA(7B)二十分钟完成微调 1.报错.nvidia/cublas/lib/libcublas.so.11: undefined symbol: cublasLtHSHMatmulAlgoInit, version libcublasLt.so.11 解决方法: pip uninstall nvidia_cublas_cu112.CUDA版本对应…

Guitar Pro8优秀的自动扒谱软件

对于一些技术娴熟的音乐人来说,不仅需要演奏已有的乐谱,有时还需要从听到的其他音乐中将谱子扒下来。扒谱时可以借助扒谱软件,比如Guitar Pro,就是一款优秀的扒谱软件。下面就和大家分享一下guitar pro能自动扒谱吗,gu…

基于Java+SpringBoot+Vue餐厅点餐管理系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

spring boot与asp.net core区别联系

之前一直使用C#编写网站,最近也在了解学习java,根据目前我了解的和学习到的做一个总结分析,写的不好,大家见谅。 联系 名称javac#DIspringasp.net core、Autofac、UnityAOPspringasp.net coreORMmubatis、HibernateEntityFramew…

【MySQL】MySQL索引之最左前缀优化

文章目录 一、联合索引联合索引执行示例 二、索引的 order by优化MySQL中的排序方式数据准备无索引有索引where子句索引字段顺序不一致order by索引字段顺序不一致索引字段升降序不一致 三、总结 一、联合索引 对主键建立的索引叫做聚簇索引, 对普通字段建立的索引叫做二级索引…

Linux实操篇---常用的基本命令1(跟文件操作相关的命令)

一、常用的基本命令 1.常用的shell命令 Shell可以看作是一个命令解释器,为我们提供了交互式的文本控制台界面。 目前的发行版本:在bin/sh 最早的版本Unix:Bourne shell—>Bourne Again Shell 取了 B A Sh。因此目前Linux的发行版大多数…

PieCloudDB Database 与多家基础架构软件厂商完成产品兼容性认证

数据库作为数字经济建设的重要基础,扮演着产业数字化和数据价值释放的基石角色。然而,数据库的发展不能仅仅依赖于自身的技术和创新,也需要建立一个良好的生态系统,与各方合作共同推进数据库技术的进步与创新。 拓数派&#xff08…

港联证券|受两大消息刺激,美最大太阳能公司股价创十年最大日涨幅

因两大利好消息,美国第一太阳能公司(FirstSolar,下称第一太阳能)股价大涨。 5月12日,第一太阳能宣布,拟最高支付8000万美元收购瑞典钙钛矿企业Evolar AB。其中包括交易完成时支付3800万美元,以及…

SpringSecurity-从入门到精通学习笔记

SpringSecurity从入门到精通 课程介绍 0. 简介 ​ Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。 ​ 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。…

基于qt5的应用程序在windows和linux环境下修改图标及制定后缀关联

基于qt5的应用程序在windows和linux环境下修改图标及制定后缀关联 1、windows 1.1 修改应用程序图标 方式一: 使用qmake来生成makefile文件,只需要在.pro中添加: RC_ICONS logo.ico 然后,重新生成makefile文件和应用程序&…

MySQL学习---15、流程控制、游标

1、流程控制 解决复杂问题不可能是通过一个SQL语句完成,我们需要执行多个SQL操作。流程控制语句的作用就是控制存储过程中SQL语句的执行顺序,是我们完成复杂操作必不可少的一部分。只要是执行的程序,流程就分为三大类: 1、顺序结…

MMM(Master-Master replication manager for MySQL)

MMM(Master-Master replication manager for MySQL,MySQL主主复制管理器) 是一套支持双主故障切换和双主日常管理的脚本程序。MMM 使用 Perl 语言开发,主要用来监控和管理 MySQL Master-Master (双主)复制&…

【计算机视觉】CLIP:连接文本和图像(关于CLIP的一些补充说明)

文章目录 一、前言二、背景及相关工作三、方法3.1 Costly datasets3.2 Narrow3.3 Poor real-world performance 四、要点4.1 CLIP is highly efficient4.2 CLIP is flexible and general 五、限制六、更广泛的影响七、结论 一、前言 我们推出了一个名为CLIP的神经网络&#xf…

原神服务端搭建架设教程win系统(附客户端+服务端+环境配置)

原神服务端搭建架设教程win系统(附客户端服务端环境配置) 大家好,我是艾西原神一款开放世界冒险3D游戏以七种元素(分别为风、雷、岩、火、水、草、冰)交汇的幻想世界“提瓦特”创造的游戏世界,以角色扮演的RPG游戏还是有非常多的玩…

Prompt工程师指南[应用篇]:Prompt应用、ChatGPT|Midjouney Prompt Engineering

Prompt工程师指南[应用篇]:Prompt应用、ChatGPT|Midjouney Prompt Engineering 1.ChatGPT Prompt Engineering 主题: 与 ChatGPT 对话 Python 笔记本 Topics: ChatGPT介绍审查对话任务与ChatGPT对话Python笔记本 ChatGPT介绍 ChatGPT是OpenAI训练的…

(数字图像处理MATLAB+Python)第七章图像锐化-第三节:高斯滤波与边缘检测

文章目录 一:高斯函数(1)定义(2)特点 二:LOG算子(1)定义(2)程序 三:Canny算子(1)最优边缘检测(2)C…

前端开发推荐vscode安装什么插件?

前言 可以参考一下下面我推荐的插件,注意:插件的目的是用于提高开发的效率,节约开发的时间,像类似检查一些bug、拼写错误等这些可以使用插件快速的识别,避免在查找错误上浪费过多的时间,但切记不要过度依赖…

高速电路设计阻抗匹配的几种方法

为什么要阻抗匹配? 在高速数字电路系统中,电路数据传输线上阻抗如果不匹配会引起数据信号反射,造成过冲、下冲和振铃等信号畸变,当然信号沿传输线传播过程当中,如果传输线上各处具有一致的信号传播速度,并且单位长度…

AVL和二叉树介绍

AVL tree介绍 AVL的全称是:Adelson-Velsky-Landis,是发明这种高度平衡二叉树的人名的缩写,AVL tree是一种优化了的搜索二叉树。 这是二叉排序树会存在的一个问题,先看案例: 给定一个数列为{1,2,3,4,5,6},将这个数列…

【Blender】学习一下

简介Download使用教程入门常识界面简介编辑器视图Layout游标对物体的操作 实战案例1. 萌三兄弟——建模、渲染2. 积木组合——建模、渲染、动画制作3. 金币基站——建模、渲染4. 狂奔的小车——建模、渲染、动画5. 荧光树桩——雕刻、建模、渲染6. 子弹冲击——建模、渲染、动画…