4.多变量线性回归
1. 多元线性回归
1. 单变量线性回归
假设函数: \(h_\theta(x) = \theta_0 + \theta_1x\)
2. 多元线性回归
记号:
\(n\) = number of features 表示特征的数量
\(x^{(i)}\)= input (features) of \(i^{th}\) training example.表示第i个样本的输入特征(特征向量), 比如 x(2) 表示第二个训练样本的特征向量;
在这种记法中,上标2是训练集的一个索引,对应着表格中的第二行,即第二个训练样本, 此时x(2)是一个四维向量
\(x^{i}_j\)= value of feature \(j\) in \(i^{th}\) training example. 表示第i个训练样本中第j个特征量的值
假设函数:
2. 梯度下降应用于多元线性回归
只有一个特征值的情况:
Repeat until convergence {
}
(simultaneously update)
多个特征值的情况:
Repeat until convergence {
}
(simultaneously update \(\theta_j\) for \(j=0, 1, ..., n\) )
例如:两个或更多个特征值
3. 梯度下降的实用技巧-特征缩放
假设有一个机器学习问题,这个问题有多个特征,如果能够确保这些特征都处在一个相近的范围,
即确保不同特征的取值在相近的范围内,这样梯度下降法就能很快地收敛
案例:
\(x_1\)= size (0-2000 \(feet^2\))
\(x_2\) = number of bedrooms (1-5)
暂时忽略θ0,如果x1的取值范围远远大于x2的取值范围的话,最终画出来的代价函数J(θ)的等高线会又瘦又高
如果在这种代价函数上运行梯度下降的话,梯度可能会花费很长一段时间并且可能来回波动,然后会经过很长
时间最终才收敛到最小值
在这种情况下,一种有效的方法是进行特征缩放
1. 特征缩放的方法1:除以特征的最大值
\(x_1\)= \(\frac{size (feet^2)}{2000}\)
\(x_2\) = \(\frac{number \quad of \quad bedrooms}{5}\)
此时代价函数J(θ)的等高线就会变得偏移没那么严重, 即可能看起来更圆一些
在这样的代价函数上执行梯度下降的话,梯度下降算法更容易找到一条通向全局最小的路径
一般地,在执行特征缩放时,我们通常的目的是将特征的取值约束到-1到1的范围内
不用介意特征是否完全在相同的范围或区间内,只要他们足够接近,梯度下降法就会正常工作
经验值:-3 to 3 -1/3 to 1/3 最好不要超过-3 to 3, 不要小于 -1/3 to 1/3
2. 特征缩放的方法2:均值归一化
如果有一个特征xi,用xi-ui来替换xi(ui为特征xi的平均值),从而让特征值具有为0的平均值(不适用于x0)
更一般地,用(xi-ui)/si来替换xi(ui为特征xi的平均值,si为特征xi的范围 最大值-最小值)
4. 梯度下降的实用技巧-学习率
If α is too small: slow convergence.
If α is too large: J(θ) may not decrease on every iteration; may not converge.
绘制J(θ)随代价函数变化的曲线,可以帮助我们弄清楚到底发生了什么
在为梯度下降算法选择合适的学习率时,按3的倍数来取值,尝试一系列α值,直到找到
一个最小的值,再找到一个太大的值,取最大可能值或者比最大值略小一些的比较合
理的值,这样就可以得到一个不错的学习率
5. 特征和多项式回归
特征:
选择合适的特征
有时通过定义新的特征,可能会得到一个更好的模型
多项式回归:
-
如何将一个多项式如一个二次函数或一个三次函数拟合到数据上;
-
它使得我们能够使用线性回归的方法来拟合非常复杂的函数,甚至是非线性函数
特征选择:
通过选择不同的特征,有时可以得到更好的模型
6. 正规方程
正规方程:提供了一种求θ的解析解法,即不再需要运行迭代算法,而是可以直接一次性求解θ的最优值,
即一步得到最优值
引例:
实现特征方程的步骤:
案例:
-
在数据集中加上一列,对应额外特征变量 \(x_0\), 它的取值永远是 1
-
构建一个矩阵 X,这个矩阵基本包含了训练样本的所有特征变量
-
构建一个向量 y,包含所有的预测值
-
通过公式 \(θ=(X^TX)^{-1}X^Ty\), 得到使代价函数最小的 \(θ\)
一般情况:
梯度下降法和正规方程法对比:
梯度下降:
- Need to choose α. 需要选择α
- Needs many iterations 需要许多次迭代
- Works well even when \(n\) is large. 当n非常大时依然运行良好
正规方程:
- No need to choose α . 不想需要选择α
- Don’t need to iterate. 不需要迭代
- Need to compute \((X^TX)^{-1}\) 需要计算\((X^TX)^{-1}\), 一般来说,实现逆矩阵计算的代价以
矩阵维度的3次方增长 - Slow if \(n\) is very large 如果n非常大会很慢
总结:
如果n比较小(X维度小于100000),使用正规方程法比较好;
如果n比较大(X维度大于100000),使用梯度下降法比较好
7. 正规方程和不可逆
如果\(X^TX\) 不可逆?
Octave有两个函数来求解矩阵的逆,pinv(伪逆),inv(逆);其实使用pinv计算θ的值,无论是否可逆,算法都能正常运行
如果\(X^TX\) 不可逆,通常有两种最常见的原因:
-
Redundant features (linearly dependent). 由于某些原因,学习的问题包含了多余的特征
\(x_1 = size \quad in \quad feet^2\)
\(x_2 = size \quad in \quad m^2\)
1m = 3.28feet
\(x_2 = (3.28)^2 x_1\)
x1 和 x2 可删除其中一个
-
Too many features (e.g. m<=n). 在运行的学习算法有很多特征
Delete some features, or use regularization. 删除一些特征或使用正则化的方法
正则化方法:可以让我们使用很多特征,来配置很多参数,即使有一个相对较小的训练集