该文已经收录到专题机器学习进阶之路当中,欢迎大家关注。

1.过拟合

当样本特征很多,样本数相对较少时,模型容易陷入过拟合。为了缓解过拟合问题,有两种方法:

       方法一:减少特征数量(人工选择重要特征来保留,会丢弃部分信息)。

       方法二:正则化(减少特征参数

Lasso 回归 sklearn lasso回归图解_岭回归

的数量级)。

2.正则化(Regularization)

正则化是结构风险(损失函数+正则化项)最小化策略的体现,是在经验风险(平均损失函数)上加一个正则化项。正则化的作用就是选择经验风险和模型复杂度同时较小的模型。

防止过拟合的原理:正则化项一般是模型复杂度的单调递增函数,而经验风险负责最小化误差,使模型偏差尽可能小经验风险越小,模型越复杂,正则化项的值越大。要使正则化项也很小,那么模型复杂程度受到限制,因此就能有效地防止过拟合。

3.线性回归正则化

正则化一般具有如下形式的优化目标:

                                             

Lasso 回归 sklearn lasso回归图解_机器学习_02

                      (1)其中,

Lasso 回归 sklearn lasso回归图解_机器学习_03

是用来平衡正则化项和经验风险的系数。正则化项可以是模型参数向量的范数,经常用的有

Lasso 回归 sklearn lasso回归图解_机器学习_04

范数,

Lasso 回归 sklearn lasso回归图解_正则化_05

范数(

Lasso 回归 sklearn lasso回归图解_线性回归_06

范数:

Lasso 回归 sklearn lasso回归图解_机器学习_07


Lasso 回归 sklearn lasso回归图解_正则化_08

范数:

Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_09

) 。

我们考虑最简单的线性回归模型。

给定数据集

Lasso 回归 sklearn lasso回归图解_岭回归_10

,其中,

Lasso 回归 sklearn lasso回归图解_正则化_11


Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_12

。代价函数为:

Lasso 回归 sklearn lasso回归图解_机器学习_13

                      (2)(1)

Lasso 回归 sklearn lasso回归图解_岭回归_14

范数正则化(Ridge Regression,岭回归)

代价函数为:

                                    

Lasso 回归 sklearn lasso回归图解_岭回归_15

                      (3)(2)

Lasso 回归 sklearn lasso回归图解_岭回归_16

范数正则化(LASSO,Least Absoulute Shrinkage and Selection Operator,最小绝对收缩选择算子)

代价函数为:

                                    

Lasso 回归 sklearn lasso回归图解_线性回归_17

                      (4)(3)

Lasso 回归 sklearn lasso回归图解_线性回归_18

正则项

Lasso 回归 sklearn lasso回归图解_机器学习_19

正则项结合(Elastic Net)

代价函数为:

                                    

Lasso 回归 sklearn lasso回归图解_岭回归_20

                      (5)其中,

Lasso 回归 sklearn lasso回归图解_正则化_21

范数正则化、

Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_22

范数正则化都有助于降低过拟合风险,

Lasso 回归 sklearn lasso回归图解_正则化_23

范数通过对参数向量各元素平方和求平方根,使得

Lasso 回归 sklearn lasso回归图解_线性回归_24

范数最小,从而使得参数

Lasso 回归 sklearn lasso回归图解_正则化_25

的各个元素接近0 ,但不等于0。 

Lasso 回归 sklearn lasso回归图解_机器学习_26

范数正则化比

Lasso 回归 sklearn lasso回归图解_机器学习_27

范数更易获得“稀疏”解
,即

Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_28

范数正则化求得的

Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_29

会有更少的非零分量,所以

Lasso 回归 sklearn lasso回归图解_岭回归_30

范数可用于特征选择,而

Lasso 回归 sklearn lasso回归图解_岭回归_31

范数在参数规则化时经常用到(事实上,

Lasso 回归 sklearn lasso回归图解_岭回归_32

范数得到的“稀疏”解最多,但

Lasso 回归 sklearn lasso回归图解_岭回归_33

范数

Lasso 回归 sklearn lasso回归图解_正则化_34


Lasso 回归 sklearn lasso回归图解_线性回归_35

中非零元素的个数,不连续,难以优化求解。因此常用

Lasso 回归 sklearn lasso回归图解_线性回归_36

范数来近似代替)。

为什么

Lasso 回归 sklearn lasso回归图解_岭回归_37

正则化更易获得“稀疏”解呢?

假设

Lasso 回归 sklearn lasso回归图解_岭回归_38

仅有两个属性,

Lasso 回归 sklearn lasso回归图解_岭回归_39

只有两个参数

Lasso 回归 sklearn lasso回归图解_正则化_40

,绘制不带正则项的目标函数-平方误差项等值线,再绘制

Lasso 回归 sklearn lasso回归图解_机器学习_41


Lasso 回归 sklearn lasso回归图解_岭回归_42

范数等值线,如图1正则化后优化目标的解要在平方误差项和正则化项之间折中,即出现在图中等值线相交处采用。

Lasso 回归 sklearn lasso回归图解_岭回归_43

范数时,交点常出现在坐标轴上,即

Lasso 回归 sklearn lasso回归图解_正则化_44


Lasso 回归 sklearn lasso回归图解_机器学习_45

为0;而采用

Lasso 回归 sklearn lasso回归图解_线性回归_46

范数时,交点常出现在某个象限中,即

Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_47


Lasso 回归 sklearn lasso回归图解_线性回归_48

均非0。也就是说,

Lasso 回归 sklearn lasso回归图解_机器学习_49

范数比

Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_50

范数更易获得“稀疏”解。

Lasso 回归 sklearn lasso回归图解_机器学习_51

4.岭回归求解

岭回归不抛弃任何一个特征,缩小了回归系数。

岭回归求解与一般线性回归一致。

(1)如果采用梯度下降法:

                                             

Lasso 回归 sklearn lasso回归图解_线性回归_52

                      (6)

迭代公式如下:

                                             

Lasso 回归 sklearn lasso回归图解_岭回归_53

                      (7)

(2)如果采用正规方程:

最优解为:

                                    

Lasso 回归 sklearn lasso回归图解_岭回归_54

                      (8)

最后,将学得的线性回归模型为:

                                                      

Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_55

                      (9)

5. LASSO回归求解

由于

Lasso 回归 sklearn lasso回归图解_机器学习_56

范数用的是绝对值,导致LASSO的优化目标不是连续可导的,也就是说,最小二乘法,梯度下降法,牛顿法,拟牛顿法都不能用。

Lasso 回归 sklearn lasso回归图解_机器学习_57

正则化问题求解可采用近端梯度下降法(Proximal Gradient Descent,PGD)。

(1)优化目标

优化目标为:

                      (10)若

Lasso 回归 sklearn lasso回归图解_线性回归_58

可导,梯度

Lasso 回归 sklearn lasso回归图解_线性回归_59

满足L-Lipschitz条件(利普希茨连续条件),即存在常数

Lasso 回归 sklearn lasso回归图解_正则化_60

,使得:                                             

Lasso 回归 sklearn lasso回归图解_机器学习_61

                      (11)

L-Lipschitz(利普希茨连续条件)定义:

对于函数

Lasso 回归 sklearn lasso回归图解_机器学习_62

,若其任意定义域中的

Lasso 回归 sklearn lasso回归图解_线性回归_63

Lasso 回归 sklearn lasso回归图解_正则化_64

都存在

Lasso 回归 sklearn lasso回归图解_机器学习_65

,使得

Lasso 回归 sklearn lasso回归图解_岭回归_66

,即对于

Lasso 回归 sklearn lasso回归图解_正则化_67

上每对点,连接它们的线的斜率的绝对值总是不大于这个实数

Lasso 回归 sklearn lasso回归图解_机器学习_68

(2)泰勒展开


Lasso 回归 sklearn lasso回归图解_正则化_69

处将

Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_70

进行二阶泰勒展开:                             

Lasso 回归 sklearn lasso回归图解_线性回归_71

                      (12)由(11)式,泰勒将展开式的二阶导用

Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_72

代替,得到:                           

Lasso 回归 sklearn lasso回归图解_正则化_73

                      (13)

(3)简化泰勒展开式

将(13)式化简:

         

Lasso 回归 sklearn lasso回归图解_机器学习_74

                      (14)其中,

Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_75


Lasso 回归 sklearn lasso回归图解_正则化_76

无关的常数。

(4)简化优化问题

这里若通过梯度下降法对

Lasso 回归 sklearn lasso回归图解_线性回归_77


Lasso 回归 sklearn lasso回归图解_岭回归_78

连续可导)进行最小化,则每一步下降迭代实际上等价于最小化二次函数

Lasso 回归 sklearn lasso回归图解_机器学习_79

,推广到优化目标(10),可得到每一步迭代公式:                           

Lasso 回归 sklearn lasso回归图解_岭回归_80

                      (15)令

Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_81

,则可以先求

Lasso 回归 sklearn lasso回归图解_正则化_82

,再求解优化问题:                                    

Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_83

                      (16)

(5)求解


Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_84


Lasso 回归 sklearn lasso回归图解_正则化_85

的第

Lasso 回归 sklearn lasso回归图解_机器学习_86

个分量,将(16)式按分量展开,其中不存在

Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_87

这样的项,即

Lasso 回归 sklearn lasso回归图解_线性回归_88

的各分量之间互不影响,所以(12)式有闭式解。

为什么(16)式不存在

Lasso 回归 sklearn lasso回归图解_正则化_89

这样的项?

因为展开(16)式得到,

Lasso 回归 sklearn lasso回归图解_线性回归_90

从而优化问题变为求解

Lasso 回归 sklearn lasso回归图解_正则化_91

个独立的函数:

Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_92

对于上述优化问题需要用到soft thresholding软阈值函数,即对于优化问题:

                                             

Lasso 回归 sklearn lasso回归图解_线性回归_93

                      (17)其解为:

Lasso 回归 sklearn lasso回归图解_机器学习_94

                      (18)

而我们的优化问题为(16)式,则得到闭式解为:

                                             

Lasso 回归 sklearn lasso回归图解_机器学习_95

                      (19)其中,

Lasso 回归 sklearn lasso回归图解_正则化_96


Lasso 回归 sklearn lasso回归图解_正则化_97

分别是

Lasso 回归 sklearn lasso回归图解_岭回归_98


Lasso 回归 sklearn lasso回归图解_岭回归_99

的第

Lasso 回归 sklearn lasso回归图解_机器学习_100

个分量。因此,通过PGD能使LASSO和其他基于

Lasso 回归 sklearn lasso回归图解_Lasso 回归 sklearn_101

范数最小化的方法得以快速求解。

参考文献:

1.《机器学习》第十一章嵌入式选择与L1正则化——周志华

2.  LASSO回归与L1正则化西瓜书

3.  机器学习之正则化(正规化)

4.  正则化及正则化项的理解