起步
线性回归是利用数理统计和回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。与之前的分类问题(Classification
)不一样的是,分类问题的结果是离散型的;而回归问题中的结果是数值型的。
描述数据的特征
1.均值( mean )
2.中位数( median )
3.众数( mode )
4.方差( variance )
5.标准差 (standard deviation)、
简单线性回归
简单线性回归( Simple Linear Regression
)包含一个自变量 x 和一个因变量 y ,也就是一元线性回归。被用来描述因变量(y)和自变量(X)以及偏差(error)之间关系的方程叫做回归模型,这个模型是:
其中偏差 ε 满足正态分布的,因此它的期望值是 0 。ε是独立的。ε的方差(variance)对于所有的自变量 x 是一样的。
因此式子也可以写成:
其中,β0 是回归线的截距,β1 是回归线的斜率,E(y) 是在一个给定 x 值下 y 的期望值(均值)。
假设我们的估值函数(注意,是估计函数):
β 和 b 有什么关系呢? β0 是表示回归方程中真实的值,而 b0 是对 β0 的估值,通过训练能让 b0 趋近于 β0 。从而提高估值函数准确度。
如何练处适合简单线性回归模型的最佳回归线?
寻找的回归方程,是与真实值的离散程度最小的:
这就类似于高中学的最小二乘法了,利用那时候学到的公式套上去就能得到该方程了:
最小二乘法的推导过程可以查看维基,写得非常清楚:https://zh.wikipedia.org/wiki/最小二乘法
用python实现相应的例子:
预测当x=6时,y的值时多少?
代码如下:
#简单线性回归的例子实现
import numpy as np
def fitSLR(x,y):
n=len(x)
fenzi=0
fenmu=0
for i in range(0,n):
fenzi+=(x[i]-np.mean(x))*(y[i]-np.mean(y))
fenmu+=pow((x[i]-np.mean(x)),2)
b1=fenzi/fenmu
b0=np.mean(y)-(b1*np.mean(x))
return b0,b1
def predict(x,b0,b1):
return b0+b1*x
x=[1,3,2,1,3]
y=[14,24,18,17,27]
b0,b1=fitSLR(x,y)
print("intercept:",b0,"slop;",b1)
x_test=6
y_test=predict(6,b0,b1)
print ("y_test:",y_test)
结果为: