首页 > 其他分享 >【吴恩达 机器学习 学习笔记】多元线性回归模型(1):矢量化及特征缩放

【吴恩达 机器学习 学习笔记】多元线性回归模型(1):矢量化及特征缩放

时间:2024-07-20 21:29:24浏览次数:8  
标签:吴恩达 缩放 矢量化 scaled leq 2000 vec x2 x1

文章目录

回顾:线性回归模型及梯度下降的原理

多元线性回归模型

在前面的学习中,我们掌握了根据房屋的面积预测房屋价格的方法(单变量线性回归模型),如果我们的房屋特征增加(如增加了房间的个数、房屋的年龄等),在多元变量中,我们该如何进行回归分析呢?

在开始之前,我们先来统一一下后文的符号问题

x j x_j xj​:第 j j j 个特征列表

n n n:特征的总数

x ⃗ ( i ) \vec x^{(i)} x (i):第 i i i 个训练示例(在这里实际上是包含了 n n n 个数字的列表),或者我们称为包含第 i i i 个训练示例的所有特征的向量

x j i x_j^{i} xji​ :第 i i i 个训练样例中的第 j j j 个具体特征


对于单变量的线性回归模型,它是这样的: f ( x ) = w x + b f(x)=w x+b f(x)=wx+b

那么我们可以类比推出, n n n 个特征的多元变量的线性回归模型,是这样的: f ( x ) = w 1 x 1 + w 2 x 2 + ⋅ ⋅ ⋅ + w n x n + b f(x)=w_1 x_1+w_2 x_2+···+w_n x_n+b f(x)=w1​x1​+w2​x2​+⋅⋅⋅+wn​xn​+b

如果你已经学过了线性代数,我们可以写出两个行向量 w ⃗ \vec w w 和 x ⃗ \vec x x

w ⃗ = [ w 1 , w 2 , . . . , w n ] \vec w =[w_1,w_2,...,w_n] w =[w1​,w2​,...,wn​]

x ⃗ = [ x 1 , x 2 , . . . , x n ] \vec x=[x_1,x_2,...,x_n] x =[x1​,x2​,...,xn​]

使用这种表示法,这个模型可以重写为 f ( x ) = w ⃗ ⋅ x ⃗ + b f(x)=\vec w \cdot \vec x+b f(x)=w ⋅x +b

这个模型,就是我们下面要讨论的 多元线性回归模型

矢量化

在实施学习算法的时候,使用矢量化既可以缩短代码,又可以提高运行效率

import numpy as np

w = np.array([1.0, 2.5, -3.3])
b = 4
x = np.array([10, 20, 30])

f ( x ) = w 1 x 1 + w 2 x 2 + ⋅ ⋅ ⋅ + w n x n + b f(x)=w_1 x_1+w_2 x_2+···+w_n x_n+b f(x)=w1​x1​+w2​x2​+⋅⋅⋅+wn​xn​+b

f = w[0] * x[0] + w[1] * x[1] + w[2] * x[2] + b

对于 n 很小的时候,这样编写代码是完全没有问题的

但是如果 n 是 100 甚至于 100,000 ,这么写对于代码甚至计算机的计算效率都是十分低效的

f ( x ) = ∑ i = 1 n w i x i + b f(x)=\sum\limits^n_{i=1}w_ix_i+b f(x)=i=1∑n​wi​xi​+b

或许我们可以考虑使用 for 循环

f = 0
for i in range(n):
	f = f + w[i] * x[i]
f = f + b

f ( x ) = w ⃗ ⋅ x ⃗ + b f(x)=\vec w \cdot \vec x+b f(x)=w ⋅x +b

因为 numpy 的函数使用并行硬件进行加速的能力,它的运行速度会比 python 快数十倍到百倍

我们可以直接调用两个向量的点积运算函数来实现,当 n 很大的时候,它将比前面两个代码运行得更快

f = np.dot(w,x) + b

它的加速原理是这样的:

请添加图片描述

用于多元线性回归的梯度下降法

与一元线性回归的梯度下降一样,我们可以写出多元线性回归的梯度下降

重复 {

w 1 = w 1 − α 1 m ∑ i = 1 m ( f ( x ⃗ ( i ) ) − y ( i ) ) x 1 ( i ) w_1=w_1-\alpha\frac{1}{m}\sum\limits_{i=1}^{m} (f(\vec x^{(i)})-y^{(i)})x_1^{(i)} w1​=w1​−αm1​i=1∑m​(f(x (i))−y(i))x1(i)​

w n = w n − α 1 m ∑ i = 1 m ( f ( x ⃗ ( i ) ) − y ( i ) ) x n ( i ) w_n=w_n-\alpha\frac{1}{m}\sum\limits_{i=1}^{m} (f(\vec x^{(i)})-y^{(i)})x_n^{(i)} wn​=wn​−αm1​i=1∑m​(f(x (i))−y(i))xn(i)​

b = b − α 1 m ∑ i = 1 m ( f ( x ⃗ ( i ) ) − y ( i ) ) b=b-\alpha\frac{1}{m}\sum\limits_{i=1}^{m} (f(\vec x^{(i)})-y^{(i)}) b=b−αm1​i=1∑m​(f(x (i))−y(i))

并更新 w i ( i = 1 , . . . , n ) , b w_i(i = 1,...,n),b wi​(i=1,...,n),b

}

正态方程(只作了解即可)

这是一种仅用于线性回归的算法,是梯度下降的替代方法

你需要知道的:

  • 正态方程法可以用于实现线性回归的机器学习库
  • 梯度下降法是用于寻找参数 w , b w,b w,b

缺点:

  • 不能推广到其他学习算法
  • 当特征数量较大(大于10,000)时速度较慢

特征缩放

特征缩放可以使梯度下降运行得更快

对于几个特征值差距比较大的数据集,特征值较大的一方(假设是 x 1 x_1 x1​)对应的参数一个非常小的变化,会对估计值产生非常大的影响,相比之下,特征值较小(假设是 x 2 x_2 x2​)的一方需要更大的变化才能大大改变预测值

这意味着 w 1 w_1 w1​的微小变化,会大大改变成本函数,而对 w 2 w_2 w2​的微小变化,几乎不会改变成本函数

如果这样运行梯度下降,在梯度下降的时候,它最终可能会来回弹跳,在经过很长的时间之后它才能找到通往最低点的道路(如图)

请添加图片描述

在这种情况下,要做的一件有用的事是缩放,将训练数据进行一些转换(即重新标度 x 1 , x 2 x_1,x_2 x1​,x2​,使其采用彼此可比较的值范围)

接下来我们讨论三种常见的缩放方式

  • 特征缩放

将每个原始的 x x x值除以自己范围的最大值,得到比例 x x x的范围

比如:

300 ≤ x 1 ≤ 2000 300 \leq x_1 \leq 2000 300≤x1​≤2000 , 0 ≤ x 2 ≤ 5 0 \leq x_2 \leq 5 0≤x2​≤5

x 1 , s c a l e d = x 1 2000 x_{1,scaled}=\frac{x_1}{2000} x1,scaled​=2000x1​​ , x 2 , s c a l e d = x 2 5 x_{2,scaled}=\frac{x_2}{5} x2,scaled​=5x2​​

我们就可以得到

0.15 ≤ x 1 , s c a l e d ≤ 1 0.15\leq x_{1,scaled} \leq 1 0.15≤x1,scaled​≤1 , 0 ≤ x 2 , s c a l e d ≤ 1 0 \leq x_{2,scaled} \leq 1 0≤x2,scaled​≤1

  • 平均值标准化

先求出特征值的平均值 μ \mu μ,然后通过公式 x s c a l e d = x − μ m a x − m i n x_{scaled}=\frac{x-\mu}{max-min} xscaled​=max−minx−μ​求出新 x x x的范围

比如:

300 ≤ x 1 ≤ 2000 300 \leq x_1 \leq 2000 300≤x1​≤2000 (假设 μ 1 = 600 \mu_1=600 μ1​=600) , 0 ≤ x 2 ≤ 5 0 \leq x_2 \leq 5 0≤x2​≤5 (假设 μ 2 = 2.3 \mu_2=2.3 μ2​=2.3)

x 1 , s c a l e d = x 1 − 600 2000 − 300 x_{1,scaled}=\frac{x_1-600}{2000-300} x1,scaled​=2000−300x1​−600​ , x 2 , s c a l e d = x 2 − 2.3 5 − 0 x_{2,scaled}=\frac{x_2-2.3}{5-0} x2,scaled​=5−0x2​−2.3​

我们就可以得到

− 0.18 ≤ x 1 , s c a l e d ≤ 0.82 -0.18\leq x_{1,scaled} \leq 0.82 −0.18≤x1,scaled​≤0.82 , − 0.46 ≤ x 2 , s c a l e d ≤ 0.54 -0.46 \leq x_{2,scaled} \leq 0.54 −0.46≤x2,scaled​≤0.54

  • Z-score 归一化

先求出特征值的平均值 μ \mu μ,标准差 σ \sigma σ,然后通过公式 x s c a l e d = x − μ σ x_{scaled}=\frac{x-\mu}{\sigma} xscaled​=σx−μ​求出新 x x x的范围

比如:

300 ≤ x 1 ≤ 2000 300 \leq x_1 \leq 2000 300≤x1​≤2000 (假设 μ 1 = 600 , σ 1 = 450 \mu_1=600,\sigma_1=450 μ1​=600,σ1​=450) , 0 ≤ x 2 ≤ 5 0 \leq x_2 \leq 5 0≤x2​≤5 (假设 μ 2 = 2.3 , σ 2 = 1.4 \mu_2=2.3,\sigma_2=1.4 μ2​=2.3,σ2​=1.4)

x 1 , s c a l e d = x 1 − 600 450 x_{1,scaled}=\frac{x_1-600}{450} x1,scaled​=450x1​−600​ , x 2 , s c a l e d = x 2 − 2.3 1.4 x_{2,scaled}=\frac{x_2-2.3}{1.4} x2,scaled​=1.4x2​−2.3​

我们就可以得到

− 0.67 ≤ x 1 , s c a l e d ≤ 3.1 -0.67\leq x_{1,scaled} \leq 3.1 −0.67≤x1,scaled​≤3.1 , − 1.6 ≤ x 2 , s c a l e d ≤ 1.9 -1.6 \leq x_{2,scaled} \leq 1.9 −1.6≤x2,scaled​≤1.9

标签:吴恩达,缩放,矢量化,scaled,leq,2000,vec,x2,x1
From: https://blog.csdn.net/2302_80870437/article/details/140560525

相关文章

  • 吴恩达新书《How to build a career in AI》书摘
    Threekeystepsofcareergrowtharelearningfoundationalskills,workingonprojectsandfindingajob.Asyougothrougheachstep,youshouldalsobuildasupportivecommunity.Havingfriendsandallieswhocanhelpyou-andwhoyoustrivetohelp-......
  • 吴恩达深度学习课程笔记Lesson03
    第三周:浅层神经网络(Shallowneuralnetworks)文章目录第三周:浅层神经网络(Shallowneuralnetworks)3.1神经网络概述(NeuralNetworkOverview)3.2神经网络的表示(NeuralNetworkRepresentation)3.3计算一个神经网络的输出(ComputingaNeuralNetwork'soutput)3.4多样......
  • 元素缩放?一个vue指令搞定
    说在前面......
  • react hooks实现对元素拖拽及鼠标滚轮缩放
    page.jsximport'./index.less';import{useDrag,useZoom}from'./hooks';constDragZoom=()=>{const{handleMouseDown,handleMouseMove,handleMouseUp}=useDrag();const{handleWheel,scale}=useZoom();re......
  • 跟着吴恩达学深度学习(二)
    前言第一门课的笔记见:跟着吴恩达学深度学习(一)本文对应了吴恩达深度学习系列课程中的第二门课程《改善深层神经网络:超参数调试、正则化以及优化》第二门课程授课大纲:深度学习的实用层面优化算法超参数调试、Batch正则化和程序框架目录1深度学习的实用层面 1.1 训练/......
  • HTML页面如何保证背景图缩放大小一致
    HTML页面如何保证背景图缩放大小一致在网页设计中,背景图是一个常见的元素,它可以为网页增添美感和视觉效果。然而,当用户在不同设备上访问网页时,由于屏幕尺寸和分辨率的不同,背景图的缩放大小可能会出现问题。本文将介绍如何使用HTML和CSS来保证背景图在不同设备上缩放大小一致。1.......
  • 【吴恩达机器学习-week2】可选实验:特征工程和多项式回归【Feature Engineering and Po
    支持我的工作......
  • 吴恩达机器学习Day-5(自用版)
    3.5Visualizingthecostfunction可视化代价函数一、回顾:Model:f(x)=wx+bParameters:w,bCostFunction:J(w,b)=Objective目的:minimizeJ(w,b)二、研究J和w,b的关系形成了类似汤碗的三维形状,当改变w,b的值时,会得到成本函数的不同值。J越小,预测效果越好三、习题补充:四、代码部分......
  • 吴恩达AI系列:教你如何用Langchain封装一本书
    教你快速上手AI应用——吴恩达AI系列教程人工智能风靡全球,它的应用已经渗透到我们生活的方方面面,从自动驾驶到智能家居,再到医疗辅助和量化交易等等。他们逐渐改变了我们的生活方式,然而,对于许多人来说,AI仍然是一个神秘且无法理解的领域。为了帮助更多的人理解并掌握A......
  • 吴恩达机器学习 第三课 week2 推荐算法(上)
    目录01学习目标02推荐算法2.1定义    2.2应用2.3算法03 协同过滤推荐算法04电影推荐系统4.1问题描述4.2算法实现05总结01学习目标   (1)了解推荐算法   (2)掌握协同过滤推荐算法(CollaborativeFilteringRecommenderAlgorithm)原理  ......