1. 做数据做到一定深度,就会撞上哲学问题
先给一句结论:哲学和数据科学放在一起,不是为了让算法变得浪漫,而是为了回答一个做数据的人迟早会撞见的问题——凭什么相信数据告诉我们的东西?
这两年经常被学弟学妹问:哲学和数据科学是不是硬凑的关系?一开始我觉得这问题有点空,后来带项目带得多了,反而发现它问得很准。很多数据项目做到最后,真正卡住你的不是 Python 不熟、不是模型不会调,而是你对面前这套分析框架根本没有想清楚:这个指标为什么选它?这个数据为什么缺这么多?模型在训练集上表现不错,凭什么相信它在未来也能表现不错?这些问题没有一个能靠敲代码解决,它们全是典型的哲学问题。
所以这篇文章不打算讲什么高深理论,我想用做数据项目时都会遇到的场景,把“哲学视角”翻译成普通人能用的思维工具。无论你是刚开始接触数据科学的学生,还是已经做了两三年数据分析的从业者,只要你每天都在和数据打交道,就会需要这套东西。它不能帮你直接调出一个 AUC 更高的模型,但能帮你在调模型之前少走很多弯路。
1.1 数据科学越是工具化,越需要追问前提
数据科学现在已经被包装得非常“工具化”:数据清洗有库,建模有框架,调参有 AutoML,连报告都能自动生成。这是好事,但也藏着一个危险——人们会误以为只要工具熟练,结果就天然正确。
工具能解决的是“给定目标以后怎么算”,但解决不了“这个目标本身是否成立”。举个例子:你接到一个任务,要“预测用户流失”。听起来很清楚,可一旦开始定义标签就麻烦了。什么叫流失?是 30 天没登录,还是 90 天没下单?用户可能只是换了终端,也可能是在等促销。同一个“流失”标签,定义方式不同,后面模型学到的完全是两回事。
再往前推一步:谁告诉你“流失”是最该预测的事情?也许对现阶段业务来说,最值钱的不是预测谁会走,而是搞清楚留下来的用户为什么留。这些都属于前提问题。数据科学越依赖流水线化工具,越需要有人负责追问前提,否则所有人都在一个错误的定义上勤勤恳恳地做无用功。
1.2 一个实际项目里的“哲学事故”
我以前帮人看过一个用户复购预测的项目,团队把功夫都花在特征工程和模型选择上,各种梯度提升模型换了一轮,验证集上的效果始终不稳。后来我去翻了他们的标签定义,发现他们把“复购”定义成“下单后 60 天内再次下单”。但他们的业务是低频大额消费品,很多用户下一次购买要等半年到一年。
结果很清楚:模型看起来在预测复购,实际上在预测“谁在短期内恰好需要买第二件”,这既不代表用户忠诚,也不代表产品粘性。团队在错误的概念定义上花了整整三周调参,这不是技术问题,是概念问题。
这件事让我印象很深。哲学在数据科学里最直接的价值,就是逼你在动手前把概念捋清楚:我们到底在测量什么?这个测量方式和真实世界之间隔着多少层假设?等模型训练出来再回头问这些问题,成本已经太高了。
所以后面我形成了一个习惯:拿到数据任务后,算法章节先放一边,先从哲学式提问开始。这看起来慢,反而是最快的路。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. “数据”不是捡来的石头,而是按某种规则切下来的切片
“数据”这个说法极具迷惑性。每当我们提到原始数据、真实数据,大脑里会自动浮现出一堆客观事实:好像它们就堆在那里,只需要被捡起来、清理干净、送进模型。但做数据的人只要认真较一次真,就会意识到完全不是这么回事。
2.1 从“datum”说到数据是“框选”出来的结果
“数据”的拉丁词根 datum 原意是“被给予的东西”。但许多科学哲学研究者更愿意改口叫 capta,意思是“被取来的东西”。不要小看这一字之差。
温度计显示的 36.5 度,不是“温度本身”,而是温度计里的液体受热膨胀后,在你限定的测量方式下呈现出来的一串刻度。电商后台的“订单记录”,不是用户做决定的完整过程,只是某一秒钟确认按钮被按下的状态。同样的用户行为,用日志记录和用数据库表记录,呈现出来的“事实”可能完全不同。
数据从来不是凭空“给予”的,它是人类按照某种规则,从流动的真实世界中切下来的一块切片。每块切片都保留了某些信息,同时丢掉了更多信息。认识到这一点,你就不会把“数据缺失”“数据偏差”当成偶然事故,而会把它当成理解数据的第一步。
2.2 一个字段就是一次“框选”动作
看一张数据表时,新手看的是字段,老手看的是“框选动作”。
比如“年龄”这个字段。真实世界里不存在“年龄”这个东西,只有一个人在特定时刻经历了多长时间的存活。落到表里,它可能是出生日期、可能是填问卷时填的周岁、可能是系统根据身份证推算的年龄。每一种方式都在做取舍:身份证年龄准确但僵化,问卷年龄灵活但充满自报偏差。
再比如“客户满意度”。你设计问卷的时候用了 1 到 5 分的量表,这个刻度本身已经把人类复杂的情绪体验劈成了五个格子。有人可能觉得打 7 分刚好,但在 5 分制里只能被迫打 5 分;还有人可能对产品非常不满意,但因为客服态度好,还是给了 4 分。你看,最终数据里的分数,永远混着测量工具本身的偏向。
所以我常说,做数据的人真正的工作是“理解自己手里的数据是如何被框出来的”,而不是急着把数据丢给模型。字段名只是表象,字段背后的生成机制才是真正影响分析结论的东西。
2.3 三个判断数据“可信度”的哲学视角
与其拿着一堆数据质量评分表逐项打分,不如先问三个更本源的问题。
第一,这份数据是为了什么目的而被记录的?很多数据不是专门为你的分析准备的。外卖平台的点击日志是为了排查系统问题而设计的,未必能准确反映用户偏好。你不能期待一份在别的目的下收集的数据,刚好能完美回答你现在的业务问题。
第二,哪些人和事没有进入这份数据?一家线下店的销售数据只能告诉你已经进店并成交的人,沉默的大多数——那些路过但没进来的人,在城市另一端选择竞品的人——完全不在表里。分析这类数据时,你看到的永远是“已经发生的人群”,而不是“全部可能发生的人群”。
第三,数据从测量到入库的过程中,被什么规则删改过?去重规则、异常值处理、缺失值填充、权限过滤,每一层处理都在塑造你看到的最终表。有些团队会习惯性删除“异常用户”,但对很多场景来说,那些异常恰恰是最值得研究的对象。
这三个问题听起来很“玄”,但落到实处就是数据血缘、抽样偏差和处理链路审查。只不过,哲学视角让你把这些事从“技术细节”提升到“研究前提”的高度,重视程度完全不同。
3. 模型是从过去跳到未来:归纳问题没有消失
统计学里有一个著名的哲学难题叫“归纳问题”:我们凭什么相信,过去一直发生的事情,未来还会继续发生?这个问题看起来离工程很远,但实际上每天都在机器学习里出现。
3.1 训练集成绩不等于未来表现
我用一个很残忍的比喻来解释这个问题。农场里有一群火鸡,从出生第一天开始,每天上午九点都会有人来投喂。在火鸡眼里,过去 300 天积累的观察数据非常稳定:九点到,食物出现。一只懂数据科学的火鸡基于历史数据训练模型,会得出结论:明天九点也一定有食物。结果到了感恩节前一天,这个规律被打破了。
机器学习模型本质上也是一个“历史规律外推器”。你拿过去三个月的数据训练模型,隐含假设是:数据背后的生成机制相对稳定,未来不会发生结构性变化。这个假设有时成立,比如用户每日活跃度通常比较稳定;有时会瞬间崩塌,比如突发的市场活动、行业规则调整、组织架构变动。
所以对任何模型结论,都要保留一个健康的不信任感。训练集上的 AUC 高,只能说明在已经发生的历史样本中有区分能力;真正的问题永远只有一个:这个规律在明天、下周、明年还成立吗?对这一点的判断能力,是区分“跑模型的人”和“用模型做决策的人”的关键。
3.2 相关关系最常见的三种误读
相关不是因果,这句话每个学过统计的人都听过。但实际做事的时候,很少有人能真正抵抗住相关关系的诱惑。相关关系有几个特别常见的误读模式,我几乎在每个项目里都能碰到。
第一种是遗漏共因。经典的例子就是冰淇淋销量和溺水人数正相关。你只看到两条曲线一起上升,很容易得出“卖冰淇淋导致更多人溺水”的荒谬结论。事实是夏天这个共同原因同时推高了冰淇淋销量和游泳人数。在数据分析里,这个“共同原因”可能是季节、可能是用户生命周期阶段,也可能是产品版本更新。
第二种是反向因果。消防车出动的数量和火灾损失金额高度正相关,你会得出结论“消防车越多,火灾损失越大”。但真实逻辑是:损失越大才会调动越多消防车。业务上经常出现这种倒因为果的判断,比如看到用户投诉越多、留存越高,就以为投诉带来了留存,其实很可能是高活跃用户本来就更容易产生投诉。
第三种是纯属偶然。样本量不够大时,任何两个不相干的变量都可能出现显著相关。机器学习里常见的做法是拿几千个特征去和标签算相关,总能找出十几个漂亮的变量,但这可能只是多重比较下的随机噪声。要防住这种误读,需要靠领域知识和更严格的过程验证,而不是让模型自己去找理由。
3.3 可解释性不等于模型“说真话”
现在大家都很看重可解释性,这本身是好事。但我见过很多团队把可解释性理解成了“让模型开口说话”,这又造成新的误解。
特征重要性是我见过被滥用最严重的概念。很多工具能输出每个特征对预测的贡献排序,于是人们拿这个排序当业务归因来汇报:“年龄是影响流失的第一大因素”。问题在于,当特征之间存在相关性时,特征重要性的分配有很强的不稳定性。今天把两个相关特征一起放进模型,年龄的重要性大幅下降;明天删掉其中一个特征,年龄的重要性又跳回第一。
更微妙的是,一个特征之所以重要,可能不是因为它是现象的原因,而是因为它是某个真正原因的好代理。比如在流失预测里,“最近一次登录时间”的特征重要性很高,但用户不登录不是流失的原因,而是流失这个状态的一种表现。可解释性工具解释的是模型依赖什么信号,不代表模型真正理解了业务机制。把这两件事混为一谈,是很多数据分析报告翻车的根源。
我理解的可解释性,是让决策者能够判断“这个模型在什么条件下会犯错”。它应该帮助你画出一张边界地图,而不是用一堆高深的数字告诉你“事情就是这样”。
4. 评价指标、缺失样本和模型边界里藏着价值观
有一类问题特别容易被当成“纯技术问题”,但拆到底全是价值选择。这就是为什么我把价值观放在数据科学的核心位置。
4.1 每个评估指标都在定义“好结果”
你选择用什么指标来衡量模型,本质上是在定义“什么叫做好”。
拿内容推荐来说,如果你把“点击率”作为核心指标,你在无形中鼓励模型推荐那些吸引眼球但可能是标题党的内容。如果你把“阅读完成率”作为核心指标,模型会更倾向于推荐篇幅短、容易看完的内容,但这未必是长期价值最高的内容。如果你换成长时间停留率,模型可能又会走极端,推荐那些让人停不下来的争议性内容。
这不是算法问题,而是产品价值观问题。你构建的每一个目标函数,都写入了你对“这件事应该往哪个方向优化”的判断。很多人以为目标函数是客观的,因为它有数学形式。可数学只能帮你精确地表达一种倾向,不能替你决定哪种倾向是对的。
再比如风控模型,假阳性错误和假阴性错误带来的代价完全不同。把普通用户误判成风险用户,会伤害用户体验;把真正风险用户漏过去,会直接造成资金损失。模型不能自动平衡这两种错误,最终权重必须由人根据经营偏好来确定。这个偏好选择,就是价值判断嵌入系统的方式。
4.2 缺失数据不是噪音,而是沉默的行为数据
做数据分析时,多数人拿到缺失值的第一反应是“想办法处理掉”:填均值、填中位数、删掉这一行、或者用一个“未知”类别代替。很少有人会停下来想:这个缺失本身是不是一条信息?
举个常见的例子,一份用户满意度调查里,那些填写了基本信息但故意跳过了“你是否愿意继续购买”这一题的人,很可能并不是随机漏答。他们也许处于犹豫状态,也许已经默默决定离开但不好意思表达。你要是直接把缺失行删掉,等于把所有“说不出口的负面信号”从分析里抹掉了。
更普遍的情况是,缺失机制通常不是完全随机的。老年人的线上行为日志里大量缺字段,不是他们没发生行为,而是他们的使用路径没有被埋点完整捕获;高价值客户的交易记录缺席,可能是因为交易是通过线下大客户经理完成的,根本没有进入你手上的线上表。
把缺失数据当成完全随机的噪声,是统计方法偷懒时的假设;而认真对待缺失本身,才是一个数据从业者对真实世界最基本的尊重。处理缺失值之前,先问一句:这些人为什么没有留下数据?这个问题的答案,往往比插补出来的数字更有业务价值。
4.3 当模型开始做决策,判断就被固化进系统
纯粹用来“看看”的模型,出点错还可以解释成参考意见。可当模型进入自动化决策链路,它的判断就会被反复执行,错误也会被规模化放大。
这就需要你在上线前明确回答几个问题:这个模型的错误边界在哪里?当输入分布和训练分布不一致时,模型会不会给出离谱的预测?如果模型出错,人类有没有办法及时发现并接管?这类问题听起来像工程治理,本质上却是哲学里的“责任归属”问题。
更微妙的是一旦模型上线,它还会改变它所观察的世界。推荐系统上线后,用户的行为数据里开始包含系统自身的反馈:用户点了某些内容,不是因为他们本来就喜欢,而是因为系统把那些内容推给了他们。于是下一轮训练时,模型拿着这些已经被自己塑造过的数据继续学习,形成一个循环。这个现象在系统论里叫“反身性”,在哲学里是一个古老的议题:观察者会影响被观察对象。
当模型规模足够大、迭代足够快时,它就不仅是世界的反映,还开始反过来塑造世界。你若只盯着历史数据而忽略这个反馈回路,早晚会得到一个越来越偏的模型。
5. 把哲学反思转成数据思维检查单
哲学如果不能落到一张能用的检查单上,对做数据的人来说就还是太空了。这几年我在不同项目里反复试,最终沉淀下来一套自己的工具。它不是标准答案,但每次按这套方法走,都能在项目早期拦下不少后期返工的问题。
5.1 拿到任何数据分析任务,先回答四个问题
第一个问题:这个需求真正要回答的决策是什么?不要听对方说要什么图表,要继续往下问,这个图表会被用来做什么决定。如果对方只是想看趋势心里有数,那做一个清晰的时间序列就够了;如果对方要根据结果决定要不要投入资源,那就要严格区分描述性分析和因果推断。
第二个问题:这个决策的“好”和“坏”怎么定义?也就是问清楚,一个正确结果和一个错误结果分别会给谁带来什么影响。这一步能帮你确定评估指标,也能帮你判断该用精确率优先还是召回率优先。
第三个问题:数据是从什么过程里生成的?这一步需要把数据的生成链路摸清楚:谁记录的、为什么记录、经过哪些筛选、哪些群体可能被系统性遗漏。数据血缘这种事,越早查越好。
第四个问题:结论成立的边界条件是什么?再好的模型也有失效场景。在交付结论时,主动写上“在什么条件下这个结论可能不成立”,这不是示弱,而是专业性的体现。
5.2 特征工程和评估里最容易漏掉的“隐含假设”
特征工程是数据科学项目里最容易被“哲学陷阱”偷袭的地方。因为做特征处理时,人很容易沉浸在一堆字段变换里,忘掉每个变换背后的语义发生了什么改变。
举个例子,常见的分箱操作。你把“年龄”分成了 18 到 25、26 到 35、36 到 45 这样的区间。表面上是方便模型处理连续变量,实际上你在强加一个很强的假设:同一个年龄段内部的人行为同质,年龄段之间则完全不同。真实世界往往不是这样,真实的效应更可能是随年龄平滑变化的。分箱只是权宜之计,可一旦放进模型就很难再被看见,最后你可能拿着一个由人为边界驱动的结论去指导业务。
评估环节也一样。许多人只看单一指标,比如只看准确率。当正负样本不平衡时,准确率会严重失真:99% 的正常样本,1% 的异常样本,就算模型把所有样本都判成正常,准确率也有 99%。你看着 99% 的准确率觉得模型很好,但那个最重要、最需要发现的问题样本,一个都没找出来。用混淆矩阵、精确率、召回率、F1 和业务成本一起看,才能还原评估的全貌。
我在做特征和评估时,一直提醒自己一件事:所有处理步骤都是一种简化,简化本身没有错,错的是忘记它存在,并把简化后的结果当成完整现实。
5.3 毕业论文和就业方向里,哲学视角为什么值钱
说句实在话,数据科学与大数据技术专业的学生在校期间,大部分时间都在学工具:数据采集、数据库、机器学习库、可视化工具。这些都很重要,但到了写毕业论文的时候,很多人最先卡住的不是技术实现,而是“我到底研究什么问题”。
论文要用哲学思维打底,最直接的作用就是把“研究背景”和“研究意义”从套话变成真正有根的论述。你可以去交代这个数据是如何生成的、哪些偏差可能影响结论、用什么前提假设把因果推断和相关性区分开。这些东西一旦写清楚,论文的深度会立刻和那些只会堆模型的文章拉开差距。
就业方向上也同样。你去面试数据分析师,面试官很少只问你算法公式,更多是给你一个业务场景,看你能不能把问题拆清楚、定义指标、判断结论的可靠性。说到底,企业需要的是能“区分噪声和信号”“知道自己不知道什么”的人。这种能力练起来很慢,但在职业后期会成为真正的分水岭。
5.4 我在每个项目复盘里固定保留的一段内容
最后分享一个我自己的小习惯:每次项目结束,我都会在复盘文档里单独留一段,标题永远是“这个项目里我可能想错了什么”。
这一段不需要很长,写三件事就够。第一,当初最自信的一个假设是什么,后来有没有被数据推翻。第二,如果换一套标签定义或换一个评估指标,结论会不会发生逆转。第三,如果这个项目半年后要重做,我会在哪一步采取完全不同的做法。
别小看这个动作。它逼着我去面对自己认知里的盲区,而不是把项目报告写成一个完美无瑕的胜利故事。数据科学里最危险的错误,往往不是代码写错,而是你用一种看起来特别科学的方式,把一个错误的假设推导成了完美的结论。哲学给数据科学留下的最大遗产,其实就是这份愿意对自己说“我可能错了”的底气。
