多维变量线性回归


三维回归_机器学习代表第 三维回归_机器学习_02 个训练实例,是特征矩阵中的第三维回归_机器学习_02行,是一个向量

三维回归_三维回归_04代表特征矩阵中第 三维回归_机器学习_02 行的第 三维回归_代价函数_06 个特征,也就是第 三维回归_机器学习_02 个训练实例的第 三维回归_代价函数_06


多变量线性回归函数

支持多变量的假设 三维回归_机器学习_09 表示为:三维回归_机器学习_10

这个公式中有三维回归_机器学习_11个参数和三维回归_线性回归_12个变量,为了使得公式能够简化一些,引入三维回归_线性回归_13,则公式转化为:三维回归_三维回归_14

此时模型中的参数是一个三维回归_机器学习_11维的向量,任何一个训练实例也都是三维回归_机器学习_11维的向量,特征矩阵三维回归_机器学习_17的维度是 三维回归_机器学习_18。 因此公式可以简化为:三维回归_机器学习_19

三维回归_机器学习_20


多变量梯度下降

多变量回归代价函数三维回归_算法_21

多变量线性回归的批量梯度下降算法为:

三维回归_机器学习_22

即:

三维回归_机器学习_23

求导后得到:

三维回归_线性回归_24

三维回归_机器学习_25时,
三维回归_算法_26

三维回归_三维回归_27

三维回归_算法_28


特征缩放

如果不进行特征缩放,则如图所示梯度下降算法需要多次迭代才可以收敛,比较复杂。

三维回归_算法_29

解决的方法是尝试将所有特征的尺度都尽量缩放到-1到1之间。如图:

三维回归_线性回归_30

缩放原则和方法

  • 三维回归_代价函数_31
  • 三维回归_算法_32或者三维回归_线性回归_33都是可以的
  • 最简单的方法是令:三维回归_线性回归_34,其中 三维回归_机器学习_35三维回归_机器学习_36的平均值,三维回归_机器学习_37三维回归_三维回归_38的值**

学习率

绘制迭代次数( 三维回归_线性回归_39 轴)和代价函数( 三维回归_线性回归_40

三维回归_算法_41

出现下面两种情况都是因为学习率 三维回归_机器学习_42

三维回归_三维回归_43

三维回归_算法_44

总结:

梯度下降算法的每次迭代受到学习率的影响,如果学习率 三维回归_机器学习_42 过小,则达到收敛所需的迭代次数会非常多;如果学习率 三维回归_机器学习_42

通常可以考虑尝试这些学习率:
三维回归_算法_47


正规方程

在数学中计算函数最小值通常先计算导数为0的点,即:

三维回归_线性回归_48

同样,也可以通过求偏导数来找出代价函数 三维回归_机器学习_49 最小的参数,即:

三维回归_三维回归_50

三维回归_代价函数_51

假设训练集特征矩阵为 三维回归_机器学习_17(其中 三维回归_机器学习_53)并且我们的训练集结果为向量 三维回归_算法_54,则利用正规方程解出向量

三维回归_线性回归_55

三维回归_算法_56

梯度下降与正规方程比较

梯度下降

正规方程

特征数量大于一百万则必定使用梯度下降

适用于特征数量较小的(通常适用于特征数量小于10000)

多次迭代

一次算出

适用于各种模型

只适用于线性模型

正规方程的python实现:

import numpy as np
    
 def normalEqn(X, y):
    
   theta = np.linalg.inv(X.T@X)@X.T@y 
    
   return theta

正规方程中矩阵不可逆

  • 当两个特征线性相关时,则 三维回归_三维回归_57
  • 当训练样本数量小于等于特征数量时,则 三维回归_三维回归_57 不可逆