机器学习-回归分析之如何建立回归模型
📘机器学习-回归分析之如何建立回归模型
✅ 一、回归建模的总体流程
回归建模不是直接上来就算公式,而是按步骤来
课程里给出的流程:
1️⃣ 需求分析 & 明确变量
2️⃣ 数据加工处理
3️⃣ 确定回归模型形式
4️⃣ 模型参数估计
5️⃣ 模型检验优化
6️⃣ 模型部署应用
✅ 二、第一步:需求分析 & 明确变量
核心思想:
明确研究目标 → 明确因变量(Y) → 选择解释变量(X)
示例:房价预测
因变量:房价(要预测的指标)
解释变量:影响房价的因素,如:
✔ 面积
✔ 位置
✔ 房龄
✔ 户型
✔ 周围环境
✔ 交通便利度
✔ 学区
✔ ……
📌 解释变量选择要基于“业务知识 + 数据可获取性”
✅ 三、第二步:数据加工处理(Data Preprocessing)
包括:
| 操作 | 目的 |
|---|---|
| 缺失值处理 | 避免模型因数据不完整失效 |
| 异常值处理 | 去除极端错误数据 |
| 标准化/归一化 | 避免不同量纲影响训练结果 |
| 特征类型转换 | 数值化分类变量(如One-hot编码) |
| 数据清洗与筛选 | 提高数据质量 |
📌 数据质量直接决定模型上限
一句话总结:Garbage in, Garbage out
✅ 四、第三步:确定回归模型形式
按照关系类型判断:
- 若为线性关系 → 线性回归
- 若为非线性关系 → 可变换、可使用非线性回归或扩展特征
开始阶段通常从最简单的线性模型试起:
[y=a+b1x1+…+bpxp+ε]
✅ 五、第四步:模型参数估计的目标
找到最优参数,使模型预测值与真实值之间误差最小
回归模型一般形式:
[y=y^=f(x)=β0+β1x1+…+βpxp]
要估计的参数:
✅ 截距:(β0)
✅ 斜率/权重:(β1,β2,…)
1、最常用的方法:最小二乘法(OLS)
核心思想非常通俗👇
让所有样本的预测误差平方和最小
→ 画一条误差最小的“最佳拟合直线”
数学形式:
mini=1∑n(yi−yi^)2
📌 为什么平方?
- 避免正负误差抵消
- 强调大误差,使模型更准确
2、最小二乘法关注误差“残差”
[εi=yi−yi^]
残差越小 → 模型拟合越好
后续模型检验基本都围绕 残差规律性 展开
3、当基本假设不满足时怎么办?
屏幕中提到:
在不满足基本假设的情况下
还会采用岭回归、主成分回归、偏最小二乘等
这些属于 改进回归方法
为了解决:
| 问题 | 替代方法 |
|---|---|
| 多重共线性严重 | 岭回归、Lasso、主成分回归 |
| 自变量太多且冗余 | 特征选择、偏最小二乘 |
| 噪声大且特征间相关性高 | PLS(偏最小二乘) |
✅ 六、第五步:模型参数估计
1、为什么要做模型检验?
虽然最小二乘法能找到“最佳拟合线”,但:
- 拟合好 ≠ 模型一定科学
- 自变量是否显著?是否有多重共线性?
- 残差是否符合基本假设?
📌 检验就是为了确认模型能否“可靠解释”因果关系!
2、回归模型基本假设(OLS成立条件)
| 分类 | 假设内容 | 含义通俗解释 |
|---|---|---|
| 线性关系假设 | (y = X\beta + \epsilon) | 自变量与因变量是直线趋势 |
| 残差独立性 | 残差之间不相关 | 误差不能互相串通 |
| 残差方差齐性 | 方差恒定(不随x变化) | 噪声稳定,不随位置放大 |
| 残差正态性 | 残差服从正态分布 | 误差分布是正常的,不是偏斜怪样 |
| 无多重共线性 | 自变量不高度相关 | 特征不能重复表达同一信息 |
📌 有一个不满足,就要进行模型优化或替代方法
3、模型显著性检验(T检验 & F检验)
| 检验 | 检验对象 | 意义 |
|---|---|---|
| F检验 | 整体回归方程 | 自变量整体是否有效 |
| T检验 | 单个自变量参数 | 变量是否显著影响因变量 |
👇结果解释(假设显著性水平α=0.05)
| 统计值 | p < 0.05 表示 | p ≥ 0.05 表示 |
|---|---|---|
| F检验 | 模型整体有效 | 模型无效 |
| T检验 | 该变量有效 | 变量无用可剔除 |
⚠️常作为特征选择依据
4、残差分析(模型诊断最重要手段)
| 分析内容 | 怎么看? | 如果不满足怎么办? |
|---|---|---|
| 残差 vs 预测值图 | 应随机分布 | 变换、加特征、加多项式 |
| 残差正态性 | Q-Q图、Shapiro检验 | 对数变换、Box-Cox变换 |
| 方差齐性 | BP检验、残差趋势 | 加权回归、变量变换 |
| 异常点 & 高杠杆值 | Cook距离 | 剔除/特殊处理 |
5、模型优化(当假设不满足时)
| 问题 | 解决方法 |
|---|---|
| 线性关系不满足 | 加交互项、多项式回归 |
| 异方差 | 对数、Box-Cox、加权回归 |
| 多重共线性严重 | 岭回归、Lasso、主成分回归 |
| 残差偏态 | 数据变换或替换方法 |
| 自变量过多、不重要 | 特征选择(逐步回归等) |
✅ 七、案例总结口诀
先定Y → 选X → 清洗数据 → 确定模型 → 算参数 → 检验补强 → 投入使用
模型建设不是一次完成,而是一个反复优化的过程。
✅ 八、Galton 身高数据 — 线性回归建模复现
核心目标:使用父母身高预测子代身高
经典示例:展示“回归到均值”效应
1、数据来源说明
Galton 数据是 R 语言 usingR 包中经典数据,Python 中可通过 statsmodels 获取。
2、 可运行完整代码(Python)
# ----------------------------
# 1️⃣ 加载数据
# ----------------------------
import statsmodels.api as sm
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as snsgalton = sm.datasets.get_rdataset("Galton", "HistData").data
df = galton[['child', 'parent']]
df.columns = ['Child', 'Parent']df.head()
# ----------------------------
# 2️⃣ 数据探索
# ----------------------------
plt.figure(figsize=(6,5))
sns.scatterplot(x='Parent', y='Child', data=df)
plt.title("Parent vs Child Height (Galton Data)")
plt.show()
# ----------------------------
# 3️⃣ 建立线性回归模型
# ----------------------------
X = sm.add_constant(df['Parent'])
y = df['Child']model = sm.OLS(y, X).fit()
print(model.summary())
模型输出重点解释
| 指标 | 含义 |
|---|---|
| coef(系数) | 父母每高 1 英寸,孩子平均高 x 英寸 |
| R² | 拟合程度(解释方差比例) |
| P-value | 显著性检验结果 |
| const | 回归到均值现象(截距 > 0) |
# ----------------------------
# 4️⃣ 回归线可视化
# ----------------------------
plt.figure(figsize=(6,5))
sns.regplot(x='Parent', y='Child', data=df)
plt.title("Regression: Parent → Child Height")
plt.show()
# ----------------------------
# 5️⃣ 残差诊断
# ----------------------------
residuals = model.residfig, ax = plt.subplots(1,2, figsize=(12,5))sns.scatterplot(x=model.fittedvalues, y=residuals, ax=ax[0])
ax[0].axhline(0, color='red')
ax[0].set_title("Residual vs Fitted")sm.qqplot(residuals, line='s', ax=ax[1])
ax[1].set_title("Residual Q-Q Plot")plt.show()
3、 结果解释(要点总结)
📌 回归方程示例:
[Child=a+b⋅Parent]
- b < 1:表示子代不会无限制变高,而是向均值回归
- 这也解释了“回归”一词的统计起源✅
📌 假设检验:
- 残差多为随机分布 → 线性假设基本成立
- Q-Q 图略有偏差 → 存在轻微非正态
- 同方差性尚可
4、结论一句话
父母更高 → 子女更高,但也会向平均身高回归(回归现象)
