TowardsDataScience 博客中文翻译 2019(四百九十三)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

人工智能在 B2B 营销中的作用

原文:https://towardsdatascience.com/the-role-of-ai-in-b2b-marketing-8fa31aa2de2f?source=collection_archive---------10-----------------------

使用机器学习和行为建模来生成线索

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

B2B 营销很容易。你所需要做的就是在他们自己的教育过程中,在准确的时间找到完美的前景。一旦你做到了这一点,只要把正确的信息交到他们手中,让他们知道你是如何找到完美的解决方案来彻底解决他们的痛点的。坐下来,看着你的企业像服用类固醇的杂草一样成长。没什么。

但是,如果 B2B 营销如此简单,为什么有些组织似乎在这方面取得成功,而其他人却在苦苦挣扎?事实证明,在准确的时间找到完美的潜在客户类似于在一片黑色雨伞的海洋中找到一把红色雨伞,但要困难得多。值得追求的前景往往只能通过微妙的线索来识别,行为模式只能通过仔细分析正确的数据来区分。

一些公司对此的反应是砸钱解决问题——举手投降,到处寻找保护伞。其他人很擅长识别红色雨伞。

我在一家名为 Projector PSA 的小型软件公司工作,该公司开发专业服务自动化软件,旨在帮助咨询公司运营业务。我们与比我们大几个数量级的对手竞争。因为我们不能盲目地花钱解决问题,我们为找到更聪明、更有效的做事方法而自豪。这些方法中的许多都植根于有效利用我们可以获得的大量数据,例如我们如何使用语义分析来执行竞争分析,使用预测分析来改善收入预测,以及使用神经网络来识别有效的项目经理

今天,我想谈谈我们如何开始在 B2B 营销工作中使用人工智能。具体来说,我们如何使用机器学习算法和行为建模来推动我们的销售线索生成引擎。

营销漏斗

在深入机器学习方面之前,我需要简要描述一下我们的整体营销模型。像许多企业一样,我们认为我们的营销过程是一个漏斗,对应于访问者在教育旅程中的进展。他们可能只是在寻找经营专业服务公司的最佳实践的基本信息。我们在这一阶段的工作是将这种普遍的兴趣转化为意识,即一类称为专业服务自动化(PSA)软件的产品是存在的,并且它可能是有用的。或者,他们可能已经知道缩写 PSA,并正在积极比较不同的产品。在这里,我们的职责是展示我们的产品与市场上其他产品的不同之处。这个漏斗(为清晰起见进行了简化)看起来有点像这样:

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

我们网站上的不同内容是为每个教育阶段的目标访问者编写的。例如,我们可能有一篇针对处于认知阶段的人的关于测量利用率的最佳实践的博客文章。或者,我们可能有一本电子书,为希望获得 PSA 市场更深入教育的游客提供 PSA 软件的初级读本。最后,我们有一个交互式性能记分卡,允许读者将我们的产品与其他产品的性能进行比较——这是差异化阶段的访问者发现有用的内容。

在经历了认知、教育、兴趣和差异化阶段的所有人中,只有一小部分人通过注册免费试用或联系我们的销售团队成为可识别的销售线索。在成为 SQL 或销售主管的过渡阶段,我们收集访问者的信息,他们的联系信息和他们的公司名称。

那么,那些从未表明自己身份、从未成为 SQL 的访问者呢?他们永远消失了吗?

研究和主动外联

事实证明,对于这些匿名访客,我们称之为访客非转化者,因为他们从未转化为线索,我们有一个关键的信息。任何网站的每个访问者都有一个 IP 地址,这是访问者访问我们网站的唯一互联网地址。

许多 IP 地址指向互联网服务提供商(ISP),如威瑞森或康卡斯特,这对我们来说是一个死胡同。然而,如果有人在 Acme Consulting 工作,并在工作中访问我们的网站,使用一种称为反向 DNS 查找的技术,我们通常可以将该 IP 地址转换为 Acme Consulting 公司。

在此基础上,我们可以让我们的研究团队在 Acme 找到符合我们典型买家特征的人(比如他们的首席运营官或专业服务副总裁),并单独联系他们。我们不一定需要接触到真正访问过我们网站的人,但是只要知道 Acme 对我们这样的产品感兴趣,就是我们接触的一个很好的触发器。

这种研究和主动外展过程,如果做得好,实际上应该是相当劳动密集型的。

我们的团队需要确保我们接触到正确的人,并为每个人找到正确的有针对性的个性化接触点。接触点不仅仅是模板化的垃圾邮件,也可能是一个电话、一篇博客帖子上的评论、一个有趣观点的转发或一位相关同事的介绍。需要了解市场、收件人的工作环境以及潜在客户可能面临的棘手问题的接触点。最重要的是,接触点实际上为接收者提供了价值。

问题是我们可能每个月都有成千上万的访问者访问我们的网站。对于研究阶段来说太多了,对于劳动密集型的个性化推广来说就更少了。

行为分析

在我看来,这就是事情变得有趣的地方……数据科学发挥作用的地方。因为我们不希望每个月对成千上万个 IP 地址中的每一个进行哪怕是最基本的研究,所以我们需要弄清楚如何进行优先排序。我们可以使用自动化手段过滤掉已知的 ISP、已经转换的 SQL、当前客户和其他访问者,以缩小非转换访问者的范围,但这仍然给我们留下了大量需要进一步优先考虑的访问者。进入行为分析。

我们可以从网络日志中了解到很多关于访问者在我们网站上行为的信息。如上所述,我们将网站上的内容分为不同的类别,如我们的博客、我们的产品页面、关于我们公司的页面、新闻发布、工作描述等。

我们发现某些页面(如我们的定价页面)本身就是购买意向的良好指标。然而,更有趣的往往是行为的组合。

一个人看较少数量的页面,但是看各种各样的内容可能表示更高的兴趣。如果一个访问者看了很多页,但只看了一种类型,比如说,我们的工作描述,那么这个人更可能是一个招聘候选人,而不是一个潜在客户。那些只看我们的博客,但不看我们的产品页面的人可能更有兴趣学习经营专业服务公司的最佳实践,而不是找到一种产品来帮助他们。一个只看我们的产品页面和截图的访问者可能会试图对我们的应用程序进行逆向工程,而对实际使用它完全不感兴趣。

我们的网络日志还能告诉我们访问者第一次是如何到达我们的网站的——他们是在谷歌上搜索了什么,还是从合作伙伴的网站上点击进入的。它们可以显示访问者在每个页面上花了多长时间,他们是否注册了优质内容(如我们的电子书),以及他们是否多次回来获取更多信息。通过我们在网站上收集的数据跟踪每个访问者,我们可以对那个人的行为进行大量的分析,并推断出他们的一些兴趣。

在过去,传统的营销自动化工具提供了一些功能,通过一种称为线索评分的机制,将所有这些行为转化为可操作的信息。用户将配置该工具,以理解阅读一篇博客文章可能值一分,查看一个产品页面可能值两分,在定价页面上花费超过 30 秒值五分。这有点像用强力链锯来解决一个需要手术刀般精确的问题。它需要根据对每个行动的相对价值的一些相当任意的假设来手动建立领先评分模型,很少能追溯应用到历史数据,并且通常与现实世界的结果相关性很差。

机器学习

最后,我们谈到了人工智能和机器学习。我们希望避免手动编制的销售线索评分机制的任意性。为了做到这一点,我们决定教一个机器学习分类模型来确定所有行为输入的正确权重,以尝试预测转换倾向。

对于每个访问者,无论是成功的 SQL 转换还是未转换的访问者,我们都将所有的行为数据转化为一组标志、比率、数字和其他指标。这在不同的情况下会有所不同,但对我们来说,这是由一些因素组成的,比如浏览的总页数,每种类型的页面所占的比例(博客、产品页面、工作描述等)。)、不同类型页面上的平均持续时间等。最重要的是,我们捕获了我们的关键目标属性,一个指示访问者是否转换为 SQL 的标志:

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

随着所有这些数据的处理,我们将其转化为每个访问者的向量,并将我们所有的访问者数据输入到几个机器学习分类算法中。在比较了它们的输出之后,我们最终选定了一个特定的神经网络模型。(在这里,我不会详细介绍我们用来比较和选择不同算法的过程。)

这个约有 40,000 名访问者的数据集既用作训练数据,也用作测试数据。随着我们收集更多的数据,我们可以决定是使用这个初始训练模型测试新访客,还是使用额外的数据继续训练算法。

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

不管怎样,我们最终追求的是模型的混淆矩阵。混淆矩阵显示,在所有实际上没有转换的访问者中,该算法正确预测了其中的 99.6%。在转化的访问者中,它的预测正确率为 80.9%。然而,除了承认算法获得了不错的命中率之外,这些正确的预测,真正的负面和真正的正面情况,实际上对我们来说并不那么有趣。

我们真正感兴趣的是错误的预测,特别是算法认为应该转换但没有转换的 0.4%。这些误报实际上是没有转化的访问者(没有转化为潜在客户的访问者),他们的“行为”更像 SQL(转化为潜在客户的访问者)。这些都是值得仔细研究的访问者,如果我们仅仅相信二进制 0/1 预测,这 0.4%就变成了一百多个值得追逐的潜在客户。

更有趣的是,我们不必仅仅相信二进制 0/1 预测。我们可以查看所有未转化的访问者(0.4%以及 99.6%),并查看分类模型提供的 p(1)概率。也就是说,访问者应该按照算法的预测进行转换的概率在 0 和 1 之间。

这给了我们更好的控制我们追逐的非转换访问者。如果我们的研究和推广团队完全瘫痪,我们可能只会追逐 0.8 或更大概率的潜在客户(0.4%的一小部分)。另一方面,如果他们有大量的容量,我们可能会以 0.4 或更高的概率追逐潜在客户(从而稍微进入 99.6%象限)。

关键是,这种方法不只是给我们一个应该/不应该转换的二元概念,它根据预测转换的概率为我们排列整个列表的优先级。

结论

我很想说,这一过程使我们的销售线索生成率一夜之间翻了两番。我想说的是,我们整个营销团队去博拉博拉岛度假了一个月,因为他们明年的工作已经完成了。但是,我不能。不是因为我们没有得到积极的结果(我们得到了),而是因为我们才刚刚开始这个过程…现在还为时过早。我们已经开始处理潜在客户识别部分,并且正在为研究和主动拓展工作准备好所有的流程、基础设施和培训。

我能说的是,在我们最初非常小的概念验证中,我们联系了四家公司,我们确定了其中一家,并将其转换为 SQL。这个样本量太小,无法可靠地预测长期的实际转化率。但是,这足以让我们将最初的概念验证扩展为更大的计划。

这种概念的证明,即使它没有导致任何积极的转化,也正是我们作为一家公司试图获得这一点竞争优势所喜欢探索的思维类型。

换个角度看问题。努力更有效地做事。为了更好地识别红色雨伞。

数据科学的浪漫一面:通过一年的短信分析一段关系

原文:https://towardsdatascience.com/the-romantic-side-of-data-science-analyzing-a-relationship-through-a-year-worth-of-text-messages-be7e32d81fa9?source=collection_archive---------10-----------------------

这应该是一个私人项目,我想我会上传到一个私人的 Google Colab 笔记本上,并与任何相关的人分享(这是另一个人,这里称为“OJ”)。但是,一个灯泡——为什么不把它清理干净并与他人分享呢?

基本上,为了庆祝我们约会一周年,我决定从沟通的角度来探索我们的关系,看看我们的短信行为:我们对彼此说了什么,我们什么时候说的,我们如何回应对方,等等。我会把通话记录放在里面,但是我实际上从来没有跟踪过(真惭愧!)所以我不得不放弃,特别是因为我们通常一周最多打两个电话,这让它变得没那么有趣了。

所以,我将向那些对我做了什么和为什么做感兴趣的人讲述我的思考过程,最后,我将分享一些在这个过程中派上用场的链接和工具。我一直在努力提高我的 Python 技能,所以你也可以在那里找到一些有用的 Python 相关的片段。

(请注意:这个故事在桌面上阅读更好,因为信息图是交互式的)

方法学

我们使用的主要沟通渠道是 WhatsApp。我们偶尔会做 SMS-text,但这可以忽略不计,偶尔的 Messenger 链接或 YouTube 消息非常罕见,所以我选择坚持使用 WhatsApp 来简化这个过程。

  • **数据来源:**大约一年前的消息历史从 WhatsApp 导出(显然,导出时你不会得到所有的消息,最多只有大约 4 万条消息)。
  • 数据争论#1: 最初的数据处理是在 Excel 中完成的,只是为了清理有些混乱的导出(显然,当您键入 WA 消息时使用 ENTER 会创建一个没有时间戳的无意义的新数据行)。
  • 数据争论#2: 第二次争论是在 Spyder 中使用 pandas 在 Python 中完成的(我是一只实验鼠,使用 MATLAB 已经有很长时间了,所以 Spyder 是我的毒药)。
  • **探索性分析:**大部分是用 pandas 和 plotly 完成的,还有一些 WordCloud 和 nltk 的 VADER(后面会有更多)。Plotly 是目前为止我最喜欢的 python 可视化库,因为一旦你意识到它是可能的,它的交互性是必须的。这是我第一次在一篇中型文章中加入情节,所以希望它能在不同的平台上大放异彩。

故事

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

Photo cred: Annie Spratt [Unsplash]

我们在 2018 年 4 月相遇,在 Tinder 上右键点击和有史以来最自发的设置之后——同一天点击和约会!这对我来说是第一次,下着雨在蒙特利尔高原街区的酒吧间漫步后,我们找到了一张还算不错的桌子,在 pisco sour 酒吧互相认识。

一年过去了,我试图想出一种有创意的方式来纪念这一时刻。当我在做其他一些数据密集型和量化自我的项目时,我想——‘哦,也许我可以搞出这个来?’所以,我们在这里,分析了一年的短信。

总体消息历史记录

总的来说,在大约 11 个月的时间内(希望这能及时准备好!),我发送了 17,408 条消息(平均每天 60 条消息)而 OJ 发送了 22,589 条消息(平均 80 条消息)我想我们知道谁在这里喋喋不休!

A year worth of messages: change the slider to zoom in on specific time frames, and try guessing what do peaks mean!

时间线显示了一些峰值(主要是一个超级峰值)和一两个几乎没有发生的死区。高峰期通常与我们其中一个人的旅行相对应(7 月的夏威夷、11 月的多伦多、12 月的纽约和 3 月的多伦多),而低谷通常是当我们两人一起旅行(6 月的以色列、2 月的哥伦比亚)并且不需要太多信息交流时(除了偶尔的“给我带一卷卫生纸”或“我应该买哪种奥利奥?”).所以这里没有大的冲击。

所以,总的来说,OJ 发送了更多的信息,但有趣的是考虑这是否归结为实际上更多的单词,或者仅仅是将可能是长的信息分解成短的。下表显示了一个稍微更详细的分类:事实上,当发送更多的消息时,OJ 的消息往往更短,而我的消息稍微长一点(尽管没有统计学意义)。它确实给了我们发信息行为的一个总体感觉——一个人更喜欢连续的多条短消息,而另一个人更喜欢一条更长的消息。

互动:何时和如何?

我们现在可能会问更多关于交互本身的问题:我们什么时候使用消息交谈?这种互动是怎样的——谁在发起,什么时候发起,对方通常需要多长时间做出回应?

让我们看看!

习惯中反映的文化

请看下图,展示了每天消息统计的细目分类(方框图解释这里,如果你需要的话!),看起来在大多数工作日(周一至周四)这种行为通常是相似的,周三略有下降(也许值得用我们一起度过的日子的数据来交叉一下?我实际上收集了这些数据,可能会在以后的帖子中研究一下!).

Breakdown of distinct messages by weekdays. Each day we can observe 50% of the messages sent within the limits of the box, while the whiskers represent the rest of the data (and any single dot represents an outlier).

周五至周六发生的事情很有趣,一旦你了解了这些人,就很有道理:我们中的一个人(OJ)是一个观察犹太人(意思是,在安息日,即周五天黑后至周六天黑后,通常没有电子设备在使用——在这里阅读更多信息)因此,我们在周五至周六的交流要少得多,这些情况下的异常值比大多数其他日子更接近核心。周日恢复正常,因为没有任何限制了!

离群值通常与旅行期间相关,在此期间,我们(奇怪地)保持着更高的沟通率。

我们是白天的生物

正如我们在下图中看到的,我们大部分的对话发生在预期的白天时间——在加拿大,高峰在工作日快结束时的下午 3-4 点左右(下午 5 点左右)。当观察我们之间的差距时,下午 3 点似乎也是差距最大的一点——也许这与我工作效率的高峰时间有关(这是另一篇文章的讨论内容!)以及当时我对沟通的不重视。

Average messages per hour, and the difference between senders: very little late-night messaging (we both are tea-lovers and old souls, it is known) and peak/plateau around late afternoon

我的家庭作业:展现更多的主动性!

现在让我们来看看主动性:谁需要在这方面有所改进,并在信息方面表现出更多的主动性?嗯,我想这一段的标题可能已经给出了一个。但是,为了检验这一点,我们将查看每天的第一次互动,查看早上 7 点以后发生的任何事情(让我们考虑这样一个事实,我们很少在外面度过漫长的夜晚,因此我们排除了这些),并查看是谁发起了对话!

Distribution of our first messages of the entire period: clearly (and obviously) we usually start conversations in the morning. We do have a bunch of late ‘first messages’ most likely due to OJ’s observing Shabbat, which limits communications on Saturdays during the day.

不难看出:我有一些需要改进的地方——看起来我落后了,需要加快步伐。下一个有趣的问题是——这是如何随时间变化的?我开始时很好,后来逐渐慢下来了吗?还是仅仅因为我不是一个喜欢早起的人?

Counting and allocating first messages of the day, per month. Each day was marked with conversation initiator, and this was accumulated throughout the month, for each month.

嗯,好像是定期的!我们都有起起落落,但至少看起来我大部分都在进步,而且慢慢地平衡了。现在我们可以问一个不同的,也许有点吓人的问题:这些最初的信息实际上是什么样子的?

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

你可能不知道,但在我们的动态中,我是消极的——南希和 OJ 是积极的——帕特里夏,这很容易从每天的第一条信息中捕捉到:我更倾向于使用“啊”和“可怕”这样的术语,而 OJ 的词汇比任何早上反应迟钝的人所能预料的要积极得多。

我现在看起来不太好,而 OJ 在关系维护方面得分很高!我的早晨很消极,主动性也很低,但我想知道,在反应能力方面,我是不是也落后了?

互联时代

在进入这一部分之前要记住的是,我们都是千禧一代(是的,尽管我出生在 80 年代——见我在这里添加的图表),因此,我们可以高度连接,并把我们的手机作为我们身体的另一个器官。我真的很讨厌这样,并积极尝试断开连接,不把手机放在身边,但这也是另一篇文章的素材!

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

Generational breakdown. Are you also wondering whether Jesus, Moses and Mohammad were all part of the silent generation that apparently spans anything before 1945? [Source]

Delay distribution of both senders — vast majority of replies happen within 2 minutes from the moment they were received!

看着我们的回复时间分布,似乎我们实际上非常相似,并且非常响应(叹息)。考虑到这个分布中的每个 bin 都有大约 2 分钟的延迟,我确实有点落后,但这似乎无关紧要。值得研究的是,我们是否在一天中的特定时间反应更快——这可能比我们反应时间的总体分布更有价值!让我们看看下面(请原谅我这里缺少支线剧情,但是 plotly 确信在使用热图时不可能生成!):

More details below!

The Y-axis of these heatmaps indicates the time delay between getting a message and replying. The X-axis shows the time of day in which the message was received. The different colors in the heatmap indicate how many messages were sent throughout the year, in the specific time of day (x-axis)and within a specific delay (y-axis). For example, we can see that for messages OJ received at 10am, 156 were answered to within 0–2 minutes. Kapish?

首先,就像我们之前看到的,大部分交流发生在白天,大约下午三点左右。不出所料,我们都不是回复深夜信息最快的人,而且在回复白天信息的延迟方面,我们似乎没有太大区别:在大多数情况下,我们都相当快!这在几个月后会很有意思,希望我不会像以前那样有联系——这可能是一个有用的衡量标准。

我到底在说什么?

内容就像我们到目前为止探索的统计数据一样有趣。但这也是一个更私人的问题,所以我将保持这一部分最少:)

消极的南希还是积极的帕特丽夏?

如果你一直在仔细阅读,你可能已经注意到,传统上在这种关系中,我被认为是我们当中比较消极的。但是这真的反映在我说的和 OJ 说的上吗?

Sentiment analysis of our messages was created using nltk’s built-in VADER, which enables sentiment analysis on natural sentences (mostly social media content). I have locally edited the existing VADER lexicon to match our vocabulary more accurately and include terms in French we use very often to reflect sentiment better. More details at the end.

看起来这是一个明确的否定!事实上,当比较百分比的时候,我似乎比 OJ 更不消极!这是令人震惊的,但差异很小。另一个可能更好地反映情况的观点不是我在信息传递中的消极,而是——缺乏积极。OJ 显然更积极,有整整 28.9%的消息是以积极的语气说的,而我站在整整 5.7%的低点。但这是意料之中的。

看看这一天发生了什么(请原谅我把这个作为照片插入,这不可能作为一个像样的支线剧情插入!),似乎我们没有展示出任何明显奇怪的东西,也许除了在清晨我那端的负面内容稍微多一点(叹气)。

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

Comparing negative and positive messages at different times of day

有人起绰号吗?

最后,通过观察可视化所有内容(而不仅仅是第一条消息的内容)的词云,第一个结论是:我们真的不能说太多。

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

Both word clouds, for all of the conversations! Most of the stop words have been removed using nltk’s built in stop words, however due to different encoding, some snuck back in (e.g. ‘that’,’it’) and I have not yet removed these. In a future version and when I will have some extra time, I might get around to that 😃

没有任何单词特别突出;我们可以从中挑出一些习惯,比如英国人经常使用“先生”或“先生”,或者我们都过度使用“哈哈”、“哈哈”和“呵呵”。毕竟千禧一代。在这里,在任何一边,我们甚至检测不到任何昵称,这是我们逐步引入和取消昵称的一个强有力的指标。

不,理解内容的一个更有用的实践是在特定的上下文中分析:例如,我们的对话在旅行中是如何变化的?在消极的上下文中,我们在说什么?我们在抱怨什么?诸如此类。

底线

对我来说,这是一次有趣的旅程,回想起来,我本可以从很多其他方面来看:谁更经常使用“爱”这个词?我们能发现在我们开始约会后多久我们开始用“爱”来称呼对方吗?我们平均短信对话多长时间?还有很多很多可以问的问题。

但是看看我们所拥有的,我们能从这种做法中学到什么?

  • OJ 是个健谈的人。
  • GT 需要发起更多的对话。
  • GT 并没有你想象的那么消极!但可能没有 OJ 积极。
  • 在等待时间方面,我们是尊重的,不会让对方在等待回应的过程中晾太久。
  • 安息日是放下电话的好时机。
  • 数据可以成为一个有趣而有创意的周年传统!

祝我们一周年快乐,OJ 😃

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

Photo Credit: Matthew Henry [Burst]

为数据爱好者提供一些技术信息

正如我前面提到的,我用 Python 编写了这个项目的代码。它像熊猫一样重,而且情节几乎完全是由 plotly 完成的。和往常一样,在这个过程中我最好的伙伴是我使用的不同库的 stackoverflow 和文档页面。

既然你们有些人询问,我已经在 GitHub 上发布了代码。随意叉,克隆,玩,问任何关于它的问题。

如果你没有带标签的训练集,VADER 是一个很好的 nltk 工具,可以用来分析 Python 中的文本数据情感。它对大量的词汇使用术语评分(你可以很容易地添加进来——见下文),在查看了我导出的样本数据后——它实际上非常准确!

单词云是用 Python 的 WordCloud 库生成的,而且……相当不错。我没有经常使用这些工具,但我正在寻找一个更好的解决方案和定制工具,所以如果你有什么建议,请随时留言!

这里有一些我觉得有用的链接,你可能也会喜欢!

  • plotly——Python(和其他语言)的交互式绘图库,有详细的文档页面。
  • VADER — 这一页很好地介绍了幕后工作以及如何实际使用该工具。如果您想编辑词典并使用update方法添加您自己的术语:
**from** vaderSentiment.vaderSentiment **import** SentimentIntensityAnalyzer
analyser = SentimentIntensityAnalyzer()
new_words = {
    'greaaaat': 2.0,
    'shiiit': -2.0
}
analyser.lexicon.update(new_words)
  • 导入from wordcloud import WordCloud 后 WordCloud 就可以轻松使用了。一旦完成,你就可以构建 WC 对象,自定义颜色,删除停用词等等。我通过 DataCamp 教程了解到这一点,你可以在这里找到。

希望这是有见地的,如果你有任何问题,请提出来!

拉塞尔·维斯特布鲁克效应

原文:https://towardsdatascience.com/the-russell-westbrook-effect-7782b54bb860?source=collection_archive---------11-----------------------

连续三个赛季,他在俄克拉荷马城场均三双。虽然常规赛的数字惊人,但这并没有转化为季后赛的成功。与雷霆队的老伙伴詹姆斯·哈登重聚,威斯布鲁克在休斯顿会有什么样的影响?

奥斯卡·罗伯特森是第一个整个赛季场均三双的球员。那是在 1961-1962 赛季。在那之后,直到 2016-17 赛季,拉塞尔·维斯特布鲁克才做到了一名球员在整个赛季平均三双。不可思议的是,他连续两个赛季做到了这一点。

连续三个赛季三双,仍然有点难以理解事情会走向何方。总的来说,萨姆·普雷斯蒂(俄克拉荷马雷霆队的总经理)连续两次在选秀中成功获得了 3 个 MVP,这很令人着迷。凯文·杜兰特,拉塞尔·维斯特布鲁克,詹姆斯·哈登。虽然他们在 2012 年确实打进了 NBA 总决赛(输给了勒布朗·詹姆斯率领的迈阿密热火队),但从那以后,他们或多或少走了下坡路。接下来的那个夏天,哈登被交易到休斯顿,在那里,他在火箭队如日中天,并继续如日中天。在 2016 年西部决赛中以 3 比 1 领先后,凯文·杜兰特离开小镇,前往金州勇士队。然后是拉斯的三个三双赛季,几个赛季与保罗·乔治合作,然后…这一切都在去年夏天结束了。即使对一个相对随便的 NBA 球迷来说,讲述一个已知的故事也不重要,但值得注意的是,这就是拉斯和他的雷霆兄弟们的结局。

鲁斯交出的 2016-17 MVP 赛季成绩斐然。他是雷霆队中唯一一个真正的超级巨星,而凯文·杜兰特在休赛期刚刚离开了球队。作为参考,他的基本数据是:PPG 31.6 分,APG 10.4 分,每场 10.7 分。我知道 47 胜 35 负的战绩证明了空洞的统计数据,但当你想到他在那个赛季的使用率领先联盟的事实时,这仍然是值得注意的。

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

对基本数据的目测告诉我们,场均得分的下降是真实的,尤其是从场均三双的第一年到场均三双的第二年。虽然拉斯每场比赛的助攻和篮板数量都差不多,但不可否认的是得分的下降。当你意识到第二年他每场比赛实际上多打了将近两分钟时,这种情况从第一年到第二年看起来更糟。值得注意的是,在第二年,罗斯在保罗·乔治有了一个真正的超级巨星队友。

我认为我可以通过降低投篮命中率来消除整个保罗·乔治队友效应。拉斯总是被贴上运动后卫的标签,喜欢投不太好的球。然而,数字并不完全指向这一点。

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

在第二年,投篮命中率总体上变得更好,这是他作为队友得到控卫的第一年。三个百分点从来都不好,但问题是你真的不能因此责怪他。看看这三年的投篮次数:

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

拍摄尝试每一季都会减少——制作也是如此。然而,更能说明问题的是,从第一年到第三年,他平均每场比赛少出手 4 次,但在这段时间里,他只少出手 1.6 次。你不能把所有的责任都推到罗斯身上。三分球也讲述了同样的故事:

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

拉斯从第一年的场均 7.2 个三分球到 4.1 个,然后是 5.6 个。类似于每场比赛的投篮命中率,他在第一年投了 2.5 个三分球,第三年是 1.6 个,只少了 0.9 个。拉塞尔·维斯特布鲁克并不是一个有史以来最伟大的三分射手。不过这些数据告诉我们的是,他已经听到了,并积极努力减少他不擅长的投篮。

让我们回到 MVP 赛季。联盟中没有一个球员在那个赛季拥有联盟最高的使用率的同时拥有更高的 PER。可供参考的是:PER-30.6,Usage %-41.7,VORP-12.4,这些都是职业生涯的新高。

在我看来,关于拉塞尔·维斯特布鲁克效应的事情是,尽管保罗·乔治增加了一个真正的超级巨星,拉斯场均三双的能力并没有减弱。看一下从第 1 年到第 3 年的高级指标:

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

PER、使用率%和 VORP 都在逐年下降。很明显,这更多的是因为罗斯从 PG 那里得到了一些帮助。VORP 队的崩溃告诉我们同样的故事。

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

每年 Russ 的个人 VORP 都会下降,在他们合作的最后一年几乎与 PG 持平。

所以我的主要收获是“假新闻媒体”让罗斯成为了一个比他实际情况差得多的投篮手。在场均三双的第一年,大量出手绝对是有意义的,因为真的没有其他人可以帮助他得分。此外,很明显,在某种程度上,拉斯推迟了,他的 VORP 和使用率在过去两个赛季下降就是证明。视力测试可以证实这一点,因为保罗·乔治在赛季的第二个三分之一阶段疯狂地打 MVP。

最重要的数字?

(按照三倍平均年份的顺序)

第一年:47 胜

第二年:48 胜

第三年:49 胜

这就是为什么保罗·乔治现在在快船,而拉塞尔·维斯特布鲁克现在在火箭。

休斯顿我们有一个…?

首先——不,休斯顿没有问题。他们的战绩是 12 胜 6 负,虽然一开始对他们的缓慢开局有些过度反应,但我认为他们的合作最终会很好。詹姆斯·哈登场均 37.7 分,一如既往。从统计的角度来看,拉斯在成为球队的第一选择方面后退了一步。他似乎确实在遵从詹姆斯·哈登的意见。这个赛季他场均没有三双。但是,火箭队还是赢了。拉斯仍然是平均 22.5 PPG,但他的 VORP 是有史以来最低的 0.3

如果你问我,休斯顿的“拉塞尔·维斯特布鲁克效应”将完全取决于他在间距和投篮上的投入。很明显,詹姆斯·哈登是这个队的头号选择。只要拉斯记住这一点,我希望休斯顿能在西部季后赛中胜出。

*这是我将在本赛季晚些时候再次讨论的话题。没有足够的数据来说明休斯顿到底发生了什么

来源:

图片来源:https://clutch points . com/火箭-谣言-休斯顿-计划-错开-詹姆斯-哈登-和-拉塞尔-威斯布鲁克/

所有数据:basketball-reference.com

时间管理的科学

原文:https://towardsdatascience.com/the-science-of-time-management-7297600e8a0e?source=collection_archive---------17-----------------------

如何借助计算机科学优化你的时间

每个人都知道拖延的感觉。尽管名声不好,拖延实际上是一种优化的算法。当你总是先做最快的任务时,你实际上遵循了所谓的 最短处理时间 算法。这种方法是最佳的,因为它尽可能快地完成大多数任务。然而问题是拖延忽略了个体任务的重要性或优先级。

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

Photo credit: Aron Visuals, Unsplash

不幸的是,我们今天使用的一些技术特别鼓励拖延。以 app 徽章为例*。悬浮在你手机或笔记本电脑屏幕上的小数字仅仅显示剩余任务(或信息)的数量*,而不是它们的重要性

因此,治疗拖延症的一个有希望的方法是先把注意力集中在重要的任务上,然后再处理不太重要的任务。只要高优先级任务不依赖于低优先级任务,这是可行的。如果这种依赖性确实存在,并且没有得到适当的解释,那么事情可能会变得糟糕:一个臭名昭著的例子是火星探路者,它没有从火星表面收集数据和样本,而是通过执行一系列系统重置来拖延,因为低优先级任务阻塞了高优先级任务所需的重要系统资源。

环境切换:多任务的代价

时间管理的另一个复杂因素是随机性:一旦你开始一项重要任务,其他任务可能会随机出现,你必须评估这些任务是否重要和紧急,足以中断你当前的工作。

此外,重要的是要记住,切换任务总是有成本的,这在计算机科学中是众所周知的 上下文切换

当处理器切换任务时,它需要将任务的当前状态复制到内存中,从内存中检索另一个任务的最新状态,找到它先前离开该进程的位置,并从那里继续。在这段时间里,处理器并没有真正做任何工作——它在做元工作。

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

Photo credit: Alexandre Debiève, Unsplash

正如 Brian Christian 和 Tom Griffiths 在*Algorithms to living By,*中指出的,我们人类显然也经历了环境转换成本。开始研究一个问题,一篇文章的一部分,一本书的一章,或者一段代码,都需要将任务的最新状态“载入”你的记忆中(“我在哪里?”)。一旦你不得不因为其他事情而中断工作,你就失去了一些注意力,从而经历了上下文切换成本。

颠簸:多任务处理出错

在极端情况下,同时处理太多不同任务的处理器可能会以 颠簸 的状态结束。这意味着处理器不断地切换任务,没有完成任何真正的工作。当你的操作系统突然死机时,系统颠簸是一个可能的原因。

对于处理器,有两种设计选择可以避免系统颠簸的风险:一种设计选择是限制处理器在任何给定任务上允许花费的最小时间。例如,在 Linux 操作系统中,默认的最小时间片是 100 毫秒(你可以在 Linux 源代码中查找)。另一个设计选择是,当处理器已经以最大能力运行时,它可以简单地拒绝接受新任务。

这件事给我们的生活带来的启示是:不要忽视语境转换成本。尽可能长时间地做重要任务的“时间片”。

在最坏的情况下,如果你不停地切换,你将无法完成任何真正的工作,就像一台电脑一样。

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

Photo credit: Juan Pablo Rodriguez, Unsplash

进入中断合并

最终,实时处理任务是在响应性吞吐量之间的权衡:如果您总是立即响应,您的吞吐量将受到影响。另一方面,如果你专注于一项任务,而忽略了所有的干扰,你的反应能力将会受到影响。正如克里斯蒂安和格里菲斯所说,

“这个故事告诉我们,在不把你的反应能力降低到可接受的最低限度的情况下,你应该尽可能长时间地专注于一项任务。决定你需要有多积极——然后,如果你想把事情做好,就不要再积极了。”(布莱恩·克里斯蒂安和汤姆·格里菲斯,在《赖以生存的算法》一书中)

在响应性和吞吐量之间权衡的一个强大工具是计算机科学中所谓的 中断合并 。这个想法是这样的:当你在做一项任务时,你忽略所有的干扰,并积累(合并)它们。然后,过了一段预定的时间,你立刻处理掉所有的干扰。

以下是一些成功的中断合并示例:

  • 不要在收到邮件时一个一个地支付每月的账单,而是在固定的一天一起支付。
  • 不要一收到邮件就马上阅读,而是每隔几个小时(甚至一天)检查一次,然后处理所有出现的邮件。将时间段调整到您希望的响应程度。
  • 不要让你的手机在收到任何信息或社交媒体事件时立即提醒你,而是静音或关闭通知,每隔几个小时左右检查一次手机。

极化你的时间

谷歌的网站可靠性工程师在他们的书网站可靠性工程:谷歌如何运行生产系统中用了整整一章来讨论如何处理工作中的中断。他们鼓励你分配时间,这意味着当你每天开始工作时,你应该知道你是在做项目工作还是被打断。让一些(轮换的)团队成员处理中断使其他人能够专注于项目工作。这也是中断合并,但不是在个人层面,而是在整个团队的层面。

与 Christian 和 Griffiths 相似,作者警告了上下文切换的成本,并建议:

为上下文切换分配一个开销。在进行一个项目时,20 分钟的中断需要两次上下文切换;实际上,这种中断会导致损失几个小时真正有成效的工作。”(戴夫·奥康纳,《网站可靠性工程:谷歌如何运行生产系统》)

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

Photo credit: Austin Neill, Unsplash

结论:尽量减少干扰,找到心流

从计算机科学中得到的一个重要教训是,要小心意识到上下文切换的代价:尽可能长时间地专注于一项任务。你可以使用的一个强有力的工具是中断合并:不要马上对所有的中断做出反应。

心理学家米哈里·契克森米哈在他的书《心流:最佳体验的心理学》中认为,一旦你沉浸在一项任务中,并且这项任务的挑战与你的技能水平相匹配,那么你就会进入一种他称之为 心流 体验(也被称为“进入状态”)。当处于“心流”状态时,你会失去时间感、自我感和周围环境,你会觉得自己完全融入了工作的持续过程。

心流是我们每天都要争取的东西。流是没有上下文切换的。

为什么的科学:简介

原文:https://towardsdatascience.com/the-science-of-why-a-brief-introduction-b2ae413055ab?source=collection_archive---------44-----------------------

理解因果关系是如何工作的,以及如何处理它

“相关性并不意味着因果关系”。你可能以前听过这句话,现在这两者之间的区别应该很明显了,对吗?不完全是。尽管我们知道它们不是一回事,但因果关系并不那么容易定义。

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

If you didn’t get the joke, you should probably read this article.

此外,它也很难衡量和识别。在本文中,我们将尝试为因果关系提供一个定义,也许最重要的是,我们如何识别和测量它。

相关性和因果性的区别是什么?

当两件事通常一起发生时,我们说它们是相关的。例如,圣诞节时,北半球通常天气寒冷(南半球天气温暖)。这些事情是相互关联的,但是这是否意味着寒冷的天气导致了圣诞节(或者圣诞节导致了寒冷的天气)?嗯,这没什么意义,对吧?这是因为因果关系意味着,如果没有另一件事,一件事就不太可能发生(或者根本不会发生)。例如,下雨时,人们用雨伞。雨和雨伞是相互关联的,但也有因果关系:雨人们拿到雨伞。如果没有下雨,人们可能不会用雨伞。

因果关系被定义为“原因和结果之间的关系”,而原因被定义为一个“引起一个动作、现象或条件的人或事”。然而,多年来,哲学家们一直在努力与这些定义达成一致,一旦统计学家开始研究相关性,他们就必须非常清楚地表明,这是一种不同的现象,他们无法解释因果关系。

我们如何确定因果关系?

从统计学上看,找到相关性或多或少是容易的:所有需要的信息都应该在数据中。然而,因果关系更棘手:它需要领域知识。我们知道寒冷的天气不会导致圣诞节的唯一原因是因为我们知道季节是如何工作的,我们知道圣诞节每年都在同一天发生,因此我们知道为什么它们是相关的,我们知道这不是因为一个导致另一个。

因此,确定因果关系超越了统计学:它需要理解支配我们正在研究的主题的潜在模型和结构。

确定因果关系的黄金标准是随机对照试验:例如,在医学中,当我们想测试一种药物是否真的如预期的那样起作用时,我们将我们的样本分成两个随机组,然后只给其中一组人服用药物。然后我们比较这个组和另一个组(对照组)的变化。无论这些变化是什么,我们都可以有把握地假设它们是由药物引起的(考虑到整个试验是精心设计的)。然而,这种方法并不总是可行的,特别是在像经济学这样的社会科学中,我们处理的是整个国家和经济。为了识别这些情况下的因果关系,我们可以利用因果图

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

The simplest causal diagram there can be

左边的图像是因果图的最简单版本:它代表了 A 导致 b 的情况。使用这种复杂关系的图形表示是科学界的一项重大突破,因为它可以轻松理解复杂的相互作用。一旦理解了这种表示,我们可以看一个更现实的例子:

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

假设我们想知道多走路是否能延长寿命。然后,我们选取一组人,测量他们每天走多少路,然后分析他们的死亡率。这项研究实际上是在 1998 年进行的,并发表在《新英格兰医学杂志》上。他们得出的结论是,走路多的人死亡率较低。然而,这是一个我们无法推断因果关系的典型案例,我们可以通过查看上面的图表来理解为什么:将步行与死亡率联系起来的箭头代表了步行可以让你活得更长的假设,但当我们给这幅图添加一个新元素“年龄”时,我们可以看到年龄也有可能是我们所说的混杂因素:一个增加死亡率的变量,原因很明显,但也使人们走得更少。为了解释这种影响,最好的方法是按年龄控制我们的分析:只比较相同年龄范围内的人的数据。

一旦我们开始添加更多的变量,因果图会很快变得非常复杂,但这里的关键是要确保我们考虑了变量之间所有可能的相互作用,记住不要在两个变量之间放置箭头实际上是一个很强的假设,即这两个变量是独立的,所以要小心。一旦你有了一个合理的因果图,并且你已经控制了混杂因素,你将能够推断出因果关系,取决于你做出这个图的假设。

如何衡量因果关系?

只有当你有了一个有意义的因果图,并且你已经检查了它的假设,才能测量因果关系。在衡量两个变量之间的因果关系时,你会意识到你还需要知道那个关系的形状是什么。例如,如果关系(年龄->步行)是线性的,那么一个人每变老一年,她就少走一个固定的量。你在测量的同时发现了这个形状,然后你可以进行一些测试来确保你的结果是正确的。一种方法是运行回归。这里是我的一篇文章的链接,解释了线性回归的基础。

结论

正如我们已经看到的,仅仅知道相关性并不意味着因果关系是不够的:我们需要能够识别和测量它。由于科学方法的最新进展,现在我们能够正确地做到这一点,这为许多不同的领域打开了大门。

如果你想了解更多,一个很好的起点是 Judea Pearl 的《为什么》,这本书介绍了这个主题,没有涉及技术细节,但仍然以一种扎实的方式。你的因果王国之旅不必在此结束!

从数据分析师成长为数据科学家的秘方

原文:https://towardsdatascience.com/the-secret-sauce-for-growing-from-a-data-analyst-to-a-data-scientist-819595c3c43c?source=collection_archive---------5-----------------------

从数据分析横向迁移到数据科学的顶级技巧

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

Road to Data Science (Photo by Aleksandr Barsukov on Unsplash)

毫无疑问,数据科学的热浪袭击了大多数行业,使数据科学家成为 21 世纪最性感的工作,正如《哈佛商业评论》所提到的。尽管对有经验的数据科学家的需求和胃口越来越大,但这份工作在大多数时候都被描述得含糊不清。此外,数据科学和数据分析或工程之间的界限仍然被许多招聘经理松散地定义。这种缺乏真正行业标准的情况让许多希望转行从事数据科学工作的专业人士感到困惑。与许多分析师和软件开发人员交谈后,我意识到关于人工智能和机器学习(ML)的可用信息是多么令人难以置信。我也从经验中知道,在没有任何指导的情况下,知道从哪里开始是多么困难。目前,我是 Zoopla 的一名数据科学家,我想分享一些我从个人从分析到数据科学的职业旅程中学到的经验。

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

Cute GIF from https://imgur.com/gallery/oJSx1YR

在坚实的数学基础上站稳脚跟

大多数 ML 算法建立在多变量微积分和线性与非线性代数之上。高技能的数据科学家能够在数学层面上改变计算机程序,从而推动模型性能的真正改善。掌握数学技能很重要,尤其是统计学和线性代数。拥有学习和理解机器学习技术的能力是成为一名数据科学家的必要条件。不管你是从心理学还是数学学位、博士学位还是在线课程中学到的,都无关紧要。

我个人拥有剑桥大学的工程学士和硕士学位。通常,STEM 学士学位已经提供了学习机器学习和数据科学技术所需的数学基础。许多有抱负的数据科学家被博士学位是从事数据科学职业的先决条件的神话所打击。目前,有许多数据科学家拥有博士学位,但这不是一个规则。例如,我的前同事 Jorge Brasil拥有应用数学硕士学位,在包括微软在内的顶级公司拥有超过 7 年的数据科学经验。

技巧 1:关注你的能力而不是你的背景。

作为一名数据科学家,你经常将困难的、开放式的、定义不清的问题分解成小步骤。这是一项你在研究生阶段接受的为期 3-6 年的技能培训。行业也可以提供这种技能,这就是为什么我个人选择在本科毕业后加入一家电子商务初创公司,成为数字分析和定价团队的第二名成员。

在教你的机器之前先教你自己

数据分析师报告、总结和解释历史和当前信息,使其对业务有用。这与数据科学家截然不同,后者的职责是以一种允许对未来做出预测或规范性决定的方式总结数据。数据科学家的核心任务是训练、测试和优化 ML 算法,因此,他们的技能主要集中在 ML 建模上。

medium 和其他平台上的许多博客帖子非常适合新手,可以指导你解决你可能想要解决的具体问题。其他有用的阅读材料如下:

理论和沉重的方程式有时会让人不知所措,不应该把某人拒之门外。对我有效的一种方法是在编码的同时阅读。例如,尝试从头构建一个单层感知器(最简单的一种神经网络),以完全理解你在书中读到的内容。

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

Learning combo: books, courses and code.

技巧 2:运用你所学的科学方法。

也有许多在线课程和硕士,在理论和实践上有不同的权重,涵盖了机器学习 ML 的基础。我最喜欢的选择是:

这里的目标既不是记忆公式和推导,也不是阅读这些书和讲座的每一页。你的目标应该是捕捉大多数模型和算法以不同方式处理的基本概念,例如神经网络中的漏层、消失梯度、信号/噪声关系。获得将问题与这些基本原理联系起来的能力将使你成为一名优秀的应用数据科学家,这是许多雇主都希望拥有的。

做科学研究

提示 3:为你的业务环境和问题选择正确的方法。

数据科学家的真正技能是知道需要什么技术和机器学习方法来回答手头的业务问题。该领域在过去十年中蓬勃发展,作为一名数据科学专业人员,需要不断渴求知识才能脱颖而出。我强烈建议阅读不同技术公司和该领域关键人物的学术论文和 ML/AI 博客。当你被要求为抽象的问题陈述提供解决方案,而这些问题陈述并没有提供直接的解决方案时,这可能会很有帮助。通过研究外面有什么找到正确的解决方案,80%的工作已经完成。安德烈·卡帕西在斯坦福课堂上说得很好 cs231n《不要做英雄》。在我的团队中,我们不会低估其他人在寻找目前最有效的架构方面所付出的努力和时间。我们没有为一个常见问题开发自己的架构,而是导入库,下载预先训练好的模型,并根据我们的数据对它们进行微调。商业世界期望你快速交付(和失败),因此,如果可能的话,你不应该重新发明轮子,而是站在巨人的肩膀上。

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

“If I have seen further it is by standing on the shoulders of Giants”, Isaac Newton (1675) (image from https://me.me/i/3487477)

提高你的编程技能

数据分析师使用数据来帮助企业做出明智的决策。他们精通 SQL、Excel 和可视化工具,如 Tableau 或 Power BI。另一方面,数据科学家需要建立强大的模型来推断和解决大规模的业务问题。因此,他们需要发展自己的编程技能。我不是从 10 岁开始就穿着连帽衫编码的,但对我来说,开始学习如何编码永远不会太晚。在大学里,我在 Matlab 中学习机器学习,并为不同的工作项目编写 JavaScript 代码,但实践 pythonic 式的方法很重要。

Python 正在成为世界上最流行的编码语言,并且拥有无数经过良好测试的数据科学库,这些库还在不断更新。不出所料,大多数数据科学团队,包括我的团队,都在寻找 Python 用户。所以如果你不知道 Python,注册一个在线课程,学习基础知识让你入门。你不应该忽视风格指南,如 PEP8 和显示耐心,因为实践会带来预期的结果。此外,学习如何使用 Jupyter 对于更快的工作流程和数据/模型探索将是关键。

技巧 4:练习练习再练习,获得更强更快的编程技能。

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

Because programming gives you magical powers

参加黑客马拉松、参加 kaggle 竞赛、从事个人编程项目都是提高编程技能的不同方式。识别或参与从您的分析结果中得出的数据科学机会,可以成为您在当前职位上积累经验的一种方式。预测和异常检测的算法可以是你可以要求参与的其他项目,甚至可以作为你作为分析师发展的一部分。我记得我在行业中的第一个数据科学项目是在一个电子商务网站上自动完成搜索查询的算法。这个项目是由我还是初级分析师时报道的一些关于搜索和购物篮的有趣分析见解发起的。

获得软件工程技能

当你想让你的模型看到生产之光的时候,软件工程技能就变得必要了。出于方法和法律的原因,培养一种旨在通过自动化实现项目和结果的可复制性的编码态度是至关重要的。在一个拥有成熟数据科学文化的公司中,有人可能创建原型,有人可能编写产品代码,还有人可能部署它。然而在现实中,不管公司的规模有多大,你都不太可能得到所有需要的支持,仅仅知道统计数据不足以交付数据科学项目。

提示 5:尽早将项目中的步骤自动化。

因此,最初的数据科学清单可能如下所示:

  • 可重现的数据管道(例如 spark 和 python 中的数据管道):您是否曾经不得不重现您以前做过的分析?创建一个逻辑数据流(如原始(不可变数据)- >中间(进行中的工作)- >已处理(最终特征))并使用 Makefiles 将为你和你的同事节省大量时间。我和我的团队是 cookiecutter 的超级粉丝,它提供了一个像这样的逻辑项目结构。
  • 训练和评分的端到端自动化:一个模型在大多数时候是一个活的有机体,需要新的预测,数据可能会发生变化。这转化为再培训、评分和提炼。然后有必要将你的模型参数、秘密和随机种子放入配置文件中,将一个 ds 项目分解成不同的元素,并应用模块化,例如创建一个可以在训练和评分过程中使用的共享特征库。
  • 单元测试覆盖率:我打赌你想拥有无忧无虑的睡眠和不受打扰的假期。然后,为了确保健壮性,为你的项目编写测试是很重要的。
  • 构建一个提供预测的 API:要推销你的想法和模型,你需要有一个概念证明,在很多情况下,这相当于一个 REST API。如果你除了 Python 之外懒得用别的语言,可以用 Swagger UI 自带的 FlaskFlasgger 。Swagger 将有助于记录和可视化 RESTful web 服务。
  • 针对 ECS 部署或生产环境的数据科学解决方案的容器化 : Docker 允许您隔离项目及其依赖关系,在环境之间移动模型,并每次以完全相同的方式运行代码,实现 100%的可重复性。这将有助于您与开发人员和工程师的合作,因为他们可以将您的容器用作黑盒,而无需了解数据科学。

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

Some tick-off items on a data scientist’s programming list

将科学翻译成领域语言

作为一名数据人员和主题专家,您可以通过在数据中寻找代理来克服诸如丢失业务或 KPI 定义之类的障碍,或者使其成为您从 ML 中学习的潜在因素。数据科学通常会给业务带来中断,因此,您需要向高层领导推销您的想法,以便获得适当的支持和资源。有人可能会说,让业务中的所有利益相关者都能理解算法是一种艺术。学习如何翻译我所构建的东西,以便向他人展示它的重要性,是我必须不断学习和再学习的事情。正如毕马威数据科学和工程现任主管丽贝卡·波普在硅谷女性会议上强调的那样,“永远记住你(而不是你的代码)是有影响力的。人们不买算法,他们信任你和你的能力。”。因此,确保你花时间和精力将数学转化为你所在垂直行业特有的视觉叙事。

提示 6:用垂直行业的术语交流你的工作。

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

A data scientist explaining deep learning . (image from https://memegenerator.net/img/instances/63241330.jpg)

成长的时间到了

身处一个新成型的职业,刺激大于辛苦。Zoopla 让我有机会在一个才华横溢的数据科学团队中工作,与我可以学习的人一起工作有助于我更快地实现我的职业目标。找到一个让你成长的团队,拥有像海绵一样的头脑,会加速你的成功之旅。我很幸运,我的直线经理 Jan Teichmann 有经验来指导我成为一名高技能的数据科学家。理想情况下,你的经理了解你的日常工作以及你想要达到的目标。否则,从你的团队或公司之外寻找你可能需要的额外指导,例如从你大学的校友或教授那里,或者从你网络中友好的数据科学家那里。会面和会议也能鼓舞人心,帮助你完成这项任务。

提示 7:记住没有任何教科书或课程比辅导更重要。

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

Customised meme (Read it with Don Corleone’s voice)

总而言之,在数据科学领域开始职业生涯时,你应该重点掌握的技能是统计学*,多变量微积分和线性代数,机器学习,编程技能,软件工程和可视化技能*。

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

Data Science Venn Diagram by Steven Geringer Raleigh, NC.

实现目标的最佳技巧:

  1. 关注你的能力,而不是你的背景
  2. 运用你所学的科学方法。
  3. 针对您的业务环境和问题选择正确的方法。
  4. 练习,练习,练习更强更快的编程技能。
  5. 尽早将项目中的步骤自动化。
  6. 用你所在垂直行业的术语来表达你的工作。
  7. 请记住,没有任何教科书或课程比辅导更重要。

你还在等什么?珍惜机会,努力成为你梦想中的人。;)

欢迎分享数据科学爱好,并在 LinkedIn 上与我联系。特别感谢 Jan Teichmann 的反馈和支持!

了解不可知事物的秘密:预测分析

原文:https://towardsdatascience.com/the-secret-to-knowing-the-unknowable-predictive-analytics-de519a67576?source=collection_archive---------27-----------------------

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

有两个分析分支(即我的教育工作者朋友的统计学)被广泛用于描述我们可以总结大量数据的方法。第一种方式简单描述数据。我们称之为描述性分析。描述性分析有一个奇妙的用途。它帮助我们将数据总结成可读的块,这样我们就可以了解在一大堆杂乱的数据中发生了什么。有了描述性统计,我们可以开始做决定,因为我们可以分析我们所知道的。

但是,当我们想知道一些我们还没有看到的东西(或者因为收集数据不可能或者成本太高而不能直接询问)时,会发生什么呢?)像……这样的问题

  • 明年我的产品销量会比今年高吗?
  • 我的客户明天会购买什么样的产品?
  • 应对品牌危机的最佳方式是什么?
  • 明年我应该在广告上花多少钱?

第二种形式的分析更有趣,在我看来也更有用。这叫做预测分析。以下是我对预测分析的看法:

预测分析是利用我们现有的数据建立一个模型,让我们预测尚不存在的数据。——考特尼·佩里戈

根据定义,我们从已知的东西(我们收集的数据)中推断未知的东西(我们的预测)。)使用预测分析的原因是获取某些信息的成本太高。要么是这个问题无法问,要么是我们需要太长时间才能获得这些信息。

通过预测分析,我可以做出更好的决策,因为我有一个模型可以帮助我了解一些我以前不知道的事情。

明确地说,预测分析不能降低所有风险。不可能知道会发生什么。预测分析的目标是了解可能发生的事情以及分析中的所有警告。

让我们来谈谈两种类型的预测分析。

1.)外推—时间序列预测

这个版本的预测分析相对简单。大多数决策者都熟悉它以及如何使用它。在时间序列预测中,我想知道根据过去的趋势,未来可能会发生什么。

这条趋势线是典型的时间序列模型,总结了数据的过去轨迹。神奇的事情发生了,当你把模型总结出来,用它来推断不存在数据的未来时间。

在外推的情况下,我们没有数据的原因是它还不存在!据我所知,我们无法衡量未来的事件(至少现在还不能)。)知道未来是科幻和幻想的领域——看你布兰·史塔克(权力的游戏。)

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

2.)非时间预测分析

如果你是我博客的关注者,那么你已经知道一个非时间预测分析的例子——我使用了一个新闻偏好模型来预测我当天想要阅读的数据科学文章。

在这里阅读更多: MachinaNova —新闻记录引擎

在 MachinaNova 的例子中,我是在个性化我的日常新闻体验。在这个应用程序中,我收集了关于我对数据科学文章的偏好的数据。基于这种过去的偏好,我建立了一个自然语言模型,根据新文章的内容(单词、主题等)预测会吸引我的新文章。)听起来很酷吧?你可以在上面链接的我的博客中读到更多关于这是如何实现的。

非时间预测分析的想法是模型是不相关的。我们可以用许多不同的方法来建立一个模型。主要的想法是确保你有办法理解它的准确性。在 MachinaNova 的案例中,我们通过分割我们的训练数据集并使用其中的一些数据来预测模型尚未看到的数据,从而了解了模型的准确性。因为我们了解了实际的文章偏好,所以我们可以比较模型的输出和实际结果,以了解模型有多好。

这非常重要。任何人都可以根据他们认为自己对世界的了解对任何事情进行建模。成功的预测模型是那些在模型未被训练的情况下仍能保持准确的模型。一个脱离了训练数据集的模型是完全无用的,或者更糟糕的是,它会给出不准确的预测。

在非时间预测分析的情况下,我们不知道一些事情的原因是数据真的很难或不可能问。你能想象如果亚马逊在你每次访问他们的网站时都要问你喜欢什么产品吗?非时序预测分析助您一臂之力!

结论性想法:

在这篇文章中,我们探索了预测分析——使用我们必须的数据来了解未来可能发生的事情。我们也知道它与描述性分析有什么不同,描述性分析是使用数据来总结过去发生的事情。

拥有预测模型的主要优势在于,我们可以将模型外推至不存在数据的区域,并做出预测。这非常有用,因为了解过去、现在和未来的一切是不可能的。至少在现实世界中是这样。

成功的人工智能创业公司的秘密。AI 到底是谁在赚钱?第二部分

原文:https://towardsdatascience.com/the-secrets-of-successful-ai-startups-whos-making-money-in-ai-part-ii-207fea92a8d5?source=collection_archive---------1-----------------------

从硅谷到伦敦,再到上海,人工智能初创公司层出不穷。但是随着淘金热的到来,少数被选中的人会找到金子,而其他许多人会失望而归。要取得成功,人工智能初创公司需要跨越从技术到企业的商业鸿沟。在拥抱负责任的人工智能实践的同时,学会不要走得太快,不要弄坏东西。

欢迎来到全球人工智能创业淘金热

A I 处于全力淘金模式。每天我们都会听到人工智能公司筹集大量资本的头条新闻,以便为他们提供勘探人工智能金矿的资源。资金正流向这些新领域。在美国,人工智能的风险投资资金同比增长 72%, 2018 年达到 93 亿美元。

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

Which AI startups will strike gold?

总部位于纽约的人工智能和机器学习公司 Dataminr ,实时了解新闻和信息,例如,在 2018 年筹集了3.92 亿美元。硅谷人工智能驱动的计算机安全和管理公司 CrowdStrikeTeam TaniumCylance,Inc. 去年各自融资超过 1 亿美元。并且 Pony.ai 筹集了 1.02 亿美元来开发其最新的自动驾驶系统。

但是西部蛮荒的边疆也在东部开放了。即中国。专注于创新的计算机视觉和深度学习的 SenseTime 在 2018 年筹集了两笔 6 亿美元的资金。它现在声称是世界上最有价值的人工智能初创公司。自称为人工智能和人形机器人公司的 UBTECH 在 2018 年筹集了 8.2 亿美元。面部识别领域的领军企业 Face ++ T5 已经融资逾 6 亿美元,目前正寻求融资 5 亿美元。iFlytek ,一家声称拥有中国语音识别市场 70%份额的公司,正在寻求融资 5 . 65 亿美元。这些确实是很大的数字,我们可以期待更多的数字出现。

在欧洲,有一些人工智能的明星,如法国人工智能工具公司 Dataiku,帮助企业将人工智能从实验转移到生产。他们在 2018 年筹集了超过 1 亿美元,但为这一增长提供资金的主要是美国风险投资公司,如纽约的 FirstMark

仅在伦敦,最近的伦敦人工智能市长报告就确定了超过 650 家本地人工智能公司,是柏林和巴黎总和的两倍。这些公司中有许多是年轻的初创公司,特别集中在有需求的保险、金融和法律部门。资金已经涌入这些生机勃勃的年轻公司,但在这个阶段,资金往往是数百万或数千万,而美国和中国的资金是数亿。

小心傻瓜的黄金

但就像任何淘金热一样,有许多勘探者在夸大其词。走进任何公司推介活动或 AI meetup——现代前沿沙龙——你可以发现创业公司的创始人大声疾呼,他们的风险是如何由最新的深度学习进展推动的。但是如果你在白天的寒光下挖掘地下,似乎有很多傻瓜的金子。正如伦敦 MMC Ventures 在最近的一份人工智能报告中指出的,在欧洲的 2830 家所谓的人工智能初创公司中,超过 40%没有真正使用人工智能。

甚至有声称人工智能技术巨头,如微软和谷歌,并不总是过于倾向于依赖人类来驱动他们的“人工智能解决方案”。澳大利亚公司阿彭从事验证搜索结果的全球业务,拥有超过 1,000,000 名灵活员工的全球团队。这是一支名副其实的人工检查搜索结果的大军。我们不会假设这些鼓吹一切自动化的全球人工智能领导者。随着兰斯伽:

“科技公司受益于这样一种看法,即它们已经建立了复杂的自动化和人工智能,而不是一个依赖人工劳动的系统。”

我们认为人工智能初创公司要么(1)如果没有深度神经网络等人工智能现代技术就不会存在——这是它们存在的核心要么(2)提供人工智能基础设施和工具,如人工智能专家硬件、人工智能应用的云服务或加速人工智能解决方案实施的工具。

人工智能价值链——人工智能初创公司在哪里?

人工智能的比赛场地广阔而漫长,由人工智能的创造者(即创造人工智能技术的人)和接受者(即利用人工智能技术并获取价值的人)组成。在这个系列的第一部分中,我介绍了一个七层价值链,为谁将在人工智能中赚钱。

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

The AI value chain — who will make money with AI? The companies noted are representative of larger players in each category but in no way is this list intended to be comprehensive or predictive. © Best Practice AI Ltd

有(1)人工智能芯片硬件制造商正在寻求为所有人工智能应用提供动力,这些应用将被编织到全球大大小小的组织结构中;(2)将托管 AI 应用的 平台基础设施提供商;(3)AI算法认知服务构建 区块制造者,他们提供视觉识别、语音和深度机器学习预测模型,为 AI 应用提供动力;(4) 企业 解决方案软件用于客户、人力资源、资产管理和规划应用的提供商;(5) 行业 垂直 解决方案寻求使用人工智能为医疗保健和金融等行业的公司提供支持的提供商;(6) 寻求增加收入、提高效率和深化洞察力的人工智能的企业用户;最后(7) 民族国家希望将人工智能嵌入其国家战略,成为人工智能国家。

这次淘金热的镐和铲都是科技巨头

虽然人工智能初创公司正在寻求提供新的芯片、云服务和算法,但人工智能价值链的这一领域由谷歌、微软和亚马逊等技术巨头主导。他们成了这次淘金热的镐和铲。无论人工智能公司在挖什么金子,巨头们都希望确保他们用自己的人工智能硬件、云和算法解决方案为该组织提供动力。

设计、制造和分销硬件芯片需要大量资金,因此只有少数初创公司有发展空间。总部位于英国的graph core已经筹集了超过 1.1 亿美元来构建为机器学习而优化的芯片。但随着谷歌、脸书和微软等公司推出自己的人工智能优化芯片,它们正在一个竞争激烈的空间中竞争。例如谷歌云已经引入了它的云张量处理单元来驱动他们的云服务。IBM Research 和英特尔等芯片巨头并没有止步不前,他们希望提供自己的人工智能优化芯片。中国人工智能芯片制造商寒武纪正在为数亿部来自中国华为的手机提供动力。

类似地,科技巨头们也在看他们的云服务中哪一个可以运行将随处可见的数百万人工智能应用程序。会是 AWS 创业公司谷歌云、微软 Azure 甚至中国的阿里巴巴吗?这场战斗非常激烈,因为预计到 2020 年,整个云市场的价值将达到 4000 亿美元。云市场之战将越来越多地围绕人工智能云展开。

然后,科技巨头们正在努力确保他们提供最好的底层人工智能算法和认知服务来支持将被构建的数百万人工智能应用。提供基于云的人工智能产品的公司将更容易获得这些构建模块。计算机程序员今天可以通过应用程序接口(API)编写几行代码来插入真正强大的人工智能服务。谷歌亚马逊微软IBM 都在云中提供机器学习和认知** 服务。这种新类别的人工智能即服务(AIaaS)将为大量的对话代理和聊天机器人、语音、自然语言处理(NLP)和语义、视觉和增强的核心算法程序提供动力。算法领域竞争激烈,但有些初创公司似乎正在寻找空间,通过专注于非常深入的领域和技术特定的解决方案来开拓自己的空间。提供情感识别软件服务的初创公司 Affectiva 已经筹集了超过 5000 万美元。Clarifai 是一家为企业提供高级图像识别系统以检测近似重复和视觉搜索的初创公司,在过去三年里已经筹集了近 4000 万美元。视觉相关算法和服务的市场预计在 2016 年至 2025 年间的累计收入为 80 亿美元。**

跨企业和行业的人工智能

****企业软件一直被 Salesforce 、IBM、Oracle、SAP 等巨头把持。他们为金融和制造等部门提供人力资源软件(HRS)、客户关系管理( CRM )软件和企业资源规划( ERP )应用程序。但许多初创公司正急于提供下一代企业服务,填补现有企业目前未涉足的空白。一些初创公司甚至试图颠覆现有企业,认为现有的企业解决方案对于未来的企业来说过于昂贵、笨重和复杂。今天,有超过 200 家人工智能公司正在招聘,其中许多是人工智能初创公司。网络安全领导者 DarkTraceRPA 领导者 UiPath 拥有数亿美元的战争资金。但现任者希望确保他们的生态系统处于前沿,并投资于初创公司,以增强他们的产品。Salesforce 投资了客户管理解决方案 DigitalGenius,并投资了提供企业翻译服务的 Unbabel。Salesforce 最近以 8 亿美元收购了Datorama,这是一家成立于 2012 年的人工智能营销公司。 SAP 最近收购了 Recast。AI 为对话代理技术加速其自然语言处理能力。

还有工具创业公司已经筹集了大量资金。 Petuum,Inc. 工具提供商总部位于美国匹兹堡,自 2016 年成立以来已融资超过 1 亿美元。它们有助于加速和优化机器学习模型的部署。

然后人工智能创业公司正在为特定行业创建解决方案。BenevolentAI 已经筹集了超过 2 亿美元来帮助其 moonshot 通过先进的数据分析加速药物的研发。纵观医疗保健、金融、农业、汽车、法律、工业,初创公司正在筹集大量资金来解决行业问题。

那么,什么是成功的人工智能创业公司?

那么是什么让这些 AI 创业公司成功呢?是什么让这些公司获得了发展势头并筹集了如此大量的资金?很明显,许多人工智能初创公司正在为企业提供有价值的点解决方案,并取得了成功,因为他们可以获得(1)大型和专有的数据训练集,(2)领域知识**,这使他们对某个行业内的机会有深刻的见解,以及(3)围绕应用人工智能的人才库。**

  1. 获取数据— 大多数人工智能初创公司都在建立某种形式的机器学习模型,可以根据一些输入数据对结果进行分类或预测。在很大程度上,这些模型需要数据作为它们的“燃料”,而且数据越多越好。对于监督学习来说,通过向机器展示不同对象的例子,如狗和猫的图片,来教会机器进行分类或预测,标记数据至关重要。这就是为什么你会看到公司合作收集数据。谷歌的 deep mind——21 世纪的贝尔实验室——与 10 家英国国民健康服务医院签订了一份为期五年的协议,处理 160 万患者的医疗数据。Tractable 是一家分析和预测车祸维修成本的人工智能公司,它已经获得了 1 . 3 亿多张受损汽车的图片。这些图像已经被注释以识别哪个车辆部件被特别损坏。这些被标记的数据是深度神经网络学习的“燃料”。整个研发学院都在努力减少做出准确决策所需的数据量,但在大多数情况下,初创公司获得的数据越多、质量越高越好。尽管更多的数据并不总是带来线性回报。领先的思想家和投资者李开复认为,中国在人工智能领域表现如此出色的一个关键原因是,他们的数据集比其他任何地方都大得多。他指出,中国的手机用户数量是美国的三倍。而移动互联网支付是它的五十倍。
  2. 获得人工智能人才— 获得最优秀的人工智能研究人员和工程师是一项挑战,尤其是在一个英国谷歌 DeepMind 工程师的平均年薪超过 28 万英镑或 36.3 万美元的时代。许多人工智能初创公司都是从大学中分离出来的,创始人一直在人工智能的不同领域进行研究。英国 Poly.ai 最近筹集了 1200 万美元用于在联络中心部署对话式人工智能代理,里面挤满了剑桥大学的人工智能博士。一个人才会吸引其他人才。
  3. 获取领域专业知识— 通常情况下,能够创造突破性创新的洞察力来自于拥有一个多学科团队,这个团队能够发现并识别没有人能够单独发现的机会。例如,与保险流程专家合作的机器学习专家通常可以看到如何利用这种新的使能技术更好地解决问题。

AI 主要是企业使能技术(就像 80 年代的 SQL 数据库)

成功的人工智能创业公司已经真正理解了人工智能技术的本质以及它是如何被购买和消费的。人工智能是一种使能技术——一套工具、技术和方法,可以用来解决无数的用例。20 世纪 80 年代,SQL 数据库的引入允许以表格格式存储和查询结构化数据。这使得数以百万计的应用程序给企业资源规划和客户关系管理带来了数十亿美元的产业。类似地,人工智能将支持大量的用例。例如,视觉算法正被用于几乎每个行业,从发现制造缺陷到识别商店扒手,再到帮助自动驾驶汽车在街上导航。自然语言处理可以在任何地方使用,从审查社交媒体中的客户情绪到审查合同完整性的法律文件,从筛选简历和履历到识别金融交易的潜在机会。语音转文本技术正被用于医学转录算法。

由于人工智能是一个使能器,许多人工智能初创公司将帮助企业和组织解决问题。这意味着人工智能初创公司通常会专注于 B2B 和企业。在最佳人工智能实践,我们确定了超过 600 个人工智能常见商业用例,以及超过 1000 个人工智能如何在企业中使用的案例研究。人工智能几乎有无限多的方式可以组合和设计来解决业务需求。

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

Best Practice AI identified over 600 use cases of AI technologies applied across production, front-office, R&D and back-office functions. The darker the shade the more use cases we identified. © Best Practice AI

我们超过 3000 家全球人工智能初创公司的目录表明,大多数公司都在试图进入企业。

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

Gartner predicts enterprise AI derived value will grow from US$1.2T in 2018 to nearly $4T in 2022.

如此多的活动集中在企业上也就不足为奇了。分析公司 Gartner 最近预测,到 2022 年,企业将从所有人工智能用例中获得惊人的3.9 万亿**,是的,万亿的价值。难怪大多数人工智能初创公司都专注于为企业提供解决方案,无论是跨所有行业的横向解决方案,如人工智能驱动的人力资源,还是为特定行业量身定制的人工智能解决方案。**

跨越 AI 商业鸿沟到企业

那些做得很好的创业公司一般都了解人工智能技术的本质和企业中的机会。但不仅如此,开始形成规模的人工智能初创公司都跨越了从技术世界到企业的商业鸿沟。他们已经学会了:

1。不要动作太快,弄坏东西;拥抱负责任的 AI

这种由硅谷推广的文化在 B2C 世界中运行得很好,在这个世界中,应用程序中一个错误的后果相对有限。全球的软件开发人员已经接受了精益创业和敏捷方法。但这意味着实时应用程序经常会有错误和中断。这在企业中并不太适用。

在金融服务、农业或制药等高度监管的企业中尤其如此。技术正在推动越来越多的监管。欧洲在 2018 年引入了 GDPR 法规,该法规为个人提供了公司使用其个人数据的权利。滥用消费者个人数据将被处以高额罚款,最高可达公司收入的 2%。在金融行业,当你处理真实的金融数据和金融交易时,“哎呀,我想这个应用程序不起作用了”这样的回答是行不通的。一家严重依赖人工智能的新英国挑战者银行发现自己因涉嫌合规失误而陷入监管机构的困境。在一个自动决策的后果可以改变生活的世界里,例如自动车辆碰撞或关键的医疗保健诊断,你最好确保你对你的自动决策的可靠性和准确性有信心。

企业越来越多地实施董事会治理和监督,以管理因使用人工智能而给公司带来的声誉风险。例如,如果用于训练人工智能算法的数据集存在样本偏差,那么如果它们被视为具有歧视性,那么一家公司的品牌就会受损。我们都看到了最近的头条显示算法在识别白人男性的性别方面比其他种族要好得多。或者最近来自亚马逊的案例,他们放弃了他们的招聘推荐系统,因为机器学习只是反映了历史上招聘主要是男性、白人和年轻人的事实。

越来越多的初创公司将需要为企业提供某种程度的保证,以防范其人工智能产品的风险。你的 AI 启动技术是否为具有法律效力的全自动决策提供了可解释性?例如,如果你的技术可以用于自动化招聘决策,那么你就需要解释这些算法在 GDPR 下是如何工作的。你需要证明该算法不会基于受保护的类别(如性别、年龄、社会人口统计数据或健康挑战)对人们产生偏见(请随意看看我们关于可解释人工智能主题的介绍性读物)。英国的信息专员办公室最近发布了一份讨论文件,确定了企业可能需要管理的八个人工智能特定风险领域,包括(a)特别关注偏见和歧视的分析的公平性和透明度,(b)人工智能模型的准确性,©自动决策的水平,无论是全自动还是人工参与,(d)安全和网络风险,以及(e)准确性与隐私和可解释性之间的权衡。

初创公司和企业将需要真正精通这个话题,这个话题越来越多地被称为负责任的人工智能实践**。作为一家初创公司,不要走得太快,打破太多东西。这会给你带来很多麻烦。并确保你接受并展示了负责任的人工智能实践(这个话题我将在后面详述)。**

2。解决真正高价值的用例,而不是最好拥有的用例

在过去的几年里,我们已经看到了消费者移动应用的浪潮,它解决了任何可以想象的消费者需求。通过在谷歌和脸书上投放广告,应用程序可以在几周内构建、发布并获得消费者流量。但是这种方法在企业中行不通。这是一种零和游戏,首席信息官(CIO)和其他执行领导没有兴趣接受另一种技术解决方案。我们都知道,在尝试使用人力资源、财务、销售或营销部门的最新应用程序时会遇到工作挫折。我们努力记住我们的密码。新的应用程序都不一样。然后,我们经常记不起将该文件存储在了什么位置,是项目文件夹还是个人云文件夹。技术领导者在试图将更多技术集成到他们现有的、经常磨损的遗留数据库和技术平台中时遇到了挫折。

为了引起首席信息官和部门负责人的注意,比如首席营销官(CMO),你的解决方案最好是解决一个真正重要的问题。它应该解决的问题类型应该是,经理睡觉时会担心这个问题,而他们的奖金计划显然与此相关。有产者好不在企业工作。我最近与一家人工智能初创公司的 CTO 聊天,他花了两年时间构建一个人工智能产品套件来推动企业智能,但销售却没有出现。为什么?价值还不够高。

一个真正高价值使用的例子来自 HireVue 。他们与联合利华合作,节省了超过 50,000 个小时的候选人面试时间,每年节省超过 100 万英镑,并通过基于视频的面试的机器分析提高了候选人的多样性。那是一大笔钱。英国初创公司 Reinfer 最近完成了一项与一家大型国际银行的试点项目,该公司使用先进的 NLP 算法来筛选数十亿封电子邮件和信息,以确定人们在交流什么。它通过使用机器学习分析邮箱,确定了交易后运营中的主要问题,有可能节省数百万美元的运营成本。这些是真正高价值的用例。

3。掌握 B2B 企业销售并学会计算耐心

创业公司需要确保他们掌握企业销售。这些技能对人工智能供应商来说非常珍贵,因为掌握咨询** 销售需要时间和实践经验。我职业生涯早期参加的最有价值的培训课程是旋转销售方法——S(状态)、P(问题)、I(完成)、N(速度)。销售需要时间来确定利益相关者,与这些利益相关者会面,评估当前业务情况,提问以确定关键问题,评估这些问题在多个部门的影响,就影响和需求达成共识。即使这样,也不能保证你对这种需求的解决方案会得到预算的优先考虑。**

一个典型的公司经理有一个从现在到未来的待办事项清单。对于一家初创公司来说,解决高价值用例需求至关重要,所以不要仅仅将你的公司建立在“产品直觉”的基础上

当销售周期可以持续 12-18 个月时,耐心是非常珍贵的。很多 AI 创业公司资金告罄,或者把宝贵的资源分配给没有资格的销售机会。如果你认为机会最终不会有任何结果,那么确保你能迅速发现它们。 Re:infer 发现销售周期真的真的很长,但他们坚持不懈地确定一个真正高价值的使用案例,找到一个内部冠军,并完成一个成功的销售试点。他们还发现,企业准备在整个组织中推出人工智能确实会减缓销售过程。

4。为现实世界翻译人工智能

初创公司需要能够用商业受众容易理解的语言解释他们独特的算法、技术、产品或解决方案的价值,这一点至关重要。他们需要会说两种语言。随着许多人工智能初创公司由年轻、邪恶、聪明和高度技术化的头脑创建,与“西装革履者”之间往往存在沟通差距。在解释这项尖端技术的细节时,我们看到高管们的目光一直呆滞。如果很少提供这种技术如何通过影响收入、效率和客户服务来推动业务发展的背景,高管会很快失去耐心。初创公司要会说技术和商业语言,这一点至关重要。他们需要在技术语言和商业语言之间进行翻译。

5。降低试验壁垒(试点)

重要的是,初创公司要让试点项目变得非常简单。人工智能解决方案通常需要大量数据和大量时间来训练机器学习模型。人工智能通常需要大量的工程集成到后端技术中才能很好地工作。可能需要几个月的时间来获取、清理和整理数据,然后再用几个月的时间来训练模型。在非常繁忙的企业中,几乎没有兴趣做大量繁重的工作来设置试点。公司希望快速验证概念。DigitalGenius 在这方面做得很好。他们的客户服务技术工作在现有的企业平台之上,如 Salesforce ,他们已经将训练技术回答客户查询所需的时间减到最少。他们还使集成到现有的工作流程中变得非常简单,提供了人在回路上的决策。荷兰航空公司KLM 声称,通过使用 DigitalGenius 实现机器学习聊天机器人,可以回应超过 50%的客户在社交媒体上的查询。

6。技术型创始人需要雇佣业务人员

初创公司需要确保他们有技能跨越从技术人员到企业的商业鸿沟。《哈佛商业评论》最近报道说,最有可能成功的创业公司拥有技术型创始人,他们很快就雇佣了商务人员。“为什么技术技能似乎对创始人更重要,有一种理论认为,普通的技术型创始人比普通的商业培训型创始人拥有更好的商业技能。”但将创始人的 DNA 与商业人士融合在一起,往往需要炼金术。我已经记不清有多少次看到初创公司努力适应这种文化。最常见的是技术创始人会雇佣销售“农民”而不是销售“猎人”农民不知道如何出去寻找创业所需的业务。他们已经习惯了庞大的营销部门给他们带来源源不断的销售线索。

寻找耐心和聪明的资本

例如,与移动应用程序的快速原型开发相比,构建企业人工智能技术和产品通常需要更长的产品** 开发 生命周期 - 周期。产品上市可能需要一年多的时间。确保投资者了解时间表和投资概况至关重要。确保初创公司不会陷入种子期和首轮融资之间的资金缺口是至关重要的。在与一位最近的英国投资者交谈时,他们表示:**

他们鼓励他们资助的公司投入更多资金,以确保他们拥有产品开发和销售的跑道。

以及在筹集资金时成为双语玩家的需要。如今,许多投资者没有接受过科学方面的培训,对评估深度技术有一定程度的不适。除非一家初创公司能够用他们的商业市场机会、用例、价值主张、上市和经济语言说服投资者,否则他们将很难筹集到资金。

我经常看到这种语言问题在资金筹集后发生。许多创业公司都是大学研究人员的副产品。创业研究团队将夜以继日地工作,以获得一个原型。对其他学者来说,这种原型简直令人震惊。但当投资者或商业专业人士看到演示时,空气很快就被吸走了。他们不明白。然后他们尝试演示,它很快就坏了。没有对研究和技术的合理理解,开发里程碑的意义可能不会被理解。总而言之,人工智能初创公司的早期进展很难被衡量和认可。这通常意味着,如果没有对主题的必要了解,进一步的融资可能很难获得。

圣杯。企业号飞轮

AI 一般是规模的游戏。数据越多、质量越高,人工智能算法就越好,从而带来更深刻的见解、更高的生产力、更好的产品和服务以及更好的客户服务。这可以带来更多的企业客户,从而收集更多的数据,进而获得更深入的见解,等等。这会带来更多的客户和更多的融资。飞轮效应和防御能力创造的可能性确实存在。成功的人工智能初创公司已经认识到这一点,并能够推动加速器,在竞争中越来越领先。****

人工智能确实是大型人工智能初创公司将变得更大的一个例子。规模很重要。

那么这一切意味着什么呢?

这场人工智能淘金热的大多数赢家可能会青睐那些有规模的企业。科技巨头,如谷歌、微软或阿里巴巴都在飞速前进。他们可以雇佣最优秀的研究和工程人才,可以访问从他们的数十亿月度用户中构建的最大数据集,创造出最好的产品,并拥有令人难以置信的雄厚财力。拥有最多数据和机会利用人工智能的国家表明,领导力将来自中国和美国。

创业公司要想在这个竞争激烈的市场中蓬勃发展,就需要得到拥有一整套知识产权专利和已发表论文的领先研究人员的支持,拥有深厚的领域专业知识,并能够获得理想的独特和高质量的数据集。但最重要的是,人工智能初创公司需要跨越商业鸿沟,从技术世界进入企业。成功的创业公司知道他们需要:

  1. 不要动作太快,弄坏东西;拥抱负责任的人工智能
  2. 解决真正高价值的用例
  3. 掌握企业销售,学会计算耐心
  4. 为现实世界翻译人工智能
  5. 降低审判门槛
  6. 快速雇佣商务人士

他们还需要确保能够筹集到聪明而耐心的资本。

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

许多初创公司不会找到黄金,但那些能够扩大规模的公司会发现自己是全球性企业,或者很快被重量级公司收购。

即使一家初创公司没有找到商业化的道路,如果他们与一个强大的研究导向型团队一起致力于实现人工智能算法,那么他们也可能成为收购者**(因其人才而被收购的公司)。去年,当我们的客户bloomsburay 被脸书收购时,我们看到了这一点。**

撰写 作者 西蒙·格林曼

我热爱技术以及如何将技术应用于商业领域。我共同创立了自己的咨询公司最佳实践人工智能,帮助高管通过人工智能创造竞争优势。请联系讨论此事。请发表您的评论,或者您可以直接给我发电子邮件在 LinkedIntwitter 上找到我,或者在 Simon Greenman 上关注我。

成功人工智能战略的秘密

原文:https://towardsdatascience.com/the-secrets-to-a-successful-ai-strategy-d241adda5832?source=collection_archive---------11-----------------------

人工智能项目管理

虽然人们对创建商业战略已经有了很多了解,但创建人工智能战略却是一个新领域。你如何创造你的人工智能战略?

一个人工智能拥有跨越行业和部门的巨大前景。世界上最重要的人工智能传播者吴恩达,在他的人工智能转型剧本中,将创造人工智能战略列为关键要素。随着人工智能开始改变每个行业,你如何创建一个明智的战略来利用它的力量?人工智能战略到底是由什么构成的?为创业公司和公司创建人工智能战略有什么不同?

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

Photo by JESHOOTS.COM on Unsplash

为人工智能战略建模不同于创建传统的商业战略。这篇文章旨在通过创建一个有针对性的人工智能策略的过程来指导从业者。这些见解是基于我的个人经历和对来自大众谷歌人工智能基金等公司的全球人工智能领导者的专家采访。在文章结束时,你将知道人工智能战略如何与商业战略相关,人工智能战略的核心组成部分,以及如何区分好的和坏的人工智能战略。

我们开始计划吧。🤔

商业战略和人工智能战略

人工智能战略的存在是为了支持商业战略。商业战略为你的公司定义了前进的道路。哪些计划将提供最高的商业价值?哪些特征将公司与竞争对手区分开来?业务战略通过可衡量的目标来表达,例如,以关键绩效指标(KPI)或目标和关键结果( OKRs )的形式。这些方法跟踪实现业务目标的过程。

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

AI Strategy supports the business in achieving its KPIs.

德中人工智能协会副主席 Raphael Kohler 表示,很好地理解人工智能战略的目标至关重要。他强调,讨论不能以技术为中心,而必须由商业价值驱动。

就商业战略而言,人工智能战略没有放之四海而皆准的标准。— 张秀坤·海茨

业务部门联合起来实现这些 KPI。人工智能战略的工作是提供一条影响这些业务 KPI 的道路。

人工智能的机遇与挑战

平衡人工智能的能力和局限性是理解人工智能如何支持你的商业战略的关键。

如果没有你的努力,你不能指望让巫师们在你的生意上洒上机器学习的魔法来得到任何有用的东西。卡西·科济尔科夫

一般来说,AI 可以做好三件事:自动化流程,创造新产品,或者改进现有产品。自动化流程的一个例子是机器人流程自动化,它将员工从繁琐、重复的任务中解放出来。人工智能还可以帮助公司产生全新的产品,例如智能家庭扬声器由人工智能驱动。最后,人工智能还可以改进现有的产品。如今的信贷决策大多由人工智能支持。这个模型处理的信息比人类更多,因此降低了消费者的总体信贷成本。

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

Source

然而,人工智能正在努力完成复杂的任务。这些任务可能包括上下文理解或其他任何需要一个人做不止1 秒的事情。人工智能非常擅长执行狭窄定义的任务,在不确定的环境中表现不佳。

在规划你的人工智能工作之前,理解人工智能的范围和边界是最重要的。

利用人工智能创造你的行业特有的优势。— 吴恩达

既然你已经理解了人工智能战略与商业战略的关系,以及存在哪些机遇和挑战,那么你如何着手创造一个呢?

人工智能战略的核心组成部分

正如每个公司都被电所感动一样,每个公司都将被人工智能的力量所感动。虽然没有一个人工智能策略看起来是一样的,但所有的人工智能策略都需要回答类似的问题。任何人工智能战略的核心组成部分都涉及其数据、基础设施、算法的神圣三位一体,周围是技能和组织的支柱。让我们深入了解每个组件。

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

数据

没有数据,就不可能有 AI。数据涉及所有与改善您的业务相关的信息。它可以是任何东西,从自动驾驶汽车的传感器数据到商业决策的金融数据。创建数据策略是任何人工智能策略的重要组成部分。吴恩达建议触及以下几点:

  • 你可以战略性地获取哪些数据?
  • 您收集所有数据还是选定的数据?

人工智能基金的人工智能投资者 Jason Risch 强调了获取战略数据的正确时机的重要性。淹没在数据中不再是一种选择。Jason 见证了“ **select *** ”数据策略在创业公司和企业中都失败了。在建立可行的产品之前专注于创建模型的创业公司浪费了宝贵的资源。类似地,那些因为数据过多而收购初创公司的公司往往没有发现其中的价值。这是医疗保健行业常见的谬误,公司希望算法能在随机数据中找到模式。关键是收集正确的数据。

在过去十年中,数据一直是公司提升的主要来源。数据驱动的决策是成功的关键,因此您需要定义一个强大的数据策略。— 塔利·辛格

创建数据策略后,接下来是考虑基础架构的时候了。

基础设施

人工智能战略的第二个核心组成部分是基础设施。基础设施涉及使数据可访问,并提供处理数据所需的计算能力。AI 模型渴望计算能力,你的 AI 团队需要开发和部署模型的基础设施。理想情况下,这种基础设施会根据您公司的需求进行调整。

统一的数据仓库集中了对整个公司可用数据的访问。在传统公司中,你会发现数据储存在筒仓中,无法被其他团队访问。这通常有结构、组织和法律方面的原因。然而,跨业务团队特定数据建立联系是你的人工智能工作的中心。数据科学家擅长在数据中寻找模式,所以你的目标是让他们获得尽可能多的数据。

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

Source

重要的问题是,你是依赖云服务,还是为人工智能建立自己的基础设施。像 AWS微软谷歌这样的云供应商提供开箱即用的人工智能解决方案。使用云时,您只需为您消费的内容付费。大量的资源也可以帮助您快速设置。您还不断投入时间和资源来维护您的服务器。购买自己的硬件时,前期成本更高。一开始,云解决方案比较便宜,但是从长远来看,投资你自己的基础设施是值得的。利弊取决于你所在的行业,所以在做决定之前弄清楚自己的需求很重要。deepkapha.ai 的首席执行官兼联合创始人 Tarry Singh 并不建议那些将开发算法作为竞争优势的公司只关注云计算。

一旦你知道如何利用人工智能的硬件,接下来考虑人工智能的算法部分。

算法

算法位于人工智能三位一体的顶端,因为它们使用数据和基础设施来生产有价值的产品。你的人工智能策略的算法部分很棘手。回答这些问题会让你更进一步。

  • 专有算法是商业价值的关键驱动力吗?
  • 你是开源你的模型还是倾向于保持它们的私有性?

谷歌首席决策科学家 Cassie Kozyrkov 认为机器学习存在两个世界。凯西喜欢区分机器学习研究和应用机器学习。进行研究需要一种不同于应用现有算法的方法。

人工智能社区在发布可重用的公共数据集和模型方面已经变得好得多。这为你的公司提供了巨大的优势,因为你可以接触到各种各样的人工智能模型动物园。在你的人工智能战略中,你应该回答的主要问题是,算法是否是人工智能功能的主要商业驱动力。如果是的话,你应该建立一个专利项目,激励员工申请专利。如果没有,你应该考虑开源你的模型,利用大众知识来改进你的算法。

接下来,让我们看看在您的公司中利用人工智能所需的技能。

技能

一旦人工智能的神圣三位一体到位,你需要人来完成它的使命。人是让你的数据、基础设施和算法发挥作用以产生商业价值的核心。你如何让你组织中的人使用人工智能?在你的人工智能策略中回答以下问题:

  • 你是建立内部团队还是外包任务?
  • 你如何持续地对管理层和员工进行人工智能教育?

吴恩达建议建立一个内部人工智能团队。人工智能依赖于领域知识,这在某些行业可能很难外包。外部顾问可能不像你自己的员工那样了解你的数据、基础设施和问题。因此,可行的方法是捆绑热情的员工,对他们进行人工智能教育。

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

Photo by Tim Mossholder on Unsplash

1&1 Ionos 的数据科学家张秀坤·海茨表示,人工智能作为一种新技术不同于其他技术创新。人们往往不仅不知道人工智能的实际能力,而且他们经常对它有误解。这可以从“对人类的无所不能的威胁”到直接开箱即用的多用途系统的概念。

一旦内部团队到位,他们需要充当推动者的角色。人工智能的承诺太大了,无法将它们封装在一个团队中。人工智能战略应该实现一个程序,不断教育所有人寻找人工智能用例。通常,这些计划应该针对能够投资人工智能项目的高影响力个人。 todoku.ai 的联合创始人雷切尔·贝里曼确信,人工智能对经理的理解至关重要,因为这将作为人工智能的机会渗透到他们所在行业的员工。

让我们研究一下你的人工智能战略的最后一个组成部分——组织。

组织

人工智能战略的最后一个也是最重要的部分是让你的组织为人工智能做好准备。具体评估你的组织设计和开发过程。然后,将它们与最佳实践结合起来。

  • 你如何让你的人工智能团队提供跨团队和跨领域的商业价值?
  • 您的流程为 ML 工作流程做好准备了吗?

人工智能的好处是万能的。最重要的是要明白人工智能不能在筒仓中工作。人工智能不是在以客户为中心的垂直业务部门工作,而是可以被视为公司的横向推动者。人工智能能够影响内部流程,创造新产品,或改进现有产品。为了做到这一点,吴恩达建议建立一个独立的部门,成为整个公司人工智能的中心支持点。然后,该单位与现有部门合作,寻找高影响力的人工智能项目,并支持它们的实施。

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

Source

在整个公司实现人工智能需要理解机器学习工作流程。机器学习遵循一个高度迭代的过程,其结果远非确定。你可以使用像人工智能项目画布这样的工具来评估成功的可能性,但你很难保证具体的结果。人工智能的探索性质使得它很难遵循公司范围的目标衡量。

在没有彻底评估数据的情况下,你不能承诺一个工作模型。因此,如果不首先投资 ETL 和初始数据分析,很难估计 AI 项目的具体业务影响。— 雷切尔·贝里曼

考虑你的过程:它们准备好支持人工智能了吗?如果你在一个安全至关重要的行业工作,很可能不存在验证统计学习模型的过程。你的公司遵循瀑布工程流程吗?重新考虑你当前的开发过程,检查它是否符合机器学习的工作流程。

现在你已经理解了人工智能策略的核心组件,让我们看看更多的技巧来避免常见的陷阱。

好的、坏的和丑陋的人工智能策略

你的团队需要谁来创造一个人工智能战略?什么构成了一个好的或坏的人工智能策略?企业和初创公司的人工智能战略有什么不同?这最后一个摘要旨在回答前面的问题。

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

Photo by Franki Chamaki on Unsplash

人工智能战略团队

创造一个人工智能战略是一个团队的努力。你需要对人工智能战略的核心组成部分有不同的观点。创业公司和公司的团队组合是不同的。初创公司以较小的团队为中心,围绕来自数据工程师的技术反馈和来自产品所有者或业务开发人员的业务反馈,创建人工智能战略。公司团队涉及更多的功能。为世界上最大的汽车制造商创建了内部人工智能战略的 Andreas Meier 知道,在有专门角色的公司中,你需要大量的领域知识来找到可行的人工智能战略。在一家公司中,你需要一大群不同角色的人,而在初创公司中,你可以用几个多面手创建一个出色的人工智能战略。

好的和坏的人工智能策略的标志

在所有公司中,好的和坏的人工智能策略都有共同的特点。好的人工智能战略是影响驱动的,在公司得到很好的支持,在时间、工资和期望方面有充足的资金。糟糕的人工智能战略是炒作驱动的,专注于技术而不是影响,并雇佣 2-3 名数据科学家争夺项目。试着远离后者。

企业和初创公司的人工智能战略

创建人工智能战略对公司和初创公司来说是不同的。Raphael Kohler 解释说,企业必须考虑遗留系统,并且也面临现有组织的变革管理的挑战,而初创公司可以专注于进入人工智能的良性循环。安德烈亚斯·梅尔知道,为人工智能铺设一条产生影响的道路可能会令人不知所措。他指出,在大公司中,利用人工智能实现流程自动化的潜力很大。对 Andreas 来说,简单地开始并交付价值是很重要的。

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

[Source](http://Montreal Ethics)

另一方面,创业公司应该专注于提供一种在没有人工智能的情况下也能正常工作的产品,但随着越来越多的客户使用该产品,该产品会稳步改善。然后对客户互动进行分析,以改进产品,从而吸引更多的用户。一旦进入人工智能的良性循环,人工智能初创公司就走上了成功之路。

数据是喂给人工智能引擎的油,不能低估思考如何从客户那里获得初始集以及正确的信息以迭代地改进产品的重要性。— 杰森·里施

关键要点

人工智能战略的核心组成部分相互交织,相互依存。核心组件在不同的行业中可能有不同的重要性,但它们总是相关的。

  • 人工智能战略应该始终服务于更高的公司战略
  • 人工智能战略的核心组成部分是数据、基础设施、算法、技能和组织
  • 人工智能战略团队应该由产品经理、数据科学家和业务开发人员组成
  • 一个好的人工智能战略应该关注中期目标和整体方法,而不是大肆宣传雇佣一些数据科学家
  • 战略数据获取的正确时机可以成就或毁灭你的人工智能财富

在本文中,您学习了如何创建人工智能策略。在创建你的人工智能策略时,考虑人工智能的核心组件。我们期待一个拥抱人工智能实施的十年的世界。

1.0.3 中 Julia 语言的严重缺点

原文:https://towardsdatascience.com/the-serious-downsides-to-the-julia-language-in-1-0-3-e295bc4b4755?source=collection_archive---------2-----------------------

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

我已经说了很多我有多爱茱莉亚。如果有人问我现在最喜欢的编程语言是什么,我肯定会回答“Julia”。另一方面,我不太谈论的是我不喜欢朱莉娅的地方。虽然今天我想谈谈我对这种语言的一些弱点和个人不满,但我坚信使用 Julia 的好处大于可能必须做出的任何妥协。如果你从未使用过 Julia,我强烈建议你去看看!有了我的推荐,我也将开始抱怨我如此热爱它的原因。

我喜欢朱莉娅的地方

朱莉娅了解自己

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

Julia 非常喜欢函数式语言,并且喜欢函数式语言。我在我的循环速度测试中展示了一个很好的例子,Julia 在函数递归方面做得非常好。

函数递归循环是我个人在做统计工作时最喜欢使用的外观。然而,通常在其他语言中,比如 Python,每当使用递归时,我们都会遇到速度上的障碍,我认为这对于统计计算来说是一个很大的缺点。

朱莉娅打破了规则

好的,Julia 是一种用于统计的函数式语言…

一定很低级。

Julia 确实打破了规则,每年它似乎都在一点点接近 Python 那样的多功能性。

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

Genie 是一个很好的例子,因为它实际上是一个在 Julia 内部开发 web 后端和管道的框架,如果我自己这么说的话,这是一个相当高级的框架。

就在时间之前

朱莉娅速度很快,我不是随便说说。Julia 的典型运行速度与 c 语言相似。这使得部署速度比需要进行计算的传统基于 Python 的 web 应用程序更快,特别是如果您要部署到非活动服务器,例如 Heroku 上。Julia 能够处理和操作你甚至无法读入 Python 的数据。当处理 2000 万到 3000 万的数据集时,Julia 的速度和效率实在是微不足道,而且计算时间还不到 20 秒。

虽然我不会说 Julia 一定会取代 Scala,但我想说的是,它肯定有潜力取代 Scala。当我可以使用 Julia 时,我发现自己几乎不需要使用 Spark,这很好,因为我有下一个优势:

简单快捷

当然,快速不是指我们讨论过的速度,而是指努力的时间。通常在像 Julia 这样的强大语言中,一个显著的缺点是一些相当丰富的语法,如果这种语言是独一无二的,就像 Julia 一样,这可能会令人畏惧和不快。Julia 很容易设置,甚至有办法集成到 Spark 和 Python 中。如果你想了解更多关于茱莉亚和火花的事,看看这个吧!

底片。

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

DataFrames.jl

虽然相当关键和次要,但我想一开始就提到的最大的一个是 DataFrames.jl。现在不要误解我,我在某种程度上喜欢 DataFrames……但尤其令人讨厌的是 data frames 向用户显示的方式,我真的不明白这样做的原因。当然,这可能是我不知道的性能问题,但我肯定不确定。

首先,为了读入 CSV 文件,我们不像在 Python 中使用 Pandas 那样使用 DataFrames.jl,甚至不使用 R 的内部表。首先,我们必须

Pkg.add("CSV")

这将为读取 CSV 添加一个完整的模块,稍后会详细介绍。

不过,每当我们在添加 CSV 后读取 CSV 时,我们都会在数据框顶部看到一条消息:

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

“省略打印 68 列”

当然,这不是问题,但是我们如何显示所有的列呢?没什么太复杂的,只是:

show(df,allcols=true)

但我的问题是之后会有什么回报:

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

我的天啊。今年是哪一年?

也许你会说这不太严重,但是试着在这个小 iframe 中整理成百上千的特性,而不仅仅是运行

df.head()

然后尽量不去抱怨。与熊猫和 R 数据框相比,朱莉娅肯定是最后一名!考虑到这一点,经过一些思考,我认为他们完全有可能让你使用熊猫和 PyCall,但这纯粹是猜测。

分散

还记得我说过的使用 CSV.jl,而不是使用 DataFrames.jl 读取 CSV 吗?(这是可以的,DataFrames.read_table,但是它做了一些非常奇怪的事情,并抛出了一个不推荐使用的警告。)在 Julia 中,函数和包的分散几乎贯穿了所有东西。

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

例如,如果我想使用决策树,我必须在谷歌上搜索 DecisionTree.jl 和 Pkg.add()它。

Pkg.add("DecisionTree")

这很简单,那还有什么问题呢?

您想要的每一个模型都包含在不同的模块中,都有自己的方法、参数、构造函数、语法和文档。在文档谱上,它可以从两行没有真正解释任何事情的示例代码一直到完全压倒性的一页文档(这是我最喜欢的一种!)

Pkg 细微差别

我的第三个也是最后一个抱怨是关于 Julia 的软件包管理器 Pkg。Pkg 很棒,我真的很喜欢它,事实上,Pkg 有自己的 REPL,你可以随时从朱莉娅 great 进入,这使它更加甜蜜。

然而,这些包确实有一些缺陷、依赖问题和随机的小毛病。通常这并不太糟糕,但偶尔你会安装一个新的模块,并最终一遍又一遍地重新构建 20 个不同的包,如果你不得不用一个精灵网络应用程序来完成这个过程,例如,不仅要在你的个人电脑上提交执行,还要在你的服务器上做同样的事情,这个过程可能会有点烦人。

救赎

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

虽然我承认:这些都是相当小的抱怨,而且通常不会过多地扰乱朱莉娅的生态系统,但我确实觉得这是一些想试用朱莉娅的人想知道的信息。Julia 现在很棒,但着眼于未来而不是现在,我肯定会看到 Julia 起飞并成为数据科学家中的核心语言。很多人可能没有意识到 Julia 仍然是一个婴儿,去年刚刚进入 1.0。而且一门语言这么年轻,当然包是要散的!

自从我在茱莉亚工作以来,茱莉亚已经看到了可观的收入增长。我经常发现我想到了我想做的事情,GitHub 上有一个包可以准确地完成它,这太棒了。软件包在不断扩展,这才是真正使 DS-语言在未来可行的原因。对于 ML,我们有 XGBoost.jl、Lathe.jl、MLBase 和 Flux.jl:

Pkg.add("XGBoost")
Pkg.add("Lathe")
Pkg.add("Flux")
Pkg.add("MLBase")

对于 stats,我们有 StatsBase.jl、GLM.jl、Lathe.jl 和 Distributions.jl:

Pkg.add("StatsBase")
Pkg.add("GLM")
Pkg.add("Lathe")
Pkg.add("Distributions")

对于预处理,我们有 MLDataUtils.jl 和 Lathe.jl:

Pkg.add("MLDataUtils")
Pkg.add("Lathe")

有了 Julia 的高级包管理器,开发所说的包就出奇的容易!

所以我鼓励任何对 Julia 感兴趣的人现在就投入进来,帮助开发语言和软件包库。我坚信,凭借它的速度和用途,我们将看到 Julia 在全球企业生态系统中的使用增加。我对 Julia 的未来感到非常兴奋,它可能会一直保持我最喜欢的语言的地位。

面部识别的严重后果

原文:https://towardsdatascience.com/the-severe-consequences-of-facial-recognition-e4260f961b84?source=collection_archive---------19-----------------------

必须不惜一切代价反对面部识别的快速启动。原因如下。

随着国家和企业数字监控的兴起,以及 2013 年斯诺登的爆料,许多人在数据的数字控制、全球大规模监控以及最近的面部识别等问题上采取了非常支持隐私的立场。

那么,什么是面部识别呢?面部识别正是它听起来的样子:基于面部特征(如肤色、面部毛发和生物数据)识别你的面部的技术。尽管这看起来很简单(事实也确实如此),但是在大规模的社会范围内将它引入人类生活的想法会引起很多关注。

在我深入研究面部识别的批评以及它的引入可能带来的后果之前,我想仔细看看这项技术的最近历史。为此,我们需要看一下两个特定的实体:

IBM 和纽约警察局(NYPD)。

2001 年 9 月 11 日恐怖袭击后,西方世界,尤其是美国,陷入了一种不确定感。这主要是因为袭击粉碎了任何外国或非国家行为者不能袭击美国的想法或观念。

在袭击发生后的几个月里,时任总统乔治·w·布什签署了《爱国者法案》,使之成为法律,并开始修建道路,最终通过美国情报机构和其他盟国进行大规模全球监控。

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

Photo by Matthew Henry on Unsplash

根据截获的和“机密公司文件”,很明显“IBM 开始开发这种物体识别技术”,并通过“秘密获取 NYPD 的摄像机镜头还表示,截击是到 2012 年,“IBM 正在创建新的搜索功能,允许其他警察部门通过头发颜色、面部毛发和肤色搜索摄像机镜头中的人的图像”。

对于一般人来说,这可能只是一种将犯罪嫌疑人逼入更小的身份识别因素的方法,但当考虑到美国各种警察部队严重的种族偏见时,这并不意味着什么。

The Intercept 还报告了 IBM 没有对提出的许多问题做出回应的事实,包括但不限于以下内容:

为什么没有公开与 NYPD 的合作?

视频分析的当前可用性状况如何?

NYPD 提供的视频片段是做什么用的?

面部识别不起作用:

据《独立报》报道,当伦敦警察厅使用"面部识别软件时,结果显示,高达"98%的警报都是误报",因此该软件"还不适合使用"。

The Independent 还报道称,自 2017 年 6 月开始使用该软件以来,南威尔士警方在 15 次部署中总共有“【2,400 次误报”。

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

Photo by Oliver Hale on Unsplash

这些巨大的不准确性概述了识别软件在未来潜在可用所必需的发展。报告的错误可能会在现实世界中造成非常毁灭性的影响,包括但不限于虚假指控、国家骚扰等。

侵犯和侵犯隐私权:

人们一次又一次地看到政府机构超越了法律的范围。例子包括国家安全局(NSA)违反隐私法,特别是关于“在美国境内未经授权监视美国人或外国情报目标

即使在后斯诺登时代隐私倡导的大规模超载和《自由法案》的通过之后,事情并没有改变,该法案本应有助于遏制美国境内正在进行的违宪监控。2016 年, The Verge 报道称,NSA“收集了超过 1.51 亿条关于美国人电话通话的记录,这促使电子前沿基金会(EFF)等个人和组织开始进一步要求删除该程序本身

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

Photo by Scott Webb on Unsplash

如果数百万美国人的隐私被故意侵犯,为什么人们应该期待面部识别技术被不同地使用?事实已经一次又一次地表明和证明,国家机构不愿意正确地通过可用的法律方法来获取私人信息,因此面部识别不应该以任何其他方式处理。

结论:

除了缺乏功能和侵犯隐私之外,还有许多其他问题,例如错误识别少数群体和活动分子的威胁,以及情报组织缺乏针对其他国家或非国家行为者的保障措施。

在目前的状态下,面部识别不是一种可以被各种国家机构使用的技术,并且在大多数情况下应该被明确反对,以防止它具有的许多缺点。如果人们关心学术研究人员、活动家团体、调查记者和其他需要隐私来安全开展工作的个人所做的私人工作,那么这些人应该非常反对进一步实施生物特征数据收集。

数据科学家:22 世纪最性感的工作

原文:https://towardsdatascience.com/the-sexiest-job-of-the-22nd-century-ffe753e1d155?source=collection_archive---------3-----------------------

问这三个问题,确保雇主已经为你做好了准备

数据科学被称为“21 世纪最性感的工作”——如果我看到更多的商业领袖雇用数据科学家进入我们可以有效工作的环境,我会相信这种观点。相反,我们中的许多人感到被误解和被忽视。

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

Image: Source

下个世纪最性感的工作

我们是帮助为你的业务启发新方向,降低你让重要决策付之一炬的风险,以及通过机器学习和人工智能自动化不可言喻的的人。我们让你们的数据变得有用,然而你们却让我们生活在资源贫乏的环境中。你要求我们与下列人讲和:

不熟练的领导 —如果没有擅长领导和管理数据科学职能的人员,我们的日子会很难过。如果决策者不擅长合理分配工作并做出数据驱动的决策,数据科学家实际上是无用的

无数据 —如果你在数据工程师之前雇佣数据科学家,通常意味着我们没有数据可处理,我们必须首先为你建立数据工程功能,否则我们将被迫卷铺盖走人。如果我们留下,我们最终会做一份你声称雇佣我们的工作以外的工作。我已经说过并且我会继续说下去:你需要高质量的数据数据科学才能有效。我们不是神奇的小妖精,所以我们不能为你无中生有。

令人讨厌的工具——数据科学开发工具是一种痛苦。生态系统是支离破碎的,尤其是在人工智能方面,即使是最好的选择也远非完美。总有一些事情让旅途变得颠簸。

如果你在面试一份数据科学的工作,确保你询问了你的潜在雇主关于这三点的计划,这样你就不会陷入悲伤的境地。别忘了问一下 - 工作是什么,以确保你有数据?如果你所有的见解都没有用在任何事情上,谁会被解雇?谁负责挑选您使用的工具,并确保它们与所有其他基础设施配合良好?

如果所有这些问题的答案都是YOU——也许是因为公司不知道什么是数据科学(但无论如何都想要它)——那么适当地设定你的期望。你将不得不自己完成多项工作,大致按照这个顺序来处理它们。在学校接受 #6 训练?你可能在几年内都不会接触到那些很酷的贝叶斯网络(而且到时候你也不太可能真正使用它们,因为你会忙于管理你建立的团队)。它可能非常适合你,但是请你一定要看看(并且想一想!)三思而后行。

我已经写了很多关于领导力数据的文章,所以现在是我提到工具的时候了。应用数据科学家(包括那些从事 ML/AI ) 不想从零开始构建我们的工具(那是一项不同的工作——如果我们想要,我们早就在里面了)。例如,我们更愿意使用一个现有的包来制作一个直方图,而不是编写在屏幕上显示矩形的代码。如果你要开一家餐馆,要求我们自己生产就像要求你自己制造微波炉一样。如果有必要的话,我们会建造它们,但是我们更喜欢直接进入烹饪阶段。

与撒旦一起工作

有时候,管理层强加给数据科学家的专有工具甚至比他们自己拼凑的工具还要糟糕。我记得我的朋友们给它起了个绰号叫“撒旦”,意思是,“是的,我知道这在 R 中需要一行代码,但是你可能需要一整天的预算来让它在撒旦中工作。”当你手中的工具糟糕透顶时,你很难在心中歌唱一天。

从设计师的角度来看

有时候,可用工具的问题是旁观者的看法——也许你沮丧的根源是你选择了一个不是为你制造的工具。我们来看看 Google origin 的两个工具。Keras 不仅是一个漂亮的 API,而且它是以数据科学家的理念构建的。例如, Keras 的错误消息旨在指导数据科学家的下一步行动,因此它们简洁且看起来友好,而 TensorFlow 中的一个等效错误则抛出了一堆杂乱的狄更斯式比例

如果你已经戴上了设计思维的帽子,这不会让你感到惊讶;作为 AI 的工业车床, TensorFlow 最初的设计并没有考虑到数据科学用户。它是为在谷歌范围内开辟新领域的研究人员而设计的…而且它很擅长它的用途。这也是你经常想要扼杀的工具。

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

Hurray for TF 2.0, which is going all-in on usability! There might be teething pains as TF switches over to Keras style and says bye bye to making you write all that boilerplate, but I’m excited. One might even say I’m eager.

对我们数据科学类型的人来说,好消息是,甚至 TensorFlow 也变得更加可爱了。新的 2.0 版本正朝着我们的方向发展,这已经显示出来了。让我们为数据科学家开始说“我喜欢 TensorFlow ”的那一天欢呼吧(相对于*“我容忍 TensorFlow,因为它是在这个规模上处理我的数据的唯一东西”*)。

我很高兴成为明确将数据科学家确定为主要用户的 TensorFlow 计划的一员。我期待在未来的帖子中告诉你的一个例子是 假设工具 ,它使模型理解、偏差检测和 ML 数据探索变得容易。该团队包括一名用户体验设计师,他的任务是让数据科学家们高兴…从第 1 天!可以在这里偷偷看一下结果

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

Curious to know what you’re looking at? Find out more about the What-If Tool here.

如果它不是为你做的,它可能不适合你

重要的是花点时间思考你正在考虑学习的工具的起源,以及它的构建者在指导新版本开发时向其提议的社区。

买之前先试试

当我们这样做的时候,如果您正在为您的组织调用工具,不要在您的数据科学家对工具进行测试之前就承诺使用它。你可能会认为这是不言而喻的,但撒旦却有不同的暗示。考虑挑选一款专为零售领域分析师打造的工具,并将其直接插入您的医疗保健公司?哦亲爱的。

您可能需要考虑一些来自专业工程师的工具支持,这样您的数据科学家就不会痛苦了。您当前的分析师可能没有签约处理对他们来说感觉像一件垃圾的东西,他们可能没有足够的时间来了解询问工具(以及对这些工具的工程支持!)在他们的采访中。

笑点

如果你是一名正在寻找新工作的数据科学家,不要忘记检查一下你将要信任的人是否了解你的需求。向潜在雇主提出关于数据、决策者和工具的问题。确保他们拥有我们需要的快乐和有效的东西。不要以为雇主在这个世纪已经为你做好了准备。如果你热爱这份工作,我不希望看到你成为另一个没有数据的公司的数据科学主管!

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

Image: Source

感谢阅读!人工智能课程怎么样?

如果你在这里玩得开心,并且你正在寻找一个为初学者和专家设计的有趣的应用人工智能课程,这里有一个我为你制作的娱乐课程:

Enjoy the entire course playlist here: bit.ly/machinefriend

喜欢作者?与凯西·科兹尔科夫联系

让我们做朋友吧!你可以在 TwitterYouTubeSubstackLinkedIn 上找到我。有兴趣让我在你的活动上发言吗?使用表格联系。

化学函数的形状

原文:https://towardsdatascience.com/the-shape-of-chemical-functions-d1e1568d020?source=collection_archive---------23-----------------------

“形式服从功能”这句话我们能走多远?用数据回答。

弗朗切斯科·帕斯,弗朗切斯科·帕尔马,马特奥·曹尔西,托马斯·博伊斯

https://github . com/Giotto-ai/the-shape-of-chemical-functions(简单安装说明如下。)

即使你第一次呆在一个房间里,你周围的物体也会让你感到非常熟悉。最微小的细节将包含足够的信息来识别一个物体并将其与一个功能联系起来。物体看起来像什么,我们不严格地称之为它的形状,告诉我们一些更深层的东西:它的功能,物体做什么。

想一想,很不寻常的是,短暂的一瞥一个无生命的物体会唤起你可以用它做的所有事情。如果是藏在一张纸下面的一副耳机,或者是你家工具棚里一件积满灰尘的旧工具,不需要深入分析,你大概会对它的功能有一个极其有见地的猜测。

我们能把形式和功能分开吗?

嗯……想象一下不能区分电锯和面包刀。

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

Objects with the same form might not always have the same function…

对于复杂的进化系统来说,恰当地检验这个问题似乎很困难,因为这个系统有影响自身的力量。然而,对于像化学这样基础的东西,我们可以期待一个不那么偏颇的答案。

让我们更深入地探讨这个问题

在化学中,毫无疑问,分子的形状对决定它们的功能有一定的作用。蛋白质构成我们的皮肤,携带血液中的氧气,帮助我们的肌肉运动等等。在我们的身体内部,蛋白质根据它们被赋予的任务呈现出许多特殊的形状,例如,支架帮助细胞移动并保持其形状,酶由于特殊的口袋而加速生物机械反应。虽然这些形状比日常物体复杂得多,但蛋白质的结构在多大程度上反映了它在体内的作用?

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

Proteins are made up of long strands of smaller molecules called amino acids, which twist and fold into specific shapes.

形状对分子的功能有多重要?

让我们尝试给这个问题一个定量的答案。如果形状信息决定了分子的功能,那么仅仅依靠形状特征就有可能建立高度精确的预测模型。

检验假设:一种分子是 HIV 抑制剂吗?

因为我们一次只能测试一个化学反应,所以我们简化了问题,并试图预测一个分子是否会执行一个确切的功能。在我们的案例中,我们专注于预测一种分子是否能抑制 HIV 的传播。

要从分子中提取形状,自然要用到一些拓扑。

简单地说,结果

仅依靠形状信息,我们成功地在 AUC-ROC 中达到 0.74 的分数。我们通过包括关于键的性质的基本化学信息来实现进一步的性能提升,达到 0.77。今天的技术水平达到了 0.78。非常可敬!

复制我们的结果所需的代码是完全可用的,可以在这个库中找到。要运行其中包含的 Jupyter 笔记本,您需要:a)下载存储库的内容;b)按照自述文件中“开发者安装”下的说明,安装最新(非发布)版本的开源库 giotto-learn 。很快,这些实验性的特性将可以通过pip更简单地获得,而不需要克隆库的 repo,所以请继续关注!

数据和方法

HIV 数据集由药物治疗计划引入,以鼓励 HIV 抑制化合物的研究,它被收录在 MoleculeNet 中。对于 4 万种化合物中的每一种,他们测试了该化合物是否抑制艾滋病毒的复制,从而产生了数据集的二进制标签。这两类是不平衡的,因为只有 2%的分子是抑制剂。为此,我们选择了 AUC-ROC 指标。

将分子表示为图形是很常见的:将化合物的原子视为顶点,将化学键视为顶点之间的边。在我们下面描述的设置中,我们从分子图中提取形状信息。

为了在预测模型中使用这种形状信息,我们需要从图形中提取特征。

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

创建特征向量来比较图形

如果我们的假设成立,希望当两种化合物结构相近时,它们会有相似的功能。我们如何构建嵌入来突出图形之间的结构相似性?

让我们想象一下,我们嵌入了图的顶点,以便表示它们在图中的角色(中枢与孤立节点)。

如果一个图与另一个图相似,那么它的许多顶点在向量空间中具有相似的嵌入,因此得到的分子特征向量应该在嵌入空间中是接近的。因此,我们将问题简化为确定顶点的嵌入,这些顶点对它们在图中扮演的角色进行编码。

产生顶点嵌入的热流模拟

我们可以把一个顶点的作用想象成它连接图中所有其他顶点的方式。通过模拟一个单位的热量如何从一个顶点扩散到图表的其余部分,我们可以量化扩散的速度和范围,从而量化其作用。完整的方法在这里公开。

对于给定数量的时间步长,我们使用拉普拉斯图来模拟热扩散。作为扩散的度量,我们取扩散的每个时间步的熵。因此,一旦这个过程开始,你就以固定的时间间隔测量扩散,并在给定的时间步数内停止扩散。我们认为 40 英镑是合理的。

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

Diffusing heat from the red node to the rest of the graph

通过在 40 个时间步长的每一步测量图的熵,每个原子都有一个 40 维的表示。

顶点特征向量

最后,我们准备好了特征向量。我们对嵌入的顶点执行 k 均值聚类,我们选择 k=10。然后,顶点的特征向量由属于 10 个聚类中的每一个的 10 维概率向量给出。

我们对边缘重复同样的过程

多亏了霍奇理论,也有可能研究同样的扩散过程,但这次是在图的边缘。通过重复前面的步骤,我们可以将另一个特征向量叠加到我们的模型中。

分子特征向量

我们通过堆叠以下两个向量来获得分子的特征向量:

  • 属于分子的顶点的矢量和
  • 该矢量将属于分子的边相加

为了测量我们在分子特征向量上叠加的化学信息的影响:

  • 每种类型的键的总数(单键、双键、三键和芳香键)

分类

是时候把这些特征输入到你最喜欢的分类器中了。在我们的例子中,我们选择一个具有两个隐藏层的神经网络,分别具有 32 和 64 个 Relu 神经元。

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

The 2-hidden layer neural obtained in cross

结果

从分子图中提取的特征所实现的性能给出了令人印象深刻的 0.74。化学信息将性能提升到 0.77,接近使用大量化学信息的最新内核 SVM 所达到的 0.78。在这里找到的书房。

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

Our results on predicting HIV inhibitors with only structural features

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

State of the art results in AUC-ROC on predicting HIV inhibitors

结构特征击败了包含更广泛特征的次优模型。形状确实是功能的一个很好的代理,即使简单的化学属性会导致性能的提升。尽管如此,值得注意的是,除了形状之外,几乎没有什么化学信息是接近最先进性能所必需的。

链接:

足球比赛的形式

原文:https://towardsdatascience.com/the-shape-of-football-games-1589dc4e652a?source=collection_archive---------15-----------------------

使用球员特征和拓扑数据分析模拟足球比赛的结果

由弗朗切斯科·帕尔马、迭戈·费奥里、丹·泰特斯·萨拉詹、阿莱西奥·巴切利、马特奥·德·奥斯皮纳和托马斯·博伊斯创作

如果你是一个足球迷,你会渴望梅西加入你的球队。你的队会赢得冠军吗?它至少能避免降级吗?由于梅西不能加入每个人的团队,我们选择使用数据和模拟来推断答案。EA Sport 的 Fifa 数据集是我们球员特征的代理,TDA(拓扑数据分析)是模拟每场比赛结果概率的 spice。通过对这些概率的模拟,我们得出了英超联赛最有可能的最终排名。

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

Messi is only joining Aston Villa in our Python Jupyter Notebook (source:https://twitter.com/concarp98)

今年击败克洛普需要谁?

我们的模型允许您组成您的团队,并衡量团队在排行榜中的年终排名的整体影响。自己试试模型,python 代码在这里有,数据在这里:匹配赔率tda 特色玩家统计玩家姓名(原始来源这里)。

系统模型化

假设 1: 一场足球比赛的产出只取决于场上球员的具体和组合属性。

大多数教练不同意这种假设,因为我们忽略了团队精神、天气、周内比赛导致的疲劳、伤病、黄/红牌、换人、战术、个别球员的个人承诺、赛季时间、球迷的特殊承诺以及其他许多可能影响比赛结果的内部和外部因素。

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

Walter Mazzari, former Watford manager, became a reference while he was at F.C. Internazionale in 2014 for the iconic sentence: “we were playing well, and then it started raining”. (source:https://www.standard.co.uk)

话虽如此,你可能已经明白了第一个不可否认的事实:

我们的模型明显是错的(任何模型都是…)

无论是作为球员、教练、球迷、服务员、替补队员还是园丁,任何人都知道,在预测比赛结果时,要考虑的信息量比可以记录的信息量更大。看台上的一声尖叫,裁判的一声误判,或者午餐菜单上的虾,都可能危及比赛的整体结果。一些受人尊敬的科学家声称,足球只是随机的,或者像证明费马大定理一样困难(除了我们对后者有 129 页的数学证明)。

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

Professor Andrew Wiles proved Fermat’s last theorem in 1994. After 358 years we finally have a proof that “there are no whole number solutions to the equation x^n + y^n = z^n when n is greater than 2, unless xyz=0”. Will somebody ever find a solution for predicting the outcome of football matches? (source:http://www.ox.ac.uk)

我们当然知道,没有任何预测模型可以完美地预测足球比赛的结果。我们的目标是看看拓扑数据分析的不可知论方法是否可以在每个团队的七个聚合特征的微小集合中识别相关模式。

我们使用 EA 给每个玩家的 24 个属性来设计攻击和防御特性。初始属性相关矩阵给出了构建后者的方向。为了生成整个团队的特征,我们基于初始匹配组合构建了以下 7 个特征:

守门员的等级

团队中最大攻击值

团队中最大防御值

队内平均攻击力

队内防守一般

团队攻击的标准偏差,以百分比表示

团队防守的标准差,以百分比表示

我们基于过去六个英超赛季的 2591 场比赛训练了一个模型来估计每场比赛结果的概率。我们对 14/15 赛季的 380 场比赛进行了测试,并提供了最终排行榜的模拟。

动机

2011 年 12 月 31 日,弗格森爵士 70 岁了,曼联将在老特拉福德迎战排名最后的布莱克本流浪者队。在最后一场比赛中,流浪者队以 1 比 7 惨败。那天晚上,那些期待弗格森的球队再次表现的人会非常惊讶。布莱克本以 2 比 0 领先,并在最后 10 分钟以 3 比 2 锁定胜局。

那天晚上,幸运的下注者在赌场赢了 28:1。

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

The Rovers’ future captain Grant Campbell Hanley scored the victory goal at Old Trafford. At that time the Scottish defender was just 20, he left Blackburn in 2016 with 183 appearances and 8 goals. (source:https://www.dailymotion.com)

不幸的是,在老特拉福德的这场奇迹般的胜利并没有让布莱克本免于降级。另一方面,从长远来看,这些分数对红魔来说是致命的。那晚错过的机会导致在最终排行榜上不可思议的平局。曼城和曼联都以 89 分结束了这个赛季。由于一个更好的净胜球,市民赢得了奖杯,给曼联留下了苦涩的余味。

太好了。但是为什么是拓扑呢?

虽然这一事件对曼联来说似乎不可预测,但拓扑结构清楚地将这场比赛与布莱克本的比赛和与相同水平球队的对抗区分开来。例如,我们考虑同一赛季曼联对西布朗和曼联对博尔顿。

让我们试着理解为什么我们的比赛如此特别(这样你就可以计划下一次去赌场)。我们可以做的第一件事是研究比赛的空间,一场比赛是 14 维空间中的一个点(记住每个队有 7 个特征,一场比赛有 7+7=14 个特征)。我们使用主成分分析的前两个部分,以我们考虑的每个匹配为中心来可视化相似的匹配。

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

2-dimensional PCA representation for Man-Utd vs West Brom. 3–0, Man-Utd. vs Bolton 2–0 and Man-Utd. vs Blackburn 2–3

你用主成分分析看不到的,你可以用 TDA 看到

这三个图是用来描述匹配的 14 个特征的投影,精确到两个,并且已知投影会丢失信息。我们使用 TDA 从原始空间中恢复和可视化结构。我们使用的工具是一个持久性图(在 Giotto 中可用!).持久性图是数据集在点的连通性方面的表示,它是通过逐步连接相邻点并测量结构的同源性而获得的。这是一种理解、可视化和从数据中提取特征的新方法。如果你想更多地了解 TDA,我们推荐这个帖子

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

Persistence diagram for Man-Utd vs West Brom. 3–0, Man-Utd. vs Bolton 2–0 and Man-Utd. vs Blackburn 2–3

三个持久性图是在与 PCA 情况相同的点云上计算的。图中的点不再匹配,而是描述了原始空间中的点之间的关系。在我们的例子中,它描述了三个匹配点周围的点云的形状。

持久性图告诉您局部和全局结构

从前两个图中,我们可以看到所有的连通分量(用橙色点表示)都集中在 y 轴上[5,10]之间。此外,环(由绿点表示)集中在框[6,8]x[6,8]中,并且它们到 y=x 的最大距离是 1。

在最后一张图中,橙色点更加分散,极值点(0,17)表示较晚与数据集的其余部分连接的组件。最重要的是,绿点在 y=x 线上也更加分散,它们总体上更靠近这条线。

第三张图的结构暗示了一个异常值

事实上,橙色的点(0,17)代表了人类之间的融合。Utd。-Blackburn 与剩余的匹配,这意味着该匹配比它在 PCA 图中所表示的更远。

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

持久性图很棒,但是它们不能直接输入到预测模型中。您将需要知道如何将持久性图转换成模型的特性。

我们使用一种叫做振幅函数的技巧来合成图表中的信息。

关于我们如何从持久性图中提取特性的更详细的解释也包含在我们正在分享的 Python Jupyter 笔记本中。

结果

单个比赛的模型已经训练好了:我们现在准备运行整个赛季的一些模拟。你可以选择一个小队,看看他们能走多远。作为对模型的测试,我们研究了每个英超球队转会梅西的影响。

不出意外,雇佣梅西总是好的。

有梅西在你的球队,你降级的几率平均下降 12%,把奖杯带回家的几率平均增加 4%,进入前四的几率增加 14%。最需要梅西的球队是女王公园巡游者队,他们将在排行榜上攀升 11 个位置。最初获得第 14 名,模拟概率为 72%,莱斯特城将获得欧冠资格。

下面是第 14-15 季的原始排行榜,以及以下各项的模拟概率:

  • 赢得冠军,
  • 进入前 4 名
  • 被降级

每个阵容里有没有梅西。

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

Leaderboard for Premier League season 14–15, including simulated probabilities with and without Messi

模型评估

排行榜模拟的质量直接反映了模型在预测比赛结果方面的准确性。我们对持久性图中的 14 个特征+特征使用随机森林分类器,并根据一些基线预测策略测试该框架:

1)预测主队总是获胜(基线)

2)根据团队绩效计算的 Elo 评分

3)通过投注赔率给出的市场预测

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

Accuracy of predictive strategies on 14–15 season

在上表中,我们给出了测试集上每个策略的准确性。下面我们比较了这些预测的混淆矩阵。

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

Confusion matrix of the different predictive strategies

结果证实:足球是随机的。即使是博彩公司也只有 53%的比赛赔率是正确的。

我们的结果与博彩赔率给出的结果相当,与博彩赔率有惊人的强相关性。结果很有趣,因为我们的模型依赖于过于简单的数据。我们的模型具有预测抽奖的非凡能力(代表 27%的结果)。

当提供其他年份和其他锦标赛的数据时,该模型具有很好的通用性。在没有“看过”意大利比赛的情况下,同一模型在预测 2015/2016 赛季意甲比赛时的准确率为 52%。这对于团队特定的策略(如 Elo 评级)来说是不可能的。

也许这个模型最好的属性是它在建立和测试团队时的灵活性。我们不仅可以混合球队和模拟锦标赛,我们还可以做出明智的转会决定。在预算固定的情况下,你可以根据球员的成本和收益来优化他们的最佳组合。

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

Lionel Messi is playing in Barcelona since 2011, maybe it’s time for him to join other teams at least virtually…(source:https://metro.co.uk)

结论

我们的尝试是给一个复杂的三元分类问题一个简单的解决方案。拓扑模型在非常有限的一组要素上实现了很好的准确性,并且它可以与常见的方法相媲美,尽管灵活性较差。

我们已经在梅西身上试过了,现在我们很好奇,罗纳尔多会表现得更好吗?

参考文献:

[## 持续同源:一个带有例子的非数学介绍

在数据科学中使用拓扑数据分析(TDA)工具

towardsdatascience.com](/persistent-homology-with-examples-1974d4b9c3d0)

https://arxiv.org/abs/1710.04019

人口动态的形状

原文:https://towardsdatascience.com/the-shape-of-population-dynamics-ba70f253919f?source=collection_archive---------23-----------------------

利用拓扑数据分析研究种群动态

由弗朗西斯科·帕尔马、菲利普·魏勒路易斯·汤斯顿托马斯·博伊斯编剧。

https://github.com/giotto-ai/beetles-tda

尽管狼以凶猛的杀手而闻名,但 1995 年在黄石国家公园重新引入狼使该地区恢复了生机。随着狼群将鹿和驼鹿从河流和山谷中赶走,植被开始重新生长。由于栖息地更加丰富,鸟类和海狸等较小的动物开始在水边定居。因此,就像罗穆卢斯和雷穆斯的情况一样,狼可以被认为是生命的承载者。

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

According to the legend, the twin brothers Romulus and Remus were abandoned on the river Tiber to die. Thanks to the help of a she-wolf they managed to survive and founded the city of Rome in 753 BC, Source

人口动态会表现出违反直觉的行为。

今天,濒危物种的数量在增加。在不危及整个生态系统的情况下识别和保护它们是一个真正的挑战。这就是为什么我们从早期预警信号中得出正确的行动是至关重要的。

"每一个作用总会有相反的反作用."牛顿第三定律

就像牛顿写了一个方程解释作用和反作用之间的关系一样,我们可以依靠数学方程来描述人口动态。这种内在的建模方法揭示了种群内部起作用的机制,例如对资源消失的反应。

在固有模型中,噪声项捕捉环境的不确定性

要测量人口数据中的重复模式,自然要寻求一种稳定且通用的方法,如拓扑数据分析(TDA)。我们的文章探讨了拓扑特征如何被用来分类非周期性和稳定的人口增长机制。

我们发现,仅用几个拓扑特征,即使包含显著的噪声,也有可能提高简单基线模型的性能。

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

我们采用的方法受到佩雷拉和德梅洛工作的启发。我们使用开源库 Giotto-learn 提供代码来复制我们的结果。

模拟种群的进化

农业受到一种臭名昭著的甲虫的损害——赤拟谷盗。它是如此之小,以至于在不到几克的面粉中就能找到数百个样本。当缺乏资源时,这种甲虫依靠同类相食来恢复种群平衡。因此,它们可以作为捕食者和猎物,使它们成为一个自给自足的生态系统。

面粉甲虫通过同类相食来自我调节它的种群。

为了达到稳定的种群,甲虫会自我监控每只成年甲虫的可用资源比例。然而,这种监控操作的成功并不意味着一定会失败。在没有任何外部刺激的情况下,成年甲虫的数量级会无休止地波动,永远不会达到稳定的数量级。

皇家诺顿·查普曼于 1928 年首次提出了增长模型,我们用来模拟人口动态的增长模型可以在 20 世纪 70 年代由康斯坦丁诺等人撰写的文章中找到。我们用他们的差分方程模拟了赤拟谷盗面粉甲虫种群。我们的目标是确定成年甲虫种群是处于稳定状态还是非周期性状态。

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

Two regimes of adult beetle population as function of time

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

Two regimes of adult beetle population with increased environmental uncertainty

我们表明,TDA 方法比基线模型更好地区分了这两种情况。TDA 特征是高度可预测的,以区分甲虫种群中的稳定和非周期性状态。此外,即使在环境条件高度不确定的情况下,它们也能保持预测性。

用 TDA 聚类时间序列

面粉甲虫是种群动力学中一个被充分研究的例子,它表现出两种截然不同的行为:稳定的和非周期性的。对于许多其他物种来说,这种洞察力是不存在的,并且为它们的进化找到一个合适的模型是乏味的。

然而,我们可以依靠数据科学来洞察不同模式的人口动态。我们设计了一种基于相似性度量的不可知方法来聚类人口时间序列。基线方法是将每个人口时间序列视为一个高维向量,并对其进行聚类。

我们的方法依靠 TDA 来降低问题的维度,压缩并保留时间序列中包含的基本模式。流水线包括以下处理步骤:

1.应用 Takens 嵌入:

Takens 嵌入背后的思想是将一维时间序列 y(t) 嵌入到一个 d- 维空间中。在连续数据的情况下,我们将时间序列离散化(任何方法都可以),并且我们通过在彼此距离*的 τ 处选择 d 点来应用滑动窗口方法。*这些值成为代表 d- 维空间中时间窗口的矢量坐标。

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

A Takens’ embedding on a sinus curve exhibits a loop in the embedding space (here d=2, τ=1)

通过在时间序列上逐步滑动时间窗口,并重复该操作,我们获得了数据在维度 d 中的新表示。

塔肯夫妇的嵌入给了我们一个新的视角来揭示隐藏的模式。

这种嵌入需要调谐参数,例如嵌入尺寸 d 或时间延迟 *τ。*两者都可以通过实验或最小化特定问题的损失函数找到。

giotto-learn 中,时延 τ 是从时延互信息的内置最小化中获得的。

2.建造 Vietoris-Rips 综合体:

我们使用 Vietoris-Rips (VR)算法来研究这个点云的形状和连通性。当半径递增的两个球(以每个点为中心)相交时,VR 算法连接两个点。这样的过程让我们可以观察连接组件的合并,以及洞(圆)的创建和塌陷。下面的 GIF 图展示了 2D 背景下的概念:

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

The Vietoris-Rips algorithm produces a sequence of graphs by progressively connecting the dots

3.计算持久性图表:

持续图总结了包含在由 VR 算法产生的图形序列中的拓扑信息。该总结包括一对 (b,d),,其中 bd 分别表示拓扑特征(组件/孔/空隙)出现和消失的半径。

4.从持久性图中提取特征:

持久性图提供了关于点云的定性信息,但它们不是向量!这就是为什么我们不能直接使用它们作为特性。有许多方法可以将持久性图转化为特征向量,例如使用两个持久性图之间的距离(有许多的例子)。我们使用

  1. 每一维孔的平均寿命。
  2. 每个维度的孔数。
  3. “存活”时间超过给定阈值的洞数。该阈值被选择为空穴最大寿命的一部分(在维度中)。
  4. 每尺寸孔的最大寿命。
  5. 图表的幅度。它充当持久性图的规范,因为它采用持久性图和平凡图(图中所有点位于直线上 y=x )之间的距离。

5.对要素执行聚类

我们对生成的 TDA 特征应用 k 均值聚类,k=2。

结果

TDA 特征包含内在模型中没有的性能提升信息。

仅使用所述特征的 TDA 方法总是优于使用 120 个特征的基线。基线的均匀性分数随着环境中噪声的增加而不断降低。一旦噪声的标准偏差的平均值达到 0.5,基线方法仅找到单个聚类。

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

Homogeneity score for baseline (blue) and TDA approach (red) as a function of noise

TDA 方法也遭受了性能的早期下降,这可以通过两种情况之间日益增加的相似性来解释。当进一步增加噪声时,性能恢复,这表明通过 TDA 透镜观察,两种情况再次变得不同。我们可以通过查看三个示例案例的持久性图来验证这一点:

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

The persistence diagrams of two sample behaviors as the noise increases (from left to right). Red points represent connected components, and green points represent holes.

  1. 确认该方法捕获了明显的情况,持久性图的第一列清楚地区分了稳定和非周期性的情况。
  2. 对于中间的情况,随着噪声的增加,在稳定和 a 周期情况的图之间没有客观差异。这解释了在 0.25 噪声附近观察到的性能下降。
  3. 当噪声达到最大值时,两个持久性图再次变得不同。

结论

TDA 的特点是性能提升和抗噪音

为了理解我们如何在时间序列的集合中识别不同的聚类,TDA 提供了相关的特征来压缩时间序列的主要特征,同时保持对噪声的鲁棒性。在我们的例子中,九个特性足以将性能提高几个数量级。

链接:

在噪音中幸存的形状

原文:https://towardsdatascience.com/the-shape-that-survives-the-noise-f0a2a89018c6?source=collection_archive---------12-----------------------

由科林·卡林、菲利普·魏勒、玛尔塔·安吉洛、菲利普·阮、本杰明·罗素和托马斯·博伊斯撰写。

https://github.com/giotto-ai/noise-to-signal

因为处理噪声先于任何类型的模型拟合,所以您希望有一种透明的方法来从噪声中提取稳健的信号。

去除噪声是一项永无止境的任务,快速修复会危及整个分析。

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

Sisyphus is forced to roll an immense boulder up a hill only for it to roll down when it nears the top, repeating this action for eternity.

TDA 通过提取数据的基本形状来去除噪声。

典型的方法包括滤波(卡尔曼滤波器…)和平滑策略(指数移动平均…)。这些方法都侧重于时间平均法,并在噪声频率远高于希望提取的信号频率的假设下工作。相比之下,TDA 主要不是基于简单的时间平均,而是从每个固定时间提取结构信息。

噪声信号中隐藏信息恢复的应用

我们考虑在噪声下预测状态变化的问题。为了了解哪些特征集最适合预测状态变化,我们构建了四个模型来执行二元分类任务。每个模型都是使用不同的特征集构建的:两组特征不包含 TDA,一组仅使用 TDA 特征,另一组包含所有组合特征。

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

Noise, when good theory meets dirty practices. It is that unwanted party in your signal.

我们的结果简而言之

TDA 的特征对于快速检测噪声信号关键特征的细微变化具有高度的预测性。

这些功能优于标准功能。它们还包含标准方法中没有的性能提升信息。

下面,我们针对标准特征创建策略,使用 TDA 特征对复杂数字电路系统中的快速状态检测进行基准测试。

我们发现,在高噪声区域,TDA 特征比标准特征策略产生了显著的性能提升。TDA 不仅优于单独的标准策略,当两者结合时,它在标准策略之上提供了明显的性能提升。因此,它清楚地包含与标准特征中存在的信息不相交的预测信息,并且因此可以增强预测。

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

Detection accuracy as noise is added to data

问题陈述

阿里和朱莉想要分享一个隐藏的信息,以组织他们在英镑商店的秘密假日购物(波亚卡莎:他的代码可用)。

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

Ali explaining his message because the signal was too noisy.

隐藏在众目睽睽之下:隐写术是一种将一个信号隐藏在另一个信号中的艺术。

阿里狡猾地隐藏了他们秘密会面的地点、日期和时间,用橙色信号表示的 1 和 0 的序列,有点像莫尔斯电码。为了隐藏信号,他通过杜芬振荡器转动信号,输出蓝色信号,里面隐藏着信息。

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

Message in orange and noisy carrier signal by Duffing oscillator in blue.

为了隐藏消息,Ali 根据他的消息(橙色信号)的数字改变了 Duffing 振荡器的“A”参数。这种变化在具有不同拓扑属性的杜芬振荡器的两个状态之间切换输出信号。重要的是,这两种体制无法用肉眼区分。这使得它们适合在显眼的地方隐藏信息。

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

Duffing oscillator circuit, electronic circuits are great source of data to study periodic and chaotic signals. Figure by Elena Tamaševičiūtė et al.

其混沌输出允许杜芬振荡器用于 T2 信号提取和检测任务。在信号处理领域,尤其是实时信号处理领域,对于所有方式的滤波任务、异常检测和信号提取,使用特定电路是常见的。

重建信息

最终,Julie 需要从蓝色信号的“状态变化”中重建信息(橙色信号)。她使用 ML 分类器通过识别两种机制来提取信息,但只有当她拥有正确的特征创建步骤时才会成功。

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

为了训练她的解码器,Julie 测量了 Duffing 电路的电压输出(她将其分为训练/测试 140,000 点和 60,000 点)。每个测量值都配有一个标签,表明它属于哪个区域。

特征创建

固有特性是直接测量输出信号的电压及其时间导数。

标准的时间序列特征是由许多不同大小的滚动窗口创建的。我们在滚动窗口中创建的特征是平均值、最大值、最小值、移动平均差(MAD)和前几个傅立叶系数。

TDA 特色

我们的目标是根据时间序列的状态看到拓扑不同的点云(从而提取信息)。TDA 的特征是使用乔托库创建的。

为了创建 TDA 特征,我们使用 Takens 嵌入法将我们的时间序列嵌入到一个更高维度的空间中(在这里解释)。滚动窗口的每一步都被转换成高维空间中的单个向量(其维度是窗口的大小)。

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

Takens embedding in dimension two.

拓扑研究每个点云中的连通性。我们应用 Vietoris-Rips 算法,该算法通过一条边连接在某个距离阈值下的点,并且通过改变该阈值,V-R 以不同的粒度级别创建点云的近似。

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

Vietoris-Rips algorithm.

发现以下特征是有效的预测因素。

孔特征的总数

关于漏洞的信息包含在持久性图中。它是逐渐连接距离(ε)越来越大的点的结果,我们用它来创建 Betti 曲面。Betti 表面计算作为ε和时间的函数的数据中存在的孔的数量。

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

Betti surface showing the 1 and 0 regimes in the Duffing oscillator output.

相关孔特征

相关孔特征计算超过给定阈值大小(大于最大值的 70%)的孔的数量。

图表特征的振幅

我们使用图范数作为图中所有洞的总持久性的度量。

平均支持特征

在 Betti 曲面中产生非零 Betti 值的ε距离的平均值。

ArgMax 功能

argmax 特征是每个时间窗的 Betti 数最高的ε值。

平均寿命特征

对于每个维度,我们取持久性图中空穴的平均寿命(=固定时间的 Betti 表面)。

管道

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

Steps of the feature creation and model fit pipeline.

特征说明

我们演示了在噪声杜芬振荡器上的管道中创建的功能,其中隐藏着阿里的消息。我们清楚地看到,TDA 特征在这么短的时间内确定了 1 和 0 的状态:

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

Topological features output from the Jupyter notebook.

结果

我们可以清楚地识别出两个性质不同的区域。

即使在噪声状态的情况下,Betti 表面也清楚地区分信号的 1 和 0 区域。

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

Betti 数在隐藏信号的 0 区域中比在 1 区域中下降得更快(随着ε增加)。

梯度增强分类器输出处理如下:首先,我们应用滚动窗口并计算其中的平均值。接下来,我们将高于预定义阈值的所有值标记为 1,否则标记为 0。

为了便于比较,我们通过使用以下工具独立训练四次,对 TDA 功能进行了基准测试:

  • 只有时报系列
  • 一组标准的时间序列功能
  • TDA 特色
  • 全部合并

为了测试对噪声的鲁棒性,我们在数据集的失真版本上训练每个配置(通过添加增加量的高斯噪声)。这是噪声函数的性能图:

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

Accuracy in function of noise.

我们看到,当我们使用所有功能时,可以实现最佳性能。因此,添加 TDA 特征提高了整体性能,并使分类器更能抵抗噪声。

在噪声被添加到信号之前,TDA 和标准策略都完美地执行。然而,这是一个难题,当我们加入噪音时,TDA 的表现优于标准策略,当两种方法结合使用时,表现更好。

这表明,不仅 TDA 特征本身具有高度预测性,而且它们还包含标准方法中没有的性能提升信息。

尽情探索您自己的抗噪信号处理 TDA 应用。

链接:

协方差矩阵的意义及其应用

原文:https://towardsdatascience.com/the-significance-and-applications-of-covariance-matrix-d021c17bce82?source=collection_archive---------4-----------------------

线性代数和各种应用之间的一个联系

“数学的美妙之处在于简单的模型可以做伟大的事情。”现代数据科学中不乏花哨的算法和技术。技术容易学,但也容易落后。然而,从长远来看,数学基础是有益的。协方差矩阵是一个简单而有用的数学概念,广泛应用于金融工程、计量经济学以及机器学习中。鉴于它的实用性,我决定从我的记事本中总结一些要点和例子,并整理出一个有凝聚力的故事。

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

Photo from Pixabay

协方差衡量两个随机变量在总体中一起变化的程度。当总体包含更高维度或更多随机变量时,用一个矩阵来描述不同维度之间的关系。用一种更容易理解的方式来说,协方差矩阵就是将整个维度上的关系定义为任意两个随机变量之间的关系。

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

用例 1:随机建模

协方差矩阵最重要的特点就是正半定,这就带来了

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

简单地说,乔莱斯基分解就是将一个正定矩阵分解成一个下三角矩阵与其转置矩阵的乘积。在实践中,人们用它来生成相关随机变量,方法是将分解协方差矩阵得到的下三角乘以标准法线。此外,矩阵分解在许多方面是有帮助的,因为使用隐藏因子来表征矩阵揭示了通用的属性,并且我们不经常能够显式地执行矩阵计算。

在金融工程中,蒙特卡洛模拟在期权定价中起着重要作用,在期权定价中,衍生品的收益取决于一篮子基础资产。给定股票价格演变的标准公式,该公式假设股票价格遵循几何布朗运动,相关股票价格可以通过将乔莱斯基分解应用于协方差矩阵来计算。

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

下面是我用 python 编写的一个简单例子,用这种方法模拟相关的股票价格路径。

*import numpy as np
import matplotlib.pyplot as pltmu_a, mu_b = 0.2, 0.3 # annual expected return for stock A and stock B
sig_a, sig_b = 0.25, 0.35 # annual expected volatility
s0_a, s0_b = 60, 55 # stock price at t0
T = 1 # simulate price evolution for the next year
delta_t = 0.001 
steps = T/delta_trho = 0.2 # correlation between stock A and stock B
cor_matrix = np.array([[1.0, rho],
                       [rho, 1.0]])
sd = np.diag([sig_a, sig_b]) 
cov_matrix = np.dot(sd, np.dot(cor_matrix, sd)) 
L = np.linalg.cholesky(cov_matrix) # Cholesky decompositionplt.figure(figsize = (12, 6))
path_a = [s0_a]
path_b = [s0_b]
st_a, st_b = s0_a, s0_b
for i in range(int(steps)):
    V = L.dot(np.random.normal(0, 1, 2)) 
    st_a = st_a*np.exp((mu_a - 0.5*sig_a**2)*delta_t + sig_a*np.sqrt(delta_t)*V[0])
    st_b = st_b*np.exp((mu_b - 0.5*sig_b**2)*delta_t + sig_b*np.sqrt(delta_t)*V[1])
    path_a.append(st_a)
    path_b.append(st_b)
plt.plot(path_a, label = 'stock A', linewidth = 2)
plt.plot(path_b, label = 'stock B', linewidth = 2)
plt.legend()
plt.title('Correlated Stock Movement Using Monte Carlo Simulation')
plt.ylabel('stock price')
plt.xlabel('steps')*

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

用例 2:主成分分析

PCA 是一种无监督的线性降维算法,将原始变量转化为这些独立变量的线性组合。它将整个数据集投影到不同的特征空间,在该空间中,它可以对解释数据最大差异的维度进行优先排序。机器学习实践者利用 PCA 通过降低低方差维度来降低计算复杂度,以及创建更好的可视化。

PCA 和协方差方差是怎么联系起来的? 特征分解

就像乔莱斯基分解一样,特征分解是一种更直观的矩阵分解方式,通过使用矩阵的特征向量和特征值来表示矩阵。特征向量被定义为当对其应用线性变换时仅由标量改变的向量。如果 A 是表示线性变换的矩阵, v 是特征向量,λ是对应的特征值。可以表示为 vv. 一个正方形矩阵可以有和它的维数一样多的特征向量。如果把所有的特征向量作为矩阵 V 的列,把相应的特征值作为对角矩阵 L 的元素,上述方程可以推广到 AV = VL。在协方差矩阵的情况下,所有的特征向量彼此正交,它们是新特征空间的主分量。****

参考资料:

  1. https://skymind.ai/wiki/eigenvector#code
  2. https://blog.csdn.net/thesnowboy_2/article/details/69564226
  3. https://datascienceplus . com/understanding-the-协方差矩阵/

3 个决策树分裂标准背后的简单数学

原文:https://towardsdatascience.com/the-simple-math-behind-3-decision-tree-splitting-criterions-85d4de2a75fe?source=collection_archive---------3-----------------------

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

Image by Bela Geletneky from Pixabay

🌀理解分割标准

决策树很棒,对各种任务都很有用。它们构成了业界大多数性能最佳的模型的主干,如 XGboost 和 Lightgbm。

但是它们到底是如何工作的呢?其实这是 ML/DS 面试中被问得最多的问题之一。

我们通常知道它们以逐步的方式工作,并且有一个树形结构,在这个结构中,我们根据某种标准使用某种特征来分割一个节点。

但是这些特征是如何被选择的,一个特定的阈值是如何被选择的呢?

在这篇文章中,我将谈论决策树中使用的三个主要分裂标准以及它们为什么有效。这是一个已经被反复提及但从未真正做得足够好的东西。

1.基尼杂质

根据维基百科,

Gini 杂质是一种度量,用于衡量从集合中随机选择的元素被错误标记的频率,前提是根据子集中的标签分布对其进行随机标记。

简单来说,基尼杂质就是一个节点 中杂质的 度量。它的公式是:

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

其中 J 是节点中存在的类的数量,p 是节点中类的分布。

为了更好地理解这个公式,让我们具体讨论一下二进制的情况,其中我们的节点只有两个类。

因此,在下面五个标有 A-E 的候选节点示例中,显示了正类和负类的分布,哪一个是理想状态?

我想你会说 A 或 E,你是对的。最糟糕的情况是什么?我认为在这个节点上数据正好是 50:50。

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

现在,这一切看起来很好,直觉上。基尼系数给了我们一个量化的方法。

让我们分别计算所有五个节点的基尼系数,并检查这些值。

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

✅基尼不纯的作品如预期的那样。节点 C 的最大值以及 A 和 e 的最小值。我们需要选择具有最小 Gini 杂质的节点。

我们还可以看到二元情况下的基尼系数图来验证上述情况。

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

Gini Impurity

❓So:我们如何在决策树中准确地使用它?

假设,我们有 UCI 心脏病的数据。“目标”字段是指患者是否存在心脏病。它是 0(不存在)或 1。

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

我们现在已经有了一个衡量标准(基尼系数),我们可以用它来评估一个特定变量在某个阈值(连续的)或值(分类的)上的分裂。

分类变量拆分

为了简单起见,让我们从一个分类变量开始——性别。

如果我们按性别划分,我们的树将如下所示:

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

If we split on Gender

注意我们用 Sex =0 和 Sex!=0,因此这可以很好地推广到具有多个级别的类别。我们的根节点有 165 +ve 的例子和 138 -ve 的例子。当我们按性别分开时,我们得到两个子节点。

我们已经知道如何计算一个节点的杂质。所以我们计算左孩子和右孩子的杂质。

I_Left = 1 - (72/96)**2 - (24/96)**2
I_Right = 1 - (93/207)**2 - (114/207)**2print("Left Node Impurity:",I_Left)
print("Right Node Impurity:",I_Right)
---------------------------------------------------------------
Left Node Impurity: 0.375
Right Node Impurity: 0.4948540222642302

我们这里有两个数字。我们需要得到一个单一的数字来提供单一分裂的杂质。那我们该怎么办?我们应该取一个平均值吗?我们可以取一个平均值,但是如果一个节点只有一个例子,而另一个节点有所有其他的例子,会发生什么呢?

为了减轻上述影响,我们采用了两种杂质的加权平均值,该平均值由单个节点中的样本数进行加权。在代码中:

gender_split_impurity = 96/(96+207)*I_Left + 207/(96+207)*I_Right
print(gender_split_impurity)
----------------------------------------------------------------
0.45688047065576126

连续变量分割

我们也可以用连续变量来分割。让我们尝试使用数据集中的胆固醇特征进行分割。我们选择了 250 的阈值并创建了一棵树。

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

I_Left = 1 - (58/126)**2 - (68/126)**2
I_Right = 1 - (107/177)**2 - (70/177)**2print("Left Node Impurity:",I_Left)
print("Right Node Impurity:",I_Right)
---------------------------------------------------------------
Left Node Impurity: 0.49685059208868737
Right Node Impurity: 0.47815123368125373

只看两者接近 0.5 的杂质,就可以推断不是好的拆分。尽管如此,我们还是像以前一样计算加权基尼系数:

chol_split_impurity = 126/(126+177)*I_Left + 177/(126+177)*I_Right
print(chol_split_impurity)
---------------------------------------------------------------
0.48592720450414695

chol_split_impurity > gender_split_impurity开始,我们根据性别进行划分。

事实上,我们评估了很多不同的拆分。对于连续变量有不同的阈值。以及分类变量的所有级别。然后选择在子节点中为我们提供最低加权杂质的分裂。

2.熵

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

Entropy == Randomness

另一种非常流行的在决策树中分割节点的方法是熵。熵是系统中随机性的度量。熵的公式是:

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

其中 C 是节点中存在的类的数量,p 是节点中类的分布。

再次讨论我们之前讨论过的二元情况。从 A 到 E 的所有 5 个案例的熵值是多少?

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

熵值按预期工作。节点 C 最大,A 和 e 最小。我们需要选择熵最小的节点。

我们也可以看到二元情况下的熵图来验证上述情况。

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

Entropy

那么我们如何在决策树中使用熵呢?

我们像以前一样使用心率示例。我们现在已经有了一个合适的度量(熵),使用它我们可以评估一个个体变量在某个阈值(连续的)或值(分类的)上的分裂。

分类变量拆分

为了简单起见,让我们从一个分类变量开始——性别。

如果我们按性别划分,我们的树将如下所示:

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

If we split on Gender

我们已经知道如何计算一个节点的随机性。所以我们计算左孩子和右孩子的随机性。

E_Left = -(72/96)*np.log2(72/96) - (24/96)*np.log2(24/96)
E_Right = -(93/207)*np.log2(93/207) - (114/207)*np.log2(114/207)print("Left Node Randomness:",E_Left)
print("Right Node Randomness:",E_Right)
---------------------------------------------------------------
Left Node Randomness: 0.8112781244591328
Right Node Randomness: 0.992563136012236

我们这里有两个数字。我们需要得到一个单一的数字来提供单次分裂的随机性。那我们该怎么办?我们再次采用加权平均,其中我们根据单个节点中的示例数量进行加权。在代码中:

gender_split_randomness = 96/(96+207)*E_Left + 207/(96+207)*E_Right
print(gender_split_randomness)
----------------------------------------------------------------
0.9351263006686785

连续变量分割

和之前一样,我们也可以用连续变量来分割。让我们尝试使用数据集中的胆固醇特征进行分割。我们选择阈值 250 并创建一棵树。

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

E_Left = -(58/126)*np.log2(58/126) - (68/126)*np.log2(68/126)
E_Right = -(107/177)*np.log2(107/177) - (70/177)*np.log2(70/177)print("Left Node Randomness:",E_Left)
print("Right Node Randomness:",E_Right)
---------------------------------------------------------------
Left Node Randomness: 0.9954515828457715
Right Node Randomness: 0.9682452182690404

只看两者都接近 1 的随机性,就可以推断不是好的分裂。尽管如此,我们还是像以前一样计算我们的加权熵:

chol_split_randomness = 126/(126+177)*E_Left + 177/(126+177)*E_Right
print(chol_split_randomness)
---------------------------------------------------------------
0.9795587560138196

chol_split_randomness > gender_split_randomness开始,我们根据性别进行拆分。和我们从基尼得到的结果完全一样。

3.差异

基尼系数和熵在分类场景中表现得相当好。

但是回归呢?

在回归的情况下,最常用的分割度量就是节点的加权方差。这也是有意义的:我们希望分割后节点的变化最小。

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

我们需要一个回归任务。所以,我们有 50 家创业公司的数据,我们想预测利润。

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

分类变量拆分

让我们尝试按分类变量进行拆分州=佛罗里达。

如果我们按 State=FL 进行分割,我们的树将如下所示:

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

总方差就是单个方差的加权和:

overall_variance = 16/(16+34)*Var_Left + 34/(16+34)*Var_Right
print(overall_variance)
----------------------------------------------------------------
1570582843

连续变量分割

和之前一样,我们也可以用连续变量来分割。让我们尝试使用数据集中的 R&D 支出功能进行拆分。我们选择了 100000 的阈值并创建了一棵树。

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

Splitting on R&D

只要看看这个,我们就能看到它比我们之前的分裂要好。因此,我们找到了这种情况下的总方差:

overall_variance = 14/(14+36)*419828105 + 36/(14+36)*774641406
print(overall_variance)
----------------------------------------------------------
675293681.7199999

自从有了overall_variance(R&D>=100000)< overall_variance(State==FL),我们更喜欢基于 R & D 的拆分

继续学习

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

如果你想了解更多关于数据科学的知识,我想调出吴恩达的这个 精品课程 。这是我开始的原因。一定要去看看。

谢谢你的阅读。将来我也会写更多初学者友好的帖子。在 媒体 关注我或者订阅我的 博客 了解他们。一如既往,我欢迎反馈和建设性的批评,可以通过 Twitter @mlwhiz 联系。

此外,一个小小的免责声明——在这篇文章中可能会有一些相关资源的附属链接,因为分享知识从来都不是一个坏主意。

简单而实用的数据清理代码

原文:https://towardsdatascience.com/the-simple-yet-practical-data-cleaning-codes-ad27c4ce0a38?source=collection_archive---------5-----------------------

为了解决混乱数据的常见情况

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

在我的一篇文章— 我的第一个数据科学家实习中,我谈到了数据清理(数据预处理、数据管理……无论是什么)是多么重要,以及它如何能够轻易地占据整个数据科学工作流程的 40%-70%。世界是不完美的,数据也是。

垃圾进,垃圾出

真实世界的数据是脏的,我们作为数据科学家,有时也称为数据清理者,应该能够在任何数据分析或模型构建之前执行数据清理,以确保最高的数据质量。

长话短说,在数据科学领域呆了一段时间后,我确实感到在处理数据分析、可视化和模型构建之前进行数据清理的痛苦。

不管你承认与否,数据清理并不是一件容易的事情,大多数时候是耗时且乏味的,然而这个过程太重要了,不容忽视。

如果你经历过这个过程,你就会明白我的意思。这也正是我写这篇文章来帮助您以更流畅的方式执行数据清理的原因。

为什么这篇文章对你很重要?

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

My recent post on LinkedIn

一周前,我在 LinkedIn 上发帖,询问并回答了一些有抱负的数据科学家和数据科学专业人士面临的紧迫问题。

如果你一直在关注我的工作,我的任务是通过在 LinkedIn 上发起有抱负的数据科学家、数据科学家和其他不同专业知识和背景的数据专业人士之间的讨论,使 LinkedIn 上的共享学习环境民主化,特别关注数据科学。如果你想参与这些关于数据科学有趣话题的讨论,请随时关注我的 LinkedIn。您会惊讶于数据科学社区的参与度和支持度。😊

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

所以我在评论里得到了几个有趣的问题。然而,有一个由 Anirban 发布的特殊问题,我最终决定写一篇文章来回答这个问题,因为我不时地收到类似的问题。

事实上,不久前我意识到,当涉及到数据清理时,一些数据有类似的模式。这是我开始组织和编译一些数据清理代码的时候,我认为它们将适用于其他常见场景——我的数据清理小工具箱

因为这里的常见场景跨越不同类型的数据集,所以本文更侧重于展示和解释这些代码的用途,以便您可以轻松地即插即用。

在本文的最后,我希望您会发现这些代码很有用,并且会使您的数据清理过程更快、更有效。

我们开始吧!

我清理数据的小工具箱

在下面的代码片段中,出于不言自明的目的,代码是用函数编写的。您总是可以直接使用这些代码,而无需将它们放入参数稍有变化的函数中。

1.删除多列

有时,并不是所有的列都对我们的分析有用。因此,df.drop可以方便地根据您的指定删除所选的列。

2.更改数据类型

当数据集变大时,我们需要转换dtypes以节省内存。如果你有兴趣学习如何使用 Pandas 处理大数据,我强烈建议你看看这篇文章— 为什么以及如何使用 Pandas 处理大数据

3.将分类变量转换为数值变量

一些机器学习模型要求变量采用数字格式。这时,我们需要在将分类变量输入模型之前,将它们转换成数值变量。就数据可视化而言,我建议保留分类变量,以便有更明确的解释和理解。

4.检查丢失的数据

如果您想检查每一列的缺失数据的数量,这是最快的方法。这使您可以更好地了解哪些列丢失的数据较多,从而决定您下一步的数据清理和分析操作。

5.删除列中的字符串

可能有一段时间你会面对新的行字符或者其他出现在字符串列中的奇怪符号。使用df['col_1'].replace可以很容易地解决这个问题,其中col_1是数据帧df中的一列。

6.删除列中的空白

当数据混乱时,一切皆有可能。在字符串的开头有一些空格是很常见的。因此,当您想要删除列中字符串开头的空格时,这种方法很有用。

7.用字符串连接两列(带条件)

当您希望有条件地将两列与字符串组合在一起时,这很有帮助。例如,如果第一列中的字符串以某些字母结尾,您希望将第一列与第二列连接起来。根据您的需要,结尾字母也可以在连接后删除。

8.转换时间戳(从字符串到日期时间格式)

在处理时间序列数据时,我们很可能会遇到字符串格式的时间戳列。这意味着我们可能必须将字符串格式转换为日期时间格式——根据我们的需求指定的格式——以便使用数据进行有意义的分析和演示。

最后的想法

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

(Source)

感谢您的阅读。

这些代码本质上实现起来相对简单。我希望这个数据清理的小工具箱能让你更有信心执行数据清理,并根据我的经验从更广阔的角度了解数据集通常是什么样子。

一如既往,如果您有任何问题或意见,请随时在下面留下您的反馈,或者您可以随时通过 LinkedIn 联系我。在那之前,下一篇文章再见!😄

关于作者

阿德蒙德·李 目前是东南亚排名第一的商业银行 API 平台 Staq 的联合创始人/首席技术官。

想要获得免费的每周数据科学和创业见解吗?

你可以在 LinkedInMediumTwitter脸书上和他联系。

[## 阿德蒙德·李

让每个人都能接触到数据科学。Admond 正在通过先进的社交分析和机器学习,利用可操作的见解帮助公司和数字营销机构实现营销投资回报。

www.admondlee.com](https://www.admondlee.com/)

简单而实用的数据可视化代码

原文:https://towardsdatascience.com/the-simple-yet-practical-data-visualization-codes-bca99971cdb2?source=collection_archive---------10-----------------------

解决绘图和 EDA 的常见情况

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

在上一篇文章中,我分享了关于我的数据清理小工具箱,在此之前,我意识到一些代码适用于最常见的混乱数据场景。

换句话说,有一种模式(或一种方法),通常用于数据科学中的数据清理,我将它们编译成函数,以便将来重用。

有趣的是,在我看来,这种“模式”在探索性数据分析(EDA)中也会被注意到,尤其是在数据可视化的情况下。我认为这篇文章有必要在这里分享我的代码和解释,以造福他人。

记得几个月前我发表了一篇文章——关于电子商务数据的探索性数据分析?在那篇文章中,我谈到了 EDA 在数据科学中的重要性,以及如何以更简单的方式探索和可视化数据,从而为您或潜在的利益相关者提供有意义的见解。

为了理解您的数据并与利益相关者交流结果,数据可视化对于让数据有故事可讲(讲故事)至关重要。

因为这里的常见场景跨越不同类型的数据集,所以本文更侧重于展示和解释代码以及绘图的用途,以便您可以在项目中轻松地即插即用。

在这篇文章的最后,我希望你会发现这些代码很有用,它们会让你的数据可视化过程更有趣、更快速、更有效!

我们开始吧!

数据集背景

在整篇文章中,我们将使用从 Kaggle 获得的电子商务数据集进行数据可视化(关于数据的更多详细信息可以在这里找到)。

简而言之,这些数据由来自不同国家的客户的交易数据组成,这些客户从一家位于英国的在线零售公司购买独特的全场合礼品

下面的代码实际上可以根据您的需要进行一些小的调整,推广到其他数据集。

这里的目标是向您展示在给定一些通用数据集的情况下,我通常如何执行数据可视化。此外,代码绝不是一个详尽的汇编,以涵盖所有类型的阴谋,但他们应该基本上足以让你开始。

这里显示的数据也经过了一些数据清理,以便我们可以直接使用它,并专注于数据可视化。如果你想知道数据清理是如何完成的,你可以随时参考之前写的这篇文章

这个数据可视化的 Jupyter 笔记本和干净的数据已经上传到我的 GitHub

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

Snapshot of how the data looks like

鉴于我们处理的是典型的电子商务数据,每一列都非常简单明了。让我们看看我们能做些什么来可视化这些数据!

我的数据可视化小工具箱

1.箱线图—单价

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

Boxplot for unit price of the items

这里的单价是指每个项目的价格。在电子商务世界中,我们对单价的传播很好奇,以了解其价格的分布。

我们使用 Seaborn 来绘制箱线图(这是我最喜欢的工具之一!)只有一行代码,其余的只是为了标记的目的。从图中我们看到,大部分单价低于 800 美元,最高单价可达 8000 美元以上。很好。让我们进行下一步。

2.分布图—销售数量

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

Distribution plot of quantity sold

同样,我们使用 Seaborn 来绘制分布图。在这种情况下,我们只考虑销售量(小于 100),因为这是大部分数据所在的位置。

我们看到大多数商品的销售量都在 30 以内。酷毙了。销售到各个国家的订单数量呢?

3.水平条形图

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

Bar chart of the number of orders for different countries

由于在线零售公司的总部设在英国,所以英国的订单数量最多也就不足为奇了。因此,为了在其他国家之间进行更有意义的比较,我们有意忽略了这个国家。

现在你可能已经注意到,dataframe.groupby在绘制由一些分类变量分组的连续变量时非常有用。

您甚至可以直接从数据帧中绘图,而不必使用matplotlib。使用垂直条形图还是水平条形图取决于您的需求。在这种情况下,我们选择了水平条形图,以更清晰的方式显示每个国家的名称。

我们将在下一节看到如何使用垂直条形图。

4.垂直条形图(带注释)

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

Number of orders for different days

带注释的竖条图来了。有时,我们可能希望显示一个带有百分比注释的垂直条形图,以显示某些变量所占的部分。

在我们的上下文中,我们希望知道不同日期的订单数量,并查看它们各自的百分比以获得更多的见解。

上面附加了一个代码示例,向您展示如何在不影响视觉效果的情况下在同一个绘图中标注百分比。

5.条形图和折线图(组合)

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

Combined bar chart and line plot to show the total amount spent for different months

最后,我们想知道客户每月的总消费金额(或总销售额)。

在某个时间点,我们可能还想知道当前元素和先前元素之间的百分比变化。在这种情况下,我们可以制作一个折线图,以了解从上个月到本月的百分比变化——全部在一个图中。

明智而谨慎地使用这种组合图,因为这可能会使信息过多的人感到困惑。同样,组合情节的可用性取决于情况和需要。

最后的想法

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

(Source)

感谢您的阅读。

数据可视化不过是讲故事。谁是你的观众?你希望你的观众从可视化中获得什么?要执行的可操作的洞察是什么?

我希望这个数据可视化的小工具箱能在某些方面帮助你。

如果你有兴趣学习如何可视化数据和讲故事来抓住观众的注意力并有效地传达你的想法,我强烈建议你看看这本书——《用数据讲故事:商业人士数据可视化指南》。

一如既往,如果您有任何问题或意见,请随时在下面留下您的反馈,或者您可以随时通过 LinkedIn 联系我。在那之前,下一篇文章再见!😄

关于作者

Admond Lee 目前是东南亚排名第一的商业银行 API 平台Staq**—**的联合创始人/首席技术官。

想要获得免费的每周数据科学和创业见解吗?

你可以在 LinkedInMediumTwitter脸书上和他联系。

[## 阿德蒙德·李

让每个人都能接触到数据科学。Admond 正在通过先进的社交分析和机器学习,利用可操作的见解帮助公司和数字营销机构实现营销投资回报。

www.admondlee.com](https://www.admondlee.com/)

使用 Pandas & Matplotlib 的最简单的数据科学项目

原文:https://towardsdatascience.com/the-simplest-data-science-project-using-pandas-matplotlib-9d7042e7ce6f?source=collection_archive---------6-----------------------

多年来亚马逊森林大火

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

Photo by Markus Spiske on Unsplash

我们如此努力地寻找完美的数据集来测试和提高我们的技能。但事实是,没有一个数据集是完美的。通过对数据进行预处理,你可以使它变得完美,或者至少改进它——这是任何数据相关项目的重要部分。

所以,只要拿起任何数据集并开始工作!我尝试了一下,旅程充满了乐趣和学习。

以下所有代码都是在 Jupyter Notebook 中实现的。

我得到了一个巴西森林火灾的数据集(来自 Kaggle ),那里有地球上最大的雨林——亚马逊雨林。我不想挑剔,所以这个数据集完全是随机选择的。

关于数据:

year是森林火灾发生的年份;
state是巴西的州;
month是森林火灾发生的月份;
number是报告的森林火灾数量;
date是报告森林火灾的日期

  • 浏览 csv 文件(amazon.csv),您会注意到有些numbers是十进制的。2.588 起森林火灾说不通。这是因为小数是千的格式。所以,2.588 意味着 2588 次森林火灾。这在读取 csv 文件时很容易解释。
  • 您还会注意到month列是葡萄牙语的。这个问题也即将得到解决。
  • 下载后第一次导入文件时,出现错误:UnicodeDecodeError: 'utf-8' codec can't decode byte in position : invalid continuation byte。为了解决这个问题,我在 Sublime Text 中打开了 csv 并:用编码保存- > UTF-8。但是,这导致了date列中的错误。于是,我干脆把原来的 csv 打开,导出为 csv。很奇怪,但很有效。

进口:

对于这个项目,我使用virtualenv建立了一个虚拟环境。检查这个帖子的所有步骤。我们使用三个主要的库:pandasmatplotlibgoogletrans
!pip3 install这些包(如果你还没有)在导入它们之前。

import sys
sys.path.insert(1, './lib/python3.7/site-packages')
import pandas as pd
import googletrans
import matplotlib.pyplot as plt; plt.rcdefaults() 

完成sys.path.insert步骤是为了确保虚拟环境的站点包目录包含在系统路径中。在这个 python 虚拟环境帖子中了解更多。

读取数据:

确保amazon.csv在您的工作目录中。

data = pd.read_csv("amazon.csv", thousands = '.')

thousands = "."参数弥补了十进制格式。

查看数据:

data.shape

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

data.shape

data.head()

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

data.head()

data.describe(include= "all")

给出了一个很好的数据总结。例如所有列的计数、每列中出现的最高值(如果适用)及其频率。

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

data.describe(include = “all”)

检查是否有任何缺失值:

data.isna().sum()

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

data.isna().sum()

没有吗?太好了!

将数据集分成更小的子集:

我的第一个想法是想象几年来,几个月来森林火灾的数量。你需要能够识别出大局中的小部分。

让我们从数据集中删除与森林火灾数量无关的行。因此,必须删除 number 列值为 0 的任何行。我们首先将 0 转换为 NaN,然后删除特定列number中带有 NaN 的行。

data = data.replace(0, np.nan)
data2 = data.dropna(subset=['number'])

我们的数据集现在从 6454 行减少到 5837 行。

data2.describe(include= "all")

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

data2.describe(include=”all”)

创建数据子集:

forest_fire_per_month = data2.groupby('month')['number'].sum():按月对数据分组,并对数字求和。输出的是一个熊猫系列。

print(forest_fire_per_month):我们注意到结果是按字母顺序排列的。为了将其恢复到每月订单,我们使用 dataframes 的reindex属性:

forest_fire_per_month = forest_fire_per_month.reindex(months_unique, axis=0) 

在哪里,

months_unique = list(data.month.unique())

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

months_unique

接下来,我们通过forest_fire_per_month = forest_fire_per_month.to_frame()将序列转换成数据帧

forest_fire_per_month.head()

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

forest_fire_per_month.head()

这看起来不对劲。这是因为month被认为是数据帧的索引。
设置默认指标:
forest_fire_per_month.reset_index(level=0, inplace=True)

forest_fire_per_month.head()

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

forest_fire_per_month.head()

输入googletrans:

googletrans是一个实现 Google Translate API 的 python 库。我在months_unique上测试过。

translator = Translator() ***#create an object of Translator*** for month in months_unique: 
    detected = translator.detect(month)     
    translated = translator.translate(month)     
    print(detected)     
    print(translated)     
    print("...")

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

Output for detected and translated month

返回的Translator()对象的成员变量:

  • src —源语言(默认:自动)
  • dest —目标语言(默认:en)
  • 原点—原始文本
  • 文本—翻译的文本
  • 发音——发音

这些变量可以使用.操作符单独访问。

例如:translated.text将输出翻译后的英文文本。

我们使用Translator的实例将forest_fire_per_month中的month列翻译成英语。

translator2 = Translator() ***#create a new object of Translator. #cannot use the one defined before as that contains the latest #month’s calculated value***for i, m in enumerate(forest_fire_per_month['month']):
    translated = translator2.translate(m)  
    month1 = translated.text    
    forest_fire_per_month.at[i, 'month'] = month1

enumerate()函数为 iterable 对象中的每一项分配一个索引,该索引可用于以后引用该项。
Python 中常用enumerate()函数代替for循环。这是因为enumerate()可以迭代一个条目的索引,以及条目本身。

print(forest_fire_per_month)

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

forest_fire_per_month

除了一个案例之外,它对所有案例都有效!

剧情:

让我们用条形图来表示它。

plt.figure(figsize=(25, 15)) ***#specify width and height*** ***#plt.bar(x-values, y-values)*** plt.bar(
forest_fire_per_month['month'],
forest_fire_per_month['number'], 
color = (0.5,0.1,0.5,0.6)) ***#use*** ***.suptitle*** ***for the actual title and .title for the subheading***plt.suptitle('Amazon Forest Fires Over the Months', fontsize=20) plt.title('Using Data from Years 1998 - 2017', fontsize=20)  plt.xlabel('Month', fontsize=20) 
plt.ylabel('Number of Forest Fires', fontsize=20)***#plt.text(x-coordinate, y-coordinate, valueOfText, alignmnet)******#this adds text at the top of each bar indicating its value***for i, num in enumerate(forest_fire_per_month['number']):
    plt.text(
        i,
        num + 10000,
        num,
        ha='center',
        fontsize=15) ***#plt.setp is to set a property on an artist object.
#plt.gca() gets the current axes (gca) instance on the current figure #matching the given keyword args.
#xticklabels and yticklabels are nothing but the values of the #lables on the x and y axis.
#The code below lets us set the fontsize and alignment of the x and #y axis tick labels***plt.setp(plt.gca().get_xticklabels(),
         rotation=45,
         horizontalalignment='right',
         fontsize=20)plt.setp(plt.gca().get_yticklabels(), fontsize=20)

输出:

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

Output bar graph

这是一个非常小的文档,说明了可以用这个数据集做什么。你只需要开始。而且这个过程充满了学习新东西。

因此,只需下载一个随机数据集并开始行动!

超级有用的资源:

  • [googletrans](https://www.codeproject.com/Tips/1236705/How-to-Use-Google-Translator-in-Python)
  • [enumerate()](https://www.bitdegree.org/learn/python-enumerate)进行循环
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值