最小二乘法
2021-9-30
| 2023-8-6
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property

最小二乘法的原理与要解决的问题

形如下式:
观测值就是多组样本,理论值就是假设的拟合函数。目标函数也就是在机器学习中常说的损失函数,目标是得到使目标函数最小化时候的拟合函数的模型。
 
举一个最简单的线性回归的简单例子,比如有个只有一个特征的样本:
样本采用下面的拟合函数:
样本有一个特征,对应的拟合函数有两个参数需要求出。
 
目标函数为:
用最小二乘法做什么呢? 求出使最小时的,这样拟合函数就得出了。
 

最小二乘法的代数法解法

要使最小,方法就是对,分别来求偏导数,令偏导数为0,得到一个关于的二元方程组。求解这个二元方程组,就可以得到的值。
求导:
求导:
容易求出的值:
 
 
推广到多个样本特征的线性拟合
拟合函数表示为 ,其中为模型参数, 为每个样本的个特征值。增加一个特征(简化表示),这样拟合函数表示为:
损失函数表示为:
利用损失函数分别对求导,令导数为可得:
得到一个元一次方程组,这个方程组有个方程,求解这个方程,就可以得到所有的个未知的
这个方法很容易推广到多个样本特征的非线性拟合。原理和上面的一样,都是用损失函数对各个参数求导取0,然后求解方程组得到参数值。
 
 

最小二乘法的矩阵法解法

假设函数的矩阵表达方式为:
其中, 的向量, 的向量,里面有个代数法的模型参数。 维的矩阵, 代表样本的个数,代表样本的特征数。
 
损失函数定义为
其中,为样本的输出向量,维度为 在这主要是为了求导后系数为1,方便计算
 
根据最小二乘法的原理,对这个损失函数对向量求导取0:
这里面用到了矩阵求导链式法则和两个矩阵求导的公式
公式1:
公式2:
对上述求导等式整理后可得:
两边同时左乘 可得:
只要给了数据,就可以用算出
 
 

最小二乘法的局限性

  • 首最小二乘法需要计算 的逆矩阵,有可能它的逆矩阵不存在,这样就没有办法直接用最小二乘法了,此时梯度下降法仍然可以使用。当然,也可以通过对样本数据进行整理,去掉冗余特征,让的行列式不为0,然后继续使用最小二乘法。
  • 当样本特征非常的大的时候,计算的逆矩阵是一个非常耗时的工作(的矩阵求逆),甚至不可行。此时以梯度下降为代表的迭代法仍然可以使用。那这个到底多大就不适合最小二乘法呢?如果没有很多的分布式大数据计算资源,建议超过10000个特征就用迭代法吧。或者通过主成分分析降低特征的维度后再用最小二乘法。
  • 如果拟合函数不是线性的,这时无法使用最小二乘法,需要通过一些技巧转化为线性才能使用,此时梯度下降仍然可以用。
  • 当样本量很少,小于特征数的时候,这时拟合方程是欠定的,常用的优化方法都无法去拟合数据。当样本量等于特征数的时候,用方程组求解就可以了。当大于时,拟合方程是超定的,也就是常用于最小二乘法的场景了。
  • Scikit-Learn
  • 矩阵对矩阵的求导梯度下降
    目录