回归的一些问题

本文解析了线性回归模型中最小二乘估计的方法,通过矩阵运算演示如何求得最优参数( w ),并与极大似然估计对比,并介绍了Python实现线性回归的实例。讨论了决策树与线性模型的区别和联系。

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

线性回归模型的最小二乘表达

数据集:D={(x1,y1),...,(xN,yN)},xi∈Rp,yi∈R,i=1,2,...,N,X=(x1,x2,...,xN)T,Y=(y1,y2,...,yN)TD = \{(x_1,y_1),...,(x_N,y_N) \},x_i \in R^p,y_i \in R,i = 1,2,...,N, X = (x_1,x_2,...,x_N)^T,Y=(y_1,y_2,...,y_N)^TD={(x1,y1),...,(xN,yN)}xiRp,yiR,i=1,2,...,NX=(x1,x2,...,xN)T,Y=(y1,y2,...,yN)T
假设X和Y之间存在线性关系,模型的具体形式为y^=f(w)=wTx\hat{y}=f(w) =w^Txy^=f(w)=wTx
最小二乘估计:
我们需要衡量真实值𝑦𝑖与线性回归模型的预测值wTxiw^Tx_iwTxi之间的差距,在这里我们使用二范数的平方和L(w)来描述这种差距,即:
L(w)=∑i=1N∣∣wTxi−yi∣∣22=∑i=1N(wTxi−yi)2=(wTXT−YT)(wTXT−YT)T=wTXTXw−2wTXTY+YYT L(w) = \sum\limits_{i=1}^{N}||w^Tx_i-y_i||_2^2=\sum\limits_{i=1}^{N}(w^Tx_i-y_i)^2 = (w^TX^T-Y^T)(w^TX^T-Y^T)^T = w^TX^TXw - 2w^TX^TY+YY^TL(w)=i=1NwTxiyi22=i=1N(wTxiyi)2=(wTXTYT)(wTXTYT)T=wTXTXw2wTXTY+YYT
因此,我们需要找到使得L(w)最小时对应的参数w,即:
w^=argmin  L(w) \hat{w} = argmin\;L(w)w^=argminL(w)
为了达到求解最小化L(w)问题,我们应用高等数学的知识,使用求导来解决这个问题:
∂L(w)∂w=2XTXw−2XTY=0, \frac{\partial L(w)}{\partial w} = 2X^TXw-2X^TY = 0, wL(w)=2XTXw2XTY=0,因此
w^=(XTX)−1XTY \hat{w} = (X^TX)^{-1}X^TY w^=(XTX)1XTY
几何解释:
在这里插入图片描述

在线性代数中,我们知道两个向量a和b相互垂直可以得出:<a,b>=a.b=aTb=0<a,b> = a.b = a^Tb = 0<a,b>=a.b=aTb=0,而平面X的法向量为Y-Xw,与平面X互相垂直,因此:𝑋𝑇(𝑌−𝑋𝑤)=0𝑋^𝑇(𝑌−𝑋𝑤)=0XT(YXw)=0,即:w=(XTX)−1XTYw = (X^TX)^{-1}X^TYw=(XTX)1XTY

极大似然估计与最小二乘估计的联系与区别

区别:
对于最小二乘法,当从模型总体随机抽取n组样本观测值后,最合理的参数估计量应该使得模型能最好地拟合样本数据,也就是估计值和观测值之差的平方和最小。
而对于最大似然法,当从模型总体随机抽取n组样本观测值后,最合理的参数估计量应该使得从模型中抽取该n组样本观测值的概率最大。显然,这是从不同原理出发的两种参数估计方法。

联系:
线性回归的最小二乘估计<==>噪声ϵ∽N(0,σ2)\epsilon\backsim N(0,\sigma^2)ϵN(0,σ2)的极大似然估计

决策树模型与线性模型的联系与区别

区别:
线性模型的模型形式与树模型的模型形式有着本质的区别,具体而言,线性回归对模型形式做了如下假定:f(x)=w0+∑j=1pwjx(j)f(x) = w_0 + \sum\limits_{j=1}^{p}w_jx^{(j)}f(x)=w0+j=1pwjx(j),,而回归树则是f(x)=∑m=1Jc^mI(x∈Rm)f(x) = \sum\limits_{m=1}^{J}\hat{c}_mI(x \in R_m)f(x)=m=1Jc^mI(xRm)

联系:
可用于解决回归问题。

Python编写线性回归模型

假设家庭每月消费支出与每月可支配收入之间的关系为:

Spending=β0+β1∗Income+μSpending =\beta_0 + \beta_1*Income+μSpending=β0+β1Income+μ
在这里插入图片描述样本回归模型可表示为: yi=β0+β1∗xiy_i =\beta_0 + \beta_1*x_iyi=β0+β1xi
OLS估计的思想是通过最小化残差来对回归系数进行估计,即:
在这里插入图片描述

import numpy as np 

def linear_OLS(x_arr,y_arr):
    x_avg= x_arr.mean()
    y_avg = y_arr.mean()
    s_xy = (x-x_avg)*(y-y_avg).T
    s_x = (x-x_avg)*(x-x_avg).T
    beta_1 = s_xy.sum()/s_x.sum()
    beta_0 = y_avg-beta_1*x_avg
    return beta_1,beta_0

x = np.array([800,1100,1400,1700,2000,2300,2600,2900,3200,3500])
y = np.array([638,935,1155,1254,1408,1650,1925,2068,2266,2530])

beta_1,beta_0 = linear_OLS(x,y)

print('beta_1:',beta_1,'beta_0:',beta_0)

在这里插入图片描述
参考:https://www.pythonf.cn/read/74475

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值