线性回归是机器学习的基础,目前不少机器学习算法都是从这些基础算法演变而来,本着打算巩固基础知识的目的,一块儿回顾一下线性回归。python
在介绍线性回归前,咱们先了解回归分析的做用,回归分析就是将一系列的影响因素 x 和结果 y 进行拟合获得一个方程,而后用这个方程对同类事件进行预测。在简单应用中,咱们能够对过去的销售额和广告费用进行拟合(广告费用做为x,销售额做为y),来预测广告费用对销售额的影响。算法
线性回归可分为一元回归和多元回归,一元回归就是只有一个影响因子,也就是你们熟悉的线性方程,多元回归就是有多个影响因子。一元线性回归方程是 ,简单来讲就是二维平面上的一条直线,多元线性回归方程 ,从数学角度若是只有两个影响因子能够看作是回归平面,若是涉及到高维度不能用图形来描述。下面先讲解一元线性回归。app
1.一元线性回归机器学习
以下图所示:函数
这是一系列点在坐标上的分布,这些点的分布很像一条直线,而咱们的目的就是找到这条直线,即在已知 和 的状况下,肯定 和 ,肯定 和 的过程也就是咱们所说的学习过程,然而学习后咱们也要区分红绩的好坏,在回归任务中关键点就是怎么判断咱们拟合出的直线 是否合格,也就是衡量 和 之间的差异。均方偏差是回归任务最经常使用的方法,咱们的目的就是使均方偏差最小,即学习
均方差对应了经常使用的欧式距离,咱们的目的也就是取得全部点到直线距离的最小值。spa
咱们令 ,分别对 和 求导3d
根据数学结论偏导数为0时,能够取得最小值,咱们令上式为零,通过变换可得,code
其中 为已知 的均值。blog
显然根据上述式子咱们能够很容易求出 和 的值,咱们也能够直接调用python的函数
# coding=utf8 import pandas as pd import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression ''' description:python线性回归 author:谢宜廷 mail:369587353@qq.com ''' #读取数据 line_sample = pd.read_csv('linear_regression_sample.csv') def plot_data(data): x = data['x'].as_matrix().reshape() # 注意此处.reshape(-1, 1),由于此处x是一维的,每行元素要转换成向量 y = data['y'].as_matrix() #初始化线性回归 regr = LinearRegression() #数据拟合 regr.fit(x,y) plt.plot(x,y,'o') plt.plot(x,regr.predict(x),color = 'red') plt.show() plot_data(line_sample)
咱们获得结果:
上述红线就是咱们所拟合的直线,下面介绍多元回归。
多元线性回归直白来讲就是有多个影响因子,好比产品销售额不只受广告投入的影响还和天气因素有关,每增长一个影响因素就多增长一个维度。多元线性回归的数学方程是 ,显然 受到多个 的影响,用向量表示方程为
咱们把样本也表示成向量形式 ,根据前面的均方差,可得
令 ,对 求导可得
令上式为零可得 ,很显然获得咱们要的结果。注意到此时 必须知足可逆的,也就是满秩的或者正定矩阵。
在实际任务中 每每不是可逆的,根据矩阵性质咱们能够解出多个 ,它们均可以使均方差最小,如何选择解做为输出,咱们此时引入正则化项 ,均方差方程变为 ,此时咱们的目的就转变为求最小的 ,对 求导且令 ,则可得
正规化为咱们解决了矩阵不可逆的问题,具体的说只要正则参数是严格大于零,事实上咱们也能证实
这个矩阵是可逆的。
熟悉的人会发现上面的正则化项就是L2正则化,也能够说是惩罚项,运用方法就是Ridge回归,实际运用中用于改善和减小过分拟合的问题,固然这个方法为何要这样作的,公式自己也回答不了,按照本身的习惯默认1+1=2同样,千万不要去纠结,有兴趣的能够学习相似方法lasso回归。很显然惩罚项对回归程是有影响的,当惩罚项很大时,回归方程就会偏离须要拟合的数据,当惩罚项很小趋于0时,加入这个项就没有意义,发生过拟合的问题,目前经常使用的判断方法是赤池信息准则(AIC)和贝叶斯信息准则(BIC)。
以上就是线性回归相关介绍,固然线性回归相反的还有非线性回归,经常使用的非线性回归,好比对数回归等,都是为了拟合出一个函数描述实际状况的因果关系。方法是有了,然而应用到实际状况中总会发现一些问题,好比输出的结果只有0和1,样本特征已经达到1000,这就须要降维方法好比LDA线性判别分析,这些实际问题也是促使咱们改进和研究算法的动力。
PS: 若是以为本篇本章对您有所帮助,欢迎关注、评论、赞!若是要转发请注明做者和出处
参考文献:
[1]周志华《机器学习》第三章线性模型