<
回复: 1
收起左侧

字节-数分面试-补

本楼:   👍  1
100%
0%
0   👎
全局:   2
100%
0%
0

2022(7-9月) 分析|数据科学类 硕士 全职@字节跳动 - 内推 - 视频面试  | Fail | 在职跳槽
2021年,2022年参加了六个职位的八场字节数分面试,之前发过一期帖子,这里再做一些补充,关于 SQL 和 AB 测试的一些问题。. Waral dи,
先描述遇到的问题,再给出事后个人思考的一些答案。

面试问题 ..
1. (SQL 组内排序)八场面试中有两场考了 SQL 知识,都是考的组内排序。题目类似于,选出公司各部门薪资前三的员工信息。可以用 ROW_NUMBER / RANK() / DENSE_RANK() 函数们去解决这件事情。
2. (SQL follow up)窗口函数的本质是什么?
3. AB 实验如何选取样本量?
4. 抖音视频流,刷着刷着会出现原生视频流广告,可能十个视频里有一个广告,现在想提升广告出现的占比,比如十个视频里出现两个或更多广告,如何设计 AB 实验?
5. 之前做 AB 实验上线了一个功能,过了一阵子以后老板说当时做的实验不准,还有一些未考虑的因素,想下线功能,怎么办?
6. 一个点击率指标上升了,想归因,就分操作系统分析,但是在安卓和苹果系统上点击率指标都下降了,这可能么?为什么?
7.  抖音电商,拉新,对新用户进行视频推荐,如何选取推荐的视频内容?
8. (上个问题 follow up)好你提到了推荐网红达人优质视频,如何衡量这些视频推荐是有效果的?
9. 销售额周增长了 20%,如何归因?
. 1point 3acres
自己思考的一些答案
1. 网上有很多 SQL 组内排序的教程,这个帖子写的很好,理解 ROW_NUMBER / RANK() / DENSE_RANK() 三个窗口函数并明白他们的区别。帖子一些补充,如窗口函数中的 OVER() 括号里面的参数,除了列出的 PARTITION BY 以及 ORDER BY,还有 ROWS / RANGE 等,可见 chatgpt 的回答(附件中的图片)。

牛客网的这个练习题也可以用来练习写 ROW_NUMBER() 窗口函数。题目对应的讨论和题解页有窗口函数的相关知识。

2. 可见前一个问题中的帖子链接,面试当时我没答出来,后来思考觉得是“限定了查询的范围”,OVER() 函数中 PARTITION BY 与 group by 的区别是窗口函数(OVER PARTITION BY)的查询结果不会减少行数。. ----
我在字节面的关于 SQL 的题目就窗口函数,我看网上说 SQL 相关还有些常见的问题比如数据倾斜。我现在在的地方用到的数据量比较小,即使用到数据库也是在自己电脑上存储数据就可以了,但数据量很大的时候需要用到分布式系统的时候就会有很多数据倾斜相关的问题。-baidu 1point3acres
. 1point 3acres
3. 最基础要考虑的,就是满足统计学的假设。在我们设定了显著性指标(P值,一般0.05)、统计功效(statistical power,一般0.8)以及指标变化最小接受阈值(practical significant)之后,在固定显著性指标和最小阈值的情况下,改变样本量会改变统计功效的大小,我们需要调整计算样本量以满足基本的统计学假设。比如对于常见的点击率相关指标,一般符合二项分布,在样本量足够大的时候我们可以用正太分布来进行模拟。如下图所示,对于原假设,即实验组与对照组点击率相差为0,由黑色的正态分布曲线来代表,坐标轴下面框定的 95% 区间代表了:如果原假设为真的话,有 95% 的可能性最终实验结果(实验组与对照组的点击率之差)落在框定的这个区间中。对于备择假设,即实验组与对照组相差不为 0,我们用红色的正态分布曲线表示,我们只关注红色曲线均值在我们设定的最小阈值这里就可以了,因为原假设与备择假设相差更小时(红色曲线再往左边一点)我们不关心,相差更大时(红色曲线再往右边一点),更加能够满足我们对于统计功效的假设。为什么呢?统计功效代表犯二类错误的概率,即在备择假设为真时,我们接受了原假设而拒绝了备择假设,这对应了我们图中绿色阴影部分的面积。即,备择假设为真时(实际为红色曲线),接受原假设(对于最终的实验结果,如果落在了黑色正态分布曲线 95% 区间内,我们就接受原假设)的概率为绿色阴影部分面积,我们想要这个概率小于 20%。可以观察得到,红色曲线向左移动一小段距离时,绿色面积会增大,右移一小段距离时绿色面积会减少。而当我们固定了显著性指标和最小接受阈值的时候,两条正态分布曲线在横向坐标轴上的位置就固定了,当我们增大样本量的时候,正态分布曲线会变得“更尖”,这会导致绿色阴影面积减少,即二类错误概率减少,统计功效增大。我们想增大样本量到一个合适的量使得统计功效至少达到 80%。


这是最开始要考虑的满足统计学假设。其他要考虑的:. 1point 3acres
  • 要选择的指标(metric)。对于点击率这样的指标,我们可以计算方差,但一些其他的指标我们不好计算方差的,比如销售额,可能符合 perato distribution,实验组与对照组的销售额差值不好确定符合什么 distribution,我们可以做 AA 测试计算方差。Anyway,我们测定了指标的方差之后,方差越大的我们定义指标变化最小接受阈值(practical significant)就越困难(超了或者没超这个阈值都很有可能是随机发生的)。那么我们可以通过增加样本量来增加指标的稳定性,减少方差(比如实验是投硬币十次,指标是正面朝上的比率,波动很大,我们可以投硬币一百次算正面朝上的指标,这样更好设定最小阈值)。
  • unit of diversion 和 unit of analysis。我们在实验分组和定义指标的时候一般可分几个维度:事件维度,event based,即发生一次事件,比如页面产生了一次浏览或者按钮被点击了一次,就算一个事件;用户维度,可以用 cookies 或者 user_id 来区分用户。我们在 AB 实验分组的时候依据的维度,比如用户 cookie 维度,按照不同的 cookie 来分组,这个叫 unit of diversion。和我们定义指标的维度,比如点击率:去重的用户数/点击页面用户的总数,也用用户 cookie 维度,这个叫 unit of analysis。这两个 unit 一般会取一样的维度,但也有一些情况,为了计算的简便,或者追踪用户的 learning effect,或者度量用户体验等原因,我们会设定这两个 unit 不一样。比如我们分组的时候用的用户维度的 cookie,但在指标计算的时候为了简便我们直接用 event based 的指标,如点击按钮的次数/点击主页面的次数。这时候我们通过正态分布统计学这种计算的方差(analytical variance),就会比实际的方差要小。因为我们是按照用户(cookie)分组的,组内的 events 互相间有很强的关联性。可以理解成,比如掷骰子,人们分成两个组,但组内的人行为很接近(就像 AB 实验中 events 的行为很接近因为来自同个用户),第一组有个人掷出了 5,就有很多人也大概会掷出 5 左右的数字,而第二组有个人掷出了 2,就会有更多人也掷出了很小的数字,这导致了两组的方差比随机的情况要大。所以当 unit of diversion 和 unit of analysis 不一致的时候,方差很大,我们需要更大的样本量。还有一点要补充的是,相反的情况,即分组时依据的是事件维度(events)但设定的指标是用户维度(比如 user_id 或者 cookie),这种情况一般是不行的,因为这样的话指标中同一个用户可能会来自不同的组,计算逻辑混乱不可信。除了这种为了计算简单的情况,还有的时候我们想研究客户的 learning effect 或者体验,就可能把分组依据定成 user_id,但指标可能还是 cookie 或者 event based 的。还有一点要注意的是在选择 user_id 做为分组依据(unit of diversion)的时候,可能需要极多的数据而变得不切实际。选 100 个 cookies 和选 100 个 user_ids 所需要的数据总量差很多。
  • 实验影响到的人群。如果实验组分配的人群只有部分受到了实验影响,那么会导致方差变大。因为比如对照组都是 0,实验组本来应该都是 1,但是有些人没受到实验影响,比如实验是上线个新功能但后台代码码错了所有印尼的人都没有新功能,所以实验组出现了一些 0。正常的话实验组与对照组的差全部都是 1,方差是 0,但现在实验组与对照组的差有时候是 1 有时候是 0,有方差了,不是 0 了。也就是说如果实验组的人群没有全部受到影响,会稀释实验的结果,导致方差增大,导致我们需要更多的样本量。实际中很多时候可能很难探查到我们实验组的人群是否全部收到影响,但大概可以通过限制人群,比如人群规定为中国部分,等等,来尝试减少方差以减少样本量。


4. 这个我写不动了,以后再发一个帖子吧。

5. 在 B 站上刷视频,有个叫小羊搬砖的好像如果没记错的话字节的数据分析做 AB 测试,介绍过一个叫反转实验的东西,就是对于这种情况,实验已经结束了,可以再做一个实验,用小流量比较长时间的运行,下线之前上线的功能,来测试相关指标是否向不好的方向变化。要注意的是选取人群的时候要选新用户,特别是对于一些用户可见的功能,不然老用户看到功能下线了会抓狂。小流量长时间,一方面是不想很多人都不能体验新功能,还有就是舆论,如果被发现曝光网上广为流传,影响也不好。
这牵扯到了 learning effect 的相关问题。说的就是在刚上线一个功能的时候,和过一段时间以后,用户的活动与反应发生了变化。可能是一开始觉得,瓦槽真好玩这是啥啊然后疯狂点击,也可能是一开始很厌恶但随着时间就习惯了。在设计实验阶段,我们一方面可以通过人群的设置来更好的衡量 learning effect,也叫做 cohort analysis,即一般我们分配人群是按照年龄啦地域啦兴趣啦等等,这种叫 population,但在实验的过程中,可能会用人从外国来到中国、年龄增长等等导致我们的 population 进进出出发生变化。我们可以进一步细化 population 的定义,比如注册时间活跃频率维度上,选取过去半年或者更久都在中国的人,注册时间大于一年,活跃频次一周登录三次以上的等等,这样在我们想要衡量 learning effect用户留存率研究用户行为 等情景很有用。但也要注意到这需要更复杂的计算,更大的样本量以及可能会产生的对指标方差的影响(参见第三个问题)。在衡量 learning effect 的时候就可以选择新注册的用户分配到实验的两组中。在 Google,还有一些更 advance 的方法来衡量 learning effect,即所谓的 pre-period AA test 和 post-period AA test。在上线 AB 实验之前先做个 AA 实验,以测试系统的稳定性和指标的方差。在实验之后再做一个 AA 实验,如果之后的 AA 实验中,指标的方差明显变大了,则可确定是由用户习惯的改变带来的。

6. 辛普森悖论。在一开始我不知道这个东西的时候我是这么理解的,就你两个平台用的是比值类的指标而不是数值类的指标,两边加和不等于 100%,即安卓系统的点击率加上苹果系统的点击率不等于总体平台的点击率。如果选择数值类指标,比如点击数量,安卓与苹果点击数量等与整体平台点击数量,那么整体平台点击数量增加一定是由于某个系统的增长而“带动”的。后来我知道了这个叫辛普森悖论,又明白了一些事情。首先这个做的事情是,比如 a>b, c>d, 我们可以说 a+c>b+d。但是对于分数,m/n>p/q, a/b>c/d, 我们可以说 m/n+a/b>p/q+c/d, 但是我们不能说 (m+a)/(n+b)>(p+c)/(q+d),就是分数加法不是这么算的,但我们降维分析的时候却认为这么算很合理。还有一些事情,当出现辛普森悖论的时候,往往说明:① 分组间指标相差很大,这里的分组就是例子中的安卓和苹果平台,指标指的就是点击率,如果有实际数据的话我们很可能会发现安卓与苹果平台之间的点击率相差了十倍二十倍甚至更多。② 分组间分母相差悬殊。出现这种问题一般都是比值类的指标,分母在层级之间相差很悬殊,分子在分母小的层级发生了比较大的改变。比如苹果平台上有一万个用户,安卓只有十个用户,苹果点击数量增加了一百个,点击率增加了0.1%,而安卓点击数量增加了一个,点击率就增加了10%。实际在遇到这种问题的时候最好把数字都写下来,要理解为什么会出现这种情况,为什么组间分母会相差的极其悬殊,这在 AB 测试中尤其不合理。也有说法(我记得在维基百科上)说出现了这种情况就说明指标的改变与你分层没什么大关系,即点击率的增加不是由平台导致的,我还不太理解这种说法。

7. 这个我说的是根据用户选择的感兴趣分类选择优质视频推荐,根据用户维度、视频内容维度选择相似的用户看过的视频、相似内容视频进行推荐。这个我还没做很多的 research,冷启动问题。
. Χ
8. 做个 AB 实验?这个我也要再花时间想想写写。. check 1point3acres for more.
9. 我现在是医疗销售领域数据分析,对于销售额增长异常的情况分析,可从以下角度去看:
首先是数据准确性,这里的数据准确性不止包括数算的对不对,还有数是如何计算的,比如对于我们公司来讲,我们的销售数据是从市面上大型医院进行采样然后统计学放大得到的,而对于互联网行业,一般网页端埋点是在 HTML 文件中的 ping 标签中镶嵌网址,以返回和记录用户点击信息,而这项技术依托于 javascript 技术,而不同浏览器之间对于埋点记录的准确性不同,有些旧浏览器甚至不支持 javascript,等等类似的问题,所以要与工程师确定数据记录的方式,探查是否导致数据的异常变动。还有就是互联网虚假流量分析。.
然后对于我现在的销售场景,可以从竞品角度(销售份额降低了,去看销售额增长率情况,发现差不多,结果是竞品涨的太好了);季节性角度,去年/上周/月同期是否发生了类似的数据波动情况?;综合指标来看,比如销售额增长了很多,结合销售量,发现销售量涨的更多,发现通过降价促销带动销售额增长。又或者某产品增长迅速,通过铺货率综合指标来看,铺货率很小,可能是样本选取和放大过程中的问题导致了异常增长;下降维度分析,是某个地区?产品?销售渠道?的增长带动了整体?

本帖子中包含更多资源

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x

评分

参与人数 6大米 +25 收起 理由
Eva小太阳 + 1 赞一个
jmmygan + 1 赞一个
June0627 + 1 欢迎分享你知道的情况,会给更多积分奖励!
葡萄的奶茶 + 20 欢迎分享你知道的情况,会给更多积分奖励!
西西MM + 1 赞一个

查看全部评分


上一篇:字节-电商数分-面试题目及自己思考的答案
下一篇:亚麻背调问题求答
用户_3296beb 2023-10-17 21:55:19 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   1
100%
0%
0
非常详细, 感谢!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表