亲宝软件园·资讯

展开

线性回归

Yabea 人气:0
线性回归(Linear Regression)是统计分析、机器学习中最基础也是最重要的算法之一,利用线性函数对一个或多个自变量和因变量(y)之间的关系进行拟合模型,用来做预测。 根据自变量(样本特征)个数分为一元和多元线性回归: $$ Y=a + bx $$ $$ Y = a+ b1X1 + b2X2 + b3X3 + ... + bkXk $$ ## 开胃小菜 **什么是线性?** 首先看看线性函数的定义:一阶或零阶多项式。特征是一维时,线性模型在二维空间构成一条直线;特征是二维时,线性模型在三维空间中构成一个平面;特征是三维时,则最终模型在四维空间中构成一个体;以此类推… **线性回归具体什么时候使用呢?** 1. 回归问题,因变量是连续值 2. 自变量和因变量存在线性关系 其实,这里我们可以大概将线性回归概括为:在N维空间中找到一个线性函数(一条直线,一个平面...)来拟合数据。 看图更直观一些: ![](https://img2020.cnblogs.com/blog/771535/202003/771535-20200310220245131-1079356546.png) ![](https://img2020.cnblogs.com/blog/771535/202003/771535-20200310220319668-1359329690.png) 线性回归的目标就是找到图中的直线或平面来拟合图中的点,再结合上述回归方程可以得到:线性回归的目标就是找到回归参数a和b。 **怎样找到,且找到最优值呢?** 在一个二维空间找到一条直线是简单的,但是怎样找到一条最佳拟合直线是一个值得思索的问题。不妨换一种思路:预测值和真实值之间肯定是存在误差的,那么要是能将误差的最小值找到,就可以使得预测值和真实值无限接近,此时便是最优值。 因此,线性回归可以转换为最小化预测值和真实值误差的问题。 **怎样最小化误差呢?** 常见的有最小二乘法和梯度下降法。 ## 实现 机器学习相关的框架和库基本都有实现线性回归的方法,今天介绍用sklearn一个经典实例,预测房价: ```python from sklearn import datasets from sklearn.metrics import mean_squared_error from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split import matplotlib as mpl mpl.use("TkAgg") import matplotlib.pyplot as plt boston = datasets.load_boston() X = boston.data y = boston.target x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=1/5., random_state=8) lr = LinearRegression() lr.fit(x_train, y_train) y_pred = lr.predict(x_test) plt.title("linear_regression ") plt.plot(y_test, color='green', marker='o', label='test') plt.plot(y_pred, color='red', marker='+', label='predict') plt.legend() plt.show() # 用均方误差评估预测结果 mse = mean_squared_error(y_test, y_pred) print("MSE:" + repr(mse)) ``` 数据集包含了波士顿房屋以及周边环境的一些详细信息,label字段为房屋价格,数据集已经集成到scikit-learn中,可以直接加载数据,通过房屋及其相关的特征使用线性回归预测房屋价格,最后使用均方误差对预测结果进行评估。 ## 总结 线性回归很简单,但是不能拟合非线性数据,并且在实际项目中一般不会单独使用线性回归。 但是,它确是很多强大的非线性模型的基础,蕴含了机器学习中很多重要的思想,还是很值得学习的。 感兴趣的朋友可以对线性回归进行推导。 以上。

加载全部内容

相关教程
猜你喜欢
用户评论