线性回归(Linear Regression)
单变量线性回归 (Linear regression with one variable / Univariate linear regression)
多变量线性回归 (Linear regression with multiple variables / Multivariate linear regression)
标记符号:
-
m — 训练样本的数量
-
x — 输入变量/特征
-
y — 输出变量
-
(x,y) — 一个训练样本
-
(x(i),y(i)) — 第i个训练样本
-
n — 特征的数量
-
x(i) — 第i个样本输入
-
xj(i) — 第i个样本输入的第j个特征

假设函数(Hypothesis)
hθ(x)=θ0+θ1x1+θ2x2+...+θnxn
另外的定义 x0=1,那么假设函数就可以通过两个向量的乘积来表示:
x=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡x0x1x2...xn⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤θ=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡θ0θ1θ2...θn⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
hθ(x)=θ0x0+θ1x1+...θnxn=θTx
代价函数(Cost Function)
J(θ0,θ1,...,θn)=2m1i=1∑m(hθ(x(i)−y(i)))2
梯度下降(Gradient Descent )
“Batch” Gradient Descent
“Batch”: Each step of gradient descent uses all the training examples.
n个特征的梯度下降一般算法:
repeatuntilconvergence{θj:=θj−α∂θj∂J(θ0,θ1...θn)}
-
α (Learning rate): 控制参数θ变化的快慢
- 如果 α 太小,梯度下降就会太慢
- 如果 α 太大,在跌倒中,有可能越过最低点,代价函数 J(θ) 可能会上升; 最后不能收敛(converge),甚至发散(diverge)。
- 对于α, 可以这样一次乘三倍的去尝试 ...,0.001,0.003,0.01,0.03,0.1,0.3,1,...
-
梯度(Gradient) 也就是下降速度,表示为斜率,每个参数按照不同方向的斜率,尽快的下降。越接近最小值,变化速率也会随着斜率的减小自动的减小。
J(θ0,θ1...θn)∂θj∂J(θ0,θ1...θn)=2m1i=1∑m(θ0+θ1x1(i)+...+θnxn(i)−y(i))2=J(θ0+θ1x1(i)+...θnxn(i)−y(i))∗xj(i)
- 梯度下降很容易陷入局部最优,只要初始值偏离一点,最后也可能会落在不同的最优处。
- 但是对于线性回归来说,所有的函数都是凸函数,也就是说局部最优就是全局最优。
特征缩放(Feature Scaling)
-
在多元线性回归中,两个变量范围相差太大,每一次迭代的步子都可能会非常小,也就需要很多的迭代次数。
-
特征缩放的目的是让所有的变量xi取值都在 −1≤xi≤1 之间。吴恩达给出的上下限:(−3,3),(−31,31)
-
均值归一(Mean normalization): xi=sixi−μi
μi=xi的平均值
si=xi的取值范围(max−min)
多项式回归(Polynomial regression)
- 对于多项式模型的假设函数,如:hθ=θ0+θ1x+θ2x2+θ3x3,可以令x1=x,x2=x2,x3=x3,然后使用普通线性回归的梯度下降即可。
- 通常需要特征缩放。
正规方程(Normal Equation)
对于 m 个样本,n 个特征 的训练,我们可以表示m个输入x(i)和一个输出y
把所有的特征向量x(i)构造出设计矩阵(design matrix)X。
x(i)=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡x0ix1ix2i...xni⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤∈Rn+1X=⎣⎢⎢⎢⎢⎢⎢⎡(x(1))T(x(2))T...(x(m))T⎦⎥⎥⎥⎥⎥⎥⎤y=⎣⎢⎢⎢⎢⎢⎢⎡y(1)y(2)...y(m)⎦⎥⎥⎥⎥⎥⎥⎤
那么就可以神奇的得到向量θ,里面的数就是最优的参数。
θ=(XTX)−1XTy
与梯度下降相比,正则化不需要计算出α,也不需要多次的迭代。但如果n太大,它的效率也不高,因为XTX是一个n×n的矩阵,求逆的复杂度是O(n3)
- 一般情况下XTX都是可以求逆的,就算不可以求逆,Octave里的函数pinv也能够计算出逆。
- 不可求逆的一般原因:
- 特征之间线性依赖,存在多余的特征
- 特征过多 (m≤n)
- 删除掉无关特征,或者使用正则化(regularization)
参考资料
[1].吴恩达机器学习 第二章-单变量线性回归
[2].吴恩达机器学习 第五章-多变量线性回归
[3].黄海广博士笔记