7.1 学习目标
通过本章学习,读者应能够:
- 理解什么是回归模型及其适用场景
- 区分回归问题与分类问题
- 掌握线性回归模型的基本使用流程
- 使用 Python 训练并评估一个回归模型
- 能够对回归模型的预测结果进行合理解读
本章的目标是:
让读者真正"跑通"一个模型,并理解结果意味着什么。
7.2 什么是回归模型
在人工智能中,回归模型主要用于解决这样一类问题:
预测一个连续的数值结果。
例如:
- 预测每日步数
- 预测房价
- 预测销售额
- 预测能耗、费用或时间
只要预测目标是一个具体数值,通常就可以考虑使用回归模型。
7.3 回归模型与分类模型的区别
为了避免混淆,可以从"输出形式"来区分:
| 模型类型 | 输出结果 |
|---|---|
| 回归模型 | 连续数值 |
| 分类模型 | 类别或标签 |
例如:
- 预测"今天走了多少步" → 回归
- 判断"是否达成 8000 步目标" → 分类
7.4 线性回归模型的直观理解
7.4.1 不讲公式,讲直觉
线性回归模型尝试找到一条"最合适的线",用来描述:
特征变化时,目标值如何变化。
例如:
- 运动时间增加,步数通常增加
- 房屋面积变大,价格通常更高
模型要做的,是找到这种关系的最佳近似表达。
7.4.2 一个生活化的类比
可以把线性回归理解为:
在一堆散点中,画一条"最符合整体趋势的直线"。
这条线不是穿过所有点,而是尽量整体误差最小。
7.5 回归模型的基本训练流程
无论数据来自哪个业务场景,回归模型的训练流程基本一致:
- 准备特征和标签
- 划分训练集和测试集
- 创建模型
- 训练模型
- 预测与评估
下面通过一个完整示例来演示。
7.6 Python 示例:预测每日步数
示例场景
假设我们希望根据用户的基本情况,预测其每日步数。
7.6.1 准备示例数据
python
import pandas as pd
data = {
'age': [25, 30, 45, 35, 50, 28, 40, 60],
'exercise_minutes': [30, 20, 10, 40, 15, 25, 20, 5],
'daily_steps': [8000, 6000, 3000, 10000, 4000, 7000, 5000, 2000]
}
df = pd.DataFrame(data)
print(df)
7.6.2 分离特征与标签
python
X = df[['age', 'exercise_minutes']]
y = df['daily_steps']
7.6.3 划分训练集和测试集
python
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.25, random_state=42
)
7.6.4 创建并训练线性回归模型
python
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
7.6.5 进行预测
python
y_pred = model.predict(X_test)
print("真实值:", y_test.values)
print("预测值:", y_pred)
7.7 如何评估回归模型的效果(入门级)
7.7.1 使用模型自带的 score
python
train_score = model.score(X_train, y_train)
test_score = model.score(X_test, y_test)
print("训练集 R²:", train_score)
print("测试集 R²:", test_score)
R²(决定系数)的直观理解:
- 接近 1:拟合效果较好
- 接近 0:模型解释能力弱
- 为负数:模型几乎不可用
7.7.2 为什么要同时看训练集和测试集
- 训练集高、测试集低 → 可能过拟合
- 两者都低 → 可能欠拟合
- 两者接近 → 模型相对稳定
7.8 回归模型结果如何解读
7.8.1 预测值不是"绝对准确值"
回归模型给出的结果是:
基于历史数据的估计值,而不是精确答案。
因此:
- 应关注整体趋势
- 不应过度依赖单次预测
7.8.2 特征与结果的关系
在不深入数学的前提下,可以这样理解:
- 每个特征都会对预测结果产生影响
- 模型会综合这些影响给出最终结果
7.9 回归模型的适用与局限
7.9.1 适用场景
- 关系相对简单
- 数据量不大
- 需要可解释性
7.9.2 局限性
- 难以捕捉复杂非线性关系
- 对异常值较敏感
这也是后续需要学习更复杂模型的原因。
7.10 回归模型中的常见误区
7.10.1 用回归模型做分类问题
例如:
- 用回归模型预测"是否合格"
这是不推荐的。
7.10.2 只看训练集效果
训练集分数高,并不代表模型可用。
7.10.3 忽略特征工程
回归模型对特征质量非常敏感。
7.11 本章小结
本章重点内容包括:
- 回归模型用于预测连续数值
- 线性回归是最基础、最常用的回归模型
- 模型训练遵循统一流程
- 回归结果需要结合评估指标解读
这些内容将为后续模型学习打下基础。
7.12 课后练习
一、判断题
- 回归模型的预测结果是连续数值。
- 线性回归模型只能用于非常小的数据集。
- 回归模型的预测结果可以完全等同于真实值。
二、简答题
- 回归模型适合解决哪类问题?
- 为什么需要同时评估训练集和测试集的效果?
三、实践题(思考)
在"学生学习行为数据"中:
- 学习时长
- 作业完成次数
- 平时成绩
如果目标是预测"期末考试成绩",这是否是一个回归问题?请说明理由。
7.13 练习题参考答案
一、判断题答案
- 正确
- 错误
- 错误
二、简答题参考要点
第 1 题:
- 预测结果为连续数值
- 常用于价格、数量、评分等问题
第 2 题:
- 判断模型是否过拟合
- 评估模型泛化能力
三、实践题参考答案
- 是回归问题
- 因为预测目标是一个具体数值(考试成绩)