文章目录

  • 1.多变量线性回归模型(Linear Regression with Multiple Variables)
  • 1.1 假设函数(Hypothesis function)
  • 1.2 代价函数(Cost function)
  • 1.3 批量梯度下降法(Batch Gradient Descent Algorithm)
  • 2.梯度下降算法中的实用技巧
  • 2.1 特征缩放(Feature Scaling)
    • 2.1.1 特征缩放目的:
    • 2.1.2特征缩放方法
  • 2.2 选择合适的学习率α
    • 2.2.1 确保梯度下降法正常工作。
    • 2.2.2 如何选择合适的α
  • 3.特征选取和多项式回归
  • 3.1 特征选取
  • 3.2 多项式回归(Polynomial regression)
  • 4.正规方程组(Normal equations)
  • 4.1 正规方程组介绍
  • 4.2 正规方程与梯度下降法的比较
  • 4.3 正规方程的特殊情况(选看)
  • 5.代价函数及梯度下降的python实现(python 3.6)
  • 5.1 代价函数
  • 5.1 梯度下降法

1.多变量线性回归模型(Linear Regression with Multiple Variables)

1.1 假设函数(Hypothesis function)

多哥因变量多元线性回归分析可以一次性完成吗spss_代价函数
为了表示方便,定义多哥因变量多元线性回归分析可以一次性完成吗spss_梯度下降法_02,从而
多哥因变量多元线性回归分析可以一次性完成吗spss_代价函数_03
其中θ、x均为(n+1)维的列向量
注:模型参数(Parameters):多哥因变量多元线性回归分析可以一次性完成吗spss_梯度下降法_04θ((n+1)维列向量)

1.2 代价函数(Cost function)

多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_05
其中,θ为m维的向量,多哥因变量多元线性回归分析可以一次性完成吗spss_梯度下降法_06表示特征向量x在第i条样本的取值,多哥因变量多元线性回归分析可以一次性完成吗spss_代价函数_07则表示第i条样本的标签值。

代价函数的向量形式
多哥因变量多元线性回归分析可以一次性完成吗spss_梯度下降法_08
其中,多哥因变量多元线性回归分析可以一次性完成吗spss_梯度下降法_09,多哥因变量多元线性回归分析可以一次性完成吗spss_梯度下降法_06为行向量,X为m*(n+1)维的矩阵,多哥因变量多元线性回归分析可以一次性完成吗spss_代价函数_11为m维列向量,θ为(n+1)维的列向量。

1.3 批量梯度下降法(Batch Gradient Descent Algorithm)

更新公式:
repeat until convergence{
多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_12
}(同步更新多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_13)

将代价函数代入更新公式:
repeat until convergence{
多哥因变量多元线性回归分析可以一次性完成吗spss_代价函数_14
}(同步更新多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_13)

进而将假设函数代入更新公式,有更新公式的向量形式:
repeat until convergence{
多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_16
}(同步更新多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_13)
其中,多哥因变量多元线性回归分析可以一次性完成吗spss_梯度下降法_09,多哥因变量多元线性回归分析可以一次性完成吗spss_梯度下降法_06为行向量,X为m*(n+1)维的矩阵,多哥因变量多元线性回归分析可以一次性完成吗spss_代价函数_11多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_21为m维列向量,θ为(n+1)维的列向量。

2.梯度下降算法中的实用技巧

2.1 特征缩放(Feature Scaling)

2.1.1 特征缩放目的:

特征缩放即使每个特征的值的范围在一个类似多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_22的范围内。特征缩放的目的是使梯度下降法收敛更快一些,因此这个-1和1并不是严格要求,也就是说特征缩放不需要那么精确,即各特征范围在一个相似的范围内即可。例子如下:
多哥因变量多元线性回归分析可以一次性完成吗spss_梯度下降法_23
多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_24

2.1.2特征缩放方法

(1)方法一:
多哥因变量多元线性回归分析可以一次性完成吗spss_代价函数_25
(2)方法二:均值归一化(Mean normalization)
多哥因变量多元线性回归分析可以一次性完成吗spss_梯度下降法_26
其中多哥因变量多元线性回归分析可以一次性完成吗spss_梯度下降法_27为数据集中多哥因变量多元线性回归分析可以一次性完成吗spss_代价函数_28的均值,多哥因变量多元线性回归分析可以一次性完成吗spss_代价函数_29为数据集中特征多哥因变量多元线性回归分析可以一次性完成吗spss_代价函数_28的取值范围(即max-min)或者样本中多哥因变量多元线性回归分析可以一次性完成吗spss_代价函数_28的标准差

2.2 选择合适的学习率α

2.2.1 确保梯度下降法正常工作。

如果梯度下降法正常工作的话,每一步迭代之后J(θ)都应下降,如下图

多哥因变量多元线性回归分析可以一次性完成吗spss_代价函数_32


该图主要有两个作用:

(1)看梯度下降法是否正常工作

(2)判断梯度下降法何时收敛(还有一些自动测试是否收敛的方法,例如将代价函数的变化值与某个阀值多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_33(例如 0.001)进行比较,在某次迭代中变化值小于该阈值多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_33,即已收敛。但是选择一个合适的多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_33比较困难,故通常用上图判断较好。)

梯度下降算法的每次迭代受到学习率 α 的影响:

  • α 过小,梯度下降法收敛会很慢(只要α足够小,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)

线性回归并不适用于所有数据,有时我们需要曲线来适应我们的数据,比如一个三次方
模型:
多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_36
只需令多哥因变量多元线性回归分析可以一次性完成吗spss_代价函数_37,则多哥因变量多元线性回归分析可以一次性完成吗spss_梯度下降法_38,这样即可用多元线性回归方法来求解。

4.正规方程组(Normal equations)

4.1 正规方程组介绍

正规方程组方法是一种求解上述多元线性回归模型中θ的解析解法,对于某些线性回归问题,它会使我们更好地求得θ的最优值。
公式:
多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_39
注:

  • (1)使用正规方程求解θ时,不用特征缩放
  • (2)正规方程原理:令多哥因变量多元线性回归分析可以一次性完成吗spss_代价函数_40(for every j)解出多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_41即θ的最优解。

4.2 正规方程与梯度下降法的比较

多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_42


总结一下,只要特征变量的数目并不大,正规方程是一个很好的计算参数 θ 的替代方

法。具体地说,只要特征变量数量小于10000,通常使用标准方程法,而不使用梯度下降法。

4.3 正规方程的特殊情况(选看)

正规方程需要求解多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_39,但有些时候多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_44不可逆:

  • (1)有冗余特征(即有线性相关的特征),此时去掉冗余特征即可。
  • (2)特征过多(比如多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_45),此时删掉一些特征或者用正则化(regularization)

5.代价函数及梯度下降的python实现(python 3.6)

5.1 代价函数

代价函数的向量形式
多哥因变量多元线性回归分析可以一次性完成吗spss_梯度下降法_08

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{
多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_16
}(同步更新多哥因变量多元线性回归分析可以一次性完成吗spss_缩放_13)

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