1.什么是线性回归
这里引用百度百科的解释:利用数理统计中的回归分析,来确定变量间相互依赖的定量关系的一种统计分析方法,其表达形式为 y ( i ) = w T x ( i ) + e ( i ) y^{(i)} = w^Tx^{(i)}+e^{(i)} y(i)=wTx(i)+e(i), e e e为误差(用来代替统计误差或者抽样误差),它服从均值为0的标准正态分布。例如成年人的月收入与月消费的关系,二者之间肯定存在某种关系。
在求解之前,通常会给定几个假设:
- (1)自变量 ( X i , X j ) (X_i, X_j) (Xi,Xj) 之间应相互独立;
- (2)误差项 ( e i , e j ) (e_i,e_j) (ei,ej) 之间应相互独立;
- (3)模型线性可加。假设因变量为Y,自变量为X1,X2,则回归分析的默认假设为 Y = b + a 1 X 1 + a 2 X 2 + e Y=b+a1X1+a2X2+e Y=b+a1X1+a2X2+e。
线性性 :X1每变动一个单位,Y相应变动a1个单位,与X1的绝对数值大小无关。
可加性:X1对Y的影响是独立于其他自变量(如X2)的。
使用python生成模拟数据,具体代码与注释如下:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
font = {
'family': 'Microsoft YaHei',
'weight': 'bold',
'size': 10}
plt.rc('font', **font)
# 设置字体
''' 1.模拟数据x, y'''
x1 = np.arange(1, 5, 0.1) # 0.1为步长
y = x1 * 4 + 3 + 2 * np.random.randn(len(x1))
# 2.通过API实现参数估计
model_lr = LinearRegression()
model_lr.fit(x1.reshape(-1, 1), y.reshape(-1, 1)) # 转换为列向量形
# model_lr.coef_ (1,1), model_lr.intercept_(1,)都是ndarray类型
print('API模型求解的w={}, b={}'.format(round(model_lr.coef_[0][0], 4), round(model_lr.intercept_[0], 4)))
下图是通过python接口求解到的W和b,绘制出原始数据和拟合线。
2.最大似然估计(MLE)
假设 y = X ∗ W + e y = X*W+e y=X∗W+e,最后的 J ( w ) J(w) J(w)就是我们要优化的目标函数也称为损失函数。
y ( i ) = w ⋅ x ( i ) + e ( i ) y^{(i)} = w · x^{(i)} +e^{(i)} y(i)=w⋅x(i)+e(i)
概 率 密 度 : p ( e ( i ) ) = 1 2 π σ ⋅ e x p ( − e ( i ) 2 2 σ 2 )