最小二乘法
最小二乘法
最小二乘法的公式,θ=X转置乘X,它的逆矩阵,再乘以X的转置乘y。
最小二乘法怎么使用?又是如何推导出来的?
最小二乘法的使用和推导
最小二乘法是解决线性回归问题的常用方法。
线性回归用于研究自变量X与因变量Y之间的关系。
例如,设自变量X对应房子面积,Y是房子的价格,我们希望研究面积与价格之间的关系,就可以基于最小二乘法,构建出线性回归模型。
为了弄清楚最小二乘法算法,我们需要先了解线性回归,包括线性回归模型的定义和线性回归模型的代价函数两个内容。
线性回归模型
线性回归模型公式
设线性回归模型为hθ(x)
在该模型中:
- θ是模型的参数
- x是输入的自变量
- n是x的维度
模型根据输入的X,给出预测值hθ(x)。
在面积x与价格y这一问题中,令hθ(x)=θ1x+θ0,它代表价格的预测值。
最初参数θ1和θ0是未知的,我们希望通过算法,计算出一组θ1和θ0,使得模型hθ(x)能尽量的准确预测价格y。
线性回归模型图像
将已知的8个样本数据,画在坐标系中。
接着画出3条直线,每条直线对应一组θ0和θ1。
这时可以观察到,直线3是最好的拟合这些样本的直线,其次是直线2,最后是直线1。
那么,如何求出那个最好的直线的参数θ呢?
答案就是最小二乘法。
在这个公式中,X和y就是已知样本的面积和价格对应的矩阵。
将这些数据放到公式中进行计算,就得到了结果θ。
为了引出这个公式。
我们需要了解模型的代价函数。实际上,我们的目的是求线性回归模型hθ(x)中理想的参数θ。
到底哪组参数θ更好,需要定义一个算式去衡量。而这个衡量θ好坏的式子,被称为代价函数。
线性回归的代价函数
线性回归的代价函数,是基于均方误差定义的。
在公式中,m是数据个数,第i个数据的特征为x-i,真实值是y-i,预测值是hθ(xi)。
由于每个样本的横坐标x和纵坐标y都是已知的,所以在代价函数J(θ)中,未知数是直线方程的参数,截距θ0与斜率θ1。
下面我们以一元线性回归来说明这个公式。
例如,表格中有3个样本,其中θ0+θ1*50这一列是预测值,280这一列是真实值。
将3个样本的预测值和真实值带入到J(θ)中,并将J(θ)展开,会得到一个关于θ0 和θ1 的二元函数。
这个函数的值越大,说明θ0和θ1就越不合适。
因此,我们要求出使得代价函数J(θ)取得最小值时,参数θ0和θ1的取值。
有许多方法可以求出参数θ:
- 基于迭代的梯度下降算法
- 基于求导的数学方法
- 最小二乘法
最小二乘法,就是基于矩阵微分推导出来的θ的求解公式。
最小二乘法的推导
在推导最小二乘法的公式时,需要将X、y和θ都看做是一个整体,进行矩阵的加、减、乘和求导运算。
在计算过程中,矩阵θ是未知数,矩阵X和y是已知的。
为了求出θ,需要求代价函数J(θ)关于矩阵θ的偏导数,然后令该偏导数等于0,进而求出矩阵θ的值。
J(θ)表达式的简化
为了对J(θ)方程求解,需要对J(θ)的运算进行化简,然后对J(θ)求导。
- 首先根据矩阵转置的公式
将转置运算化简到括号内
得到y转置减θ转置乘X转置,然后再乘以y减X乘θ。将算式展开
得到一个关于θ矩阵的多项式,一共有4项
我们可以对这四项,分别求关于θ矩阵的偏导数。
矩阵求导公式
关于矩阵的求导,需要依赖下面这3个公式。
在公式中,矩阵X是未知量,矩阵A是常数矩阵,也就是要求关于X的偏导数。
在使用公式时,我们将待求导的算式与公式中的每一项进行对应。
这里要注意,使用公式时,需要严格的一项一项的对应使用,并且要避免对应的错误。
例如,在待求导的算式中,yTX、XTy、XTX,这三个矩阵的计算结果对应公式中的常数A,而θ矩阵对应公式中的未知量X。
关于矩阵的求导、矩阵微分,我们不必深究这些矩阵求导的公式是如何推导出来的,只需要知道如何使用它们就可以了。
J(θ)进行求导和化简
根据这三个公式,对J(θ)偏导数中的4项分别进行求导和化简。
进行求导和化简.png)
第1项是对常数矩阵求导,结果直接是0。
第2项:
需要根据公式1,其中y的转置乘X看做是矩阵A,θ矩阵看做公式中的X。
得到的结果是A的转置,也就是矩阵X的转置乘y。
- 第3项:
根据公式2,将X的转置乘y看做A,结果是X的转置乘y。
- 第4项:
根据公式3,将X的转置乘X看做A,结果是2倍的X转置乘X再乘未知的矩阵θ。
求关于θ的矩阵方程
经过矩阵求导后,这四项结果相加的和是0,整理后得到方程,负2倍的X转置乘y加2倍的X转置乘X再乘矩阵θ。
解这个关于θ的方程,需要移项和化简。
这里要注意,在化简时,方程的两边,需要同时乘以,X转置乘X的逆矩阵,进而解出未知矩阵θ。
因此我们就通过解矩阵方程的方法,求出在代价函数J(θ)取得最小值时,参数矩阵θ的值,它是一个关于特征向量矩阵X和标签矩阵y的算式。
θ的矩阵方程注意事项
X转置乘X,需要是一个满秩矩阵。
其行列式的值det(X转置乘X)不等于0,这样才会有逆矩阵。