多元线性回归
我认为多元线性回归与一元线性回归本质上是一样的,一元线性回归可以看成数据特征维度为1的多元线性回归,而多元主要体现在数据维度的多样性,比如说房价预测,决定房价的因素有很多(比如,位置,新旧,大小。。。等)。
解法
设DataSet:={(x1,y1),(x2,y2),(x3,y3)…(xn,yn))},其中,,也就是说X=,其中这里,每个元素x
都是一个p维的列向量,我们继续化简,X=
Y=
W=
我们假设Y与X的线性关系为f(xi)=,这里W,b为参数,为了方便后续计算,我们偏执项b与W合为一体,写成W=(W;b),那么X也就变成了
X=
W=
所以我们把假设函数写成,我们的目的是找到一条直线,使这条直线的距离到每个每个坐标点的距离最小,这也就是最小二乘估计的核心思想,所以我们可以把Cost Function写成
这里之所以用平方,如果没有平方,Cost Fuction可能为负值,如果为负,这样就不利于我们对真实值与预测值差距多少的判断,这样我们会有一个疑问,我们可以不用均方误差,直接加上一个绝对值就可以保证代价函数的值域大于等于0,答案显然是不可以的,因为绝对值函数不能保证在整个定义域上>=0,所以最终采用均方误差,这个代价函数也可以用最小二乘估计推出来,我们下一节在做讨论。
最终的代价函数定义为,我们要得到最优解,即代价函数最小,我们继续简化这个优化函数,
通过简化我们得到:
那么,通过矩阵乘法的运算性质,我们可以得出这四项都是一维常数,其中第二项和第三项相互转置,可以简化(如果忘了矩阵算法,下图给出属性):
为了最小化代价函数,我们取它的导数,这里省略了矩阵求导过程,
代码
import numpy as np
import pandas as pd
import statsmodels.api as sm
file = r'C:\Users\data.xlsx'
data = pd.read_excel(file)
data.columns = ['y', 'x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9']
x = sm.add_constant(data.iloc[:,1:]) #生成自变量
y = data['y'] #生成因变量
model = sm.OLS(y, x) #生成模型
result = model.fit() #模型拟合
result.summary() #模型描述
版权声明:本文为博主日常自然卷原创文章,版权归属原作者,如果侵权,请联系我们删除!
原文链接:https://blog.csdn.net/qq_18555105/article/details/123218213