数据科学访谈:概率与统计
要研究的主题和 20 个要检查的问题
布雷特·乔丹在 Unsplash 上的图片
概观
概率和统计是每个数据科学家都应该熟知的重要领域。所有数据分析的基础是概率和统计,它们构成了发展和评估假设的批判性思考的基础。
不要指望很快学会所有的主题,许多主题涉及许多子主题,这些子主题本身就是一个终身学习的过程,但一般来说,拥有强大的统计背景对大多数数据科学面试来说很重要。这篇文章将提供一些非常高层次的主题和两个主题中的 10 个示例问题。讨论的问题来自 https://datascienceprep.com/的,涵盖了顶级科技公司的面试问题。
概率基础和随机变量
概率的开端是从思考样本空间、基本计数和组合原理开始的。虽然没有必要了解组合学的所有细节,但了解基础知识和简化问题的某些方法是有帮助的。这里的一个经典例子是“星条”计数法。
另一个要研究的核心话题是随机变量。了解期望、方差、协方差等很重要。以及基本的概率分布。无论是做简单的例子还是专注于应用方面,熟练掌握基本计算通常会对面试很有帮助。
概率分布
对于随机变量建模,了解各种概率分布的基础知识是必不可少的。理解离散和连续的例子,结合期望和差异,是至关重要的。采访中讨论的最常见的分布是均匀分布和正态分布,但也有许多其他众所周知的特定用例分布(泊松分布、二项式分布、几何分布)。
大多数情况下,知道基本知识和应用程序就足够了——抛硬币属于哪一种情况?等待一个事件呢?诸如此类。然而,能够对期望值,方差,或者其他更高的矩进行求导并没有坏处。这很可能会出现,尤其是如果面试非常注重数据的话。
假设检验
这是统计推断背后的支柱,可以分解成几个主题。第一个是中心极限定理,在研究大样本数据时有重要作用。接下来包括假设检验的核心要素:抽样分布,p 值,置信区间,I 型和 II 型错误,等等。理解这里的数学细节对于掌握底层机制是很重要的。每一个都有重要的数学细节需要理解,还有计算问题之外的应用。最后,值得看看各种涉及比例的测试,以及其他假设测试。
这些概念中的大多数在 A/B 测试中起着至关重要的作用,这是面试中经常被问到的话题,也是所有实验的基础。因此,不仅要理解技术细节,还要从概念上理解 A/B 测试是如何操作的,假设是什么,可能的陷阱,在实际产品中的应用等等,这些都是很有用的。
建模
凭借对概率分布和假设检验的深刻理解,建模大量使用了这两种方法,并添加了特定的理论概念和技术。由于这是一个相当宽泛的术语,我们将称之为建模,因为这些领域通常与 ML 有很强的统计交集,并且包括诸如线性回归、最大似然估计、贝叶斯统计等主题。其中的每一个都会涉及许多数学细节和其他理论细节。
在许多实际应用中使用的统计方法的理论基础中,每个领域都起着重要的作用。对于专注于建模和机器学习的面试来说,了解这些话题是必不可少的。
概率问题
- 你和你的朋友正在玩游戏。你们两个将继续扔硬币,直到出现序列 HH 或 TH。如果 HH 先出现,你就赢了。如果 TH 先出现,你的朋友就赢了。你赢的概率有多大?
- 七场系列赛到 7 场的概率是多少?
- 假设你画一个圆,随机选择两个和弦。那些弦相交的概率是多少?
- 1/1000 的人患有某种特定的疾病,如果你患有这种疾病,有一个测试是 98%正确的。如果你没有这种疾病,有 1%的错误率。如果有人检测呈阳性,那么他们患病的几率有多大?
- 有 50 张 5 种不同颜色的卡片。每种颜色都有编号从 1 到 10 的卡片。你随机抽取 2 张牌。它们不是同一颜色也不是同一号码的概率是多少?
- 西雅图的三个朋友,每个人都告诉你下雨了,每个人都有 1/3 的概率说谎。西雅图下雨的概率有多大?假设西雅图任何一天下雨的概率是 0.25。
- 假设你掷三个骰子,一个接一个。你以严格递增的顺序获得 3 个数的概率是多少?
- 在看到第一张王牌之前,你希望从一副标准牌中抽出多少张牌?
- 假设你得到一枚不公平的硬币,不知道是正面还是反面。你如何用这枚硬币产生公平的赔率?
- 假设您有 N 个参数为μ和σ的正态分布的独立同分布图。那些抽牌中 k 大于某个值 Y 的概率是多少?
统计问题
- 用通俗易懂的语言描述 p 值。
- 假设您正在运行多元线性回归,并且相信有几个相关的预测因子。如果回归结果确实相关,它们会受到什么影响?你会如何处理这个问题?
- 解释权力背后的统计背景。
- 描述 A/B 测试。有哪些常见的陷阱?
- 求均匀分布 U(a,b)的均值和方差。
- 你从均匀分布[0,d] n 次取样。你对 d 的最佳估计是多少?
- 推导几何分布随机变量的期望。
- 一枚硬币被抛 1000 次,550 次都是正面朝上。你认为硬币有偏差吗?为什么或为什么不?
- MLE 和 MAP 有什么区别?用数学描述一下。
- 给定一个随机伯努利试验生成器,如何返回从正态分布中采样的值?
感谢阅读!
如果你有兴趣在数据科学面试中进一步探索概率和统计,请查看这份简讯,它每周三次向你发送练习题。
数据科学访谈:SQL
SQL 技术指南和 10 个需要检查的问题
图片由 Alexandra Acea 在 Unsplash 上拍摄
概观
当你听到“数据科学家”时,你会想到建模、有见地的分析、机器学习和其他酷词。所以,让我们不要拐弯抹角:数据库和 SQL 不是数据科学家最“有趣”的部分。这可能不是你面试时最担心的。但是也就是说,因为您将大量使用数据,这意味着您将编写许多查询来检索数据并将其转换为有意义的数据。
这篇文章将在数据科学访谈中提供 SQL 的技术指南。讨论的问题来自这个数据科学采访时事通讯,其中有来自顶级科技公司的问题,并将涉及到即将出版的书。
一般工作流程
大多数工作流分析的第一步都涉及到快速分割 SQL 中的数据,因此能够高效地编写基本查询是一项非常重要的技能。尽管许多人可能认为 SQL 只涉及选择和连接,但强大的 SQL 工作流还涉及许多其他操作符和细节。例如,利用子查询很重要,它允许您操作数据的子集,通过这些子集可以执行后面的操作,而窗口函数允许您在不使用 GROUP BY 显式组合行的情况下剪切数据。SQL 中提出的问题通常对手头的公司非常实用——像脸书这样的公司可能会问各种用户或应用分析,而像亚马逊这样的公司会问产品和交易。
基本命令
这里有一些你绝对应该知道的基本但重要的 SQL 命令。让我们首先讨论它们是做什么的——稍后您将通过示例看到实际的语法和代码。
- CREATE TABLE:该命令在关系数据库中创建一个表。您可以使用这个命令定义一个表的模式(这是可选的,取决于您使用的数据库,例如 MySQL)。
- INSERT:这将一次向给定的表或一组行中插入一行。
- 更新:当您需要修改已经存在的数据时,使用该命令。
- 删除:从数据中删除一行(或多行)。
- SELECT:从表中选取和获取某些列。这在大多数查询中使用。
- 内部连接:将多个表组合在一起,它将保留两个表中列值匹配的行。单词 INNER 是可选的,很少使用(通常省略)。
- 左外连接:通过匹配提供的列将多个表组合在一起,但保留连接的第一个表中的所有行
- 完全外部连接:通过匹配列将多个表组合在一起,但保留所有行(外部连接是可选的)。
- GROUP BY:对指定列或一组列中具有相同值的行进行分组/聚合。
- 其中:在应用任何分组之前,提供筛选条件。
- HAVING:在应用任何分组后,提供筛选条件。
- ORDER BY:按特定的一列或多列对结果进行升序或降序排序。
- DISTINCT:仅返回不同的值。
在实践中,面试官会评估你能否回答一个简单的问题(通常是一个业务用例),并提出正确的问题。
有用的花絮
一般来说,SQL 查询会涉及到以下几个部分:
- 聚合:对结果行集使用 COUNT()、SUM()或任何聚合函数
SELECT COUNT(*) FROM users..
2.连接:常用于多个表之间的查询。例如,下面是用户名花费的总时间:
SELECT users.name, SUM(sessions.time_spent) AS total_time_spent FROM users u JOIN sessions s ON u.user_id = s.user_id GROUP BY 1
3.过滤:有各种方法来测试相等性,其中最常见的是使用=和<>(不等于)、or >和
SELECT * FROM users WHERE username <> 'unknown' OR username LIKE '%123%'
4.公用表表达式(cte)和子查询:
CTEs 允许您定义一个查询,然后在以后使用别名引用它——对于分解大型查询或者对于编写的各种查询有自然顺序的情况非常有用。例如,我们可以对用户子集进行快速 CTE,然后使用这些特定用户进行简单分析:
WITH (SELECT * FROM users WHERE join_date > '2020-01-01') AS u SELECT u.name, SUM(sessions.time_spent) AS total_time_spent FROM u JOIN sessions s ON u.user_id = s.user_id GROUP BY 1
子查询内嵌在查询本身中,只能使用一次:
SELECT * FROM users AS u JOIN (SELECT user_id, time_spent FROM sessions WHERE session_date > '2020-01-01') AS s ON u.user_id = s.user_id
查询问题通常围绕着一组与公司相关的表——在脸书是用户和使用情况表,在优步是乘客和司机表,等等。因此,除了熟悉查询之外,理解数据库的基本概念也很重要(将在下面介绍):主键、外键、索引等等。这样做的一个好方法是考虑公司应该使用的潜在表,以及哪些操作是有用的。
例如,想象你在脸书工作,有用户和帖子以及对帖子的反应。这些表看起来会是什么样子,你用来连接表的外键是什么?表中的哪些列将被索引,为什么?
窗口功能
窗口函数是跨一组行进行计算的函数(像聚合函数一样),但不将这些行分组(像聚合函数一样)。它们涉及一个聚合函数和一个 OVER 子句,您可以通过使用 PARTITION BY 来缩小窗口:
SELECT *, SUM(time_spent) OVER
(PARTITION BY user_id ORDER BY join_time ASC)
FROM sessions
在这个特定的示例中,我们获得了会话数据中行级别花费的总时间(不需要按每个 user_id 分组)。
请注意,您不能在同一个查询中使用窗口函数和聚合函数,但是它们在各种情况下都很方便。当您看到需要聚合时,您会希望让它们参与进来,但是要维护行。
10 个 SQL 面试问题
- 假设你有一个关于应用分析的表格(应用标识,事件标识,时间戳)。写一个查询,得到 2020 年每个 app 的点击率。
- 假设给你一个按设备分类的观众情况表(用户标识、设备类型、观看时间)。将“移动”定义为平板电脑和手机的总和。编写一个查询来比较笔记本电脑和移动设备上的收视率。
- 假设您有一个来自用户的收入表(user_id,spend,transaction_date)。编写一个查询来获取每个用户的第三次购买。
- 假设您有一个按产品类型(order_id、user_id、product_id、spend、date)划分的支出活动表。编写一个查询,按时间顺序计算每种产品在一段时间内的累计花费。
- 假设给你一个用户发推文的表格(tweet_id,user_id,msg,tweet_date)。编写一个查询来获取 2020 年内发布的 tweet 计数的直方图。
- 假设您有两个表:1)用户(user_id,date)和 2)用户帖子(post_id,user_id,body,date)。编写一个查询来获取用户发布的帖子数量的分布。
- 假设您有一个按产品类型(order_id、user_id、product_id、spend、date)划分的支出活动表。编写一个查询,按时间顺序计算每种产品在一段时间内的累计花费。
- 假设您有一个关于用户操作的表(user_id、event_id、timestamp)。编写一个查询,按月获取活动用户保持率。
- 假设您从用户那里得到一个会话表(session_id,start_time,end_time)。如果一个会话与另一个会话在开始和结束时间上重叠,则它们是并发的。编写一个查询来输出与最大数量的其他会话并发的会话。
- 假设您有两个表,分别是 1)用户注册(user_id,signup_date)和 2)用户购买(user_id,product_id,purchase_amount,purchase_date)。编写一个查询来获取上周加入的用户的转换率,这些用户从那以后至少购买了一件商品。
感谢阅读!
如果您有兴趣在数据科学访谈中进一步探索 SQL,请查看这份简讯,它每周三次向您发送练习题。另外,请留意即将出版的书!
数据科学是一个谎言
你一直被欺骗着
所以你认为你可以预测未来…
很难做出预测,尤其是对未来的预测
— 丹麦谚语
数据科学就是为预测创建模型(并围绕数据创造故事,稍后会详细介绍)。逻辑似乎很可靠:我们有数据,我们发现模式,我们将这些模式投射到未来,我们获利。这背后的理论一点也不新:它被称为统计学,并且至少已经流传了两个世纪。随着时间的推移,许多术语来描述预测任务的一些方面,如数据挖掘、分析、商业智能、运筹学和房间里最新的大象,称为数据科学。但是让我们不要深究statistics == data_science
这个话题,也不要对那些为了从数据中获取信息的过程而创造出来的无数流行语吹毛求疵。我想谈一些更现实的东西。
TL;大卫:你无法预测未来。是的,你已经知道了。尽管如此,你还是假装你在一次会议上展示了那张漂亮的图表。你相信所有这些数据中一定有一些知识。稍微有点错误的地图总比没有地图好,对吧?
纳西姆·塔勒布在他最著名的书中,用了一个简单的比喻来证明我们以前的知识在预测未来方面是多么的脆弱。几个世纪以来,旧世界的人们认为黑天鹅不存在,因为他们从未见过黑天鹅。只有当第一批探险者到达澳大利亚时,他们才意识到天鹅可能有黑色的羽毛。
这就足以推翻流传了几个世纪的“白天鹅理论”:一只黑色的家禽。这不是一个新的理念。哲学家卡尔·波普尔(1902-1994)将科学理想化为伪造理论并且从不宣称它们是真实的事业。波普尔说,理论只能是错误的,因为我们需要无限的证据来证明理论的完全真实性,而这是不可能的。
我几乎能听到你说*“不错的鸟类哲学,伙计,可惜我生活在勇敢的现实世界里!”*。所以让我们实际一点,好吗?看看国际货币基金组织(IMF)2020 年 1 月的 GDP 增长预测:
国际货币基金组织对截至 2020 年 1 月的 GDP 增长预测
以下是 2020 年 4 月的预测:
国际货币基金组织对截至【2020 年 4 月的 GDP 增长预测
他们怎么能在几个月内如此突然地改变自己的预测呢?如果你在文章发表后不久读到这篇文章,你可能知道答案。2019 年 12 月 31 日,中国当局报告了武汉市发生*“连续系列不明原因肺炎患者”*,武汉市将在几周内被命名为新冠肺炎,并被世界卫生组织认为是疫情。通过人类接触传播,它将关闭几乎整个世界的经济。
国际货币基金组织是预测经济的主要机构之一,它可以如此迅速地改变主意,这一事实应该会让你对你可能遇到的任何预测产生怀疑。如果你碰巧是一个所谓的“数据科学家”,我希望你也把这种怀疑应用到你自己的预测中。
你可能会辩称,IMF 从未打算完美预测未来。他们的预测仅仅是对可能情况的估计,以帮助决策者。我同意你,但那不是重点。关键是,一个有可能将持续的经济增长转变为疯狂的过山车的事件根本没有被考虑在内。在接下来的几个月里,他们的“单纯估计”错过了对任何决策者来说最重要的事情。国际货币基金组织这样做不是因为无能或恶意,而是因为他们不可能预料到这一点。这就是塔勒布想说的:最重要的事件是无法预测的,因为我们没有导致它们发生的信息。数据既不隐藏也不难以获取。就是不在那里!
所以,祝你好运,在下一次疫情、自然灾害或热核战争之前几周,你要知道,这些事件才是真正重要的。对于黑天鹅来说,数据——即使你称之为大数据——也帮不了你。
为什么我还是不富裕?
股票市场预测了过去五次衰退中的九次。
—保罗·萨缪尔森
如果你仍然被数据科学的魔力所诱惑,你应该马上停止你正在做的一切。是的,别再看这篇文章了。把你的时间花在更有利可图的事情上:股票市场。
对于数据科学家来说,没有比股票市场更好的场景了。有大量的数字数据,公开可用且格式良好。事实上,一些关于机器学习的介绍性文本都是以股市预测为主要任务的。继续努力,尽你所能建立最好的模型。如果你的预测是正确的,你就有资格赚一大笔钱。卖出下跌的股票,买入上涨的股票。冲洗并重复。我已经可以想象你坐在自己的私人飞机上。
可悲的是,这是行不通的。我敢打赌。
根据 T2(一家跟踪全球市场股票价值平均值的公司)的说法,“积极管理的基金在短期和长期内往往表现不佳”。主动管理型基金是那些雇人预测市场趋势并建议应该买入或卖出哪只股票的基金(如果你愿意,你可以称他们为金融数据科学家)。尽管如此,他们还是不能超过他们的基准,这意味着任何人只要在市场上买一点股票就能获得平均回报,就会做得更好。
试图利用过去的数据预测股票市场在交易中有着悠久的传统,被称为技术分析(也被称为更好的名字图表)。这是一个有争议的话题,直到今天,一些人还信誓旦旦地说这是有效的。他们认为,已经证明市场存在趋势,更重要的是,有一些千万富翁将他们的财富归功于对数据信号的利用。
也许他们是对的。也许股票市场的图表中有趋势。但是,80%的公司,其唯一的工作是战胜市场,不能利用这一点,即使这是真的。都是因为旧的趋势消失了,新的趋势出来了。原来世界不是静止的。事情变化太快,任何预测都变得毫无用处。在这种情况下,投资者最好根本没有地图。
数据科学方法在股票市场预测上的明显失败很能说明问题。现在将上面故事中的“股票市场”改为“公司收入”、“用户偏好”或你的老板让你预测的任何感兴趣的东西。你还对你提供的数字有信心吗?
目前的情况是,我们无法预测最重要的事情——即使它们即将发生——对于我们可以预测的不太重要的事情,我们可能无法从中提取任何价值。但是如果我们设法产生好的、可操作的预测呢?
数字和叙述
未来无法预测,但未来可以被发明。
—丹尼斯·加博尔
【好的】你说“我还是想玩我的玩具,因为,如果有的话,它们在正常时间工作”。我问:他们有吗?
正如我前面所说的,我们从数据中提取信息的业务已经持续了至少整整两个世纪。所以我们一定非常擅长预测所谓的正常时期的事情。如果我们称某人为专家,那么,他一定是他所在领域的最佳预测者之一,对吗?
Philip Tetlock 调查了这种情况是否属实,并询问了许多专家对未来重大事件的预测。不仅专家的表现和外行人几乎一样,所有人都勉强胜过随机猜测。
为什么我们仍然称一个记录如此糟糕的人为专家?我的理论是,虽然那些人不太擅长预测,但他们擅长创造叙事*。他们到处挑选一些数据来创造一个故事。我们喜欢故事!*
专家们也足够谨慎,不会做出事后容易引起争议的预测,而且他们从来不会精确预测时间。他们说“我们将面临困难时期”,但对困难的时间和程度却有不同的解释。
所以,是的,我们可以用数字(对别人或自己)撒谎,这里没有什么大新闻。但是,数据科学家并没有把它作为一个主要问题来解决,而是把它作为他们工作的一个重要部分。说故事,他们说。显然,现在它被认为是一种用数字说服人们的技能。或者,正如我最喜欢的 TED 演讲者所说的那样,“为了在这里添加更多的填充符,我将给出几个数字供您考虑”。
在任何公司,员工都会面临交付成果的压力。因此,在泰特洛克的意义上,数据科学家处于成为数据“专家”的特殊地位。在所有的企业政治游戏中,不难想象一些分析师会使用各种各样的讲故事技巧来提出他们能够做出的最佳预测,即使它来自一些虚假的相关性,除了测试数据集之外没有任何预测能力。
我甚至不会谈论人类在处理数据时容易受到的所有偏见,无论是在生成预测还是解释预测时。维基百科上列出的所有认知偏见都以某种形式适用于数据科学世界。
如果你是从数据科学家那里获得预测的人,问问你自己:这些数字告诉我一些重要的东西吗,或者它们是为了显示你想要的东西而特设的程序的结果?没办法说实话。这就是为什么学术界的严肃研究需要一个预注册协议。一个研究者应该在寻找答案之前问这个问题,否则他可能会被诱惑去回答数据显示的任何问题。我并不是说一家公司应该作为一项科学事业来经营。我要说的是,你至少应该接受这些数字可能是胡言乱语,不管它们背后的模型有多复杂。
结论
所有的模型都是错的,但有些是有用的。
—乔治·博克斯
归根结底,这就是数据科学家给公司带来的价值:
- 一个无法解释最重要、最意想不到的事件的预测——记住黑天鹅。
- 即使在地平线上没有意外事件,并且数据中有一些重要的模式,该模式也可能不再可用,因为当你看到它时,世界已经发生了变化——记住主动基金。
- 即使趋势看起来足够一致,可以被利用,预测也可能是精心编造的谎言的结果——记住“专家”。
这并不是说数据科学没有地位。人们会做出决定,不管是基于 T2 午餐吃了什么还是基于数据。我会选择后者。如果有的话,数据科学鼓励实验,这导致更快地发现错误。
但是如果你已经被炒作所迷惑,变成了一个数据迷,你就做错了。独角兽创业公司是否在这么做并不重要,因为(1)相关性并不意味着因果关系(也许他们的成功是出于另一个原因),以及(2)你没有考虑到所有不折不扣地遵循数据圣经的失败公司(用塔勒布的话说,它们被埋葬在字母的墓地里)。
我在这篇文章中相当讽刺的语气有一个目的:把你从数据驱动世界的乌托邦中带下来。模型的输出不能代替人类比机器做得更好的事情:思考。数据科学不是银弹,有许多缺陷,应该持保留态度。如果你假装不知道,我预测你最终会远离你每天钻研的数据池中的任何真相。
数据科学是一项团队运动
(以及我们如何在 Kaggle WiDS2020 数据马拉松中赢得第一名)
尽管官方数字在增长,但女性仍占世界数据科学家的少数。尽管学术界多次试图吸引女性,并在计算机科学课程中建立性别平等,但像 WIDS 这样的组织的活动在激发兴趣和为女科学家打开大门方面卓有成效。
一年一次,一些全球性的活动和比赛有助于提升女性在数据科学领域的地位(WIDS)。其中一项活动是名为“WiDS Datathon 2020”的 Kaggle 竞赛,这已经成为许多有抱负的女性数据科学家的传统。
今年比赛的目标是预测一名入院病人是否能在重症监护室存活(二元分类问题),假设他或她的 24 小时入院图表和个人人口统计数据的数据记录是可访问的。
竞争者被提供了来自患者的超过 130,000 个医院重症监护病房(ICU)访问记录的数据集。在一年的时间内,从阿根廷、澳大利亚、新西兰、斯里兰卡、巴西的医院到美国的 200 多家医院,跨越了不同的地理区域。
自然地,这种类型的预测模型(患者的存活概率)可以有益于在重症监护病房中治疗患者的紧急程度的优先化和决策过程。它可能有助于对抗这些单位的发病率(尽管今天,冠状病毒的情况可能会影响模型的准确性,因为训练的统计分布不包括冠状病毒感染的患者!).
这是一场发人深省的基于表格分析的比赛!来自世界各地的 951 组数据科学家参加了一场紧凑的比赛。
作为机器学习中典型的表格分类问题,我们必须在流水线的每个阶段使用一些技巧。同时,我们还为表格数据整合了最先进的集成技术和创新的测试时间扩充(TTA)。要深入了解我们的解决方案,请点击此处的链接。
ML 经典管道(来源:Nurit Cohen Inger)
在本文中,我想分享一些与数据科学开发生命周期高度相关的关键成功因素。
首要因素—团队合作
首先,谁在我们的团队里?
我们的团队由几个 Kaggle 福音传道者组成:首先是已经是 Kaggle 比赛大师的 Seffi Cohen、Dan Ofer、Noa Dagan (MD .)和我(Nurit)。让这个团队如此独特的是,所有成员都有广泛的实用数据科学背景和强大的医疗保健背景。
数据科学是一项团队运动(来源:帕斯卡·斯威尔在 T2 大学的照片)
简单概述一下我们的攻击方式,将有助于处理类似的问题:
我们的攻击计划是“分而治之”。我们将工作量分配给团队成员,每个人都专注于自己的特定任务。碰巧的是,每个部分单独在排行榜上得分都很高(交叉验证得分和排行榜)。
然而,最终——我们将不同的提交整合成一个中心管道。我们将这些模型整合到最终提交的作品中,从而得到了迄今为止最出色的分数。
以最小的重叠划分工作量,并提前计划每个结果的集成是非常重要的。
第二个因素—领域专业知识
幸运的是,我们船上有一名医生!我们的队员诺亚。
我们在管道的第一阶段投入了大量的精力,通常称为探索性数据分析(ed a)。
我们探索了 183 个独立特征(协变量)中的每一个,以及它们与二元目标变量*“医院 _ 死亡”*的相关性。这给了我们超越其他团队的优势,因为我们发现了隐藏在特征下的真正宝藏。我们竭尽全力寻找性能最佳的型号。
有了这些领域知识,我们计划了 ML 管道的下一部分;我们聪明地估算缺失值并提取新特征。所有这些都极大地提高了我们的排行榜分数!
例如,我们创建了一个名为【mosely _ dead】的“黄金”特征,它将来自不同生物功能或与生命不相容的测量的洞察力进行分组(并提供了一个出色的结果分离)。
大部分死亡和全部死亡有很大区别;大部分是死的,小部分是活的。所有人都死了,通常你只能做一件事。(来源:公主新娘)
长话短说,领域专家的参与对于在数据科学开发过程中获得更好的结果至关重要!
第三个因素—强大的功能工程
《福布斯》的一项调查声称,“数据科学家花费大约 80%的时间来准备和管理用于分析的数据。76%的数据科学家认为数据准备是他们工作中最不愉快的部分”。
清理大数据:最耗时、最不愉快的数据科学任务(来源:福布斯)
嗯,是真的。考虑到比赛的时间框架(6 周),我们花了很多时间来创建我们认为可以预见的完美功能工程程序。
健壮的特征工程是非常有益的。
我可以证明这个事实。一个模特就能让我们在这场比赛中获得第 14 名!
因此,如果你能在这个阶段分配足够的时间做到最好,即使有时它可能被认为是最不愉快的一个阶段,请放心,这将是非常有益的。
第四个因素— AutoML 工具还不够,但是…
我们尝试了各种自动机器学习(AutoML)工具。他们的成绩平平(在交叉验证阶段和排行榜上)。但是,如果您只想在致力于开发基于数据科学的项目之前尝试接受或拒绝某个假设时使用这些工具,那么所有这些工具都足够好了。我想对于一些项目来说,这些工具的结果已经足够好了。
我们确实使用了一些先进的技术来增强 H2O 管道的编码。那对我们的成功有一点贡献。我们还使用 Sparkbeyond 来“强力”提取特征。
总而言之,竞争是激烈的。获胜者是根据浮点后的第五位数字来判断的,足够好并不简单。在人类数据科学家的参与下使用 AutoML 工具的某些部分可能有帮助,也可能没有帮助。
Kaggle 竞争大约是浮点之后的第五位数(来源:Nurit Cohen Inger)
第 5 个因素——组装总是有效的
当然,我们在 100 多个不同的实验中尝试了数百个模型实例的组合。此外,新的和不规则的实现测试时间增加(TTA)的表格数据。
这个众所周知的、被证明有效的技巧在比赛中总是奏效。我们使用了不同的数据集——插补技术、特征和数据生成。此外,特征选择阶段从 7 种不同的方法进行。
因此,除了我们上面提到的强大的功能工程,这可能会使我们排在第 14 位,还有一个优雅,新颖的合奏让我们排在第一位…
外卖食品
有竞争总会推动你走向卓越,你尽最大努力,然后每天都有所改进;)
总结一下我从这次激动人心的经历中得到的收获:我认为我们的秘方是不同方法和队友的集合。两人都为在此次竞赛中成功找到数据科学问题的解决方案做出了巨大贡献。
选择正确的团队是至关重要的,因为不同的技能和专业知识给了我们不同的观点和方法。当然,准确的团队合作,因为数据科学是一项团队运动!
旧金山,我们来了!(图片来源:Nurit Cohen Inger)
努里特·科恩·英格
白天是数据和人工智能战略家,晚上是热情的卡格勒
感谢 什洛莫·卡沙尼 的启发性言论
数据科学即将开花结果。但是它的根已经在这里很久了。
“数据分析的未来可能包括巨大的进步、真正困难的克服,以及为科学和技术的所有领域提供巨大的服务。会吗?”
约翰·图基,来自《数据分析的未来》
1962 年,数学家约翰·图基在他的论文《数据分析的未来》中指出,“很长一段时间以来,我一直认为自己是一名统计学家……但随着我对数理统计发展的观察……我逐渐感到,我的主要兴趣在于数据分析……”。然后,他将数据分析描述为“一门科学,一门由普遍存在的问题而非具体主题定义的科学”。在这些话中,图基陈述了数学仅仅是一组定义好的先验真理;数据分析是一门经验科学,知识可以通过不断的实验获得。图基似乎或多或少地将统计学定义为数学和数据分析的子集。根据图基,“数理统计的个别部分必须向数据分析或纯数学寻找它们的正当性”。
我们可以看到 Tukey 的观点在今天得到了回应,因为“数据科学”一词正在成为科技界的日常行话。此外,许多老牌大学只是在过去五年才开设了“数据科学”学位课程。这些项目中的许多都是现有统计学课程的延伸。可以肯定地说,这个领域已经很快成为它自己独特的学科。图基在论文结尾对数据在未来随着计算存储能力变得更强而发挥的重要性进行了预见性的理解:“……在有些情况下,计算机使原本完全不可行的事情变得可行……在这些情况下,提供答案的速度和经济性使计算机对大型数据集至关重要,对小型数据集非常有价值”。
快进到 1994 年。商业周刊发表了一篇题为数据库营销的文章。这篇文章详细描述了 80 年代商店中使用的新的结账扫描仪技术的兴起。设想是每台扫描仪将创建一个交易记录,存储每件购买商品的数据。反过来,这可以让零售商根据客户需求和购买历史了解广告内容。然而,最终,这种结账扫描仪热潮并没有实现它的承诺。公司根本没有技术基础设施或计算能力来处理这些海量数据,更不用说从中获得洞察力了。
然而,重要的是要注意,这个实验,即使失败了,也代表了一个非常重要的概念的早期版本。它代表了利用大规模分析来预测客户需求的愿景。这是在 80 年代,那时互联网还不是主流。事实上,到了 90 年代,一些公司已经能够在这种技术处于萌芽阶段时使用它。例如,Blockbuster Video 利用其会员和交易数据库来测试一个计算机化的系统,根据以前的租赁情况推荐电影。在所有公司中,Blockbuster 是内容推荐算法的早期研究人员,这简直是异想天开!
这篇文章中的以下引文听起来几乎像是今年的一篇文章:“公司正在收集关于你的大量信息,分析这些信息以预测你购买产品的可能性,并利用这些知识来精心设计营销信息,以使你这样做”。
那么,在过去的二十年里,是什么让数据和分析在几乎每个技术组织中都扮演了重要角色呢?
曼努埃尔·盖辛格在的照片
简而言之,技术能力呈指数增长,而且是在相对较短的时间内。互联网成为企业和个人使用的主流工具。还记得收集数据的收银台扫描仪吗?在这个时代,存储海量数据基本上没有障碍。今天,我们收集了无数的数据,并且可以随时进行分析。而这些数据来源于无数独特的领域。这可能是医疗保健数据、社交媒体数据、客户数据;这样的例子不胜枚举。企业渴望利用他们的计算能力来分析这些数据,因为这是他们成功的关键。
存储和处理这些数据的计算能力如何?今天,GPU 能够以超乎想象的速度处理数据和执行数据密集型算法。⁴最重要的是,数据中心提供了异地数据存储的仓库。然后,云计算供应商可以按需向企业和个人提供这种存储。在 和 之上,全新的大数据分析范式被创造出来。实现这一目标的最著名的项目是 Apache Spark,这是一个始于加州大学伯克利分校 AMPLab 的开源实验。Spark 的出现彻底改变了大数据计算的格局;因为它完善了多机处理的范例。这允许数据分布在多个集群之间,并被并行处理,以最大化运行时效率。⁵此外,Spark 项目通过引入弹性分布式数据集(或 rdd)作为其基本数据结构,完善了 MapReduce 编程范式。⁶
这些企业的目标到底是什么?数据是“他们成功的关键”吗?
bongkarn thanyakij 在像素上拍摄的照片
嗯,可能性真是无穷无尽。数据科学几乎渗透到每个领域。⁴:虽然“机器学习”这个时髦词经常与令人兴奋的人工智能世界联系在一起,但在现实世界中,它大多只是一种向股东提供见解的手段。如前所述,用例非常丰富。
首先,数据可以对公司的广告策略产生非常积极的影响。数据分析的科学效率可以节省公司的广告费。这是因为浪费在未经计算验证的策略上的钱更少了。⁷:过去,你没有足够的数据存储能力来对如此庞大的数据集进行分析。现在,当对历史客户和交易记录进行分析时,公司可以确保他们的算法正在对需要优先考虑的确切营销策略进行分类。
接下来考虑医疗领域。也许一家制药公司想预测一种新药被采用的可能性。然后,他们可以挖掘历史索赔数据,并基于各种人口统计属性的诊断模式创建预测器。
数据甚至可以在航空安全方面取得进展。例如,西南航空公司和美国宇航局合作开展了一个文本挖掘项目,通过研究空中交通管制记录和飞机产生的数据内容来识别潜在的危险。⁸
我将暂时停止列出用例。但关键是,如果我想,我可以永远继续下去。你可以写一本关于每个业务领域和用例数据科学影响的百科全书。它对组织目标的影响已经真正地 即 深远了。无论企业的目标是提高投资回报率还是促进公众福祉,数据都会以某种形式发挥作用。
旁白:人工智能对自动化
图标信用: Freepik
以上用例比较符合 AI,机器学习,分类。但是在我们继续讨论自动化的用例之前,重要的是要注意自动化不要和人工智能混淆。而人工智能(及其子集,机器学习)旨在模仿人类可以 识别 的东西;自动化意味着不断模仿人类可以 做 的任务。换句话说,虽然人工智能算法必须对洞察力进行分类,但自动化算法必须不断模拟重复的任务。
然而,我们还必须考虑到这两者并不一定是相互排斥的,它们经常是携手合作的。说明这种想法的最佳用例是自动驾驶技术。在这种情况下,您正在自动执行长时间不间断驾驶的任务。然而,这项任务并不像简单的复制粘贴那么简单。有许多外来因素,如交通灯、标志和其他车辆。这就是人工智能被补充到组合中的地方。汽车将需要实现分类器来留意这些无关的因素,并学习如何对它们做出反应。
稍后,当我们谈到数据策略和策略的主题时,我可能会互换使用这两个术语。因为这两个术语确实不同,但它们紧密相关。既然我们已经清除了这个困惑,让我们继续更多的业务目标。
企业希望通过自动化实现什么样的结果?
照片由 Marco Verch 在 flickr 上拍摄
自动化的主要目标是纯粹的效率和生产力。据麦肯锡称,仅自动化一项就可以将全球年生产率从 0.8%提高到 1.4%。几个劳动部门已经在使用自动化。例如,澳大利亚矿业公司力拓(Rio Tinto)推出了自动化拖运卡车和钻机,极大地提高了生产率。⁴
至于长途货运,它很可能是下一个被自动化严重破坏的劳动力部门。想想美国 70%的货物都是通过长途卡车运输的。⁹:如果你可以用自动驾驶技术自动化所有卡车,让它们不间断地连续运行,那么你将拥有一个非常高效的供应链,尽管这曾经是不可能的。像这些纯粹依赖劳动密集型任务的行业,总是会看到自动化技术提高了效率。
但是自动化甚至可以应用到需要更多人际交流的行业。以客户服务领域为例。据估计,现在大多数客户服务交互都是自动化的。⁰亚马逊和花旗银行只是两家大公司,它们的客户服务基础设施在某种程度上依赖于虚拟助理。顾客服务自动化也在食品服务行业大量实施。例如,麦当劳在 2018 年制定了一项计划,到 2020 年,每个季度在 1000 家商店中增加自助服务亭。今天,我们看到了结果,因为售货亭在他们的餐馆里非常普遍。一份工作是否需要社交方面并不重要。自动化注定会以某种方式破坏它。
我们讨论了商业目标。但是“第四次工业革命”可能带来哪些负面影响呢?
罗布森·哈苏卡米·摩根在 Unsplash 上的照片
我们经常看到人工智能的出现与黑暗联系在一起。我们经常听到工厂工作和长途卡车驾驶等许多必不可少的劳动密集型工作将很快被 AI 取代。这无疑是一个需要考虑的重要伦理问题。虽然过去的工业革命创造了新的工作机会,取代了旧的工作机会,但人工智能革命似乎将彻底消除某些行业。预计取代它们的工作将是繁重的数学、计算和批判性分析。这些白领工作与他们即将取代的劳动密集型蓝领工作大相径庭。
培训老员工将会很困难,不仅因为他们正在适应全新的技能组合;而是因为他们可能根本没有兴趣学习这些新技能。想想这样一个事实,美国的卡车司机一般是接近退休的中年人,可能没有大学文凭。在这个年龄,这些人大概没有学习编程的欲望。最重要的是,他们正处于人生的关键时刻,这份工作是他们身份的重要组成部分。当我们经历人工智能革命时,这些都是需要解决的问题。我甚至可以说,政府需要制定人工智能战略来应对这些现象。
政府和公司如何合作实施人工智能战略?
插图鸣谢:由rawpixel.com在 Freepik 上设计
我们已经通过人工智能和自动化的主要优势——生产力——广泛地讨论了它们。但现在,我们必须将这一点与潜在的伦理含义相调和。根据麦肯锡的说法,政策制定者实际上有很大的动机为了他们的经济和选民的福祉而接受这些技术:“这种(生产率增长)将有助于确保未来的繁荣,并创造可用于帮助工人和社会适应这些快速变化的盈余”。⁴
换句话说,生产力和效率可以导致剩余和繁荣。随着商品和服务产出的快速增长,私人和公共部门都会产生经济盈余。麦肯锡提出了“公私合作”的理念,这种理念可以通过数字化让发展中国家摆脱贫困。⁴:但我想更进一步,说这种伙伴关系同样可以帮助发达国家。
毕竟,来自这些项目的更多私人收入可能意味着政府的更多税收,这些税收可以通过各种政府运营的举措回馈给人民。还记得对某些蓝领工人永久失业的担忧吗?政府也许可以用这笔钱为那些失业工人提供社会安全网或普遍的基本收入。⁴:也许这些下岗工人中的一部分可以选择参加一些政府资助的 STEM 培训项目。更好的是,这些项目也可以提供给年轻学生,让他们为日益增长的劳动力做好准备,这些劳动力迫切需要新的人才。
世界各国都已经在实施 AI 战略。2018 年,韩国承诺提供 20 亿美元用于人工智能研究、就业、人才和政府与“人工智能领域的初创企业和公司”的合作。同年,谷歌在加纳开设了非洲首个人工智能研究机构,致力于“与当地大学和研究中心合作,并与政策制定者合作研究人工智能在非洲的潜在用途”。⁴虽然人工智能革命确实有一些沉闷的影响;如果实施得当,它可以提供一个新的繁荣周期,让企业、政府和公民都能交换想法和收入。
John Tukey 所说的“数据分析的未来”是什么?
数据、人工智能和自动化将成为自计算机和互联网以来最大的技术颠覆者。它们不仅会扰乱技术领域,还会决定未来几年政策的走向。我们探讨了技术能力的快速提升开启了数据时代的观点。但这回避了一个问题:这些数据驱动的技术是如何在所有行业和企业中如此一致地崛起的?
每个公司都试图走在新技术的最前沿。亚马逊使电子商务成为主流。因此,实体公司开始大量投资于自己的电子商务运营,以便跟上步伐。同样,谷歌、脸书和 LinkedIn 等科技巨头显然拥有极其强大的数据基础设施。这促使实体店之王沃尔玛(Walmart)等公司开发自己的数据战略。难怪从 1990 年到 2010 年,分析和数据科学领域的职场新人比例增加了 10 倍。⁵,这只会越来越多。
我将引用谷歌首席经济学家哈尔·瓦里安 2009 年的预言来结束我的演讲:“我一直在说,未来十年最性感的工作将是统计学家。人们认为我在开玩笑,但是谁会想到计算机工程师会是 20 世纪 90 年代最性感的工作呢?获取数据的能力——能够理解它、处理它、从中提取价值、可视化它、交流它——将是未来几十年非常重要的技能。⁶,这是真的。目前,有许多学生在学习,为甚至还不存在的工作做准备。数据、人工智能和自动化的主流性质相对较新。一旦这些工作有了成果。它们将是丰富的,而且对我们整个社会的运作是必不可少的。
引用和来源:
[1]:约翰·w·图基,《数据分析的未来》《数理统计年鉴》,第 33 卷,第 1 期,1962 年,第 1–67 页。,doi:10.1214/aoms/1177704711。
[2]:贝里,乔纳森。“数据库营销。”Bloomberg.com,彭博,1994 年 9 月 5 日,www . Bloomberg . com/news/articles/1994-09-04/database-marketing。
[3]:按,吉尔。“数据科学的非常短的历史。”福布斯,福布斯杂志,2014 年 10 月 15 日,www . Forbes . com/sites/Gil press/2013/05/28/a-very-short-history-of-data-science/。
[4]:“分析、人工智能和自动化的现在和未来。”McKinsey.com,麦肯锡&公司,2019 年 5 月 11 日,www . McKinsey . com/featured-insights/digital-disruption/whats-now-and-next-in-analytics-ai-and-automation。
[6]:“弹性分布式数据集(RDD)。”Databricks.com,Databricks,2020 年 5 月 15 日,databricks.com/glossary/what-is-rdd.
[7]:阿格拉瓦尔,AJ。“为什么数据对公司很重要,为什么创新即将到来。”Inc.com公司,2016 年 3 月 24 日www . Inc . com/aj-agr awal/why-data-is-important-for-companies-and-why-innovation-is-the-way . html
[8]:“数据挖掘工具让飞行更安全、更高效。”Nasa.gov,美国宇航局,2013 年,spinoff.nasa.gov/Spinoff2013/t_3.html.
[9]:韦特海姆,乔恩。"自动化卡车运输上路了,这是一个技术里程碑,可能会扰乱成千上万的工作岗位."Cbsnews.com,哥伦比亚广播公司新闻,2020 年 3 月 15 日,www . CBS News . com/News/无人驾驶卡车-可能-尽快-2021-60-minutes-2020-03-15/扰乱卡车运输业。
[10]:施耐德,克里斯蒂。“人工智能驱动的自动化客户服务是未来的 10 个理由。”沃森博客,IBM,2017 年 10 月 16 日,www . IBM . com/blogs/Watson/2017/10/10-reasons-ai-powered-automated-customer-service-future/。
[11]:哈夫纳,乔希。“麦当劳:你从触摸屏售货亭买的东西比一个人还多。因此,期待更多的售货亭。”Usatoday.com《今日美国》2018 年 6 月 7 日讯www . USA Today . com/story/money/nation-now/2018/06/07/McDonalds-add-kiosk-citing-better-sales-over-face-orders/681196002/。
[12]:基尔卡尔,肖恩。“人口统计学正在改变卡车司机管理.”【Fleetowner.com】,FleetOwner,2017 年 9 月 20 日,www . FleetOwner . com/resource-center/driver-management/article/21701029/demographics-is-changing-truck-driver-management。
[13]: 政府将在国家人工智能项目上花费 2.2 万亿韩元。朝鲜中央日报,2018 年 5 月 15 日,koreajoongangdaily.joins.com/news/article/article.aspx?aid=3048152。
[14]:克拉布特里,贾丝汀娜。"谷歌的下一个人工智能研究中心将是它在非洲大陆的第一个。"Cnbc.com,美国消费者新闻与商业频道新闻,2018 年 6 月 14 日,www . CNBC . com/2018/06/14/Google-ai-research-center-to-open-in-加纳-非洲. html.
[15]:帕蒂尔,DJ。“建立数据科学团队。”2011 年 9 月 16 日,radar.oreilly.com/2011/09/building-data-science-teams.html?奥赖利,Radar.oreilly.comutm_source=feedburner。
[16]:“哈尔·瓦里安谈网络如何挑战管理者。”McKinsey.com,麦肯锡&公司,2009 年 1 月 1 日,www . McKinsey . com/industries/technology-media-and-telecom munications/our-insights/Hal-varian-on-how-the-web-challenges-managers。
数据科学正在成为软件工程
苹果 | 谷歌 | SPOTIFY | 其他 | 剪辑
亚当·沃克斯曼在 TDS 播客上
编者按:迈向数据科学播客的“攀登数据科学阶梯”系列由 Jeremie Harris、Edouard Harris 和 Russell Pollari 主持。他们一起经营一家名为sharpes minds的数据科学导师创业公司。可以听下面的播客:
当我想到过去几年我在数据科学中看到的趋势时,也许最重要也最难忽视的是对模型的部署和生产的日益关注。当然,并非所有公司都需要将模型部署到生产中,但在那些需要的公司,数据科学团队在提供软件工程和机器学习解决方案方面面临越来越大的压力。
这就是为什么我想和 Foursquare 的核心技术负责人 Adam Waksman 坐下来谈谈。Foursquare 是一家建立在数据和机器学习基础上的公司:它们是第一批完全规模化的社交媒体推荐服务之一,获得了真正的牵引力,现在帮助超过 5000 万人在世界各国找到餐馆和服务。
我们的谈话涵盖了很多领域,从软件工程和数据科学之间的互动,到他对新员工的要求,再到整个领域的未来。以下是我的一些最佳建议:
- 软件工程师和数据科学家的技能正在趋同,至少在面向产品的数据科学应用方面是如此,比如构建推荐系统。数据科学家被要求负责部署和生产,软件工程师被要求扩展他们的技能集以包括建模。
- 作为一名数据科学家,确保你明智地利用时间的最佳方式是将数据科学视为一项产品开发职能。你的模型必须有多精确?尽可能让你的用户体验顺畅,可能不会更好。
- 历史上,数据科学和软件工程并没有像今天这样紧密结合,特别是在 Foursquare 这样的公司。随着时间的推移,集成似乎可能会继续,因此数据科学家开发良好的软件工程技能比以往任何时候都更重要。
- 然而,商业智能和分析可能仍然是软件工程和数据科学之外的一个独立部门,因为它对于促进高层战略决策是必要的。
- 数据科学经常被过分强调的一个方面是模型调优。作为一名数据科学家,你很少会专注于让一个模型好 1%;通常,获得一个“足够好”的模型并呈现在用户面前要重要得多,这就是为什么软件工程和部署技能比模型调整越来越重要。
- 创业公司和大公司在招聘时有非常不同的风险。因为他们需要快速招聘,初创公司在招聘新的数据科学家时容易犯更多的假阳性错误(所以他们愿意冒险聘用更多不寻常的申请人),而企业规模的公司,职业生涯更长,角色更稳定,倾向于聘用他们有信心会留下来的人。
你可以在推特上关注我!我是 @jeremiecharris 😃
夹子
我们正在寻找能与我们的观众分享有价值的东西的客人。如果你碰巧知道谁是合适的人选,请在这里告诉我们:【publication@towardsdatascience.com】T4。
数据科学已经死了。商业科学万岁!
商业科学
任何人都可以从不起眼的鲑鱼身上学到的 5 课
数据是一个不可靠的朋友,它几乎没有任何东西是科学的。那又怎样,数据科学?
在过去的 5 年里,我已经面试了 1000 多名数据科学家候选人,争夺 Evo Pricing 的一系列职位。在这个过程中,我了解到媒体正在描绘一个关于这个职业的基本谎言:向现成的算法扔数据真的不是重点。
从根本上重新思考是合适的,而且很可能早就应该进行了。
70 年的历史,2 段 1 图
从本质上来说,数据科学是一系列广泛的数字处理活动的崇高名称,这些活动大多是很久以前发明的,但最近通过应用大大增强的技术设备获得了新的生命:更多的数据、更强的处理能力、更合理的结果以及更低的价格。
随着存储和处理数据的成本下降,收集的数据量上升:非常简单的供求法则,或者你可以称之为数据的价格弹性。价格下降,交易量上升。有人将不得不对所有这些东西做些什么。进入数据科学。
围绕数据科学的常见误解
Xcdk 漫画由 Nicholas Oleh 在 blogspot (CC)上创作
什么是数据科学?
根据伯克利的说法:对专业技术人员来说,这是最有前途和最受欢迎的职业道路之一。
在我看来,“数据科学”这个名字暗示了在寻找问题的过程中作为解决方案的特殊方法。这里,一些数据;我们能用它做什么,任何事?
实际上,这听起来不太理想,不仅是为了建立自己的职业生涯,也是一种商业策略:让我们投入大量资金收集所有这些数据,总有一天会有好的结果。
不幸的是,19 世纪的工业革命让我们的学校和大学培养了大量的蓝领工人,以便高效地为预先包装好的问题提供统一的答案;从那以后几乎没有什么变化。
不如训练人类问正确的问题,让机器找到答案?
数据科学可能是职业生涯的死胡同
即使数据科学的许多风格越来越受欢迎,如人工智能和所有其他与之相关的营销宣传,该职业通常只对早期终身学习者有好处。
年薪超过 8 万英镑的良好前景听起来可能很有吸引力,但平均水平掩盖了挑战的复杂性。要想在数据方面取得真正的成功,一个人必须擅长于具体的、有影响力的和定义明确的问题,而不是成为数据方面的通才专家,或者更糟糕的是成为科学方面的专家*,从学术角度来看,后者大多已经过时了——如开篇图片所示。*
数据和算法是强有力的工具。但是,就像任何工具一样,它们的好坏取决于人们如何使用它们。
发展商业科学以取得成功
如何利用数据取得成功?关注要解决的问题,要做的工作,而不是数据。
对于那些关注盈利用例的人来说,商业科学给出了所有正确的想法:
- 待定义、研究的业务问题&已解决
- 科学、数据驱动的方法
- 业务影响:可衡量的、客观的结果。
对于非营利和其他用例,逻辑是相似的:从问题/假设开始,使用严格的方法,然后回到学习标准/问题,验证任何影响是否被证明。冲洗并重复,不要分心。
现在的问题是如何完成工作?我们可以直接从一个显然很搞笑的类比中学到很多。
三文鱼第一课:从末端开始
照片由 freejabber 拍摄
不起眼的鲑鱼,除了味道鲜美之外,在其5-10 年的寿命中也做了很多事情:它首先从末端(河口)开始,然后才回到源头(河泉)产卵/产卵,然后为下一代鲑鱼留出空间。
小鲑鱼在泉水旁边出生,然后随着它的成长向下游游去,了解海洋中发生的所有令人兴奋的事情,然后返回河流,在那里它可以坚持自己的生殖权利。
普通的数据科学家可以从不起眼的鲑鱼身上学到很多东西。花太多时间在数据上,然后游向越来越多的数据,可能会让你游得很舒服(智力懒惰),但这是一种幼稚的策略,不会带来长期的成功。
更成熟的鲑鱼会从下游开始,在开始缓慢而痛苦地逆流而上,同时逐渐缩小它们游过的数据量(水)之前,敏锐地专注于确定它们计划解决的问题(河流)以及它们想要产生的影响。
三文鱼第二课:拒绝瀑布方法
我在麦肯锡&公司做了 10 年的管理顾问。在我任职期间,我严格遵循传统的瀑布方法:前期投入大量的时间、精力和客户预算。深入研究一切。煮沸海洋,如果你愿意的话——在这个过程中,杀死所有可怜的鲑鱼!
照片由 Evo 定价 (CC)提供
总的来说,当时我的团队会制定一个初始假设,然后寻找适当的数据来证明或反驳这一点。叫做假设驱动思维。最好的情况是,一种有效的准科学方法;最糟糕的是,这是一个昂贵的确认偏差的例子,数据被用来证明一个事先已经达成共识的决定是正确的。
这一理论可能适合高度战略性的长期计划,但肯定不会让客户知道明天早上和后天该做什么,因为世界变得更快、更复杂、更混乱。正如我的董事长罗伯特·戴蒙德喜欢说的那样,企业像电影一样运行,而不是像照片一样运行。
这种方法可能会回答错误的问题,而且肯定无法创造出自我学习的反馈,而这种反馈对于在市场不断动荡的情况下继续取得成功至关重要。今天的数据是模型!
归根结底,这就是为什么敏捷开发的整个概念被发明出来。允许增量调整。
三文鱼第三课:80/20 避开熊
在每一个令人尊敬的瀑布顶端,即使是敏捷的鲑鱼也必须面对它的克星,那种毛茸茸的大野兽。
在逆流游泳时,每条鲑鱼都可能面临意想不到的挑战,显然是不可逾越的障碍,可怕的捕食者。过去看起来平静的水流变成了翻滚的瀑布,突然变得难以驾驭。
在不顾一切地试图超越自己的力量时,大马哈鱼遇到了它的克星,等待午餐的长毛大熊。
完美主义 是商业科学家的克星。
完美主义是一种让生活成为成就或外表的无尽成绩单的特质。这可能是通向不快乐的快速而持久的途径。
水(数据)可能很快成为熊咬的藏身之处。一个淹死的地方,而不是畅游的地方。最好采取不同的、更务实的方法。
80/20 是治疗方法——专注于真正重要的事情,绕过障碍,而不是试图穿过它们。游来游去,寻找躲避熊的方法。边缘案例通常对业务影响很小甚至没有影响!所以何必呢?
三文鱼第四课:少(数据)就是多(讲故事)
应该花更多的时间准备数据驱动的结果,而不是研究它们。这是更多的时间,实际上是更多的时间,而不是最后一分钟匆忙的时间。
大马哈鱼出生在水很少的地方(数据)——提出一个狭窄的问题;然后进入研究的广阔海洋,有大数据和大水帮忙;但之后又回到了小水域。因为解释一个结果意味着挑选和设计影响。
数据驱动的工作是自下而上的;但是沟通必须自上而下才能有效。
*在某种程度上,商业科学家应该**停止煮沸数据的海洋,开始思考信息:*从零开始,如何独自传达信息?从自下而上切换到自上而下模式。
不创建花哨的数据,即高度动态和混乱的数据,因此只对技术人员感兴趣。但实际上,提炼出信息。更少的数据和更多的时间来规划沟通。
有效的沟通总是从所以什么开始,因此也是从最后开始,然后再回到这个断言的百万个理由,以及支持这个结论的百万个数据点。
我强烈推荐阅读芭芭拉·明托的金字塔原理来深入了解使用事实进行有效的逻辑叙事。
三文鱼策略 5:布丁中的证据
从最后开始,从有形的影响及其衡量方法开始,是赢得认可和获得信心的关键,否则可能会被认为是模糊的算法能力 pro se 。确定黑盒是否工作需要使用。
你只能通过实际使用卫星导航来了解它的工作原理,而不仅仅是通过研究它。
我特别热衷于定价和供应链应用,在这两种情况下,最大的收获往往是在上游完成的战略工作:规划、设计。但是有一个但是。如果你不能迅速展示出有形的价值,你永远也不会接触到这类东西。
所以我建议从生命周期结束时开始,比如再订购(对于供应链)和降价(对于定价)。即使我非常清楚,例如,最好的降价是你根本不提供的,因为计划从一开始就是准确的。但是,如果没有先在一些有形的东西上赢得人心,打乱计划会有多难呢?
做一个真正的商业科学家,钱会随之而来
学习其他人都在学习的完全相同的数据科学技术,或者投资学习直觉无法与数据驱动的影响相竞争的特定、不受欢迎的业务应用程序,会更有回报吗?
先找到自己的利基,忘掉机器学习,直到你会有一个你想解决的令人兴奋的问题。离开麦肯锡后,为了开始实施我的商业科学理念,我在一个下午就自学了我需要了解的所有知识,但我真的很清楚自己想做什么吗?
在那一天之前,我可能花了十多年的时间,才达到一种专业水平,让我对自己想要处理的特定问题感到舒服。
要获得博士学位,你首先需要一个研究问题——不像理科硕士,别人会给你所有的问题。
要成为企业家,你首先需要一个独特的商业想法——不像职业生涯,别人会给你所有的问题。
这是一种人生哲学。
敢于逆流而上,而不是仅仅成为另一名数据科学家,选择追求更有成就感&回报丰厚的商业科学家职业。
快乐的鲑鱼游泳!
PS 如果对商业科学这个话题感兴趣,更多阅读与见解:
使用 4 & 9 框架检测无人提及的 20%的价格上涨,等等
towardsdatascience.com](/how-to-monitor-pricing-professionally-444ecff7a450) [## 时尚被打破了。科学正在修复它
转变 5 个核心时尚流程
towardsdatascience.com](/fashion-is-broken-science-is-fixing-it-b771b1ab5b59) [## 20 门新的商业科学课程现已免费开放
介绍 Evo 大学,第一所由公司全团队打造的人人免费大学
medium.com](https://medium.com/datadriveninvestor/20-new-business-science-courses-now-live-for-free-7c300200b566)
Get free access to your monthly summary of Business Science, new software and University-level learning:[**Free access**](https://evouser.com/register)Any questions? Feel free to connect with me on [Linkedin](https://www.linkedin.com/in/fabrizio-fantini/)
数据科学并不适合所有人
21 世纪最性感的工作可能不适合你,没关系
马里奥·普里西克在 Unsplash 上的照片
数据科学适合你吗?
2012 年,《哈佛商业评论》称数据科学为“21 世纪最性感的工作”
将近十年后,这个领域仍然没有失去它的魅力。
互联网上有成千上万的视频和文章,围绕数据科学领域描绘了一幅美丽的画面。
他们会告诉你这个领域提供的丰厚薪水和灵活的工作时间。
他们会说:“你所要做的就是学习技能 A、B 和 C。”。"报名参加训练营,学习三门在线课程。那你就准备好找一份数据科学的工作吧!”
由于围绕数据科学的大肆宣传,许多人最终对该领域的真实情况抱有不切实际的期望。
在没有做适当研究的情况下,他们最终做出了一个可能永远改变他们生活的职业决定。
这篇文章并不是要诋毁数据科学领域。我不想阻止任何人从事这一领域的职业。
我个人认为只要你投入适量的工作和时间,任何人都可以成为数据科学家。然而,你需要享受你正在做的事情。
如果你一头扎进这个领域,在对自己将要进入的领域知之甚少的情况下匆忙进行职业转换,你可能会在做自己不喜欢的事情上浪费掉生命中的几年时间。
如果你是一个有创造力、有艺术倾向的人,你会选择艺术专业还是科学专业?
我猜你会选择艺术专业,因为这是你喜欢做的事情。
当我面临做出这个决定时,由于周围的大肆宣传,我选择了追求数据科学的职业生涯。我对这个领域的内涵知之甚少甚至一无所知。
和我数据科学班上的几乎所有其他学生一样,我在选择专业之前没有做适当的研究。
对我来说幸运的是,这个决定证明是一个好的决定。我真心喜欢我的工作。但每个人都是不同的,我班上的很多学生都后悔自己的决定,想转专业。
正如我上面提到的,这一切都归结为一件事。不管你是否对你的工作充满热情。
在本文中,我将分解数据科学领域。我会给你一个清晰的描述,告诉你这个领域到底是什么,而不会提到你能得到的估计工资或者工作前景。
我将解释您可以在数据科学领域追求的不同职业道路,并描述每个领域需要什么。
如果这些角色对你有吸引力,那么无论你的职业或教育背景如何,你都应该选择数据科学。
数据科学下的角色
免责声明:“数据科学家”是一个总括术语,用于描述各种不同的角色。这些角色是可以互换的,并且可能会根据您所在的组织而有所不同。这只是一些最常见的数据科学角色的简要概述。
数据工程师
在 Unsplash 上拍摄的 ThisisEngineering RAEng
如果你以前没听说过,“ 真实世界的数据是杂乱的。 “它是从各种不同的来源收集的——你的手机、闭路电视和其他设备。
这些数据是非结构化的。它需要被清理和流水线化,并以结构化格式存储,以便数据科学家和分析师可以对其进行处理。
一个数据工程师不需要知道机器学习或者数据分析。他们的工作是创建管理大数据的基础设施。
技能: 通常情况下,一个数据工程师需要编写非常复杂的查询来管理大型数据集。因此,他们需要非常了解查询语言。根据他们合作的公司,这可以是 SQL 或 NoSQL 语言。
工具: MySQL、MongoDB、Cassandra 等。
数据分析师
数据分析师是从数据工程师清理过的数据中获得洞察力的人。
为了回答复杂的数据问题,分析师在数据中寻找模式和异常值,并得出意义。
分析师在公司中的角色:
想象一下,A 公司销售糖果。他们想知道在封锁期间糖果销售是否有任何变化。
然后,分析师将查询数据,并查看封锁之前、期间和之后的糖果销售趋势。
为了呈现这些数据,分析师还可以想出可视化的方法——描绘糖果销售增加或减少的图表和图形。
这是一个非常简单的例子,但足以描述公司中数据分析师的角色。
数据分析师可能还需要具备一些业务领域的知识,以便理解客户的请求并根据他们的需求进行交付。
分析师不需要具备机器学习知识,也不需要创建或做任何类型的预测建模。
技能 :分析师需要知道一种查询语言,根据所在公司的不同而不同。了解一种或多种编程语言至关重要。分析师的主要任务是从数据中获得洞察力,因此没有必要创建或写入数据表。可视化工具的知识将是有用的。
工具: MySQL、Hive、Python、Tableau、Excel、PowerBI(这些会根据你工作的公司不同而有所不同)。
数据科学家
亚历克斯·康德拉蒂耶夫在 Unsplash 上拍摄的照片
数据科学家是应用机器学习技术来提出预测模型的人。
这是设计算法并根据提供的数据做出预测的人。他们建立统计模型,并做一些事情,如创建推荐系统或欺诈检测。
根据他们所在的公司,数据科学家可能还需要具备分析师的技能,即接受业务请求、获得洞察力和提出可视化的能力。
数据科学独角兽 这个术语最近被频繁使用。
数据科学独角兽 是一个有能力的人:
- 提出机器学习模型并做出预测。
- 拥有特定领域的知识和将业务请求转化为数据问题的能力。
- 分析数据并提出商业见解。
- 向客户展示/传达这些见解。
总之,数据科学独角兽是指知道 机器学习 和 数据分析 ,拥有 领域知识 ,并且能够 传达其见解 的人。
然而,在大多数数据驱动的公司中,这些工作是分开的。数据科学家的主要任务是制作机器学习模型,并提出预测。
技能 :一门或多门编程语言,较强的数学背景,统计学,机器学习。
工具: R、Python(Caret、Scikit-Learn 等包)。
你应该选择什么角色?
在数据科学生命周期中,有更多的角色开始发挥作用,包括机器学习工程师和商业见解团队。
我把重点放在了三个主要角色上,但是在做出职业决定之前,你应该对其他角色进行研究。
我上面提到的所有角色都需要一些编程和查询的知识,这些知识很容易学会。你可以参考我写的这篇关于学习如何为数据科学编码的文章。
数据工程可能是这三个角色中技术含量最高的,比任何一个都要重编程。如果你更倾向于编程,了解数据库的来龙去脉,你应该考虑成为一名数据工程师。
数据科学家的角色更偏重于数学。如果你喜欢数学,并有兴趣在统计学方面打下坚实的基础,你应该考虑成为一名数据科学家。如果你想成为一名数据科学家,你需要更强的学术背景,并花更多的时间学习。你将需要知道一些编程(用 R 或 Python),并使用包来建立机器学习模型。
最后,数据分析师是需要从数据中获得并展示洞察力的人。要成为一名分析师,你需要知道如何查询数据,并找到符合客户需求的见解。这可能是所有三个领域中最有创造性的。您需要将业务请求转化为洞察力,并创建可视化。你可能还需要向客户展示这些见解。如果你是一个有创造力的人,有良好的表达和沟通技巧,那么数据分析可能适合你。
本文到此为止!如果你想进入数据科学领域,我希望这个分类能帮助你更好地理解数据科学家的角色。
不要根据周围的炒作来选择职业道路,因为炒作会逐渐平息。
十年后,一个新的领域将会出现,成为新的热潮。
你希望每天早上醒来都期待着你的工作,而不是害怕它。在一天结束的时候,你需要做你喜欢的事情。
做任何让你开心的事
德国数据科学就业市场:演变与存在的问题
三份工作简介进入了德国市场
欧洲最大经济体数据科学家就业市场概览。
在过去的三年里,我确实写了并寄出了 200 多份求职申请。作为一个非欧盟公民,我有很大的就业压力,以保持我留在欧洲的权利。我三分之一的邮件都以面试告终。
从统计角度来看,这个数字应该是 1.500 左右。我总是在找到新工作之前就找到了。尽管如此,我还是想总结一下我的印象,并勾勒出德国三个最典型的数据科学工作。
作为德国电子商务现象的数据分析
在过去的三年里,德国的数据科学就业市场呈现出两个主要发展趋势。它从描述性分析转向编程,然后转向云工程。
当我第一次决定我的统计知识不应该安息时,那是 2016 年。
德国以前就有结合数据科学和商业分析的职位描述。他们被称为“WirtschaftsinformatikerIn”,意思是“信息系统经济学家”。时至今日,它仍然是德国大学的热门专业。这些工作主要是由大型工业公司发布的,这些公司拥有足够的数据来进行有意义的分析。
在 21 世纪初,网上商店几乎成为了每一种商业形式的必需品。十年后,许多人注意到他们已经收集了大量的客户数据。他们开始寻找有效利用数据的方法。
这就是两个新职位如何加入德国就业市场的原因。数据分析师会处理各种类型的数据,并有广泛的目标。商业智能专家将关注收入、利润、投资、现金流、物流和成本。
过了一段时间,很明显,简单的表格很无聊,不能让利益相关者满意。另一种工作出现了:数据可视化专家。这个下降得很快。除了几家大型咨询公司,没有一家公司有这么多图表要做。你不需要一个全职员工来做这件事。此外,从各种意义上来说,几乎不可能从你以前没有做过的数据中得出任何有根据的结论。一个可视化只是分析的一部分,而不是一门独立的艺术
在数据可视化从招聘信息板上消失后不久,商业团体面临下一个问题。
数据工程的兴起
网上商店的数据太复杂了,无法用你花钱买到的大多数可视化工具来处理。编程语言脚本必须在原始数据和漂亮的图表之间架起桥梁。那时,雇主开始发布 R 和 Python 程序员的招聘信息。
顺便说一下,在极少数情况下,您会使用 R 或 Python 进行统计建模。这样的工作在德国仍然很少见,雇主更喜欢猎头而不是等待应聘者。你不会在招聘栏上看到很多这样的公告。
原始数据和数据可视化之间的差距缩小后,一个新的差距被确定。原始数据的纯度和可信度长期以来被认为是理所当然的。但是在你的在线平台上追踪顾客是一件复杂的事情,因为有许多竞争者提供他们的工具。
每家公司都不时感到有必要从一种技术转向更好的技术。结果,数据迁移成了你在采访中经常听到的一个新词。
渐渐地,数据科学家不能接受公司的第三份工作,这一点变得很明显。他需要数据工程师的支持。他们将构建提取-转换-加载流程,检查数据一致性,并执行数据迁移。
在所有这些波动中,这些公司同时收集的数据变得更加庞大。德国电子商务商业界迎来了云时代。云和数据工程师融为一体。
那么,让我总结一下。
我们有:
- 商业分析师
- 一个数据科学家,实际上是一个统计学家
- 数据和/或云工程师。
这些是目前德国就业市场上最常见的职位。
定义问题和就业
然而,这些并不完全是杜撰的简介。就业市场更倾向于提供不同比例的业务、数据和云任务的职位。
我的观点是,数据总是有相同的生命周期,即收集、处理和分析。许多雇主确实认为,这三种人只是最好的拥有者。
有时候会很困惑。一则公告说,一家电子商务公司招聘一名商业分析师。在面试中,你意识到他们没有任何合适的数据来开始。此外,许多人没有认识到干净数据的重要性,在拥有工程师之前需要一名分析师。
许多人认为数据工程和数据分析可以在相同的数据上并行运行。当然,分析师和工程师会相互交流,但分析师永远是数据业务价值创造链的最后一环。
如果我们至少有三个工作剖面,我们可能需要一个好的项目经理或产品负责人来协调它们。我的印象是,德国的一些公司认识到了数据驱动项目的组织复杂性。我偶然发现了一些数据经理的招聘公告,但这种情况并不多见。
我没有说“我们需要一个团队领导”。根据项目的不同,上面提到的三者会或多或少甚至毫无关系。我们不希望在每天的团队会议上,领导只和一个人说话,而其他人感到厌烦。此外,如果你有一个人,他能理解这三者,让他代替你的 CTO。
云宇宙
一些当代的云设法创造了整个生态系统,你呆在里面,就像在一个泡泡里。Salesforce 和 AWS 只是最近的两个例子。
与这样的云一起工作的人变得过于狭隘专业化。你必须记住许多特性,因为它们中的许多很快就会从你的平台上退出。你无法跟上替代技术的发展。大云通过提供培训、课程等来帮助他们的超级用户。其中一些甚至是免费的,比如 Salesforce Trailheads。
雇主夸大或错误地认为自己是一名熟练工人,对一个大平台有丰富的经验。许多雇主认为证书是申请人的必备条件。这使得人们投入更多的时间来建立和维护他们与单一平台的联系。因此,他们减少了申请需要其他技术的工作的机会。
数据人员停止相互交流。相反,他们会参加由他们目前所在的特定平台安排的活动和社区。
公司从大云购买许可证,因为大老板希望有可靠的支持。他们相信一个完美的案例队列比 GitHub 更能解决他们的问题。在那里,你没有排队,但必须主动寻找解决方案。
大云分离数据工程师。
需要在电话中澄清的问题
所以,我的建议是找一家使用开源技术的公司。此外,在申请工作或去面试之前,有几个问题你可以在电话里问:
-你要用什么数据?
-它从哪里来?
-数据准备好进行分析了吗?
-有正在进行的项目吗?他们怎么样了?
-你将参与什么项目?
-数据团队有多大(如果有)?
-其他人是做什么的(工程、项目管理、建模等。)?
-有领队吗?他是技术人员还是管理人员?
-如果没有团队领导,谁是你的直接上司?
和你未来的老板或同事打个电话可以为双方节省很多时间。
在我看来,很多公司都痴迷于“数据科学”这个词,因为它听起来很好听。你必须确保你最终会进入一个能为公司和你的未来创造价值的环境。
新冠肺炎期间的数据科学求职技巧
安娜·奥扎在 Unsplash 上的照片
2016 年 5 月 13 日,本该是快乐的一天。在经历了紧张而愉快的九个月后,我从伯克利获得了硕士学位。与其他早晨不同,我完全忽略了臭名昭著的贪睡按钮,迅速打开了我的收件箱,因为里面有可能决定我一天成败的消息。我几乎没有睁开眼睛,闹钟响个不停,我疯狂地打开邮件,里面有我几天前参加的一次现场面试的结果。
“感谢您抽出时间申请我们的数据科学…。”,我看够了。在那一瞬间,毁灭和绝望吞噬了我半醒的身体,耗尽了我阅读其余部分的能量,我知道这只是一种说我不够好的好方式。底线仍然是我在毕业前没有找到工作,我只想认输。那天我确实放弃了,但我没有放弃第二天或下个月。我继续努力工作,终于在毕业一个月后获得了一个惊人的机会。快进到今天,老实说,我感谢星星的拒绝,因为如果我走过那条路,我不会有同样程度的成功。
生活是考验我们毅力的专家。虽然对我来说,将我的沮丧与当前在全球疫情中找工作的沮丧进行精确的比较是不公平的,但要知道没有人会预料到这一点。这只是对宇宙随机性的一个证明,这是对你坚韧不拔的又一次考验。然而,要知道你并不孤单,每个人都和你有相似的处境,几乎每个地方都在挣扎。如果你正在找你的第一份工作,被解雇了,或者试图找一份新工作,事情可能会变得非常棘手和不确定。以下是一些在这段时间里寻找工作的小技巧:
提示 1 —应用应用应用
老实说,找到你的第一份工作或向新角色进行职业过渡通常是一场数字游戏。你运用得越多,你听到反馈的可能性就越大。我的意思是,那是在一切正常的时候,在这个时候,你需要做 10 次。找到每一个可能的工作机会并申请。使用你的大学职业网站 LinkedIn、的确、 WayUp 、 AngelList ,申请申请申请。如果你没有多年的工作经验或工作描述中列出的所有技能,不要担心,只要申请就可以了,这样你的简历就在那里了。它出现的越多,就越有可能引起别人的注意,得到回应的机会也就越大。
此外,查看级别的实时名单。仅供参考和坦诚了解哪些公司仍在招聘或暂停招聘。
提示 2-网络
这真的取决于你找到工作的时间框架。如果你的工作时间接近 1-2 个月,那么我会建议你利用技巧 1,只尝试在 LinkedIn 上为你真正感兴趣的公司建立联系和网络。现在每个人都在家,所以人们有更多的时间,也更愿意帮忙。联系相关人员,问他们是否可以和你谈谈他们的工作,然后提出向你推荐他们公司一个空缺职位的可能性。即使他们不能,为未来建立联系总是很棒的。就像申请工作一样,你发出的联系请求越多,成功的机会就越大。此外,请记住,在你的 LinkedIn 请求中一定要包含个性化信息。
另一个有用的资源是虚拟办公时间。他们每周与数据科学家、数据工程师、分析师、产品经理等举行虚拟问答会议,这是回答您具体问题的好方法。
技巧 3——拓宽你的求职资料
随着现在供应的增加和需求的减少,数据科学的空缺可能会更具竞争力和更难获得。因此,建议你通过寻找相关的工作简介来拓宽视野。数据分析师、业务分析师、产品分析师、营销分析师都是具备数据科学技能的人非常适合的角色。虽然这可能不完全是你想做的工作,但它有助于你迈出第一步。以后总会有机会在公司的团队中流动,也有机会在任何与数据相关的职位中应用您的数据科学技能。
技巧 4——学习技巧
鉴于目前的情况,我可以说,在你的整个生活中,再也不会有其他时间一直坐在家里是既酷又正确的事情了。在研究生院时,对我来说最大的难题是想出去玩,还是坐在家里学习以获得一份好的职业。当你在大学门口拥有这个充满活力的学生社区时,很难有长远的想法。但在这样一个没有社会压力或承诺的时代,利用你拥有的额外时间来学习新的数据科学技能。阅读一些你不知道的话题,参加一个在线课程或者做一个项目来充实你的简历。相信我,就像在熊市投资一样,你的时间投资从长远来看肯定会有回报。
你可以做的另一件事是向小型创业公司伸出援手。许多大学都有创业加速器和孵化器项目,许多创业公司都需要帮助。在你寻找其他全职机会的时候,这是积累一些有用的实践经验的好方法。这在你的简历上肯定会很好看。
提示 5——持怀疑态度(仔细检查公司和行业)
这是一个不确定的时代,我们正处于一个未知的经济领域,所以即使你得到了一份工作或实习机会,也要仔细研究它所在的公司和行业。你希望为一家拥有强大资产负债表或资金的公司工作,能够度过这场风暴,并在后冠状病毒时代取得成功。例如,旅游、零售和运输可能不是现在进入的最佳行业,但任何大型科技公司或 Slack 或 Zoom 这样在家中工作的公司可能是更好的选择。仔细审查给你工作机会的公司。你不希望最终出现这样的情况:你得到了一份工作,但随后又被取消,或者你被解雇了几个月,然后又回到起点。
总之,我所能说的是,现在绝对是艰难的时期,这是你必须变得更坚强的时候。老实说,坚持做一些事情,任何与上面五个建议相关的事情,放弃是你现在可能犯的最大的错误。更重要的是,即使说了这些,也要记住生活的第一条规则是活着。你的健康应该是你的头等大事。照顾好自己和他人,对社会负责,锻炼身体,学习技能,建立关系,努力工作,努力工作,向世界展示你在困难时期坚持不懈的决心,像我一样,总有一天你会有一个好故事可以讲述。很有可能,甚至更好。
你能行的!
希望这有帮助!你可以在这里了解更多关于我的数据科学之旅。如果你有任何问题,可以通过 LinkedIn 联系我——www.linkedin.com/in/joelprince。聊的开心!
数据科学学习路径
学习数据科学、机器学习和深度学习的可靠计划
对学习数据科学、、机器学习、深度学习感兴趣?这里有一个坚实的计划来做到这一点。
用于数据科学的 Python
Python 是数据科学、机器学习和深度学习中最常用的语言。这很容易理解。所以我建议你从熟悉这门语言开始。不过,需要理解的最重要的概念是数据结构和 Python 函数。
数值计算的数值
一旦掌握了 Python,现在就可以继续学习 NumPy 了。NumPy 是一个用于数值计算的软件包,例如平均值等。大多数其他数据科学软件包也是基于它构建的,因此这是一项必备技能。这里要理解的最基本的一项是 NumPy 数组 和它们上面的操作。
查看 Python 中的完整数据科学&机器学习训练营立即开始学习。
熊猫的数据操作
接下来,你需要一个用于数据清理和操作的工具。熊猫就是一个建立在 NumPy 基础上的工具,它可以做到这一点。由于大多数数据通常不干净,这是一个你必须拥有的工具。这里要理解的最重要的事情是熊猫数据帧以及如何操纵它们
用 Matplotlib 可视化
既然你可以清理和操作你的数据,如果你能以一种可视化的方式分享你的分析就好了。输入 Matplotlib。这是一个可以用来可视化数据分析结果的工具。你可以用它来可视化类别、分布、关系——仅举几例。
Seaborn 的美丽可视化
Seaborn 构建在 Matplotlib 之上,将会给你比 Matplotlib 更好看的视觉效果。这个工具很容易使用。然而,重要的是要注意,如果你想执行非常复杂的视觉效果,你可能必须回到 Matplotlib。
使用 Plotly 进行交互式可视化
Plotly 允许你创建可以互动的视觉效果。例如,当你将悬停在某个区域上时,可以看到更多信息,而可以放大和缩小你的可视化效果。您还可以使用与 Plotly 集成的 Mapbox 进行高级可视化操作,如映射**。**
使用 Dash 的交互式 Web 应用程序
Dash 是一个 web 框架,它将使您能够使用 Plotly 构建交互式数据科学应用。任何在 Plotly 中实现的可视化也可以在 Dash 中实现。该工具通过标签经由 Dash HTML 组件提供所有 Html。它应该通过 Dash 核心组件提供高级交互视觉效果。其工作原理是破折号回调。你通常会给这些回调函数提供一些输入和输出。每当输入发生变化,Dash 就会启动回调函数。很神奇,对吧?
使用 Streamlit 的数据科学应用
如果你正在寻找 Dash 的替代品,那么 Streamlit 就是你的选择。这是一个开源框架,数据科学家和机器学习工程师可以在几个小时内创建出漂亮的、高性能的应用。
使用 Power BI 台式机构建仪表板
如果你不想写任何代码,那么你可以看看 Power BI Desktop 。尽管如此,在将数据导入到 Powe BI Desktop 之前,您仍然需要找到一种清理数据的方法,我想不出比使用 Python 更好的方法了。
参加 Python 中的完整数据科学&机器学习训练营立即开始学习。
机器学习
接下来你可以做的就是深入机器学习的世界。在这里,你将学到进行监督和非监督机器学习的最酷的技巧。开源的 Scikit-Learn 包将提供你需要的所有工具。这里你的重点将是了解数据如何准备用于机器学习模型,数据分割以及评估你的机器学习模型。
关联规则挖掘
这是一种用于发现产品之间关系的技术。如果你在超市等零售领域工作,你会发现它很有用。这项技能可以帮助你通过识别经常一起购买的物品来增加销售额。例如,在药房中,您可能会发现购买药物 A 的患者也购买了药物 B。询问购买了药物 A 的患者他们的处方中是否也有药物 B 才有意义。你已经在网上商店或学习平台上看到了这种技术,其形式是经常一起购买部分。
自然语言处理
如今我们有如此多的文本形式的数据。这些数据可以从博客以及 Twitter 等社交网站上获得。在这个世纪,从数据中获取意义的能力是一项不可或缺的技能。然而,处理文本数据并不容易。你必须找到一种用数字形式表示文本数据的方法。好消息是,有很多工具可以让你做到这一点。
深度学习
一旦你掌握了机器学习的复杂性,现在是你研究深度学习的时候了。这只是机器学习的一个实现,涉及到神经网络的应用。这些网络模仿人脑的工作。当你有一个大的数据集时,深度学习是最常用的。它还广泛用于计算密集型过程,如图像分类、图像分割和物体检测。最流行的工具是 TensorFlow 、 Keras 和 PyTorch 。
自动化机器学习
这是一个相当新的领域,但它正像风暴一样席卷全球。想象一下,如果你可以把你的数据输入一个模型,它会为你做任何事情。这包括数据处理和调整模型以获得最佳结果。这是 AutoML 的承诺。能够让你做到这一点的工具包括 自动学习 和 自动 Keras 。
查看 Python 中的完整数据科学&机器学习训练营立即开始学习。
最后的想法
希望这能让你了解你的数据科学学习之路会是怎样的。这只是冰山一角,一旦你学会了这些,你会惊奇地发现你仍然可以在互联网上找到大量的数据科学工具和技术。不过,关键是要开始。
如果你想了解所有这些以及更多,请使用这一有限的优惠优惠券参加 Python 中的 数据科学&机器学习训练营。
如何使用 SQL 从表中选择数据
在保持社交距离的同时学习数据科学
以行尸走肉为例,说明如何使用 SQL 来选择感兴趣的数据
介绍
虽然在家里自我隔离,但我和我的朋友们决定作为一个小组一起学习数据科学。到目前为止,我们已经上了一节课,我对这个团队的热情感到非常高兴。通过提问,我的朋友们帮助我解释得更清楚,并互相帮助学习。希望我们能够保持这一势头,并继续共同开发新的数据科学技能。
如果您想在全球疫情期间加入我们学习数据科学,请随时关注。你可能想回到上一课以便从头开始。否则,如果您对学习如何使用 SQL 从表中选择数据特别感兴趣,那么您就来对地方了。
前一课
在上一课中,我们学习了如何使用 SQL 创建一个表并将一些数据放入其中。这是使用 CREATE TABLE 和 INSERT INTO 关键字完成的。为了好玩,我们在示例中使用了儿童节目 Bluey。
这一课
现在我们已经知道了如何从第一课创建数据表,让我们学习如何访问它。
使用 SQL 关键字 SELECT,您可以访问表中的所有数据、特定的列或特定数量的记录。在本课中,我们将逐一介绍这三种情况。此外,我们将练习如何使用 SELECT DISTINCT 关键字选择数据而不包含重复值。
与上一课中作为例子的儿童节目不同,本周我们将使用《行尸走肉》。当然不是给孩子们的😉
我们想要解决的问题
在《行尸走肉》第一季中,有一些好人和一些坏人,还有一些介于两者之间。但是我们想找出最致命的前 5 个角色。
为了找出谁最擅长杀人,我们需要找出我们想要使用的标准。《行尸走肉》中的人物出动了很多‘行尸’,但也有相当一部分还杀死了几个人类。
我们将把最致命的角色定义为杀死最多僵尸的角色。然后,如果杀死僵尸的人数有一个平手,杀死最多人类的人将被誉为两人中最致命的角色。
数据
我们有一个包含《行尸走肉》中角色信息的表格,我们将用它来解决我们的问题。数据集主要来自这篇文章。我稍微改变了一些数字,以说明本课的一个要点。
因此,现在我们需要找出如何从表中选择正确的数据,找出谁是最致命的。
从表中选择所有数据的语法:
就像我们在第一课中看到的,您可以使用星号来表示您想要选择表中的所有数据。运行查询时,将返回表中所有可用的列。
SELECT
*
FROM
name_of_table;
这是您可以编写的最简单的查询之一。
为什么代码中会有缩进?
缩进在 SQL 中不做任何事情。我这样做只是为了让我的代码更容易阅读。一般来说,你应该遵守你的组织风格指南中的缩进规则。然而,我们没有一个风格指南,所以你可以用任何你喜欢的方式来组织你的代码。重要的是要知道在其他编码语言中,比如 Python,缩进是有效的。如果你没有在 Python 中使用正确的缩进,你的代码将会抛出一个错误。
选择特定列的语法:
如果只想从较大的表中选择特定的列,可以列出希望从查询中返回的列的名称。
SELECT
name_column_one,
name_column_two,
name_column_five
FROM
name_of_table;
这非常有用,特别是对于非常宽的数据集,其中的列比结果表中显示的要多得多。例如,如果您正在查看人口普查数据,但只对许多可用列中的几列感兴趣,那么如果您只选择感兴趣的那些列,就更容易看到您想要的值。
问题 1: 你能说出上表中有多少列吗?
选择特定数量记录的语法:
关键字 LIMIT 可用于选择特定数量的记录。当使用 LIMIT 时,从表的顶部开始,只返回指定数量的记录。如果您的数据按特定顺序排列,这将非常有用。
如果您想按感兴趣的列对数据进行排序,可以使用 ORDER BY 关键字。ORDER BY 放在 FROM 语句之后。若要使用 ORDER BY,您需要指定要使用哪一列来决定数据返回的顺序。
您还可以分别使用 ASC 或 DESC 来决定是按升序还是降序排列。
SELECT
*
FROM
name_of_table
ORDER BY
name_column_one DESC
LIMIT 10;
上面的代码将从表中选择所有的列,并返回前 10 条记录。这是在根据第一列中的值对它们进行降序排列之后。
没有重复值的选择语法:
SELECT 和 SELECT DISTINCT 的语法是相同的。不同之处在于它返回的结果。
SELECT DISTINCT
name_column_one
FROM
name_of_table;
SELECT DISTINCT 只返回所选列的不同值,因此所有重复项都将被删除。如果您只选择一列,这很容易理解。但是,您也可以使用 SELECT DISTINCT 来选择列的唯一组合。
SELECT DISTINCT
name_column_one,
name_column_five
FROM
name_of_table;
因此,使用上面的代码,您将得到第一列和第五列中的值的不同组合。即使第一列中有重复的值,如果在相同的行中第五列有不同的值,也将返回这两行。
现在让我们试着解决我们的问题
- 去http://sqlfiddle.com/(或者你可以用https://www.db-fiddle.com/,因为我发现 SQL fiddle 最近停机了一段时间)
- 在左边的框中放入创建表并插入到下面的查询中
CREATE TABLE walking_dead(
first_name varchar(255),
last_name varchar(255),
hair_colour varchar(255),
walker_kills int(255),
human_kills int(255),
number_of_hands int(255)
);INSERT INTO walking_dead (first_name, last_name, hair_colour, walker_kills, human_kills, number_of_hands)
VALUES
('Maggie', 'Greene', 'brown', 64, 5, 2),
('Carol', 'Peletier', 'grey', 57, 27, 2),
('Merle', 'Dixon', 'dark blonde', 20, 6, 1),
('Tyreese', 'Williams', 'black', 59, 0, 2),
('Morgan', 'Jones', 'black', 40, 3, 2),
('Glenn', 'Rhee', 'black', 185, 5, 2),
('Michonne', '', 'black', 141, 10, 2),
('Andrea', 'Harrison', 'blonde', 39, 0, 2),
('Sasha', 'Williams', 'black', 73, 4, 2),
('Abraham', 'Ford', 'red', 49, 4, 2),
('Shane', 'Walsh', 'brown', 28, 3, 2),
('Daryl', 'Dixon', 'brown', 185, 22, 2),
('Rick', 'Grimes', 'brown', 216, 35, 2),
('Philip “The Governor”', 'Blake', 'brown', 26, 30, 2)
;
3.单击“构建模式”按钮
4.在右边的框中输入您的问题
5.运行下面的查询,看看它是否会返回您所期望的结果:
SELECT
hair_colour,
number_of_hands
FROM
walking_dead
ORDER BY
hair_colour ASC, number_of_hands DESC;
**提示:**注意列的排列顺序以及结果中的重复值
6.运行下面的查询,看看它是否会返回您所期望的结果:
SELECT DISTINCT
hair_colour,
number_of_hands
FROM
walking_dead
ORDER BY
hair_colour ASC, number_of_hands DESC;
**提示:**注意添加 DISTINCT 关键字如何改变返回的结果
7.运行下面的查询,看看它是否会返回您所期望的结果:
SELECT
first_name,
human_kills
FROM
walking_dead
ORDER BY
human_kills DESC
LIMIT 10;
**提示:**注意返回记录的顺序和数量。
8.运行下面的查询,看看它是否会返回您所期望的结果:
SELECT
first_name,
human_kills
FROM
walking_dead
ORDER BY
first_name ASC
LIMIT 10;
**提示:**注意与之前的查询相比,返回的结果有所不同。
练习 1: 编写一个查询来选择该表中的所有数据
练习 2: 编写一个查询来创建数据集中所有不同姓氏的列表
练习 3 :编写一个查询,创建该数据集中所有不同姓氏、头发颜色组合的列表
练习 4: 选择前 5 名最致命角色的全名、行者 _kills 和人类 _kills。这是基于杀死僵尸是最重要的,其次是杀死人类的标准。
我们是如何学习这一课的
我们学习小组里至少有一个《行尸走肉》的超级粉丝。她很高兴得到一个僵尸为基础的教训😜
该小组的一些成员比我们最初计划的时间表晚了一点,他们仍在学习这一课。但是当学校放假的时候,你有三个孩子要照顾,你能做什么呢?或者你正在努力让你的公司和员工度过这次金融危机。与我一起学习数据科学的女性在她们的生活中有很多其他事情要做,所以我完全理解她们有时会妨碍我。
话虽如此,但每个人在力所能及的情况下,似乎仍然热衷于完成这一课。我的伙伴们这周已经完成了课程,他们做得非常好。他们似乎很好地掌握了从表格中选择的基本知识。我迫不及待地想看看,当我们转到一些稍微复杂一点的 SQL 方法时,它们会怎么样。
下一课
在下一课中,我们将重点关注数据过滤。在 SQL 中有许多不同的方法来过滤表,但是我们将集中学习使用关键字 WHERE、AND、OR、LIKE、in、BETWEEN 和 NOT。
除了数据,我的另一个爱好是绘画。你可以在 www.katemarielewis.com 的找到我的野生动物艺术
社交距离学习数据科学的所有课程(LDSWSD)
阅读《走向数据科学》中关于 Ldswsd 的文章。共享概念、想法和代码的媒体出版物。
towardsdatascience.com](https://towardsdatascience.com/tagged/ldswsd)
如何使用 SQL 过滤数据集
在保持社交距离的同时学习数据科学
以 Charmed 为例,说明如何使用关键字 WHERE、AND、OR、LIKE、IN、BETWEEN 和 NOT 使用 SQL 从表中过滤数据
介绍
在过去的几周里,我一直在帮助我的一小群朋友学习 SQL。他们想学习数据科学,因为他们被困在社交距离中,有更多的空闲时间。我认为这是一个伟大的想法,并提出帮助指导他们通过它。
这是我们使用 SQL 的第三课。如果你想加入学习,请随时回到第课并投入其中。或者,如果您只是想学习如何使用 SQL 过滤数据,我希望这一课对您有所帮助。
前一课
在上一课中,我们重点介绍了从表中选择数据的不同方法。以行尸走肉为例,我们从一个表中选择所有数据,选择特定的列,选择有限数量的记录,选择不同的值,并对结果进行排序。我们使用 SELECT、SELECT DISTINCT、LIMIT、ORDER BY 关键字来实现这一点。
这一课
这一课我们可以真正了解 SQL 的一些更常用的函数。既然我们已经知道了如何制作一个表,将一些数据放入其中并选择数据,那么我们可以学习如何在选择数据时操作数据。我们将重点学习筛选表。
最重要的是,我们将学习 WHERE 语句的作用。此外,我们将练习使用关键字 AND、OR、LIKE、In、BETWEEN 和 NOT 与 WHERE 连用。
我们想要解决的问题
《魅力》是我成长过程中最喜欢的电视节目之一。我过去常常把每一集都录下来,然后和我妹妹一起看几遍,然后在下一周我们就会看到新的一集。这就是为什么我选择用《魅力》中的角色作为本周的例子。
我们有一个关于 charmed 中一些角色的数据表,但我们只想选择表中的一部分。我们的问题是,我们只想要有血缘关系的姐妹的信息,只想要 2001 年之前透露的她们的活跃力量的信息。
在这节课中,我们将学习从魅力信息表中选择感兴趣的数据所需的技巧。
数据
下表包含了《魅力》中角色的数据。如果每个角色有多重能力,他们可以在表格中有多行。此外,我们还有关于这些异能的额外信息,比如异能的类型和显现时间。
使用 WHERE 过滤数据的语法
向查询中添加 WHERE 语句意味着将对表进行筛选,以便只返回满足 WHERE 语句后的条件的记录。我以前写过一篇文章比较 SQL 中的 WHERE 和 HAVING,以防你想阅读如何使用 WHERE 的另一个例子。
下面你可以看到 WHERE 子句的一个最简单的版本。
SELECT
*
FROM
name_of_table
WHERE
name_column_one = value_of_interest
;
Equals 不是唯一可以用于 WHERE 语句的运算符。其他常见的运算符包括:
因此,根据您想要达到的结果,您可以使用任何适合您的目的的操作符。
如果您希望您的结果满足多个条件,该怎么办?
您可能希望筛选数据,使其满足两个或更多条件。在这种情况下,您可以使用和。例如,如果希望一列等于感兴趣的值,而另一列只包含大于另一个感兴趣的值的值,则可以用 and 分隔这两个条件。在这种情况下,将只返回满足查询中所有条件的记录。
SELECT
*
FROM
name_of_table
WHERE
name_column_one = value_of_interest
AND
name_column_five > second_value_of_interest
;
如果只需要满足可用条件中的一个呢?
如果你不需要你的过滤器非常严格,只需要满足一个或另一个条件,那么你可以使用 or。通过用 OR 替换 AND,这意味着如果一个记录满足可用条件之一,那么它将被返回,而不是它必须满足查询中的两个条件。
SELECT
*
FROM
name_of_table
WHERE
name_column_one = value_of_interest
OR
name_column_five > second_value_of_interest
;
如果你想变得有点棘手,你甚至可以一起使用 OR 和 and。您只需要在 OR 部分加上括号,这样首先满足条件,然后也需要满足 and 条件。
SELECT
*
FROM
name_of_table
WHERE
(name_column_one = value_of_interest
OR
name_column_five > second_value_of_interest)
AND
name_column_two != third_value_of_interest
;
如果不知道利息的确切值呢?
如果您不想精确匹配某个值,而是希望条件查找模式匹配,可以使用 like。
SELECT
*
FROM
name_of_table
WHERE
name_column_one LIKE pattern_of_interest
;
您可以使用许多不同的模式。要编写它们,您可以使用由%或 _ 组成的通配符。%用于表示一个、多个字符或根本不表示字符。%通配符非常通用。相反,_ 仅用于表示单个字符。因此,它允许你在创建模式时更加具体。
下表显示了您可以使用通配符创建的一些示例模式:
如果你有很多感兴趣的价值观呢?
在许多情况下,您可能希望根据值列表来筛选数据。这就是中的 SQL 关键字发挥作用的地方。它的工作方式与您在带有多个 OR 条件的 WHERE 语句中使用等号的方式相同。这只是编写查询的一种更加干净和简单的方式。返回的记录只需要与 in 语句中列表中的一个值匹配。
SELECT
*
FROM
name_of_table
WHERE
name_column_one IN (value_1, value_2, value_3, value_4, value_5)
;
如果您想变得更复杂,您甚至可以将另一个查询放入括号中来选择值列表。另一个查询中的这种类型的查询称为子查询。
SELECT
*
FROM
name_of_table
WHERE
name_column_one IN (
SELECT
name_column_two
FROM
name_of_table)
;
如果你有一大堆感兴趣的价值观呢?
如果您有大量感兴趣的值,并且不想列出包含所有值的列表,您可以使用关键字 BETWEEN。在这种情况下,您需要提供起始值和结束值。这两个值由 AND 关键字分隔。
许多不同的数据类型可以用作 BETWEEN 的起始值和结束值。例如,您可以使用整数、浮点数、日期或字符串。
SELECT
*
FROM
name_of_table
WHERE
name_column_one BETWEEN value_1 AND value_2
;
如果您有多个想要排除的值,该怎么办?
如果希望排除而不是包含特定的值,可以使用关键字 NOT。在这种情况下,我在 In 子句前放 NOT。正如您所料,只有不匹配列表中任何值的记录才会被返回。
SELECT
*
FROM
name_of_table
WHERE
name_column_one NOT IN (value_1, value_2, value_3, value_4, value_5)
;
NOT 也可以用于其他条件,而不仅仅是 IN。但我认为这是使用 NOT 的最有用的例子之一。
现在让我们试着解决我们的问题
- 去 http://sqlfiddle.com/的(或者你可以用 https://www.db-fiddle.com/的,因为我发现 SQL fiddle 最近停机了)
- 在左边的框中放入创建表并插入到下面的查询中
CREATE TABLE charmed(
first_name varchar(255),
last_name varchar(255),
power varchar(255),
power_type varchar(255),
power_revealed date
);INSERT INTO charmed(
first_name,
last_name,
power,
power_type,
power_revealed
)
VALUES
('Phoebe', 'Halliwell', 'premonition', 'passive', '1998-10-07'),
('Piper', 'Halliwell', 'freeze time', 'active', '1998-10-07'),
('Prue', 'Halliwell', 'telekenesis', 'active', '1998-10-07'),
('Prue', 'Halliwell', 'astral projection', 'active', '2000-01-13'),
('Leo', 'Wyatt', 'healing', 'active', '1999-02-17'),
('Leo', 'Wyatt', 'orbing', 'active', '1999-02-17'),
('Paige', 'Matthews', 'orbing', 'active', '2001-10-04'),
('Phoebe', 'Halliwell', 'levitation', 'active', '2000-10-05'),
('Piper', 'Halliwell', 'molecular combustion', 'active', '2001-05-03')
;
3.单击“构建模式”按钮
4.在右边的框中输入您的问题
5.运行下面的查询,看看它是否会返回您所期望的结果:
SELECT
*
FROM
charmed
WHERE
power_type = 'active'
;
6.运行下面的查询,看看它是否会返回您所期望的结果:
SELECT
*
FROM
charmed
WHERE
power_type = 'active'
AND
power_revealed!='1998-10-07'
;
7.运行下面的查询,看看它是否会返回您所期望的结果:
SELECT
*
FROM
charmed
WHERE
power_type = 'active'
OR
power_revealed!='1998-10-07'
;
**注意:**将这个查询的结果与前一个查询的结果进行比较。所改变的只是“或”被“和”所取代
8.运行下面的查询,看看它是否会返回您所期望的结果:
SELECT
*
FROM
charmed
WHERE
first_name LIKE 'P%'
;
9.运行下面的查询,看看它是否会返回您所期望的结果:
SELECT
*
FROM
charmed
WHERE
power IN ('orbing', 'healing')
;
10.运行下面的查询,看看它是否会返回您所期望的结果:
SELECT
*
FROM
charmed
WHERE
first_name NOT IN (SELECT
first_name
FROM
charmed
WHERE
first_name LIKE 'P%')
;
11.运行下面的查询,看看它是否会返回您所期望的结果:
SELECT
*
FROM
charmed
WHERE
first_name NOT LIKE 'P%'
;
**注意:**将这个查询的结果与前一个查询的结果进行比较
12.运行下面的查询,看看它是否会返回您所期望的结果:
SELECT
*
FROM
charmed
WHERE
power_revealed BETWEEN '1999-01-01' AND '2000-12-31'
;
13.运行下面的查询,看看它是否会返回您所期望的结果:
SELECT
*
FROM
charmed
WHERE
power BETWEEN 'astral projection' AND 'healing'
;
练习 1: 编写一个查询,该查询过滤表以仅包括血亲(Prue,Piper,Phobe,Paige),仅包括有效的异能,并且仅包括 2001 年之前显示的异能。
练习 2: 看看是否有其他方法可以编写不同的查询来选择与第一个练习中相同的数据。你能想到的不同方法越多越好。尽可能多地使用本课中不同的 SQL 关键字。
我们是如何学习这一课的
我觉得在这一课中,在过去几周的介绍性课程之后,我们真正进入了 SQL 能做什么的实质内容。我们的学习小组在我们的进展中有点分散,因为人们有许多其他的承诺。所以全组还没有完成这一课。
然而,那些做得很好的人。人们似乎喜欢练习 2 的开放性和用几种不同方法解决同一问题的挑战性。
希望小组中忙碌的成员能够赶上其他人,这样我们就可以很快再次学习同一课。
下一课
现在我们知道了如何筛选数据,下一课我们将学习如何汇总数据。我们将使用关键字 MIN、MAX、COUNT、AVERAGE 和 SUM,并以辣妹为例进行说明。
除了数据,我的另一个爱好是绘画。你可以在 www.katemarielewis.com 的找到我的野生动物艺术
社交距离学习数据科学的所有课程(LDSWSD)
阅读《走向数据科学》中关于 Ldswsd 的文章。共享概念、想法和代码的媒体出版物。
towardsdatascience.com](https://towardsdatascience.com/tagged/ldswsd)
数据科学,机器学习还是人工智能:我应该从哪里开始?
图片由 StartupStockPhotos 来自 Pixabay
剧透:答案往往是“以上都不是”。
这些天,人们几乎可以在看新闻时不接触到数据科学、机器学习或人工智能。而且有一个很好的理由——通过互联传感器和设备收集的数据的爆炸,加上人工智能的突破,加上计算能力的急剧增长,已经将这些主题推到了每个科技公司的优先事项清单的首位。由此产生的对具有这些技能的技术人才的需求有据可查——根据 LinkedIn 2019 年的“新兴工作”报告,在过去四年中,需要这些技能的职位的招聘量每年增长 74%。数据科学家和人工智能工程师的平均工资远高于 10 万美元,该领域的顶级专家的工资高达几十万美元。
因此,各种各样的大学和私人教育课程如雨后春笋般涌现,以满足快速增长的行业对这一人才的需求,从私人训练营到数据科学、机器学习或人工智能方面的大学硕士和博士课程。随着各年龄段的人被该领域令人兴奋的工作机会和高薪所吸引,对这些项目的需求正在激增。但是,对于那些希望进入这个领域或扩展自己技能的人来说,一个核心问题往往是不清楚的:
我应该学习数据科学、机器学习还是人工智能?真的有区别吗?
对上述问题的简短回答是“是”。但是差异并不总是清晰的,它们之间的界限有时是模糊的。许多大学提供“数据科学”、“机器学习”或“人工智能”(或三者的某种组合)的研究生课程,他们自己在解释他们的重点方面做得很差,偶尔会与同行大学不一致地应用这些术语。这使得许多感兴趣的学习者不清楚他们应该关注这些领域中的哪一个。如果不清楚这些术语,新的学习者就会不知从哪里开始涉水阅读这些主题的大量文章、书籍、在线课程和视频。不幸的是,很容易从错误的地方开始,很快就超出了你的能力,并因其复杂性而气馁。
那么这些术语之间有什么区别呢?
我们先从“数据科学”说起。数据科学是指收集分析数据的方法、工具和实践,以获得见解,从而支持决策。数据科学是一个宽泛的术语,因此,真正的数据科学家必须具备广泛的技能,包括编程、数学/统计以及所需应用领域的领域知识。
数据科学维恩图。由引来康威
成功的数据科学家能够将强大的编程技能与数学和统计知识以及关于他们正在解决的问题的足够深入的领域知识相结合。数据科学家为组织执行一系列活动,包括数据收集和处理、分析建模和机器学习以及数据可视化。数据科学家研究广泛领域的问题,从社会科学到农业再到消费品。因此,数据科学家的就业市场在公司、政府和非营利组织中都很广阔。
“机器学习”通常被认为是计算机程序通过示例而不是显式编程的规则来“学习”或提高性能的能力。机器学习是数据科学家用来分析和解释数据的关键工具之一。反过来,应用机器学习的软件工程师依赖数据科学的技术和工具来准备用于 ML 的数据。虽然一些组织已经创建了专门的 ML 工程师角色,但在许多其他组织中,创建 ML 模型的责任落在了软件工程师或数据科学团队身上。无论一个人是专门的 ML 工程师还是负责实施 ML 模型的软件开发人员,组织中的这一功能都需要强大的数学基础、对机器学习理论及其算法的理解以及对编程的合理熟练程度的结合,以用代码实施模型。虽然每个行业都有需求,但 ML 工程师最常见于网络/科技公司和特定行业的软件公司。
“人工智能”通常用于描述能够复制与人类思维相关的认知能力的机器。该领域作为一个研究领域可以追溯到 20 世纪 50 年代中期,并由几个子领域组成,如计算机视觉和机器人技术。“人工一般智能”或广义上复制人类思维的能力,与“狭义人工智能”之间通常有所区别,在狭义人工智能中,机器学习完成一项非常具体的任务。人工智能领域的许多最新进展都是使用机器学习技术实现的,尽管该领域还包括专家系统或智能搜索等领域。
数据科学和人工智能领域都使用机器学习作为中心工具。在数据科学中,机器学习通常被用作数据分析工具,以揭示数据中的模式,有时还进行预测。在人工智能领域,机器学习是创造智能代理的关键。通常在人工智能中,用于机器学习的数据来自硬件或传感器,机器学习工具被近乎实时地使用,以使机器能够采取行动。连接所有三个领域的另一个关键要素是,数据科学的工具被用来清理、处理和分析作为输入的数据。虽然数据来源可能不同,但通常使用相同的技术和编程工具。
该学哪个?
这个问题的答案很大程度上取决于你的目标是什么。对于在不同领域从事数据分析的科学家和研究人员来说,彻底了解数据科学的工具是一个很好的起点。对于寻求将智能构建到软件或硬件产品中的工程师来说,机器学习或更一般的人工智能可能是一条逻辑路径。
如果你不确定你想去哪里,只是想开始,从数据科学基础开始(同时复习编程和微积分/线性代数/统计)很难出错。最终,数据是在所有这些领域取得成功的关键,因此,一套强大的处理、清理、分析和可视化数据的技能,以及这样做所需的统计知识,将会很好地为您服务,无论您最终走向何方。
然而,在你开始学习任何这些领域之前,我会确保你在你渴望应用这些技术的领域/行业有足够坚实的领域知识基础。如果你正在进入大学或刚刚开始你的职业生涯,在花时间学习数据科学/机器学习/人工智能之前(或至少同时),建立你的领域知识是很重要的。除非你计划以构建新算法的 ML/AI 研究为职业,否则你将在自己感兴趣的领域内使用这些工具作为应用的一部分。也许你能够成功做到这一点的最大贡献者是拥有足够的领域知识来彻底理解你试图解决的问题以及数据科学/ ML / AI 如何在解决问题中发挥作用。
我们很幸运生活在这样一个时代,在每一个领域都有各种各样的内容。挑战在于如何最好地在其中导航。希望这个总结能让你更好地了解从哪里开始。祝你好运,祝你旅途愉快!
数据科学,认识数据透视表
图片来自 Pixabay。
试用 Excel 最强大的数据分析工具之一
介绍
所有数据科学家都认识到拥有一个组织有序、干净整洁、随时可以分析的数据集的重要性。在 Python 和 Pandas 中,或者在 R 和 TidyR 中,数据可以被排序到可访问的行和列中,但是排序数据、过滤特定值和设置特定块以供查看的过程可能会很繁琐,并且会产生错误。使用 Excel 中的数据透视表,可以以简单省时的方式组织、过滤和重新过滤数据,并对其进行操作。本教程将介绍如何在 Excel 中创建数据透视表,以及它们提供的简单数据操作能力。
创建数据透视表
首先在 Excel 中打开数据集,如果数据集是. csv 文件,将其保存为 Excel 工作簿(。xlsx)。只选择你的数据,点击右上角的“格式为表格”按钮,选择你喜欢的任何配色方案。这应该将你所有的数据着色并组织成一个整洁有序的表格。这里有一个关于假“冰淇淋店”数据的小例子:
现在,是时候创建数据透视表了!单击电子表格上的任意位置,从插入选项卡中,单击“数据透视表”按钮。在“表格/范围”中输入表格的名称,如下所示。您可以通过单击表格并转到出现的“表格”选项卡来找到表格的名称—名称在最左侧。单击确定。
一个带有“数据透视表字段”侧栏的新工作表弹出,但是还没有创建数据透视表。这是有趣的部分!数据透视表允许您按照自己的意愿组织数据,并轻松切换分类。下面是我如何组织数据的一个例子:
流程是选中一个框,将线条向下拖动到四个字段之一,然后根据需要对类别进行排序/操作。在这个例子中,我首先在 Rows 字段中列出 cone,然后是 flavor,所以我的数据是按 cone 类型分组的,然后是该类别中的 flavor(类似于 group-by 函数)。值(或列)是每种口味和甜筒类型的利润总和,我可以通过单击“I”并选择不同的计算方法,将该字段更改为平均利润、最大/最小利润、中间利润等。
真的就这么简单!—通过拖动一些框并将 Sum 改为 Average,我可以快速制作一个完全不同的表格,并真正操作任何东西来满足我的数据分析需求。
相同的数据,新的表格。
结论
就是这样!整个过程到此结束——在不到 5 个步骤的时间里,您就有了一个整洁有序的数据表,您可以根据需要轻松地对其进行操作、计算、过滤和组织。图片使用代码创建此数据框:生成平均值、对行内的行进行分组以及查找总计的过程需要冗长的代码,并且需要数据科学家投入过多的时间和精力。Excel 将整个过程压缩到一个数据透视表工具中,使数据分析既简单又省时。我鼓励每个人至少尝试一次用 Excel 进行数据分析!—这些能力真的很简单,但却很强大。
数据科学遇上 UFC:一个斗士的姿态真的给了他们优势吗?
试图定量回答格斗运动中的一个古老问题。
安德留斯·彼得鲁塞尼亚(https://www.flickr.com/photos/andriux_uk_events/18781656035)授权重新使用的图像
康纳·麦格雷戈对何塞·奥尔多是 UFC 历史上最快的淘汰赛之一,结果爱尔兰人仅用了 13 秒就赢了。它让一个极具天赋的左撇子(麦格雷戈)对阵巴西不败的东正教徒,后者被一些人认为是有史以来最伟大的 MMA 轻量级选手。裁判大个子约翰·麦卡锡宣布比赛时间到后几秒钟,奥尔多向前冲去,挥出一记左勾拳。康纳后退一步,用自己一记完美的左钩拳反击。奥尔多躺在地板上,康纳继续用拳头猛击他,这时裁判宣布比赛结束。
就这么简单。(【https://giphy.com/conormcgregor】T2
那么,康纳的胜利有多少可以归因于他的非正统立场呢?本文采用定量方法回答以下问题:
“拥有一个非正统的姿势会让一个拳手在拳击场(或八角场)有优势吗?”
如果有读者不熟悉格斗运动中的各种姿势,我会给你留一个谷歌,现在给你一个简短的描述:
- 正统的拳手大多惯用右手站立时左肩向前,右肩向后。
- 左撇子个人通常左撇子站立时右肩向前,左肩向后。
- 转换拳手可以被认为是双手灵巧并且有能力在正统和左撇子姿势之间无缝转换。
- 存在一些其他的姿态,但它们非常罕见,这将在后面的分析中看到。
人们常说,非正统的战士有优势;这通常被认为是因为他们人数较少,这意味着当他们最终面对一个非正统的对手时,一个战士不太能够预测他们的非正统对手的行动。据信,在网球、板球和棒球等其他运动中也存在同样的优势。为了给出一些数字背景,德国奥尔登堡大学的 Florian Loffing 博士在 2009 年至 2014 年间进行了一项研究,他收集了羽毛球、壁球、网球、乒乓球、板球和棒球前 100 名球员的名字和惯用手。他的发现是,在男子棒球比赛中,30%的人是左撇子,而在女子网球比赛中,这个数字是 19%。这些数字远远高于总人口,男性和女性分别约为 10.3%和 7.7%。
这种优势实际上存在于 MMA 领域还是只是一种普遍的误解?如果它确实存在,仅仅是因为战士们对非正统的对手准备不足,还是有比看起来更多的原因?
在接下来的部分中,我将带您了解我解决这些问题的方法,从数据收集、清理和特征工程,到分析,最后是我对结果的解释。
如果您想了解代码,请访问以下链接中的 GitHub 库:
数据收集—网络搜集
在对正统派和非正统派战士进行任何比较之前,我需要掌握一些数据。方便的是,UFC 维护着一个网站,上面有该组织中每个战士的详细资料。这以表格的形式呈现,如下所示。
【http://ufcstats.com/statistics/events/completed?page=all 号
至关重要的是,这张表中包含的信息是关于战士的立场,以及他们的胜利,失败和平局。由此有可能衡量每个拳手的成功,并确定两种姿势之间是否有显著差异。
我使用了 BeautifulSoup 和 requests 库来抓取,因为这为解析 HTML 提供了一个简单的框架。从上面的图片中可以看出,字母表中的每个字母都有一个网页,如果我要获得每个战士的信息,所有这些都需要被抓取。“A”、“B”和“C”页面的 URL 如下:
【http://www.ufcstats.com/statistics/fighters?char=a】T4&page = all
“char= a & page”中的“a”变为“b”…
http://www.ufcstats.com/statistics/fighters?char=b&page = all
然后’ char= b & page ‘中的’ b ‘变成了’ c’…
【http://www.ufcstats.com/statistics/fighters?char=c】T4&page = all
对字母表中的每个字母如此类推。
下面的代码片段展示了如何在一个遍历字母表的 for 循环中完成网页抓取,每次更新 url 以遍历每个页面。
要了解数据是如何被组织成 pandas 数据帧的,请查看本节之前链接的 GitHub 知识库。为了简洁起见,这里不概述这个过程。下图显示了创建的数据帧的前 5 行。
数据争论—清理和功能工程
刮擦是成功的。我现在有了 UFC 组织中每个战士的信息,甚至更好的是,这些数据是由组织本身提供的,因此这些数据必定是高质量的,并且可以随时进行分析。
不完全是。
从上面的数据图可以看出,很多信息都丢失了。对于一些战士来说,诸如身高、臂展和站姿等细节是缺失的,尽管这些是最基本的数据。由于分析的重点是姿态,所有在姿态栏中没有输入的战斗机都被忽略了。不幸的是,这将数据集中包含的战士数量从 3405 减少到 2571。哎哟!
然后是一些特征工程,这意味着将原始特征(胜、负、平)转换成对分析更有用的新特征。我需要创建一个标准化的标准来衡量每个战士的成功率。我想到了两种方法:
- 赢:输比率(总赢数/总输数)
- 胜利:总战斗比率(总胜利数/总战斗数)
赢:输比率的问题是,如果一个战士是不败的,这个比率将是无限的,因为将有一个除以 0。因此,胜率:总战斗率是我选择的衡量标准。然而,新的战斗机也给这种方法带来了问题。如果 UFC 家族的新成员在第一次战斗后有 100%的胜率,这将会扭曲结果并降低分析的质量。我只想要在分析中充分证明自己的拳手,所以我删除了所有少于 5 场比赛的个人。这将数据帧中的行数从 2571 减少到 2421。
其余数据集的细分如下:
- 正统——1886 年战士
- 左撇子——430 战斗机
- Switch — 98 战斗机
- 开放姿态— 6 架战斗机
- 侧身— 1 战斗机
到目前为止,数据清理已经间接移除了除了一个侧身格斗者之外的所有人和几乎所有的开放式格斗者。由于这两个类别的样本量很小,我从分析中去除了这些物质。
统计分析—是时候回答问题了!
这些数据经过了反复推敲和争论,现在已经准备好进行可视化了。乍一看,正统拳手和左撇子拳手的胜率分布非常相似。这令人惊讶,因为左撇子通常被认为是一种优势。看起来转换拳手比正统拳手和左撇子拳手都更成功。这并不令人惊讶。
作为一名数据科学家,我不能接受我对箱线图的解释是事实,这可能只是因为对换战士赢的次数更多。为了确定是否存在统计学上的显著差异,需要进行单向 ANOVA(方差分析)测试。要使单向方差分析成为该数据集的有效分析方法,必须满足两个假设:
- 残差的分布(每个数据点与其组的平均值之间的差)必须是正态的。
- 这些组必须是同方差的。
为了检查残差的分布,我使用 statsmodels 库创建了一个 Q-Q 图。这将绘制理论分位数(正态分布)与样本分位数的关系图。该图是相当线性的,这意味着分布接近正常。单向 ANOVA 检验足够稳健,可以处理轻微违反正态条件的情况,因此我认为第一个假设得到了满足。
为了测试同质性,我使用了 scipy 库中的 Levene 测试。这返回了大于我设置的阈值 0.05 的 P 值,意味着这些组是同异方差的,并且满足 ANOVA 的第二个条件。
方差分析检验的两个假设如下:
- H0(零)——正统拳手、左撇子拳手和转换拳手的胜率没有区别。
- 哈(另类)——正统、左撇子和转换拳手的胜率是有区别的。
我再次使用 statsmodels 库进行方差分析。它返回的 P 值低于预定的阈值 0.05,即使考虑 Bonferroni 校正以减少假阳性的机会。这意味着我应该拒绝零假设,并且在姿态的胜率之间确实有显著的差异。然而,ANOVA 测试并没有告诉我们哪些组之间存在差异。
为了找出哪些姿势的表现彼此不同,我进行了 Tukey 的 HSD 测试,也是来自 statsmodels 库。下表显示,对于正统转换比较和左撇子转换比较,应该拒绝零假设。对于正统-左撇子的比较,应该接受零假设;也就是说,正统拳手和左撇子拳手的胜率没有显著差异。
接下来,使用 Cohen 的 d 公式计算显著成对比较的效应大小。这产生了以下结果:
- 正统转换:d = 0.46
- 左撇子开关:d = 0.45
小于 0.2 的效果大小被认为是小的,大于 0.8 的值被认为是大的。效应大小越大,变量之间的关联越强;这意味着大约 0.5 的影响大小表明,当考虑到转换与正统和左撇子时,拳手的姿势和胜利:总战斗比率之间有相当强的关系。
每种姿态平均胜率如下:
- 东正教:0.70
- 左撇子:0.70
- 开关:0.76
结果的解释
Loffing 博士对左撇子运动员的研究发现,在时间压力较大的运动中,左撇子的代表性更强。他发现棒球、板球和乒乓球是节奏最快的运动,而且这些运动中左撇子运动员的数量也最多。阿伯泰大学的斯科特·哈迪博士提出,这“可能是由于左撇子能够处理快节奏信息的方式”,从而导致更快的反应时间。
答案可能在于左撇子和右撇子的认知差异吗?https://unsplash.com/photos/3KGF9R_0oHs
《神经心理学杂志》2006 年发表的一项奥地利研究发现,左撇子的半球间 times⁴(大脑左右半球之间的交流)明显更快。因此,科学发现表明,左撇子运动员可能有一些认知优势,但这尚未证明是职业体育运动中左撇子过多的主要原因。
从数据集中有姿势信息的拳手中,我发现 22%是左撇子。这是一般人群中左撇子代表的两倍多!这是因为他们的反应时间更快吗?有可能,但如果是这样的话,我们也希望看到他们比正统战士有更高的胜率,但我们没有。正如本文开头所提到的,另一个可能的原因是,在较低水平的竞争中,战士较少接触非正统的对手,因此给了非正统的个人一个优势,从而在精英水平上有更高的代表性。然而,一旦达到这种精英水平,他们的成功并不比其他姿态高,因为战士们在训练营中不懈地准备对抗与他们战斗之夜对手风格相似的陪练。这可能会消除左撇子的任何意外优势。
那么为什么转换战士比其他姿势有更高的胜率呢?原因可能正如人们所料:
- 第一个是,换装战士的箭筒里可能有更多的箭。他们能够从更多的角度进攻和防守,当他们在比赛中途改变立场时,可以打乱对手的比赛计划。
- 第二个原因是,当准备一个转换对手时,一个拳击手必须花时间准备一个正统的对手和一个左撇子对手,这导致对两种风格的准备不足。
抱歉,康纳,左撇子拳手在八角形拳台上不太成功。(https://giphy.com/conormcgregor
改进和未来项目
正如你可能已经注意到的,switch 战斗机的样本量对于这次分析来说是非常小的。对于任何统计分析,更大的样本量总是首选的,因为它减少了机会在你的任何发现中所起的作用。如果有人对自己进行类似的分析感兴趣,我建议扩大你的数据来源,包括其他 MMA 组织,如 Bellator 和 One Championship。事实上,分析的范围可以扩大到包括其他战斗运动,如拳击和泰拳,因为同样的原则适用于战士的立场。
展望未来,我的个人目标是创建一个 UFC 战斗预测器。这将允许用户输入来自该组织的任何两名战士,并使用机器学习算法输出每个战士获胜的百分比机会。如果你对此感兴趣,请在接下来的几个月继续关注。目前,感谢您的阅读!
引文
[1]Florian loff ing 博士,精英互动球类运动中的左撇子和时间压力(2017)
频率依赖性选择可以确保动物和非动物物种中多态性的维持[ 1,2]。在…
royalsocietypublishing.org](https://royalsocietypublishing.org/doi/10.1098/rsbl.2017.0446)
[2] UFC 战斗机统计
[## 统计| UFC
编辑描述
www.ufcstats.com](http://www.ufcstats.com/statistics/fighters?char=a&page=all)
[3]《卫报》:斯科特·哈迪博士
从板球运动员瓦西姆·阿克兰到棒球投手克莱顿·克肖和乒乓球明星丁宁,体育界…
www.theguardian.com](https://www.theguardian.com/science/2017/nov/22/why-do-left-handers-excel-at-certain-elite-sports-but-not-others)
[4] Cherbuin N,Brinkman C,“左撇子个体的大脑半球相互作用是不同的”( 2006)
神经心理学。2006 年 11 月;20(6):700-7.
www.ncbi.nlm.nih.gov](https://www.ncbi.nlm.nih.gov/pubmed/17100514)
数据科学模型构建生命周期
图 1:通过syzygyedu.com拍摄的照片
介绍
当我们遇到一个商业分析问题时,不承认绊脚石,我们继续执行。在意识到不幸之前,我们试图实现和预测结果。
但是这些结果揭示了解决问题的策略吗?
答案是否。我们无法提出一个对业务理解没有任何意义的解决方案。为了提高产品质量,创造市场战略,建立品牌认知,提升客户满意度,我们必须消除复杂性。
在本文结束时,您将了解数据科学建模生命周期中涉及的解决问题的步骤。此外,您可以预测更有意义的解决方案,帮助组织提高生产力。
目录
- 问题定义
- 假设生成
- 数据收集
- 数据探索/转换
- 预测建模
- 模型部署
- 关键要点
让我们深入了解每个模型构建步骤,
数据科学是从海量数据中提取有意义见解的过程。数据驱动的科学由统计数据、预定义的科学功能、分析方法和可视化技术组成,以传递信息。
图 2:通过datasciencecentral.com拍摄的照片
数据科学模型构建生命周期包括一些需要遵循的重要步骤。如果您对开发数据科学模型感到焦虑,那么只需坚持以下步骤。
1.问题定义
图 3:照片通过freepik.com
构建模型的第一步是更全面地理解工业问题。在商业中,直到客户在使用服务时遇到任何困难,问题才会发生。
为了确定问题的目的和预测目标,我们必须适当地定义项目目标。因此,为了进行分析,我们必须首先认识到障碍。记住,优秀的结果总是取决于对问题的更好理解。
2.假设生成
图 4:通过campuscareerclub.com拍摄的照片
假设生成是一种猜测方法,通过这种方法我们可以得到一些与预测目标有显著相关性的基本数据参数。在收集数据之前,我们找出影响目标变量的重要特征。
你的假设研究必须深入,考虑所有利益相关者的每一个观点。我们寻找能够影响结果的每一个合适的因素。假设生成侧重于您可以创建的内容,而不是数据集中可用的内容。
我们举一个贷款审批预测的例子。我们必须获得一些关键的数据特征,这些特征将决定是否批准申请人的贷款请求。这里我们介绍一些特性:
- 收入:如果申请人收入较高,应该很容易获得贷款。
- **教育:**教育程度越高,收入越高,因此我们可以批准贷款请求。
- **贷款额度:**额度越小,贷款获批几率越高。
- **工作类型:**永久或临时
- **以前的历史:**如果申请人尚未偿还其最后一笔贷款金额,则不能批准额外的贷款请求。
- **房产面积:**寻找申请人的私有房产面积(城市/农村)。
- **EMI:**EMI 支付越少,贷款获批的可能性越高。
如您所见,我们已经构建了一些可能影响贷款批准请求的因素。记住,模型的智能将直接取决于你研究的质量。
3.数据收集
图 5:通过mafrome.org拍摄的照片
如果您已经很好地生成了一个假设,那么您就知道要从各个来源收集哪些数据。数据收集是从与分析问题相关的来源收集数据,然后我们从数据中提取有意义的见解进行预测。
收集的数据必须:
- 回答假设问题的熟练程度。
- 详细阐述每个数据参数的能力。
- 有效性来证明你的研究。
- 准确预测结果的能力。
图 6:照片通过questionpro.com
为了做出有效的决策,我们从已有的资源中收集数据。在上图中,我们列出了您可以从中收集数据的所有主要和辅助数据收集方法。在无数个瞬间收集关于产品需求、服务、当前趋势和客户反馈的数据。
4.数据探索/转换
图 7:照片通过analyticsindiamag.com
您收集的数据可能是不熟悉的形状和大小。它可能包含不必要的特性、空值、意外的小值或巨大的值。因此,在将任何算法模型应用于数据之前,我们必须首先探索它。
通过检查数据,我们可以了解数据中明显的和隐藏的趋势。我们找到了数据特征和目标变量之间的关系。你可能听说过一些技术:“探索性数据分析和特征工程”,属于数据探索。
通常,数据科学家投入 60–70%的项目时间来处理数据探索。
数据探索涉及几个子步骤:
特征识别:
- 您需要分析哪些数据功能可用,哪些不可用。
- 识别独立变量和目标变量。
- 确定这些变量的数据类型和类别。
单变量分析:
我们逐一检查每个变量。这种分析取决于变量类型是否是分类的和连续的。
- 连续变量:我们主要寻找数据集中的统计趋势,如均值、中值、标准差、偏斜度等。
- 分类变量:我们使用频率表来了解每个类别的数据分布。我们可以应用 value_counts() 或**values _ counts(normalize = True)**函数测量值的出现次数和频率。
多变量分析:
双变量分析有助于发现两个或多个变量之间的关系。我们可以找到相关性热图在连续变量和分类变量的情况下,我们寻找它们之间的关联和分离。
填充空值:
通常,数据集包含空值,这会降低模型的潜力。对于连续变量,我们使用特定列的平均值或模式来填充这些空值。对于出现在分类列中的空值,我们用最频繁出现的分类值替换它们。请记住,不要删除这些行,因为您可能会丢失信息。
特征工程:
我们从现有的过滤数据中设计更有意义的输入数据,以加强机器学习模型。在这里,我们结合了两个数据特征,将分类参数转换为连续参数,缩小了连续变量的范围,等等。有一些有意义的特征工程技术,例如,
- 宁滨
- 对数变换
- 一键编码
- 缩放
- 分组
- 异常值处理
- 特征分割
阅读这里的了解更多关于特征工程技术的信息。
5.预测建模
图 8:通过disrubtionhub.com的照片
预测建模是一种基于输入测试数据创建统计模型来预测未来行为的数学方法。
预测建模涉及的步骤:
算法选择:
当我们有了结构化数据集,并且我们想要估计连续的或分类的结果时,我们使用监督机器学习方法,如回归和分类技术。当我们有非结构化数据,并希望预测某个特定输入测试样本所属的项目群时,我们使用无监督算法。一个真正的数据科学家应用多种算法来获得更准确的模型。
列车型号:
在分配算法并方便地获得数据后,我们使用应用首选算法的输入数据来训练我们的模型。这是确定独立变量和预测目标之间的对应关系的动作。
模型预测:
我们通过向训练好的模型提供输入测试数据来进行预测。我们通过使用交叉验证策略或 ROC 曲线来测量准确性,ROC 曲线可以很好地导出测试数据的模型输出。
6.模型部署
图 9:qrvey.com 通过的照片
没有什么比在实时环境中部署模型更好的了。它有助于我们获得对决策过程的分析见解。为了让客户满意,您需要不断地用额外的特性更新模型。
为了预测商业决策、规划市场战略和创造个性化的客户兴趣,我们将机器学习模型集成到现有的生产领域中。
当你浏览亚马逊网站,注意到产品推荐完全基于你的好奇心。和亚马逊一样,网飞根据你的观看历史和几个兴趣给你电影的建议。您可以体验到利用这些服务的客户参与度的提高。这就是部署的模型如何改变客户的心态,并说服他购买产品。
7.关键要点
图 10:digitalag.osu.edu 通过拍摄的照片
通过阅读文章,我们总结出以下几点:
- 理解商业分析问题的目的。
- 在查看数据之前,先提出假设。
- 从众所周知的资源中收集可靠数据。
- 将大部分时间投入到数据探索中,从数据中提取有意义的见解。
- 选择签名算法来训练模型,并使用测试数据进行评估。
- 将模型部署到生产环境中,以便用户可以使用它,并制定策略以有效地做出业务决策。
最终路线图
图 11:通过datarobot.com的照片
所有人都在这里,
在我的下一篇文章中再见。
你好👋我希望你能从我的文章中获得知识。如果你愿意支持我,请随意给我买些咖啡🙏☕
【https://www.buymeacoffee.com/amey23】T5T6
或通过 ameypband23@gmail.com 联系我
乐意为您效劳。
数据科学、音乐和体育。第 1 部分:数据收集-假设检验
一项评估音乐对跑步的影响的实验,并开发一个推荐系统来提高成绩
照片由 作者
可穿戴设备和移动设备被广泛用于记录和提供与健康和身体表现相关的许多活动的实时信息。在下面的文章中,我们描述了我们为评估音乐对跑步的影响所做的实验。通过同步时间序列的统计分析和机器学习,我们开发了一个个性化的歌曲推荐系统,可以提高您的运行性能。
在第 1 部分(你在这里)中,我们介绍了实验设置、数据收集和处理,以及音乐对跑步影响的初步评估。
在 第二部分 中,我们介绍了特征工程、验证模式、回归模型以及推荐系统的构建。
你有没有想过锻炼时听的音乐对你的表现有什么可测量的影响?试图找到这个问题的答案是一个很好的动机,通过几周的禁闭和未来不确定和主要是单独训练课程的前景来锻炼。在这些博客文章中,我们描述了一个案例研究,目标是开发一个音乐推荐系统来提高运动成绩。我们结合使用流行的流媒体应用程序对音乐记录的分析,以及通过知名运动手表品牌在跑步锻炼中记录的身体数据。我们关注完整解决方案工作流程背后的数据科学构建模块,而不是编码。然而,我们指出了一些有助于在 Python 环境中重现工作流的库和函数。嗯,只有在你锻炼了几个星期的跑步能力之后;).
**我们在这里介绍的数据科学原理适用于利用时间序列实现多种目的的解决方案:**监控健康状态;提高驾驶安全;在敏感活动中提高注意力;提高工作绩效;或者只是为了获得你最喜欢的运动训练。它们适用于供应链需求、销售预测、贸易或医疗和药物测试等领域的解决方案,更不用说现实世界的应用了。
实验设置
为了实验,我们记录了几周的跑步锻炼数据。此处引用的图和数字基于单个转轮( N=1 统计分析);我们对第二个流道进行了类似的设置,以进一步验证该过程。
随着智能设备的运行,我们已经在处理任何数据科学项目中最具挑战性的部分之一:数据记录。这项研究包括 52 份不同的锻炼记录。来自运动手表的数据包含 GPS、加速度计和心率传感器数据(光学手腕传感器)。同时,我们收集并同步在练习期间流传送的音乐的数据(如果有的话)。我们还从离训练地点最近的气象站收集气象数据**。这导致时间序列的组合具有一秒的采样率,除了天气数据,其在跑步锻炼中的变化我们忽略。**
处理完数据后,我们首先尝试一个简化的假设检验来评估音乐对跑步表现的影响。其结果表明,多变量分析是必要的。因此,我们训练一组回归算法,旨在预测跑步锻炼的每个下一个时间间隔中的跑步表现。他们将预测建立在截至该时间点的所有记录数据的基础上。我们检查增加与锻炼中播放的音乐相关的特征是否提高了算法的预测能力。我们为此研究(调整后的)决定系数,因为该系数说明了响应变量(运行性能)和预测器特征之间的依赖强度。通过研究音乐特征是否提高了系数,我们可以评估音乐对跑步的实际影响。我们利用回归器,构建一个解决方案,由选择在每次跑步练习中最大化性能的歌曲,推荐给进行流式播放。
图片由 作者
在这个过程中有很多需要注意的地方,我们会在整篇文章中讨论。其中最具限制性的是实验参与者的样本。只有两名跑步者参加了这项活动,所以这里的结果说明了音乐对他们跑步表现的影响。此外,一个可推广的实验设计应该以跑步练习的重复为目标,将所有条件的变化最小化,除了正在播放的音乐的变化。也就是说,在一天中的同一时间,在相同的天气条件下,在相同的预赛疲劳程度下,在相同的跑道上进行固定距离和高度的锻炼,并进行相同类型的测试。为一个人保持这样一个单调的设置和几千分钟的跑步时间会挫败我们尝试自己的动力。相反,我们决定按照不同的跑步计划进行训练。虽然这在评估音乐对表现的影响时会有影响,但是概括这个实验并不在最初研究的范围之内。我们仍然希望管道,工作流程和讨论的想法,将激发未来的通用方法。
数据收集:带有极坐标的运动数据
极地访问链接 API
对于每一次跑步练习,我们都使用 Polar 设备(Polar Vantage M)来记录跑步的物理变量。类似的实验也可以用其他设备进行,例如 Garmin 或 Suunto 的设备。对于每次锻炼,运动手表会以每秒的采样率记录 GPS 轨迹、心率和跑步节奏。将设备与 Polar flow 应用程序同步后,记录的数据可供用户使用。
对于自动数据收集,我们使用官方的 Polar Accesslink API 。对于几个开发的函数,我们利用了 API 周围的公共 python 包装器。API 在事务模式下工作以获取记录的数据,仔细研究数据可用性的含义和检索练习的最佳实践。为了获取任何用户数据(包括锻炼记录),每个用户必须在数据收集之前接受开发的应用程序的相关访问权限。只有这样,新的应用程序才能访问新的练习。
一次跑步锻炼的时间序列。我们显示了用 Polar Accesslink API 收集的速度、心率、高度和节奏;导出的间隙效率;以及通过 Spotify API 收集的在锻炼过程中流动的歌曲的基调、能量和节奏。
如上图中的练习所示,使用 API,我们从几个 Polar 设备传感器中恢复数据。对于这个实验,我们没有使用原始的 GPX 轨迹文件,而是消耗了 API 直接提供的速度,以及心恨、海拔和跑步节奏。每次锻炼的平均持续时间(距离)为 56 分钟(11 公里),总记录为 2200 分钟(给定装置采样率 131974 秒)。我们决定遵循一个不同的训练计划,而不是重复完全相同的练习。锻炼包括基础跑、渐进跑、速度跑、爬坡跑和法特莱克跑(如图中的锻炼情况)。课程的结构通常是相似的:大约 25 分钟的热身,主要的运动,最后是短暂的恢复跑。这三个阶段可以在上图中观察到。
事实上,我们没有以可控的方式测试运行性能,这增加了实验的复杂性。我们如何定义和衡量跑步表现?在跑步训练中,我们的目标不是在特定的跑道上跑得尽可能快。这意味着,我们不能仅仅用完成一条赛道所需的时间来衡量成绩。相反,我们需要定义一个对所有不同的法特莱克跑、基础跑、渐进跑、速度跑和坡道跑都有效的跑步表现指标。
差距效率:一个运行绩效指标
为了定义跑步表现指标,我们研究了心率和跑步速度。正如可以在文献中找到的那样(看一下这里的和其中的参考文献),这两个变量之间的关系可以与锻炼的改善相关。这个想法是,在高强度跑步期间,如果我们设法保持恒定的速度,心率往往会随着时间的推移而增加。相反,如果我们以恒定的心率跑步,速度会随着时间而降低。此外,在耐力训练后,稳态亚极量运动期间的心率随时间而降低。因此,我们可以假设心率和速度之间的关系是评估跑步表现和长期训练效果的代理。我们从一个简单的指标定义开始,我们称之为运行效率:
有了合适的单位,效率就是我们每次心跳前进的距离。请注意,当观察两个不同的跑步者时,比较他们以这种方式定义的效率可能对评估谁是更好的跑步者没有用处。然而,这里我们总是比较跑步者在某个时间的效率和其他时间的效率。这样,效率的显著提高可能与性能的提高有关。
到目前为止,这个定义忽略了一个重要的变量:仰角增益。为了包括它的影响,我们使用了一个等级调整步速 (GAP)模型。这些模型的想法是找到一个跑步者用同样的努力可以达到的等效速度,但是是在平地上跑,而不是在实际的坡度上。至于具体的差距模型,我们基于斯特拉发这里展示的模型。给定当前和先前时间戳的高度和距离,我们计算梯度。梯度通过查看间隙模型曲线来设置步速调整;一旦乘以速度,我们就得到间隙速度。这确实是我们用于最终定义的量。在一些经验观察之后,我们还决定使用跑步者的心率相对于静息脉搏的差异:
如上图所示,我们展示了之前相同法特莱克练习的差距效率分布。我们注意到,我们用于实验的运动手表设备没有气压计。高度是基于 GPS 信号测量的,这是不确定性的来源。为了处理这一点,我们训练了一个简单的基于k-means聚类方法的异常检测算法。我们通过观察速度、心率和海拔来决定海拔测量是否有效,或者是否是不精确的测量。如果不被接受,间隙校正被设置为 1,因此间隙速度只是原始速度。此外,我们将最大修正值设置为 17%的梯度,因为这是我们根据已知的赛道地图计算出的最大梯度。在任何情况下,大多数练习都是平的,以避免不正确的海拔读数或不适合在山上跑步而导致的偏差。
作为练习开始后时间的函数的差距效率。散点图包括所有记录的练习。以 1 分钟的间隔对值进行采样,这些点描述了该分钟内的平均间隙效率。
在上图中,我们展示了一名参与者所有锻炼的差距效率与锻炼时间的散点图。对于该图,我们采用一分钟内的平均间隙效率对间隙效率进行重新采样。我们减少了没有足够运动的时间,这对应于热身后拉伸的阶段。在组合所有不同的记录练习之后,不再有明显的练习结构。与上图中的 fartlek 相反,其相位在间隙效率图中仍然有些可见。散点图中显示的是差距效率随练习时间而降低的趋势:请注意绘制点上的负趋势。鉴于差距效率的定义和上述发现,这是预料之中的。纵轴上的变化是训练类型、天气条件、预赛疲劳以及我们将要评估的音乐流的结果。这些变化也是由于持续的耐力训练。经过几周的实验,我们的差距效率有上升的趋势。
我们注意到,锻炼的平均间隙效率与 Polar 提供的 跑步指数 之间存在明显的相关性。在陡坡跑步中出现了一些差异,因为跑步指数似乎低估了与间隙效率相关的努力(反之亦然)。然而,所有练习的总体趋势是一样的。
极坐标数据技术细节
除了polar-access link包装器之外,练习数据的处理可以用 Pandas、 来完成,包括时间序列的常用函数(如 shift 和 rolling ),加上 datetime 模块中的一些函数,以及您首选的 k-means 的实现(例如从
来自极性传感器的异常读数的处理可能具有挑战性。其中一些读数是运动手表有限的精确度所固有的,比如我们已经讨论过的高度测量。速度和心率测量通常是稳定的,问题较少。请注意,在锻炼时暂停手表会阻止与音乐流媒体应用程序记录的数据进行任何准确的同步。我们避免暂停设备上的锻炼记录,而是使用了分段选项。因此,在一些锻炼阶段需要特殊处理:刚开始后,拉伸时,在红绿灯处停下来等。为我们在第二部分中描述的回归模型找到并纠正这些需要一点想象力,再加上一些更反常的检测。不过不要太复杂。
数据收集:Spotify 的音乐数据
Spotify 和 Spotipy
对于音乐唱片,我们使用 Spotify 应用程序。请注意,一小部分练习是在没有任何音乐的情况下完成的,以便与无声练习进行比较。使用官方的 Spotify API 自动检索跑步时播放的音乐。对于一些函数,我们使用一个公开可用的 Python 包装器, Spotipy 。从 API 中检索任何数据都必须遵循一个授权模式。特别是,由于我们感兴趣的不仅仅是音乐特性,还有特定用户播放的歌曲,这些必须事先提供适当的许可。
为了获得一个练习的音乐特征,我们检索相应用户最近播放的歌曲。请注意,由于配额相当有限,最好在每次练习后自动获取歌曲。一旦我们播放了歌曲(以及它们的时间戳),我们需要获得一些歌曲特征**。这些是一些量化的描述符来描述歌曲,这样我们就可以估计它们对跑步表现的影响。为此,任何音乐爱好者都会觉得 Spotify API 很吸引人,因为它提供了大量的音乐信息。音乐分析确实是一个充满活力的领域,有着广阔的发展前景,例如最近使用深度学习的音乐一代的发展。然而,对歌曲的深入分析超出了这个实验的最初重点。相反,我们直接使用 Spotify API 计算和提供的音乐功能列表。在这里看看他们的定义。**
歌曲特色
歌曲特征包括基本描述符,如歌曲的 持续时间 (需要同步 Polar 和 Spotify 记录)、速度、使用数字符号的估计总体(标准音高类别)、模态*、拍号 、 录音 响度像能量这样的东西被定义为一种强度和活动的知觉尺度;和,*与歌曲上人声的存在有关;一个与检测一张唱片上的受众有关的特征,;声学;还有节奏的其他方面的特征,如歌曲的或。****************
对这些特征的计算缺乏控制似乎是一种限制。然而,它们可以通过 API 直接获得,并且它们被链接到直观的定义,这对于我们最初的解决方案的范围来说是足够的。我们把对另类音乐特性的深入探索留给了未来。在上图的底部,我们描绘了在法特莱克练习中播放的歌曲的基调、能量和节奏。这些是类似阶跃的时间序列,因为不考虑歌曲内的变化。我们让 Spotify 根据几个不同性质的播放列表播放歌曲。我们主动选择播放不同的音乐来丰富实验。
Spotify 数据技术细节
除了使用 Spotify API,你可能还需要 熊猫 。需要特别注意将音乐数据与运动手表记录同步。
自相关时间序列的假设检验
一旦数据收集过程就绪,我们将继续研究在播放音乐的练习和没有播放音乐的练习之间,测量的间隙效率值是否存在差异。对于两种类型的练习,间隙效率的分布显示出相似的形状。然而,有音乐的练习的平均间隙效率比其他练习的稍大。为了评估这种差异的统计意义,我们进行了假设检验。我们首先要处理的事实是,间隙效率表现出相当大的自相关性。这种情况在 45 秒左右的滞后时尤为明显。它们是基于心率定义的间隙效率的结果,心率是对跑步努力的反应。
左图:上述 fartlek 练习的差距效率自相关函数。右图:学生 t 检验的 p 值,用方差膨胀系数进行了调整,这些值是针对可变的最低要求速度(km/h)显示的。
这在上图的左面可以看到。在那里,我们显示了用于说明的跑步练习的间隙效率自相关函数。自相关减少,并在大约 45 秒的滞后之后不再显著。由于练习的结构,有一些次要的峰值。对于上面的法特莱克,大约 360 秒的滞后有显著的正自相关。以及在大约 120 秒处的第三(几乎)显著的负自相关。这是因为 fartlek 分为 6 个高强度的 4 分钟间隔,然后是 2 分钟的慢速跑步。请注意,当将所有练习放在一起考虑时,不同结构的法特莱克、基础、进度、速度和坡道跑的组合,除了小滞后的初始自相关之外,消除了任何显著的自相关。
自相关的存在会影响统计检验的结构。学生的 t 检验例如假设测量样本是独立的,但是当存在相当大的自相关时,这就不成立。由此产生的结果是低估了样本方差,因为我们会错误地认为测量值比实际测量值多。当方差出现在检验统计量的分母中时,它会被夸大,导致对零假设的不合理拒绝。简单地说,如果我们不考虑自相关性,通过一个普通学生的 t 检验,我们可以得出结论,音乐练习与其他练习的差距效率有显著差异。为了解决这个问题,我们实现了一个如这里所描述的适应性测试。这个想法是为了说明自相关计算方差膨胀因子包含在测试统计中。这些校正也被称为时间去相关或调整后的有效样本大小。
**经过这种调整后,修正 t 检验的结果表明,当包括所有记录的数据点时,有音乐和无音乐锻炼之间的差距效率差异在统计上不显著。然而,这仍然是一个过于简化的测试。这个测试没有考虑实验中所有其他变量的影响。如果我们根据跑步速度来比较音乐对差距效率的影响呢?这就是我们在上图右侧面板中显示的内容。我们将来自方差膨胀 t-test、的 p 值描述为最小所需速度的函数,以将数据点包括在测试中。有趣的是,一旦我们开始关注速度更快的运动阶段, p 值就会下降。这就是,听不听音乐之间的差异变得更加显著。这种情况发生在 16km/h 左右,此时差值接近 95%的置信水平。对于更高的速度,差异开始变小,并且 p 值再次增加。
一个合理的解释是,当我们考虑所有数据点时,包括缓慢阶段(热身、恢复等),测试显示音乐对间隙效率没有显著影响。但当我们加速到次最大努力时,音乐流会发挥一些作用,差距效率的差异变得更大。直到我们达到一个速度(和努力)太高,音乐不再发挥作用。这与一些现有的关于音乐对体育运动影响的文献是一致的,检查分离这里。虽然解释很有趣,但我们所做的测试仍然过于简单,无法得出结论**。但它指出,需要对变量进行整体考虑,以评估音乐对跑步表现的影响。这进一步激发了我们在本博客系列的第 2 部分中提出的使用回归变量的**多元分析。****
变量之间的相关性研究和其他初始描述性分析,揭示了这些差异。但是为了限制这篇文章的篇幅,我们没有在这里明确地展示它们。这些发现反映在博客系列的第二部分中。
自相关数据技术细节
为了计算自相关函数,我们使用stats model模块中的函数,例如 plot_acf。对于方差膨胀t-检验我们实现了我们自己的检验,但是使用了scipy . stats模块用于t-检验累积分布函数。**
展望
可穿戴设备为我们提供了在体育锻炼中连续记录数据的可能性。我们已经描述了如何收集和处理 Polar 设备和 Spotify 应用程序记录的跑步锻炼数据。我们已经对音乐对跑步表现的影响进行了简单的分析。我们构建的数据集将在博客系列的第二部分中使用,以进一步评估这一点,并构建一个可以提高我们运行性能的音乐推荐系统。
续 第二部分 :回归与推荐系统
此处提到的品牌都没有直接参与本实验
数据科学、音乐和体育。第二部分:回归推荐系统
一项评估音乐对跑步的影响的实验,并开发一个推荐系统来提高成绩
照片由 作者
便携式记录设备的日益普及导致了人工智能解决方案在多个领域的兴起,如体育科学。在这一系列的博客文章中,我们描述了我们为评估音乐对跑步的影响而进行的实验。通过对跑步锻炼记录的统计分析,我们开发了一个个性化的歌曲推荐系统,可以提高你的跑步成绩。
在第 2 部分(你在这里)中,我们介绍了机器学习框架:特征工程和验证模式。我们描述了使用回归来评估音乐对跑步表现的影响,并且我们构建了一个个性化的音乐推荐系统来增强它。
在 第一部分 中,我们介绍了实验设置、数据收集和处理,以及音乐对跑步影响的初步评估。
可穿戴设备记录的数据是健康和体育行业应用的强大资源。在这个博客系列中,我们描述了一个利用跑步锻炼中收集的数据的案例研究。我们使用 Polar 运动手表来记录身体数据,而 Spotify 应用程序则播放音乐。使用相关的 API,在第 1 部分中,我们构建了数据集并介绍了实验设置。我们定义了一个指标来评估运行性能(差距效率),讨论了数据集的多个方面。我们的结论是,要确定音乐对运动表现的影响,多变量分析是必要的。所有的数据都准备好了,我们现在开始分析。
我们构建了一个机器学习解决方案,将跑步锻炼中记录的数据作为输入,直到特定的时间点。该解决方案处理该数据并预测锻炼的下一个时间间隔的跑步表现。它基于回归算法、、,这些算法是按照为时间序列定制的验证模式对之前的锻炼记录集合进行**、训练的。通过这个过程,我们建立了算法的初始能力,以利用收集的数据集预测未来的运行性能。接下来,我们添加与流传输的音乐相关的输入特征**,并量化这种添加对回归预测能力的影响,特别是对调整后的决定系数的影响。当这种添加导致显著改善时,这表明音乐可能对跑步表现变量有真正的影响。我们展示了如何在每个相关时间找到最大化预测间隙效率的歌曲**。解决方案变成了音乐** 推荐系统来 提升运行性能。
这篇文章中的方法和技术适用于处理时间序列的许多问题,例如销售或需求预测。我们关注数据科学概念,而不是编码实现。然而,我们在整篇文章中列出了在 Python 环境中重现工作流的相关库和关键函数。
特色工程
数据重述和重采样
练习的数据由 Polar 以每秒的采样率记录,有关数据收集的详细信息,请参见第一部分。在我们的实验中,有几个原因需要重新采样。首先,间隙效率被定义为涉及速度和心率的比率:
由于心率对努力的变化是反应性的,这些变化只有在一段时间后才会在间隙效率中显示出来。第二,一秒钟的采样率对运动手表传感器的有限精度更敏感。当速度、心率或海拔高度的异常读数在一段时间间隔内下降时,处理这些读数会更容易。第三,我们有兴趣研究跑步时听一段时间歌的效果。解决方案必须在该时间范围内提供建议,没有必要每秒都提供建议。有了这些动机,我们将锻炼数据重新采样成 90 秒的间隔。
从跑步锻炼到 1.5 分钟间隔的时间序列。我们描绘了根据极坐标数据计算的速度、心率和间隙效率;以及从 Spotify 数据中播放的歌曲的调、能量和节奏。
有了这些时间窗,差距效率不再仅仅主要由先前的样本工作给出。累积疲劳的影响(通过自锻炼开始以来的速度、海拔增益或心率的记录)、相同时间间隔内的努力或听音乐的影响都将对算法的预测能力产生更大的影响。初看起来,重采样的具体大小可能是任意的。我们试验了各种大小,结论是 1.5 分钟是一个很好的平衡选择。它超过了 45 秒的阈值,此时间隙效率自相关不再重要。它给我们留下了足够的记录数据点来训练回归者。
在上图中,我们展示了我们在本博客系列的第 1 部分中用于演示的 fartlek 练习的一些重采样分布。对于每 1.5 分钟的时间间隔,这些值被定义为该时间内记录数据的平均值。
滞后、滚动和扩展窗口
利用重采样数据,我们给出了特征工程过程。我们遵循一种基于多种大小的移动时间窗口的方法。窗口的大小取决于数据与 t 的接近程度。这个想法是,我们越回溯到过去,数据就越不需要详细。为了让回归变量预测跑步锻炼时间 t 的差距效率(回归变量目标,我们输入以下信息:
- 在 t-1、t-2、t-3、t-4 和 t-5 的心率、速度、步频、间隙速度、仰角增益和间隙效率。
- 从 t-6 到 t-15 这些变量的平均值。
- 从开始到 t-1,这些变量的平均值。
- 从开始到 t-1 运行的时间和距离。
- 之前练习的平均间隙效率。
- 温度、湿度、风速和大气压。
这些加起来有 49 个输入特征。这种构造起初看起来有点武断,我们实际上测试了几种变化。我们添加和删除变量,我们包括更多和更少的滞后,增加和减少移动窗口大小等。在每个数据科学项目中,特征工程是建模最重要的部分之一。特性的最终选择源于验证阶段本身,因为添加更多的特性不一定能提高性能。我们输入足够的信息特征,同时避免让模型面临维数灾难及其所有后果。
为了预测跑步锻炼在时间 t 的差距效率(回归量目标),回归量特征根据之前时间间隔的信息以及天气信息构建。参见正文中的描述。
编码技术细节
对于重采样和特征工程过程,我们使用 熊猫。 时间序列的一些有用函数是滞后特征的 sshift,移动平均窗口的 rolling ,可变大小窗口的 expanding 。
训练和验证:锚定前向链接
验证模式
在特征工程过程之后,我们有来自许多跑步练习的多个数据点来训练。因此,解决方案涉及多个时间序列(每个跑步练习一个),我们需要一个仔细的模式来选择和验证模型。天真的交叉验证过程很容易导致数据泄露,因为我们最终可能会使用未来的数据点来训练一个预测过去的模型。这似乎不像销售预测、交易或供应链需求等其他预测问题那样敏感。但是考虑到我们在第一部分中描述的长时间耐力训练对差距效率的影响,我们在这里也需要小心。
对于验证过程,我们使用一个叫做锚定前向链接的嵌套交叉验证模式。这个过程(和变化)也被称为日前向链接,或滚动原点重新校准评估。正如在任何数据科学问题中一样,我们首先分离一些最近的运行练习来构建测试集。这些仅在最后使用,以估计样本外的估计模型性能。来自其余跑步练习的数据点构建了训练和验证集。我们需要一直保持这些跑步练习的时间顺序**。这些多个时间序列用于执行模型选择:**
- 我们选择第一训练阶段的跑步练习次数。在下图中,我们从训练和验证集中一半可用的跑步练习开始。
- 对于每个模型和超参数选择,我们在来自该选择的数据点集合上训练回归器。一旦被训练,模型在上预测来自训练和验证集中下一个可用锻炼记录的数据点。
- 我们将最后一次跑步练习添加到我们用于训练的练习集合中,然后依次重复这个过程。
- 一旦我们穷尽了训练和验证集中可用的跑步练习,我们就平均所有计算的验证指标(在下面的例子中,V1 到 V9)以获得特定模型和超参数选择的验证指标。
这些验证指标用于选择模型和超参数的最优选择。为了评估样本外的性能,我们继续进行一个类似的正向链接过程,添加我们在测试集中分离的跑步练习,并在最后对指标进行平均。
我们决定锚定训练窗口,始终包括第一次记录的练习的所有内容。通过这种方式,我们最大化了我们在每一步用于训练的数据点。或者,我们可以在每个步骤上实现固定大小的滚动窗口,确保我们总是使用等量的最近记录的练习进行训练。然而,随着我们向前发展,拥有更多数据点的影响超过了拥有旧数据的影响,因为耐力训练对差距效率的改善是缓慢的。
锚定正向链接:每个块代表一个跑步锻炼记录(它本身包含多个数据点)。最近的跑步练习被分开以测试估计的模型性能。其余跑步练习的数据点构建了我们用于模型选择的集合。正文中描述了顺序过程。
回归度量
为了评估添加额外输入特性的影响,我们研究了常规和调整后的决定系数 ( r )。我们还研究了平均绝对误差(MAE ),而不是平方误差,因为我们不希望指标过多地受到异常值的影响。
回归模型
作为第一个基准,我们考虑一个简单的解决方案,它只是预测在时间 t 在 *t-1 观察到的间隙效率。*如果我们不能改进该模型的结果,这将表明在实验中缺乏预测能力。幸运的是,这里的情况并非如此。
至于机器学习回归器池,我们考虑一族具有组合 L1(拉索)和 L2(岭)正则化项的线性模型。它们结合了线性和多项式特征,以允许非线性关系。由于它们不是数据饥渴算法,我们考虑支持向量回归,测试几个内核。我们训练随机森林回归器,因为它们通常有助于设定合理的模型基准。我们还基于 XGBoost 训练梯度推进回归模型。正如我们将看到的,这些通常会导致对稀缺数据集的过度拟合。
转到日益复杂的模型,我们研究了卷积神经网络 (CNN)和长短期记忆 (LSTM)网络的性能。对于这两种情况,代替上述的特征工程过程,我们在跑步练习中直接输入记录到预测时间 t 的重新采样的跑步变量。CNN 的想法是将变量的光谱视为具有多种颜色的伪图像(每个特征一种颜色)。我们预计这些是数据饥渴模型,暂时在实验中扮演次要角色。一旦我们积累了更多的训练数据,我们期待有一个深入的探索。
对于所有模型,有限的数据集给带来了额外的压力,以确保适当的正则化技术到位。请注意,一些正则化过程需要进行特征缩放。
模型技术细节
线性回归是从scikit-learn*(elastic net)。从那里,我们使用管道、多项式特征、* 缩放器、mean_absolute_error、和 r2_score 函数,以及RandomForestsRegressors和 SVR 。对于梯度增强,我们依赖于 xgboost 、,而神经网络是使用 Keras *实现的。*我们使用 itertools 到实现嵌套的交叉验证模式。
差距效率预测
基本输入功能
验证后,最佳模型的表现优于朴素模型,验证 MAE 为 0.14,比朴素模型小 47%。跑步锻炼数据中的部分模式因此被这个最佳模型恰当地捕获。由于累积的疲劳、慢步速阶段后间隙效率的增加、海拔增益的影响或天气变量,这些都是练习中间隙效率差异的部分原因,所以练习期间间隙效率的总体负趋势。如最佳决定系数r0.3 所示,而对于简单模型,该系数为负。尽管如此,最佳模型值仍然不太乐观。
正如我们在第 1 部分中解释的,我们遵循了不同的跑步计划,包括法特莱克跑、基础跑、渐进跑、速度跑和爬坡跑。与我们在固定轨道上反复运行的设置相比,变化的计划有许多好处,但它有一个众所周知的缺点。间歇效率受心率和跑步速度的影响。在一个多变的计划中,跑步的速度是不断变化的,而且几乎所有的时间都由跑步者的意愿决定。例如,在上述图中的 fartlek 中,在从 11 公里/小时到 13 公里/小时的渐进热身后,fartlek 以大约 15 公里/小时的目标速度跨越 6 个 4 分钟的间隔,每个间隔之后是大约 10-11 公里/小时的低速 2 分钟,最后是 11 公里/小时的恢复阶段。这些目标速度是训练计划的一部分,它们根据具体的跑步时段而变化。由于我们没有向回归算法提供这些信息,因此这些速度上的变化,以及间隙效率上的大部分变化,对于回归模型来说是随机的。
添加速度
因此,为算法提供一些额外的信息似乎是合理的。理想情况下,我们将输入跑步锻炼的类型(法特莱克、进度、节奏等),以及不同阶段的目标速度。这里,作为其代理,我们提供在时间的实际速度作为输入。**这样,在 t 预测间隙效率变得与已知速度下的心率预测相关。我们使用实际速度而不是计划速度的事实可能会使预测有一点偏差。但是由于这个实验是关于在次最大努力下的跑步表现,目标速度和实际速度在 1.5 分钟的时间间隔内没有太大差别。随着这一增加,模型的预测能力增加,最佳模型预测间隙效率的验证 MAE 为 0.11,系数 r ~0.69。
音乐功能
*最后,我们添加歌曲特性,如我们在第 1 部分中所述。这些是一首歌曲的定量描述符列表:持续时间、音调、调式、速度、拍号、响度,加上一些 Spotify 计算的特征:*能量、乐器性、语速、活跃度、声音、效价和可跳性。所有这些特征在这里定义。为了预测在时间间隔 *t,*的间隙效率,我们为在同一时间间隔 *t 期间流传送的音乐添加特征。*由于时间窗口的大小是 1.5 分钟,我们期望音乐的潜在效果已经在同一窗口中可见。检查我们在第一部分的中讨论的解离的内容。
一旦添加了音乐特征,嵌套交叉验证后的最佳模型导致预测能力的明显增加。验证平均误差降低到 0.097,决定系数增加到 r ~0.71。该系数表示响应变量(间隙效率)和预测特征之间的依赖强度。这是通过计算与输入要素的方差相关的间隙效率的方差比例来实现的。因此,这种改进看起来很有希望,因为系数的增加可能表明音乐对跑步表现的实际影响。
然而,在给定当前数据集的情况下,改进仍然不具有统计显著性。尽管调整后的决定系数也有所增加,但验证 MAE 和 r 的改进都小于估算时的不确定性。现在抛弃这些改善不仅仅是统计上的侥幸还为时过早。可能的情况是,当我们收集更多的数据时,我们会得到一个具有统计学意义的结果。但即使在那种情况下,我们仍然需要进一步的探索。决定系数通常是因果分析的一部分,但对它的改进并不直接意味着因果关系。此处介绍的研究将通过进一步的领域专业知识、更一般化的实验和深入的因果推理研究(包括扩展的敏感性分析)进行补充。目前,我们假设预测能力的增加与音乐对跑步成绩的影响有关,这样我们就可以继续构建推荐系统。
上图中记录的 fartlek 练习的差距效率(橙色)、最佳模型的预测(棕色)以及使用推荐系统的预测(深绿色)。
模型可解释性
嵌套交叉验证后的最佳模型是支持向量和线性回归的集合,具有结合 L1 和 L2 项的相当大的正则化因子。线性回归消耗高达三次的多项式特征的组合,而二次和三次组合被严格过滤为交互项的小选择。在验证过程中,通过监控调整后的决定系数来优化过滤过程。这种组合击败了更复杂的算法,如 XGBoost 树或我们构建的神经网络。我们还考虑了一个基于梯度推进线性回归的模型,但它倾向于过度拟合和模糊模型的可解释性。最终的集合是基于平均的*。***
至于特征对预测的总体影响,最大的影响是由于时间 t. 处的速度,预测也受到包括心率、速度和几个滞后处的间隙效率的组合的严重影响。最近滞后的要素对预测的影响更大,影响随着时间的推移而减小。近期心率和速度与预测负相关,而近期间隙效率与预测正相关。累积的高度增益也有助于预测,在这种情况下,较大的值会降低间隙效率:跑步时爬坡会增加很多疲劳。至于天气特征,风越大,预测的间隙效率越低。考虑到风对疲劳的影响,这是意料之中的。有趣的是,大气压越高,间隙效率越高。这与文献中的发现一致,检查那里的中长跑结果。
对于这项研究中的跑步者,最大的音乐特征效果由能量给出。Spotify 将这一变量定义为强度和活动的感知指标。它越大,预测的间隙效率越高。与速度的相互作用项为正,这意味着这种影响随着速度的增加而增加。这与第 1 部分的的 p 值图的讨论一致。由于乐器演奏度和语音演奏度越大,间隙效率越小,因此避免乐器和/或主要语音音轨可以获得更好的运行性能。对于具有更大的可跳舞性的歌曲,间隙效率往往更高,这也具有与速度的正交互项。最后,键越低(标准节距等级),预计该转轮的间隙效率越高。这是我们用这种方法得出的结论类型的简要概述。正如我们在第一部分中强调的,这些仅适用于本次实验的跑步者(N=1 统计分析)。类似的过程将被用于对任何其他人的记录进行个性化。
推荐系统
我们使用训练好的模型来构建一个音乐推荐系统。在新的跑步锻炼中,每当一首歌曲将要结束时,该解决方案都会处理到该点为止的所有锻炼记录数据。当假设在选定的池中流式传输每首歌曲时,它对跑步锻炼的下一个间隔中的间隙效率进行预测。从这些中,系统找到并推荐导致最高间隙效率预测的歌曲*。*因此,最大化预测行驶性能。一旦下一首歌曲将要结束,系统就用更新的跑步锻炼记录重复这个过程。
歌曲库由随机选择的 100 首跑步者在训练中听的歌曲组成。我们的目标是最大限度地提高性能,同时保持推荐符合跑步者的口味。请注意,建议是为特定跑步者定制的*,而也是为跑步锻炼的特定条件定制的。这些是天气、记录的速度、心率、步频、仰角增益和到 t 的间隙效率,以及跑步者为下一阶段训练计划的速度。***
在上图中,您可以看到我们在整个博客系列中用于说明的 fartlek 的预计间隙效率。实际记录的间隙效率以橙色显示,包括音乐特征的上述最佳模型的预测是棕色线。在深绿色中,我们描绘了预测的间隙效率,如果跑步者没有听实际跑步锻炼记录中的音乐,而是听了推荐者建议的歌曲。对于这种特殊的练习,平均间隙效率的改善大约为 1%。在下图中,我们展示了记录中一次连续运行的三条差距效率曲线,以及同一次运行的系统建议。
渐进运行记录的差距效率(橙色),最佳模型的预测(棕色),以及推荐系统的预测(深绿色)。
为推荐器设计一个完全功能性的解决方案超出了这个初始实验的范围。这需要与 Polar 设备和 Spotify 应用程序进行实时集成,以便根据实时运行条件更新推荐的音轨。我们将对这种解决方案及其推广的深入探索留到将来。
以上渐进跑推荐歌曲。截图自Spotify for Linux*。*
展望
我们已经描述了如何使用来自跑步锻炼的数据来构建音乐推荐系统。我们已经从 Polar 设备和 Spotify 应用程序的记录中展示了功能工程流程。我们已经详细介绍了为选择最佳回归模型而构建的训练和验证模式。这些算法根据锻炼时间点之前的可用数据预测未来的跑步表现。音乐功能的加入提高了算法的预测能力。我们利用这一点开发了一个推荐系统。它会在每次跑步锻炼中推荐最能提高跑步成绩的歌曲。
如上所述,结果仍然没有统计学意义。我们将继续收集数据,用更大的数据集重新评估它们。这将允许我们深入构建一个完整的解决方案。
这里提到的品牌都没有直接参与过这个实验