收益:
- 能够识别不同的数据源(数据库、API、文件、网络抓取)以及每个数据源的陷阱并正确理解架构
- 通过评估样本是否代表总体和选择偏差来执行可重复抽样的能力
- 能够在收集阶段消除数据泄漏,并通过在每列中提出“我在预测时会得到它吗”的问题来遵守法律/道德界限?
每次分析的质量都取决于您收集的数据的质量。即使是世界上最先进的模型,如果它所处理的数据收集不正确、采样有偏差或包含有关未来的信息,也会产生不可靠的结果。在计算机科学中,这一原理被概括为“垃圾进,垃圾出”(garbage in,garbage out)。在本单元中,我们将介绍数据收集阶段:了解来源、抽样、提出质量问题,并从第一天起就警惕数据泄露的风险。人工智能是现阶段的有力辅助;编写SQL查询,总结API文档,起草数据合同。但决定你收集哪些数据以及这些数据是否代表你的是人。
了解数据源
数据来自不同的地方,每个来源都有自己的陷阱。数据库(存储在表中的结构化数据,通常使用 SQL 查询)是最常见的来源;它是可靠的,但需要很好地理解它的方案。 API(应用程序编程接口)提供实时数据,但存在速度限制和格式更改的风险。文件(CSV、Excel、JSON)很灵活,但容易出现格式不一致的情况。网络抓取很强大,但它有法律和道德限制;并不是每个网站都可以被抓取。
注意:对于网络抓取和自动数据收集,请遵守网站的使用条款、robots.txt 文件和 KVKK/GDPR。未经授权的数据收集会产生法律责任。在信息安全方面,仅在您获得授权的系统上以及出于防御/分析目的使用数据收集工具;禁止未经授权的访问或抓取。
理解架构:熟悉数据
在收集数据集之前,您必须了解其架构(列的名称、数据类型、含义以及相互之间的关系)。人工智能在创建“数据字典”方面非常有用——一个解释每列含义的表格。但人工智能产生的解释只是预测;与生成数据的团队确认每列的真实含义。例如,名为“status”的列可能包含 0/1/2;只有发起团队知道这些是“待定/批准/取消”还是其他。
下表总结了基本资源类型和注意事项:
来源
强项
陷阱
人工智能如何提供帮助
SQL数据库
结构合理、可靠
复杂的 JOIN
编写查询草稿
应用程序编程接口
实时数据
速度限制、形状变化
文档摘要、拉取代码
CSV/Excel
灵活、快速
格式不一致
读取/解析代码
网页抓取
影响范围广
法律/道德限制
解析草稿(权限范围内)
日志/事件数据
详细的
体积巨大
过滤查询
插图:部分代表整体吗?
大多数时候,您使用的是样本(从总体中选择的子集)而不是整个数据。关键问题是:这个样本是否代表总体?选择偏差是最常见的陷阱。例如,如果您仅从移动应用程序中抽取用户样本,则您将看不到网络用户,并且您的结果将会产生误导。随机抽样(每条记录被选择的机会均等)在大多数情况下是最安全的;但在时间序列数据中,分割是按时间顺序而不是随机进行的(我们将在第 7 单元和第 10 单元中看到这一点)。
从第一天起就提高泄漏意识
数据泄露是大多数灾难的根源,通常发生在数据收集阶段。示例:在预测“是否取消”时,如果将“取消日期”列添加到数据中,模型就会展望未来。在收集阶段,针对每一栏问一个问题:“在做出预测时我真的会得到这些信息吗?”如果答案是否定的,则该色谱柱发生泄漏。我们将在第 10 单元深入讨论这个主题;但意识应该从第一天就开始。
三个迷你箱子
案例 1——代表性问题。一家银行仅为其信用风险模型收集已批准贷款的数据(18,500 条记录)。数据中没有拒绝的情况。该模型在现实世界中是错误的,因为它从未看到拒绝品会如何表现。经验教训:样本应该代表您做出决策的整个总体。
案例 2 — 无声形式更改。一个团队每天从 API 中提取价格数据。有一天,API 提供商将货币从美元更改为欧元,但域名保持不变。 12天内以错误的单位收集数据; 3,200 行被损坏。教训:定期检查 API 数据的数量和格式一致性。
情况 3 — 早期泄漏。一位分析师在收集“客户流失”估计数据时纳入了“账户关闭原因”一栏。此栏是在顾客离开后才填写的。该模型在测试集上的准确率达到 97%;它在生产中不起作用,因为该列在预测时为空。教训:向每一列询问“我在预测时有它吗?”
四个可复制模板
1)数据字典提取:
您的角色:数据科学家助理。下面是表的列名和示例(匿名)值。对于每一列,在表中列出其估计含义、数据类型和潜在质量风险。将您不确定的栏目标记为“需要确认”;意思是制作。栏目:[粘贴到这里]
2)采样代码(随机、可重复):
我有熊猫 df。编写从 200,000 行中提取具有代表性的 5% 随机样本的代码。使用 random_state=42(为了重现性)。添加代码以检查样本的类别分布是否与总体相似。
3)泄漏扫描问题:
我会给你这个列的列表。我的目标是预测“是否被取消”(0/1)。对于每一列,评估我在预测时是否真的拥有它,并将其标记为“安全/可疑/泄漏”。用一句话写出你的理由。栏目:[列表]
4)SQL拉取查询草稿:
我在 PostgreSQL 中有“订单”和“客户”表。编写一个 JOIN 查询,将过去 90 天的订单与客户城市结合起来,并返回每个城市的订单总额和数量。解释日期过滤器以及如何处理 NULL 城市。我将运行查询并验证它。
弱提示/强提示
弱提示:
从这个数据库中提取一个好的样本数据。
“好”是有歧义的;哪幅画、哪个时期、哪个尺寸、哪个目的都不清楚。人工智能只会产生通用的、可能是错误的查询。
强力提示:
您的角色:SQL 助理。我有一个“交易”表:列 id、customer_id、日期(时间戳)、金额(数字)、渠道(文本:'web'/'mobile')。任务:编写一个可重复(使用 ORDER BY 确定)查询,返回 2024 年每个渠道的 10,000 个代表性行。目的:渠道比较分析。列出您的查询的假设。
这里的表格、目的、尺寸和可重复性都很清楚。
常见错误
- 不质疑样本的代表性。容易获取的数据并不是准确的数据;选择偏差会扭曲结果。
- 使列含义适应人工智能。源团队知道其中的含义;未经确认请勿使用AI预测。
- 不跟踪 API 格式/单位更改。无声的变化会收集数天的损坏数据。
- 忽略收集阶段的泄漏。如果没有尽早询问“我在预测时是否有它”这个问题,模型将给出错误的成功。
- 收集未经授权或非法的数据。违反 robots.txt、使用条款和 KVKK 是一个严重的风险。
提示:为每个新数据源保留一页“数据卡”:源、提取日期、行数、已知边界以及有泄漏风险的列。这张卡保存了“这个数据是什么”问题以及几个月后的可重复性。
综上所述
分析的质量受到所收集数据的质量的限制。熟悉来源(数据库、API、文件、抓取)和模式;确保样本能够代表总体;从第一天开始就通过询问每一列“我在预测时有它吗?”来消除泄漏。人工智能是查询和文档工作的强大加速器,但人类决定收集哪些数据及其代表性。权力、法律和保密的限制始终是第一位的。
应用任务
选择一个数据源(来自您自己的业务或假设)。通过上面的“数据字典提取”模板,从AI那里得到一份数据字典的草稿;然后手动评估每一列以查看是否已泄漏。尝试找到至少一个可疑/泄漏栏,并用一句话写出为什么它有风险。
清单
- [ ] 我是否已与源团队确认了数据源和架构?
- [ ] 我是否检查过样本是否代表总体?
- [ ] 我是否向每一栏提出了“在估算时我会得到它吗?”的问题?
- [ ] 我是否使采样可重复(固定种子)?
- [ ] 我是否检查了收集的法律/道德(权威、robots.txt、KVKK)限制?