多变量线性回归

news2025/1/4 19:20:26

一、多维特征

        目前为止,我们探讨了单变量/特征的回归模型,现在我们对房价模型增加更多的特征,例如房间数、楼层等,构成一个含有多个变量的模型,模型中的特征为\left( {x_{1}},{x_{2}},...,{x_{n}} \right)

增添更多特征后,我们引入一系列新的注释:

n 代表特征的数量

{x^{\left( i \right)}}代表第 i 个训练实例,是特征矩阵中的第i行,是一个向量vector

比方说,上图的

{x}_{j}^{\left( i \right)}代表特征矩阵中第 i 行的第 j 个特征,也就是第 i 个训练实例的第 j 个特征

如上图的x_{2}^{\left( 2 \right)}=3x_{3}^{\left( 2 \right)}=2

支持多变量的假设 h 表示为:h_{\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}}

这个公式中有n+1个参数和n个变量,为了使得公式能够更方便计算(后面你就知道了),引入x_{0}=1,则公式转化为:h_{\theta} \left( x \right)={\theta_{0}}{x_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}}

此时模型中的参数是一个n+1维的向量,任何一个训练实例也都是n+1维的向量,特征矩阵X的维度是 m*(n+1)。 因此公式可以简化为:h_{\theta} \left( x \right)={\theta^{T}}X,其中上标T代表矩阵转置(这里假定θ和X都是n+1维的列向量)

二、多变量梯度下降

        与单变量线性回归类似,在多变量线性回归中,我们也构建一个代价函数,则这个代价函数是所有建模误差的平方和,即:J\left( {\theta_{0}},{\theta_{1}}...{\theta_{n}} \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{​{​{\left( h_{\theta} \left({x}^{\left( i \right)} \right)-{y}^{\left( i \right)} \right)}^{2}}}

其中:h_{\theta}\left( x \right)=\theta^{T}X={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}} ,我们的目标和单变量线性回归问题中一样,是要找出使得代价函数最小的一系列参数。

多变量线性回归的批量梯度下降算法为:

即:

求偏导后得到:

当n>=1时:

{​{\theta }_{0}}:={​{\theta }_{0}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{({​{h}_{\theta }}({​{x}^{(i)}})-{​{y}^{(i)}})}x_{0}^{(i)}

{​{\theta }_{1}}:={​{\theta }_{1}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{({​{h}_{\theta }}({​{x}^{(i)}})-{​{y}^{(i)}})}x_{1}^{(i)}

{​{\theta }_{2}}:={​{\theta }_{2}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{({​{h}_{\theta }}({​{x}^{(i)}})-{​{y}^{(i)}})}x_{2}^{(i)}

我们开始随机选择一系列的参数值,计算所有的预测结果后,再给所有的参数一个新的值,如此循环直到收敛。

计算代价函数 J\left( \theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{​{​{\left( {h_{\theta}}\left( {x^{(i)}} \right)-{y^{(i)}} \right)}^{2}}}

其中:{h_{\theta}}\left( x \right)={\theta^{T}}X={\theta_{0}}{x_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}}

Python 代码:

def computeCost(X, y, theta):
    inner = np.power(((X * theta.T) - y), 2)
    return np.sum(inner) / (2 * len(X))
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

三、梯度下降法-特征缩放

        在我们面对多维特征问题的时候,我们要保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛。以房价问题为例,假设我们使用两个特征,房屋的尺寸和房间的数量,尺寸的值为 0-2000平方英尺,而房间数量的值则是0-5,以两个参数分别为横纵坐标,绘制代价函数的等高线图,可以看出图像会显得很扁,梯度下降算法需要非常多次的迭代才能收敛。

解决的方法是尝试将所有特征的尺度都尽量缩放到-1到1之间

如图:

实际情况下采用的方法是令{​{x}_{n}}=\frac{​{​{x}_{n}}-{​{\mu}_{n}}}{​{​{s}_{n}}},其中{\mu_{n}}是输入变量平均值,{s_{n}}是输入变量的标准差

四、梯度下降法-学习率

        梯度下降算法收敛所需要的迭代次数根据模型的不同而不同,我们不能提前预知,但是我们可以绘制迭代次数和代价函数的图表来观测算法在何时趋于收敛,如下图

        梯度下降算法的每次迭代受到学习率的影响,如果学习率\alpha过小,则达到收敛所需的迭代次数会非常高;如果学习率\alpha过大,每次迭代可能会越过局部最小值导致无法收敛。

通常可以考虑尝试些学习率:\alpha=0.01,0.03,0.1,0.3,1,3,10,你会发现它们都是每次乘以3进行增加

五、特征和多项式回归

比如还是之前的房价预测问题:

h_{\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}\times{frontage}+{\theta_{2}}\times{depth}

{x_{1}}=frontage(临街宽度)

{x_{2}}=depth(纵向深度)

x=frontage*depth=area(面积)

{h_{\theta}}\left( x \right)={\theta_{0}}+{\theta_{1}}x

        线性回归并不适用于所有数据,有时我们需要曲线来适应我们的数据,比如一个二次方模型:h_{\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}^2};或者三次方模型:h_{\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}^2}+{\theta_{3}}{x_{3}^3}

通常我们需要先观察数据然后再决定准备尝试怎样的模型。 另外,我们可以令:{​{x}_{2}}=x_{2}^{2},{​{x}_{3}}=x_{3}^{3},从而将模型转化为线性回归模型。

根据函数图形特性,我们还可以使:{​{​{h}}_{\theta}}(x)={​{\theta }_{0}}\text{+}{​{\theta }_{1}}(size)+{​{\theta}_{1}}{​{(size)}^{2}}

或者:{​{​{h}}_{\theta}}(x)={​{\theta }_{0}}\text{+}{​{\theta }_{1}}(size)+{​{\theta }_{1}}\sqrt{size}

注:如果我们采用多项式回归模型,在运行梯度下降算法前,特征缩放非常有必要。

六、正规方程

        到目前为止,我们都在使用梯度下降算法,但是对于某些线性回归问题,正规方程方法是更好的解决方案。如:

         正规方程是通过求解偏导数为0的点来找出使得代价函数最小的参数的:\frac{\partial}{\partial{\theta_{j}}}J\left( {\theta_{j}} \right)=0

         假设我们的训练集特征矩阵为 X(包含了 {​{x}_{0}}=1)并且我们的训练集结果为向量 y,则利用正规方程解出向量 \theta ={​{\left( {X^T}X \right)}^{-1}}{X^{T}}y, 上标T代表矩阵转置,上标-1 代表矩阵的逆。设矩阵A={X^{T}}X,则:{​{\left( {X^T}X \right)}^{-1}}={A^{-1}}

以下表数据为例:

即:

运用正规方程方法求解参数:

注:对于那些不可逆的矩阵(通常是因为特征之间不独立,如同时包含英尺为单位的尺寸和米为单位的尺寸两个特征,也有可能是特征数量大于训练集的数量),正规方程方法是不能用的。

梯度下降与正规方程的比较:

        总结一下,只要特征变量的数目并不大,标准方程是一个很好的计算参数\theta的替代方法。具体地说,只要特征变量数量小于10000,通常使用正规方程法,而不使用梯度下降法。随着我们学习的学习算法越来越复杂,例如逻辑回归算法实际上并不能使用正规方程法。因此,梯度下降法是一个非常有用的算法,可以用在有大量特征变量的线性回归问题。但对于某个特定的线性回归模型,正规方程法是一个比梯度下降法更快的算法。所以,根据具体的问题以及你的特征变量的数量,这两种算法都是值得学习的。

正规方程的python实现:

import numpy as np
    
 def normalEqn(X, y):
    
   theta = np.linalg.inv(X.T@X)@X.T@y 
    
   return theta

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

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

相关文章

【数据结构和算法】奇偶链表

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一:分离节点后合并 三、代码 3.1 方法一:分离节点后合并 四、复杂度分…

shopee、Lazada、速卖通测评自养号技术,当天注册当天直接下单

自养号测评(补单)技术对跨境平台如shopee、Lazada、速卖通、ebay、wish、mercari、Newegg等是否有用? 随着越来越多的跨境电商进入市场,并且考虑到亚马逊对大卖家的严格监管,这无疑为其他跨境电商平台和独立站市场带来…

Smallpdf扫描、转换、压缩、编辑、签名PDF

【应用名称】:Smallpdf: 扫描、转换、压缩、编辑、签名PDF 【适用平台】:#Android 【软件标签】:#Smallpdf 【应用版本】:1.71.0 【应用大小】:150MB 【软件说明】:通过 Smallpdf,您可以&…

6.3.1认识Camtasia4(1)

6.3.1认识Camtasia4 安装完Camtasia4(本书使用Camtasia4.0.1版本)后,单击【开始】|【程序】|【Camtasia Studio 4】|【Camtasia Studio】,启动Camtasia Studio,启动后界面如图6-3-1所示。 图6-3-1 Camtasia Studio界面 Camtasia Studio窗口中…

编程笔记 html5cssjs 040 CSS盒子模型

编程笔记 html5&css&js 040 CSS盒子模型 一、CSS 盒子模型二、元素的宽度和高度三、最终元素的总宽度四、元素的总高度五、练习小结 网页是靠分成不同的块,再赋予这些块各不相同的属性来布局的。所以这个“块”是一个基础。先看块本身的构造。 一、CSS 盒子…

shell 循环 判断

for 循环 Shell 脚本里最简单的循环当属 for 循环。最简单的 for 循环如下所示,你只需将变量值依次写在 in 后面即可: #!/bin/bashfor num in 1 2 3 4 doecho $num done 如果要循环的内容是字母表里的连续字母或连续数字,那么就可以按以下语…

医院住院综合服务管理系统

🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅一 、设计说明 1.1 课题背景 互…

大模型理论基础1

大模型理论基础1 第一章:引言 语言模型 自回归语言模型 概率的链式法则: 在自回归语言模型 p 中生成整个序列 X1:L,我们需要一次生成一个令牌(token),该令牌基于之前以生成的令牌进行计算获得: 其中T≥0 是一个控…

OLAP引擎也能实现高性能向量检索,据说QPS高于milvus!

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 随着 LLM 技术应用及落地,数据库需要提高向量分析以及 AI 支持能力,向量数据库及向量检索等能力“异军突起”,迎来业界持续不断关…

C 程序运行机制

1.编辑 编写C语言源程序代码,源程序文件以“.c”作为扩展名。 2.编译 将C语言源程序转换为目标程序(或目标文件)。如果程序没有错误,没有任何提示,就会生成一个扩展名为“.obj”的二进制文件。C语言中的每条可执行语句经过编译后最终都将被…

深入探索CSS动画的魅力-附带动画实例

一、网页动画发展简史 GIF动画 GIF全称为“Graphics Interchange Format”,是一种基于LZW算法的连续色调无损压缩格式。 由于其文件小、无损压缩、易于播放等优点,GIF成为了网页动画的最初选择。然而,GIF动画的色彩数量和帧数有限&#xff…

YOLOv5姿态估计:HRnet实时检测人体关键点

前言: Hello大家好,我是Dream。 今天来学习一下利用YOLOv5进行姿态估计,HRnet与SimDR检测图片、视频以及摄像头中的人体关键点,欢迎大家一起前来探讨学习~ 本文目录: 一、项目准备1Pycharm中克隆github上的项目2.具体步…

森林消防泵:及时扑灭林火,保护森林生态平衡

在大自然中,森林是我们宝贵的自然资源,它们为我们提供氧气、净化空气、保持水土,还是许多动植物的家园。然而,森林火灾却时常威胁着这片绿色宝地的安全。为了保护森林生态环境,我们需要及时扑灭林火。而恒峰智慧科技研…

PhotoMaker, 腾讯开源人像图形处理

腾讯于昨天开源一款人像图形处理项目,项目地址:github.com/TencentARC/PhotoMaker 项目演示地址:https://huggingface.co/spaces/TencentARC/PhotoMakerhttps://huggingface.co/spaces/TencentARC/PhotoMaker-Style 演示效果: 项…

48-DOM

1.DOM基础 Document Object Module,文档对象模型,window对象,document文档,都可以获取和操作 1)文档节点 2)属性节点(标签内的属性href,src) 3)文本节点(标签内的文字) 4)注释节点 5)元素节点(标签) 2.获取元素节点 2.1通过标签名获取 <p>1</p><…

数字图像处理常用算法的原理和代码实现详解

本专栏详细地分析了常用图像处理算法的数学原理、实现步骤。配有matlab或C实现代码&#xff0c;并对代码进行了详细的注释。最后&#xff0c;对算法的效果进行了测试。相信通过这个专栏&#xff0c;你可以对这些算法的原理及实现有深入的理解&#xff01;   如有疑问&#xf…

在window宿主机访问WSL2内部署的服务

目录 在window宿主机访问 WSL2 内部署的服务&#xff08;其他&#xff09;在 WSL2 内查看 windows&#xff08;宿主机&#xff09;的IP地址 windows内置了Linux系统&#xff08;WSL&#xff09;。 在window宿主机访问 WSL2 内部署的服务 在WSL下部署的项目&#xff0c;比如端口…

新喜报,新希望!英码科技荣登“2023年广州拟上市领头羊TOP50企业榜单”

近日&#xff0c;广州市资本市场融资对接服务平台启动仪式暨2023年拟上市企业“领头羊”评选总结活动成功举办。活动现场发布了2023年广州“拟上市领头羊TOP 50 企业榜单”、“最受资本关注TOP10榜单”、“最强科创TOP10榜单”、“最具成长TOP10榜单”并为企业颁发牌匾&#xf…

烟火检测/周界入侵/视频智能识别AI智能分析网关V4如何配置ONVIF摄像机接入

AI边缘计算智能分析网关V4性能高、功耗低、检测速度快&#xff0c;易安装、易维护&#xff0c;硬件内置了近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、物、行为等实时检测分析&#xff0c;上报识别结果&#xff0c;并能进行语音告警播放。算法可按需组合、按…

Abp vNext(三)数据迁移

文档版本&#xff1a;7.0 官方文档给的数据迁移的方式是这样的&#xff0c; 第一步 在 Acme.BookStore.EntityFrameworkCore 目录打开命令行终端输入以下命令: dotnet ef migrations add Created_Book_Entity 第二步 运行 Acme.BookStore.DbMigrator 应用程序来更新数据库…