首页 > 其他分享 >吴恩达机器学习_第2周_多维特征

吴恩达机器学习_第2周_多维特征

时间:2024-07-29 15:24:51浏览次数:17  
标签:吴恩达 frac TX 机器 梯度 特征 多维 theta partial

第1周:引言、单变量回归

第2周:多维特征

第 3 章 多维特征

3.1 多维特征和向量化

h θ ( x ) = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n h_{\theta}(x) = \theta_0 x_0 + \theta_1 x_1 + \theta_2 x_2 + \cdots + \theta_n x_n hθ​(x)=θ0​x0​+θ1​x1​+θ2​x2​+⋯+θn​xn​
此时模型中的参数是一个n+1维的向量,任何一个训练实例也都是n+1维的向量,特征矩阵X的维度是m*(n+1)。 因此公式可以简化为: h θ ( x ) = θ T X h_{\theta}(x) = \theta^T X hθ​(x)=θTX.

3.2 多变量梯度下降

与单变量线性回归类似,在多变量线性回归中,我们也构建一个代价函数,则这个代价函数是所有建模误差的平方和,即
J ( θ 0 , θ 1 , … , θ n ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta_0, \theta_1, \ldots, \theta_n) = \frac{1}{2m} \sum_{i=1}^{m} \left( h_\theta (x^{(i)}) - y^{(i)} \right)^2 J(θ0​,θ1​,…,θn​)=2m1​∑i=1m​(hθ​(x(i))−y(i))2
其中, h θ ( x ) = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n h_{\theta}(x) = \theta_0 x_0 + \theta_1 x_1 + \theta_2 x_2 + \cdots + \theta_n x_n hθ​(x)=θ0​x0​+θ1​x1​+θ2​x2​+⋯+θn​xn​
我们的目标和单变量线性回归问题中一样,是要找出使得代价函数最小的一系列参数。 多变量线性回归的批量梯度下降算法为:
Repeat \text{Repeat} Repeat{
θ j : = θ j − α ∂ J ∂ θ j J ( θ 0 , θ 1 , . . . , θ n ) \theta_j := \theta_j - \alpha \frac{\partial J}{\partial \theta_j} J(\theta_0, \theta_1, ... , \theta_n) θj​:=θj​−α∂θj​∂J​J(θ0​,θ1​,...,θn​)
}

Repeat \text{Repeat} Repeat{
θ j : = θ j − α ∂ ∂ θ j 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 \theta_j := \theta_j - \alpha \frac{\partial}{\partial \theta_j} \frac{1}{2m} \sum_{i=1}^{m} \left( h_\theta \left( x^{(i)} \right) - y^{(i)} \right)^2 θj​:=θj​−α∂θj​∂​2m1​∑i=1m​(hθ​(x(i))−y(i))2
}

求导后得到:
Repeat \text{Repeat} Repeat{
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j := \theta_j - \alpha \frac{1}{m} \sum_{i=1}^{m} \left(h_\theta(x^{(i)}) - y^{(i)}\right) x_{j}^{(i)} \quad θj​:=θj​−αm1​∑i=1m​(hθ​(x(i))−y(i))xj(i)​
(simultaneously update  θ j  for  j = 0 , 1 , … , n ) \text{(simultaneously update } \theta_j \text{ for } j=0,1,\ldots,n) (simultaneously update θj​ for j=0,1,…,n)
}

3.3 梯度下降法实践1-特征缩放

3.3.1 目的

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

3.3.2 三种scaling的方式

  • Dividing by Maximum: X i → X i m a x ( X 1 , X 2 , . . . , X n ) X_i→ \frac{X_i}{max(X_1, X_2, ... , X_n)} Xi​→max(X1​,X2​,...,Xn​)Xi​​
  • Mean Scaling: X i → X i − μ m a x − m i n X_i → \frac{X_i - \mu}{max - min} Xi​→max−minXi​−μ​
  • Z-score Standardization: x n = x n − μ s , x_n=\frac{x_n-\mu}{s}, xn​=sxn​−μ​,其中 μ \mu μ 是平均值, s s s是标准差。

3.4 梯度下降法实践2-判断梯度下降是否收敛

- 通过图像判断:
在这里插入图片描述
- Automatic Convergence Test:
Let ϵ \epsilon ϵ be 1 0 − 3 10^{-3} 10−3. If J ( w , b ) J(w,b) J(w,b) decreases by ≤ ϵ \epsilon ϵ in one iteration, then declare convergence.

3.5 梯度下降法实践3-学习率 α \alpha α

问题: 如何选择合适的学习率大小?
当我们运行梯度算法迭代的时候,我们有时会发现代价函数J随着迭代次数的增加呈现上下摆动的趋势,这时候就要想到可能是选取了不合适的学习率。
在这里插入图片描述
例如,如果 α \alpha α选择得过大,算法就会在J的最低点处不断横跳,极坏的情况下可能会导致代价函数J会不断增大,最终无法收敛。这时候的解决方案便是减小学习率 α \alpha α

如果学习率过小,则达到收敛所需的迭代次数会非常高;
如果学习率过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。

通常可以考虑尝试些学习率: α \alpha α = 0.01, 0.03, 0.1, 0.3, 1, 3, 10.

3.6 多项式回归

房价预测问题
在这里插入图片描述

h θ ( x ) = θ 0 + θ 1 × f r o n t a g e + θ 2 × d e p t h h_{\theta}(x)=\theta_{0}+\theta_{1}\times frontage+\theta_{2}\times depth hθ​(x)=θ0​+θ1​×frontage+θ2​×depth
x 1 = f r o n t a g e ( 临街宽度 ) , x 2 = d e p t h ( 纵向深度 ) , x = f r o n t a g e ∗ d e p t h = a r e a ( 面积 ) ,则 : x_{1}=frontage(临街宽度),x_{2}=depth(纵向深度),x=frontage*depth=area(面积),则: x1​=frontage(临街宽度),x2​=depth(纵向深度),x=frontage∗depth=area(面积),则:
h θ ( x ) = θ 0 + θ 1 x h_{\theta}(x)=\theta_{0}+\theta_{1}x hθ​(x)=θ0​+θ1​x
线性回归并不适用于所有数据,有时我们需要曲线来适应我们的数据,比如一个二次方模型:
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 2 h_{\theta}(x)=\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}^{2} hθ​(x)=θ0​+θ1​x1​+θ2​x22​
或者三次方模型:
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 2 + θ 3 x 3 3 h_{\theta}(x)=\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}^{2}+\theta_{3}x_{3}^{3} hθ​(x)=θ0​+θ1​x1​+θ2​x22​+θ3​x33​

在这里插入图片描述

通常我们需要先观察数据然后再决定准备尝试怎样的模型。另外,我们可以令:
x 2 = x 2 2 , x 3 = x 3 3 x_{2}=x_{2}^{2},x_{3}=x_{3}^{3} x2​=x22​,x3​=x33​,从而将模型转化为线性回归模型。
根据函数图形特性,我们还可以使:
h θ ( x ) = θ 0 + θ 1 ( s i z e ) + θ 2 ( s i z e ) 2 h_{\theta}(x)=\theta_{0}+\theta_{1}(size)+\theta_{2}(size)^{2} hθ​(x)=θ0​+θ1​(size)+θ2​(size)2
或者:
h θ ( x ) = θ 0 + θ 1 ( s i z e ) + θ 2 s i z e h_{\theta}(x)=\theta_{0}+\theta_{1}(size)+\theta_{2}\sqrt{size} hθ​(x)=θ0​+θ1​(size)+θ2​size
注:如果我们采用多项式回归模型,在运行梯度下降算法前,特征缩放非常有必要。

3.7 正规方程

3.7.1 定义与计算过程

正规方程是一种用于求解线性回归模型参数的方法,它直接通过数学公式计算得出参数的解析解。以下是正规方程的计算步骤:
假设我们有以下线性回归模型:
y = X θ + ϵ y = X\theta + \epsilon y=Xθ+ϵ
其中:

  • y y y是一个大小为 ( n , 1 ) (n, 1) (n,1)的向量,表示观测到的目标值。
  • X X X是一个大小为 ( n , m ) (n, m) (n,m)的矩阵,表示特征值,每一行对应一个样本,每一列对应一个特征,并且 X X X通常包含一个全为1的列,代表截距项 θ 0 \theta_0 θ0​。
  • θ \theta θ是一个大小为 ( m , 1 ) (m, 1) (m,1)的向量,表示模型参数。
  • ϵ \epsilon ϵ是一个大小为 ( n , 1 ) (n, 1) (n,1)的向量,表示误差项。
    正规方程的目标是最小化平方误差,即最小化以下损失函数:
    J ( θ ) = 1 2 n ( X θ − y ) T ( X θ − y ) J(\theta) = \frac{1}{2n} (X\theta - y)^T (X\theta - y) J(θ)=2n1​(Xθ−y)T(Xθ−y)
    为了找到使 J ( θ ) J(\theta) J(θ)最小的 θ \theta θ,我们需要对 J ( θ ) J(\theta) J(θ)关于 θ \theta θ进行求导,并令导数等于零。以下是计算步骤:
  1. 变形
    J ( θ ) = 1 2 n ( X θ − y ) T ( X θ − y ) = 1 2 n ( θ T X T − y T ) ( X θ − y ) J(\theta)=\frac{1}{2n}(X\theta-y)^T(X\theta-y)=\frac{1}{2n}(\theta^TX^T-y^T)(X\theta-y) J(θ)=2n1​(Xθ−y)T(Xθ−y)=2n1​(θTXT−yT)(Xθ−y)
    = 1 2 n ( θ T X T X θ − θ T X T y − y T X θ − y T y ) =\frac{1}{2n}(\theta^TX^TX\theta-\theta^TX^Ty-y^TX\theta-y^Ty) =2n1​(θTXTXθ−θTXTy−yTXθ−yTy)

  2. 求导
    ∂ J ( θ ) ∂ θ = ∂ ∂ θ [ 1 2 n ( θ T X T X θ − θ T X T y − y T X θ − y T y ) ] \frac{\partial J(\theta)}{\partial \theta} = \frac{\partial}{\partial \theta} \left[ \frac{1}{2n}(\theta^TX^TX\theta-\theta^TX^Ty-y^TX\theta-y^Ty)\right] ∂θ∂J(θ)​=∂θ∂​[2n1​(θTXTXθ−θTXTy−yTXθ−yTy)]
    这里对矩阵求导,需要用到以下2个矩阵的求导法则:
    d A B d B = A T \frac{dAB}{dB}=A^T dBdAB​=AT
    d X T A X d X = 2 A X \frac{dX^TAX}{dX}=2AX dXdXTAX​=2AX

  3. 应用法则
    ∂ J ( θ ) ∂ θ = 1 2 n ( 2 X T X θ − X T y − ( y T X ) T − 0 ) \frac{\partial J(\theta)}{\partial \theta}=\frac{1}{2n}(2X^TX\theta-X^Ty-(y^TX)^T-0) ∂θ∂J(θ)​=2n1​(2XTXθ−XTy−(yTX)T−0)
    = 1 2 n ( 2 X T X θ − X T y − X T y − 0 ) = 1 n X T X θ − X T y =\frac{1}{2n}(2X^TX\theta-X^Ty-X^Ty-0)=\frac{1}{n}X^TX\theta-X^Ty =2n1​(2XTXθ−XTy−XTy−0)=n1​XTXθ−XTy

  4. 令导数等于零
    1 n X T ( X θ − y ) = 0 \frac{1}{n} X^T (X\theta - y) = 0 n1​XT(Xθ−y)=0

  5. 求解 θ \theta θ
    θ = ( X T X ) − 1 X T y \theta = (X^T X)^{-1} X^T y θ=(XTX)−1XTy
    这就是正规方程的解。注意,这里假设 X T X X^T X XTX是可逆的,即矩阵 X X X的列是线性独立的。如果 X X X包含一个全为1的列作为截距项,那么 X T X X^T X XTX通常总是可逆的。

3.7.2 Python代码实现

在实际应用中,计算 β \beta β时,我们会使用数值计算库(如 NumPy)来计算矩阵的逆和乘法,因为手动计算这些矩阵运算是非常复杂和耗时的。下面是一个使用 Python 和 NumPy 来计算正规方程解的简单示例:

import numpy as np

# 假设 X 是特征矩阵,y 是目标值向量
X = np.array([[1, x1], [1, x2], ..., [1, xn]])  # 包含截距项
y = np.array([y1, y2, ..., yn])

# 使用 NumPy 计算正规方程解
beta = np.linalg.inv(X.T @ X) @ X.T @ y

3.7.3 与梯度下降的比较

特性正规方程 (Normal Equation)梯度下降 (Gradient Descent)
原理一次运算,直接得出解析解多次迭代,逐步逼近最优解
计算复杂度 O ( n 3 ) O(n^3) O(n3),适用于特征较少的情况 O ( k n 2 ) O(kn^2) O(kn2),k 是迭代次数,适用于特征较多的情况
适用性特征数量较少时更有效,否则运算代价大。(通常适用n<10000)特征数量非常多时更适用
学习率不需要选择学习率需要选择合适的学习率,影响收敛速度和结果
优点一次计算得出结果,不需要迭代适用于大规模数据集,灵活性好
缺点当特征非常多时,计算量大,可能不适用需要多次迭代,学习率选择不当可能导致问题
数据要求特征不能有严重的多重共线性特征需要归一化,以保证收敛速度
局部最小值对于线性回归,正规方程总能得到全局最小值对于非线性问题,可能会卡在局部最小值

总结,只要特征变量的数目并不大,标准方程是一个很好的计算参数 θ \theta θ的替代方法。

标签:吴恩达,frac,TX,机器,梯度,特征,多维,theta,partial
From: https://blog.csdn.net/bff66/article/details/140755367

相关文章

  • 人形机器人时代已来,解锁未来智能奥秘
    人形机器人市场规模正急剧扩张。EtherCAT通讯以其高速、灵活、可靠的优势成为关键驱动力。致远电子的MiniPCIe-2EEtherCAT主站通讯卡,以技术创新助力人形机器人行业的高效发展。&nbsp;&nbsp;工业机器人解决方案在AI大模型的强大赋能下,人形机器人技术正以前所未有的速度演......
  • 【机器学习】必会核函数之:多项式核函数
    多项式核函数1、引言2、多项式核函数2.1定义2.2核心原理2.3实现步骤2.4应用场景2.5代码示例3、总结1、引言多项式核函数(PolynomialKernel)是一种用于机器学习,尤其是支持向量机(SVM)中的核函数。它通过计算输入数据的多项式变换,映射到一个更高维度的特征......
  • 一维\多维数组
     一、声明数组变量必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:dataType[]arrayRefVar; //首选的方法或dataTypearrayRefVar[]; //效果相同,但不是首选方法注意:建议使用dataType[]arrayRefVar的声明风格声明数组变量。dataTypearrayRefV......
  • 如何在GCP机器上安装pypiwin32模块?
    我想在python中导入win32com然后我使用pipinstallpypiwin32pipinstallpywin32python-mpipinstallpypiwin32python-mpipinstallpywin32导入,但是没有成功并收到错误通知Defaultingtouserinstallationbecausenormalsite-pac......
  • Linkedin 自动化连接机器人与搜索人员
    我确实有一个副业项目,我发现它非常具有挑战性,同时也非常有趣。所以!想法很简单!使用Selenium!登录Linkedln!转到带有您的参数的搜索链接-在我的例子中是技术。招聘人员。每页有10个按钮。按钮的状态为“连接”、“关注”或“消息”目标是每次我检查按钮时,如果它是......
  • 【机器学习】探索图神经网络 (GNNs): 揭秘图结构数据处理的未来
       ......
  • 机器学习算法——常规算法,在同的业务场景也需要使用不同的算法(一)
    ......
  • C++自学笔记29(多维数组)
    我们在之前的笔记中知道数组解决了重复变量的赋值问题,也知道数组就是指针可以用指针的方式修改内容。现在有一个数组对50个变量赋值a[50],我们有50个这样的数组a[50][50],对于这样的数组我们还有50个a[50][50][50]。这就是一维数组、二维数组、三维数组......我们拿堆上建立......
  • 2024最新一元云购源码.完美运营版.机器人自动下单.可指定中奖.一元购源码.一元夺宝源
    2024年最新云购源码一元云购H5新版本新UI 完美运行版•带易支付接口机器人自动购买•可指定中奖云购演示站:yun.6323g.com/ 源码下载链接:https://pan.baidu.com/s/1UsSE3IX_um_eAEcMIBLpHA?pwd=akjd 提取码:akjd  免责声明:该资源仅供学习和研究使用,一切关于该资源......
  • 数组基础、多维数组、静态Array
    数组:一组数据。本身是一种类型(引用类型),但它中存储的元素(项)也有数据类型,数组只能用来存储类型相同的强类型的数据,比如班级只能用来存放学生,不能放别的。数组在内存中是按定长连续来存储的,具有相同数据类型的数据元素的有序集合。inta=10;//一个数据boolb=true;//一......