热门数据挖掘模型应用入门(一): LASSO回归
热门数据挖掘模型应用入门(一): LASSO回归
目录: • 模型简介 • 线性回归 • Logistic回归 • Elstic Net理论简介 • 学习资料
模型简介
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。 然后通过一个保险行业的实例,分享一些实际建模过程中的经验, 包括如何选取和预处理数据,如何直观得分析自变量与因变量之间的关系,如何避免过度拟合,如何衡量和选取最终模型。
线性回归
我们从最简单的线性回归(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)
好,建模完毕,至此结束本教程
热门数据挖掘模型应用入门(一): LASSO回归相关推荐
- 基于Python的岭回归与LASSO回归模型介绍及实践
基于Python的岭回归与LASSO回归模型介绍及实践 这是一篇学习的总结笔记 参考自<从零开始学数据分析与挖掘> [中]刘顺祥 著 完整代码及实践所用数据集等资料放置于:Github 岭 ...
- R语言glmnet拟合lasso回归模型实战:lasso回归模型的模型系数及可视化、lasso回归模型分类评估计算(混淆矩阵、accuracy、Deviance)
R语言glmnet拟合lasso回归模型实战:lasso回归模型的模型系数(lasso regression coefficients)及可视化.lasso回归模型分类评估计算(混淆矩阵.accura ...
- Python使用sklearn构建lasso回归模型并指定样本权重:即构建带样本权重(sample_weight)的回归模型
Python使用sklearn构建lasso回归模型并指定样本权重:即构建带样本权重(sample_weight)的回归模型 目录
- R构建lasso回归模型并获得最佳正则化系数
R构建lasso回归模型并获得最佳正则化系数 目录 R构建lasso回归模型并获得最佳正则化系数 数据加载 拟合LASSO回归模型
- ML之4PolyR:利用四次多项式回归4PolyR模型+两种正则化(Lasso/Ridge)在披萨数据集上拟合(train)、价格回归预测(test)
ML之4PolyR:利用四次多项式回归4PolyR模型+两种正则化(Lasso/Ridge)在披萨数据集上拟合(train).价格回归预测(test) 目录 输出结果 设计思路 核心代码 输出结果 设 ...
- python回归模型 变量筛选_如何进行高维变量筛选和特征选择(一)?Lasso回归
01模型简介 随着海量电子病历的挖掘,影像学.基因组学等数据进入医学统计分析,经常会面临对高维变量特征选择的问题,Lasso回归是在线性回归模型的代价函数后面加上L1范数的约束项的模型,它通过控制参数 ...
- r ridge回归_手把手带你画高大上的lasso回归模型图
各位芝士好友,今天我们来聊一聊lasso回归算法.与预后有关的文章,传统的做法一般会选择多变量cox回归,高级做法自然就是我们今天的lasso分析. 首先我们先来几篇文献,看一下lasso最近发的两篇 ...
- R语言使用glmnet包的glmnet函数拟合lasso回归模型:使用cv.glmnet函数获取最佳lambda值、coef函数获取每个特征的系数以及截距
R语言使用glmnet包的glmnet函数拟合lasso回归模型:使用cv.glmnet函数获取最佳lambda值.coef函数获取每个特征的系数以及截距 目录
- 学习机器学习四 回归模型——线性回归、L1正则化(Lasso回归)、L2正则化(ridge回归)
还记得什么是回归吗?回忆下回归就是连续的输出,分类是离散的. 回归模型一般分为:①线性回归--就是线性方程,类似为一元一次方程(y=wx+b),比如你的年龄: ②逻辑回归(类似为曲线方程) 线性回归 ...
最新文章
- C语言引用不同路径下的头文件的方法
- shiro解决一个账号异地登录的问题
- matlab编程选择语句,matlab编程控制语句
- python读取nc文件转成img_使用python的netCDF4库读取.nc文件 和 创建.nc文件[转]
- 数据结构 - 最小堆最大堆
- TCP的拥塞控制机制
- 多校#5-1005-Instring-HDU5785-manacher+维护
- django 笔记3
- 加速度传感器和角度传感器
- java 泰国_游记:泰国之旅
- 乐视手机调用自启动管理, 乐视手机调用应用权限管理
- 实验数据处理的基本方法
- c++如何保留两位小数
- JS实现线条动态背景
- Android碎碎念 -- 阿里Weex
- 一位互联网老兵曲曲折折的 16 年!
- 【服务通信自定义srv调用3----客户端的优化】
- 实现淘宝订单(比如订单生成、未支付的订单等等)自定义view的实现
- 【统计】如何理解相关系数,自相关和偏自相关函数(PACF)?
- 什么是组态软件(转)