多元线性回归解析解

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
简介: 这篇内容介绍了线性回归的数学推导,包括基本概念、中心极限定理、最大似然估计、对数似然函数和解析解求法。线性回归的目标是找到最佳权重向量,使得预测值与实际值之间的误差最小。中心极限定理和最大似然估计用于处理误差服从正态分布的情况,通过对数似然函数求解最优权重。最后,通过梯度和Hessian矩阵判断解的最优性,并给出Python代码实现和可视化结果。

数学推导

基本概念

在整个线性回归的学习中,求得一组最优的权重是我们的目的。

权重W是一维向量,记作W=[w1 w2 .... wn].一般的,权重为n行的列向量。

特征X是一维向量,记作X=[x1 x2 x3 .....xn],一般的,特征为n行的列向量。

在二维空间中,我们有y = ax+b,现在,我们将其拓展到n维空间,则有y = w0 + w1x1 w2x2 +.....+wnxn,其中,w0称为偏置。整体记作y = (w.T)X + ε

中心极限定理

中心极限定理是概率论中随机变量分布渐进于正态分布,而ε服从正态分布。

最大似然估计(MLE)

给定一个概率分布,已知其概率密度函数或者概率质量函数f,以及分布参数θ,我们可以从这个分布中抽出一个具有n个值的采样,利用f计算其似然函数。记作

L(θ|x1,x2....xn) = f(θ)(x1,x2....xn)

即给定分布参数后出现样本组的概率。

其中,最常见的连续概率分布是正态分布

所以正态分布的线性回归的最大似然为

假设误差服从正态分布,符合中心定理,将μ置零,同时σ为常数。事件相互独立,所以可以写成

=

又因为 =

带入得到

我们要求的便是当L(θ)最大时所对应的θ*

对数似然函数

J(θ)称为损失函数,当其最小时,对应的θ为所求

解析解求法

因为 等价于一个长度为m的向量乘以他自己,但是向量相乘在矩阵中要为行向量乘列向量,所以要转置其中一个。

根据转置的性质

得到

梯度

方向导数

设二元函数上有一点P(x0,y0),那么以P点为起的射线

f(x,y)在(x0,y0)可微,那么方向导数存在,

那么

,其中, 记作梯度。

即梯度是某点下降最快的方向导数。

最优解

最优解一定是一个驻点,但驻点不一定是最优解,这时我们用Hessian矩阵的半正定来判断。

Hessian矩阵

Hessian矩阵是由目标函数在X处的二阶偏导数所构成的对称矩阵。

半正定:特征值全部大于等于0

正定:特征值全部大于0

这相当于把X中的元素平方相加,结果肯定大于等于0。所以目标函数的黑塞矩阵半正定,所以函数是凸函数,驻点即为最优解。

目标函数求导

矩阵求导的性质

所以

令其等于0,得到

至此,解析解求解完成。


代码实现


import numpy as np
import matplotlib.pyplot as plt


X1 = 2 * np.random.rand(100,1)#创建一百行一列的列向量
X2 = 3 * np.random.rand(100,1)
#这里的y是真实值,等于y_hat+error
y = 5 + 4*X1 + 3*X2 + np.random.randn(100,1)#error服从正态分布

X_b = np.c_[np.ones((100,1)),X1,X2]
print(X_b)
theta = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
print(theta)

#使用模型进行预测
X_new = np.array([[0,0],
                 [2,3]])
X_new_b = np.c_[np.ones((2,1)),X_new]
print(X_new)
y_predict  = X_new_b.dot(theta)
print(y_predict)

可视化

fig = plt.figure()
ax3d = fig.add_subplot(projection='3d')
ax3d.plot(X1,X2,y,'b.')
x1 = X_new[:,0]
x2 = X_new[:,1]
Z = y_predict[:,0]
print(x1)
print(x2)
print(Z)
ax3d.plot(x1,x2,Z,color='black')
plt.show()

Figure_6.png


目录
相关文章
|
1月前
|
机器学习/深度学习 自然语言处理 算法
PyTorch实例:简单线性回归的训练和反向传播解析
PyTorch实例:简单线性回归的训练和反向传播解析
PyTorch实例:简单线性回归的训练和反向传播解析
|
算法
单变量线性回归原理解析
给出一个房价预测的例子,x轴是房子的大小,y轴是房子的价格,图中标注了一些房子作为数据集,而这些点被称为标注数据(labeled data),利用这样的数据来预测的方法称为:监督学习。监督学习分为两类:分类与回归,此时,作为预测房价的这个例子是监督学习中的回归例子。
5032 0
|
5天前
|
机器学习/深度学习 缓存 算法
netty源码解解析(4.0)-25 ByteBuf内存池:PoolArena-PoolChunk
netty源码解解析(4.0)-25 ByteBuf内存池:PoolArena-PoolChunk
|
7天前
|
XML Java 数据格式
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
17 3
|
6天前
|
存储 NoSQL 算法
Redis(四):del/unlink 命令源码解析
Redis(四):del/unlink 命令源码解析
|
7天前
|
XML Java 数据格式
深度解析 Spring 源码:揭秘 BeanFactory 之谜
深度解析 Spring 源码:揭秘 BeanFactory 之谜
13 1
|
16天前
|
SQL 缓存 算法
【源码解析】Pandas PandasObject类详解的学习与实践
【源码解析】Pandas PandasObject类详解的学习与实践
|
16天前
|
存储 SQL 算法
【源码解析】深入解析 pandas的Block 类中算术运算和重排实现
【源码解析】深入解析 pandas的Block 类中算术运算和重排实现
|
16天前
|
数据可视化 数据挖掘 数据处理
【源码解析】深入Pandas的心脏DataFrame 含十大功能、源码实现与编程知识点
【源码解析】深入Pandas的心脏DataFrame 含十大功能、源码实现与编程知识点
|
16天前
|
存储 数据挖掘 数据处理
【python源码解析】深入 Pandas BlockManager 的数据结构和初始化过程
【python源码解析】深入 Pandas BlockManager 的数据结构和初始化过程

热门文章

最新文章

推荐镜像

更多