紧接上一篇博客,多变量梯度下降法的表达式形式与单变量一致,只是变量的扩充以及每次迭代需要对每个变量进行操作(同样是所有变量一次性更新)。假设函数、代价函数和梯度下降的表达式分别如下:
结局变量为连续变量的回归分析 连续变量归一化_线性回归结局变量为连续变量的回归分析 连续变量归一化_迭代_02KaTeX parse error: No such environment: align at position 7: \begin{̲a̲l̲i̲g̲n̲}̲\theta_j:=\thet…
对于多变量,往往每个特征变量的取值范围差异很大,在利用梯度下降法进行迭代运算求结局变量为连续变量的回归分析 连续变量归一化_梯度下降法_03的最小值时,迭代路径受数值大的变量影响较大,而数值小的变量可能会在最优值附近反复振荡,造成迭代路径的曲折,收敛缓慢。因此为了更快收敛,一般把各变量归一化成取值范围大概一致(feature scaling)。一般取结局变量为连续变量的回归分析 连续变量归一化_迭代_04或者结局变量为连续变量的回归分析 连续变量归一化_机器学习_05,(不是严格规定)。对于一个一般变量,通常取结局变量为连续变量的回归分析 连续变量归一化_机器学习_06这里结局变量为连续变量的回归分析 连续变量归一化_迭代_07结局变量为连续变量的回归分析 连续变量归一化_机器学习_08样本平均值结局变量为连续变量的回归分析 连续变量归一化_迭代_09是取值范围(max - min),或者结局变量为连续变量的回归分析 连续变量归一化_迭代_09取为标准差。

[外链图片转存失败(img-69raoK7f-1562665150709)()]

对于回归问题,显然假设函数结局变量为连续变量的回归分析 连续变量归一化_线性回归_11并不是与每个特征变量均成线性关系,可能会出现如$h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2^2 $的形式,这称为多项式回归(Polynomial Regression)

但是,可以通过适当变形把其转变为线性回归。在此例子中,令结局变量为连续变量的回归分析 连续变量归一化_线性回归_12,则结局变量为连续变量的回归分析 连续变量归一化_线性回归_13。此外,可令结局变量为连续变量的回归分析 连续变量归一化_迭代_14结局变量为连续变量的回归分析 连续变量归一化_机器学习_15等各种不同方式对变量变形,使其成为线性回归问题。运用变形后,变量范围的归一化就变得尤为重要。

另一种解线性回归问题的方法是标准方程法(Normal Equation),运用该方法,可以不需要迭代而直接求出结局变量为连续变量的回归分析 连续变量归一化_线性回归_16。该方程如下:结局变量为连续变量的回归分析 连续变量归一化_结局变量为连续变量的回归分析_17

这里结局变量为连续变量的回归分析 连续变量归一化_机器学习_18结局变量为连续变量的回归分析 连续变量归一化_结局变量为连续变量的回归分析_19结局变量为连续变量的回归分析 连续变量归一化_机器学习_20

例子如下:

结局变量为连续变量的回归分析 连续变量归一化_迭代_21

这个结论来源于线性代数中的投影,具体推导参考http://open.163.com/movie/2010/11/J/U/M6V0BQC4M_M6V2AJLJU.html

梯度下降法和标准方程法的比较:

Gradient Descent

Normal Equation

需要选择合适的参数结局变量为连续变量的回归分析 连续变量归一化_结局变量为连续变量的回归分析_22

不需要选择参数

需要多次迭代

不需要迭代

算法复杂度结局变量为连续变量的回归分析 连续变量归一化_梯度下降法_23

结局变量为连续变量的回归分析 连续变量归一化_机器学习_24,因要计算结局变量为连续变量的回归分析 连续变量归一化_迭代_25的逆矩阵

当样本数n很大时依然高效

样本数n很大时计算慢

如果结局变量为连续变量的回归分析 连续变量归一化_结局变量为连续变量的回归分析_26不可逆,有以下两方面原因:
1、存在多余的特征变量,如其中两个特征变量存在线性关系,如结局变量为连续变量的回归分析 连续变量归一化_梯度下降法_27
2、相比较样本数据,特征变量太多,即,这里结局变量为连续变量的回归分析 连续变量归一化_线性回归_28是样本个数,结局变量为连续变量的回归分析 连续变量归一化_梯度下降法_29是特征变量个数

在Octave/Matlab中,用pinv()代替inv()实现矩阵取逆,即使矩阵不可逆时也可以得到正确的结果。
即标准方程的代码实现为:

theta = pinv(X'*X)*X'*y;