AI News HubLIVE
站内改写2 分钟阅读

让ChatGPT分析3个数据集:它每次都犯同样的错误

在一组用三个小型数据集重复进行的实验中,ChatGPT给出了看似合理却经不起推敲的分析:把发货到送达误当成下单到送达、给出从未被代码计算过的数字、忽略缺失值背后的系统性偏差;即便要求它复核,它也会放过大错。

来源KDnuggets作者: Nate Rosidi

一篇出自数据科学社区的实验文章,测试ChatGPT处理小型数据集时的可靠性。作者使用了三张面试问题中常见的数据表,让模型完成业务团队日常会提出的问题,并观察它是否会犯下系统性的错误。结果显示,GPT模型的多次运行重复出现了同类问题:选择错误的列、虚构从未计算过的数字、忽略缺失值的含义,甚至在被要求复核自己时放过了严重错误。

第一张表shipment_tracking记录了40笔订单,下单日期从2024年1月1日到1月21日不等,其中有18笔订单尚未发货或送达。测试提出的问题是“平均配送时间”,顾客视角应当是从下单到送达,因为顾客从下单后就开始等待。正确结果是平均6.09天。然而ChatGPT返回的是2.6天——它计算了从发货到送达的时间差。代码本身没有任何语法或类型错误,只是选错了列,因此常规测试不会发现问题,只有把提问与代码中的列名对照才能看出。模型还在结论中写道“只有22单已发货”,这是对的,但又补充“50单中有28单仍在运送中”,该文件实际只有40行;22和28像是从50和22中得出的,单个数字看似合理,但整句与文件不符。另一个更严重的情况中,模型甚至没有执行任何代码,却直接写出了APAC区域“总销售约368万美元、占32%”之类的总结;真实数据只有3675.49(无单位),占比约为30.4%。也就是说,在代码块中的数字通常来自计算,而叙述文字中的数字只是被“写”出来,两者并不自动一致。

第二张表regional_sales按地区和年份记录销售数据,但本身存在破损:部分地区-年份组合有重复行,同一组合甚至有互相矛盾的数值,不同地区的数据年份范围从1年到15年不等。在一次快速运行中,模型把APAC之后的数据描述成“比US West和US East总和高出60%以上”,实际两者合计为3575.70,与APAC的3675.49只差约2.8%。更讽刺的是,同一句话中“比europe_north高出32%”又是对的,于是一个真实数字和一个虚构数字并肩出现。

第三张表是奥运会运动员与奖牌数据,共352行、336名运动员、15届赛事和167个比赛项目;身高字段有226行为空。模型只对比了有身高记录的运动员平均值:奖牌得主176.5 cm,非奖牌得主176.2 cm,得出“身高几乎不影响得牌”的结论。问题在于计算只使用了126行,其余226行被pandas静默丢弃。数据本身并不支持这个结论:有身高记录的运动员得牌率为54%,没有记录的只有23%;在2016年之前的302行中只有76行有身高,而得牌率较低;2016年之后的所有50行都有身高,且得牌率高达80%。换句话说,在一个倾斜的数据集里,“身高是否被记录”本身就与赛事年代和得牌率高度相关,“0.3 cm的差异”完全不构成可用的业务回答。

文章还测试了让ChatGPT检查自己的工作。在一次复核中,模型把“50单”改成“40单”、“28单”改成“18单”,这是正确的纠错;但它同时给错误的2.6天和“越来越快”的结论打上“正确”的标记。另一轮复核则虚构了一个修正,反而把一个本来正确的答案改错了。因此,把模型输出交给模型自己审查并不足信。

文章的启示是:这类错误没有异常堆栈,代码能运行、结果却错了;需要在阅读问题时同时阅读计算中的列名,检查结论中的每个数字是否真的出现在代码输出中,并时刻追问缺失值意味着什么。缺失的行不是中立的——当样本悄悄缩小,趋势就会偏离真相。