【机器学习之线性回归】多元线性回归模型的搭建+Lasso回归的特征提取 您所在的位置:网站首页 多元回归模型建立 【机器学习之线性回归】多元线性回归模型的搭建+Lasso回归的特征提取

【机器学习之线性回归】多元线性回归模型的搭建+Lasso回归的特征提取

2024-07-07 08:51| 来源: 网络整理| 查看: 265

文章目录 前言一、多元线性回归1.原理介绍2.sklearn代码实现 二、Lasso回归1.原理介绍2.sklearn代码实现 三、总结

前言

回归是监督学习的一个重要问题,回归用于预测输入变量和输出变量之间的关系,特别是当输入变量的值发生变化时,输出变量的值也随之发生变化。而线性回归是机器学习中最简单的回归算法。常被用于销量预测,房价预测等场合。

一、多元线性回归 1.原理介绍

多元线性回归指的是就是一个样本具有多个特征的线性回归问题。对于一个具有n个特征的样本i而言,它的回归结果可以写作一个几乎人人熟悉的方程。其中等式左侧y为预测值,x为特征变量。 在这里插入图片描述 一般用向量写作: 在这里插入图片描述 那么,损失函数为(真实值-预测值)的平方和,如下: 在这里插入图片描述 这个损失函数代表了向量y−y ̂ 的L2范式的平方结果,L2范式的本质就是欧式距离,即是两个向量上对应点进行相减后求平方和再开平方,我们现在只实现了向量上每个点对应相减后的平方和,并没有开平方,所以我们的损失函数是L2范式,即欧式距离的平方结果。为了让预测值与真实值更加接近,即就是求这个损失函数最小值,求出其对应的参数w。如下: 在这里插入图片描述 接下来,就是数学问题了,损失函数S对参数变量w求导,使其导数等于0,即就是我们需要的w。

2.sklearn代码实现

class sklearn.linear_model.LinearRegression(*, fit_intercept=True, normalize=‘deprecated’, copy_X=True, n_jobs=None, positive=False) 其中:fit_intercept:布尔值,是否计算此模型的截距。 代码:

import matplotlib.pyplot as plt import numpy as np from sklearn import linear_model from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error, r2_score # Load the diabetes dataset X = np.arange(200) y = -10*X+50+np.random.normal(0,100,200) X_train,X_test,y_train,y_test = train_test_split(X[:,np.newaxis],y[:,np.newaxis],test_size=0.2,random_state=0) # Create linear regression object regr = linear_model.LinearRegression() # Train the model using the training sets regr.fit(X_train, y_train) # Make predictions using the testing set y_pred = regr.predict(X_test) # The coefficients print("Coefficients_w: ", regr.coef_) print("intercep_b: ", regr.intercept_) # The mean squared error print("Mean squared error: %.2f" % mean_squared_error(y_test, y_pred)) # The coefficient of determination: 1 is perfect prediction print("Coefficient of determination: %.2f" % r2_score(y_test, y_pred)) # Plot outputs plt.scatter(X_test, y_test, color="black") plt.plot(X_test, y_pred, color="blue", linewidth=3) plt.show()

结果如下: 在这里插入图片描述

我们自定义了y=-10x+50的函数,并加入了一些噪音,进行建模测试,测试结果符合预期。

二、Lasso回归 1.原理介绍

除了传统的线性回归,使用比较多线性回归模型的还有lasso,它是被创造来作用于多重共线性问题的算法,如果输入特征的系数对我们的机器学习模型训练没有积极的贡献,则它们会缩小。这样,一些特征可能会被自动丢弃,即将它们的系数指定为零,常被选做特征选择。Lasso使用的是系数w的L1范式(L1范式则是系数w的绝对值)乘以正则化系数ɑ,如下: 在这里插入图片描述

2.sklearn代码实现

Sklearn API接口:class sklearn.linear_model.Lasso(alpha=1.0, *, fit_intercept=True, normalize=‘deprecated’, precompute=False, copy_X=True, max_iter=1000, tol=0.0001, warm_start=False, positive=False, random_state=None, selection=‘cyclic’) 参数众多,但我们比较在意的参数是正则化系数ɑ。 代码:

import numpy as np from sklearn.linear_model import LinearRegression, Lasso from sklearn.model_selection import train_test_split from sklearn import datasets X,y = datasets.load_boston(return_X_y=True) print(X.shape,y.shape) Xtrain,Xtest,Ytrain,Ytest = train_test_split(X,y,test_size=0.3,random_state=420) #线性回归进行拟合 reg = LinearRegression().fit(Xtrain,Ytrain) print("LinearRegression的系数:\n",(reg.coef_*100).tolist()) #Lasso进行拟合 lasso_ = Lasso(alpha=10).fit(Xtrain,Ytrain) print("Lasso的系数:\n",(lasso_.coef_*100).tolist())

结果如下: 在这里插入图片描述 我们对boston房价数据集分别进行多元线性回归LinearRegression和Lasso回归,通过结果可以看出Lasso回归对于输入特征在模型中作用小的特征,直接将系数指定为0。这不失为一种特征提取的好办法。

三、总结

多元线性回归和Lasso回归都属于线性回归,他们也是经常用到的线性回归模型。本文讲解了多线线性回归如何建模、Lasso回归如何进行特征选择,希望对读者有所帮助。

链接: 【机器学习之特征工程】数据预处理、特征选择、降维及不平衡处理 链接: 【机器学习之集成算法】RandomForest和XGboost原理介绍与代码实现 链接: 【机器学习之逻辑回归】sklearn+python逻辑回归详解 链接: 【机器学习之聚类算法】KMeans原理及代码实现 链接: 【机器学习之决策树】决策树原理介绍及代码实现sklearn



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有