前言


一、多维特征

在前面只探讨了单变量/特征的回归模型,然而,在实际生活中,多重因素构成一个含有多个变量的模型,模型中的特征为(𝑥1, 𝑥1, . . . , 𝑥𝑛)

eg:在这里插入图片描述
在实际生活中,有卧室的数量,楼层的数量…都会影响房价的

符号约定:

n : 特征的数量
𝑥(𝑖) : 第 𝑖 个训练实例,是特征矩阵中的第𝑖行,是一个向量( vector)
x j ( i ) : 特 征 矩 阵 中 第 𝑖 行 的 第 𝑗 个 , 第 𝑖 个 训 练 实 例 的 第 𝑗 个 特 征 x_j^{(i)} :特征矩阵中第 𝑖 行的第 𝑗个,第 𝑖 个训练实例的第 𝑗 个特征 xj(i):ij,ij
支持多变量的假设函数h: ℎ𝜃(𝑥) = 𝜃0 + 𝜃1𝑥1 + 𝜃2𝑥2+. . . +𝜃𝑛𝑥𝑛

$$ 第2个训练样本:𝑥^{(2)} =\begin{bmatrix} 1416  \ 40 \3 \ 2 \end{bmatrix}\$$

第 二 个 样 本 的 第 二 个 特 征 和 第 三 个 特 征 : 𝑥 2 ( 2 ) = 3 , 𝑥 3 ( 2 ) = 2 第二个样本的第二个特征和第三个特征:𝑥_2^{(2)} = 3, 𝑥_3^{(2)} = 2 x2(2)=3,x3(2)=2

假设函数中有𝑛 + 1个参数和𝑛个变量,为了使得公式能够简化,引入𝑥0 = 1,则公式为: ℎ𝜃(𝑥) = 𝜃0𝑥0 + 𝜃1𝑥1 + 𝜃2𝑥2+. . . +𝜃𝑛𝑥𝑛

此时模型中的参数是一个𝑛 + 1维的向量,任何一个训练实例也都是𝑛 + 1维的向量,特征矩阵𝑋的维度是 𝑚 ∗ (𝑛 + 1)。 所以公式可以简化为:ℎ𝜃(𝑥) = 𝜃^𝑇𝑋,其中上标𝑇代表矩阵转置

二、多变量梯度下降

与单变量线性回归一样的,在多变量线性回归中,构建一个代价函数,则代价函数是所有建模误差的平方和,以下是假设函数和代价函数
在这里插入图片描述
在多变量线性回归中,目标和单变量线性回归问题中一样,是要找出使得代价函数最小的一系列参数

多变量线性回归的批量梯度下降算法为:
在这里插入图片描述
单变量线性回归与多变量线性回归对比:
在这里插入图片描述
开始随机选择一系列的参数值,计算所有的预测结果后,再给所有的参数一个新的值,如此循环直到收敛

代码

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

1.特征缩放

对于处理多维特征问题,若保证了这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛

eg:
假设有两个特征,房屋的尺寸和房间的数量,尺寸的值为 0-2000 平方英尺,房间数量的值则是 0-5,以两个参数分别为横纵坐标,绘制代价函数的等高线图,如图,图像显得很扁,梯度下降算法需要迭代多次才能收敛
在这里插入图片描述

特征缩放:将所有特征的尺度都尽量缩放到-1 到 1 之间
在这里插入图片描述

在概率论中,归一化:𝑥𝑛 = (𝑥𝑛−𝜇𝑛)/ 𝑠𝑛,其中 𝜇𝑛是平均值, 𝑠𝑛是标准差

2.学习率

梯度下降算法收敛所需要的迭代次数根据模型的不同而不同,不能提前预知,可以绘制迭代次数和代价函数的图表来观测算法在何时趋于收敛
在这里插入图片描述
也可以通过自动测试是否收敛的方法,例如将代价函数的变化值与某个阀值(例如 0.001)进行比较

一般推荐使用第一种画代价函数的图像,更直观,效果更好

前面我们知道梯度下降算法的每次迭代受到学习率的影响,如果学习率𝑎过小,则达到收敛所需的迭代次数会非常高;如果学习率𝑎过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛,通常可以考虑尝试些学习率:𝛼 = 0.01, 0.03, 0.1, 0.3, 1, 3, 10 缓慢增加

三、多项式回归

1.特征选择

通过定义新的特征,可能会得到一个更好地模型
eg: 假设两个特征,分别是房子临街的宽度(frontage)和垂直宽度(depth),则可以建立一个线性回归模型:
在这里插入图片描述
但是当在运用线性回归时,不一定非要使用直接给出的x1 , x2,可以定义一个新的特征,例如在上述预测房价的例子中,可以认为能够决定房子大小的是所拥有的土地面积的大小,因此定义一个新特征area=𝑓𝑟𝑜𝑛𝑡𝑎𝑔𝑒 ∗ 𝑑𝑒𝑝𝑡ℎ, 则假设函数为:ℎ𝜃(𝑥) = 𝜃0 + 𝜃1𝑥

线性回归并不适用于所有数据,有时需要曲线来适应数据集,比如下图的数据集,如果用直线来拟合效果会很差的。
在这里插入图片描述
在上图中二次函数对数据前半段拟合的很好,但是后半段由于二次函数的性质,曲线下降,不能很好地拟合后半段数据,所以这里三次或者多元函数更适合。可以使用多元线性回归(multiple linear regression)的方法将模型与数据进行拟合
在这里插入图片描述
另外,可以令:𝑥^2 = 𝑥2, 𝑥^3 = 𝑥3,从而将模型转化为线性回归模型

2.正规方程

前面,都是使用梯度下降算法,去解决代价函数最小化问题,但是对于某些线性回归问题,使用正规方程(只需要一步就能得到最优值)可以更加简便。

在这里插入图片描述
正规方程是通过求解导数值为0的方程来找出使得代价函数最小的参数的,但是,参数𝜃一般不是一个实数,而是一个n+1维的向量,代价函数是这个向量的函数,将它的导数全部置0,求出全部的𝜃
在这里插入图片描述
假设训练集特征矩阵为 𝑋(包含了 𝑥0 = 1)并且训练集结果为向量 𝑦,则利用正规方程解出向量 𝜃 = (𝑋𝑇 𝑋)(−1)𝑋𝑇𝑦

注:上标 T 代表矩阵转置,上标-1 代表矩阵的逆

eg:
数据集
在这里插入图片描述
了在上述数据中实现正规方程法,要在数据集中加上一列,以对应额外的特征变量x0
构建矩阵X ,它包含了训练样本的所有特征变量,以及向量y, 它包含了所有的预测值
在这里插入图片描述
则矩阵X和向量y通过下面的公式来计算使得代价函数最小化的θ
在这里插入图片描述
即:
在这里插入图片描述

矩阵X称为设计矩阵(design matrix),构建设计矩阵的方法,就是取第一个训练样本,也就是第一个向量,取它的转置,作为设计矩阵的第一行,以此类推
注:要在数据集中加上一列,以对应额外的特征变量x0

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

正规方程的 python 实现:

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

3.正规方程不可逆性

求解正规方程中参数θ的公式中,需要求矩阵(XT X )可逆,但是,如果不可能用这种方法求解,程序还是会解出正确的解

矩阵不可逆通常有两种最常见的原因

(1)特征值相关联,即𝑥1 = 𝑥2 ∗k
(2)特征值过多(在样本𝑚小于或等于特征值 n 的时候)

eg:
在预测住房价格时,如果𝑥1是以英尺为尺寸规格计算的房子, 𝑥2是以平方米为尺寸规格计算的房子(1 米等于3.28 英尺),这两个特征值将始终满足约束: 𝑥1 = 𝑥2 ∗(3.28)2,可以用一个线性方程,来描述两个相关联的特征值,矩阵𝑋′𝑋将是不可逆的

eg:
有𝑚等于 10 个的训练样本和有𝑛等于 100 的特征数量,要找到适合的(𝑛 + 1) 维参数矢量𝜃,尝试从 10 个训练样本中找到满足 101 个参数的值,花费的代价大

使用小数据样本以得到101 个参数,通常会使用一种叫做正则化的线性代数方法,通过删除某些特征或者是使用某些技术,来解决当𝑚比𝑛
小的时候的问题

当发现的矩阵𝑋′𝑋的结果是奇异矩阵,或者找到的其它矩阵是不可逆的首先应该通过观察所有特征检查是否有多余的特征(𝑥1和𝑥2是线性相关的,互为线性函数),如果有多余的就删除掉,直到他们不再是多余的为止,如果特征数量实在太多,删除一些用较少的特征来反映尽可能多内容, 否则会考虑使用正规化方法

4.推导证明

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


总结

提示:这里对文章进行总结:

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐