最小二乘法(Least Squares Method)是一种常用于线性回归分析的统计方法,用于寻找一条直线(或者更一般的线性模型),以最小化观测数据与模型预测值之间的平方误差的总和。线性回归的目标是建立一个线性方程,以描述自变量(通常表示为X)与因变量(通常表示为Y)之间的关系。
以下是最小二乘法线性回归的基本原理:
-
线性模型的假设:线性回归假设自变量 X 和因变量 Y 之间存在线性关系,即 Y 可以表示为 X 的线性组合。这可以表示为:
这里,Y 是因变量,X 是自变量,b 是截距(常数),
是斜率(表示X对Y的影响程度),ε 是误差项,表示模型不能完美拟合真实数据的部分。
-
最小化平方误差:最小二乘法的目标是找到最优的β0和β1,以使观测数据点与模型预测值之间的平方误差总和最小。平方误差定义为每个数据点的预测值与观测值之差的平方,然后求和。这可以表示为:
其中,Σ 表示对所有数据点求和,yi 是第i个观测数据点的因变量值,xi 是第i个观测数据点的自变量值。
最小损失函数利用向量表达
最小二乘法的最小损失函数可以使用向量形式表示如下:
假设我们有以下数据:
-
自变量的向量:
-
因变量的向量:
-
模型参数向量:
现在,我们可以使用向量和矩阵的乘法来表示最小损失函数:
首先,构建设计矩阵(Design Matrix)对向量X进行增广处理得到
得到最小损失函数
最小化损失函数,就是找到使W的值使得L(W) 最小化。这可以通过对损失函数求导并令导数等于零来实现,或者使用其他优化方法,如梯度下降。
首先向量的二范数等
化简得
都为1X1的矩阵,等同于标量。且他们的转置相等,所以本身相等。
求导采用分母布局形式得到最后结果为
分母布局条件下
A为方正,当A为对称方正时
令W的导函数为0化简得到,带入即可得到W的最佳解析解。
但不一定有解,所以W大多数也无解析解。
采用机器学习(machine learning)梯度下降法拟合数值解的方法来解决。
- 定义初始W
α为学习率,手动设置调参,▽为W的梯度。
迭代
# 定义学习率和迭代次数
learning_rate = 0.01
num_iterations = 1000
# 初始化模型参数,生成一个2行1列的随机矩阵,也可自由赋值。比如W =np.array([[100;0],[0,0.3]])
W = np.random.randn(2, 1) # beta[0]是截距,beta[1]是斜率
# 使用梯度下降法来估计参数
for iteration in range(num_iterations):
# 梯度
gradient = X^T*(XW-Y)
# 更新参数
W -= learning_rate * gradient
# 打印估计的参数值
print("估计的截距 :", W[0])
print("估计的斜率 :", W[1])
对W进行归一化可统一α。