数据挖掘,筛选,补充的广义线性模型的---- LASSO 回归
2018-02-08 10:45
288 查看
Kaggle 网站(https://www.kaggle.com/)成立于 2010 年,是当下最流行的进行数据发掘和预测模型竞赛的在线平台。 与 Kaggle 合作的公司可以在网站上提出一个问题或者目标,同时提供相关数据,来自世界各地的计算机科学家、统计学家和建模爱好者, 将受领任务,通过比较模型的某些性能参数,角逐出优胜者。 通过大量的比赛,一系列优秀的数据挖掘模型脱颖而出,受到广大建模者的认同,被普遍应用在各个领域。 在保险行业中用于拟合广义线性模型的 LASSO 回归就是其中之一。
LASSO 回归的特点是在拟合广义线性模型的同时进行变量筛选(variable selection)和复杂度调整(regularization)。 因此,不论目标因变量(dependent/response varaible)是连续的(continuous),还是二元或者多元离散的(discrete),都可以用 LASSO 回归建模然后预测。 这里的变量筛选是指不把所有的变量都放入模型中进行拟合,而是有选择的把变量放入模型从而得到更好的性能参数。 复杂度调整是指通过一系列参数控制模型的复杂度,从而避免过度拟合(overfitting)。 对于线性模型来说,复杂度与模型的变量数有直接关系,变量数越多,模型复杂度就越高。 更多的变量在拟合时往往可以给出一个看似更好的模型,但是同时也面临过度拟合的危险。此时如果用全新的数据去验证模型(validation),通常效果很差。 一般来说,变量数大于数据点数量很多,或者某一个离散变量有太多独特值时,都有可能过度拟合。
LASSO 回归复杂度调整的程度由参数 λ 来控制,λ 越大对变量较多的线性模型的惩罚力度就越大,从而最终获得一个变量较少的模型。 LASSO 回归与 Ridge 回归同属于一个被称为 Elastic Net 的广义线性模型家族。 这一家族的模型除了相同作用的参数 λ 之外,还有另一个参数 α 来控制应对高相关性(highly correlated)数据时模型的性状。 LASSO 回归 α=1,Ridge 回归 α=0,一般 Elastic Net 模型 0<α<1。 这篇文章主要介绍 LASSO 回归,所以我们集中关注 α=1 的情况,对于另外两种模型的特点和如何选取最优 α 值, 我会在章节 “Elstic Net 模型家族简介” 做一些简单阐述。
目前最好用的拟合广义线性模型的 R package 是 glmnet,由 LASSO 回归的发明人,斯坦福统计学家 Trevor Hastie 领衔开发。 它的特点是对一系列不同 λ 值进行拟合,每次拟合都用到上一个 λ 值拟合的结果,从而大大提高了运算效率。 此外它还包括了并行计算的功能,这样就能调动一台计算机的多个核或者多个计算机的运算网络,进一步缩短运算时间。
下面我们就通过一个线性回归和一个 Logistic 回归的例子,了解如何使用 glmnet 拟合 LASSO 回归。 另外,之后的系列文章我打算重点介绍非参数模型(nonparametric model)中的一种,Gradient Boosting Machine。 然后通过一个保险行业的实例,分享一些实际建模过程中的经验, 包括如何选取和预处理数据,如何直观得分析自变量与因变量之间的关系,如何避免过度拟合,如何衡量和选取最终模型。
首先我们装载 glmnet package,然后读入试验用数据 “LinearExample.RData”, 下载链接:
LASSO 回归的特点是在拟合广义线性模型的同时进行变量筛选(variable selection)和复杂度调整(regularization)。 因此,不论目标因变量(dependent/response varaible)是连续的(continuous),还是二元或者多元离散的(discrete),都可以用 LASSO 回归建模然后预测。 这里的变量筛选是指不把所有的变量都放入模型中进行拟合,而是有选择的把变量放入模型从而得到更好的性能参数。 复杂度调整是指通过一系列参数控制模型的复杂度,从而避免过度拟合(overfitting)。 对于线性模型来说,复杂度与模型的变量数有直接关系,变量数越多,模型复杂度就越高。 更多的变量在拟合时往往可以给出一个看似更好的模型,但是同时也面临过度拟合的危险。此时如果用全新的数据去验证模型(validation),通常效果很差。 一般来说,变量数大于数据点数量很多,或者某一个离散变量有太多独特值时,都有可能过度拟合。
LASSO 回归复杂度调整的程度由参数 λ 来控制,λ 越大对变量较多的线性模型的惩罚力度就越大,从而最终获得一个变量较少的模型。 LASSO 回归与 Ridge 回归同属于一个被称为 Elastic Net 的广义线性模型家族。 这一家族的模型除了相同作用的参数 λ 之外,还有另一个参数 α 来控制应对高相关性(highly correlated)数据时模型的性状。 LASSO 回归 α=1,Ridge 回归 α=0,一般 Elastic Net 模型 0<α<1。 这篇文章主要介绍 LASSO 回归,所以我们集中关注 α=1 的情况,对于另外两种模型的特点和如何选取最优 α 值, 我会在章节 “Elstic Net 模型家族简介” 做一些简单阐述。
目前最好用的拟合广义线性模型的 R package 是 glmnet,由 LASSO 回归的发明人,斯坦福统计学家 Trevor Hastie 领衔开发。 它的特点是对一系列不同 λ 值进行拟合,每次拟合都用到上一个 λ 值拟合的结果,从而大大提高了运算效率。 此外它还包括了并行计算的功能,这样就能调动一台计算机的多个核或者多个计算机的运算网络,进一步缩短运算时间。
下面我们就通过一个线性回归和一个 Logistic 回归的例子,了解如何使用 glmnet 拟合 LASSO 回归。 另外,之后的系列文章我打算重点介绍非参数模型(nonparametric model)中的一种,Gradient Boosting Machine。 然后通过一个保险行业的实例,分享一些实际建模过程中的经验, 包括如何选取和预处理数据,如何直观得分析自变量与因变量之间的关系,如何避免过度拟合,如何衡量和选取最终模型。
线性回归
我们从最简单的线性回归(Linear Regression)开始了解如何使用 glmnet 拟合 LASSO 回归模型, 所以此时的连接函数(link function)就是恒等,或者说没有连接函数,而误差的函数分布是正态分布。首先我们装载 glmnet package,然后读入试验用数据 “LinearExample.RData”, 下载链接:
library(glmnet) load("LinearExample.RData")之后在 workspace 里我们会得到一个 100×20 的矩阵 x 作为输入自变量,100×1 的矩阵 y 作为目标因变量。 矩阵 x 代表了我们有 100 个数据点,每个数据点有 20 个统计量(feature)。 现在我们就可以用函数
glmnet()建模了:
fit = glmnet(x, y, family="gaussian", nlambda=50, alpha=1)好,建模完毕,至此结束本教程
相关文章推荐
- MADlib——基于SQL的数据挖掘解决方案(12)——回归之广义线性模型
- 【数据挖掘与R语言笔记】预测海藻数量(二)线性模型和回归树模型
- 热门数据挖掘模型应用入门(一): LASSO回归
- 广义线性模型之线性回归(一)
- [Matlab][数据挖掘算法][线性回归]
- [置顶] 吴恩达机器学习笔记——指数分布族&广义线性模型&逻辑回归概率模型推导
- 对数线性模型之一(逻辑回归), 广义线性模型学习总结
- 数据挖掘方法(2) 回归模型(简单线性回归)
- 对数线性模型之一(逻辑回归), 广义线性模型学习总结(转)
- 加州理工大学公开课:机器学习与数据挖掘_线性模型 II(第IX类)
- 加州理工学院公开课:机器学习与数据挖掘_线性模型(第三课)
- 机器学习和数据挖掘(3):线性模型
- 机器学习 —— 基础整理(五)线性回归;二项Logistic回归;Softmax回归及其梯度推导;广义线性模型
- 从逻辑回归推广到广义线性模型
- 对数线性模型之一,逻辑回归、广义线性模型学习总结
- 机器学习笔记_回归_3: 广义线性模型
- 从广义线性模型到逻辑回归
- Spark Mllib 回归学习笔记一(java):线性回归(线性,lasso,岭),广义回归
- 机器学习与数据挖掘_线性模型 II
- 对数线性模型之一(逻辑回归), 广义线性模型学习总结