深入浅出Python机器学习
上QQ阅读APP看书,第一时间看更新

4.4.1 套索回归的原理

和岭回归一样,套索回归也会将系数限制在非常接近0的范围内,但它进行限制的方式稍微有一点不同,我们称之为L1正则化。与L2正则化不同的是,L1正则化会导致在使用套索回归的时候,有一部分特征的系数会正好等于0。也就是说,有一些特征会彻底被模型忽略掉,这也可以看成是模型对于特征进行自动选择的一种方式。把一部分系数变成0有助于让模型更容易理解,而且可以突出体现模型中最重要的那些特征。

让我们再用糖尿病数据集来验证一下套索回归,在jupyter notebook中输入代码如下:

#导入套索回归
from sklearn.linear_model import Lasso
#使用套索回归拟合数据
lasso = Lasso().fit(X_train, y_train)
print('\n\n\n代码运行结果:')
print('==========\n')
print("套索回归在训练数据集的得分:{:.2f}".format(lasso.score(X_train, y_train)))
print("套索回归在测试数据集的得分:{:.2f}".format(lasso.score(X_test, y_test)))
print("套索回归使用的特征数:{}".format(np.sum(lasso.coef_ != 0)))

代码运行的结果如图4-16所示。

图4-16 套索回归模型得分

【结果分析】这里我们看到,套索回归在训练数据集和测试数据集的得分都相当糟糕。这意味着我们的模型发生了欠拟合的问题,而且你会发现,在10个特征里面,套索回归只用了3个。与岭回归类似,套索回归也有一个正则化参数alpha,用来控制特征变量系数被约束到0的强度。