单变量线性回归 (Linear regression with one variable / Univariate linear regression)
多变量线性回归 (Linear regression with multiple variables / Multivariate linear regression)
假设函数表示对于某一个输入样本 x x x,返回对应预测的值 h h h,而真实值是 y y y。
假设函数基于参数 θ \theta θ,其表达式如下:
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n\\ hθ(x)=θ0+θ1x1+θ2x2+...+θnxn
另外的定义 x 0 = 1 x_0=1 x0=1,那么假设函数就可以通过两个向量的乘积来表示:
x = [ x 0 x 1 x 2 . . . x n ] θ = [ θ 0 θ 1 θ 2 . . . θ n ] x=\begin{bmatrix}x_0\\x_1\\x_2\\.\\.\\.\\x_n\end{bmatrix}\qquad \theta=\begin{bmatrix}\theta_0\\\theta_1\\\theta_2\\.\\.\\.\\\theta_n\end{bmatrix} x=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡x0x1x2...xn⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤θ=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡θ0θ1θ2...θn⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
h θ ( x ) = θ 0 x 0 + θ 1 x 1 + . . . θ n x n = θ T x \begin{aligned} h_\theta(x) &=\theta_0x_0+\theta_1x_1+...\theta_nx_n\\ &=\theta^Tx \end{aligned} hθ(x)=θ0x0+θ1x1+...θnxn=θTx
代价函数用于评判模型的好坏,类似于假设函数所得值与实际值的方差:
J ( θ 0 , θ 1 , . . . , θ n ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta_0,\theta_1,...,\theta_n)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 J(θ0,θ1,...,θn)=2m1i=1∑m(hθ(x(i))−y(i))2
“Batch” Gradient Descent
“Batch”: Each step of gradient descent uses all the training examples.
n n n个特征的梯度下降一般算法:
r e p e a t u n t i l c o n v e r g e n c e { θ j : = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 . . . θ n ) } \begin{aligned} & repeat\;until\;convergence\;\{\\ & \qquad \theta_j:=\theta_j-\alpha \frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1...\theta_n)\\ & \}\\ \end{aligned} repeatuntilconvergence{ θj:=θj−α∂θj∂J(θ0,θ1...θn)}
化简一下就可得:
r e p e a t u n t i l c o n v e r g e n c e { θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ∗ x j ( i ) } \begin{aligned} & repeat\;until\;convergence\;\{\\ & \qquad \theta_j:=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})*x_j^{(i)} \\ & \}\\ \end{aligned} repeatuntilconvergence{ θj:=θj−αm1i=1∑m(hθ(x(i))−y(i))∗xj(i)}
用后面所说的设计矩阵表示的话会更加简单:
r e p e a t u n t i l c o n v e r g e n c e { θ : = θ − α 1 m ( X θ T − y ) T X } \begin{aligned} & repeat\;until\;convergence\;\{\\ & \qquad \theta:=\theta-\alpha\frac{1}{m}(X\theta^T-y)^TX \\ & \}\\ \end{aligned} repeatuntilconvergence{ θ:=θ−αm1(XθT−y)TX}
α \alpha α (Learning rate): 控制参数 θ \theta θ变化的快慢
梯度(Gradient) 也就是下降速度,表示为斜率,每个参数按照不同方向的斜率,尽快的下降。越接近最小值,变化速率也会随着斜率的减小自动的减小。
梯度下降很容易陷入局部最优,只要初始值偏离一点,最后也可能会落在不同的最优处。
但是对于线性回归来说,所有的函数都是凸函数,也就是说局部最优就是全局最优。
在多元线性回归中,两个变量范围相差太大,每一次迭代的步子都可能会非常小,也就需要很多的迭代次数。
特征缩放的目的是让所有的变量 x i x_i xi取值都在 − 1 ≤ x i ≤ 1 -1\le x_i\le 1 −1≤xi≤1 之间。吴恩达给出的上下限: ( − 3 , 3 ) , ( − 1 3 , 1 3 ) (-3,3), (-\frac{1}{3},\frac{1}{3}) (−3,3),(−31,31)
均值归一(Mean normalization): x i = x i − μ i s i x_i=\frac{x_i-\mu_i}{s_i} xi=sixi−μi
μ i = x i 的平均值 \mu_i= x_i\text{的平均值} μi=xi的平均值
s i = x i 的取值范围 ( m a x − m i n ) s_i = x_i\text{的取值范围}\qquad (max-min) si=xi的取值范围(max−min)
对于 m m m 个样本, n n n 个特征 的训练,我们可以表示 m m m个输入 x ( i ) x^{(i)} x(i)和一个输出 y y y
把所有的特征向量 x ( i ) x^{(i)} x(i)构造出设计矩阵(design matrix) X X X。
x ( i ) = [ x 0 i x 1 i x 2 i . . . x n i ] ∈ R n + 1 X = [ ( x ( 1 ) ) T ( x ( 2 ) ) T . . . ( x ( m ) ) T ] y = [ y ( 1 ) y ( 2 ) . . . y ( m ) ] x^{(i)}= \begin{bmatrix} x_0^{i}\\ x_1^{i}\\ x_2^{i}\\ .\\ .\\ .\\ x_n^{i}\\ \end{bmatrix}\in \mathbb{R}^{n+1} \qquad\qquad X= \begin{bmatrix} (x^{(1)})^T\\ (x^{(2)})^T\\ .\\ .\\ .\\ (x^{(m)})^T \end{bmatrix} \qquad\qquad y= \begin{bmatrix} y^{(1)}\\ y^{(2)}\\ .\\ .\\ .\\ y^{(m)}\\ \end{bmatrix} x(i)=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡x0ix1ix2i...xni⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤∈Rn+1X=⎣⎢⎢⎢⎢⎢⎢⎡(x(1))T(x(2))T...(x(m))T⎦⎥⎥⎥⎥⎥⎥⎤y=⎣⎢⎢⎢⎢⎢⎢⎡y(1)y(2)...y(m)⎦⎥⎥⎥⎥⎥⎥⎤
那么就可以神奇的得到向量 θ \theta θ,里面的数就是最优的参数。
θ = ( X T X ) − 1 X T y \theta=(X^TX)^{-1}X^Ty θ=(XTX)−1XTy
与梯度下降相比,正则化不需要计算出 α \alpha α,也不需要多次的迭代。但如果 n n n太大,它的效率也不高,因为 X T X X^TX XTX是一个 n × n n\times n n×n的矩阵,求逆的复杂度是 O ( n 3 ) O(n^3) O(n3)
[1].吴恩达机器学习 第二章-单变量线性回归
[2].吴恩达机器学习 第五章-多变量线性回归
[3].黄海广博士笔记