线性回归、最小二乘原理(Linear_regression)

本文深入探讨线性回归的原理与应用,涵盖一元与多元线性回归,详细解析最小二乘法、梯度下降法及正则化技术,并通过实例展示不同回归模型的训练过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考了统计学习方法,概率论与数理统计,工程线性代数,西瓜书,Machine Learnig with python做的总结,所以不能作为教程,还包含自己用sklearn做的一些对比实验,原文是写在jupyter上的,这里是直接转为.md导过来的,所以格式有些问题,有些东西还待完善…

(二) 线性回归 linear regression

线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法.可用于预测和相关性分析(即“因子分析”,因子分析是根据回归分析结果,得出各个自变量对目标变量产生的影响,因此,需要求出各个自变量的影响程度).回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析.如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析.

f(x)=w1x1+w2x2+...+wnxn+bf(x)=w_1x_1+w_2x_2+...+w_nx_n+bf(x)=w1x1+w2x2+...+wnxn+b

其向量表达形式为f(x)=wx+bf(x) = wx+bf(x)=wx+b,这里xxx表示样本,x1,x2,x3...x_1,x_2,x_3...x1,x2,x3...表示属性

性能度量

均方误差(square loss)∑i=1m(f(xi)−yi)2=∑i=1m(yi−wxi−b)2\sum_{i=1}^m(f(x_i)-y_i)^2=\sum_{i=1}^m(y_i-wx_i-b)^2i=1m(f(xi)yi)2=i=1m(yiwxib)2这里m示样本数量,xix_ixi表示样本iii,然后xi1,xi,2,xi,3...x_{i1},x_{i,2},x_{i,3}...xi1,xi,2,xi,3...表示其特征

一元线性回归

原始模型xi=(xi1),w=(w),y=(y1,y2,...,ym):x_i=(x_{i1}),w=(w),y=(y_1,y_2,...,y_m):xi=(xi1),w=(w),y=(y1,y2,...,ym):f(xi)=wxi1+bf(x_i)=wx_{i1}+bf(xi)=wxi1+b

目标函数:argmin(w,b)Ew,b=∑i=1m(yi−wxi1−b)2argmin_{(w,b)}E_{w,b}=\sum_{i=1}^{m}(y_i-wx_{i1}-b)^2argmin(w,b)Ew,b=i=1m(yiwxi1b)2

多元线性回归

原始模型xi=(xi1,xi2,...,xin)x_i=(x_{i1},x_{i2},...,x_{in})xi=(xi1,xi2,...,xin),w=(w1,w2,...,wn)w=(w_1,w_2,...,w_n)w=(w1,w2,...,wn),这里为了方便我们使用xi=(xi1,xi2,...,xin,1)x_i=(x_{i1},x_{i2},...,x_{in},1)xi=(xi1,xi2,...,xin,1),w=(w1,w2,...,wn,b)w=(w_1,w_2,...,w_n,b)w=(w1,w2,...,wn,b)bbb一起包含在权重矩阵中,模型为::: f(xi)=WTXf(x_i)=W^TXf(xi)=WTX其中X=(x1x2...xm1)X=\begin{pmatrix} x_1& \\ x_2& \\ ...&\\ x_m&\\ 1&\end{pmatrix}X=x1x2...xm1表示整个数据集,y=X=(y1y2...ym)y=X=\begin{pmatrix} y_1& \\ y_2& \\ ...&\\ y_m &\end{pmatrix}y=X=y1y2...ym,W=(w1w2...wm1)W=\begin{pmatrix} w_1& \\ w_2& \\ ...&\\ w_m&\\ 1& \end{pmatrix}W=w1w2...wm1

目标函数:argminWEW=(y−XW)T(y−XW)argmin_{W}E_W=(y-XW)^T(y-XW)argminWEW=(yXW)T(yXW)为什么这里示转置乘原型,这是因为最终惩乘出来是一个值,求了和的.

求解

最小二乘法(为甚么叫最小二乘:因为是平方和最小化):求解Ew,b=∑i=1m(yi−wxi1−b)2E_{w,b}=\sum_{i=1}^{m}(y_i-wx_{i1}-b)^2Ew,b=i=1m(yiwxi1b)2最小化过程称为线性回归的最小二乘法.

一元线性:

目标函数是关于wwwbbb的凸函数,凸函数:对于区间[a,b]上定义的f(x)f(x)f(x)满足f(x1+x22)⩽f(x1)+f(x2)2f(\frac{x_1+x_2}{2})\leqslant \frac{f(x_1)+f(x_2)}{2}f(2x1+x2)2f(x1)+f(x2)则称f(x)f(x)f(x)为凸函数

凸函数求最值,就是求导,因此将目标函数分别对wwwbbb求导:∂E∂w=∑i=1m2(−xi1)(yi−wxi1−b)=∑i=1m2(wxi12−(yi−b)xi1)=2(w∑i=1mxi12−∑i=1m(yi−b)xi1)\frac{\partial E}{\partial w}=\sum_{i=1}^m2(-x_{i1})(y_i-wx_{i1}-b)=\sum_{i=1}^m2(wx_{i1}^2-(y_i-b)x_{i1})=2(w\sum_{i=1}^mx_{i1}^2-\sum_{i=1}^m(y_i-b)x_{i1})wE=i=1m2(xi1)(yiwxi1b)=i=1m2(wxi12(yib)xi1)=2(wi=1mxi12i=1m(yib)xi1)

∂E∂b=∑i=1m2(−1)(yi−wxi1−b)=2(mb−∑i=1m(yi−wxi1))\frac{\partial E}{\partial b}=\sum_{i=1}^m2(-1)(y_i-wx_{i1}-b)=2(mb-\sum_{i=1}^{m}(y_i-wx_{i1}))bE=i=1m2(1)(yiwxi1b)=2(mbi=1m(yiwxi1))

可以解得b=1m∑i=1m(yi−wxi1)=y−−wx−b=\frac{1}{m}\sum_{i=1}^{m}(y_i-wx_{i1})=y^--wx^-b=m1i=1m(yiwxi1)=ywx

w=∑i=1m(yi−b)xi1∑i=1mxi12=∑i=1m(yi−1m∑i=1m(yi−wxi1))xi1∑i=1mxi12w=\frac{\sum_{i=1}^{m}(y_i-b)x_{i1}}{\sum_{i=1}^{m}x_{i1}^2}=\frac{\sum_{i=1}^{m}(y_i-\frac{1}{m}\sum_{i=1}^{m}(y_i-wx_{i1}))x_{i1}}{\sum_{i=1}^{m}x_{i1}^2}w=i=1mxi12i=1m(yib)xi1=i=1mxi12i=1m(yim1i=1m(yiwxi1))xi1

w=∑i=1myi(xi1−x−)∑i=1mxi2−1m(∑i=1mxi1)2w=\frac{\sum_{i=1}^{m}y_i(x_{i1}-x^-)}{\sum_{i=1}^{m}x_i^2-\frac{1}{m}(\sum_{i=1}^{m}x_{i1})^2}w=i=1mxi2m1(i=1mxi1)2i=1myi(xi1x)

这里y−y^-yx−x^-x表示均值

多元线性:

由于wwwbbb的合并所以求导只用对WWW求导可得

∂E∂W=2XT(XW−y)\frac{\partial E}{\partial W}=2X^T(XW-y)WE=2XT(XWy)

W=(XTX)−1XTyW=(X^TX)^{-1}X^TyW=(XTX)1XTy

但是现实任务中(XTX)(X^TX)(XTX)往往不是满秩矩阵,即使满秩也可能不是方阵,因此可能没有逆矩阵(设AAAnnn阶矩阵, 若r(A)=nr(A) = nr(A)=n, 则称AAA为满秩矩阵。但满秩不局限于nnn阶矩阵。
若矩阵秩等于行数,称为行满秩;若矩阵秩等于列数,称为列满秩。既是行满秩又是列满秩则为nnn阶矩阵即nnn阶方阵。行满秩矩阵就是行向量线性无关,列满秩矩阵就是列向量线性无关;所以如果是方阵,行满秩矩阵与列满秩矩阵是等价的.见工程数学新线性代数第六版矩阵初等变换与线性方程组)(一个n阶方阵A称为可逆的,或非奇异的,如果存在一个n阶方阵B,使得BA=EBA=EBA=E
则称B是A的一个逆矩阵。)

最小二乘法概率学原理

以一元线性回归,从概率学角度说明为甚么要最小化平方差项。首先要了解最大似然估计。我们假设有x1,x2,x3,..,xmx_1,x_2,x_3,..,x_mx1,x2,x3,..,xm个样本,对应真实值为y1,y2,y3,..,ymy_1,y_2,y_3,..,y_my1,y2,y3,..,ym。那么对于模型y=wxi1+by=wx_{i1}+by=wxi1+b,其不一定就能完全拟合数据,所以改写为yi=wxi1+b+ϵiy_i=wx_{i1}+b+\epsilon_iyi=wxi1+b+ϵi其中ϵi∼N(0,σ2)\epsilon_i\sim N(0,\sigma^2)ϵiN(0,σ2),σ\sigmaσ是不依赖于xi1x_{i1}xi1.这里的ϵ\epsilonϵ相当于是一个正太分布的误差项,各个ϵ\epsilonϵ之间相互独立.

那么就有yi∼N(wxi1+b,σ2)y_i\sim N(wx_{i1}+b,\sigma^2)yiN(wxi1+b,σ2),于是根据最大释然估计,我们可以得到联合概率分布的似然函数:
L=∏i=1mP(yi)=∏i=1m1σ2πexp[−12σ2(yi−wxi1−b)2]L=\prod_{i=1}^mP(y_i)=\prod_{i=1}^m \frac{1}{\sigma\sqrt{2\pi}}exp[-\frac{1}{2\sigma^2}(y_i-wx_{i1}-b)^2]L=i=1mP(yi)=i=1mσ2π1exp[2σ21(yiwxi1b)2]

对数似然函数为:log(L)=∑i=1m[log(1σ(2π))−12σ2(yi−wxi1−b)2]log(L)=\sum_{i=1}^{m}[log(\frac{1}{\sigma\sqrt(2\pi)})-\frac{1}{2\sigma^2}(y_i-wx_{i1}-b)^2]log(L)=i=1m[log(σ(2π)1)2σ21(yiwxi1b)2]

根据最大释然估计,我们希望联合概率最大化,所以,这里我们对对数似然函数求最值,由于除了平方项都是常量,因此我们只用对平方项∑i=1m(yi−wxi1−b)2\sum_{i=1}^{m}(y_i-wx_{i1}-b)^2i=1m(yiwxi1b)2求最小值,这就是其概率学原理。

梯度下降法求解

批量梯度下降:w=w+α∑i=1m(yi−wxi1−b)xi1w=w+\alpha\sum_{i=1}^{m}(y_i-wx_{i1}-b)x_{i1}w=w+αi=1m(yiwxi1b)xi1 优点:得到全局最优解
,缺点:当样本数目很多时,训练过程会很慢

随机梯度下降:每次更新只选取一个样本来进行更新,优点:训练速度快,
缺点:准确度下降,可能跳出最优解,不是全局最优

小批量梯度下降:小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷,每次取一定数量的样本进行迭代更新

结合正则项的线性回归

使用正则项:Ew,b=∑i=1m(yi−wxi1−b)2+λ∑i=1n∣wi∣kE_{w,b}=\sum_{i=1}^{m}(y_i-wx_{i1}-b)^2+\lambda \sum_{i=1}^n|w_i|^kEw,b=i=1m(yiwxi1b)2+λi=1nwik

k=1k=1k=1时为L1正则称为lasso回归,当k=2k=2k=2时为L2正则称为Ridge(岭回归)回归,也可以L1和L2正则化同时使用

为甚要加入正则项

高维数据

高维数据指数据的维度很高,甚至远大于样本量的个数。高维数据的明显的表现是:在空间中数据是非常稀疏的,与空间的维数相比样本量总是显得非常少。在分析高维数据过程中碰到最大的问题就是维数的膨胀,也就是通常所说的“维数灾难”问题。研究表明,随着维数的增长,分析所需的空间样本数会呈指数增长。换言之,当样本量确定时,数据空间维度由增加则样本密度将会降低,从而样本呈稀疏状态。假设样本量n=12,单个维度宽度为3,那在一维空间下,样本密度为12/3=4,在二维空间下,样本分布空间大小为3×33\times33×3,则样本密度为12/9=1.3312/9=1.3312/9=1.33,在三维空间下样本密度为12/27=0.4412/27=0.4412/27=0.44

带来的问题:

1.需要更多的样本,而且样本随着数据维度的增加呈指数型增长;
2.数据变得更稀疏,导致数据灾难;
3.在高维数据空间,预测将变得不再容易;
4.导致模型过拟合(过拟合原因是因为数据,空间维度大,样本稀疏不能代表总体,因此即使模型在样本上拟合很好,但是泛化能力很差,因此叫过拟合

解决方法

1.增加样本数量;2.降低数据维度;

增加样本数量可能不太实际,数据降维一般使用PCA,但是PCA要求主成分分析法只适用于数据空间维度小于样本量的情况,当数据空间维度很高时,将不再适用.

3.加入正则化项;解释:可以无论是L1或是L2都是参数(特征权重)的和的形式(L1取绝对值),最小化正则化损失函数时,正则项也最小化了,这样就可以保证参数(特征权重)最小化,可能部分较小参数就可能被压缩为0,这样也可以间接降低维度。根据李航统计学习的解释:正则化项作用是选择经验风险与模型复杂度同时较小的模型.

例子

import pandas as pd
oecd_bli=pd.read_csv("lifesat/oecd_bli_2015.csv",thousands=",")
oecd_bli.head()
set(oecd_bli["Indicator"])#看看指标总共有多少项,然后选取我们需要的Life satisfaction
set(oecd_bli["INEQUALITY"])
{'HGH', 'LW', 'MN', 'TOT', 'WMN'}
oecd_bli=oecd_bli[oecd_bli["INEQUALITY"]=="TOT"]
oecd_bli=oecd_bli.pivot(index="Country",columns="Indicator",values="Value")#指定哪列为列名,指定哪列为行名,指定值为哪个列的值
#oecd_bli["Life satisfaction"]

gdp=pd.read_csv("lifesat/gdp_per_capita.csv",thousands=",",delimiter='\t',encoding="latin1",na_values="n/a")
gdp.head()
#gdp["2015"]
CountrySubject DescriptorUnitsScaleCountry/Series-specific Notes2015Estimates Start After
0AfghanistanGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...599.9942013.0
1AlbaniaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...3995.3832010.0
2AlgeriaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...4318.1352014.0
3AngolaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...4100.3152014.0
4Antigua and BarbudaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...14414.3022011.0
gdp.rename(columns={"2015":"GDP per capital"},inplace=True)#inplace这个参数是在本地更改,而不用单独输出一个值
gdp=gdp.set_index("Country")#设置index为Country
gdp.head()
Subject DescriptorUnitsScaleCountry/Series-specific NotesGDP per capitalEstimates Start After
Country
AfghanistanGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...599.9942013.0
AlbaniaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...3995.3832010.0
AlgeriaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...4318.1352014.0
AngolaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...4100.3152014.0
Antigua and BarbudaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...14414.3022011.0
merge_data=pd.merge(left=oecd_bli,right=gdp,left_index=True,right_index=True)#合并的两个dataframe必须要有相同的index,一个有另一个没有的会删除
#merge_data
merge_data[["Air pollution","Assault rate"]].loc[["Australia","Korea"]]#大于两个都要加上[],若一个的化就是直接一个
merge_data[["Air pollution","Assault rate"]].iloc[[0,2]]#我们也可以通过数字索引,但是要使用iloc
#merge_data["Air pollution"]["Australia"]
merge_data=merge_data[["Life satisfaction","GDP per capital"]]
merge_data.sort_values(by="GDP per capital",inplace=True)#排序然后去掉最大值和最小值,以及差异值
merge_data=merge_data[["Life satisfaction","GDP per capital"]].iloc[list(set(range(36)) - set([0, 1, 6, 8, 33, 34, 35]))]#移除一些差异值
#merge_data
import numpy as np
import matplotlib.pyplot as pl 
X=np.asarray(merge_data["GDP per capital"])
y=np.asarray(merge_data["Life satisfaction"])
X=X.reshape([-1,1])#二维输入
y=y.reshape([-1,1])
pl.scatter(X,y)
<matplotlib.collections.PathCollection at 0x204cc1296d8>
#好了数据准备好了,训练一个线性模型
import sklearn.linear_model as  LM
model=LM.LinearRegression()
model.fit(X,y)
X_new = [[22587]]  # Cyprus' GDP per capita
print(model.predict(X_new)) # outputs [[ 5.96242338]]
[[5.96242338]]
test_X=[[10000],[20000],[30000],[40000],[50000]]
test_Y=model.predict(test_X)
test_Y
array([[5.34420726],
       [5.83536172],
       [6.32651618],
       [6.81767064],
       [7.30882509]])
pl.plot(test_X,test_Y,"r")
pl.scatter(X,y)
pl.show()

png

#训练一个Ridge模型
model1=LM.Ridge(0.6)
model1.fit(X,y)
X_new = [[22587]]  # Cyprus' GDP per capita
print(model1.predict(X_new)) # outputs [[ 5.96242338]]
[[5.96242338]]
test_X=[[10000],[20000],[30000],[40000],[50000]]
test_Y=model1.predict(test_X)
test_Y
array([[5.34420726],
       [5.83536172],
       [6.32651618],
       [6.81767064],
       [7.30882509]])
pl.plot(test_X,test_Y,"r")
pl.scatter(X,y)
pl.show()

png

#训练一个Lasso
model2=LM.Lasso(alpha=0.6)
model2.fit(X,y)
X_new=[[22587]]
model2.predict(X_new)
array([5.96245466])
test_X=[[10000],[20000],[30000],[40000],[50000]]
test_Y=model2.predict(test_X)
test_Y
array([5.34427499, 5.83540049, 6.326526  , 6.8176515 , 7.30877701])
pl.plot(test_X,test_Y,"r")
pl.scatter(X,y)
pl.show()

png

#训练一个Bayesian Ridge Regression
model3=LM.BayesianRidge()
model2.fit(X,y)
X_new=[[22587]]
model2.predict(X_new)
array([5.96245466])
test_X=[[10000],[20000],[30000],[40000],[50000]]
test_Y=model2.predict(test_X)
test_Y
array([5.34427499, 5.83540049, 6.326526  , 6.8176515 , 7.30877701])
pl.plot(test_X,test_Y,"r")
pl.scatter(X,y)
pl.show()

png

<think>嗯,用户想了解如何使用最小二乘法构建线性回归预测模型。首先,我需要回忆一下线性回归的基本概念。线性回归是监督学习中的一种基础方法,用于建立自变量和因变量之间的线性关系。而最小二乘法则是用来估计模型参数的一种方法,通过最小化预测值与真实值之间的平方差来实现。 根据引用[2]和[3],线性回归模型通常是$Y = \beta_0 + \beta_1 X + \epsilon$,其中$\beta_0$是截距,$\beta_1$是斜率,$\epsilon$是误差项。最小二乘法的目标就是找到这些参数,使得所有数据点的预测误差平方和最小。接下来,我需要解释具体的步骤,可能包括数学公式的推导,比如损失函数的构建,如何对参数求导并解方程得到最优解。 然后,用户可能需要实际的实现方法。引用[1]提到了sklearn中的LinearRegression,这可以用来演示如何使用现成的库实现线性回归。同时,引用[4]提到了基于Matlab GUI和最小二乘法的预测模型,但用户的问题更偏向于机器学习,所以重点应该放在Python的实现上。需要区分手动实现和使用库的方法,这样用户既能理解原理,也能应用在实际项目中。 可能用户还会关心最小二乘法的优缺点,比如对异常值的敏感性,或者在线性不可分情况下的表现。此外,需要确保数学公式的正确性,比如矩阵形式的解$\boldsymbol{\beta} = (X^T X)^{-1} X^T Y$,这在引用[3]中有所涉及。要注意解释每个步骤的意义,比如损失函数的选择,为什么使用平方损失而不是绝对损失。 另外,用户的问题中提到“构建预测模型”,所以需要包括模型训练、评估的步骤,比如如何分割数据集,计算R²分数等。引用[3]提到最小二乘法的代数求解和矩阵推导,这部分可能需要详细说明,尤其是矩阵求导的部分,但考虑到用户的层次,可能需要适当简化,强调应用而非推导。 最后,生成的相关问题需要覆盖线性回归的应用场景、最小二乘法的数学原理、与其他方法的对比,以及实际实现中的问题,如过拟合或特征选择。确保这些问题能帮助用户进一步深入理解主题。</think>### 如何使用最小二乘法构建线性回归预测模型 #### 1. **线性回归模型定义** 线性回归假设因变量 $Y$ 与自变量 $X$ 之间存在线性关系,模型表达式为: $$ Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_p X_p + \epsilon $$ 其中: - $\beta_0$ 是截距项 - $\beta_1, \beta_2, \dots, \beta_p$ 是回归系数 - $\epsilon$ 是误差项,服从均值为0的正态分布[^2][^3] #### 2. **最小二乘法的核心思想** 最小二乘法通过最小化**预测值与真实值的平方误差和**来求解最优参数: $$ \text{损失函数}:L(\beta) = \sum_{i=1}^n (y_i - \hat{y}_i)^2 = \sum_{i=1}^n \left( y_i - (\beta_0 + \beta_1 x_{i1} + \cdots + \beta_p x_{ip}) \right)^2 $$ #### 3. **参数求解步骤** ##### (1) 矩阵形式表示 将数据整理为矩阵形式: - 设计矩阵 $X$(包含一列1以对应截距项) - 目标向量 $Y = [y_1, y_2, \dots, y_n]^T$ - 参数向量 $\boldsymbol{\beta} = [\beta_0, \beta_1, \dots, \beta_p]^T$ 模型简化为: $$ Y = X\boldsymbol{\beta} + \epsilon $$ ##### (2) 求导并解方程 对损失函数求导并令导数为0,得到闭式解: $$ \boldsymbol{\beta} = (X^T X)^{-1} X^T Y $$ 该解要求 $X^T X$ 可逆[^3][^4] #### 4. **代码实现** ##### 手动实现(基于NumPy): ```python import numpy as np # 生成示例数据 X = np.array([[1, 2], [1, 3], [1, 4]]) # 添加一列1 Y = np.array([3, 5, 7]) # 计算参数 beta = np.linalg.inv(X.T @ X) @ X.T @ Y print("回归系数:", beta) # 输出:[1. 2.] ``` ##### 使用Scikit-learn实现: ```python from sklearn.linear_model import LinearRegression model = LinearRegression(fit_intercept=True) # 默认使用最小二乘法 model.fit(X, Y) print("系数:", model.coef_, "截距:", model.intercept_) ``` #### 5. **模型评估** 常用指标: - **均方误差(MSE)**:$\frac{1}{n}\sum_{i=1}^n (y_i - \hat{y}_i)^2$ - **决定系数(R²)**:反映模型对数据变动的解释能力 ```python from sklearn.metrics import mean_squared_error, r2_score y_pred = model.predict(X) print("MSE:", mean_squared_error(Y, y_pred)) print("R²:", r2_score(Y, y_pred)) ``` #### 6. **适用场景与局限性** - **适用**:变量间关系近似线性、数据噪声较小的情况 - **局限**:对异常值敏感、无法直接处理非线性关系 --- ### §§ 1. 如何解释线性回归中的 $R^2$ 值? 2. 当 $X^T X$ 不可逆时,有哪些解决方法? 3. 最小二乘法与梯度下降法在求解线性回归时的区别? 4. 如何处理线性回归中的多重共线性问题? 5. 为什么线性回归假设误差项服从正态分布? [^1]: `sklearn` 中线性回归的实现直接封装了最小二乘法求解过程。 [^2]: 线性回归模型的定义与损失函数选择是建模的核心步骤。 : 最小二乘法的矩阵推导是线性回归的理论基础。 : 最小二乘法在预测模型中的实现需要结合数值计算工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值