L1正则如何处理多重共线性问题?

如题所述

多重共线性是使用线性回归算法时经常要面对的一个问题。在其他算法中,例如决策树和贝叶斯,前者的建模过程是逐步递进,每次拆分只有一个变量参与,这种建模机制含有抗多重共线性干扰的功能;后者干脆假定变量之间是相互独立的,因此从表面上看,也没有多重共线性的问题。但是对于回归算法,不论是一般回归,逻辑回归,或存活分析,都要同时考虑多个预测因子,因此多重共线性是不可避免需要面对的,在很多时候,多重共线性是一个普遍的现象。在构造预测模型时如何处理多重共线性是一个比较微妙的议题。既不能不加控制,又不能一刀切,认为凡是多重共线性就应该消除。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-06

例如对于回归问题,如果有两个变量之间,有很强的共线性关系,听说L1正则,会倾向于让其中一个变量的权值为0,那么想了解一下,实际中,L1正则会让哪个变量的权值变为0,这个是随机的,还是有什么规律可以解释?直观而言,L1会倾向于把相对更“没用”的特征权值变成0。不过既然已经知道两个变量有线性关系,可以考虑做回归之前先去相关吧(比如PCA)。如果两个共线性很强的变量都是noise,都变0。如果有一个是signal或都是signal,如果p>n,那就是随机压缩到0;如果p<n,那都不会被压缩到0。去看Lasso Consistency那篇paper吧,有个Lasso Irrepresentable Condition。当signal 和noise共线性很强的时候,lasso 无法选出true model 。L1的作用是近似L0,而L0就是用在线性回归上就是特征选择,直觉上意在扔掉冗余特征,如果按照题目中说的有两个变量线性相关,往往(由于L1是近似L0,所以并不总是)最后最多留一个非零权重。L1要想和L0表现完全一致需要满足一些假设和理论条件。这个跟解法有关。lar和shooting可能会有不同结果。如果知道有相关性但是不知道是哪些,可以用elastic net。假如知道是哪些variable,可以用group lasso。假设两个变量分别是x,y, x≈t y. 那么在regression函数里,假设只有x,系数为a_0,假设只有y,系数为b_0。那么a_0 x≈b_0 y, a_0 ≈ b_0 / t. 加上L1 penalty之后,a_0产生的penalty是b_0/t, b_0当然产生b_0。优化后会选择一个小的penalty,也就是如果|t|>1,则|a_0|<|b_0|, y的系数b会被赶到0. 如果|t|<1, x的系数a会被赶到0. 如果|t|=1,那么a和b会随机生成一个组合,和为a_0+b_0。

相似回答