如何推导最小二乘法,求解多元线性回归参数?

如何推导最小二乘法,求解多元线性回归参数?,第1张

如何推导最小二乘法求解多元线性回归参数?

本文主要内容:
1. 最小二乘法损失函数求解推导;
2. sklearn中linear_model.LinearRegression参数介绍+案例

最小二乘法损失函数求解推导

最小二乘法的思路:对损失函数求导,令其为0,求得损失函数最小值时的参数,但前提条件:导数为凸函数。


多元线性回归参数求解是一个矩阵求导的过程,所以需要知道一些矩阵运算、求导运算的公式:

 

 


 然后对多元线性回归的损失函数进行求导,公式如下:(其中w、y、X都是矩阵) 

 

令其为0: 

 

其中倒数最后一步需要左乘(X^TX)^-1。


 补充点:

1. 逆矩阵存在的充分必要条件:特征矩阵不能存在多重共线性。

2. 因为X^TX随着特征、数据量的增加,计算量很大,不能直接使用numpy计算,需要使用奇异值分解来计算。

奇异值分解在PCA中也涉及使用。

在PCA中,为了找到新的特征空间,需要使用奇异值分解来计算。 在sklearn.decomposition.PCA中,使用参数svd_solver来控制奇异值计算方法,可以使用full(精准)/arpack(截断)/randomized(随机)/auto。

3. 最小二乘法求解线性回归属于“无偏估计”,即要求标签必须是正态分布,所以需要对y进行正态处理,可以使用quantileTransformer或者PowerTransformer。不过因为机器学习为“后验方式”,如果不对y进行处理的效果好,那么也不必正态处理。


sklearn中linear_model.LinearRegression参数介绍+案例:加利福尼亚房价数据集
  • fit_intercept:是否有截距项,默认True;
  • normalize:对X进行标准化,默认True;
  • copy_X:是否复制一份,以保证不在原始数据上 *** 作,默认True;
  • n_jobs:设定运算性能,填整数,默认None;
  • model.coef_ :查看系数,即w
  • model.intercept_ :查看截距项
from sklearn.datasets import fetch_california_housing as fch

housevalue=fch()

X=pd.Dataframe(housevalue.data,columns=housevalue.feature_names)
X.head()
y=housevalue.target

from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=9)

from sklearn.linear_model import LinearRegression
model=LinearRegression().fit(X_train,y_train)
y_hat=model.predict(X_test)
y_hat

model.coef_ # 返回模型的参数
[*zip(X_train.columns,model.coef_)]

model.intercept_ # 返回模型的截距项

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5495896.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-13
下一篇2022-12-13

发表评论

登录后才能评论

评论列表(0条)

    保存