查看原文
其他

心法利器[69] | 聊聊数据敏感性

机智的叉烧 CS的陋室 2024-04-24

心法利器


本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有

2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里:CS的陋室60w字原创算法经验分享-2022版


往期回顾

数据敏感性第一次接触是在我实习的时候,虽说自己在学校学习阶段一直也有接触,但在实习过程中觉得自己其实并不够强,此后就开始有意识地修炼自己的能力。到现在其实已经挺久的,最近聊天又有聊到这个问题,就正好说说我的个人看法吧。

不过这事感觉说的有些玄,毕竟是属于内功类的,我尽量用例子来给大家解释吧。

什么是数据敏感性

我理解的数据敏感性,是一种能从数据中获取信息的能力。表面上看这是一个很日常的能力,很多场景都能看到很多数据,借助数据我们也能够得到一些结论。但实际上,更深层次,我们可能还能考虑很多有意思的问题。来举几个例子:

  • 抽样范围是否合理。例如我们不能去火车上统计大家买到票的概率。
  • 指标使用是否正常。例如我们经常看平均工资很高,但实际上中位数可能会更接近我们的认知,实际上中位数可能很低。
  • 数据到结论的环节是否可信。例如游戏的角色加强,并不代表会变成强势角色。

能看出这些问题,其实都算是数据敏感性能力的体现了。说白了,就是我们要开始关注数据,认识数据,开始探索数据背后的一些信息,而不是被数据、被列数据的人牵着鼻子走。

说起这个,来提提常见的数据陷阱吧:

  • 用相对量的变大来避开绝对量的短板。毕竟增长率高,很可能不是因为分子大,而是分母小,很多小公司、新项目的增长率看着高就是这个原因。
  • 大数字。洗手液广告上经常用细菌的绝对数,看着很多,实际上包括我在内很多人都对这数没概念。

来一个日常的例子

一个召回率提升的专项,针对未召回的query进行补充召回,从而使得召回率的提升明显,同时数据集结果显示,准确率比较平稳,整体达到上线目标,但是上线后的结果显示,流量确实有提升,但是准确率却有所下降,也就是准确率的离在线指标差距较远。最终的问题是召回率提升后,在线召回量提升明显,但是离线的准确率数据因为没有及时更新,里面没有覆盖到新召回的那部分的数据,从而导致准确率指标的显示上变化不大。

而这个问题定位的过程其实比较困难的,线上线下不一致本身是一个比较复杂的问题,以为涉及到全链路的对比,数据、模型、指标等多个方面都可能会导致这个问题,定位的时候思路可以这样,最终定位到问题:

  • 召回率基本一致,准确率差别较大,很可能不是模型和代码的问题。
  • 指标本身的计算是一致的,没有更新。
  • 准确率数据为了泛化,离在线会有些不同,只能是这块的问题了。

回头想这件事的问题,离线的准确率很稳定,但是其实实际上的准确率已经下降明显了,但是发现不了,这里换个视角,其实就是数据敏感性不足,召回率提升后,准确率对应所覆盖的数据就不同了,因为新召回的数据很可能不在数据里,也就观测不到,正确做法是我们也要刷新准确率的数据集。

如何提升数据的敏感性

这里来聊聊我是怎么提升数据敏感性的。

首先,是要培养一个看数据注意思考的意识,也要明确一些容易出错的问题,培养这种意识吧,推进大家看一本书,比较老了——《统计陷阱》,这本书算是我这方面开智的一本书吧,数据内很可能会有很多骗我们的东西,这本书给我们解释了,这就让我们对数据开始有意识,敏感起来,这是一个主动性的问题,会开始有意识地质疑一些数据给我们的信息。当然,一些有关数据分析的书也可以看看,看看他们常用的一些思路和方法论。

然后是,熟悉自己场景的数据。上面提的很多问题,其实都一定程度来源于对业务的理解,例如上面那个例子,要定位问题看出问题,就需要对这件事要有一些了解,如果我们不知道准召计算的数据,如果我们不知道指标计算的背景,我们不可能能定位出问题。

第三,但也是很重要的一点,就是要多看数据,熟悉数据,只有熟悉数据,才能发现出数据的异常,这个熟悉数据,不仅是宏观上的,还要到微观上,到样本层面,还是上面的例子,如果我们不去思考数据本身内容,思考覆盖程度的问题,我们可能就和解决问题擦肩而过。

如何利用数据敏感性解决问题

一旦有了数据敏感性,其实很多时候能跟敏锐地发现问题关键并解决问题的。

举例子吧,现在很多团队都会有数据报表了,上面的东西说复杂其实不复杂,只是一些数据表,上面很多数据,指望别人分析,是不太可能的,只能自己看自己分析了。可以观测某些数据的波动变化以及整体趋势,这应该是自己所在领域一个比较基本的技能了,毕竟问题不会主动暴露在你的面前,而是需要你去探索数据的波动发现的。不过,这只是一层被动的能力。

要主动的,其实更多应该是构造一些数据和指标来让我们能观测的出来,日常的要监控在线的准召、点击率等,然后端到端、非端到端的等,例如还是准确率,除了这个值本身,我们可以把分子分母都打出来看看,在线流量是否有变化,这样可以方便我们更好地定位问题,有的时候分子分母会同时增加,某些query流量变化,可能和某些运营活动有关等,这就能发现得了。

小结

数据敏感性本身是个很空的概念,本质就是我们对数据的理解,这篇文章也就是聊聊我自己的一些想法吧,希望对大家有用。


继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存