如何得到训练的线性回归模型的数学公式,给出代码
时间: 2024-11-10 09:27:08 浏览: 8
分位数回归模型线性回归模型及Lingo代码
线性回归模型的基本形式是通过最小化残差平方和来确定系数,其数学公式通常表示为:
对于简单的一元线性回归(只有一个输入特征),如果我们有一个训练集数据 \( \{(x_i, y_i)\}_{i=1}^{n}\),其中 \( x_i \) 是输入特征值,\( y_i \) 是对应的输出值,目标函数(损失函数)是最小化残差平方和:
\[ J(\theta) = \frac{1}{2m} \sum_{i=1}^{m}(h_\theta(x^{(i)}) - y^{(i)})^2 \]
这里 \( h_\theta(x) = \theta_0 + \theta_1x \) 是预测函数,\( \theta_0 \) 和 \( \theta_1 \) 分别是截距和斜率,\( m \) 是样本总数。
梯度下降法(Gradient Descent)是一种常用的求解最优化问题的方法,它迭代地更新参数来最小化损失函数。线性回归模型的梯度更新公式为:
\[ \theta_j := \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j} \]
其中 \( \alpha \) 是学习率。当计算到 \( \theta_1 \)(即斜率)时,这个公式就是:
\[ \theta_1 := \theta_1 - \alpha \frac{1}{m} \sum_{i=1}^{m}(h_\theta(x^{(i)}) - y^{(i)})x^{(i)} \]
对于 \( \theta_0 \),公式类似,只是没有 \( x \):
\[ \theta_0 := \theta_0 - \alpha \frac{1}{m} \sum_{i=1}^{m}(h_\theta(x^{(i)}) - y^{(i)}) \]
以下是使用Python和Scikit-Learn实现线性回归并手动计算梯度的一个简单示例:
```python
import numpy as np
# 假设我们有数据
X = np.array([[1], [2], [3]])
y = np.array([2, 4, 6])
# 初始化权重
theta = np.zeros(2)
def hypothesis(theta, X):
return np.dot(X, theta)
def cost_function(theta, X, y):
m = len(y)
J = (1/(2*m)) * np.sum((hypothesis(theta, X) - y)**2)
return J
def gradient_descent(theta, X, y, alpha=0.01, num_iters=1000):
for _ in range(num_iters):
grad = (1/m) * np.dot(X.T, hypothesis(theta, X) - y)
theta -= alpha * grad
return theta
# 计算并打印最终的参数
theta = gradient_descent(theta, X, y)
print("Theta: ", theta)
```
请注意,实际应用中我们会使用Scikit-Learn提供的`LinearRegression`类,因为那里的实现已经包含了高效的学习算法和一些优化措施。
阅读全文