[Machine Learning] 3 多变量线性回归(Linear Regression with Multiple Variables)

在这里插入图片描述

3 Linear Regression with Multiple Variables(多变量线性回归)

3.1 Multiple Features(多维特征)

在这里插入图片描述
在这里插入图片描述
注:实际上不一定是线性的,仅本例中使用线性。非线性也是此思想。

3.2 Gradient Descent for Multiple Variables(多变量梯度下降)

与单变量线性回归类似,在多变量线性回归中,同样也构建一个代价函数,则这个代价函数是所有建模误差的平方和,即:
在这里插入图片描述
目标和单变量线性回归问题中一样,是要找出使得代价函数最小的一系列参数。在这里插入图片描述
在这里插入图片描述
上图右边显示了多变量线性回归的批量梯度下降算法,其开始随机选择一系列的参数值,计算所有的预测结果后,再给所有的参数一个新的值,如此循环直到收敛。

python代码:

def computeCost(X, y, theta):
	inner = np.power(((X * theta.T) - y), 2)
	return np.sum(inner) / (2 * len(X))
3.2.1 Gradient Descent in Practice I - Feature Scaling (特征缩放)

在解决多维特征问题时,应该保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛。

以房价问题为例,假设有两个特征,房屋的尺寸和房间的数量,尺寸的值为 0-2000 平方英尺,而房间数量的值则是 0-5,以两个参数分别为横纵坐标,绘制代价函数等高线图能,看出图像会显得很扁,梯度下降算法需要非常多次的迭代才能收敛。
在这里插入图片描述
解决方法是尝试将所有特征的尺度都尽量缩放到-1 到 1 之间,即特征归一化。如图:
在这里插入图片描述

数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权,可以大大提高分类器的准确性。
其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上。

归一化公式:
在这里插入图片描述

3.2.2 Gradient Descent in Practice II - Learning Rate (学习率)

梯度下降算法收敛所需要的迭代次数根据模型的不同而不同,无法提前预知,但可以绘制迭代次数和代价函数的图表来观测算法在何时趋于收敛。
在这里插入图片描述
图像300~400已经相当平坦了,可推测到达400左右时梯度下降法差不多已经收敛了。

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

通常可以考虑尝试些学习率:
𝛼 =…,0.001,0.003,0.01,0.03,0.1,0.3,1,…

3.3 Features and Polynomial Regression(特征和多项式回归)

在这里插入图片描述
线性回归并不适用于所有数据,有时需要曲线来适应数据,比如,
一个二次方模型:在这里插入图片描述
或者三次方模型:在这里插入图片描述
在这里插入图片描述
根据函数图形特性,我们还可以使:
在这里插入图片描述
在这里插入图片描述
注:如果采用多项式回归模型,在运行梯度下降算法前,特征缩放非常有必要。

3.4 Normal Equation(正规方程)

正规方程是区别于迭代方法的直接计算解法,即直接求导数等于0的点。
在这里插入图片描述
假设训练集特征矩阵为 𝑋(包含了 𝑥0 = 1)并且训练集结果为向量 𝑦,则利用正规方程解出向量:在这里插入图片描述
例子:
在这里插入图片描述
注:对于不可逆的矩阵(通常是因为特征之间不独立,如同时包含英尺为单位的尺寸和米为单位的尺寸两个特征,也有可能是特征数量大于训练集的数量),正规方程方法是不能用的。

梯度下降与正规方程的比较
在这里插入图片描述
注:只要特征变量的数目并不大,标准方程是一个很好的计算参数𝜃的替代方法。具体地说,只要特征变量数量小于一万,通常使用标准方程法,而不使用梯度下降法。

Normal Equation Noninvertibility(正规方程及不可逆性)
在这里插入图片描述

python实现正规方程:

import numpy as np
 def normalEqn(X, y):
   #可逆使用inv
   theta = np.linalg.inv(X.T@X)@X.T@y #X.T@X
   #不可逆则使用pinv
   theta = np.linalg.pinv(X.T@X)@X.T@y #X.T@X
   return theta

在这里插入图片描述
在这里插入图片描述

上一篇:2 单变量线性回归(Linear Regression with One Variable)
下一篇:4 逻辑回归(Logistic Regression)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值