@@ -19,13 +19,16 @@ HorsePower = 0.0015 * annualSalary - 0.99 * hoursListeningToPublicRadio
19
19
20
20
说到回归,一般都是指 ` 线性回归(linear regression) ` 。线性回归意味着可以将输入项分别乘以一些常量,再将结果加起来得到输出。
21
21
22
+ 补充:
23
+ 线性回归假设特征和结果满足线性关系。其实线性关系的表达能力非常强大,每个特征对结果的影响强弱可以由前面的参数体现,而且每个特征变量可以首先映射到一个函数,然后再参与线性计算。这样就可以表达特征与结果之间的非线性关系。
24
+
22
25
## 回归 原理
23
26
24
27
### 1、线性回归
25
28
26
- 我们应该怎样从一大堆数据里求出回归方程呢? 假定输入数据存放在矩阵 x 中,而回归系数存放在向量 w 中。那么对于给定的数据 X1,预测结果将会通过 Y = X1^T w 给出。现在的问题是,手里有一些 X 和对应的 y,怎样才能找到 w 呢?一个常用的方法就是找出使误差最小的 w 。这里的误差是指预测 y 值和真实 y 值之间的差值,使用该误差的简单累加将使得正差值和负差值相互抵消,所以我们采用平方误差。
29
+ 我们应该怎样从一大堆数据里求出回归方程呢? 假定输入数据存放在矩阵 x 中,而回归系数存放在向量 w 中。那么对于给定的数据 X1,预测结果将会通过 Y = X1^T w 给出。现在的问题是,手里有一些 X 和对应的 y,怎样才能找到 w 呢?一个常用的方法就是找出使误差最小的 w 。这里的误差是指预测 y 值和真实 y 值之间的差值,使用该误差的简单累加将使得正差值和负差值相互抵消,所以我们采用平方误差(实际上就是我们通常所说的最小二乘法) 。
27
30
28
- 平方误差可以写做:
31
+ 平方误差可以写做(其实我们是使用这个函数作为 loss function) :
29
32
30
33
![ 平方误差] ( ../images/8.Regression/LinearR_18.png )
31
34
@@ -194,7 +197,7 @@ LWLR 使用 “核”(与支持向量机中的核类似)来对附近的点
194
197
195
198
![ 局部加权线性回归高斯核] ( ../images/8.Regression/LinearR_23.png )
196
199
197
- 这样就构建了一个只含对角元素的权重矩阵 ** w** ,并且点 x 与 x(i) 越近,w(i, i) 将会越大。上述公式中包含一个需要用户指定的参数 k,它决定了对附近的点赋予多大的权重,这也是使用 LWLR 时唯一需要考虑的参数,下面的图给出了参数 k 与权重的关系。
200
+ 这样就构建了一个只含对角元素的权重矩阵 ** w** ,并且点 x 与 x(i) 越近,w(i, i) 将会越大。上述公式中包含一个需要用户指定的参数 k ,它决定了对附近的点赋予多大的权重,这也是使用 LWLR 时唯一需要考虑的参数,下面的图给出了参数 k 与权重的关系。
198
201
199
202
![ 参数k与权重的关系] ( ../images/8.Regression/LinearR_6.png )
200
203
@@ -437,7 +440,7 @@ def abaloneTest():
437
440
438
441
#### 4.1、岭回归
439
442
440
- 简单来说,岭回归就是在矩阵 ![ 矩阵_1] ( ../images/8.Regression/LinearR_9.png ) 上加一个 λI 从而使得矩阵非奇异,进而能对 ![ 矩阵_2] ( ../images/8.Regression/LinearR_10.png ) 求逆。其中矩阵I是一个 m * m 的单位矩阵,
443
+ 简单来说,岭回归就是在矩阵 ![ 矩阵_1] ( ../images/8.Regression/LinearR_9.png ) 上加一个 λI 从而使得矩阵非奇异,进而能对 ![ 矩阵_2] ( ../images/8.Regression/LinearR_10.png ) 求逆。其中矩阵I是一个 n * n (等于列数) 的单位矩阵,
441
444
对角线上元素全为1,其他元素全为0。而λ是一个用户定义的数值,后面会做介绍。在这种情况下,回归系数的计算公式将变成:
442
445
443
446
![ 岭回归的回归系数计算] ( ../images/8.Regression/LinearR_11.png )
@@ -457,7 +460,7 @@ def ridgeRegres(xMat,yMat,lam=0.2):
457
460
'''
458
461
Desc:
459
462
这个函数实现了给定 lambda 下的岭回归求解。
460
- 如果数据的特征比样本点还多,就不能再使用上面介绍的的线性回归和局部现行回归了 ,因为计算 (xTx)^(-1)会出现错误。
463
+ 如果数据的特征比样本点还多,就不能再使用上面介绍的的线性回归和局部线性回归了 ,因为计算 (xTx)^(-1)会出现错误。
461
464
如果特征比样本点还多(n > m),也就是说,输入数据的矩阵x不是满秩矩阵。非满秩矩阵在求逆时会出现问题。
462
465
为了解决这个问题,我们下边讲一下:岭回归,这是我们要讲的第一种缩减方法。
463
466
Args:
@@ -528,16 +531,16 @@ def regression3():
528
531
529
532
![ 岭回归的运行效果] ( ../images/8.Regression/LinearR_12.png )
530
533
531
- 上图绘制除了回归系数与 log(λ) 的关系。在最左边,即 λ 最小时,可以得到所有系数的原始值(与线性回归一致);而在右边,系数全部缩减为0;在中间部分的某值将可以取得最好的预测效果。为了定量地找到最佳参数值,还需要进行交叉验证。另外,要判断哪些变量对结果预测最具有影响力,在上图中观察它们对应的系数大小就可以了。
534
+ 上图绘制出了回归系数与 log(λ) 的关系。在最左边,即 λ 最小时,可以得到所有系数的原始值(与线性回归一致);而在右边,系数全部缩减为0;在中间部分的某值将可以取得最好的预测效果。为了定量地找到最佳参数值,还需要进行交叉验证。另外,要判断哪些变量对结果预测最具有影响力,在上图中观察它们对应的系数大小就可以了。
532
535
533
536
534
- #### 4.2、lasso
537
+ #### 4.2、套索方法(Lasso,The Least Absolute Shrinkage and Selection Operator)
535
538
536
539
在增加如下约束时,普通的最小二乘法回归会得到与岭回归一样的公式:
537
540
538
541
![ lasso_1] ( ../images/8.Regression/LinearR_13.png )
539
542
540
- 上式限定了所有回归系数的平方和不能大于 λ 。使用普通的最小二乘法回归在当两个或更多的特征相关时,可能会得到一个很大的正系数和一个很大的负系数。正式因为上述限制条件的存在 ,使用岭回归可以避免这个问题。
543
+ 上式限定了所有回归系数的平方和不能大于 λ 。使用普通的最小二乘法回归在当两个或更多的特征相关时,可能会得到一个很大的正系数和一个很大的负系数。正是因为上述限制条件的存在 ,使用岭回归可以避免这个问题。
541
544
542
545
与岭回归类似,另一个缩减方法lasso也对回归系数做了限定,对应的约束条件如下:
543
546
0 commit comments