吴恩达机器学习2-多变量线性回归(Linear Regression with Multiple Variables)

吴恩达机器学习2-多变量线性回归(Linear Regression with Multiple Variables)

多维特征

以房价模型为例,现在引入多个特征,例如房间数量,离主干道的距离等等构成一个含有多个变量的模型,模型中的特征为(𝑥1, 𝑥1, . . . , 𝑥𝑛)。
在这里插入图片描述
𝑛 代表特征的数量
𝑥(𝑖)代表第 𝑖 个训练实例,是特征矩阵中的第𝑖行,是一个向量(vector)
比方说,上图的
在这里插入图片描述
𝑥𝑗(𝑖)代表特征矩阵中第 𝑖 行的第 𝑗 个特征,也就是第 𝑖 个训练实例的第 𝑗 个特征。
如上图的𝑥2(2) = 3, 𝑥3(2) = 2,
支持多变量的假设 ℎ 表示为:
在这里插入图片描述
这个公式中有𝑛 + 1个参数和𝑛个变量,为了使得公式能够简化一些,引入𝑥0 = 1,则公式转化为:
在这里插入图片描述
此时模型中的参数是一个𝑛 + 1维的向量,任何一个训练实例也都是𝑛 + 1维的向量,特征矩阵𝑋的维度是 𝑚 ∗ (𝑛 + 1)。 因此公式可以简化为:
在这里插入图片描述
其中上标𝑇代表矩阵转置。

梯度下降

与单变量的相似,我们也构建一个代价函数
在这里插入图片描述
其中:
在这里插入图片描述
批量梯度下降算法为
在这里插入图片描述
计算代价函数的python代码:

def computecost(X,y,theta):
	inner = np.power(((X * theta.T) - y), 2 )#np.power是计算次方
	return np.sum(inner) / (2 * len(X)))

特征缩放

在多维变量中,不排除存在一些数量级很大的数字。举个例子,就房屋的模型来看,影响特征中,有房间的个数,距离城区的距离,一个仅仅个位数,了一个可能上千位。以两个参数分别为横纵坐标,绘制代价函数的等高线图能,看出图像会显得很扁,梯度下降算法需要非常多次的迭代才能收敛。

解决的方法是将所有特征尺度收缩到-1到1之间,最简单的方法是:
在这里插入图片描述

学习率

学习率就相当于盲人下山每一次的步长
如果学习率𝑎过小,则达到收敛所需的迭代次数会非常高;
如果学习率𝑎过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。
通常可以考虑尝试些学习率:
𝛼 = 0.01,0.03,0.1,0.3,1,3,10

特征和多项式回归

有时候线性回归不一定适用于全部数据,此时需要曲线来适应我们的数据,比如二次方程模型,三次方程模型等等
注意:采用多项式回归模型,运行梯度下降算法的时候,特征缩放是必须的。

正规方程

正规方程和梯度下降都可以解决线性回归的问题,且各有各的优点

梯度下降正规方程
需要选择学习率不需要
需要多次迭代一次运算得出
特征量n巨多时较好使用不适用超大量特征的数据
适用于各种模型只能用线性模型,不适用逻辑回归等

总结一下,只要特征变量的数目并不大,标准方程是一个很好的计算参数𝜃的替代方法,具体地说,只要特征变量数量小于一万,我通常使用标准方程法,而不使用梯度下降法。
在这里插入图片描述
正规方程解出向量:
在这里插入图片描述
上标 T 代表矩阵转置,上标-1 代表矩阵的逆
在这里插入图片描述
代码实现正规方程

import numpy as np
def normaleqn(X,y):
	theta = np.linalg.inv(X.T@X)@X.T@y#linalg。int是求逆矩阵,@相当于dot()运算矩阵积
	return theta
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值