6.1 学习目标
通过本章学习,读者应能够:
- 理解什么是"模型",模型在人工智能中的作用
- 理解"训练""预测""评估"之间的关系
- 掌握训练集、测试集的基本思想
- 理解过拟合与欠拟合的直观含义
- 使用 Python 完成一次最基本的模型训练流程
本章的目标是:
让读者明白模型训练"在干什么",而不是"怎么推公式"。
6.2 什么是模型
在人工智能中,模型并不是某个具体程序或文件,而是:
一种用来描述"输入与输出之间关系"的数学结构。
可以用一句更直观的话理解:
模型,就是数据规律的"总结版本"。
6.2.1 一个生活化的类比
假设你观察到:
- 学习时间越长,考试成绩通常越高
- 学习时间很少的学生,成绩往往较低
你在脑中形成的经验判断:
"学习时间和成绩之间存在正相关关系"
这其实就是一个非常朴素的模型。
人工智能模型做的事情,与此类似,只是:
- 用数据而不是感觉
- 用计算而不是直觉
6.3 什么是"训练"
6.3.1 训练不是"背答案"
在初学阶段,很多人会误以为:
"模型训练就是把答案记住"
实际上,训练的本质是:
通过大量样本,找到输入与输出之间的规律。
6.3.2 用一句话概括训练
模型训练 = 调整模型内部参数,使预测结果尽量接近真实结果。
这里有三个关键词:
- 输入(特征)
- 输出(标签)
- 调整参数
6.4 训练、预测与评估的关系
模型训练并不是一个孤立过程,而是一个完整闭环。
6.4.1 训练(fit)
- 使用已知数据
- 学习输入 → 输出的关系
6.4.2 预测(predict)
- 对新数据给出结果
- 模拟真实应用场景
6.4.3 评估(evaluate / score)
- 判断预测是否可靠
- 衡量模型好坏
可以用一句话总结三者关系:
训练是学规则,预测是用规则,评估是看规则好不好。
6.5 为什么要划分训练集和测试集
6.5.1 问题从哪里来
如果你用全部数据 训练模型,再用同一批数据评估:
- 模型分数通常会很高
- 但这个分数没有实际意义
6.5.2 训练集与测试集的角色
- 训练集:用来学习规律
- 测试集:用来模拟"从未见过的新数据"
测试集的存在,是为了回答一个关键问题:
这个模型在新数据上还能表现好吗?
6.5.3 用 Python 划分数据集
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.2, random_state=42
)
常见比例:
- 70% / 30%
- 80% / 20%
6.6 过拟合与欠拟合(必须理解)
这是模型训练中最重要的概念之一。
6.6.1 欠拟合(学得不够)
欠拟合指的是:
- 模型过于简单
- 没有学到数据中的基本规律
表现为:
- 训练集效果差
- 测试集效果也差
类比:
题目没学会,考试自然考不好。
6.6.2 过拟合(学得太死)
过拟合指的是:
- 模型把训练数据"记得太清楚"
- 把噪声也当成规律
表现为:
- 训练集效果很好
- 测试集效果明显下降
类比:
把练习题答案背下来了,换题就不会做。
6.6.3 为什么人工智能训练师要警惕过拟合
因为:
- 过拟合模型看起来"很优秀"
- 实际应用中却经常失败
这是很多 AI 项目"上线即翻车"的原因。
6.7 一个完整的模型训练示例(重点)
示例:预测每日步数(回归问题)
python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# 示例数据
data = {
'age': [25, 30, 45, 35, 50],
'exercise_minutes': [30, 20, 10, 40, 15],
'daily_steps': [8000, 6000, 3000, 10000, 4000]
}
df = pd.DataFrame(data)
# 特征与标签
X = df[['age', 'exercise_minutes']]
y = df['daily_steps']
# 划分训练集和测试集
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)
# 评估模型
train_score = model.score(X_train, y_train)
test_score = model.score(X_test, y_test)
print("训练集得分:", train_score)
print("测试集得分:", test_score)
6.7.1 如何解读结果
- 训练集得分明显高于测试集 → 可能过拟合
- 两者都很低 → 可能欠拟合
- 两者接近且较高 → 模型较稳定
6.8 模型训练中的常见误区
6.8.1 用测试集参与训练
- 会导致数据泄漏
- 评估结果失真
6.8.2 只看训练集分数
- 分数高不代表模型可用
- 必须结合测试集
6.8.3 频繁更换模型但忽略数据
- 数据问题未解决
- 模型再复杂也无效
6.9 本章小结
本章围绕模型训练的基本思想,重点包括:
- 模型是数据规律的抽象表达
- 训练、预测、评估构成完整流程
- 训练集与测试集用于判断模型泛化能力
- 过拟合与欠拟合是模型训练中的核心问题
这些内容将为后续具体模型学习打下基础。
6.10 课后练习
一、判断题
- 模型训练的目标是让模型在训练数据上分数尽可能高。
- 测试集用于评估模型在新数据上的表现。
- 过拟合模型在真实应用中通常表现良好。
二、简答题
- 什么是模型训练?
- 为什么需要划分训练集和测试集?
三、思考题
如果一个模型在训练集上得分 0.95,在测试集上得分 0.60,你会如何判断这个模型?可能存在什么问题?
6.11 练习题参考答案
一、判断题答案
- 错误
- 正确
- 错误
二、简答题参考要点
第 1 题:
- 通过数据学习输入与输出之间的规律
- 调整模型参数以提高预测准确性
第 2 题:
- 模拟真实预测场景
- 判断模型的泛化能力
- 防止过拟合
三、思考题参考思路
- 训练集得分高、测试集得分低
- 模型可能存在过拟合
- 需要简化模型或改进数据与特征