一、什么是正则方程

1、正则方程是什么

正则方程是一种通过矩阵来求解线性回归参数的方法,其目的是通过求解导数为 0 来得到参数的最小二乘估计值。简单来说,正则方程是通过数学方法快速计算出线性回归模型的最优解。

2、正则方程的推导过程

我们常见的线性回归模型可以通过下面的公式表示:

h(x) = θ01x12x2+...+θnxn

其中,h 表示“假设函数”,x1~xn 表示特征向量,θ0n 表示假设函数的系数。

通过最小化假设函数 h(x) 与实际值 y 之间的平方误差来求解假设函数参数。

参数估计公式如下:

θ = (XTX)-1XTy

其中,X 是特征向量经过加工得到的矩阵,y 是实际输出结果,θ 是假设函数的系数。

当矩阵 XTX 可逆时,求解出的参数估计值是最小二乘估计值。

二、正则方程的优点

1、正则方程能够快速计算最小二乘估计值。

2、正则方程的计算过程是向量化并且可并行化的,所以对于大型数据集,使用正则方程求解线性回归模型可以节省时间。

3、正则方程不需要选择学习率(learning rate)等超参数,因此对于部分简单的数据集,正则方程的优化效果可能要比迭代求解方法更好。

4、正则方程可以通过添加正则化项来解决过拟合问题。

三、正则方程的应用

1、使用正则方程求解二元线性回归

下面的代码展示了如何使用正则方程来求解二元线性回归问题:

X = np.array([[1, 1], [1, 2], [1, 3], [1, 4]]) # 特征向量
y = np.array([3, 4, 5, 6]) # 实际输出结果
theta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y) # 求解 theta

2、使用正则方程求解多元线性回归

下面的代码展示了如何使用正则方程来求解多元线性回归问题:

X = np.array([[1, 1, 2], [1, 2, 4], [1, 3, 6], [1, 4, 8]]) # 特征向量
y = np.array([3, 4, 5, 6]) # 实际输出结果
theta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y) # 求解 theta

3、使用正则方程解决过拟合问题

下面的代码展示了如何使用正则方程中的正则化项来解决过拟合问题:

X = np.array([[1, 1], [1, 2], [1, 3], [1, 4]]) # 特征向量
y = np.array([3, 4, 5, 6]) # 实际输出结果
lam = 0.1 # 正则化系数
theta = np.linalg.inv(X.T.dot(X) + lam*np.eye(X.shape[1])).dot(X.T).dot(y) # 求解 theta

四、正则方程总结

正则方程是一种通过矩阵来求解线性回归参数的方法,其计算过程可以进行向量化并且可并行化,可以在比较短的时间内计算出最小二乘估计值。正则方程不需要选择学习率等超参数,所以对于简单的数据集而言可以节省时间。除此之外,正则方程还可以通过正则化项来解决过拟合问题。虽然正则方程可能会受到数据集维度和矩阵非可逆问题的影响,但在多数情况下,正则方程还是一种非常实用的求解线性回归参数的方法。