Spotify数据科学家的终极指南

Spotify数据科学家的终极指南

你是否已经等了很久,等待着霍格沃茨的信函到来?你的信鸦一直在邮件中迷路,你担心它可能永远不会来?

如果你是一名数据科学家,渴望加入科技界的魔法世界,那就别再等了。这里有一封信会让你飞向梦想中的公司。

如今,我看到很多人自称数据魔法师。老实说,如果说有什么比科学家更酷的话,那肯定就是魔法师了。而在数据世界里,如果有一个神奇的地方适合我们这样的人,那毫无疑问就是技术的魔法世界。

一旦你加入,你就会获得成功和乐趣的杀手锏。

为什么?

  • 科技公司始终站在人工智能竞赛的最前沿在这一领域,大多数数据科学家都在产品的核心研发部门工作。这意味着,一旦你加入,你就拥有了与尖端技术打交道的最佳平台,并成为所有与人工智能相关事物的积极参与者。
  • 没有比技术部更好的地方了,那里有无穷无尽的优质数据供你挥舞你的魔棒。获得大量优质数据所带来的可能性和机遇是无价之宝。你将不断尝试使用数据,这将确保你的技能始终保持竞争力。

但有一个问题。不是每个人都有资格收到神奇的录取通知书。如果你没有掌握正确的咒语,你可能会永远等待下去。

这就是我来的原因。我来给你提供你需要的内部地图。把它看作是《哈利波特》中的“掠夺者地图”https://harrypotter.fandom.com/wiki/Marauder%27s_Map,我会在上面揭开所有隐藏的秘密通道,带你到达你想去的地方!

图片来自Unsplash,作者:Klim Musa mov

在这本魔法书(呃,文章)中,我将与你分享将你变为数据魔法师的顶级技能,让你在神秘的技术领域找到自己的位置(来自技术女巫本人)

让我们进入数据世界,揭开魔法的神秘面纱,好吗?如果你想了解更多关于数据科学的相关内容,可以阅读以下这些文章:
所有数据科学家都应该知道的三个常见假设检验
如何开始自己的第一个数据科学项目?
导航数据驱动时代:为什么你需要掌握数据科学基础
数据科学家常见的13个统计错误,你有过吗?

我在下面分享的所有技能都是在技术领域担任数据科学家所需的最重要技能。

不过,由于“数据科学家”这个词在不同公司的含义可能不同,所以我主要谈的是我自己在Spotify所从事的数据科学家类型。这也是FAANG公司和其他类似公司的专家类型。

基本上,数据科学家就是利用数据产生洞察力和价值,从而推动决策的人。需要知道如何实施机器学习,但除非需要,否则并不总是应用于实践。基本上,数据科学家正在向决策科学靠拢。

这篇文章的读者对象是所有准备投身数据科学行业的人,无论你是在校学生、应届毕业生,还是已经在从事数据科学家的工作。

准备好了吗?让我们直入主题。别忘了把你的信鸽和我的感谢信一起寄给我。

自从两年半前我作为实习生加入Spotify以来,我就一直在Spotify挥舞着我的魔杖。我很幸运,在没有掌握下面列出的一些技能的情况下就进入了公司。但我能侥幸过关的主要原因是我还是个学生。

初入职场,你可以做很多事情,但一旦你开始积累经验,游戏规则也会开始改变。

因此,除非你是以实习生的身份入职,否则进入技术行业(或其他任何工作)的障碍就会迅速堆积在你的门前。好消息是:你仍然可以进入这个行业。

你只需要聪明地玩游戏,首先要确保自己手中有正确的牌,并在简历上出色地展示它们。这包括:

  • 掌握数据提取、准备和探索的炼金术
  • 用数据可视化创作令人着迷的故事
  • 破解统计学的预测巫术
  • 发现A/B测试的占卜艺术
  • 学习KPI背后的数字魔法
  • 锻造你的巫师法典

好吧,我知道这听起来很神秘,但马上给你答案又有什么意思呢?

图片来自作者

无论是分析A/B测试还是进行基础研究,我的工作流程总是从提取数据并将其转化为所需的形式开始。

我不是变形师,但我已经学会了在数据上耍花招(至少我一直在尝试)。通常情况下,我们先利用SQL的神奇特性提取数据,并将其转换为最终形态。然后,我们将数据集转换到Python,以获得更深入的见解。

你可能认为自己已经知道这一点,但相信我,事情很快就会变得一团糟。让我来解释一下原因。

我说的SQL不是指基本的SELECT和GROUP BY。在这个级别,你需要使用更高级的查询功能,如窗口功能、日期时间数据、数组/结构操作等。

在我目前的一个项目中,我正在进行A/B测试分析,我们使用4个指标(+1个护栏指标,以确保我们不会在过程中弄乱任何东西)来衡量成功与否→这意味着要精心设计5个复杂的查询,每个查询40-50行,每次提取一个指标。

挑战是什么?在复杂的查询网络中确保准确性。一旦开始处理相互交织的查询,任何事情都可能出错。

如果到了这一阶段,你已经掌握了从零开始创建精确数据集的技能,那么你就通过了第一关。下一步是确保使用统计技术和直方图、散点图或方框图等可视化工具来理解数据。

同样,如果你不对数据的数学含义保持开放的心态,事情很容易变得复杂。

在我之前提到的实验中,其中一个成功指标有一些极端离群值,导致指标结果出现偏差。我不得不在用户层面进行汇总,以捕捉这种偏差,然后正确修正。这就是统计知识派上用场的地方。

在发现我的数据是泊松分布后,我用一个简单的技巧就解决了问题,那就是将离群值替换为高于平均值3个标准差的封顶值。下面是我使用的查询:

WITH statistics AS (
SELECT
CEIL(average_value + (std_dev*3)) AS upper_limit
FROM (
SELECT
AVG(metric) AS average_value,
STDDEV_SAMP(metric) AS std_dev
FROM data
)
)

SELECT
id,
IF(metric > s.upper_limit, s.upper_limit, metric) AS metric_count
FROM data us
CROSS JOIN statistics s
ORDER BY 2 DESC

如果是正态分布,鉴于曲线的形状不同,我会采用不同的方法。这种方法具体来说是:

SELECT *
FROM data
WHERE metric_count <=
(SELECT 
DISTINCT PERCENTILE_DISC(metric_count, 0.997) OVER() AS percentile_99th -- 3 standard deviation above the mean to remove outliers
FROM data)
ORDER BY 2 DESC

现在你明白为什么了解隐藏在数据中的分布、趋势和潜在异常现象如此重要了吧。就像我所做的那样,有时,你还需要通过在用户级别或其他维度上汇总数据,进一步挖掘数据。

如何培养这些技能?

首先,动手使用SQL高级函数进行复杂查询。学习如何对查询进行质量检查。

回顾统计概念和概率理论,补习基础知识:

描述统计确保你掌握数据的属性,如平均值、中位数、方差和标准差,以及异常值、四分位数等。

分布理论,了解不同的概率分布,如正态分布、二项式分布和泊松分布(及其形状)。这将帮助你对数据做出正确的假设,并据此处理数据。

我仍然会不时回顾这些概念。即使是经验丰富的数据奇才也经常需要复习。毕竟,没有人能够避免记忆出错。

图片来自作者

如果你还没有意识到,所有优秀的数据科学家只有在讲故事的技巧上才能如此出色。在科技领域尤其如此。

讲故事就像是每位数据科学家必须精准挥舞的魔杖。即使是专家级数据科学家也需要不断磨砺自己的叙事之剑。

事实上,我很快就要和其他Spotify数据科学家一起参加一个研讨会,学习如何制作有影响力的信息图表和数据视觉效果。科技公司高度重视这项技能,这是有道理的。

如果无法传达信息,即使是最有突破性的发现也是无用的。有效的沟通是关键,而这首先取决于我们如何构建自己的见解。

要回答的第一个问题是什么?你希望数据讲述什么故事?

想要将关系可视化?

  • Scatter Plots:这是绘制两个变量之间关系图的首选。
  • Bubble Charts:需要包含两个以上的变量?气泡图可以满足你的需求。
  • Upset Plots:是可视化不同组元素之间令人讨厌的重叠的理想选择。
图片由作者使用Chartify Library制作

如何展示比较呢?

  • 时间序列数据:折线图或垂直条形图是你的最佳选择。
图片由作者使用Chartify Library制作
  • 静态数据:深入研究条形图,无论是垂直图还是水平图。漏斗图也适用于多个变量。
图片由作者使用Chartify Library制作

需要检查分布?

  • 直方图和折线图:最适合用于了解单一变量。
  • 散点图:它们能很好地显示两个变量的联合分布。

想要突出比例?

  • 时间序列数据:堆叠区域图:无论你使用的是绝对数字还是100%基数。
  • 静态数据:以100%为基数的堆叠条形图和百分位图是你的好帮手。
图片由作者使用Chartify Library制作
图片由作者使用Chartify Library制作

经验4—尝试使用仪表盘工具来提升履历

独立的可视化效果非常强大。如果将它们组合在一起,效果会更好。

在技术领域,数据科学家通常会构建仪表盘来显示和跟踪关键指标。

在过去的几个月里,我花了大量时间从头开始在Tableau上设计和构建仪表盘。不只是我,我的整个团队都投入了同样的精力来构建类似范围的仪表盘。

为什么要如此忙碌?因为数据科学家的真正魅力在于从研究中创造商业价值。随着我们不断为工程师、设计师、产品经理等跨职能团队提供支持,我们的时间变得更加宝贵。

我们不能被临时的问题牵着鼻子走。相反,精心制作的仪表盘能让利益相关者获取他们所需的数据,让我们专注于自己的专长–研究!

了解Tableau或Power BI等工具的基础知识,可以为你的技术职位简历增添一些魔力!

我认为这并不是必须的,因为你可以在工作中学习这项技能,但如果你渴望踏入迷人的技术世界,不妨考虑为自己再加一根弦。

我会在接下来的故事中教你如何编写类似的情节。

图片来自作者

我们通常喜欢测试功能发布或更新的影响,其中一种方法就是进行A/B测试。当这种方法不可行时,我们会转而使用其他方法来估计发布的因果效应,例如因果推理。

有时,我们可能需要深入研究更多的技术方法,对一组用户进行聚类或进行功能重要性分析,以了解用户行为。

同样,了解如何应用更先进的统计概念、建模和机器学习技术也是基础。不过,你可能已经知道了

你不需要深入研究机器学习,就像把脚趾头浸泡在深度学习中一样。实际上,在我日常工作中,我几乎不记得上次不得不应用任何这些复杂技术是什么时候了。

然而,这并不意味着你所有的统计知识将被遗忘。我们可以说它被重新用于更具体的应用。此外,还有比深度学习更复杂的东西。

进行因果推断分析可能会有挑战,这取决于使用情况,然而结果比你在那个深度学习的兔子洞里发现的东西更为即时且不那么抽象。

因此,答案是肯定的,你需要了解统计和概率。你可能不会做太多机器学习的技巧,但我发现更有趣的是能够探索统计在机器学习之外的力量。这是相当被低估的。

图片由作者提供

像Spotify、苹果、谷歌等公司。它们的共同点是什么?我并不是说它们都是科技公司。

是它的创新。这些公司不断并大量投资于新奇事物。这就是他们留在游戏中的方式。研发是科技的核心,它始于创造一项新功能并对其进行测试。

在这个过程的两个阶段,数据科学家都扮演着关键的角色。我们进行研究,为新功能提供动力。然后,我们跳上船来测试这个新东西是否真的值得发布给整个客户群。

如何做?我们设计实验(也称为A/B测试)来测试我们的假设。当你看到一个新功能发布时,那是因为它经受住了实验的考验。

作为数据科学家,我们参与实验的创建,选择指标并分析结果。

确保实验在统计上是正确的,结果是可解释的。通过这种方式,我们最大限度地提高了为数据支持的决策提供信息的机会。

不骗你,这又和数据有关了。它们无处不在,我们似乎无法摆脱它们。

进行实验就是关于假设检验的统计概念。所以一定要彻底地复习一下。

在加入Spotify之前,我从未做过A/B测试。我试着去研究这件事,但坦白说,如果你不是直接在公司内部做这件事,就很难做到。如果你在目前的工作中没有机会学习A/B测试,那么这里有一个简单的分步指南,教你需要掌握的概念:

1. 假设检验

这是什么?确定我们的数据中是否有足够的证据来推断某种条件适用于整个人群,而不仅仅是我们测试条件的样本的过程。

为什么它很重要?这是A/B测试的支柱,你在测试改变(B)是否比现状(A)更好。

如何学习呢?深入研究基础统计教科书或专注于推理统计的在线课程。

2. 测试统计数据

这是什么?一个标准化的值,有助于决定是否拒绝零假设(现状)。它们帮助你评估你在对照组(A)和治疗组(B)之间观察到的差异是否具有统计学意义,或者它是否可能是随机发生的。

为什么它很重要?该值将告诉你测试中观察到的效果可能是由于偶然还是你所做的更改。

如何学习呢?将此与假设检验一起处理。可汗学院(Khan Academy)或Coursera等在线平台都有非常好的模块。

以下是主要测试统计数据的细分以及何时使用它们:

  1. z检验→对于已知总体方差的大样本量。
  2. 学生t检验→当总体方差未知时,使用小样本量。
  3. 卡方检验→用于具有分类/二元结果的检验,以检查观察频率与预期频率。
  4. F-Statistic→在A/B/C…测试中比较多组之间的差异。

检验统计量是从样本数据中计算出来的,我们用它来确定p值。

p值是多少?假设零假设成立,观察到检验统计量与从样本中计算出的检验统计量一样极端或更极端的概率。

3. 样本量计算

这是什么?基本上,你需要多少次观察才能发现对照组和实验组之间的显著差异。你不能在整个客户群(人口)上测试你的新功能,如果出现问题怎么办?我们不想把总体搞砸,所以我们用样本。

为什么这很重要?太少的观察可能会错过真实的效果,太多会浪费资源(或损害游戏体验)

如何学习呢?使用在线计算器来感受一下,然后通过在线课程或统计教科书深入研究数学。

4. 基础暴露vs.自定义暴露

这是什么?基本暴露是暴露于某个变体的用户的默认百分比,而自定义暴露则允许特定目标。也许我们只想要在Spotify上播放歌曲的用户,而不是打开播放列表的用户。

为什么这很重要?确保你测试的是正确的人,而不是有偏见的结果。

如何了解更多这方面的信息?阅读主要科技公司的案例研究或A/B测试最佳实践,以了解不同的策略。

5. 最小可检测效应(MDE)

这是什么?你希望测试检测到的最小效应大小。

为什么它很重要?有助于计算样本大小,并为“成功”测试的构成设定明确的基准。

如何了解更多信息?关于A/B测试的文章和案例研究经常会讨论这个问题。有些A/B测试工具有内置计算器。

6. 新奇效应与首因效应

这是什么来着?用户可能会对新事物(新奇)做出积极的反应,或者记住他们第一次看到的东西(首要),这可能会影响结果。

为什么它很重要?确保你不会把短暂的兴奋误认为是真正的偏好。

如何了解更多信息?行为心理学资源可以提供见解,深入研究这些偏见的A/B测试文献也可以。

你还可以生成模拟数据并运行A/B测试来感受这个过程。

最后要说的是,记住我们是在统计学的水域中航行。绝对的确定性是一种幻觉。然而,优秀的数据科学家努力在实验中遵循最佳实践,以避免因假阳性或假阴性而提出误导性的故事。

图片由作者(dal . e)提供

自从我加入公司以来,我一直听到的一件事就是参数讨论。它对我来说总是很模糊,就像数字这个词一样。起初,考虑到复杂性,我并不总是参与定义参数的过程,但现在我参与了。

将业务目标转换为可测量的kpi至关重要。数据科学家的职责通常是将业务目标正确地转化为可操作的指标。

度量框架成为许多涉众的参考点,特别是当我们想要度量成功并跟踪我们的进度时。

让我们专注于A/B测试的例子。

如果你不知道如何正确定义你的参数,你的实验将毫无价值。如果你没有选择正确的指标来捕捉你试图测量的变化,你可能会结束:

  1. 因为你可能选择了对机会不够敏感的错误指标而错过了变化
  2. 对你试图衡量的bug修复或功能发布的真实效果得出错误的结论
  3. 提出错误的建议,可能会造成更大的后果

定义你的参数并不像看起来那么简单。为了找到衡量成功的最佳方法,我们花了数周时间讨论我参与的上一个实验的参数。

因为我们花了很长时间讨论参数,所以我意识到它们是多么重要。

在创建指标时,数据科学家通常需要确保它们是:

  • 易于定义、理解和创建。
  • 跨实验可重用。
  • 对变化敏感,反应灵敏。

你如何学习参数的哲学?

如果你无法获得真实世界的参数,你可以:

  1. 深入研究案例:网上有大量的商业案例研究。选择一个与你感兴趣的行业相关的。试着理解业务目标,并集思广益,找出可能衡量成功的指标。
  2. 启动理论项目:设想一个假想的产品或服务。成功是什么样子的?为成功定义kpi。你甚至可以与同事或导师讨论以获得反馈。
  3. 阅读科学论文:我最近钻研了Alex Deng和Xiaolin Shi的论文(https://exp-platform.com/Documents/2016KDDMetricDevelopmentLessonsDengShi.pdf),这是我对度量框架研究的一部分。我发现它信息量很大,适用于现实世界的案例,我将它推荐给所有从度量学起步的人。

对于已经工作的人,你可以:

  • 参与跨职能协作:与公司的产品经理或业务战略家合作。了解更广泛的业务目标,并集思广益,找出与这些目标一致的潜在kpi。
  • 回顾过去的项目:回顾过去的项目或实验。设定的指标是否有效?他们是否达到了预期的效果?反思过去的经历是一个很好的学习工具。
  • 寻找导师:如果你的组织中有人特别擅长设定指标,可以考虑向他们寻求指导。定期讨论可以帮助你改进度量方法。

参数不是一成不变的。随着业务目标的发展,你的指标也应该如此。

图片由作者提供

虽然你的数据科学魔法是必不可少的,但你使用的魔杖和咒语——你的代码——需要锋利而有力。

经验8—完善你的编程技能,以便更好地解决个人和团队中的挑战

让我们来探讨一下这需要什么:

  1. 代码编写的效率:能够编写有效的代码是有价值的,但效率不仅仅是速度。它是关于创造最佳工作的解决方案,明智地使用资源,并且可以很容易地被其他人理解。
  2. 精通Python和SQL:这些是许多数据科学家的面包和黄油。确保你不仅熟悉它们,而且对它们的错综复杂了如指掌。
  3. 大数据平台:随着数据的增长,其复杂性也在增加。BigQuery或AWS等平台在处理大数据方面处于领先地位。熟悉这些平台可以提升你的简历,让你看起来“随时准备行动”,从而让你被录取。
  4. 代码组织和文档:干净、组织良好的代码不只是为你准备的。这是给所有将来可能接触到你作品的人的。在编写可共享代码时,请确保学习了最佳实践。
  5. 与Git协作:数据科学不是一个人的努力。共享和存储你的代码是必不可少的,而像Git这样的平台可以无缝地实现这一点。除了“了解”Git之外,还要尝试了解提交消息、分支和合并的最佳实践。我不觉得Git特别简单,但它可以改变游戏规则。
  6. 持续学习:技术领域发展迅速。库不断更新,新工具不断涌现,方法也不断变化。保持更新不仅是有益的,也是必要的。确保你为探索留出时间,以免过多地退出游戏。
图片由作者提供

确保你始终将所有内容与潜在的业务目标联系起来。这是最宝贵的技能。

科技公司首先是企业,所以我们所做的一切都与推动全球商业目标有关。每个数据、每个分析和每个建议都应该与更大的业务愿景产生共鸣。

你将在你的整个数据科学职业生涯中学习这一点——它本身就是一个旅程。

为了展示你的杀手级商业头脑,确保你练习解决植根于现实世界业务场景的数据问题。这些都是你最需要在简历上强调的。

考虑将它们添加到你的Github存储库(你将链接到你的简历中),以及详细说明你的策略,见解和建议。这样,他们就知道谁是老大了——我是说游戏中的巫师。

总结——在申请技术职位之前磨练这些技能可以增加你找到梦想工作的机会

当然,这意味着你必须确保在简历中突出它们,否则他们怎么会知道你的神奇能力呢?所以确保你通过引用例子和链接项目来说明你所有的“魔法”。

这就像无法传达伟大的见解一样——如果你不能以一种令人信服的方式分享它,那么做任何事情都没有意义。

1. 学习高级数据处理和探索性数据分析(EDA)

  • 专注于掌握SQL的高级功能,以磨练你的准确性和处理复杂查询的能力。
  • 回顾统计概念和概率理论,以提高你的EDA和捕捉异常。

2. 培养你用视觉来讲述引人入胜的故事的技能

  • 熟悉你可以使用的不同类型的视觉效果,以及它们的不同用例。
  • 练习使用不同的可视化库,磨练你的风格。
  • 尝试使用仪表板工具,如Tableau、Power BI、Data Studio等。

3. 加深你对建模和预测统计的掌握

  • 复习你的数学基础。
  • 探索机器学习以外的统计学在商业用例中的其他应用。

4. 熟悉A/B测试的基础知识

  • 复习假设检验、检验统计、样本量计算、暴露、最小可检测效应等概念。
  • 模拟你自己的A/B测试,并在线练习。

5. 学习度量框架背后的哲学

  • 了解如何成功设置指标。
  • 如果你是一名学生或不从事数据科学工作,你可以深入研究案例,启动理论项目,阅读科学论文。如果没有,你也可以和你的同事合作,回顾过去的项目,或者找一个导师。

6. 完善你的编程库

  • 学习如何在SQL和Python上编写高效的代码,这些代码可以在Git上被同伴共享和阅读。
  • 尝试使用大数据平台来提升简历。
  • 不断了解科技和人工智能的最新趋势。

感谢阅读,干杯!希望你喜欢这篇文章。你还可以订阅我们的YouTube频道,观看大量大数据行业相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/

原文作者:Khouloud El Alami
翻译作者:Qing
美工编辑:过儿
校对审稿:Jason
原文链接:https://towardsdatascience.com/dont-apply-to-tech-without-mastering-these-6-must-have-data-science-skills-a-spotify-data-8b1b7b8cc0ba