前言
其中, m是样本量, n是特征数,
是惩罚项参数(其取值大于0), 加惩罚项主要为了让模型参数的取值不能过大. 当
趋于无穷大时, 对应
趋向于0, 而
表示的是因变量随着某一自变量改变一个单位而变化的数值(假设其他自变量均保持不变), 这时, 自变量之间的共线性对因变量的影响几乎不存在, 故其能有效解决自变量之间的多重共线性问题, 同时也能防止过拟合.
2. Lasso回归
岭回归的正则化项是对
求平方和, 既然能求平方也就能取绝对值, 而Lasso回归的L1范数正是对
取绝对值, 故其损失函数可以表示为

当只有两个自变量时, L1范数在二维上对应的图形是矩形(顶点均在坐标轴上, 即其中一个回归系数为0), 对于这样的矩形来说其顶点更容易与同心椭圆(等值线)相交, 而相交的点则为最小损失函数的最优解. 也就是说Lasso会出现回归系数为0的情况. 对于L2范数来说则是圆形,其不会相交于坐标轴上的点, 自然也就不会出现回归系数为0的情况. 当然多个自变量也是同样的道理
3. 岭回归和Lasso回归对比
相同点:
1. 岭回归和Lasso回归均是加了正则化项的线性回归模型, 本质上它们都是线性回归模型.
2. 两者均能在一定程度上解决多重共线性问题, 并且可以有效避免过拟合.
3. 回归系数均受正则化参数的影响, 均可以用图形表示回归系数和正则化参数的关系, 并可以通过该图形进行变量以及正则化参数的筛选.
不同点:
1. 岭回归的回归系数均不为0, Lasso回归部分回归系数为0.
4. 实际案例应用
1. 数据来源及数据背景
数据来源: https://www.kaggle.com/c/bike-sharing-demand/data, 数据有训练集和测试集, 在训练集中包含10886个样本以及12个字段, 通过训练集上自行车租赁数据对美国华盛顿自行车租赁需求进行预测.
2. 数据概览
1. 读取数据
import pandas as pd df = pd.read_csv(r'D:\Data\bike.csv') pd.set_option('display.max_rows',4 ) df

通过以上可以得知数据维度10886行X12列, 除了第一列其它均显示为数值, 具体的格式还要进一步查看, 对于各列的解释也放入下一环节.
2. 查看数据整体信息
df.info()
<class 'pandas.core.frame.DataFrame'>RangeIndex: 10886 entries, 0 to 10885Data columns (total 12 columns):datetime 10886 non-null object #时间和日期season 10886 non-null int64 #季节, 1 =春季,2 =夏季,3 =秋季,4 =冬季 holiday 10886 non-null int64 #是否是假期, 1=是, 0=否workingday 10886 non-null int64 #是否是工作日, 1=是, 0=否weather 10886 non-null int64 #天气,1:晴朗,很少有云,部分多云,部分多云; 2:雾+多云,雾+碎云,雾+少云,雾; 3:小雪,小雨+雷雨+散云,小雨+散云; 4:大雨+冰块+雷暴+雾,雪+雾
temp 10886 non-null float64 #温度
atemp 10886 non-null float64 #体感温度
humidity 10886 non-null int64 #相对湿度
windspeed 10886 non-null float64 #风速
casual 10886 non-null int64 #未注册用户租赁数量
registered 10886 non-null int64 #注册用户租赁数量
count 10886 non-null int64 #所有用户租赁总数
dtypes: float64(3), int64(8), object(1)
memory usage: 1020.6+ KB
除了datetime为字符串型, 其他均为数值型, 且无缺失值.
3. 描述性统计
df.describe()
温度, 体表温度, 相对湿度, 风速均近似对称分布, 而非注册用户, 注册用户,以及总数均右边分布.

4. 偏态, 峰态
for i in range(5, 12): name = df.columns[i] print('{0}偏态系数为 {1}, 峰态系数为 {2}'.format(name, df[name].skew(), df[name].kurt()))
temp偏态系数为 0.003690844422472008, 峰态系数为 -0.9145302637630794atemp偏态系数为 -0.10255951346908665, 峰态系数为 -0.8500756471754651humidity偏态系数为 -0.08633518364548581, 峰态系数为 -0.7598175375208864windspeed偏态系数为 0.5887665265853944, 峰态系数为 0.6301328693364932casual偏态系数为 2.4957483979812567, 峰态系数为 7.551629305632764registered偏态系数为 1.5248045868182296, 峰态系数为 2.6260809999210672count偏态系数为 1.2420662117180776, 峰态系数为 1.3000929518398334
temp, atemp, humidity低度偏态, windspeed中度偏态, casual, registered, count高度偏态
temp, atemp, humidity为平峰分布, windspeed,casual, registered, count为尖峰分布.
3. 数据预处理
由于没有缺失值, 不用处理缺失值, 看看有没有重复值.
1. 检查重复值

