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

1、前言

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

1.数据回归的目的

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

2、线性回归

        线性回归可分为一元回归和多元回归,一元回归就是只有一个影响因子,也就是你们熟悉的线性方程,多元回归就是有多个影响因子。一元线性回归方程是 ,简单来讲就是二维平面上的一条直线,多元线性回归方程 ,从数学角度若是只有两个影响因子能够看作是回归平面,若是涉及到高维度不能用图形来描述。下面先讲解一元线性回归。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)

咱们获得结果:


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

2.多元线性回归

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


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


令 ,对  求导可得


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

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


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


这个矩阵是可逆的。

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

3、总结

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

PS: 若是以为本篇本章对您有所帮助,欢迎关注、评论、赞!若是要转发请注明做者和出处

参考文献:

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