栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

本文主要内容:
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_ # 返回模型的截距项

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/503802.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号