学习目标
学习本课后,你将能够:
- 解释机器学习中的数据是什么,以及数据含义为何取决于采集背景。
- 区分研究对象、观测单位、观测记录和数据集。
- 识别结构化、半结构化和非结构化数据。
- 描述数据来源、单位、时间、处理过程、质量和局限。
- 区分抽样偏差与数据分布变化。
- 编写简要的数据集说明。
1. 数据是对现实的记录,而不是现实本身
在机器学习中,数据是关于对象、事件或过程的记录信息,例如传感器读数、照片、客服消息或交易记录。数据帮助我们研究现实,但数据本身并不等于现实。
以建筑为例:建筑本身是研究对象;室内温度、电表读数、运行时间表和设备照片,则是关于它的不同数字记录。每种记录只描述现实的一部分。
每条记录都来自某种流程:有人决定测量什么、选择仪器、设定采样频率、保存结果,并可能进行转换。因此,不要只问“记录了什么数字”,还要问“它代表什么,以及如何产生”。
数据是通过特定方式获得的现实证据。缺少背景信息,就容易误解其含义。
单独的数值 125 几乎无法说明问题。它可能表示每天 125 kWh、某一时刻 125 kW、温度或设备编号。我们需要指标、单位、时间和采集方法。
2. 研究对象、观测单位、观测记录与数据集
分析前必须确定一条记录究竟代表什么。需要区分四个概念:
- 研究对象:被研究的实体,例如建筑、发动机或客户。
- 观测单位:一条记录所描述的元素,例如一栋建筑的一天、一个传感器的一小时或一条服务请求。
- 观测记录:针对已定义观测单位保存的一条记录。
- 数据集:按照一致规则组织起来的一组观测记录。
同一个对象可以产生许多条观测。传感器每小时报告一次温度,一栋建筑每天就会产生 24 条记录。这不是 24 栋建筑,而是同一对象在不同时间的 24 次观测。
如果把同一栋建筑的逐小时记录随机分到训练集和测试集,两部分可能出现相似条件,评估结果就可能过于乐观。根据任务,应按建筑、时间段或其他独立组划分。课程 1.2.4 将进一步讨论。
请补全:“我的数据集中,一行代表……”。如果答案不明确,就需要先澄清数据结构。
3. 数据的形式
数据不一定是表格。入门时可以区分三种常见形式。
结构化数据
具有预先定义的模式:行、列、字段名称和数据类型。例如能源表格包含建筑编号、日期、能耗和室外温度。
半结构化数据
具有重复的组织形式,但字段集合可以变化。例如 JSON 传感器事件:一条消息包含温度和湿度,另一条包含温度和错误代码。
非结构化数据
没有简单、通用的表格模式,例如自由文本、照片、音频和视频。设备故障照片和工程师文字记录都属于此类。
| 形式 | 示例 | 检查内容 |
|---|---|---|
| 结构化 | CSV 电表读数 | 列、类型、单位、缺失值 |
| 半结构化 | JSON 传感器消息 | 字段、必需键、格式版本 |
| 非结构化 | 照片和文本日志 | 格式、质量、元数据 |
一个项目可能同时使用三种形式:表格保存设备编号,JSON 保存遥测数据,照片记录故障。要关联它们,需要可靠的标识符和时间戳。关联错误可能把一台设备的照片与另一台设备的读数连接起来。
4. 数据来源、测量与时间背景
数据来源包括传感器、信息系统、实验、问卷、专家观察、开放仓库和人工标注。来源会影响哪些对象进入数据集,以及哪些情况没有被观察到。
在能源监测中,kWh 是能量单位,kW 是功率单位,二者不能混用。还要确认数值是电表累计读数,还是某个时间区间(例如一小时)内消耗的能量。
标记为“08:00”的记录需要关联日期和时区。它代表区间开始、区间结束,还是消息到达时刻?夏令时切换时,本地某个小时可能重复或不存在。
数据还可能经过单位转换、删除重复记录、过滤错误、合并表格、填补缺失值或添加标签。这些操作都应记录。不要悄悄把缺失值替换成零:零可能是真实测量,缺失则表示未知或未采集。
“3 月 12 日当地时间 00:00 至 24:00,B 楼消耗 125 kWh,该值由电表读数之差计算得出。”这样数值才有明确含义。
5. 数据质量、可靠性与局限
数据质量不能只看记录数量。更实际的问题是:这个数据集能否可靠地支持当前任务? 同一数据集可能适合某个用途,却不适合另一个用途。
- 完整性:重要字段、日期、季节或对象类型是否缺失?
- 准确性:传感器是否正常,单位和换算是否正确?
- 一致性:不同系统是否以相同方式解释字段?
- 唯一性:同一事件是否被重复载入?
- 时效性:数据是否反映当前流程和设备?
- 标注质量:标签定义是否清楚,错误是否常见?
如果没有周末记录,模型可能只学到工作日规律。如果传感器报告华氏度,系统却按摄氏度处理,数据虽有值却是错误的。重复事件可能在训练中获得额外权重。
缺失值、异常值或重复记录不应一律自动删除。异常高能耗可能是电表故障,也可能是真实事故。应先调查原因、评估影响并记录处理决定。
6. 代表性、抽样偏差与数据变化
目标总体是计划应用结论或模型的全部对象或情境。样本是实际收集到的一部分。样本是否有代表性,不取决于规模大小,而取决于它是否反映当前任务所需的目标总体重要特征。
如果模型面向所有建筑,但数据集只有某城市的现代办公楼,那么学校、医院和老旧住宅可能没有被覆盖。这是抽样偏差(sampling bias):选择过程系统性地排除或低估了目标总体的一部分。
另一种情况是:最初的数据很好地代表了建筑,但几年后安装了新供暖系统、能源价格改变、运行时间表也发生变化。实际条件已经不同。这是数据分布变化(distribution shift),即模型开发或评估时的数据与之后实际遇到的数据存在差异。
| 情境 | 发生了什么 | 概念 |
|---|---|---|
| 任务覆盖所有建筑,却只收集办公楼 | 目标总体的一部分没有进入样本 | 抽样/覆盖偏差 |
| 供暖改造后能耗规律改变 | 应用条件随时间变化 | 数据分布变化 |
两者有关联,但并不相同。前者常在设计数据采集时产生;后者也可能在模型部署后出现。更复杂的算法无法自动弥补覆盖不足或现实过程变化。
使用数据前,应比较未来应用场景:包含哪些对象类型、时间段和季节?哪些群体缺失?流程如何变化?不能只根据记录数量判断是否适用。
7. 数据集说明
数据集说明(dataset datasheet,也称 dataset card)是一份简明文档,帮助他人了解数据来源、内容、处理方式,以及适合或不适合的用途。它可以避免数据脱离背景被误用。
实用的基础说明包括:
| 字段 | 需要记录什么 | 示例 |
|---|---|---|
| 目的 | 创建原因和预期任务 | 分析每日能耗,而非自动执行安全控制 |
| 组成与单位 | 对象、记录和字段 | 每行代表一栋建筑的一天 |
| 来源与所有者 | 责任方和原始系统 | 电表与建筑管理系统 |
| 采集与覆盖 | 方法、地点、时间、频率、选择和排除项 | 三个气候区的两年记录 |
| 定义与单位 | 字段含义、单位和时间边界 | 每个日历日的 kWh |
| 处理与版本 | 清理、转换、关联和填补 | 删除重复记录,单独标记缺失值 |
| 质量与局限 | 错误、缺口、偏差和代表不足的群体 | 50 年以上建筑的数据很少 |
| 隐私与访问 | 敏感信息、访问权限和保护措施 | 地址替换为代码并限制访问 |
| 许可与用途 | 是否允许复制、分享和再利用 | 按照所有者规则内部使用 |
| 维护与标注 | 更新责任人和标签规则 | 每月更新,工程师确认故障标签 |
这是教学模板,不是通用法律文件。如果数据包含个人信息或可以识别个人的信息,还应检查收集依据、必要时的同意、访问限制和保存期限。仅删除姓名并不意味着数据已经匿名化。
良好的说明应回答四个问题:一条记录代表什么;数值如何获得;数据覆盖哪些对象;哪些结论目前不能由数据支持?
8. 实践:描述数据集并找出薄弱环节
假设你收到一个文件,包含 40 栋建筑一整年的每日能耗。表格只有建筑代码、日期和能耗数值,没有其他说明。
- 提出可能的任务:分析季节性,或预测第二天的能耗。
- 定义观测单位。可能是一栋建筑的一天,但需要确认。
- 填写数据集说明。未知的信息就写“未知”,不要编造。
- 向所有者至少提出三个问题:使用什么单位;日期代表什么、使用哪个时区;哪些建筑或日期缺失,原因是什么?
- 列出局限:一年可能没有覆盖罕见天气;40 栋建筑可能过于相似;处理过程未知,数值难以验证。
另一位研究者应能理解每行代表什么、数据来自哪里、覆盖哪些对象和时间、经过哪些改变,以及哪些结论缺乏支持。
不要通过猜测来填补未知信息。应将已确认事实、假设和待回答的问题分开记录。