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

目录

1. 线性回归模型的定义

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

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

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

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

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

5. 线性回归的目标 

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

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

7. 总而言之,(作者的絮叨)

8. 线性回归的代码实现

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

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

代码说明


1. 线性回归模型的定义

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


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

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

  • Y:因变量(目标值)。

  • X1,X2,…,Xn​:自变量(特征)。

  • β0​:截距(常数项)。

  • β1,β2,…,βn​:自变量的系数。

  • ϵ:误差项。

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


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

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

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

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

金融领域应用示例:

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

市场营销领域应用示例:

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

社会科学领域应用示例:

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

环境科学领域应用示例:

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

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

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

5. 线性回归的目标 

  通过最小化误差项的平方和(即最小二乘法),找到最优的模型参数(β0,β1,…,βn),使得预测值与实际值之间的差异最小。

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

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

  最小二乘法的目标是找到一组模型参数(如线性回归中的截距β0​和系数β1,β2,…,βn​),使得预测值与实际值之间的误差平方和最小

对于线性回归模型:

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

  • yi:第i个实际值。

  • y^i:第i个预测值,

  • n:样本数量。

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

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

  • 对每个参数(β0,β1,…,β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生成自变量XX。因变量yy通过公式y=4+3X+噪声y=4+3X+噪声生成,模拟真实数据。
  • 使用LinearRegression拟合数据,找到最佳截距(β0β0​)和系数(β1β1​)。
  • 对测试集进行预测,并计算均方误差(MSE)评估模型性能。
  • 绘制实际值和预测值的对比图,直观展示模型效果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值