线性回归的补充与变量归一化

紧接上一篇博客,多变量梯度下降法的表达式形式与单变量一致,只是变量的扩充以及每次迭代需要对每个变量进行操作(同样是所有变量一次性更新)。假设函数、代价函数和梯度下降的表达式分别如下:
h θ ( x ) = θ T x h_\theta(x)=\theta^Tx hθ(x)=θTx J ( θ ) = 1 2 m ∑ i = 0 m ( h θ ( x i ) − y i ) 2 J(\theta)=\frac{1}{2m}\sum_{i=0}^{m}(h_\theta(x_i)-y_i)^2 J(θ)=2m1i=0m(hθ(xi)yi)2KaTeX parse error: No such environment: align at position 7: \begin{̲a̲l̲i̲g̲n̲}̲\theta_j:=\thet…
对于多变量,往往每个特征变量的取值范围差异很大,在利用梯度下降法进行迭代运算求 J ( θ ) J(\theta) J(θ)的最小值时,迭代路径受数值大的变量影响较大,而数值小的变量可能会在最优值附近反复振荡,造成迭代路径的曲折,收敛缓慢。因此为了更快收敛,一般把各变量归一化成取值范围大概一致(feature scaling)。一般取 − 1 ≤ x i ≤ 1 -1\leq x_i \leq 1 1xi1或者 − 0.5 ≤ x i ≤ 0.5 -0.5 \leq x_i \leq 0.5 0.5xi0.5,(不是严格规定)。对于一个一般变量,通常取 x i : = x i − μ i s i x_i:=\frac{x_i-\mu_i}{s_i} xi:=sixiμi这里 μ i \mu_i μi x i x_i xi样本平均值 s i s_i si是取值范围(max - min),或者 s i s_i si取为标准差。

[外链图片转存失败(img-69raoK7f-1562665150709)(https://img-my.csdn.net/uploads/201206/28/1340891220_5273.jpg)]

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

但是,可以通过适当变形把其转变为线性回归。在此例子中,令 x 2 = x 2 2 x_2=x_2^2 x2=x22,则 h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2 hθ(x)=θ0+θ1x1+θ2x2。此外,可令 x 3 = x 1 x 2 x_3=x_1x_2 x3=x1x2 x 4 = x 1 x_4=\sqrt{x_1} x4=x1 等各种不同方式对变量变形,使其成为线性回归问题。运用变形后,变量范围的归一化就变得尤为重要。

另一种解线性回归问题的方法是标准方程法(Normal Equation),运用该方法,可以不需要迭代而直接求出 θ \theta θ。该方程如下: θ = ( X T X ) − 1 X T y \theta=(X^TX)^{-1}X^{T}y θ=(XTX)1XTy
这里 θ = [ θ 0 θ 1 θ 2 . . . ] \theta =\left[\begin{matrix}\theta_0\\\theta_1\\\theta_2\\...\end{matrix}\right] θ=θ0θ1θ2... y = [ y 0 y 1 y 2 . . . ] y=\left[\begin{matrix}y_0\\y_1\\y_2\\...\end{matrix}\right] y=y0y1y2... X = [ x 0 ( 1 ) x 1 ( 1 ) x 2 ( 1 ) . . . x 0 ( 2 ) x 1 ( 2 ) x 2 ( 2 ) . . . x 0 ( 3 ) x 1 ( 3 ) x 2 ( 3 ) . . . . . . . . . . . . . . . ] X=\left[\begin{matrix}x_0^{(1)}&x_1^{(1)}&x_2^{(1)}&...\\x_0^{(2)}&x_1^{(2)}&x_2^{(2)}&...\\x_0^{(3)}&x_1^{(3)}&x_2^{(3)}&...\\...&...&...&...\end{matrix}\right] X=x0(1)x0(2)x0(3)...x1(1)x1(2)x1(3)...x2(1)x2(2)x2(3)...............
例子如下:
这里写图片描述

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

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

Gradient DescentNormal Equation
需要选择合适的参数 α \alpha α不需要选择参数
需要多次迭代不需要迭代
算法复杂度 O ( k n 2 ) O(kn^2) O(kn2) O ( n 3 ) O(n^3) O(n3),因要计算 X T X X^TX XTX的逆矩阵
当样本数n很大时依然高效样本数n很大时计算慢

如果 X T X X^TX XTX不可逆,有以下两方面原因:
1、存在多余的特征变量,如其中两个特征变量存在线性关系,如 x 2 = 2 x 1 x_2=2x_1 x2=2x1
2、相比较样本数据,特征变量太多,即 m &lt; n m&lt;n m<n,这里 m m m是样本个数, n n n是特征变量个数

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

theta = pinv(X'*X)*X'*y;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值