TowardsDataScience 博客中文翻译 2019(四百五十六)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

星巴克的个性化服务——给正确的顾客提供正确的服务

原文:https://towardsdatascience.com/starbucks-offer-personalization-sending-the-right-offer-to-the-right-customer-14d4fbc20575?source=collection_archive---------15-----------------------

基于机器学习的个性化营销

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

星巴克可以说是世界上最成功的咖啡连锁店之一。早在 2010 年,谷歌就率先推出了自己的奖励应用。客户可以获得促销优惠通知,通过移动应用程序订购和支付,并为其订单赢得奖励积分。这使得星巴克不仅可以直接联系顾客,提高品牌忠诚度,还可以收集有价值的第一手顾客信息以及他们的交易行为。

但问题是,所有的用户都得到同样的优惠吗?假设你是星巴克的一名数据科学家,你会如何确定向每位客户发送最有效的优惠,以提高用户参与度?

目标

在这个项目中,我接受了这个挑战,我的目标是使用通过 rewards 应用程序收集的用户人口统计和行为属性来预测向个人客户发送什么样的最佳个性化报价,以最大限度地提高转化率。

此外,我想看看在整个客户群中是否有任何独特的子群,它们表现出特定的人口统计和购买行为模式,这使它们彼此区分开来。

数据集概述

有三个数据文件:

portfolio . JSON——包含每个报价的报价 id 和元数据。它包含以下属性:

  • id(字符串):报价 id
  • offer_type (string):优惠的类型,即 BOGO(买一送一)、折扣、信息(一种饮料的广告)
  • 难度(int):完成出价所需的最低花费。只有最低 BOGO 和折扣优惠,但没有信息。
  • 奖励(int):为完成一项提议而给予的奖励
  • duration (int):报价开放的时间,以天为单位
  • 渠道(字符串列表):手机、电子邮件等。

profile.json —每个客户的人口统计数据。

  • id (str):客户 id
  • 年龄(整数):客户的年龄
  • become _ member _ on(int):客户创建应用帐户的日期
  • 性别(str):客户的性别(有些条目包含“O”表示其他,而不是 M 或 F)
  • 收入(浮动):客户的收入

transcript.json —交易记录和优惠使用记录。

  • 人员(字符串):客户 id
  • 事件(str):记录描述(即交易、收到报价、查看报价、完成报价)
  • time (int):测试开始后的时间,以小时为单位。数据开始于时间 t=0
  • 值:(字符串字典)-根据记录,可以是优惠 id 或交易金额

抄本数据是我将用来设计用户行为特征的主要数据集。它包含模拟数据,模拟星巴克奖励应用程序上的真实客户购买和优惠使用情况,包括购买时间戳和购买金额。该交易数据还包含用户收到的每个要约的记录,以及用户实际查看要约的记录。当用户完成报价时,也有记录。

这是棘手的部分。在要约到期之前,每个要约都有一个有效期。用户可能会收到“买 10 美元买 2 美元优惠”,但用户在 10 天的有效期内从未打开过该优惠。顾客在那十天里花了 15 美元。数据集中会有要约完成记录;然而,客户并没有受到报价的影响,因为客户从未看过报价。对于信息性要约,如果用户在查看要约后的有效期内进行交易,他将被视为完成要约。

挑战

鉴于要约完成的规则和例外,数据清理和特征工程部分变得特别重要和棘手。

该项目的关键部分是从按时间顺序排列的活动日志中总结每个客户的交易行为,以将正确的交易归因于正确的优惠类型,并在用户级别上跟踪它们对不同优惠的转换。然后,这些设计的功能将与用户档案信息(如收入、年龄、性别和他们的会员资格何时开始)相结合,以提供每个客户的整体视图。

考虑到这一点,我解决问题的方法将遵循以下步骤。

(尤指为开车者设计的) 公路交通图

1.**探索性分析&数据清洗:**了解三个数据集,准备数据集

2.**特性工程:**在用户级从事务日志中创建属性

3.**机器学习:**建立一个多输出分类模型,以确定每个客户的最佳报价类型,按照转换的可能性排序

4.**聚类:**找出顾客中的子群体,星巴克可以根据每个群体不同的人口统计学或行为模式来确定不同的目标。

一.探索性分析和数据清理

一、简介数据

年龄和收入分布

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

年龄分布中有一些异常值——在 17000 名顾客总数中,超过 2000 人的年龄超过 110 岁,这似乎是不正确的。我将用 NaN 替换它们,然后填入中值年龄。收入有一个普遍但总的来说,看起来不错。有 2150 个 NaN 记录,稍后我也将填入收入中值。

成员任期

下面的左图显示,在大多数年份,男性顾客的增长远远超过女性。我将成员资格开始日期转换为任期的月数,作为一个数字人口统计属性。右边的直方图显示了分布情况。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

二。投资组合数据

总共有 10 行 10 种优惠类型,因为这是真实星巴克优惠的简化版本。数据非常直观。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

portfolio data snippet

三世。成绩单数据

这是我将使用的最重要的数据集。这是它最初的样子。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

“值”列是一个字典,这里是唯一的键。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以看到“优惠 id”出现了两次——当它带有“奖励”时,事件列显示“优惠已完成”,否则,事件要么是“优惠已收到”,要么是“优惠已查看”。当“金额”不为空时,事件始终为“交易”。

我将字典键分为 3 列:“offer_id”、“amount”和“reward”。两个“offer_id”键被合并为一列。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

frequency of events after the clean-up

然后,我将脚本数据与 offer_id 上的投资组合数据连接起来,以查看不同报价类型之间的事件分布。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

让我们检查一个人的旅程,以便更好地了解他完成要约时的事件顺序。在这种情况下,客户通过两次交易进行了两次报价转换。另外五笔交易是在没有报价的情况下完成的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

问题定义

有效报价转换的理由

为了使要约有效,导致转化的事件将按以下顺序发生:
1 .收到报价- >已查看报价- >交易- >已完成报价(BOGO 和折扣报价)
2。已收到报价- >已查看报价- >交易(信息性报价,但交易必须在有效报价期限内发生)

只有遵守了这两个转换顺序,我们才能认为要约已经完成。

还有几种情况被视为无效报价:
1。收到报价,但客户没有采取任何行动
2。offer received->transact->offer viewed-这也是无效的,因为此人没有在交易中使用该要约
3。在没有报价的情况下交易——这种类型的人无论有没有报价都会交易。从商业角度来看,我们可能根本不需要向他们发送报价。

记住这些,并知道我的目标是预测我们应该发送给每个客户的最佳报价,以最大限度地提高报价转化率,我需要建立一个用户级数据集,其中包括从脚本日志中提取的用户人口统计数据和每个用户的交易行为特征,以及他们对每种报价类型的响应。

二。特征工程

详细地说,这些是我想在用户层面上为机器学习模型设计的功能。

  1. 每种报价类型被接收的次数——用户是否执行报价:bogo_off_receivedinfo_off_receiveddiscount_off_received
  2. 交易总数——交易是否受要约激励:total_trans_cnt
  3. 总交易金额—总交易金额之和:total_trans_amt
  4. 收到的总奖励—从任何优惠类型收到的奖励总和:total_rewards_received
  5. 平均交易金额—总交易金额/总交易笔数:avg_trans_amt
  6. 无要约交易次数——用户在无要约完成事件的情况下交易的次数:trans_cnt_no_offer
  7. 要约完成的交易次数—要约完成事件后用户交易的次数:trans_cnt_offer
  8. 任何报价的交易金额—报价完成事件的总交易金额:trans_amt_offer
  9. 要约激励的交易笔数比率—要约完成的交易次数/总交易笔数:offer_trans_cnt_ratio
  10. 要约激励的交易金额 raio 要约完成事件的总交易金额/总交易金额:offer_trans_amt_ratio
  11. 报价完成与报价浏览比率—完成的报价数/浏览的报价数:off_comp_view_ratio
  12. 要约完成与要约接收比率—完成的要约数量/接收的要约数量:off_comp_receive_ratio
  13. 每笔报价交易金额—包含报价的总交易金额/包含报价的交易笔数:trans_amt_per_offer
  14. 每次报价的奖励—收到的总奖励/完成的报价数:reward_per_offer
  15. bogo 报价完成数—查看 BOGO 报价后,BOGO 报价类型的“报价完成”事件数:bogo_comp
  16. 折扣优惠完成数—查看折扣优惠后,折扣优惠类型的“优惠完成”事件数:discount_comp
  17. 信息报价完成次数——在报价有效期内,查看信息报价后发生“交易”事件的次数:information_comp
  18. bogo 报价转换率—完成的 bogo 报价数/收到的 bogo 报价数:bogo_conv_rate
  19. 折扣优惠转换率—完成的折扣优惠数/收到的折扣优惠数:discount_conv_rate
  20. 信息报价转换率—完成的信息报价数/收到的信息报价数:info_conv_rate

模型的 3 个二元目标变量:

  • bogo_offer (0/1):如果用户在查看报价后,曾经有过 BOGO 报价类型的“报价完成”事件,则 1 否则 0
  • discount_offer (0/1):如果用户在查看优惠后曾有折扣优惠类型的“优惠已完成”事件,则 1 否则 0
  • information_offer (0/1):如果用户曾经有过“交易”事件,之后是“报价已查看”,则信息报价类型为 1 否则为 0
  • no_offer:如果用户从未回复过任何报价,只是在没有报价的情况下交易,那么我们可能没有任何报价推荐。这可以从上面三个报价类型中有三个 0 推断出来。这个变量不会在模型中使用,但可以用作参考。

正如我在开始时提到的,这一过程中最大的挑战是根据优惠类型,通过遵循导致优惠完成的特定事件顺序来识别正确有效的优惠。

本质上,所有有效报价相关特征都可以基于offer completion counttransactions amount from the offer conversion.来计算

特征工程的完整脚本相当长。基本步骤是:

  1. 对于配置文件数据中的每个用户 id,按照时间顺序从脚本日志中获取他们的活动。
  2. 遍历每个客户的交易记录。如果发现“收到要约”事件,根据要约持续时间计算其到期日期。
  3. 对于有效的 BOGO 和折扣优惠,如果“offer_completed”发生在“offer _ viewered”事件之后和到期之前,则在 BOGO/折扣优惠完成中加 1,并合计 offer _ viewered 和 offer_completed 之间的交易金额。
  4. 对于有效的信息要约,由于没有明确的要约转换事件,所以比较棘手。如果有交易发生在“要约 _ 已查看”事件之后,并且在要约持续时间内,那么我们可以假设这些交易是在信息要约的影响下进行的,因此我们将信息要约完成计数加 1,并将要约收到时间和到期时间之间的交易金额相加,作为要约交易金额的一部分。

在这个过程之后,我将用户人口统计数据与工程特性结合起来,作为用户属性的最终面板。

三。机器学习

计划是构建一个多输出分类模型,使用 3 种优惠类型作为目标变量 Y,使用上述工程要素(排除最后 6 个要素,因为这会导致信息泄露)以及个人资料数据集中的人口统计要素作为 x 来预测最佳优惠类型。请注意,用户可能在预测结果中有多个 1,在这种情况下,概率较高的优惠类型将在建议中优先考虑。

因为有多个输出,所以支持多输出的分类器的选择是有限的——决策树家族通常都支持多输出模型。

我会选择随机森林,原因如下:

  • 使用自举来选择每棵树的数据样本,并且在每个节点处仅使用特征的随机子集来决定最大化信息增益的最佳分裂。特征和数据样本选择中的随机化可以显著减少模型方差,从而不容易过度拟合。这是随机森林相对于决策树模型的最大优势。
  • 并行构建一组树,每个数据点分类的最终决定基于多数投票。该过程提供了对特征重要性的更好估计,即从林中的所有决策树计算出的平均杂质减少量。
  • 它不假设目标变量和特征之间的线性关系,使其在识别非线性类边界时更加灵活。此外,树模型在运行模型之前不需要太多的特征预处理,例如标准化或规范化。

模型结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

model performance metrics

模特表演非常好。区分每种优惠类型的转换者和非转换者的最重要特征是什么?

特征重要性

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

feature ranking from random forest

似乎reward_per_offeroffer_trans_amt是最重要的特性。三种产品类型的每种功能有何不同?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

X 轴上的标签分别对应于三种报价类型。当它为 1 时,表示使用该优惠类型的人。例如,(1,1,0)表示对 BOGO 和折扣优惠有反应的人,但对信息性优惠没有反应。

很明显,使用所有三种优惠类型的人不仅在优惠上花费最多,而且交易总额也最高。这意味着我们越鼓励顾客使用优惠,他们就越有可能在店内消费。

此外,总的来说,BOGO 优惠比折扣和信息性优惠推动了更多的销售,因为总交易量较高的三个组都对 BOGO 优惠做出了回应。同样值得注意的是,使用 BOGO 和折扣优惠的人实际上平均花费了超过一半的交易总额。这些是星巴克最活跃、最有价值的顾客。这是一个积极的迹象,证明给予我们的优惠和奖励确实可以提高客户的参与度,从而推动整体销售。

现在,让我们来看看总体优惠完成率、由优惠推动的交易金额比率以及每次优惠的奖励是如何受到用户统计数据的影响的。

按人口统计提供使用情况

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从上面的散点图中获得的关键信息:

  1. 要约完成率在开始时随着任期的增加而稳步增长,当男女用户任期在 20-30 个月之间时达到峰值,然后随着任期的增加而略有下降,尤其是对于男性客户。事实上,随着新用户习惯于应用程序并开始更频繁地利用好处,优惠转化率将会增长。在那个阶段之后,转换率变得平稳。
  2. 在收入达到 80000 英镑之前,报价完成率似乎也与收入呈正线性关系。之后随着收入的增加开始下降。当顾客的收入低于一定水平时,他们更倾向于使用优惠。超过这一收入水平后,使用要约激励交易的效果就会下降。
  3. 一般来说,女性客户的报价完成率高于男性客户,尤其是在任期早期和低收入阶段。
  4. 随着收入的增加,每次报价的平均回报稳步增长。
  5. 在几乎所有的任期、年龄和收入范围内,女性客户也倾向于在每次报价中获得更高的回报。部分原因是女性的录用完成率高于男性。这也意味着女性用户更倾向于使用 BOGO 或折扣优惠来获得奖励,因为信息性优惠不会给出奖励。

接下来,我想检查不同的人口统计群体对三种优惠类型的反应是否不同。

按人口统计的优惠类型

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从这组散点图中有一些有趣的见解。

  1. 收入和任期似乎对出价转换率有显著影响,而年龄则没有。
  2. 在不同的年龄、收入和任期中,女性客户对 BOGO 要约的转化率稳定较高,而在大多数任期中,信息性要约往往对男性客户更有效(图 6)。
  3. 按任期划分的 BOGO 要约转换率显示出与整体要约完成率非常相似的模式——当用户的任期在 20-30 个月之间时达到峰值,然后开始急剧下降。另一方面,折扣优惠转换率随着任期的增加而稳定增长。
  4. BOGO 和折扣转换率都随着收入的增加而增加,在用户收入达到 8000 后略有下降。然而,随着收入的增长,信息报价的转换率持续下降。这是一个非常有趣的趋势,它实际上是有意义的,因为与 BOGO 和折扣优惠不同,信息优惠没有任何最低交易金额,使得使用信息优惠的难度比其他两种优惠小得多。这就是为什么它在低收入群体中更受欢迎。这也解释了为什么上图中每次优惠的奖励随着收入的增加而持续增加——BOGO 和折扣优惠通常都有奖励和使用优惠的最低交易金额,因此它们在高收入群体中更受欢迎。

预测任何给定客户的最佳优惠类型

如果模型预测客户有多种优惠类型,则根据概率的降序对建议进行排序。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

以下是从测试集中随机选择的 20 个客户 id 的推荐优惠类型,较高概率的优惠在前面。如果客户只有交易,以前从未使用过任何优惠,模型将显示“不推荐任何优惠”。在商业环境中,如果用户愿意花 10 美元,我们甚至不需要给他“买 10 美元减 2 美元”的折扣。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

更深一层—具体报价预测

既然我们可以预测最佳报价类型,我想知道我是否可以将它带到一个更细粒度的级别—使用与 X 相同的功能集来预测将哪个特定报价 id 发送给每个客户。我们的想法是,对于只喜欢使用低难度(最低交易)报价的客户,我们可能希望根据报价难度级别而不是宽泛的报价类型向他/她发送报价,因为同一报价类型的难度级别可能在相当大的范围内变化。

组合表中有 10 个报价 ids 个用于信息,4 个用于折扣,4 个用于 BOGO。如果用优惠类型+奖励+难度组合来表示每个优惠 id,可以得到 6 个唯一的优惠名称:“bogo_10_10”、“discount_5_20”、“discount_3_7”、“bogo_5_5”、“discount_2_10”、“informational_0_0”。

由于一些优惠 id 被映射到相同的优惠名称,它们被合并到一列中。如果用户曾经转换过同一类型+奖励+难度组合下的任何优惠 id,则该优惠名称将被标记为 1 else 0。

还是和以前一样,我把 3 个报价类型替换为 6 个报价名称 Y,在 X 中没有太大变化,除了我包括了 3 个在上一个模型中被排除的功能以避免信息泄漏:BOGO 的完成计数、折扣和信息。此外,我创建了一个名为“难度/报价”的新功能,它是使用每个已完成报价的最小交易(难度)的总和/报价完成的总数。我相信这一新功能在很大程度上说明了客户对享受优惠的最低消费的容忍度。

模型性能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

有了这些额外的新特性,模型性能甚至从将报价类型切换到作为目标变量的实际报价得到了改进。为了确保高分不是仅由 0 类中的高准确性引起的,让我们打印每个报价模型的分类报告,它们看起来都不错。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

特征重要性

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如我所料,“难度/报价”显然占据了几乎所有报价模型的主要特性。

预测任何给定客户的最佳报价

以下是使用与上次相同的预测函数从测试集中随机选择的用户的推荐优惠。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四。使聚集

在对发送给每位顾客的最佳优惠类型进行预测后,我想知道在整个星巴克顾客群中,是否有任何针对特定子群体的行为和人口统计属性的通用模式,将他们彼此区分开来。这种方式让我们不仅在个人层面上,而且在市场细分的背景下了解客户,这将有助于针对不同的客户群体制定不同的营销策略,使目标更加精确和有效。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

cluster inertias vs. number of clusters

我在标准化的用户属性上拟合了 KMeans 聚类模型,使用了不同数量的聚类,并在每次迭代中提取惯性。使用肘方法,我决定使用 3 个集群,虽然折线图是非常模糊的。在用 n_clusters= 3 再次拟合模型后,我将数据反向转换回原始比例。

下面是 3 个分类的每个属性的分类中心。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

cluster centers

从聚类中心,我们可以看到三个聚类的平均年龄几乎相同。集群 1 男性远多于女性,平均收入、交易金额和要约完成率最低。集群 0 和 2 在平均成员任期、总交易量和每次报价的交易量方面非常相似。然而,它们对于不同的报价类型明显表现出不同的偏好模式——我们可以通过一些可视化来证实这一点。

集群可视化

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

income vs. total transaction amount by cluster

第 0 类和第 2 类有一些高收入的高消费人群。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

offer completion rate vs. transaction amount with no offer

集群 1 通常对出价没有反应。集群 2 似乎具有最高的平均报价完成率,而集群 0 在没有报价的情况下比集群 2 花费最多。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

群组 0 的信息报价转换率为 0,而群组 2 的人显然在 3 组中最喜欢信息报价。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

transaction amount per offer vs. rewards per offer

集群 0 显然平均每份报价有更高的回报,这意味着他们更倾向于使用回报更高的报价以及相应的更高的最低交易量。

集群描述

从上面的可视化和集群中心,我们可以看到每个集群在他们的交易行为和对不同报价的反应方面都有一套独特的属性,尽管他们在年龄、收入和成员任期方面有着非常相似的人口统计数据。

  • 第 0 类:这一类人受到折扣和 BOGO 等奖励的高度激励,几乎从不回应信息性的优惠。他们的平均收入最高,总交易量与集群 2 相似。虽然他们的报价完成率可能没有第 2 类高,但他们实际上在没有报价的情况下比有报价的情况下花费更多。这个群体是星巴克的常客,他们平均花费最多,对他们来说最有效的优惠是折扣,然后是 BOGO 优惠。
  • 第 1 组:这一组主要是休眠账户,他们通常不经常购物,对报价没有反应,交易也比其他两组少得多。事实上,这个群体中的许多人都被贴上了“无优惠”客户的标签。他们偶尔会使用星巴克的应用程序,但绝对不是星巴克的核心客户群。不出所料,这一群体中男性顾客的比例要高得多,这与我们在按性别划分的报价转化率图表中发现的结果一致。
  • 群组 2:最后一个群组是另一个活跃群组,它在三个群组中具有最高的出价完成率。聚类 0 和聚类 2 之间的最大区别在于,尽管 BOGO 和折扣优惠转换率低于聚类 0,但该组具有非常高的信息优惠转换率。这意味着这部分客户更倾向于使用没有最低交易限制的优惠,我们可能希望优先向他们发送他们更有可能使用的难度较低的优惠。因此,要发送的优惠类型的顺序可能是信息->折扣-> BOGO。

最后的想法

当我第一次开始这个项目时,我的目标只是预测每个客户的最佳报价类型。随着项目的进展,我提出了更多的问题和更多的角度来分析用户行为,这导致了更细粒度的个性化报价推荐和客户细分聚类。

正如我所料,整个项目最具挑战性的部分是特性工程步骤。提取和总结正确的交易和报价使用的用户行为属性集在随后的预测和聚类模型中起着关键作用。

尽管在第一个和最后一个分类的人口统计数据中没有观察到太多的差异,但是分类模型成功地根据客户在行为属性上的差异将他们分开。如果我们可以从其他来源获得更多的用户统计信息,我们可以将 KMeans 识别的组映射回来,以更好地描述每个用户群。

我们还可以通过交叉检查来确认聚类结果是否准确,例如,分类模型是否向聚类 2 中的用户推荐了信息提议。如果结果令人满意,则在可以收集足够的数据用于报价个性化之前,拟合的聚类模型可以用作市场细分的第一步。

我们对客户行为研究得越多,我们就能更好地发送个性化的报价,从而产生更高的转化率,客户参与度和用户粘性也就越高。这是大多数企业努力的目标。

星巴克促销优化

原文:https://towardsdatascience.com/starbucks-promotion-optimization-ca56e29fb584?source=collection_archive---------33-----------------------

星巴克促销和用户交易数据的探索性回归分析

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Photo by quan le on Unsplash

介绍

作为星巴克奖励系统的长期粉丝(时不时给我免费早餐🥪),我很好奇它在引擎盖下工作。具体来说,可能有无数的活动可能性(通过结合不同的价格、产品、持续时间、内容等),星巴克的数据科学家必须从中找出表现最佳的活动。

此分析的目的是更好地了解用户人口统计和活动之间的关系,以最大限度地增加收入。🔎

目标

分析的目的是确定优惠和人口统计细分之间的关键关系。总共有 10 个报价,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Promotional Offers

为了缩小与每个细分市场相关的促销活动的范围,我们对 10 个促销活动与我们确定的细分市场之间的关系进行了启发式回归分析。

具体来说,我们希望:

  1. 确定每个细分市场最能响应的促销活动。
  2. 根据预期收入确定向每个细分市场发送哪些促销活动。

第 0 部分—预处理和勘探

任何数据分析的第一步都是检查数据集的质量,并进行预处理以解决可能混淆分析的问题。

根据数据研究,最大的奇怪之处是用户数量异常高,年龄显示为“118”。巧合的是,这些用户也没有标明收入值。我的猜测是,这些用户的年龄和收入数据缺失。因此,这些只有在考虑“性别”对购买行为的影响时才有帮助。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

由于我们的细分将考虑年龄和收入(除了性别之外),我将把这些用户排除在分析之外。在验证观察数据集的大小和分布后,最合适的细分方式似乎是按年龄组和性别。虽然从技术上来说,我们可以进一步细分(例如,按收入、按加入日期),但这可能足以获得对关系的适当理解。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

此外,还有几个数据预处理步骤,以确保数据集可用于分析,包括:

  • 转换分类变量→虚拟变量
  • 日期格式
  • 特征提取(从对象数据格式)
  • 特征工程(确定细分市场)

第 1 部分—促销响应

为了确定每个细分市场对 10 个报价的响应度,我们需要观察与已查看报价相关的报价完成数。具体来说,这不包括与用户没有看到的报价相关联的报价完成(即,他们无论如何都要花那么多美元)。

对于促销优惠(即没有“完成”的内容),我通过“查看”优惠的用户进行区分,以便观察促销的影响。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Offer Responses by User Segment

从上面可以看出一些重要的观察结果:

通用

  • 在所有细分市场中,报价 5-8 似乎有最好的回复率。巧合的是,这些报价都是通过社交渠道(以及网络、电子邮件、手机等其他渠道)传递的。通过观察社交渠道回应率的差异来检验这一假设可能是值得的。
  • 优惠 7 的回复率特别高,因为它只是一个促销优惠(即“已浏览”的优惠)。然而,与其他促销活动(#2)相比,回应率存在明显差异,这进一步加强了社交渠道的有效性。
  • 优惠 4 ,难度最高(10 天内最低消费 20 美元)且奖励最高(5 美元折扣)的折扣优惠,在的回复率中遥遥领先。这很有可能是因为它只通过网络&手机进行交付。

特定于细分市场的

  • 女性群体(2、5、8、11)似乎总体上比男性群体有更好的平均回应率,尤其是通过移动社交渠道提供的报价&。
  • 第一部分(千禧一代,男性)的回复率似乎特别低(大约 40%,而大多数其他人是 50%)。
  • “其他”性别部分(3、6、9、12)的回复率分布似乎相当不同,这很可能与它们的样本量非常低有关。

从本质上讲,最高的回复率似乎与通过社会渠道提供的服务有关,特别是针对女性群体。

第 2 部分—哪些促销?

由于促销响应只是整个故事的一部分,我们需要更好地了解每个细分市场的财务影响。为了评估财务指标,需要进行回归分析。

从考虑的候选模型中,最合适的一个似乎是二次多项式,因为它的训练&测试分数相对较高:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用二次多项式回归,我确定了每个细分市场的最高预期支出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Expected Spend for each offer, by User Segment

此外,我还仔细研究了每个细分市场的最高报价:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Top offer for each segment

从这些结果中可以得出一些重要的结论:

  • 优惠# 4(10 天内消费 20 美元,享受 5 美元折扣)似乎是大多数细分市场最有效的活动
  • 总的来说,的报价 0、1 和 9 似乎也表现强劲(紧随#4 之后)。
  • 所有细分市场的 10 大解决方案包括**“折扣”和**优惠(几乎平分)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

of offer_types in top 10 for all segments

  • 一般来说,收入似乎与支出金额有直接的正相关关系(这与直觉有关)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Expected Spend vs Income (by Offer)

  • **【沉默的一代】**似乎有最高的预期收益,**紧随其后的是【婴儿潮】**和【千禧一代】。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

总的来说,这揭示了高潜力的报价(#4),由于其交付渠道和要关注的报价和细分市场(A/B 测试等),这些报价可能表现不佳。).

结论

这一分析揭示了一些关键的见解,将非常有助于缩小未来的分析和整体推广战略。

就目前的优惠组合而言,最佳促销策略似乎是**针对高收入女性(尤其是“千禧一代”和“沉默一代”)**的优惠 0 & 1,因为她们有更高的真实优惠完成率,同时也有相对较高的预期支出。

然而,在确定一个强有力的推广策略之前,还有一些出色的实验和分析要做。这些是:

  1. 验证完成率和渠道之间的关系。具体来说,如果你通过社交渠道提供报价#4(最高回报,最低完成率),会发生什么?
  2. 对于每个细分市场,发送哪个最佳报价组合
  3. 探索“意外完成”的价值(未查看,但已完成的报价)——它能导致未来消费行为的改变吗?
  4. 执行分类分析(例如 K-Means 聚类)以验证/强化已识别的细分市场。
  5. 有没有办法提高男性的毕业率(特别是他们有很高的预期支出)?
  6. 对具有较大样本使用数据的“其他”性别段(3、6、9、12)进行分析。

你可以在这里找到 GitHub 回购

StarGAN —图像到图像的翻译

原文:https://towardsdatascience.com/stargan-image-to-image-translation-44d4230fbb48?source=collection_archive---------10-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

星际之门是用来做什么的?

给定来自两个不同领域的训练数据,这些
模型学习将图像从一个领域翻译到
另一个领域。

比如——将一个人的发色(属性)从黑色(属性值)改为金色(属性值)。

我们将域表示为共享相同属性值的一组图像。黑发人是一个领域,金发人是另一个领域。

斯塔根

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. g 将图像目标域 标签作为输入,并生成假图像。(二)
  2. g 试图从给定原始域标签的伪图像中重建原始图像
  3. 这里,鉴别器不仅告诉我们伪造性,而且将图像分类到其对应的域,从而 G 试图生成与真实图像无法区分并且可被 D 分类为目标域的图像。即最终将学会生成对应于给定目标域的真实图像。(四)

歧视者的目标

这里,鉴别器有两件事要做,

  1. 它应该能够识别一个图像是不是假的。
  2. 在 D 之上的辅助分类器的帮助下,鉴别器还可以预测作为输入给 D 的图像的域。

辅助分类器有什么用?

利用辅助分类器,D 从数据集中学习原始图像及其对应域的映射。当 G 生成以目标域 c(比如金发)为条件的新图像时,D 可以预测生成图像的域,因此 G 将生成新图像,直到 D 将其预测为目标域 c(金发)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Loss function of Discriminator

生成器的目标

发电机有三个用途—

  1. 调整发生器权重,以使生成的图像逼真。
  2. 调整生成器权重,使得生成的图像可由 d 分类为目标域。
  3. g 尝试从给定原始域标签的伪图像重建原始图像。我们使用单个生成器两次,首先将
    原始图像转换成目标域中的图像,然后从转换后的
    图像重建原始图像。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Loss function of Generator

数据集

CelebA。名人面孔属性(CelebA)数据集
包含 202,599 个名人的面部图像,每个图像都有 40 个二元属性的注释

Radboud 人脸数据库(RaFD)由从 67 名参与者收集的 4824 张图片组成。每个参与者
在三个不同的凝视
方向上做出八个面部表情,这些表情是从三个不同的角度拍摄的。

参考

StarGAN:用于多领域图像到图像翻译的统一生成对抗网络

StarSpace 算法:挖掘和嵌入用户兴趣

原文:https://towardsdatascience.com/starspace-mining-and-embedding-user-interests-28081937f95?source=collection_archive---------11-----------------------

如何使用脸书 Starspace 算法进行用户嵌入

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Photo by Max McKinnon on Unsplash

数据科学家总是希望更多地了解他们的客户。如果我们了解我们的客户,我们可以:

  1. 基于用户兴趣推广活动
  2. 预测用户属性
  3. 查找用户相似性并进行聚类

听起来不错?棘手的问题是,所有这些下游任务都需要高度信息化的用户嵌入,以便您可以使用机器学习算法。当然,你可以在没有用户嵌入的情况下进行机器学习,只需简单地将用户与算法相匹配。问题是,通常,关于用户的数据是高度非结构化的,甚至是可变长度的。编码这种杂乱数据的预处理步骤并不简单。

借助 StarSpace,我们可以根据用户行为获得高度信息化的用户嵌入。

背景

StarSpace 是脸书提出的一种算法[1]。

StarSpace 是一个通用的神经模型,用于有效学习实体嵌入,以解决各种各样的问题

所以,关键词是*【通用】**【实体嵌入】*。换句话说,你可以通过 StarSpace 嵌入任何你想要的东西,包括用户。实际上,HK01 数据团队也利用 StarSpace 做文章嵌入,与其他嵌入算法并行。

[## 使用脸书空间学习文档嵌入

medium.com](https://medium.com/@LouisKitLungLaw/documents-embeddings-using-facebook-s-starspace-67b8d1feba32)

怎么会这么泛?秘密是:StarSpace 学会将实体及其组件表示到同一个向量空间中。使用 StarSpace 的唯一要求是您应该提供实体和组件之间的链接。以链接作为训练数据,StarSpace 可以学习组件之间的相似性,进而学习实体之间的相似性。

直觉

接下来的问题是什么组件可以代表用户。在 HK01 中,用户由阅读的文章表示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Three levels of entities. All mapped into the same space

上图说明了不同级别实体之间的联系。用户由阅读的文章表示,而文章由令牌表示。特别地,用户由他/她的阅读历史中的令牌包来表示。

背后的直觉是,每一层的信息都可以传播到上下游各层。通过链接,StarSpace 可以发现文章之间的相似性,因为它们共享令牌。同样,用户之间的相似性因此可以被学习。

结果

只有 50 维的 StarSpace 学习的用户嵌入,在下游任务中可以提供与原始用户嵌入不相上下的性能,原始用户嵌入有 20000 多维。

理论

到目前为止,我们仍然不知道 StarSpace 是如何工作的。StarSpace 的创新之处在于提出了一个新的损失函数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The loss function of StarSpace

别担心。背后的想法是,StarSpace 被训练为正面样本分配比负面样本高一个幅度的相似性。损失函数称为边际排序损失,类似于铰链损失。相似性函数可以是余弦相似性。

比如在用户嵌入中,每个实体对 (a,b) 都是由*(用户,令牌)*构成的。正实体对是实际的连锁,而负实体对是通过负采样产生的。StarSpace 被训练成将用户映射到实际记号而不是负采样记号附近的位置。

参考

[1]:吴,于,等,“星际空间:嵌入所有的东西!."第三十二届 AAAI 人工智能大会。2018.

开始版本控制您的机器学习数据集

原文:https://towardsdatascience.com/start-version-controlling-your-machine-learning-datasets-2b872e109856?source=collection_archive---------18-----------------------

使用开源工具使您的机器学习和数据科学项目具有可重复性。

在我过去一年参与的许多机器学习项目中,我的数据集在整个实验过程中改变了几次。例如,当我处理生物医学数据时,几乎每周都会收到新数据。在我用图像分割做的一些实验中,我一直在使用一种叫做主动学习的技术来逐渐增加我的训练数据集。

所有这些都让我有些不安,虽然我的代码是用 git 进行版本控制的,但我的数据集和训练模型通常不是(由于文件大小的限制,以及 git 对二进制文件不理想的事实)。每当我用新的数据重新训练我的模型时,我要么覆盖我现有的模型,要么在我的项目目录中填入许多稍有不同的版本的训练模型,文件名也稍有不同。像这样:

Model_v1.h5
Model_v2morepics.h5
Model_v3evenmorepics.h5

好吧,我会尽量选择更好的文件名。但是,这种方法是不系统的,并且很难精确复制。感觉不科学。我最近了解了 DVC,这是一个开源版本控制系统,与 git 配合使用,可以跟踪大型数据集和模型文件的变化(剧透:我将于 2020 年 1 月加入 DVC!).我试用了它,非常喜欢它给动态 ML 问题增加结构的方式——有点像采用 git 如何鼓励我采取更好的编码实践。我想分享一些关于如何为 ML 实验版本化数据集的信息。

问题是

先说一个玩具问题。我有一个数据目录,里面全是来自斯坦福狗数据集的图片,这是一个很棒的狗图片库,按品种分类。假设我想建立一个分类器来区分两种毛茸茸的狗,阿富汗猎犬和马耳他狗。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Left: Sample image of the Afghan Hound. Right: The Maltese. From the Stanford Dogs dataset.

首先,我有每个品种的 100 张图片(构建这个数据集的脚本在 GitHub 上,所以如果你愿意的话,可以克隆这个 repo)。但我知道数据集在未来可能会改变:可能会添加更多的图像,我可能会决定排除一些图像,或者我(或我团队中的某个人)可能会意外删除一个文件。这些变化中的每一个都会对适合我们数据的模型产生影响。

对于这样一个非常小的数据集,我可以想象使用 git。对于更大的数据集,我可以转移到 git-lfs(尽管这也有空间限制——而且,根据我在大学医院处理生物医学研究数据的经验,如果不经过审计程序,一些机构是不会允许的)。但是,想象一个大得多的数据集——更不用说我将要生成的大型训练模型文件了——您可以开始看到这种方法变得棘手的地方。

设置版本控制

这就是 DVC 的切入点。DVC 是一个围绕 git 构建的版本控制系统,所以语法非常相似——一旦您在本地机器上创建了一个存储项目代码(比如 ML 模型)的文件夹,您就可以运行

$ git init
$ dvc init

请注意,如果您按照我们提供的代码进行操作,您会将整个斯坦福狗数据集下载到您的项目目录中——我们不关心跟踪这个,所以运行

$ echo '/Images' >> .gitignore

接下来,你需要选择一个位置,在那里 DVC 将处理你的数据和模型的各种版本的存储,称为数据远程。远程可以是您选择的存储位置——我将使用 S3 存储桶,但是您也可以使用 GCP 存储桶、Azure blob 存储、您自己的内部文件服务器,甚至是本地目录。使用外部存储的一个好处是,不同机器上的新用户(比如说,合作者)可以很容易地进入并开始复制您的 ML 项目。特别是,云存储的伸缩性很好,所以您可以避免随着数据集的增长而耗尽磁盘空间的沮丧(这种情况发生在我身上,真的是度过一个下午的最糟糕的方式)。一句话:只要有可能,我建议您为数据科学项目使用云存储。

以下是我们如何添加 S3 桶作为这个项目的遥控器:

$ dvc remote add -d s3remote s3://bucket-of-dogs
$ git commit .dvc/config -m "Configure my S3 remote"

接下来,我们开始跟踪数据集。在我们的代码示例中,数据集当前位于项目目录中名为“data”的子目录中。

$ dvc add data

这将创建一个. dvc 文件,这是一个轻量级的文本文件,用于索引数据集的当前状态(如果您有兴趣,可以在文本编辑器中打开它!).这个。像任何其他文本文件一样,使用 git 跟踪 dvc。

最后,我们将 git commit 和 DVC push——运行这些命令后,git 现在通过。dvc 文件,数据文件的内容现在在 S3 桶中。

$ git add .
$ git commit -m "Add initial dataset"
$ dvc push

有关为您的特定工作流程配置 dvc 的更多详细信息,请查看入门文档。

训练模型

现在,让我们对数据集运行一个分类器。这一个使用预训练的 VGG-16 权重来为每个图像创建特征,然后训练一个完全连接的层来将这些特征映射到一个类别标签(你可以在这里看到代码)。分类器的细节——语言、架构和框架的选择——对于这个例子并不重要。

$ PYTHONHASHSEED=0 python breed_classifier.py
Validation Accuracy: 0.950

(为什么我们指定 PYTHONHASHSEED=0?您不必这样做,但是如果您继续这样做,它将确保您得到与我完全相同的结果——我们保持随机数种子的一致性)。

在模型训练之后,您将在项目目录中拥有一个模型文件。保存的模型也可以用 DVC 跟踪。让我们 dvc 添加,然后 git commit 来做。

$ dvc add model.h5
$ git add .
$ git commit -m “Trained model”
$ dvc push

更改数据集

假设一个动物收容所突然给我们发送了更多的狗的照片,我们想要重新训练我们的模型来利用这些新数据。现在,我们将每个品种的另外 100 张照片添加到数据目录中(如果您在自己的机器上跟随,那么项目 repo 中的脚本 grow_dog_dataset.sh 将会做到这一点!).我们可以通过运行以下命令来确认这一点

$ ls data | wc -l
400

这些图像还没有被 DVC 跟踪,所以让我们添加它们:

$ dvc add data
$ git add .
$ git commit -m "Added new dogs"
$ dvc push

让我们再次训练这个模型。太好了,看起来我们有进步了。

$ python breed_classifier.py
Validation Accuracy: 0.988

同样,我们可以 dvc add 和 git commit 来跟踪. h5 模型文件。由于最近的提交既跟踪了已训练模型的最新版本,也跟踪了已训练模型的数据集,因此它们在项目的历史中被有效地绑定在一起。

发现了一个错误

所以我准备生产这个神奇的马耳他/阿富汗猎犬分类器,对我遇到的所有狗进行分类,直到我意识到我犯了一个错误。也许收容所不小心给我发了一堆彭布罗克柯基的照片,被误标为麦芽酒,我在训练前没有注意到。但是,因为我们已经对数据集进行了版本控制,所以这种错误很容易解决(并且不会导致不可跟踪的、不可逆的文件删除)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Not supposed to be here.

有两种方法可以解决这个问题…

**选项 1。**删除 CORBA。

如果我们确切地知道哪些文件是错误的,我们可以只删除那些图像。然后,用更新项目的状态

$ dvc add data
$ git add .
$ git commit -m "Remove pesky corgis"

我们自然希望重新训练模型,使其与数据集保持同步。

**选项 2。**将项目恢复到以前的状态。

如果我们不知道哪些图像是有问题的,我们可能想放弃我们最近对项目的所有更改,并恢复到最后一波狗图片到来之前的版本。为此,我们可以使用 git checkout 和 dvc checkout:

$ git log --oneline
17746b7 Added new dogs
45e678d Trained model
df11d07 Add initial dataset$ git checkout 45e678d
$ dvc checkout

现在查看数据目录:同样只有 200 个文件(每个品种 100 个)。

$ ls data | wc -l
200

我们项目目录中的训练模型也反映了数据集的这个版本。

底线

ML 项目很少直线前进——不仅仅是因为找到正确的模型不是线性的,还因为数据集本身是变化的。当然有一些自制的方法来跟踪和管理这些变化,但 DVC 可以在几个方面提供帮助:

  • 如果你已经在使用 git,DVC 是一个简单的插件。
  • 作为一名研究人员,跟踪模型文件和数据集的能力对我来说是很直观的。我不希望经过训练的模型和训练数据集在没有某种联系的情况下发生变化。
  • 能够配置自己的数据存储对我参与的许多数据科学项目来说是一件大事(特别是生物医学数据,因为还没有人愿意付钱让我分析狗)。

除了所有这些实际的原因,我的主要原因是版本控制仅仅是好的实践。我努力做到系统化和谨慎,但有时在实验过程中,我会忘记我的数据集是如何变化的。像 git 一样,DVC 帮助我坚持可复制、可共享科学的最佳实践。

开始:成为伟大的数据科学家(学生/职业改变者版本)

原文:https://towardsdatascience.com/starting-out-becoming-a-great-data-scientist-student-career-changers-version-8a2915f126b9?source=collection_archive---------12-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好吧,我在数据事物的免费图片之间被撕裂,但是最近被一些多样性和包容性研讨会洗脑。所以,我选择了这种多元化的拼贴——不管怎样。像右上方的那个女孩一样,用你最喜欢的被子裹住自己,我们来谈谈如何让你走上成为一名伟大的数据科学家的道路。这篇文章的职业建议更适合学生和转行者。

这次演讲的目的

大约每隔几周,我就会收到类似这样的问题:

1。“什么认证对金融数据科学家有好处?”

2。“你会给试图获得定量分析师职位或金融类人工智能职位实习机会的学生什么建议?”

3。“财务分析招聘经理寻找什么?”

你明白了。就像他们在学校里总是说什么来引诱你问问题一样,别人可能也有同样的问题,那就问吧。让我们检查一下这些问题。

“什么认证对金融数据科学家有好处?”

对于第一个问题,当我第一次规划我的职业生涯时,我发现这个问题很难。终审法院非常关注金融。FRM 对于风险管理是好的,但是仍然没有足够的编码。CQF 是相当新的,所以我没有进入它。现在看看这些项目,我会选择 CQF,因为它比终审法院或 FRM 更复杂。这个答案的潜在主题是向第二个问题的完美过渡。

做最难的事

“你会给试图获得金融类 quant 职位或 AI 实习职位的学生什么建议?”

我支持上面的副标题。让我们从招聘经理的角度来看。他们收到了大量的申请。从这个巨大的池中,他们必须创建简单的规则来过滤应用程序。例如,我听说一些经理只是从应用数学或计算机科学背景中挑选一些人,而抛弃所有其他专业。基本上,大多数招聘经理都在寻找聪明、精力充沛、能够完成工作的人。从前面的例子来看,招聘经理只是简单地使用她认为更严格的专业作为预测她认为什么是好候选人的特征。如果你打算实习,那么让自己看起来能克服困难和复杂的问题。

找工作糟透了

“财务分析招聘经理需要什么?”

在获得数据科学职位的过程中,预计会有一段艰难的旅程。这样,在你继续下去的时候,任何其他结果都不会对你的心态产生太大影响。相信我,我有多方面的经验:招聘方面,申请方面,以及帮助人们进入内部。在招聘方面,我一直认为高层的人会少些偏见,并有一些更好的秘方。我错了。招聘经理仍然是人,有时这些人会进行权力旅行。例如,我见过招聘经理偏爱男性多于女性,偏爱某个少数群体(他自己的),根据他们的大学立即拒绝申请人,等等。

在申请人方面,我有许多压抑的记忆,我把我的申请送到了网上申请的黑洞中,再也看不到了。随着我获得了更多的经验,我开始根据目标职位的关键词调整我的简历,并根据该角色调整成就。例如,如果他们想要做 ARIMA 的人(这是时间序列分析的一部分),那么我会在我的简历中列出一个时间序列项目,并在我的面试中提到它。

在帮助人们进入角色方面,我的最佳建议适用于所有工作——网络。我见过的从求职者到雇员的最简单的转换方式是认识招聘经理或向招聘经理推荐。仔细想想,还是有道理的。招聘经理通常有一大堆申请,像大多数人一样,他只是想要一个简单的出路。有什么更好的方法来解决这个问题,而不是找一个你已经知道可以做这项工作并且已经是适合团队的良好文化的人呢?

成为伟大的数据科学家

好吧,对大多数人来说,伟大是一个主观的东西。但是,让我们把范围缩小到获得更多报酬或晋升。当我们谈到制定基本规则时。我只是想说,所有的企业都希望利润最大化(不包括非营利组织)。记住这一点,你可以通过带来更多的钱来为你的公司增加更多的价值。这可以表现为实际产生收入,或者以更高的效率降低成本。

早在我刚开始创业的时候,一位投资组合经理给了我一条建议,帮助我更快地晋升。

“接硬项目。”

当一家公司有没人想碰的问题时,你就有一个巨大的成功机会,大大增加了你加薪或升职的机会。当然,风险是看起来像个傻瓜和失败,但我们在这里谈论的是变得伟大。通往成功的旅程偶尔会迫使你跨过失败之桥来取得进步。所以,解决困难的问题,高级管理层会倾听你的意见。

结论

好了,我们今天讨论了一些事情。但是潜在的主题是成为一个强有力的问题解决者。当试图进入数据科学职位时,展示招聘经理希望看到的你已经完成的困难任务。可能是挑个好专业,去个好点的学校,有个真的很好的 GitHub 等等。申请工作时,要有一个困难的心理准备。这样,你不会让任何事情困扰,更有利的结果将只是娱乐性的玩笑。一旦开始工作,记得接受困难的项目,并超越对它们的期望。在公司里,有很多人只想混日子。通过成为公司中应用数据科学来增加收入和降低成本的人,你一定会成为一名伟大的数据科学家。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

请将此分享给你所有的媒体朋友,点击下面的按钮,让它传播得更广。也请在下面的评论中添加你经常使用的任何其他技巧或诀窍!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

免责声明:本文陈述的所有内容均为我个人观点,不代表任何雇主。

数据科学入门:从未编码

原文:https://towardsdatascience.com/starting-out-data-science-never-coded-b79ed985e661?source=collection_archive---------29-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好吧,这篇文章是写给任何刚开始写代码并且需要一点指导的人的。以下是我从没有编程经验到成为一名成熟的副总裁,一家财富 30 强公司的数据科学家所做的事情。

寻找动力

当你开始一个新的大项目、爱好或其他什么的时候,你需要从你的为什么开始。如果你不知道你为什么要做某件事,你在那个选定项目中的工作不会持久。想想吧。你有没有做过没有深层原因的长期工作?大概不会。

美妙的是你的“为什么”可以成为激励你的任何理由。就我而言,我对我的目标或大项目进行逆向工程。基本上,我会选择一些我想做的事情,这些事情需要花一段时间,然后从最终目标开始,回溯到我认为我需要做什么来完成它。在这个阶段,你不必把一切都做好。你只需要把它记下来,每天复习。关于如何逆向工程目标的更多内容,我从《6 个月到 6 位数》一书中获得了灵感。既然你正在读这篇关于编码的文章,你可能应该把它设定为获得 X(数据科学家,web 开发人员…)工作,赚 Y(8 万美元,15 万美元…)钱,等等。

参加斗争

我不想撒谎。编码很难。在你学习了任何语言的编码基础之后,现实世界中的编程是艺术和科学的结合。你有编码的元素,但它们是如此的无定型。我的意思是,有许多方法可以自动化一个预测性的分析模型,这取决于你这个开发人员如何实现它。还有编码本身的过程。你的代码永远不会 100%完美。你必须调试,客户要求改变,你发现更好的东西,等等。编码中的挫折和挣扎总是存在的,但是完成任务是非常值得的。为了度过通往成功之路的挣扎,我强烈推荐雷伊·达里奥*【2】*的《原则》一书。戴洛解释说,学习一项新技能或获得专业知识就像一个反馈环。你尝试一些事情,得到环境的回应,你调整你的行动,然后你再试一次。冲洗,并重复卓越。

养成习惯

我们都听说过,养成一个习惯大约需要 21 天,误差在几天之内。这是你成功编码的最关键的一点。在《引爆点》中,Gladwell 给出了大规模事件在达到临界质量水平之前不会发生的例子。对于你的编码来说,它会持续到 21 天。除了每天审视你的目标来推动你实现之外,也要改变你的编码环境。例如,我喜欢奇多,但我知道它们对我来说不太健康。所以,我家里根本就没有。虽然听起来很傻,但即使在我家对面有一家杂货店的时候,这种方法仍然有效。编码也是一样。把你的笔记本电脑放在一个好地方,放上一杯好咖啡和你最好的毛绒拖鞋。

复合技能

这是最后一点,以防上面所有的东西都没有帮到你。从《天才密码*【4】*这本书来看,顶尖高手都是后天培养出来的,不是天生的。让我给你省下 3 个小时的阅读时间,给你那本书的要点。每天至少花 20 分钟为编写代码。出于某种原因,当我们不断努力时,我们的大脑就会变得非常擅长某事。书中一个类似的例子是,他们让学生在一年中每天练习一种乐器 20 分钟,而另一组学生在半年中每天练习同样的时间,总共是 20 分钟。坚持练习一年的学生比练习六个月的学生表现更好。我是说,想想看。即使学习了同样多的时间,日复一日的练习也胜过集中练习。

结论

为了长期发展高水平的编码技能,首先要从目标开始。为什么要编码?每天提醒自己为什么。把它作为一个目标写下来,并列出达到目标所需的所有步骤。基本上,你必须每天提醒自己为什么想要它。目标召唤你所需的能量,帮助你跨越失败的障碍。接下来,半信半疑地面对编码的挣扎。这种痛苦是你成长为更好的编码者过程的一部分。其实有点像健身。一旦你把这些都记下,开始做至少 20 天。方法不重要,但要坚持做下去。我的建议是让你每天编码变得非常容易。让它成为你想去编码的好地方。最后,时间和你做的时间很重要。每天至少练习 20 分钟编码。这部分很重要。死记硬背一项技能是不起作用的。你的头脑需要时间和持续的练习来适应你想要成为的人,或者,在这种情况下,你想要拥有的技能。

所有这些,帮助我从不知道如何从代码中打印文本,到建立自动化预测分析模型。如果我从一无所知到精通代码,你也可以。只需承诺并步入更好的你——每次 20 分钟。

如果你想和我联系,请给我发一条信息到 LinkedIn。

免责声明:本文陈述的所有内容均为我个人观点,不代表任何雇主。

[1] P. Voogd, 6 个月到 6 位数 (2014),游戏改变者公司

[2] R .达利奥,原则:生活与工作 (2017),西蒙&舒斯特

[3] M .格拉德威尔,《引爆点:小事情如何能产生大影响》 (2006),利特尔·布朗公司

[4] D. Coyle,天才法则:伟大不是天生的。它长大了。以下是方法。 (2009),矮脚鸡

从 Python 中的 SQL 开始

原文:https://towardsdatascience.com/starting-with-sql-in-python-948e529586f2?source=collection_archive---------1-----------------------

这是用 Python 在 Jupyter 笔记本中启动和运行 SQL 的介绍。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Photo by Christopher Gower on Unsplash

使用 Python 运行 SQL 查询的一个快速简单的方法是使用 SQLite 。SQLite 是一个利用 SQL 数据库引擎的库。它的执行速度相对较快,并已被证明是高度可靠的。 SQLite 是测试环境中最常用的数据库引擎。

以下是简单的入门步骤。

步骤 1 —导入 SQLite 和 Pandas

首先,我们需要将 SQLite 导入到 Jupyter 笔记本中。

import **sqlite3** import pandas as pd

步骤 2 —连接数据库

使用 connect() 函数允许您在自己的环境中创建一个数据库。这有助于用户命名他们的数据库,以便稍后在 Python 中调用。connect()函数在您使用数据库时保持连接。

需要注意的重要一点是,当您连接到数据库时,其他用户将无法同时访问它。这就是为什么当你完成时,关闭()连接是必要的(我将在最后讨论关闭连接)。

对于这个例子,我将引用一个名为“factbook.db”的中情局数据库。

sql_connect = sqlite3.**connect**('factbook.db')

步骤 3 —光标对象

cursor() 函数用于帮助执行我们的 SQL 查询。

cursor = sql_connect.**cursor**()

使用 cursor()返回与我们要查询的数据库相对应的游标实例是很重要的。

步骤 4 —编写查询

使用 SQLite 和 Python,SQL 查询将需要通过一个字符串传递。虽然这不是必需的,但我认为将查询保存到变量中是一种好的做法,这样以后就可以引用它,而不必重写整个查询。

我们的 factbook.db 文件中的表叫做事实

  1. 将 SQL 查询保存为字符串
query = "SELECT * FROM factbook;"

2.使用前面的游标变量执行查询。这会将结果转换为元组,并将其存储为局部变量。为了得到所有的结果,我们使用 fetchall()。

results = cursor.execute(query).**fetchall**()

步骤 5-运行查询

为了运行我们之前保存的关于 pandas 的查询,我们执行以下操作。

pd.**read_sql_query**(query,sql_connect)

输出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A snippet of the output from our query

步骤 6 —关闭您的连接

请记住,完成后关闭连接是非常重要的。关闭连接将授予其他人访问数据库的权限。

sql_connect.**close**()

这里有一个很好的 SQLite 思维过程的模板。

1\. connection open
    2\. transaction started
        3\. statement executes
    4\. transaction done
5\. connection closed

第 7 步——奖励(为什么使用 Python 和 SQL?)

如果你像我一样,那么你可能想知道为什么在 Python 中运行 SQL 查询,而在 PostgreSQL 或 MySQL 中运行它们似乎更容易。

Python 有大量的库(例如,Pandas、StatsModel 和 SciPy)用于可测量的科学分析。这些库同样致力于不断完善抽象,因此你不必手工计算所有的基本数学。此外,您可以迅速获得结果,因此您可以迭代地利用 Python 来调查您的信息。( Janbansk 训练)

下面是用 Python 和 SQL 查询绘制直方图的片段。

import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inlinefig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(111)**query = '''
SELECT population, population_growth, birth_rate, death_rate
FROM factbook
WHERE population != (SELECT MAX(population) FROM facts)
AND population != (SELECT MIN(population) FROM facts);
'''**pd.read_sql_query(query, sql_connect).hist(ax=ax)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

资源:

2020 年你应该读的创业书籍

原文:https://towardsdatascience.com/startup-books-you-should-read-in-2020-ba8684000128?source=collection_archive---------21-----------------------

如何成长一家初创企业?每日阅读!

读书是成功的首席执行官们经常提到的活动之一。我们的经济变成了一个由一群热心人士和专家管理的中小型公司进行创新的地方。如果你是他们中的一员,或者如果你想成为他们中的一员,阅读是为冒险做准备的最好方式,那就是建立你自己的公司。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The best startup books to read in 2020

以下是 2020 年值得一读的 8 本创业书籍:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

零比一是贝宝联合创始人、亿万富翁彼得·泰尔的经典之作。这本书简明扼要地探讨了与众不同意味着什么,以及如何建立一个有潜力成为独角兽的公司。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

精益创业公司将精益方法引入商业世界,并展示如何使用它从零开始建立一个伟大的公司。这篇文章发表后,精益方法获得了成千上万的追随者。我们名单上的另一个经典。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

《10%的企业家:实现你的创业梦想而不放弃你的日常工作》是对企业家精神的一种不同看法,也是一种非常需要的看法。作者提出了在你的全职工作之外建立一个企业的论点和用例,而不要放弃它(至少在开始的时候)。这很好地补充了启动建设的精益方法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

困难的事情的困难之处:在没有简单答案的情况下创业作者是安德森·霍洛维茨公司的传奇创始人,该公司是硅谷最好的风险投资公司之一。作者经历了一个人在成长过程中不得不面对的困境,并用自己生活中的例子来说明。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

衡量什么是重要的:谷歌、博诺和盖茨基金会如何用 OKRs 震撼世界是一位亿万富翁风险投资家和企业家写的书,他推广了客观关键结果的方法论。这是理论与来自世界上最伟大的公司的非常实际的使用案例的奇妙结合。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Rework 是一本关于通过质疑现状,以不同的方式做事并使之有效的书。作者通过与一个偏远的团队合作,多次从零开始重建一切,并违背流行的信念,建立了一个成功的初创企业。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

原则:生活与工作由一位亿万富翁对冲基金经理撰写,展示了一种伟大的公司文化如何让你取得惊人的成就。作者经常强调,如果不首先建立适当的文化,他就不会成功。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从为什么开始:伟大的领导者如何激励每个人采取行动是一本关于如何成为领导者的很棒的辅导书。它分析了“魅力”和其他企业家的属性,并用很好的生活例子来说明它们。

这些书是开启你创业之旅的绝佳方式。他们每个人都表现出不同的角度,因此他们在大多数时候是互补的。

如果你更倾向于技术,看看你应该在 2020 年阅读的人工智能书籍清单

[## 加入我的技术简讯

让我们保持联系,了解更多关于技术和人工智能的新闻。](https://creative-producer-9423.ck.page/c3b56f080d)

2019 年人工智能状况报告已经出炉

原文:https://towardsdatascience.com/state-of-ai-report-for-2019-is-out-b5178dc8f320?source=collection_archive---------32-----------------------

《人工智能状况报告》捕捉了过去 12 个月人工智能的指数级进展及其最有趣的影响和发展。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是什么?

该报告概述了人工智能的进展,重点是过去 12 个月的发展。这份报告汇集了人工智能领域发生的最有趣的事情,其目的是引发一场关于人工智能现状及其对未来影响的知情对话。这一版本建立在 2018 年人工智能报告的创始状态基础上,可以在这里找到。

“我们相信,人们越来越需要关于人工智能在几个方面(研究、工业、人才、政治和中国)的状态的可访问、详细和准确的信息。我们报告的目的是推动关于人工智能进展及其对未来影响的知情对话。” —贝奈希在采访中对【ZDNET】

谁编写这份报告?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Source

该报告借鉴了一些知名人士的专业知识,如谷歌人工智能研究员兼 Keras 深度学习框架负责人 Franç ois Chollet,风投和人工智能思想领袖李开复,脸书人工智能研究员 Sebastian Riedel 等。

报告的主要内容是什么?

  1. **研究:**技术突破及其能力。
  2. **人才:**在该领域工作的人才的供给、需求和集中度。
  3. **行业:**人工智能驱动创新的今天和明天的大型平台、融资和应用领域。
  4. **中国:**有两个截然不同的互联网,AI 在中国有自己的类别。
  5. **政治:**AI 的舆论,经济含义和 AI 的新兴地缘政治。

他们的预测有多准?

从问责和诚实的角度来看,该报告从他们在 2018 年报告中预测的实现和没有实现的内容开始。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

True vs False

报告在哪里?

整份报告嵌在下面,是一个明确的必读。快乐阅读!

State of AI Report

数据科学和机器学习的现状

原文:https://towardsdatascience.com/state-of-data-science-machine-learning-e8bdd4f21b6b?source=collection_archive---------12-----------------------

“数据科学回答独立于数据科学而存在的问题”——Hugo bow ne-Anderson。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

简介

D ata 科学、机器学习、深度学习、人工智能都是新兴的学科,并且经常与小说纠缠在一起。

当我第一次开始从传统软件开发过渡到数据科学领域时,我面临着许多挑战,我有很多问题:我应该回到学校吗?MOOC 好还是新兵训练营好?应该学习哪些新的编程语言?应该熟悉哪些框架和工具?我如何证明我的专业知识?如此等等。

作为一个新兴领域,很少有实证证据来回答这些常见的问题。在我研究弥合知识差距的过程中,我偶然发现了 Kaggle 数据科学家&机器学习调查。

Kaggle 在 2017 年发起了一项全行业调查,该调查真实全面地展示了数据科学和机器学习的现状。2018 年,该研究在 10 月份进行了一周的直播,并收集了 23,859 名个人的回复。

这个博客的目标受众是学生、软件开发人员、产品经理、招聘人员以及任何对数据科学的现状感兴趣的人&机器学习。

调查对象的人口统计数据

在分析调查反馈之前,让我们先看看调查参与者是谁。

为了推断一般人群的调查反馈,理想的调查对象应代表(但不限于):

  1. 多个地理位置
  2. 所有性别和成年年龄组
  3. 多样的学术&专业背景

来自 147 个国家和地区的个人参与了调查,大约三分之一的调查者来自美国和印度。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Demographic Location of Survey Respondents

所有年龄段的成年人都有代表。几乎一半的受访者年龄在 30 岁以下,三分之二的受访者认为自己是男性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Age & Gender Distribution

这项调查收集了来自不同行业、不同职位的个人的反馈。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Job title count by business domain

大多数受访者目前在软件和学术领域工作。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Business Domain of the respondents

年度薪酬取决于被调查者工作的业务领域。与其他领域相比,软件领域的回报最高。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Annual Compensation in USD by Business domain

职位名称因公司而异。大多数调查受访者声称自己是学生,其次是数据科学家、软件工程师和数据分析师。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Current Job title

就像商业领域一样,职称在年度薪酬中也起着至关重要的作用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Annual Compensation in USD by Job title

当被问及受访者是否认为自己是数据科学家时,超过一半的受访者回答是。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Do you consider yourself a Data Scientist?

Kaggle 是许多有抱负的数据科学家的乐园。尽管受访者并不认为自己是数据科学家,但就目前而言,我已经考虑了所有的回答,以获得一个整体的观点。

几乎所有的调查对象都在工作中参与了一些编码活动。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Active coding percentage

说到经验,大多数调查对象的编码经验不到 5 年,机器学习经验不到 3 年。有相当多的人,他们没有事先的编码和机器学习知识,但热衷于学习。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Coding and Machine Learning Experience

鉴于调查的规模和多样性,我们可以自信地将调查趋势推断到一般人群。

成为数据科学家

在这一部分,我们将分析数据科学的知识来源和调查对象的学术背景。

从历史上看,开设数据科学/机器学习专业的大学和学院并不多。正因如此,数据科学家&机器学习工程师的学术背景非常多样。

通常,许多从业者有不止一个知识来源。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Data Science knowledge source

从调查反馈来看,典型的数据科学家通过自学和在线课程获得了超过一半的知识。

为了满足市场需求,许多知名大学和学院已经开始开设数据科学专业。然而,对于许多职场人士来说,由于地理和时间的限制,重返校园并不总是一个选择。然而,由于灵活的注册和访问,在线学习平台已经成为一种可行的替代知识来源。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Online Resources

Coursera 是注册人数最多的在线资源,其次是 Udemy。大多数在线资源都有多样化的课程目录,并且有灵活的注册开始日期。有些甚至提供同行评议、测验和指导来模仿传统教育。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Alternative Online Resources

在线资源的一个主要缺点是,随着技术环境的不断变化,一些课程可能会过时。论坛、博客、YouTube 频道、时事通讯和播客系列都是用来更新的。

新兵训练营是数据科学和机器学习培训的另一个受欢迎的资源。通常情况下,新兵训练营都是面对面的,需要全天参与。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Online & Boot Camp vs Traditional Education

新兵训练营提供传统(面对面培训)和在线教育(灵活的时间框架)的精华。同时,新兵训练营非常昂贵,只有在大城市才有。

大多数受访者投票认为在线课程比传统教育更好或一样好。另一方面,许多参与者没有接触过新兵训练营的训练。

作为一名数据科学家,应该具备领域知识、软件工程技能和统计知识。没有一个在线课程或训练营能够教授所有这三个方面。坚实的学术基础为填补知识空白指明了正确的方向。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Highest level of formal education and Undergraduate Major of survey respondents

与普遍的看法相反,拥有博士学位的受访者人数少于拥有其他最高水平正规教育的人数。大多数受访者的本科专业是计算机科学,其次是工程学。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Independent Projects vs Academic achievements

如图所示,数据科学家的学术背景非常多样化,因此,在雇用数据科学家时,学术成就并不总是合适的衡量标准。或者,分析独立项目可能是评估潜在员工技能的最佳方式。

数据科学家军火库

数据科学和机器学习技术的前景正在不断扩大。人类不可能精通所有可用的框架、平台和方法。

该调查收集了参与者使用和建议的编程语言、框架、工具&平台。忽略边缘情况,这应该给一个有抱负的数据科学家一个好主意,告诉他应该精通什么技术。

**提及的技术是累积性的,因项目而异。

编程语言

绝大多数的回答者都建议将 Python 作为第一个要学习的编程语言。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

First language for newbies

以下是我认为 Python 值得推荐的几个原因:

  1. Python 是一种开源的模块化编程语言,学习曲线很短。
  2. Python 是许多流行的数据分析、机器学习和深度学习包的首选编程语言。
  3. Python 拥有庞大的开发者支持基础和第三方库。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Popular programming languages

知道多种编程语言总是一个好主意。有了不止一种编程语言的知识,我们可以模块化地设计应用程序,以利用不同语言和各自支持的框架所提供的功能。

受访者对其他编程语言的建议与调查对象给出的第一语言建议相结合。

例如,在开发信用卡欺诈检测应用程序时,我将使用 Apache Spark (Scala)管道进行数据转换,并使用 Scikit (Python)模型进行机器学习。

虽然 Spark 有 Python (PySpark)支持,但使用 PySpark 时有一个潜在的权衡,如果你想使用自定义用户定义函数(UDF)来实现基于上下文的逻辑,数据需要不断地序列化和反序列化。为了避免这种情况,我选择 Scala Spark 进行数据转换。

**如果上述示例中的技术术语令人困惑,请忽略该示例。

框架和库

学习语言本身并不足以成为一名成功的数据科学家或数据工程师。框架和库的知识是必要的。框架和库提供了可重用和可扩展的代码托盘。

在典型的工作中,数据科学家利用各种框架和库来探索、可视化和训练数据集。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Machine Learning Frameworks

机器学习框架提供了监督、非监督和深度学习算法的抽象实现。不是每个框架都提供所有的算法。

机器学习框架的选择取决于团队使用的语言和基础设施等参数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Visualization Frameworks

“一张图胜过千言万语”, 用图表和图形(正如我在这篇文章中所做的)传达信息比用文字描述更直接。可视化框架将数据作为输入,并产生易于理解的可视化效果。

可视化库的选择取决于语言、用法和熟悉程度。

工具

从人类诞生之日起,人类就致力于开发新的工具来让生活变得更容易。数据科学家使用技术工具来简化他们的日常工作。

每种语言都有其句法和语义,作为人类,要记住它们是不可能的。开发集成开发环境(ide)是为了避免语法和语义错误并提高生产率。

大多数企业使用 ide 进行开发。ide 有助于提高开发人员的整体生产力:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Popular IDEs

  1. 在开发过程中提供语法和语义验证。
  2. 第三方库的文档。
  3. 与终端、GIT 等外部工具集成。

通常,IDE 的选择取决于所使用的编程语言和开发团队的偏好。

在数据科学项目的初始实验阶段,笔记本内核为探索、分析和概念化数据提供了一个交互式环境。笔记本还提供了一种以多种格式记录和分享发现的简单方法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Notebook Kernels suggested by respondents

根据调查结果,使用笔记本内核的受访者并不多。这可能是因为大多数公司使用集成开发环境。根据我的经验,如果你开始从事数据科学,熟悉笔记本内核是试验数据和代码的一个很好的方法。

公用事业

编程语言,框架&库提供逻辑处理,我们仍然需要其他工具来存储和计算数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

RDBMS systems

关系数据模型是关系数据库管理系统背后的基本原理。

每个 RDBMS 都包含表,每个表由行和列组成。表和列结构是预定义的。

RDBMS 在软件应用中广泛用于存储数据。结构化查询语言(SQL)用于访问和操作数据。即使在今天,许多公司仍然高度依赖这个系统。

数据科学家应该熟悉 RDBMS 和 SQL。RDBMS 有许多实现方式,如 Oracle、MySQL、DB2 等。并根据团队使用的应用程序框架和库进行选择。

几乎所有的 RDBMS 都有支持编程语言直接交互的框架和库。

**请注意即使调查中关系数据库下提到 AWS 迪纳摩 DB (如上图所示),迪纳摩 DB 也是一个非 SQL 数据库。

在从事数据科学和机器学习项目时,我们很有可能会在开发终端或调配的服务器资源上遇到有关存储和计算能力的瓶颈场景。

云平台在共享的服务器网络上提供存储和计算能力。理论上不应该缺少存储空间&计算能力。

云计算服务和产品提供了广泛的硬件容量和软件产品,能够在短时间内灵活扩展。

例如,我正在开发一个深度学习网络,我预计只训练这个网络 1 周。要训练一个深度学习网络,我需要 GPU。但是,同时在 GPU 上投资一周的任务没有任何意义。相反,我可以使用云 GPU 一周,并根据我使用它的时间支付费用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Cloud Platforms

AWS 是受访者使用最多的云平台。

尽管云平台有其固有的优势,但许多受访者都提到他们没有接触过云平台。

大多数云平台通过产品即服务(PaaS)架构提供计算、机器学习和分析产品。这些产品专门为云供应商开发。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Cloud Computing Services

云平台以平台即服务的形式提供虚拟机(VM)和容器,具有硬件和软件调整的灵活性。使用云,我们可以按需添加或删除虚拟机和容器。

根据受访者的说法,亚马逊 EC2 和 AWS Lambda 是最常用的两项服务。

许多云供应商通过 API 提供预训练的机器学习模型。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Cloud Machine Learning Products

使用经过训练的模型,开发人员可以轻松地将 ML 模型集成到应用程序代码中。通过这种方法,具有最少或没有机器学习知识的开发者可以在应用中实现 ML。

数据科学家的一天

到目前为止,本文的重点是数据科学家的人口统计、专业、学术和技术背景。接下来,我们将分析数据科学家的一天是什么样的。

从高层次来看,典型的数据科学项目分为收集、清理、分析和建模数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Data Science Project Activity Time Proportion.

收集数据是第一步。数据不仅从内部数据源收集,还使用 API 交互和 Web 报废从外部数据源收集。这一步由数据科学家或数据工程团队执行,具体取决于团队的规模和结构。

清理数据包括选择数据中哪些特征是有用的,以及如何处理丢失的值。项目的成功直接取决于这一步。糟糕的数据清理选择会导致糟糕的数据和错误的见解。

在分析阶段,干净的数据被转换成可视化数据,用于与利益相关者交流见解。

模型选择阶段包括为问题选择正确的机器学习算法,并调整超参数以实现偏差和方差之间的最佳平衡。这个阶段不是所有数据科学项目的一部分。当需要时,这个阶段是耗时的。

数据科学家的日常活动源自高级数据科学项目阶段。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Daily activities of a Data Scientist

从调查反馈来看,理解领域和模式知识花费了大部分时间,其次是模型&超参数选择和实施。

来自数据科学家 Vantage 的机器学习

在调查中,受访者被问及如何评价公平偏差、可重复性和解释模型输出的重要性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Importance of Fairness Bias, Reproducibility and Explaining the model output

机器学习模型使用输入数据进行预测,如果输入数据本身有偏差或不公平,同样会传播到模型预测中。

一个现实世界的例子是,现在废弃了歧视女性的亚马逊人工智能招聘工具。你可以在 路透社 新闻文章中了解更多相关信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Reasons of Bias in training data

寻找无偏见的数据总是一个挑战。好的一面是大多数数据科学家都意识到了这个问题,坏的一面是没有多少数据科学家投入时间来减少偏差。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Percent of data projects involved exploring unfair bias in the dataset and/or algorithm

机器学习库具有简化的模型训练和超参数调整过程;问题是有时很难解释模型的结果。

只有四分之一的受访者有信心能够解释机器学习模型的输出。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ML Black-box

再现性对于成功的 ML 模型至关重要。一旦模型被调优,只要输入是常数,它就必须产生相同的结果,而不管它在哪个机器上被执行。下图中提到的工具和方法用于使您的作品易于访问和复制。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Tools and Methods to reproduce ML

ML 模型的一个优点是一个模型的输出可以作为另一个模型的输入,创建一个模型管道。

值得注意的是,在深度学习的情况下,这是非常有利的。当利用训练好的层开发图像识别算法时,我们可以节省大量的时间和计算能力。

受访者被问及是什么阻碍了他们让自己的作品更容易被重用和复制。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Barriers to accessible ML models.

商业华帝的机器学习

不是所有的项目都实现机器学习。在数据科学项目中实现机器学习是不可行的,原因有很多。

从调查反馈来看,不到 10%的受访者就职于在生产中成功实施机器学习模型超过 2 年的公司。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ML in Use

每个企业都有自己的衡量标准来衡量机器学习的成功实施。对于大多数企业来说,准确性与收入和业务目标一样,是实施 ML 的关键驱动因素。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Metrics of successful ML implementation.

结论

Kaggle 真正掌握了数据科学和机器学习的全面状况。这个博客对任何有兴趣进入数据科学和机器学习领域的人来说都是一个指南针。

人们可以将这篇博客作为进一步分析的起点——将调查结果与 2017 年 Kaggle 调查数据 以及stack overflow调查数据(改天)进行比较。

此分析的源代码托管在GIT上,可视化托管在Tableau Public上。

使用 Google Brain 的 SpecAugment 和 Pytorch 增强最先进的音频数据

原文:https://towardsdatascience.com/state-of-the-art-audio-data-augmentation-with-google-brains-specaugment-and-pytorch-d3d1a3ce291e?source=collection_archive---------15-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Photo by Steve Harvey on Unsplash

使用 Pytorch 和 TorchAudio 实现 SpecAugment

谷歌大脑最近发布了 SpecAugment:一种用于自动语音识别的新数据增强方法,它在各种语音识别任务上取得了最先进的结果。

不幸的是,谷歌大脑没有发布代码,似乎他们在 TensorFlow 中编写了他们的版本。对于喜欢 Pytorch 的从业者,我已经发布了使用 Pytorch 的伟大伙伴库 torchaudio 和一些从与其他 FastAI 学生的持续合作中借来的功能 fastai-audio 的 SpecAugment 的实现

SpecAugment 基础

在语音识别中,原始音频通常被转换成基于图像的表示。这些图像是典型的频谱图,它以一种许多模型都觉得更容易学习的格式对声音的属性进行编码。

SpecAugment 没有对原始音频信号进行数据增强,而是借鉴了计算机视觉的思想,对频谱图进行操作。SpecAugment 工程。谷歌大脑报告了奇妙的结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SOTA results using SpecAugment

SpecAugment 有三个增强功能。

时间隧道

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

time warping a spectrogram

简而言之,时间扭曲通过使用插值技术在随机选择的方向上挤压和拉伸数据来及时移动频谱图。

时间扭曲是 SpecAugment 最复杂、计算量最大的增强。深度学习工程师 Jenny Cai 和我一起完成了 Tensorflow 的[sparse_image_warp](https://www.tensorflow.org/versions/r1.9/api_docs/python/tf/contrib/image/sparse_image_warp?hl=en) 功能,直到我们有了 Pytorch 的支持。

如果你对细节感兴趣,你可以查看回购中的SparseImageWarp.ipynb。谷歌大脑的研究表明,时间扭曲是最无效的增强,所以,如果性能是一个问题,你可能会考虑先放弃这个。

频率和时间掩蔽

频率屏蔽和时间屏蔽类似于计算机视觉中常用的剪切数据增强技术

简而言之,我们用频谱图的平均值,或者,如果你喜欢,零,来屏蔽随机选择的频带或时间步长。

X 轴为时间,Y 轴为频段,时间屏蔽如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

time masking a spectrogram

这是频率掩蔽:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

frequency masking a spectrogram

自然,您可以在一个声谱图上应用所有三种增强:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

All three augmentations combined on a single spectrogram

希望这些新的 Pytorch 函数将在您的深度学习工作流程中证明有用。感谢阅读!

最先进的多语言词汇化

原文:https://towardsdatascience.com/state-of-the-art-multilingual-lemmatization-f303e8ff1a8?source=collection_archive---------12-----------------------

对适用于数十种语言的最先进的分类器的分析

我发现变元化是一项有趣的 NLP 任务,在这项任务中,我们必须找到处理人类语言的丰富性和任意性的方法。在这篇文章中,我总结了令人印象深刻的多语言 lemmatizers 的最新技术,为该领域的从业者和新手提供了一些有用的提示,并指出它们的局限性。

词干:低成本,低回报

当我们处理文本数据时,有时需要减少词汇:如果您正在搜索*“二手车价格”,包含汽车价格汽车价格*的文档很可能是相关的。

这个问题的一个常见策略是词干,从单词中去除前缀和后缀,直到我们只剩下它的词干,它承载了大部分的意思。于是,被词干为重播播放出租车继续为出租车。它只是通过字符串编辑来执行,没有任何类型的预处理或机器学习。

词干提取因其简单性已被许多搜索引擎成功使用。然而,这种简单性也是一个限制因素:甚至没有一个关于单词词干是什么的精确定义。重播的梗可能是,但排练的梗肯定不是灵车。认为关心的梗是关心,而不是是有道理的;但是为了实现这一点,我们需要一个更复杂的算法,知道何时插入一个 final -e 。对于其他语言来说,这可能会变得更加混乱。

底线是任何只基于字符串编辑的方法都缺乏语言的一致性。当这是一个问题时,我们转向术语化

词汇化

词条化是确定给定单词的词条(即词典形式)是什么的过程。拿前面的例子来说,的引理是,而回放的引理是回放本身。这是一个定义明确的概念,但与词干提取不同,它需要对文本输入进行更精细的分析。

对于英语这种几乎没有词形变化的语言来说,这相当简单。但是对于大多数语言来说,词汇化既重要又困难。请看这个捷克语例句:

由 v . kabin ce stujím tr valo překročit řeku 波托马克 asi čtyři minuty 编写。

将每个单词替换为它的引理,得到如下结果:

studieproveditelnostodhadovatebútv卡比娜***cestující*****

(如果你想知道,它的意思是“可行性研究估计,乘客乘坐平底船穿越波托马克河大约需要 4 分钟。”)

在我们的捷克语例子中,15 个单词中有 8 个与词条不同!那几乎是句子中所有的实词。NLP 中的大多数研究使用英语数据,但是正如您所看到的,这是一个糟糕的语言选择,不能反映其真正的挑战。

然而,随着 CoNLL 20172018 共享任务的出现,我们已经为超过 50 种语言发布了大量带有词条注释的数据。参与者被要求,除了其他事情之外,提出适用于这种广泛语言的 lemmatizer 模型。这些数据为评估 lemmatizers 提供了一个很好的基准。

困难

单词变形有很多规律,这可能会让你想到开发一套规则来恢复单词的引理。但是,由于一些因素,这可能会非常困难:

  • 不规则表格。你必须一个一个地治疗他们。
  • 看起来有屈折变化,但实际上没有的单词。例如 bring 不是不可认动词 to bre 的屈折形式。
  • 不同引理共有的屈折形式。如德语中,gehrt可以是hren(听到)的分词,也可以是gehren*(属于)的分词,只有语境才能消除歧义。***
  • 变形规则的数量可能太多,或者您可能对正在使用的语言没有足够的了解。

如您所见,设计手写的词汇化规则甚至对英语来说也很麻烦。所以,像往常一样,我们求助于机器学习。更具体地说,是指一直存在的神经网络。

神经旅鼠是如何工作的?

使用神经网络对单词进行词汇化的方法不止一种,但让我们坚持使用效果最好的方法,这也是最简单的方法。它使用序列到序列(seq2seq)神经网络,逐字符读取单词,然后逐字符输出它们的词条。这是 Turku NLP 小组使用的模型,该小组在 2018 年的 CoNLL 中在词汇化方面取得了最好的结果。

我将不详细介绍 seq2seq 是如何工作的。我在这里关注的是 lemmatizers 的实际用法;有很多解释 seq2seq 的好帖子。其中一个风趣地称其为深度学习的小丑车,因为它可以在看似很少的参数中容纳大量信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

An overview of the seq2seq lemmatizer architecture

结束符号,也表示为< /s >,用于表示该型号何时完成生产输出。如果没有它,seq2seq 将无限期地生成字符。

模型输入不需要只有单词。我们还可以包含一些元数据,比如 POS 标签,这有助于确定哪个是歧义表单的正确引理。记住每个字符都被编码成一个嵌入向量,这个向量是和其他神经网络参数一起学习的。因此,只要我们能在相同维度的向量中编码我们的标签,我们就可以做得很好。

让我们看一个 POS 标签很重要的例子。在葡萄牙语中, olho 可以是名词,意为,也可以是屈折动词,意为看*;在后一种情况下,应该将其引理为 olhar 。***

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Additional information about the inputs can help disambiguate

这允许很大的灵活性。该模型可以学习某些单词形式看起来一点也不像它们的词条(例如, was / be ),一些单词形式从不改变(语法单词,如介词和连词),而对于大多数其他单词形式来说,这是改变前缀、中缀或后缀的问题。它还可以学习将某些变形模式与某些 POS 标签相关联。

处理歧义

然而,大多数当前最先进的实现都没有完全解决词条歧义的问题。诸如 StanfordNLPTurku Parser 之类的模型独立地对每个单词进行词汇化,同时考虑其词性和词法标签(如性别、数字、时态、格等)。),而不是句中的其他词。这足以解决上面例子中的情况,其中名词和动词有不同的词条,但当单词、词性标签和形态变化的相同组合仍然可以映射到一个以上的词条时就不行了——就像我前面提到的gehrt**

顺便说一句,不要把引理歧义误认为词义歧义!在引理化中,我们只对书面的引理感兴趣,对意义不感兴趣。因此,你不需要知道球棒是指会飞的动物还是棒球中使用的棍子,只要你知道它的引理是球棒*。***

但是为什么这些模型是那样的呢?基本上,因为这种情况非常罕见。在本文中,来自图尔库的研究人员认为,对于大多数树银行来说,这种现象只发生在不到 1%的令牌上。即使是在常见的语言中,比如西班牙语(14%)、印地语(22%)和乌尔都语(36%),也有一个词条出现的频率比其他词条高得多。例如,形式 fue 出现了几十次,标记为 AUX(助动词),并以 ser (to be)作为引理,而少数情况下,标记相同,但引理 ir (to go)。

最重要的是,许多这种歧义可能是注释错误。我检查了西班牙语树库,发现许多模糊的单词/标签组合实际上有拼写错误或者没有正确地进行词汇化。不幸的是,我不知道任何乌尔都语重复检查,但我不会惊讶地发现相同的。

这并不意味着不值得去发现两者之间的差异——恰恰相反。问题是,由于例子太少,统计模型很难学习正确的引理。因此,如果我们真的想准备我们的模型来消除所有的 fuegehrt等词的歧义,我们需要准备针对这些词的数据集。

但是,至少在理论上,有一些实现能够消除它们的歧义。 UDPipe FutureCombo 解析器就是其中的两个,尽管没有使用 seq2seq,但它们的基本原理与之兼容。下图描述了 UDPipe 架构,但这里重要的是递归神经网络(RNN)的使用,Combo 也采用了它。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The lemmatizer architecture in UDPipe Future. A bidirectional LSTM encodes words in context-sensitive vectors.

双向 LSTM 是 RNN 的常见选择,它读取整个输入句子,并产生上下文相关的向量来编码每个单词。之后,一个词条解释器 MLP 将每个单词分类到一个自动生成的词条解释规则中,该规则包括移除、添加和替换子字符串。

这种表示并不是他们的模型所独有的;这在 NLP 中是相当标准的。Turku 和 Stanford 系统也有自己的 BiLSTMs,但是它们只用于其他的 CoNLL 任务(词性标注、形态标注和语法分析;我打算在接下来的帖子中更多地谈论它们)。

然而,事实证明,上下文感知并不一定转化为更好的词汇化性能。在 CoNLL 评估中,Turku 和 Stanford 系统在拥有合理数据量的树库中获得了最好的结果。即使是在歧义标记更常见的树银行中,结果也不是很清楚:

  • 对于乌尔都语和印地语,图尔库模型的结果最好,紧随其后的是 UDPipe Future 和 Combo
  • 对于西班牙语,UDPipe Future 和 Combo 的效果最好,其次是 Turku

考虑到不明确的标记/标签组合是多么罕见,区分它们的能力在结果中扮演了一个非常边缘的角色。与 UDPipe 中使用的分类器相比,seq2seq 架构更有可能对这种任务更有效。当然,我们仍然可以结合这两个领域的优点,设计一个 seq2seq lemmatizer,它以与额外的标记元数据相同的方式包含一个上下文表示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The context-sensitive output of an RNN can help disambiguate when even POS and morphological tags are the same

上图第一句话的意思是我没有听到任何消息,第二句话是属于事务所的。在每种情况下,双向 LSTM 将能够捕捉特定的句子上下文,为 seq2seq 引理器提供更多信息,seq 2 seq 引理器反过来将能够(至少在理论上)预测正确的引理。如果没有上下文向量,词条解释器永远不会为同一个单词产生两个不同的词条。

但同样,我们会遇到数据瓶颈。由于不明确的例子非常少,这个改进的模型没有足够的例子来学习和利用它的架构。

神经旅鼠有多好?

现在我们已经看到了这个简洁的 lemmatizer 架构,下一个自然的问题是它实际上有多好。我之前提到的 CoNLL 2018 记分牌给了我们一个很好的概述,但这些数字应该谨慎阅读。

第一个表,All tree bank,包括只有几千个单词的树银行的结果。这不足以学习正确的词汇化规则,并且根据随机初始化,这些树库的性能会有很大的差异。

第二个表格是大树库 only ,过滤掉了那些非常小的树库(事实上,这里的可能会产生误导,因为这些树库中的一些仍然非常小;但是不是极小的树银行听起来不是一个好名字)。在这些剩余的树库上训练的分类器更适合生产使用。

那里的数字看起来相当不错:大多数语言都在 90%以上。您还可以注意到,尽管总体上 Turku 模型是最好的,但对于某些语言来说,其他模型做得更好。但是请记住,每种语言中都有大量完全没有屈折变化的词,如连词和介词,这些值被夸大了。还记得本文开头的捷克例子吗?捷克语有很多词形变化,但是在那个句子中,15 个单词中有 7 个看起来和它们的引理一模一样。

无论如何,我在这里提到的 lemma tizer 的性能对于生产应用来说似乎很好——至少如果您正在处理的文本看起来像 lemma tizer 被训练的树库。因此,如果你需要使用其中的一个,这里有一些警告和实用的提示。

外部知识

基于机器学习的分类器面临的最大挑战是不规则形式。这并不奇怪:它们对人类也有挑战性,有时甚至是用他们的母语,正是因为它们的不可预测性。因此,如果你的模型在训练数据中从未看到禁止禁止的过去式,它可能会认为禁止听起来像是一个很好的引理。

如果你真的想提高你的 lemmatizer 的性能,在你使用的语言中有一个不规则单词的补偿列表是一个好主意。然而,这个列表应该有(词尾变化形式,词性标记,词条)的元组,否则你可能会遇到歧义问题。虽然单词/词性/引理歧义非常罕见,但正如我之前提到的,即使在英语中,也只有单词/引理是一个问题:例如,想想中的名词-动词歧义【锯】*、思想射击*

看不见的变化

现在,一些变形规则可能非常有规律,但是如果它们从未出现在训练数据中,那么没有基于机器学习的系统会学习它们。由于 UD 数据集中的许多语料库来自报纸文本,一个共同的特点是第二人称动词总体上相当罕见。例如,在德语训练树库中,有近 3 万个动词,只有 13 个是第二人称动词。其中一个芬兰的树库,大小差不多,有 462 棵,稍微好一点——但那只是总数的 1.5%!

因此,如果你使用一个在 CoNLL 数据上训练的 lemmatizer,并注意到它在某些特定的变调中表现很差,很可能它没有足够的例子来学习。如果这是一个问题,您将不得不提出更具代表性的数据来重新训练模型,或者实现一些手动规则来覆盖自动输出。

结论

我已经展示了最先进的 lemmatizers 已经开发了非常有趣和高效的体系结构。单词/词性标签/形态标签模糊组合的情况仍然是一个问题,但这种情况非常罕见,在实践中几乎不用担心。然而,处理训练数据中不存在的不规则单词和变化更令人担忧。

尽管如此,如果你说的语言具有丰富的词法,尝试一下我在这里提到的系统,你会惊讶于它们消除屈折变化的能力!

我写的检查西班牙 UD 树库的脚本可以从 Github 获得。您可以使用它来检查其他树库的不明确的词条和可能的注释错误。

彩票的现状

原文:https://towardsdatascience.com/state-of-the-lottery-e705984e4df?source=collection_archive---------27-----------------------

旁注——卢卡斯·加尔克

在这一期中,我们为您带来一篇由 MTank 团队成员撰写的文章,该文章研究了降低神经网络训练成本的技术。通过在训练早期识别子网络的学习强度,即挑选一个获胜的子网络,我们可能会降低现代深度学习研究人员&从业者的计算成本。

除了我们的连载博客, 艾酒厂&杯具意识’之外,我们还会偶尔发布一些&材料作为单机版或短期系列。说到题外话,与我们的其他出版物相比,这些材料的性质有些模糊,我们选择称之为“旁注”。

“旁注”就是这样。我们认为我们的读者可能会喜欢的与 MTank & AI 相关的辅助作品。格式会有所不同,但可能包含所有内容。把它看作是额外项目、会谈&想法的总称。

介绍

神经网络变得越来越大,使用多达数十亿个参数。研究人员开始量化在云计算平台上训练这些大规模模型的努力,以$$$的数量,甚至以吨的碳排放量。通常的理解是,过度参数化的网络容量更大,但也更容易过度拟合训练数据。最近的研究表明,过度参数化实际上起到了正则化的作用,并提高了泛化性能[Arora et al. 2018]。

然而,在训练之后,这种大规模模型的大部分可以被修剪掉,而不会损害模型的准确性。修剪技术可以追溯到【LeCun 1990】关于最佳脑损伤。修剪的动机是减少模型大小,从而减少内存需求、推理时间和能量消耗。一种修剪技术是幅度修剪,它修剪那些具有最低幅度的权重,因此对网络输出的影响最低【韩等,2015】。

彩票假说(LTH)【Frankle&Carbin 2019】之前,普遍的经验是修剪过的架构更难从头开始训练。现在,LTH 声称,某些子网可以被训练得与原始的、未经训练的网络的准确度相当,甚至更好。**关键的想法是迭代地训练一个网络,修剪它的参数,直到只剩下一小部分参数。**在每次迭代中,幸存的权重被重置为它们的初始化。然后可以在可比较的时间内训练产生的子网,以匹配原始网络将达到的精度。这些子网被称为中奖彩票。

彩票假设。 随机初始化的密集神经网络包含一个子网络,该子网络被初始化为:当被隔离训练时,它可以在最多相同次数的迭代训练后匹配原始网络的测试精度。[Frankle & Carbin 2019]

在 LTH 的论文中,作者发现中奖彩票的大小只有密集彩票的 10-20%。有了更多的剩余参数,获胜的门票甚至可以达到比原始网络更高的测试精度。

为什么这很重要?LTH 建议,如果我们能够在训练过程的早期识别出获胜的门票,就没有必要训练一个完整的模型。如果这是可能的,它可以为我们节省美元和吨的碳排放。

在下文中,我们将首先考虑一个思维实验,以获得关于中奖的直觉。随后,我们将概述如何在 LTH 报纸中识别中奖彩票。最后,我们将经历彩票假说的一些后续工作。

一个最小的例子:两个输入的和

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了直观地了解 LTH,让我们考虑一下计算两个输入之和 y = x0 + x1 的简单任务。我们想用一个两层的线性神经网络来逼近真实值“y ”,这个网络有 n 个隐藏单元,没有偏差。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于人类来说,两个输入之和的中奖票很容易确定。这样的中奖票将会是

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于一些剩余权重为零的“I”。这将确保在第一层计算两个输入的实际和,并通过第二层传递。

因此,这张成功的入场券甚至可以推广到培训数据领域之外。无论我们选择的隐藏层大小‘n’有多大,我们的中奖票都将 由三个非零权重 组成。因此,我们可以在不损害准确性的情况下,删除除这三个权重之外的所有权重。当我们开始使用仅由这三个非零参数组成的掩码进行训练时,网络最终会学习到正确的权重。

如何识别中奖票

为了证明中奖彩票的存在,弗兰克尔和卡宾采用了以下程序:

  1. 用参数 θ₀ 以及设置为全 1 的掩码 m 初始化模型
  2. 为 j 次迭代训练屏蔽模型
  3. 删除最低幅度权重,并相应地更新掩码 m
  4. θ**【m】复位到它们在** θ₀ 中的值,将所有其他参数固定为零。
  5. 从步骤 2 开始重复,除非满足稀疏性或验证准确性的停止标准(迭代修剪)

结果是子网(由掩码 m 给出)及其初始化,这可以执行多一次训练。在他们对图像分类的实验中,作者将中奖彩票的准确性与整个模型和随机彩票进行了比较。随机票证共享相同的结构,但随机重新初始化。主要的结果是获胜的票始终比随机的票导致更高的分数,并且还可以匹配甚至优于完整的模型。

因此,随机彩票与中奖彩票具有相同的结构,但中奖彩票会产生更高的分数。这意味着初始化值对于中奖票的成功非常重要。当我们有更多的参数时,我们得到更多的初始值。我们还获得了更多的可能性来将好卷的子集组合成稀疏的子网。作者推测,优化器会特别关注一组已经接受了良好初始化的参数。可能的组合越多,优化器就越容易找到初始化良好的参数的子集。

迭代幅度修剪

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 1: Taken from [Han et al. 2015]. Comparison of different pruning techniques and regularization methods. L2 reg. is better than L1 reg. as soon as the parameters are retrained. Iterative pruning outperforms all other methods.

LTH 论文的作者反复修剪和重新训练他们的模型。这是基于[韩等人,2015]的结果。Han 等人比较了一次性修剪、修剪和再训练以及使用不同正则化项的迭代修剪和再训练(见图 1)。主要结果是迭代修剪效果最好。 Frankle 和 Carbin 观察到,与一次性修剪相比,使用迭代修剪可以识别更小的中奖票。

为了验证彩票假说,弗兰克尔&卡宾应该找到与原始网络的准确性相匹配的子网络,当单独训练时。这意味着他们不能利用完整模型从以前的培训中获益。因此,他们通过将(非修剪的)权重值重置为初始化时的值来修改训练和修剪过程。

全局修剪与局部修剪

在修剪期间,可以在每一层修剪到期望的权重分数,或者将所有层的权重放入一个池中并进行全局修剪。在 LTH 的论文中,作者对 LeNet 和 Conv-2/4/6 使用了局部剪枝,而对更深层次的模型:Resnet-18 和 VGG-19 使用了全局剪枝。这个想法是,在更深的模型中,一些层的权重可能更重要,以保持[Morcos et al. 2019]。在视觉上,这些可以是充当特征检测器的第一层,并且可能不会像后面的层那样接收相同数量的修剪单元,后面的层可能具有更多冗余连接。

后期重置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

学习率热身可以帮助找到更深入模型的中奖门票【Frankle & Carbin 2019】。在后续工作中,作者引入了一种不同的技术来处理更深层次的模型:后期重置[Frankle et al. 2019]。对于后期重置,权重不是重置为第一次训练迭代之前的值,而是重置为训练过程中非常早期的一些值(大约一到五次迭代之后)。当使用后期重置时,学习率预热不再必要。

赢得图像域之外的门票

彩票现象是使用前馈卷积网络进行监督图像分类的人工产物,还是会推广到其他领域?[Yu et al. 2019]可以表明,在强化学习和自然语言处理架构中也存在中奖票。他们的实验包括经典控制问题、雅达利游戏、LSTMs 和变形金刚。他们可以找到所有这些架构的中奖门票,这表明 LTH 现象并不局限于监督图像分类,而是可能是深度神经网络的一个普遍特征。

获奖入场券可以跨任务转移

到目前为止,识别中奖门票的程序仍然很昂贵,因为它涉及几个完整的培训通行证。我们怎么还能从中奖的门票中获益?我们能否将它们转移到其他任务中,以便只需要为目标任务学习一小部分权重?

两篇论文已经解决了这个问题:[Mehta 2019]和[Morcos et al. 2019]。这两项工作都停留在图像领域,并在不同的对象识别任务之间转移获奖门票。因为[Mehta 2019]打算充分利用源任务。在这种情况下,他将延迟重置扩展到源任务训练期间的任何地方。

他的结果表明**只要至少全连接层被微调,中奖彩票是可以转让的。**在迁移学习场景中,微调最终的全连接层是强制性的,因为不同的任务有不同的类。

[Morcos et al. 2019]也对图像域内的迁移学习进行了实验。该研究考虑了 CIFAR-10/100、FashionMNIST 和 MNIST 上的 VGG19 和 ResNet50 架构,同时还改变了优化器(SGD 和 Adam)。

他们的结果表明,赢得入场券**并不特定于某个优化器。**例如,通过 SGD 训练获得的中奖彩票可用于初始化 Adam 训练的砝码。关于跨任务的迁移,作者比较了从其他数据集获得的中奖票和从同一数据集获得的中奖票。

令人惊讶的是,从其他数据集获得的门票几乎与从同一数据集获得的门票一样好。他们的关键结果是,更大的数据集产生了更多通用的中奖彩票。

中奖票是什么样子的?

[周等 2019]对中奖彩票的性质进行了细致的调查。它们表明**初始化值的一个至关重要的元素是它们的符号。**初始化值的实际大小似乎不太重要。这可能会给优化者一个线索,让他们努力将消极的归因调整为积极的归因,反之亦然。

他们进一步假设将某些权重屏蔽为零类似于执行训练迭代。某个特征将与当前分类任务无关的信息与进行实际的训练迭代一样珍贵。

在分析了不同的剪枝和变更标准后,作者进一步声称当初始化接近它们的最终形式时,稀疏子网工作得特别好。在这个假设的基础上,作者更进一步发展了超级掩码的概念,超级掩码仅仅是根本没有经过训练的掩码和值的初始化。

有趣的是,这些超级任务产生的准确度分数远远好于偶然性。

修剪和剔除

Dropout 是一种众所周知的正则化方法,它通过将权重或隐藏单元的随机分数设置为零来鼓励训练期间的稀疏性容限。虽然丢弃概率是均匀随机绘制的,但修剪会专门移除低幅度的权重。[Gomez et al. 2019]追求改善辍学和修剪的交互作用的想法。这个想法是,丢失可以针对可能被删除的单元,即那些具有低幅度的单元。

在本文中,作者不仅分析了标准的单位丢失,还分析了权重丢失(又名 DropConnect ),这更接近于所采用的剪枝技术。

移动修剪

赢得入场券的圣杯是在训练过程中尽早识别它们。[Dettmers & Zettlemoyer 2019]提出了一种无需昂贵的再培训就能识别中奖门票的技术。他们利用梯度的动量来确定训练过程中权重变化的速度,以及他们可以降低训练误差的一致性。然后,在每个训练时期之后,它们修剪那些不能一致地减少误差的权重,并且在剩余的参数之间动态地重新分配它们的值。

在他们的实验中,他们所谓的稀疏动量技术优于所有被认为是稀疏学习的基线,甚至可以与密集模型竞争,所有这些都在一次训练迭代中完成。

限制

一些研究挑战彩票假说:【Gale et al . 2019】用 transformers 进行机器翻译的稀疏神经网络与 ResNet-50 进行图像分类的大规模比较。一方面,他们的结果证实了朴素量级剪枝[Han 2015]是比较中最好的剪枝技术。另一方面,他们报告说,LTH 的方法无法为这些更深层次的架构找到制胜的入场券。[Liu et al. 2018]表明,通过精心选择的学习率,随机门票可以与“中奖门票”一样好地执行,这就质疑了初始化的价值。然而,这两部作品都还没有使用后期重置[Frankle et al. 2019],这有助于找到获胜的门票,尤其是在深度架构中。

结论

彩票假说指出,密集神经网络包含稀疏子网络,这些子网络可以被隔离训练以匹配密集网络的性能。这种现象为过度参数化提供了一种新的解释,过度参数化导致彩票开奖次数成倍增加。为了从它们的存在中受益,人们需要找到方法来尽早识别中奖彩票,而根本不需要训练整个模型。一些方法已经解决了这一问题,而其他方法则专注于使神经网络更易于后期修剪的训练方法。

如果我们能够尽早识别出成功的入场券或将它们转移到其他领域,我们将节省大量的培训工作。赢得的入场券有时甚至胜过原来的网络,这可能会对我们理解和设计架构及其初始化方案产生影响。

奖励材料

  • 一个干净且通用的 pytorch 实现(迭代)幅度修剪,以我们的思想实验为特色。

参考

  1. 阿罗拉、桑吉夫、纳达夫·科恩和埃拉德·哈赞。“深度网络的优化:过度参数化的隐式加速”ICML 2018 年奥运会。
  2. 放大图片作者:LeCun,Yann,John S. Denker 和 Sara A. Solla .“最优脑残”神经信息处理系统进展,第 598–605 页。1990.
  3. 韩,宋,等.【高效神经网络的权值和连接学习】 NeurIPS 2015。
  4. 弗兰克、乔纳森和迈克尔·卡宾。彩票假说:寻找稀疏的、可训练的神经网络 ICLR 2019。
  5. Morcos,Ari S .,et al. “一张彩票赢所有人:在数据集和优化器中推广彩票初始化”arXiv 预印本 arXiv:1906.02773 (2019)。
  6. 等着,《彩票规模假说》 arXiv 预印本 arXiv:1903.01611 (2019)。
  7. 余,郝楠,等“用奖励和多种语言玩彩票:RL 和 NLP 中的彩票” arXiv 预印本 arXiv:1906.02768 (2019)。
  8. 梅塔,拉胡尔。“通过中奖彩票实现稀疏迁移学习” arXiv 预印本 arXiv:1905.07785 (2019)。
  9. 周,海蒂,贾妮斯兰,刘莎妮和杰森约辛斯基。《解构彩票:零、符号和超级面具》 arXiv 预印本 arXiv:1905.01067 (2019)。
  10. Gomez,Aidan N .等人“使用定向辍学学习稀疏网络” arXiv 预印本 arXiv:1905.13678 (2019)。
  11. 我是泽特勒莫耶。《从零开始的稀疏网络:更快的训练而不损失性能》 arXiv 预印本 arXiv:1907.04840 (2019)。
  12. 盖尔,特雷弗,埃里希·埃尔森和萨拉·胡克。“深度神经网络中的稀疏状态。” arXiv 预印本 arXiv:1902.09574 (2019)。
  13. 刘、庄、孙明杰、周廷辉、、特雷弗·达雷尔。“重新思考网络修剪的价值” arXiv 预印本 arXiv:1810.05270 (2018)。

时间序列预测的状态空间模型和卡尔曼滤波

原文:https://towardsdatascience.com/state-space-model-and-kalman-filter-for-time-series-prediction-basic-structural-dynamic-linear-2421d7b49fa6?source=collection_archive---------1-----------------------

基本结构模型&动态线性模型

利用金融数据进行时间序列预测

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Image by author

https://sarit-maitra.medium.com/membership

T ime 系列由四大部分组成:季节变动(SV)、趋势变动(TV)、周期变动(CV)、随机变动(RV)。这里,我们将使用 状态空间模型 对单变量时间序列数据进行预测分析。该模型具有连续的隐藏和观察状态。

状态空间模型

让我们使用斯伦贝谢有限公司(SLB)自 1986 年以来的历史数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

线形图

df1 = ts(df1$Open, start= c(1986,1), end = c(2019,12), frequency = 12)
xyplot(df1, ylab = “Price (US $)”, main = “Time series plot for Schlumberger price”)

这里,为了便于计算,数据是按月频率(12 个月)计算的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

线形图显示价格始终在波动,波动性很大。

密度和 Q-Q 图

下面由密度和正常 QQ 图组成的分布图清楚地表明数据分布不正常。

par(mfrow=c(2,1)) # set up the graphics 
hist(df1, prob=TRUE, 12) # histogram 
lines(density(df1)) # density for details 
qqnorm(df1) # normal Q-Q plot 
qqline(df1)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

描述性统计

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

平稳性检验

让我们对原始数据进行平稳性检验(ADF,菲利普-佩龙& KPSS)。

stationary.test(df1, method = “adf”)
stationary.test(df1, method = “pp”) # same as pp.test(x)
stationary.test(df1, method = “kpss”)Augmented Dickey-Fuller Test 
alternative: stationary 

Type 1: no drift no trend 
     lag   ADF p.value
[1,]   0 0.843   0.887
[2,]   1 0.886   0.899
[3,]   2 0.937   0.906
[4,]   3 0.924   0.904
[5,]   4 0.864   0.893
[6,]   5 1.024   0.917
Type 2: with drift no trend 
     lag     ADF p.value
[1,]   0 -0.1706   0.936
[2,]   1 -0.0728   0.950
[3,]   2 -0.0496   0.952
[4,]   3 -0.0435   0.952
[5,]   4 -0.0883   0.947
[6,]   5  0.3066   0.978
Type 3: with drift and trend 
     lag   ADF p.value
[1,]   0 -2.84   0.224
[2,]   1 -2.83   0.228
[3,]   2 -2.72   0.272
[4,]   3 -2.79   0.242
[5,]   4 -2.96   0.172
[6,]   5 -2.96   0.173
---- 
Note: in fact, p.value = 0.01 means p.value <= 0.01 
Phillips-Perron Unit Root Test 
alternative: stationary 

Type 1: no drift no trend 
 lag Z_rho p.value
   5 0.343   0.768
----- 
 Type 2: with drift no trend 
 lag   Z_rho p.value
   5 -0.0692   0.953
----- 
 Type 3: with drift and trend 
 lag Z_rho p.value
   5 -11.6   0.386
--------------- 
Note: p-value = 0.01 means p.value <= 0.01 
KPSS Unit Root Test 
alternative: nonstationary 

Type 1: no drift no trend 
 lag  stat p.value
   4 0.261     0.1
----- 
 Type 2: with drift no trend 
 lag  stat p.value
   4 0.367  0.0914
----- 
 Type 1: with drift and trend 
 lag  stat p.value
   4 0.123  0.0924
----------- 
Note: p.value = 0.01 means p.value <= 0.01 
    : p.value = 0.10 means p.value >= 0.10

数据标准化

我已经使用均值和标准差对数据集进行了归一化。戴夫。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

自相关函数

确定不同时间滞后的相关性是否为 0

稳定=高斯噪声,一个趋势=高斯噪声的累积和。

这里,我们将通过查看每个信号的自相关函数来检查每个信号的平稳特性。对于平稳信号,我们期望 ACF 在每个时间延迟(τ)达到 0,因为我们期望不依赖于时间。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以看到,稳态信号很少滞后于 ACF 的 CI。这种趋势导致几乎所有的滞后都超过了置信区间。可以断定 ACF 信号是稳定的。但是,趋势信号不是静止的。平稳序列在平均水平附近具有更好的方差,峰值是原始序列中干预的证据。

我们将进一步分解时间序列,包括水平、趋势、季节性和噪声成分的组合。分解有助于在分析和预测过程中更好地理解问题。

分解时间序列

我们可以应用差分数据或对数转换数据来消除趋势和季节性。如果我们只关心预测,这样的过程也许不是缺点。然而,在统计学和计量经济学应用的许多背景下,这一组成部分的知识具有潜在的重要性。趋势和季节的估计可以通过最大化残差均方差从差分序列中恢复,但这不如直接建模组件有吸引力。我们必须记住,实数列从来都不是稳定的。

这里,我们将使用时间序列的简单移动平均平滑方法来估计趋势分量。

df1SMA8 <- SMA(df1, n=8) # smoothing with moving average 8
plot.ts(df1SMA8)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

df1Comp <- decompose(df1SMA8) # decomposing
plot(df1Comp, yax.flip=TRUE)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

该图显示了原始时间序列(顶部)、估计趋势分量(从顶部数第二个)、估计季节分量(从顶部数第三个)和估计不规则分量(底部)。

我们看到,估计趋势分量显示从 1997 年的约 9 小幅下降到 1999 年的约 7,随后从那时起稳步上升到 2019 年的约 12。

季节性调整

df1.Comp.seasonal <- sapply(df1Comp$seasonal, nchar)
df1SeasonAdj <- df1 — df1.Comp.seasonal
plot.ts(df1SeasonAdj*)*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们也将探讨卡尔曼滤波器在预测之前的系列滤波和平滑的目的。

结构模型

结构时间序列模型是(单变量)时间序列的(线性高斯)状态空间模型。当考虑状态空间架构时,通常我们有兴趣考虑三个主要方面:

  • 预测,即预测状态的后续值
  • 滤波,从过去和当前的观察值中估计状态的当前值
  • 平滑,即在给定观察值的情况下估计状态的过去值

我们将使用卡尔曼滤波器来进行各种类型的推断。

过滤有助于我们在每次观察到来时更新对系统的了解。平滑有助于我们根据整个样本来估计感兴趣的数量。

基本结构模型(BSM)

结构模式的优点是使用简单,非常可靠。它给出了最大似然法拟合时间序列结构模型的主要工具。

结构化时间序列状态空间模型,基于将序列分解为若干部分。它们由一组误差方差指定,其中一些方差可能为零。我们将使用一个基本的结构模型来拟合随机水平模型进行预测。构成状态空间模型的两个主要部分是(1)观察到的数据和(2)未观察到的状态。

最简单的模型是局部级别模型,它有一个基础级别 t,它通过以下方式发展:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们需要看到观察结果,因为系统噪声对我们隐藏了状态。观察值是当前状态和一些称为测量噪声的附加随机变化的线性组合。观察结果是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

它实际上是一个 ARIMA(0,1,1)模型,但是对参数集有限制。这是随机变化的水平*(随机游走)*用噪声观察到的。

局部线性趋势模型具有相同的测量方程,但是对于 t 具有动态时变斜率,由下式给出

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

有三个方差参数。这里εt,ξt,ζt 是独立的高斯白噪声过程。基本结构模型是一个带有额外季节性成分的局部趋势模型。因此,测量公式为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中γt 是具有动态的季节性分量

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

训练/测试分割

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

模型拟合和预测

最好的做法是检查结构化过程的收敛性。与任何结构化过程一样,我们需要有适当的初始起点,以确保算法将收敛到正确的最大值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

autoplot(training, series=”Training data”) + autolayer(fitted(train, h=12), series=”12-step fitted values”)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

交互效度分析

交叉验证是时间序列分析的一个重要步骤。

  • 将模型拟合到数据 y1,.。。,yt
  • 生成提前一步的预测-yt+1
  • 计算预测误差 e∫t+1 = yt+1yˇt+1
  • 对于 t = m,重复步骤 1–3。。。,n-1,其中 m 是适合模型的最小观察值
  • 根据 e∫m+1,计算预测 MSE。。。,e *

残差 Ljung-Box 检验的 p 值为 0.2131015 >显著水平(0.05);因此,不建议使用交叉验证的结果,因为该模型明显不符合数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

基础诊断学

我们进行任何统计分析的第一个诊断是检查我们的残差是否符合我们假设的误差结构。在单变量状态空间模型中,我们有两种类型的误差:过程误差,wt,和观察误差,vt。它们不应该有时间趋势。

模型.残差

vt 是 t 时刻的数据与预测数据之差:vt = yt Zxt a

在状态空间模型中,xt 是随机的,模型残差是随机变量。yt 也是随机的,尽管不像 xt 那样经常被观察到。模型残差随机变量为:Vt = Yt ZXt a

Vt 的无条件均值和方差为 0,R

checkresiduals(train)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

卡尔曼滤波器

卡尔曼滤波算法使用一系列随时间观察到的测量值,包含噪声和其他不准确性,并产生未知变量的估计值。这种估计往往比仅基于单个测量结果更准确。使用卡尔曼滤波器并不假设误差是高斯的;然而,在所有误差都是高斯的特殊情况下,滤波器产生精确的条件概率估计。

卡尔曼滤波是一种寻找过程估计值的方法。过滤来自于减少或“过滤掉”不想要的变量的原始用法,在我们的例子中是估计误差。

sm <- tsSmooth(train)
plot(df1)
lines(sm[,1],col=’blue’)
lines(fitted(train)[,1],col=’red’)# Seasonally adjusted data
training.sa <- df1 — sm[, 1]
lines(training.sa, col=’black’)
legend(“topleft”,col=c(‘blue’, ’red’, ‘black’), lty=1,
 legend=c(“Filtered level”, ”Smoothed level”)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

x <- training
miss <- sample(1:length(x), 12)
x[miss] <- NA
estim <- sm[,1] + sm[, 2]
plot(x, ylim=range(df1))
points(time(x)[miss], estim[miss], col = ’red’, pch = 1)
points(time(x)[miss], df1[miss], col = ’blue’, pch = 1)
legend(“topleft”, pch = 1, col = c(2,1), legend = c(“Estimate”, ”Actual”))

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

plot(sm, main = “”)
mtext(text = “decomposition of the basic structural”, side = 3, adj = 0, line = 1)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

预言;预测;预告

sm %>%
 forecast(h=12) %>%
 autoplot() + autolayer(testing)

下图显示了预测的斯伦贝谢数据以及 50%和 90%的概率区间。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如我们所看到的,BSM 模型能够很好地提取季节成分。我们可以在这里试验基于 SMA 的分解(如前所示),并比较预测准确性。

带有卡尔曼滤波器的动态线性模型

dlm 模型是状态空间模型的特殊情况,其中状态和观察分量的误差是正态分布的。这里,卡尔曼滤波器将用于:

  • 状态向量的过滤值。
  • 状态向量的平滑值,
  • 预测提供了未来观测值和状态的均值和方差。

我们必须在拟合 dlm 模型之前定义参数。这些参数是 V,W(分别是测量和状态方程的协方差矩阵),FF 和 GG(分别是测量方程矩阵和转移矩阵),以及 m0,C0(状态向量的先验均值和协方差矩阵)。

但是,在这里,我们通过编写一个如下所示的小函数来启动 dlm 模型:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我考虑了具有 dlm、多项式 DLM(局部线性趋势是二阶多项式 DLM)和季节成分 12 的局部水平模型。检查 MLE 过程的收敛性是一个好的实践,而不是最佳实践的一部分。

卡尔曼滤波器和平滑器也被应用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以看到,dlm 模型的预测精度相当不错。过滤器和平滑线在系列中几乎是一起移动的,彼此没有太大区别。这里忽略了季节因素。预测序列和原始序列的线非常接近。

状态空间模型与时间序列分析的一个很好的例子可以在这里找到

摘要

状态空间模型有多种风格和处理大量时间序列模型的灵活方式,并提供了处理缺失值、似然估计、平滑、预测等的框架。单变量和多变量数据都可以用来拟合状态空间模型。在本练习中,我们展示了一个基本级别的模型。

我可以到达这里的 **

参考:

  1. 德宾,j .,&库普曼,S. J. (2012)。用状态空间方法进行时间序列分析。牛津大学出版社。
  2. Giovanni Petris&Sonia Petrone(2011),R 中的状态空间模型,统计软件杂志
  3. G . Petris、S . Petrone 和 P . Campagnoli(2009 年)。带有 R. Springer 的动态线性模型
  4. Hyndman,R. J .,& Athanasopoulos,G. (2018)。预测:原理与实践。OTexts。

时间序列分析的平稳性

原文:https://towardsdatascience.com/stationarity-in-time-series-analysis-90c94f27322?source=collection_archive---------1-----------------------

平稳性的概念和类型综述

这篇文章旨在提供一个简明而全面的综述,介绍平稳性的概念,以及在处理时间序列分析的学术文献中定义的不同类型的平稳性。

未来的帖子将致力于提供类似的简要概述,介绍时间序列数据中非平稳性的检测,以及将非平稳时间序列转换为平稳时间序列的不同方法。

为什么平稳性很重要?

在深入研究平稳性的正式定义及其相关概念之前,有必要考虑一下为什么平稳性的概念在时间序列分析及其各种应用中变得如此重要。

从最直观的意义上来说,平稳性意味着生成时间序列的过程的统计特性不会随时间而改变。这并不意味着这个系列不会随着时间而改变,只是它改变的方式本身不会随着时间而改变。因此,代数等值可能是一个线性函数,而不是一个常数;线性函数的值随着𝒙的增长而变化,但是它变化的方式保持不变——它有一个恒定的斜率;一个能捕捉到变化率的值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 1: Time series generated by a stationary (top) and a non-stationary (bottom) processes.

为什么这很重要?首先,因为平稳过程更容易分析。没有生成时间序列数据的过程的正式定义(还没有;它们被称为随机过程,我们一会儿就会讲到),已经很清楚,平稳过程是一个更广泛的现实可能模型家族的一个子类。这个子类更容易建模和研究。上面的非正式定义也暗示了这样的过程应该是可以预测的,因为它们变化的方式是可以预测的。

虽然这听起来有点像路灯效应,简单的理论或模型应该变得更加突出,但这实际上是科学中相当常见的模式,而且有充分的理由。在许多情况下,简单的模型会令人惊讶地有用,要么作为构建更复杂模型的基础,要么作为复杂现象的有用近似。事实证明,这也适用于平稳过程。

由于这些性质,平稳性已经成为时间序列分析中许多实践和工具的共同假设。其中包括趋势估计、预测和因果推断等。

因此,平稳性的重要性的最后一个原因是它在时间序列分析中的普遍性,使得理解、检测和建模的能力对于时间序列分析中许多重要工具和程序的应用是必要的。事实上,对于许多涉及时间序列的情况,您会发现您必须能够确定数据是否是由平稳过程生成的,并可能对其进行转换,使其具有由这种过程生成的样本的属性。

如果你想处理时间序列数据,希望我已经说服你理解平稳性是重要的,我们可以更正式地介绍这个主题。

随机过程的形式定义

在介绍更正式的平稳性概念之前,需要一些先驱性的定义。本节旨在提供进一步阅读所需的时间序列分析和随机过程理论的基本概念的快速概述。如果你熟悉他们,请随意跳过

**时间序列:**通常,时间序列 (x,…,xₑ) 被认为是从时间 t=1 到时间 t=e 在连续的等间距 时间点所取的一系列实数值。

滞后:对于某个特定的时间点 r ,观测值 x ᵣ₋ᵢ ( i 周期回退)称为 x ᵣ.的 i -th 滞后将另一个时间序列 X 后移 i 时间步长产生的一个时间序列 Y 有时也称为 X 的Ith滞后*,Xi 滞后。这种变换既称为后移算子*,通常表示为 B (∙),也称为滞后算子,通常表示为L();于是,l(xᵣ)= xᵣ₋₁*。经营者的权力定义为:lⁱ(xᵣ】= x*ᵣ₋ᵢ.

随机过程

时间序列数据分析的一种常见方法是将观察到的时间序列视为随机过程实现的一部分。在定义随机过程之前,需要两个粗略的定义。

概率空间: A 概率空间是三元组*(ω,F,P)* ,其中
(I)ω是非空集,称为样本空间
(ii) F 是ω的子集的-代数,即关于ω的可数并闭和补的子集族。
(iii) P 是为 F 的所有成员定义的概率测度

随机变量: A 随机变量实随机变量(ω,f,P)* 上是一个函数x:ω→ℝ,使得任意区间 (-∞,a】【t40)的逆像属于f*;即可测功能。**

我们现在可以定义什么是随机过程。

随机过程:**一个实随机过程是一族实随机变量𝑿={ x(ω);i* ∈ T} ,都定义在同一个概率空间上*(ω,F,P)* 。集合 T 称为流程的索引集合。如果 T ⊂ℤ,那么这个过程叫做离散随机过程。如果 T 是ℝ的一个区间,那么这个过程叫做连续随机过程。*

***有限维分布:*对于有限整数集合 T ={t₁,…,tn} ,𝑿= {X(ω)的联合分布函数;iT} 定义如下

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Equation 1: The joint distribution function.

对于随机过程,𝑿通常也表示为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

随机过程的有限维分布于是被定义为任意大小 n 的所有此类有限整数集 T 的所有此类联合分布函数的集合。因此,对于离散过程,集合为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Equation 2: Finite dimensional distribution for a discrete stochastic process.

直观地说,这代表了流程在有限维向量空间上的投影(在这种情况下,是一组有限的时间点)。

平稳性的定义

有了随机过程的基本定义,我们现在可以引入平稳性的概念。

直观上,平稳性是指过程的统计性质不随时间变化。然而,多年来在计量经济学文献中已经提出了几种不同的平稳性概念。

在深入这些定义之前,要做的一个重要区分是平稳性——任何种类——是随机过程的属性,而不是它的任何有限或无限实现的(即值的时间序列)。

强平稳性

强平稳性 要求随机过程的有限维分布具有平移不变性(在时间上)。这意味着随机过程的随机变量的有限子序列的分布在我们沿着时间索引轴移动它时保持不变。比如所有的 i.i.d. 随机过程都是平稳的。

形式上,离散随机过程𝑿={ x;i∈ℤ}* 是否静止如果*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Equation 3: The stationarity condition.

对于 Tn ∈ℕ与任意τ∈ 。[考克斯&米勒,1965]对于连续随机过程来说条件是类似的,用 T ⊂ℝ、 n ∈ℕ和任何一个τ∈ℝ 代替。**

这是平稳性最常见的定义,通常简称为平稳性。有时也被称为严格意义上的平稳性强意义上的平稳性*。*

***注:*该定义不假设构成随机过程的随机变量的任意时刻的存在/有限性

弱平稳性

弱平稳性 只需要一阶矩和交叉矩(自协方差)的平移不变性(在时间上)。这意味着该过程在所有时间点都具有相同的均值,并且任意两个时间点的值 tt k之间的协方差仅取决于两个时间点之间的差值 k ,而不取决于沿时间轴的点的位置。

形式上,流程{ x;i∈ℤ}* 是弱平稳如果:
1。 x ᵢ的一阶矩不变;即 ∀t,e【xᵢ*]=𝜇t23】2。对于所有 t, x ᵢ的二阶矩是有限的;即 ∀t,e【x<∞*(这其中当然也隐含着e[(xᵢ*-𝜇)]<∞*;即对于所有的 t )
3,方差是有限的。交叉力矩——即自协方差——仅取决于差值u-v;即 ∀u,v,a、cov(xᵤ、xᵥ)=cov(xᵤ₊ₐ、xᵥ₊ₐ)*

第三个条件意味着每个滞后𝜏ℕ都有一个与之相关联的恒定协方差值:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注意,这直接意味着过程的方差也是常数,因为我们得到所有 t ℕ的方差

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这为弱平稳过程描绘了一幅特殊的图画,即那些具有恒定均值和方差的过程。它们的属性与下面图 2 中的对应属性形成了鲜明的对比。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 2: Constancy in mean and variance.

弱平稳的其他俗称有广义平稳、* 弱意义平稳协方差平稳二阶平稳 。令人困惑的是,根据上下文,它有时也被简单地称为平稳性(参见【Boshnakov,2011】中的例子);例如,在地理统计文献中,这是平稳性的主要概念。[迈尔斯,1989 年]*

***注意:*强平稳性并不意味着弱平稳性,后者也不意味着前者(见例此处)!高斯过程是一个例外,对于它来说,弱平稳性意味着强平稳性。
强平稳性并不意味着弱平稳性的原因是,它并不意味着过程必然有一个有限的二阶矩;例如,具有标准柯西分布的 IID 过程是严格平稳的,但是没有有限二阶矩 (参见【Myers,1989】)。的确,对于强平稳过程的弱平稳性,有一个有限的二阶矩是一个充分必要条件。

白噪声过程 : 白噪声过程是一个序列不相关的随机过程,均值为零,方差恒定且有限。

形式上,流程{ x;i∈ℤ}* 是t18】一个白噪声过程如果:
1。 x ᵢ的一阶矩始终为零;即 ∀t,e[x
= 0*
2。对于所有 t, x ᵢ的二阶矩是有限的;即 ∀t,e[(xᵢ*-𝜇)]<∞*
3。当 u≠v 时,交叉力矩e[xᵤxᵥ】为零;即 ∀u,v w. u ≠v、 cov(xᵤ、xᵥ)=0

注意,这意味着每个白噪声过程都是弱平稳过程。此外,如果每个变量 xᵢ遵循具有零均值和相同方差的正态分布 σ ,则该过程被称为高斯白噪声过程*。*

n 阶平稳性

非常接近于强平稳性的定义, N 阶平稳性要求随机过程的任意 n 个样本的分布的平移不变性(在时间上),对于所有 nN 阶。

因此,需要相同的条件:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Equation 4: The N-th order stationarity condition.

对于 Tn{1,…,N} 与任意τ∈

自然,对某一阶 N 的平稳性并不意味着任何更高阶的平稳性(但反之亦然)。在 mathoverflow 中的一个有趣的线程展示了一个一阶平稳过程(不是二阶平稳)的例子和一个二阶平稳过程(不是三阶平稳)的例子。

注意,对于 N=2 的第 N 阶的平稳性令人惊讶地不等同于弱平稳性,即使后者有时被称为二阶平稳性。[Myers,1989]与强平稳性一样,𝑿的任意两个样本的分布的二阶平稳性所设定的条件并不意味着𝑿具有有限的矩。同样,具有有限的二阶矩是二阶平稳过程也是弱平稳过程的充分必要条件。

一阶平稳性

一阶平稳性这个术语有时用来描述一个序列,它的均值永远不会随时间变化,但其他任何时刻(如方差)都可能发生变化。[Boshnakov,2011 年]

再次注意,这个定义并不等同于 N=1 的 N 阶平稳性,因为后者需要 x ᵢ对于进程𝑿= {x都是同分布的;我ℤ} 。比如一个过程,其中 x ᵢ~𝓝(𝜇, f(i) )其中 f(i)=1 为偶数的 if(i)=2 为奇数的,在时间上具有恒定的均值,但是 x ᵢ不是同分布的。因此,这种过程属于一阶平稳性的特定定义,但不属于 N=1N 阶平稳性。

循环平稳性

如果任意样本集的联合分布在 mP,的时移上不变,则随机过程是循环平稳的,其中m和 P∈ℕ是过程的周期:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Equation 5: The cyclostationarity condition.

循环平稳在信号处理中非常重要。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 3: A white noise process 𝑛(𝑡) modulated by sin2𝜔𝑡 produces the cyclostationary process 𝑥(𝑡)=𝑛(𝑡)sin2𝜔𝑡

趋势平稳性

如果一个潜在的趋势(仅仅是时间的函数)可以被移除,留下一个平稳的过程,那么一个随机过程就是趋势平稳的*。含义,该过程可以表示为yᵢ=f(I)+εᵢ,其中 f(i) 是任意函数f:ℝ→ℝεᵢ是均值为零的平稳随机过程。*

在存在冲击的情况下(序列值的显著和快速的一次性变化),趋势平稳过程是均值回复的;即,随着时间的推移,该序列将再次向增长(或收缩)均值收敛,这不受冲击的影响。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 4: Trend stationary processes revert to their mean after a shock is applied.

联合平稳性

对于随机过程对,上述所有类型的平稳性都有直观的扩展。例如,对于一对随机过程𝑿和𝒀,联合强平稳性是由强平稳性的相同条件定义的,但是简单地强加于两个过程的联合累积分布函数。弱平稳性和 N 阶平稳性可以用同样的方法扩展(后者扩展到 M - N 阶联合平稳性)。

内在假设

弱平稳性的一种较弱形式,在地质统计学文献中较为突出(例如,参见【Myers 1989】和【Fischer 等人 1996】)。内在假设适用于随机过程𝑿={Xᵢ},如果:

  1. 由距离 r 分开的任意两个地方的值之间的期望差为零: E[xᵢ-xᵢ₊ᵣ]=0
  2. var[xᵢ-xᵢ₊ᵣ给出的差的方差是存在的(即它是有限的),并且只取决于距离 r

这个概念暗示了差分 Xᵢ-Xᵢ₊ᵣ的弱平稳性,并通过定义 N 阶内在假设进行了扩展。

局部平稳随机过程

一类重要的非平稳过程是局部平稳(LS)过程。【Cardinali&Nason,2010】给出了 LS 过程的一个直观定义,即它们的统计特性随时间缓慢变化。或者,【达尔豪斯,2012】将它们(非正式地)定义为在每个时间点局部上接近于平稳过程,但其特征(协方差、参数等)是平稳的过程。)随着时间的推移以一种不确定的方式逐渐变化。正式定义见[Vogt,2012 年],T28,[达尔豪斯,2012 年],T29 对该主题进行了严格审查。

LS 过程非常重要,因为它们在一定程度上弥合了参数非平稳过程的彻底探索子类(见下一节)和更广泛的非参数过程家族的未知水域之间的差距,因为它们已经接受了严格的处理和一套相应的分析工具,类似于参数过程所享有的那些工具。关于这个主题的一个很好的在线资源是 Guy Nason 教授的主页,他把 LS 过程作为他的主要研究兴趣。

平稳概念的类型学

下面的类型图,虽然可能是局部的,但可以帮助理解我们刚刚讨论过的不同的平稳性概念之间的关系:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 5: Types of non-stationary processes

非平稳性的参数概念

到目前为止,平稳性的定义是非参数的;也就是说,他们没有假设数据生成过程的模型,因此适用于任何随机过程。然而,差分平稳性和单位根过程的相关概念需要简单介绍随机过程建模。

随机建模的主题也是相关的,因为各种简单的模型可以用来创建随机过程(见图 5)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 6: Various non-stationary processes (the purple white noise process is an exception).

随机过程建模中的基本概念

未来值的预测是时间序列数据研究中的一项常见任务。要进行预测,需要对数据生成过程(DGP)和生成数据的机制做出一些假设。这些假设通常采用过程的显式模型的形式,并且在为其他任务(如异常检测或因果推断)建模随机过程时也经常使用。我们将讨论三种最常见的模型。

自回归(AR)模型 : 使用 AR 模型建模的时间序列被假设生成为其过去值的线性函数,加上随机噪声/误差:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Equation 4: The autoregressive model.

这是一个基于记忆的模型,在这个意义上,每个值都与前面的 p 值相关;具有滞后 p 的 AR 模型用 AR§ 表示。系数𝜙 是衡量这些在前值对值 x【t】的影响的权重,c* 是常数截距,ε 是单变量白噪声过程(通常假设为高斯)。*

向量自回归(VAR) 模型将 AR 模型的单变量情况推广到多变量情况;现在,长度为 k 的向量x【t】的每个元素可以被建模为过去的向量 p 的所有元素的线性函数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Equation 5: The vector autoregressive model.

其中 ck 常数(截距)的向量, Aᵢ 为时不变的 k×k 矩阵,e={ e;i∈ℤ}* 是一个白噪声多变量过程k 变量。*

移动平均(MA)模型 : 一个使用移动平均模型建模的时间序列,用 MA(q) 表示,被假设为由ε ᵢ、单变量白噪声过程产生的最后一个 q+1 随机冲击的线性函数;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Equation 6: The moving average model.

像自回归模型一样,向量泛化,VMA,是存在的。

自回归移动平均(ARMA)模型 : 使用 ARMA(p,q) 模型建模的时间序列被假设为由ε ᵢ、单变量白噪声过程产生的最后 p 值和最后 q+1 随机冲击的线性函数;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Equation 7: The ARMA model.

ARMA 模型可以以多种方式推广,例如处理非线性或外生变量、多变量情况(VARMA)或处理(特定类型的)非平稳数据(ARIMA)。

差分平稳过程

*有了对常见随机过程模型的基本理解,我们现在可以讨论差分平稳过程和单位根的相关概念。这个概念依赖于这样一个假设,即所讨论的随机过程可以写成一个阶为 *p、自回归过程,表示为 AR§:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Equation 8: An autoregressive process of order p, or AR§.

其中ε 通常是不相关的白噪声过程(对于所有时间 t )。我们可以将相同的过程写成:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Equation 9: An AR§ model written using lag operators.

左边括号内的部分称为过程的特征方程。我们可以考虑这个等式的根:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Equation 10: The characteristic equation of a AR§ model.

如果 m=1 是方程的根,那么这个随机过程被称为是一个差分平稳过程,或者是积分*。这意味着通过对其应用某种类型的变换,该过程可以被转换成弱平稳过程,称为差分。*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure 7: A time series (left) and a the series after differencing (right)

*差分平稳过程有一个积分阶,这是差分算子必须应用于它的次数,以便实现弱平稳性。一个必须被微分 r 次的过程被称为按照顺序 *r、被积分,用 表示。这正好与根的重数 m=1 相吻合;也就是说,如果 m=1 是特征方程的重数 r 的根,那么这个过程就是 r 阶的积分。

单位根过程

差分平稳过程的一个常见子类型是一阶积分过程,也称为单位根过程。这种过程最简单的例子是下面的自回归模型:**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

单位根过程和一般的差分平稳过程是有趣的,因为它们是非平稳过程,可以很容易地转化为弱平稳过程。因此,虽然这个术语不能与非平稳性互换使用,但关于它们的问题有时是可以互换的。

我认为这里值得一提,因为有时检查一个过程是否有单位根的测试和过程(一个常见的例子是 Dickey-Fuller 测试)被错误地认为是测试非平稳性的过程(在本系列的后面一篇文章中会提到)。因此,重要的是要记住这些是不同的概念,虽然每个具有单位根的过程都是不稳定的,集成到订单 r > 1 的每个过程也是不稳定的,但相反的情况远非如此。

半参数单位根过程

另一个有趣的定义是非平稳过程的更广泛、参数更少的子类,可以称为半参数单位根过程。该定义是在[Davidson,2002]中介绍的,但可以在[Breitung,2002]中找到它的简明概述。

如果你对平稳性的概念感兴趣,或者在处理时间序列数据时无意中发现了这个主题,那么我希望这篇文章是对这个主题的一个很好的介绍。下面是一些参考资料和有用的链接。

正如我提到的,本系列的后一篇文章提供了非平稳性检测方法的类似概述,另一篇文章将提供非平稳性时间序列数据转换的类似概述。

另外,如果你对这篇文章或这个话题有任何意见和想法,请随时联系我

参考

学术文献

在线参考

脚注

  1. 这里的措辞并不严格准确,因为——正如我们很快会看到的——时间序列本身不可能是静态的,只有产生它们的过程才能是静态的。然而,我使用它是为了不假设开头的段落有任何知识。
  2. 弱意义平稳性的常见同义词二阶平稳性可能与二阶随机过程的概念有关(但不应与之混淆),二阶随机过程被定义为具有有限二阶矩(即方差)的随机过程。
  3. 注意,反之则不然。不是每个平稳过程都是由 IID 变量组成的;平稳性是指变量的联合分布不依赖于时间,但它们仍可能相互依赖。
  4. 这也是一个很好的例子,说明 IID 并不意味着弱平稳性;然而,由于它确实意味着强平稳性,所以它具有与它意味着强平稳性相同的充分必要条件:具有有限的矩。
  5. 平稳性的一个次要但有趣的概念是p——平稳过程
  6. 也有正式的方法来处理样本间隔不相等的时间序列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值