问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

从0开始的数学建模 2 —— 线性回归模型与预测问题

创作时间:
作者:
@小白创作中心

从0开始的数学建模 2 —— 线性回归模型与预测问题

引用
CSDN
1.
https://blog.csdn.net/qq_42924330/article/details/146302351

线性回归模型是机器学习中最基础且最常用的模型之一,广泛应用于预测、分析和解释数据。本文将从线性回归模型的定义、数学原理、应用场景、核心假设、目标以及代码实现等多个方面进行详细讲解,帮助读者全面了解这一重要模型。

1. 线性回归模型的定义

线性回归模型是一种用于建模因变量(目标变量)与一个或多个自变量(特征)之间线性关系的统计方法。它是机器学习中最基础且最常用的模型之一,广泛应用于预测、分析和解释数据。

2. 线性回归模型的数学原理

线性回归模型试图找到自变量(X)和因变量(Y)之间的线性关系,公式如下:

$$
Y = \beta_0 + \beta_1X_1 + \beta_2X_2 + \ldots + \beta_nX_n + \epsilon
$$

  • $Y$:因变量(目标值)。
  • $X_1, X_2, \ldots, X_n$ :自变量(特征)。
  • $\beta_0$ :截距(常数项)。
  • $\beta_1, \beta_2, \ldots, \beta_n$ :自变量的系数。
  • $\epsilon$:误差项。

对于简单线性回归(只有一个自变量),公式简化为:

$$
Y = \beta_0 + \beta_1X + \epsilon
$$

3. 线性回归的应用领域及示例

*线性回归适用场景的特点【重点】:

  • 变量之间存在线性关系
  • 需要快速建模和解释
  • 数据量适中,特征数量不多
  • 目标是预测或分析因果关系

各领域应用示例(金融、市场营销、社会科学、环境科学)

金融领域应用示例:

  • 预测股票价格或收益率
  • 分析资产风险与回报的关系(资本资产定价模型,CAPM)
  • 信用评分模型

市场营销领域应用示例:

  • 预测广告投入对销售额的影响
  • 分析价格变化对需求的影响
  • 客户生命周期价值预测

社会科学领域应用示例:

  • 研究教育水平与收入之间的关系
  • 分析人口特征对投票行为的影响
  • 预测犯罪率与社会经济因素的关系

环境科学领域应用示例:

  • 预测气温变化对农作物产量的影响
  • 分析污染物浓度与环境因素的关系
  • 研究气候变化对生态系统的影响

4. *线性回归的核心假设 【重点】

  • 线性关系:因变量与自变量之间存在线性关系。
  • 误差项的正态性:误差项$\epsilon$服从均值为0的正态分布。
  • 误差项的独立性:误差项之间相互独立,无自相关性。
  • 同方差性:误差项的方差恒定,不随自变量的变化而变化。

5. 线性回归的目标

通过最小化误差项的平方和(即最小二乘法),找到最优的模型参数($\beta_0, \beta_1, \ldots, \beta_n$),使得预测值与实际值之间的差异最小。

P.S:什么是最小二乘法?(选看)

最小二乘法是线性回归模型中最常用的参数估计方法,其核心思想是通过最小化预测值与实际值之间的误差平方和,找到最优的模型参数。

最小二乘法的目标是找到一组模型参数(如线性回归中的截距$\beta_0$ 和系数$\beta_1, \beta_2, \ldots, \beta_n$),使得预测值与实际值之间的误差平方和最小。

对于线性回归模型:

误差平方和(Sum of Squared Errors, SSE)定义为:

  • $y_i$:第$i$个实际值。
  • $\hat{y}_i$:第$i$个预测值,
  • $n$:样本数量。

线性回归最小二乘法求解过程

最小二乘法通过求解以下优化问题找到最优参数:

  • 对每个参数($\beta_0, \beta_1, \ldots, \beta_n$)求偏导,并令导数为零。
  • 通过求解方程组,得到参数的最优解。

7. 总而言之,

线性回归的数学核心是最小二乘法,而最小二乘法就是通过最小化误差平方和,找到最优的模型参数,使得模型能够最好地拟合数据。

它是线性回归的基础,最基础的单变量简单线性回归就是小学初中学的一元线性方程组(如下图),一个简单的直线,用一个直线很难去概况现实中一个时间的变化关系,但是其原理是许多其他模型(如广义线性模型)的核心思想。

8. 线性回归的代码实现

1. 绘制单变量简单线性回归图

即一元线性回归图(固定公式)

# 导入必要的库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# 生成随机数据
np.random.seed(42)  # 设置随机种子,确保结果可重复
X = 2 * np.random.rand(100, 1)  # 生成100个随机点作为自变量X
y = 4 + 3 * X + np.random.randn(100, 1)  # 生成因变量y,加入一些随机噪声

# 创建线性回归模型并拟合数据
model = LinearRegression()
model.fit(X, y)

# 预测
X_new = np.array([[0], [2]])  # 生成两个点用于绘制回归线
y_pred = model.predict(X_new)

# 绘制数据点和回归线
plt.scatter(X, y, color='blue', label="数据点")  # 绘制原始数据点
plt.plot(X_new, y_pred, color='red', label="回归线")  # 绘制回归线
plt.xlabel("X")  # X轴标签
plt.ylabel("y")  # Y轴标签
plt.title("一元线性回归")  # 图表标题
plt.legend()  # 显示图例
plt.grid(True)  # 显示网格
plt.show()  # 显示图表

运行结果图:

2.线性回归模型示例代码

此代码使用代码随机生成数据作为原始数据,有数据集时把”#生成示例数据“部分替换成目标数据即可。

# 导入必要的库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 生成示例数据
np.random.seed(42)
X = 2 * np.random.rand(100, 1)  # 自变量(特征)
y = 4 + 3 * X + np.random.randn(100, 1)  # 因变量(目标值),加入噪声

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建线性回归模型
model = LinearRegression()

# 训练模型
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 输出模型参数
print("截距(β0):", model.intercept_)
print("系数(β1):", model.coef_)

# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print("均方误差(MSE):", mse)

# 可视化结果
plt.scatter(X_test, y_test, color='blue', label="实际值")
plt.plot(X_test, y_pred, color='red', label="预测值")
plt.xlabel("X")
plt.ylabel("y")
plt.title("线性回归模型")
plt.legend()
plt.show()

运行结果图:

代码说明

  • 使用np.random.rand生成自变量X。因变量y通过公式y=4+3X+噪声生成,模拟真实数据。
  • 使用LinearRegression拟合数据,找到最佳截距(β0)和系数(β1)。
  • 对测试集进行预测,并计算均方误差(MSE)评估模型性能。
  • 绘制实际值和预测值的对比图,直观展示模型效果。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号