【吴恩达机器学习笔记】线性回归模型之多变量线性回归
文章目录
- 1.多变量线性回归模型(Linear Regression with Multiple Variables)
- 1.1 假设函数(Hypothesis function)
- 1.2 代价函数(Cost function)
- 1.3 批量梯度下降法(Batch Gradient Descent Algorithm)
1.多变量线性回归模型(Linear Regression with Multiple Variables)
1.1 假设函数(Hypothesis function)
hθ(x)=θ0+θ1x1+θ2x2+...+θnxnh_θ(x) = θ_0 + θ_1x_1 + θ_2x_2 + ... + θ_nx_nhθ(x)=θ0+θ1x1+θ2x2+...+θnxn
为了表示方便,定义x0=1(即x0(i)=1)x_0=1(即x_0^{(i)}=1)x0=1(即x0(i)=1),从而
hθ(x)=θ0x0+θ1x1+θ2x2+...+θnxn=θTxh_θ(x) = θ_0x_0 + θ_1x_1 + θ_2x_2 + ... + θ_nx_n = θ^Txhθ(x)=θ0x0+θ1x1+θ2x2+...+θnxn=θTx
其中θ、x均为(n+1)维的列向量
注:模型参数(Parameters):θ1,θ2,...θn→θ_1,θ_2,...θ_n \toθ1,θ2,...θn→θ((n+1)维列向量)
1.2 代价函数(Cost function)
J(θ)=12m∑i=1m(hθ(x(i))−y(i))2J(θ) = \frac{1}{2m}\sum_{i=1}^{m}(h_θ(x^{(i)})-y^{(i)})^2J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2
其中,θ为m维的向量,x(i)x^{(i)}x(i)表示特征向量x在第i条样本的取值,y(i)y^{(i)}y(i)则表示第i条样本的标签值。
代价函数的向量形式:
J(θ)=12m(Xθ−y⃗)T(Xθ−y⃗)J(θ) = \frac{1}{2m}(Xθ-\vec y)^T(Xθ-\vec y)J(θ)=2m1(Xθ−y)T(Xθ−y)
其中,X=[⋯(x(1))T⋯⋯(x(2))T⋯⋮⋯(x(m))T⋯],y⃗=[y(1)y(2)⋮y(m)]X = \begin{bmatrix}
\cdots & (x^{(1)})^T & \cdots \\
\cdots & (x^{(2)})^T & \cdots \\
& \vdots & \\
\cdots & (x^{(m)})^T & \cdots
\end{bmatrix}, \qquad
\vec y = \begin{bmatrix}
y^{(1)} \\
y^{(2)} \\
\vdots \\
y^{(m)}
\end{bmatrix}X=⎣⎢⎢⎢⎡⋯⋯⋯(x(1))T(x(2))T⋮(x(m))T⋯⋯⋯⎦⎥⎥⎥⎤,y=⎣⎢⎢⎢⎡y(1)y(2)⋮y(m)⎦⎥⎥⎥⎤,x(i)x^{(i)}x(i)为行向量,X为m*(n+1)维的矩阵,y⃗\vec yy为m维列向量,θ为(n+1)维的列向量。
1.3 批量梯度下降法(Batch Gradient Descent Algorithm)
更新公式:
repeat until convergence{
θj=θj−α∂∂θjJ(θ)(forj=0,1,2,...,n+1)θ_j = θ_j - α \frac\partial{\partial θ_{j}}J(θ)(for j = 0,1,2,...,n+1)θj=θj−α∂θj∂J(θ)(forj=0,1,2,...,n+1)
}(同步更新θjθ_jθj)
将代价函数代入更新公式:
repeat until convergence{
θj=θj−α1m∑i=1m(h(θ)(x(i))−y(i))xj(i)(forj=0,1,2,...,n+1)θ_j = θ_j - α \frac{1}{m}\sum_{i=1}^{m}(h(θ)(x^{(i)})-y^{(i)})x_j^{(i)}(for j = 0,1,2,...,n+1)θj=θj−αm1i=1∑m(h(θ)(x(i))−y(i))xj(i)(forj=0,1,2,...,n+1)
}(同步更新θjθ_jθj)
进而将假设函数代入更新公式,有更新公式的向量形式:
repeat until convergence{
θj=θj−α1m(Xθ−y⃗)xjθ_{j} = θ_{j} - α \frac{1}{m}(Xθ-\vec{y})x_jθj=θj−αm1(Xθ−y)xj
}(同步更新θjθ_jθj)
其中,X=[⋯(x(1))T⋯⋯(x(2))T⋯⋮⋯(x(m))T⋯],y⃗=[y(1)y(2)⋮y(m)]X = \begin{bmatrix}
\cdots & (x^{(1)})^T & \cdots \\
\cdots & (x^{(2)})^T & \cdots \\
& \vdots & \\
\cdots & (x^{(m)})^T & \cdots
\end{bmatrix}, \qquad
\vec y = \begin{bmatrix}
y^{(1)} \\
y^{(2)} \\
\vdots \\
y^{(m)}
\end{bmatrix}X=⎣⎢⎢⎢⎡⋯⋯⋯(x(1))T(x(2))T⋮(x(m))T⋯⋯⋯⎦⎥⎥⎥⎤,y=⎣⎢⎢⎢⎡y(1)y(2)⋮y(m)⎦⎥⎥⎥⎤,x(i)x^{(i)}x(i)为行向量,X为m*(n+1)维的矩阵,y⃗\vec yy、xjx_jxj为m维列向量,θ为(n+1)维的列向量。
2.梯度下降算法中的实用技巧
2.1 特征缩放(Feature Scaling)
2.1.1 特征缩放目的:
特征缩放即使每个特征的值的范围在一个类似−1≤xi≤1-1\leq x_{i}\leq1−1≤xi≤1的范围内。特征缩放的目的是使梯度下降法收敛得更快一些,因此这个-1和1并不是严格要求,也就是说特征缩放不需要那么精确,即各特征范围在一个相似的范围内即可。例子如下:
0≤x1≤3✔,−2≤x2≤0.5✔0\leq x_{1}\leq3 ✔,-2\leq x_{2}\leq0.5 ✔0≤x1≤3✔,−2≤x2≤0.5✔
−100≤x3≤100✖(过大),−0.0001≤x3≤0.0001✖(过小)-100\leq x_{3}\leq100 ✖(过大),-0.0001\leq x_{3}\leq0.0001 ✖(过小) −100≤x3≤100✖(过大),−0.0001≤x3≤0.0001✖(过小)
2.1.2特征缩放方法
(1)方法一:
xi=ximax(xi)x_i = \frac{x_i}{max(x_i)}xi=max(xi)xi
(2)方法二:均值归一化(Mean normalization)
xi=xi−μiSix_i = \frac{x_i - μ_i}{S_i}xi=Sixi−μi
其中μiμ_iμi为数据集中xix_ixi的均值,SiS_iSi为数据集中特征xix_ixi的取值范围(即max-min)或者样本中xix_ixi的标准差
2.2 选择合适的学习率α
2.2.1 确保梯度下降法正常工作。
如果梯度下降法正常工作的话,每一步迭代之后J(θ)都应下降,如下图
该图主要有两个作用:
(1)看梯度下降法是否正常工作
(2)判断梯度下降法何时收敛(还有一些自动测试是否收敛的方法,例如将代价函数的变化值与某个阀值ϵ\epsilonϵ(例如 0.001)进行比较,在某次迭代中变化值小于该阈值ϵ\epsilonϵ,即已收敛。但是选择一个合适的ϵ\epsilonϵ比较困难,故通常用上图判断较好。)
梯度下降算法的每次迭代受到学习率 α 的影响:
- α 过小,梯度下降法收敛会很慢(只要α足够小,J(θ)在每次迭代之后都会变小)
- α 过大,J(θ)不会在每次迭代中都变下,或者收敛很慢,甚至不收敛
2.2.2 如何选择合适的α
通常可以考虑尝试些学习率:
..., 0.001, 0.003, 0.01, 0.03, 0.1, 0.3, 1, ...
根据选择的学习率α画出上述J(θ)随着迭代次数变化的图,选择一个使J(θ)快速下降的一个α值,取最大可能值或者比最大可能值略小一些的α值。
3.特征选取和多项式回归
3.1 特征选取
选择合适的特征,有时可以得到更好的模型。数据和特征决定了机器学习的上限,而模型和算法只是逼近这一上限。
3.2 多项式回归(Polynomial regression)
线性回归并不适用于所有数据,有时我们需要曲线来适应我们的数据,比如一个三次方
模型:
hθ(x)=θ0+θ1x+θ2x2+θ3x3h_θ(x) = θ_0 + θ_1x + θ_2x^2 + θ_3x^3hθ(x)=θ0+θ1x+θ2x2+θ3x3
只需令x1=x,x2=x2,x3=x3x_1 = x,x_2 = x^2, x_3 = x^3x1=x,x2=x2,x3=x3,则hθ(x)=θ0+θ1
1bcd0
x1+θ2x2+θ3x3h_θ(x) = θ_0 + θ_1x_1 + θ_2x_2 + θ_3x_3hθ(x)=θ0+θ1x1+θ2x2+θ3x3,这样即可用多元线性回归方法来求解。
4.正规方程组(Normal equations)
4.1 正规方程组介绍
正规方程组方法是一种求解上述多元线性回归模型中θ的解析解法,对于某些线性回归问题,它会使我们更好地求得θ的最优值。
公式:
θ=(XTX)−1XTyθ = (X^TX)^{-1}X^Tyθ=(XTX)−1XTy
注:
- (1)使用正规方程求解θ时,不用特征缩放
- (2)正规方程原理:令∂∂θjJ(θ)=0\frac\partial{\partial θ_{j}}J(θ) = 0∂θj∂J(θ)=0(for every j)解出(θ0,θ1,...,θn)(θ_0, θ_1, ..., θ_n)(θ0,θ1,...,θn)即θ的最优解。
4.2 正规方程与梯度下降法的比较
总结一下,只要特征变量的数目并不大,正规方程是一个很好的计算参数 θ 的替代方
法。具体地说,只要特征变量数量小于10000,通常使用标准方程法,而不使用梯度下降法。
4.3 正规方程的特殊情况(选看)
正规方程需要求解θ=(XTX)−1XTyθ = (X^TX)^{-1}X^Tyθ=(XTX)−1XTy,但有些时候XTXX^TXXTX不可逆:
- (1)有冗余特征(即有线性相关的特征),此时去掉冗余特征即可。
- (2)特征过多(比如m≤nm\leq nm≤n),此时删掉一些特征或者用正则化(regularization)
5.代价函数及梯度下降的python实现(python 3.6)
5.1 代价函数
代价函数的向量形式:
J(θ)=12m(Xθ−y⃗)T(Xθ−y⃗)J(θ) = \frac{1}{2m}(Xθ-\vec y)^T(Xθ-\vec y)J(θ)=2m1(Xθ−y)T(Xθ−y)
def computeCost(X, y, theta): inner = np.power(((X*theta)-y),2) Cost = np.sum(inner)/(2*len(X)) return Cost
5.1 梯度下降法
梯度下降法更新公式的向量形式:
repeat until convergence{
θj=θj−α1m(Xθ−y⃗)xjθ_{j} = θ_{j} - α \frac{1}{m}(Xθ-\vec{y})x_jθj=θj−αm1(Xθ−y)xj
}(同步更新θjθ_jθj)
def gradientDescent(X, y, theta, alpha, iters): temp = np.matrix(np.zeros(theta.shape)) parameters = int(theta.ravel().shape[1]) cost = np.zeros(iters) for i in range(iters): error = (X * theta) - y for j in range(parameters): term = np.multiply(error, X[:,j]) temp[0,j] = theta[0,j] - ((alpha / len(X)) * np.sum(term)) theta = temp cost[i] = computeCost(X, y, theta) return theta, cost
- 吴恩达Coursera机器学习课程笔记-单变量线性回归
- 吴恩达机器学习- 手写笔记一 - Regression 单变量线性回归
- 吴恩达机器学习笔记(五)--多变量线性回归
- 【吴恩达机器学习笔记】第二章:单变量线性回归
- 吴恩达机器学习笔记(二)--单变量线性回归
- 吴恩达机器学习-手写笔记三 - Multivariate Linear Regression 多变量线性回归
- 吴恩达机器学习笔记(3)——多变量线性回归(Multivariate Linear Regression)
- 吴恩达机器学习笔记(四)多变量线性回归
- 机器学习笔记(三)——多变量线性回归
- 吴恩达机器学习课程笔记-4.多变量线性回归
- 吴恩达 【机器学习】第二章 单变量线性回归
- 吴恩达机器学习--单变量线性回归【学习笔记】
- 【机器学习 吴恩达】CS229课程笔记notes1翻译-Part I线性回归
- 机器学习笔记(1)——线性回归LinearRegression(单变量线性回归)
- Coursera机器学习笔记 第1周 二、单变量线性回归(一)
- 吴恩达机器学习 EX1 作业 第一部分单变量线性回归
- 吴恩达机器学习 学习笔记 之 四 多变量线性回归
- Coursera公开课笔记: 斯坦福大学机器学习第二课“单变量线性回归(Linear regression with one variable)”
- 吴恩达机器学习课程笔记——Ch2 单变量线性回归
- 吴恩达 【机器学习】第五章 多变量线性回归