一、什么是线性回归(Linear Regression)
维基百科:线性回归
在统计学中,线性回归是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。
二、线性回归的数学推导
1.线性回归模型形如:
- 注:线性回归得出的模型不一定是一条直线,在只有一个变量的时候,模型是平面中的一条直线;有两个变量的时候,模型是空间中的一个平面;有更多变量时,模型将是更高维的。
- 实际上,线性回归中通常使用残差平方和,即点到直线的平行于y轴的距离而不用垂线距离,残差平方和除以样本量n就是均方误差。均方误差作为线性回归模型的代价函数(cosfunction)。使所有点到直线的距离之和最小,就是使均方误差最小化,这个方法叫做最小二乘法。
2.代价函数:
3.偏导数法
- 偏导数法是非常麻烦的,需要一个一个地计算w。为了方便,这里以单变量线性回归为例。
4.正规方程法
- 正规方程使用矩阵运算,可以一次求出W向量。但是当变量(feature)个数大于数据个数时,会导致xTx不可逆,这时候就不能用此方法了。
- 使用正规方程法,如果希望得到的模型带有偏置项b,就要先给数据集X增加全为1的一列,这样才会把b包含在W中;如果不添加,那么模型是强制过原点的。
以上便是线性回归模型中参数估计的推导过程。
三、标准线性回归
1.对于对给定数据集X和对应目标值y,线性回归目的是要找到回归系数w,使用线性方程来拟合这些数据点。
2.标准线性回归:
- 通常求取回归系数的做法是,求得使平方误差最下的w
- 平方误差
- 解出回归系数
注:直接用此公式时需注意矩阵的求逆,需要判断矩阵行列式不为零,否则不能直接求逆。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# numpy函数库中的所有模块引入当前的命名空间
# 后者不建议使用,如果下次引用和numpy里的函数一样的情况,就会出现命名冲突。
from numpy import *
import matplotlib.pyplot as plt
# 该函数是用来打开一个用tab键分割的文本文件,默认文件每行的最后一个值是目标值
def loadDataSet(fileName):
# 读