线性回归的补充与变量归一化
2017-03-13 10:20
295 查看
紧接上一篇博客,多变量梯度下降法的表达式形式与单变量一致,只是变量的扩充以及每次迭代需要对每个变量进行操作(同样是所有变量一次性更新)。假设函数、代价函数和梯度下降的表达式分别如下:
hθ(x)=θTxJ(θ)=12m∑i=0m(hθ(xi)−yi)2θj:=θj−α∂∂θjJ(θ)for all j
对于多变量,往往每个特征变量的取值范围差异很大,在利用梯度下降法进行迭代运算求J(θ)的最小值时,迭代路径受数值大的变量影响较大,而数值小的变量可能会在最优值附近反复振荡,造成迭代路径的曲折,收敛缓慢。因此为了更快收敛,一般把各变量归一化成取值范围大概一致(feature scaling)。一般取−1≤xi≤1或者−0.5≤xi≤0.5,(不是严格规定)。对于一个一般变量,通常取xi:=xi−μisi这里μi是xi的样本平均值,si是取值范围(max - min),或者si取为标准差。
对于回归问题,显然假设函数hθ(x)并不是与每个特征变量均成线性关系,可能会出现如hθ(x)=θ0+θ1x1+θ2x22的形式,这称为多项式回归(Polynomial Regression)。
但是,可以通过适当变形把其转变为线性回归。在此例子中,令x2=x22,则hθ(x)=θ0+θ1x1+θ2x2。此外,可令x3=x1x2,x4=x1−−√等各种不同方式对变量变形,使其成为线性回归问题。运用变形后,变量范围的归一化就变得尤为重要。
另一种解线性回归问题的方法是标准方程法(Normal Equation),运用该方法,可以不需要迭代而直接求出θ。该方程如下:θ=(XTX)X−1y
这里θ=⎡⎣⎢⎢⎢θ0θ1θ2...⎤⎦⎥⎥⎥,y=⎡⎣⎢⎢⎢⎢y0y1y2...⎤⎦⎥⎥⎥⎥,X=⎡⎣⎢⎢⎢⎢⎢x(1)0x(2)0x(3)0...x(1)1x(2)1x(3)1...x(1)2x(2)2x(3)2...............⎤⎦⎥⎥⎥⎥⎥
例子如下:
这个结论来源于线性代数中的投影,具体推导参考http://open.163.com/movie/2010/11/J/U/M6V0BQC4M_M6V2AJLJU.html
梯度下降法和标准方程法的比较:
如果XTX不可逆,有以下两方面原因:
1、存在多余的特征变量,如其中两个特征变量存在线性关系,如x2=2x1;
2、相比较样本数据,特征变量太多,即m<n,这里m是样本个数,n是特征变量个数
在Octave/Matlab中,用pinv()代替inv()实现矩阵取逆,即使矩阵不可逆时也可以得到正确的结果。
即标准方程的代码实现为:
hθ(x)=θTxJ(θ)=12m∑i=0m(hθ(xi)−yi)2θj:=θj−α∂∂θjJ(θ)for all j
对于多变量,往往每个特征变量的取值范围差异很大,在利用梯度下降法进行迭代运算求J(θ)的最小值时,迭代路径受数值大的变量影响较大,而数值小的变量可能会在最优值附近反复振荡,造成迭代路径的曲折,收敛缓慢。因此为了更快收敛,一般把各变量归一化成取值范围大概一致(feature scaling)。一般取−1≤xi≤1或者−0.5≤xi≤0.5,(不是严格规定)。对于一个一般变量,通常取xi:=xi−μisi这里μi是xi的样本平均值,si是取值范围(max - min),或者si取为标准差。
对于回归问题,显然假设函数hθ(x)并不是与每个特征变量均成线性关系,可能会出现如hθ(x)=θ0+θ1x1+θ2x22的形式,这称为多项式回归(Polynomial Regression)。
但是,可以通过适当变形把其转变为线性回归。在此例子中,令x2=x22,则hθ(x)=θ0+θ1x1+θ2x2。此外,可令x3=x1x2,x4=x1−−√等各种不同方式对变量变形,使其成为线性回归问题。运用变形后,变量范围的归一化就变得尤为重要。
另一种解线性回归问题的方法是标准方程法(Normal Equation),运用该方法,可以不需要迭代而直接求出θ。该方程如下:θ=(XTX)X−1y
这里θ=⎡⎣⎢⎢⎢θ0θ1θ2...⎤⎦⎥⎥⎥,y=⎡⎣⎢⎢⎢⎢y0y1y2...⎤⎦⎥⎥⎥⎥,X=⎡⎣⎢⎢⎢⎢⎢x(1)0x(2)0x(3)0...x(1)1x(2)1x(3)1...x(1)2x(2)2x(3)2...............⎤⎦⎥⎥⎥⎥⎥
例子如下:
这个结论来源于线性代数中的投影,具体推导参考http://open.163.com/movie/2010/11/J/U/M6V0BQC4M_M6V2AJLJU.html
梯度下降法和标准方程法的比较:
Gradient Descent | Normal Equation |
---|---|
需要选择合适的参数α | 不需要选择参数 |
需要多次迭代 | 不需要迭代 |
算法复杂度O(kn2) | O(n3),因要计算XTX的逆矩阵 |
当样本数n很大时依然高效 | 样本数n很大时计算慢 |
1、存在多余的特征变量,如其中两个特征变量存在线性关系,如x2=2x1;
2、相比较样本数据,特征变量太多,即m<n,这里m是样本个数,n是特征变量个数
在Octave/Matlab中,用pinv()代替inv()实现矩阵取逆,即使矩阵不可逆时也可以得到正确的结果。
即标准方程的代码实现为:
theta = pinv(X'*X)*X'*y;
相关文章推荐
- 线性回归的补充与变量归一化
- 线性回归的补充与变量归一化
- 线性回归的补充与变量归一化
- 线性回归的补充与变量归一化
- 线性回归的补充与变量归一化
- 线性回归的补充与变量归一化
- 线性回归的补充与变量归一化
- 线性回归的补充与变量归一化
- 线性回归的补充与变量归一化
- 线性回归的补充与变量归一化
- 线性回归的补充与变量归一化
- 机器学习常见的几个误区--逻辑回归的变量之间如果线性相关
- 数据挖掘,筛选,补充的广义线性模型的---- LASSO 回归
- 单变量线性回归程序实现
- 机器学习门户网站——单变量线性回归
- Coursera2014 机器学习第一周 单变量线性回归
- 【SAS NOTES】proc reg 单变量线性回归
- 机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程
- (一)线性回归与特征归一化(feature scaling)
- 机器学习(3)——多变量线性回归