机器学习入门——线性回归

一、前言

        线性回归是机器学习的基础,目前很多机器学习算法都是从这些基础算法演变而来,本着打算巩固基础知识的目的,一起回顾一下线性回归。

1.数据回归的目的

       在介绍线性回归前,我们先了解回归分析的作用,回归分析就是将一系列的影响因素 x 和结果 y 进行拟合得到一个方程,然后用这个方程对同类事件进行预测。在简单应用中,我们可以对过去的销售额和广告费用进行拟合(广告费用作为x,销售额作为y),来预测广告费用对销售额的影响。

二、线性回归

        线性回归可分为一元回归和多元回归,一元回归就是只有一个影响因子,也就是大家熟悉的线性方程,多元回归就是有多个影响因子。一元线性回归方程是 ,简单来说就是二维平面上的一条直线,多元线性回归方程 ,从数学角度如果只有两个影响因子可以看做是回归平面,如果涉及到高维度不能用图形来描述。下面先讲解一元线性回归。

1.一元线性回归

        如下图所示:


这是一系列点在坐标上的分布,这些点的分布很像一条直线,而我们的目的就是找到这条直线,即在已知  的情况下,确定  和 ,确定  和 的过程也就是我们所说的学习过程,然而学习后我们也要区分成绩的好坏,在回归任务中关键点就是怎么判断我们拟合出的直线  是否合格,也就是衡量  和  之间的差别。均方误差是回归任务最常用的方法,我们的目的就是使均方误差最小,即


均方差对应了常用的欧式距离,我们的目的也就是取得所有点到直线距离的最小值。

我们令  ,分别对  和  求导



根据数学结论偏导数为0时,可以取得最小值,我们令上式为零,经过变换可得,



其中 为已知 的均值。

显然根据上述式子我们可以很容易求出  和 的值,我们也可以直接调用python的函数

# coding=utf8
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
'''
description:python线性回归
author:谢宜廷
mail:[email protected]
'''
#读取数据
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)

我们得到结果:


上述红线就是我们所拟合的直线,下面介绍多元回归。

2.多元线性回归

        多元线性回归直白来说就是有多个影响因子,比如产品销售额不仅受广告投入的影响还和天气因素有关,每增加一个影响因素就多增加一个维度。多元线性回归的数学方程是 ,显然  受到多个  的影响,用向量表示方程为


我们把样本也表示成向量形式  ,根据前面的均方差,可得


令 ,对  求导可得


令上式为零可得 ,很显然得到我们要的结果。注意到此时  必须满足可逆的,也就是满秩的或者正定矩阵。

        在实际任务中  往往不是可逆的,根据矩阵性质我们可以解出多个  ,它们都可以使均方差最小,如何选择解作为输出,我们此时引入正则化项  ,均方差方程变为 ,此时我们的目的就转变为求最小的 ,对  求导且令 ,则可得


正规化为我们解决了矩阵不可逆的问题,具体的说只要正则参数是严格大于零,事实上我们也能证明


这个矩阵是可逆的。

        熟悉的人会发现上面的正则化项就是L2正则化,也可以说是惩罚项,运用方法就是Ridge回归,实际运用中用于改善和减少过度拟合的问题,当然这个方法为什么要这样做的,公式本身也回答不了,按照自己的习惯默认1+1=2一样,千万不要去纠结,有兴趣的可以学习类似方法lasso回归。很显然惩罚项对回归程是有影响的,当惩罚项很大时,回归方程就会偏离需要拟合的数据,当惩罚项很小趋于0时,加入这个项就没有意义,发生过拟合的问题,目前常用的判断方法是赤池信息准则(AIC)和贝叶斯信息准则(BIC)。

三、总结

        以上就是线性回归相关介绍,当然线性回归相反的还有非线性回归,常用的非线性回归,比如对数回归等,都是为了拟合出一个函数描述实际情况的因果关系。方法是有了,然而应用到实际情况中总会发现一些问题,比如输出的结果只有0和1,样本特征已经达到1000,这就需要降维方法比如LDA线性判别分析,这些实际问题也是促使我们改进和研究算法的动力。

PS: 如果觉得本篇本章对您有所帮助,欢迎关注、评论、赞!如果要转发请注明作者和出处

参考文献:

    [1]周志华《机器学习》第三章线性模型

猜你喜欢

转载自blog.csdn.net/weixin_42389349/article/details/80604436