第四章线性回归算法进阶
4.5Lasso回归
Lasso回归与岭回归类似,差别在于使用了不同的正则化项,由于引入正则项不同,解决了岭回归的一些不足,更好地实现了回顾估计法。
4.5.1Lasso回归原理
Lasso回归是让回归系数不要太大,以免造成过度拟合。
与岭回归不同的是,Lasso是在成本函数J(θ)中增加参数绝对值和的正则项:
岭回归中加入了参数平方和的约束惩罚项(L2正则化)
Lasso回归中加入了参数绝对值和的约束惩罚项(L1正则化)
- 等高线图表示残差平方和的等高线。
残差在最小二乘估计出最小。 - 阴影部分分别是岭回归和Lasso回归的限制区域。
圆形为岭回归的,方形为Lasso回归的。 - 这两种带有惩罚项的方法都是要找到第一个落到限制区域上的等高线的那个位置的坐标。
; 4.5.2Lasso回归的参数求解
- 通常采用坐标下降法来求解参数估计值。
4.5.3Lasso回归的Python实现:影厅观影人数的拟合(四)
- 导入数据、划分数据集
df = pd.read_csv('D:/PythonProject/machine/data/3_film.csv')
X = df.iloc[:,1:4]
y = df.filmnum
X = np.array(X.values)
y = np.array(y.values)
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=1)
- Lasso回归估计
lasso = linear_model.Lasso(alpha=0.1)
lasso.fit(X_train,y_train)
print('截距项为:{}\n系数为:{}'.format(lasso.intercept_,lasso.coef_))
截距项为:4.358584829813829
系数为:[ 0.36999035 -0.03494547 0.22750781]
- 根据求出的参数对测试集进行预测
y_hat = lasso.predict(X_test)
- 对测试集响应变量实际值与预测集的比较
plt.figure(figsize=(10,6))
t = np.arange(len(X_test))
plt.plot(t,y_test,'r',linewidth=2,label='y_test')
plt.plot(t,y_hat,'g',linewidth=2,label='y_hat')
plt.legend()
plt.show()
- 对预测结果进行评价
print('r2_2={}'.format(r2_score(y_test,y_hat)))
print('MAE={}'.format(metrics.mean_absolute_error(y_test,y_hat)))
print('MSE={}'.format(metrics.mean_squared_error(y_test,y_hat)))
print('RMSE={}'.format(np.sqrt(metrics.mean_squared_error(y_test,y_hat))))
r2_2=0.8276541436150417
MAE=4.638494755480021
MSE=46.71582547034623
RMSE=6.834897619595061Original: https://blog.csdn.net/weixin_45655385/article/details/122438959
Author: BianchiHB
Title: 机器学习第四章线性回归算法进阶4.5Lasso回归(《大话Python机器学习》学习笔记)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/635438/
转载文章受原作者版权保护。转载请注明原作者出处!