人工智能基础与应用 - 数据处理、建模与预测流程 6 模型训练

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 课后练习

一、判断题

  1. 模型训练的目标是让模型在训练数据上分数尽可能高。
  2. 测试集用于评估模型在新数据上的表现。
  3. 过拟合模型在真实应用中通常表现良好。

二、简答题

  1. 什么是模型训练?
  2. 为什么需要划分训练集和测试集?

三、思考题

如果一个模型在训练集上得分 0.95,在测试集上得分 0.60,你会如何判断这个模型?可能存在什么问题?


6.11 练习题参考答案

一、判断题答案

  1. 错误
  2. 正确
  3. 错误

二、简答题参考要点

第 1 题:

  • 通过数据学习输入与输出之间的规律
  • 调整模型参数以提高预测准确性

第 2 题:

  • 模拟真实预测场景
  • 判断模型的泛化能力
  • 防止过拟合

三、思考题参考思路

  • 训练集得分高、测试集得分低
  • 模型可能存在过拟合
  • 需要简化模型或改进数据与特征

相关推荐
ji_shuke2 小时前
opencv-mobile 和 ncnn-android 环境配置
android·前端·javascript·人工智能·opencv
l木本I2 小时前
Reinforcement Learning for VLA(强化学习+VLA)
c++·人工智能·python·机器学习·机器人
颖风船2 小时前
锂电池SOC估计的一种算法(改进无迹卡尔曼滤波)
python·算法·信号处理
94620164zwb52 小时前
应用设置模块 Cordova 与 OpenHarmony 混合开发实战
python
551只玄猫2 小时前
KNN算法基础 机器学习基础1 python人工智能
人工智能·python·算法·机器学习·机器学习算法·knn·knn算法
xixixi777772 小时前
大模型的运行离不开芯片和搭载在它上面的计算框架
机器学习·大模型·编程·编译·芯片·计算框架·技术框架
qq_375167983 小时前
No module named ‘mmcv._ext‘
人工智能·计算机视觉
JoengGaap3 小时前
智能体学习(定义、框架、简单实现搭建)
人工智能