回归模型知识点总结

回归模型知识点总结 — 上海二手房数据分析项目

目录

  • 一、项目概览
  • 二、什么是回归模型
  • 三、R²(决定系数)
  • 四、普通线性回归的过拟合原因
  • 五、矩阵接近奇异详解
  • 六、Ridge 为什么更好

一、项目概览

数据来源:上海链家二手房数据.xlsx(898 条 → 清洗后 669 条)
特征字段:区域(19类)、朝向(8类)、楼层位置(3类)、卧室数、客厅数、面积、总楼层、建造年份
目标变量:总价(万元)

建模流程:
数据清洗 → EDA → 5种模型对比 → 稳定性验证

5种回归模型对比结果:

模型 特点
LinearRegression 0.8335 Baseline,无正则化
Ridge(岭回归) 0.8424 最优,L2惩罚处理共线性
Lasso 0.8380 L1惩罚自动特征选择
RandomForest ~0.82 树模型,非线性
GradientBoosting ~0.80 集成学习

稳定性测试结果(普通线性回归,50次随机划分):
R² 均值: 0.7178 ± 0.0765
波动范围约 0.50–0.80


二、什么是回归模型

回归模型 = “猜一个连续数字”

输入一堆特征,输出一个连续数值。

数学形式(线性回归):
总价 = β₀ + β₁×区域_黄浦 + β₂×面积 + β₃×卧室数 + β₄×房龄 + …

  • 每个特征乘一个权重 β
  • 所有权重加起来 = 预测结果
  • β 越大说明这个特征越重要

实际学到的结果:
区域=黄浦 → 权重 +很大(正影响)
区域=崇明 → 权重 -很大(负影响)
面积 → 权重 +中等
卧室数 → 权重 +小
房龄 → 权重 -小

回归 vs 分类:

回归 分类
输出 连续数字 类别
例子 房价 800万 房子"贵/不贵"
问题 “多少钱?” “属于哪类?”
评估指标 R² 越接近1越好 准确率越高越好

三、R²(决定系数 / Coefficient of Determination)

定义:模型能解释目标变量百分之多少的波动。

公式(通俗版):
R² = 1 - (模型预测的误差平方和) / (直接猜平均值的误差平方和)

理解:
R² = 1 → 完美拟合,所有预测点全落在线上
R² = 0 → 跟直接猜平均值一样烂
R² = 0.7178 → 房价 71.78% 的波动可以被这些特征解释

等级参考:

含义
0.84 模型解释了84%的房价变化
0.72 模型解释了72%的房价变化
0.5 模型解释力只有一半
0.0 模型毫无解释力

四、普通线性回归的过拟合原因(为什么只有 R²=0.72)

核心问题:普通线性回归(OLS,普通最小二乘法)没有正则化,在特征相关时不稳定。

  1. 公式:
    β̂ = (XᵀX)⁻¹ Xᵀ y

    关键在 (XᵀX)⁻¹ —— 矩阵求逆这一步。

  2. 数据中的共线性问题:

    • 区域之间(黄浦/徐汇/长宁)在同个楼市中共同涨跌
    • 面积越大 → 卧室数通常越多(r≈0.6~0.7)
    • 区域越好 → 单价越高 → 同等面积总价更高
  3. 过拟合的具体机制:
    当特征高度相关时,(XᵀX) 中对应行列几乎成比例,矩阵"接近奇异"。
    求逆后逆矩阵中的数字异常大。
    训练集的微小随机波动 × 逆矩阵的超大数字 = 系数剧烈抖动。

    实际表现:
    划分A: β₁=50, β₂=30 → 正常预测
    划分B: β₁=800, β₂=-720 → 绕大圈但也能预测

    两个模型在各自训练集上都行,但系数完全不同——这就是过拟合。
    换测试集时,只有真正学到规律的模型才能泛化。

    证据——稳定性测试直接印证:
    R² 波动范围约 0.50–0.80 ← 系数在大幅波动
    R² 均值 0.7178 ± 0.0765 ← 标准差很大

  4. 一句话总结:
    普通线性回归的过拟合 = 特征多且相关 → (XᵀX)⁻¹ 放大微小噪声 → 系数剧烈波动
    → 换批数据就掉分。


五、矩阵接近奇异详解

什么是奇异矩阵?

  • 奇异矩阵 = 行列式为 0,无法求逆
  • 接近奇异 = 行列式接近 0,虽然能求逆,但逆矩阵的数字异常大

为什么特征相关会导致奇异?

用面积和房间数举例:
面积 ≈ 40 × 房间数 - 20 (几乎成线性关系)

XᵀX 矩阵:
面积 房间数
面积 1000 800
房间数 800 650
行列式 = 1000×650 - 800×800 = 10000 (趋近于 0)

逆矩阵:
面积 房间数
面积 65 -80
房间数 -80 100
数字很大(65、80、100),远超原始数据的量级。

后果:
逆矩阵 × 训练集的随机波动 → 系数被剧烈放大
换一批数据就得到完全不同的系数

直观类比:
想分清楚"糖贡献了多少甜?奶贡献了多少甜?"
但数据中糖多的奶也多,糖少的奶也少——永远一起变化,没法独立区分。
这就是"信息重叠"——无法独立衡量每个特征的作用。

Ridge 怎么解决?

Ridge 公式:β̂ = (XᵀX + αI)⁻¹ Xᵀ y

多了 αI,在矩阵对角线上加一个小常数:

面积 房间数
面积 1000+1 800
房间数 800 650+1

行列式 = 1001×651 - 800×800 = 11651(大一截,不再接近 0)
逆矩阵数字变小,系数不再乱跳。


六、Ridge 为什么更好

Ridge(岭回归)= OLS + L2 惩罚

公式:min ||Xβ - y||² + α||β||²

  • L2 惩罚 = 所有系数的平方和 × α
  • α=0 → 退化为普通线性回归
  • α越大 → 系数被强制缩小

三个好处:

  1. 解决共线性:(XᵀX + αI) 的行列式不再接近 0,求逆稳定
  2. 防止过拟合:系数被抑制,不会因为数据微小变化而狂跳
  3. 保留所有特征:和 Lasso 不同,Ridge 不会把系数压到 0

直观类比:
普通线性回归像没有减震的车——路况好跑得不错(R²≈0.80+),
换个路况就颠到不行(R²≈0.50)。
Ridge 的 L2 惩罚相当于加了减震器,不管数据怎么切都稳在 R²≈0.84。


总结:线性模型对比表

模型 损失函数 做什么 适用场景
LinearRegression OLS(无惩罚) 纯拟合 特征少、样本多、无共线性
Ridge OLS + L2 收缩系数 特征较多、有共线性
Lasso OLS + L1 特征选择 特征极多、需要降维
LogisticRegression 交叉熵 分类 二分类/多分类

上海二手房项目的关键设计

  • 目标取对数:Y_log = log(Y) 降低总价右偏分布影响
  • 数值特征标准化:StandardScaler 让卧室数、面积等在正则化模型中尺度一致
  • One-Hot 编码:区域(19类)、朝向(8类)、楼层位置(3类)转为哑变量
  • 房龄特征:房龄 = 2024 - 建造年份,替代原始建造年份更直观
  • 对数还原:预测后 exp(y_pred_log) 还原为万元

回归模型知识点总结
https://blog.knvbepr.top/2026/06/10/回归模型知识点总结/
作者
knvbepr
发布于
2026年6月10日
许可协议