TowardsDataScience 博客中文翻译 2020(九百九十五)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

有 5 种数据科学家

原文:https://towardsdatascience.com/who-the-hell-is-a-rockstar-data-scientist-fe349d90df5e?source=collection_archive---------31-----------------------

你是哪一个?

在这篇文章中,我将分享在行业中存在的被称为“数据科学家”的角色,并揭露 rockstar 数据科学家的要求。

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

Unsplash猎人赛跑的照片

随着公司开始了解其业务流程的数据科学产品生命周期,对这些角色和职责的期望也在不断变化。

我经常听说,我也是一名数据科学家。但是,我的工作和其他拥有同样头衔的人有什么完全不同呢?

让我们揭穿角色并说出他们的名字!

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

Rohit FarmerUnsplash 上拍摄的照片

我非常喜欢这个职业的一点是,一个人不能仅仅是统计学家、快速程序员或实验模型师。这个角色需要多种技术和软技能,同时偏向于动作。这说起来容易做起来难——然而,这正是企业似乎在利用的东西,而且是在不知不觉中。

以下是一个人可能成为的样子:

万金油,独一无二的大师!

没有数据科学路线图的公司想要什么:

万金油,万金油!

根据我过去的经历、面试和工作机会,我将数据科学家分为五类。

  1. 黑客数据科学家
  2. 分析师数据科学家
  3. 研究科学家
  4. 机器学习工程师
  5. 客户数据科学家

而且,出于科学的仁慈,不可能一个人适合所有类型的角色。

让我们开始深入研究每一个问题。

黑客数据科学家

创业公司通常需要黑客。通常,他们会寻找以下技能:

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

真社Unsplash 上拍摄的照片

技能

  1. API Web 开发:Flask,RestFul,计算机网络
  2. 数据工程:SQL,MongoDB,Pandas
  3. 数据建模:Tensorflow、Pytorch、OpenCV
  4. 云:AWS、EC2、谷歌计算引擎、Docker

根据定义,你知道什么是黑客,在一个有很多头衔的创业环境中,这些技能的价值是显而易见的。他们是黑客科学家,从更特别的角度出发,致力于数据科学及其端到端的管道。相信我,他们会尽情享受的!

职业道路

数据科学家→高级数据科学家→首席数据科学家→首席数据科学家→数据科学主管

分析数据科学家

这个角色更多的是分析大数据,并从这些数据中获得洞察力,而不是专注于建模。如果你对寻找答案和探索数据分析的深度更感兴趣,这些角色是你会喜欢的。有些角色可能很少甚至没有模特。

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

活动发起人Unsplash 上的照片

技能

  1. 数据分析:Tableau 动力 BI;熊猫
  2. 数据工程:SQL、Postgres 蜂巢;PySpark
  3. 数据建模:Scikit-learn
  4. 数据演示:PowerPoint、仪表板、Excel

职业道路

数据分析师→高级数据分析师→分析主管→首席分析官→首席数据官

研究科学家

数据科学家更多的是一个专业角色,迎合业务解决方案和需求。但是,如果你期待将你最疯狂的人工智能算法想法带入生活,并且总的来说想要突破界限,你可能会进入研究。

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

万花筒Unsplash 上拍摄的照片

研究数据科学家深入研究算法,创造新的算法,发表论文,或许攻读博士学位,摆脱炒作,开始创造新的算法!

技能

  1. 数据基础:统计,概率,微积分,几何
  2. 作品集:论文、出版物和会议
  3. 研究:ML/DL 算法的深度和广度是必须的

职业道路

副研究员→研究科学家→高级研究员→研究主管

机器学习工程师

最常见的是机器学习中的软件工程。该角色更倾向于部署和提供可扩展的机器学习功能。

技能

  1. 必备基础知识:数据结构、算法
  2. 数据建模:内部 ML/DL 算法的工作
  3. 执行:能够轻松编码/优化 ML 算法

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

卢克·皮特斯在 Unsplash 上拍摄的照片

职业道路

机器学习工程师→ SDE 二代→ SDE 三代→数据科学经理→工程总监

客户数据科学家

客户数据科学家精通数据科学的营销艺术,能够成功地将这些能力转化为业务对话,并能够引导客户了解他们真正需要的是什么。

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

LinkedIn 销售导航员Unsplash 上的照片

为了将人工智能作为一种附加值来提供,人们不仅需要了解算法,还需要了解可行性和生存能力,让企业欣赏人工智能产品可以提供的东西,并了解市场适合度。

技能

  1. 数据分析:Tableau,Pandas,SQL
  2. 商业智能:软技能、谈判技巧
  3. 销售&营销:锁定目标、追踪线索和留住人才

职业道路

这个领域比较新,所以我还没有看到很多这方面的职业道路。但是,这个角色肯定倾向于商业方面。

客户数据科学家→助理顾问→高级顾问→销售/营销总监

结论

正如你所看到的,一个可以广泛归类为“数据科学家”的头衔有着更多的细微差别和复杂性。所以,对于所有那些寻找 rockstar 数据科学家的人来说——不要,因为他们不存在。

虽然有些人可能声称他们是,或者他们已经找到了,这很好! 有点妄想可以健康

[## 为什么一点点自欺欺人是件好事

人们很少看到比极端自欺欺人更痛苦的事情。想想绝望的调情者…

www.inc.com](https://www.inc.com/jessica-stillman/why-a-little-self-delusion-is-a-good-thing.html)

来自各种背景的数据科学家,他们创造了我们这个时代这个令人兴奋的行业,在专门研究他们都喜欢的东西的同时,教这些机器自己学习——已经足够摇滚明星了。

接下来呢?

希望这篇文章能帮助你理解行业的期望和科学家们公开的数据类型。

如果你是一名有抱负的数据科学家,或者希望在职业生涯中有所转变,请告诉我。请随时联系我的邮件,我会确保回复所有的邮件。继续下去。记住,

你已经是 摇滚明星 了!

给谁打电话?分类项目

原文:https://towardsdatascience.com/who-to-call-a-classification-project-with-a-twist-e2577482d176?source=collection_archive---------50-----------------------

添加业务场景,为建模赋予意义

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

帕万·特里库塔姆Unsplash 上拍摄的照片

“我们将在周一开始电话营销活动,并有 500 个电话的预算。我们应该联系谁来实现收入最大化?”

在这种情况下,XYZ 银行通过收购一家较小的银行吸纳了 2000 名新客户,但由于资源和预算的限制,只能联系到其中的 500 名。利用来自 XYZ 银行现有客户群的数据和针对现有客户的活动结果,我的目标是确定 500 名客户中应该联系的客户,以实现收入最大化,并为未来的活动提供建议。

商业价值

成功的订户转化为 XYZ 银行的收入。根据领域知识,我们估计订阅的价值为 100 美元。总的来说,我们知道这类营销活动的使用率很低,成功致电的比例约为 10–15%。因此,通过随机联系 500 名客户,我们预计收入在 5,000 美元到 7,500 美元之间。

但是,通过使用预测分析和仔细选择 500 个客户,我们证明了可以为 XYZ 银行创造更多收入。

**剧透:通过使用 XGBoost 分类器,我们能够将收入增加到 14,500 美元。**请继续阅读,找出答案。

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

照片由米歇尔·亨德森Unsplash 上拍摄

我选择保持高层次的解释,但是一定要检查我的 GitHub 库来查看我的 Jupyter 笔记本中的详细分析和代码。还有一个面向利益相关方的执行摘要演示

获取数据

本项目使用的数据是来自 UCI 机器学习库的著名银行营销数据集。我的第一步是做一个测试训练分割和分离 2000 个条目,它们将代表 2000 个新客户。

此后,我只剩下 39,000 多个数据点和 20 个预测特性,包括:

  • 个人属性(年龄、工作、教育水平等。)
  • 金融(住房贷款、个人贷款等。)
  • 活动(以前的活动结果、联系方式等。)
  • 经济指标(消费者信心指数、euribor3m 等。)

干净的数据

数据集基本上是干净的,所以这一步比预期的要快。分类数据中有一些用“未知”表示的缺失值。在第一个实例中,我选择用模式替换它们,然后通过使用来自sklearn的 K-最近邻估算器来改进我的工作。

浏览和可视化数据

不出所料,存在明显的阶层失衡,只有 11%的客户订阅定期存款。为了对此进行调整,我使用了 SMOTE(合成少数过采样技术。)

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

目标阶层失衡

我还研究了各种特性的订阅率。下面显示了一个使用 job 属性的示例。

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

工作类别中的订阅率

学生或退休的客户更有可能选择定期存款。

定义评估指标

在建模之前,考虑如何评估性能是很重要的。

当模型预测客户不会订阅(target = no)而事实上他们会订阅时,就会出现假阴性。这是非常有害的,因为 XYZ 银行将损失潜在收入。因此,我需要确保我们的模型预测的假阴性最小化。另一方面,当模型预测客户会订阅(target = yes)而实际上他们不会订阅时,就会出现误报。在这种情况下,我们浪费了一个电话的费用。在这种情况下,假阴性比假阳性更糟糕。

准确性是最直接的衡量标准,简单定义为观察总数中正确预测的数量。然而,考虑一个简单地预测每个客户“不”的无技能模型。基于不平衡的类别分布,该模型将实现 88%的准确度分数。因此,具有高精度的模型并不意味着有用或高性能的模型。此外,即使我们对类别不平衡进行了调整,准确性仍然将相同的权重分配给假阳性和假阴性,这不是我们想要的。

Recall 计算真实观察值(真阳性和假阴性)中准确预测值(真阳性)的数量。我的目标是高召回值,因为这样可以最小化假阴性。

最后,我定义了一个具体的利润指标,它考虑了预期收入和看涨期权的成本。如果你对此感兴趣,我再次邀请你在我的 GitHub 上查看完整的项目。

造型

我们训练了以下分类算法:逻辑回归、决策树、K-最近邻、朴素贝叶斯、支持向量分类、Adaboost、梯度推进和 XGBoost。在没有任何超参数调整的情况下,基于树的算法过度适应训练集。然后我们调整我们的模型,并使用RandomizedSearchCV.进行交叉验证

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

根据我们的利润指标,我们选择 XGBoost 作为我们表现最好的模型。我们使用穷举GridSearchCV进一步调优了 XGBoost 分类器,以找到最佳的超参数选择。

释义

选择模型后,我将它与整个训练集相匹配,并在测试集上生成预测。为了回答我的具体问题,我查看了类别概率,并选择了与类别 1(订阅)关联的概率最高的前 500 个数据点。)这些细节已经交给了营销团队。

事实证明,在所选的 500 名客户中,有 145 名客户实际上认购了定期存款(实际目标值),产生了 14,500 美元的收入。

我还研究了特征的重要性,看看哪些属性对预测有最大的影响。前 5 名如下:
1。雇员人数(代表经济状况的季度指标)2。消费者信心指数 3。客户是否有大学学历
4。客户的工作是否属于管理类别
5。客户是否离婚。

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

Austin DistelUnsplash 上拍摄的照片

现在你知道了。我希望你觉得这篇文章很有趣。我鼓励你在数据科学项目中创建假设场景,因为这会带来更有趣的体验。它还能让你看到企业如何从你的预测模型中获益。

谁赢得了意甲联赛:进攻 Vs 防守

原文:https://towardsdatascience.com/who-wins-the-serie-a-league-attack-vs-defence-a48128e71e22?source=collection_archive---------35-----------------------

赢得意甲联赛,进攻和防守哪个更重要?数据驱动的答案。

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

马文·朗斯多夫(左)和安东尼诺·维萨利(右)在 Unsplash 上拍摄的照片

答几天前我结束了应用绘图,在 Python 课程中绘制&数据表示,这是密歇根大学 Coursera 上应用数据科学与 Python 专业的第二个课程。

为了完成本课程,我们被要求分析一个特定的领域和国家。以下是描述:

这项作业要求你在网上找到至少两个相关的数据集,并想象这些数据集来回答一个关于意大利地区运动和田径的问题。

您必须陈述一个关于您认为感兴趣的领域类别和区域的问题。

你必须创造一个视觉效果来解决你陈述的研究问题。除了解决问题,这个视觉应该遵循开罗的真实,功能,美丽和洞察力的原则。

让我们来看一下我完成作业的步骤。

这个问题

首先,有必要提出一个有趣的问题来回答。
想到体育意大利这两个词,你会想到什么?

足球

像大多数意大利人一样,我是一个足球迷。所以我决定一劳永逸地找到这项运动中最常被问到的一个问题的答案:

赢得意甲联赛,进攻和防守哪个更重要?

现在我们有了目标(对,目标!),我们需要数据。

获取数据

我做了一些研究来寻找一个适合我的数据集,但是我没有立即找到我要找的东西。在没有进一步研究的情况下,我认为自己收集数据可能是一个很好的练习。

我需要什么?对我来说,有过去几年,比如说 20 年的联赛决赛,有进球和失球的统计数据就足够了。

所以我寻找冠军的历史档案,最后,我选择了 legaseriea.it 。他们有每年意甲的决赛表,它包含在一个 HTML <表> 中。

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

2018–19 意甲联赛积分榜,前 10 位。来自 legaseriea.it

在检查了网页源代码之后,我想到了这个脚本。

我不会详细解释这个刮刀的代码,但是如果你感兴趣,我在本文中做了一个类似的 web 刮刀的教程。

[## 用 Python 实现简单的 Web 抓取

黑色星期五就要到了,一如既往,你会在等待的同时不断刷新你想要的商品页面…

levelup.gitconnected.com](https://levelup.gitconnected.com/simple-web-scraping-with-python-1692c11e3b1a)

使用美汤请求,刮刀负责从网页中收集信息并将其写入 csv 文件中。

通过重复过去 20 个赛季的过程,我们得到了我们所需要的。我们的数据集诞生了。

探索性数据分析

现在,我们终于可以打开 Jupyter 笔记本,开始加载数据集了。用 20 个数据帧工作肯定不方便。最好的办法是把它们结合起来,一起工作。

首先,我们添加一个“赛季”列,以便于区分冠军的年份,我们以后会用到它。然后我们可以继续连接。

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

好了,现在我们的数据框架准备好了,我们可以停下来思考一下。

我们有每支球队的进球(F)和失球(S)数据。这可以让我们了解一支球队的攻防实力。足球中常用的一个在单一维度上表示这两个特征的统计量就是 净胜球 ,即这两个因素的差值。我们把它作为一个新的专栏(GD)添加进来吧。

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

好的,要回答这个问题,我们必须把注意力集中在联赛中获胜的球队上。让我们创建一个名为获胜者的新数据框架,只包含过去 20 年中获胜的球队。

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

随着时间的推移,这些团队的目标差异发生了怎样的变化?

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

目标差异趋势

正如我们从图表中看到的,获胜球队的净胜球随着赛季的推移而增加。这可能是由于:

  • 进球数量的增加
  • 失球减少
  • 以上两者

因此,这些因素中哪一个是决定性的?让我们看看进球和失球的趋势。

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

进球数(蓝色)和失球数(橙色)趋势

似乎进球数增加了,失球数减少了。有意思。这意味着各队在进攻和防守上都有所提高。

但是这两个因素哪个对最后的胜利更有决定性呢?我们还没有回答这个问题。为了找到答案,我们必须首先确定每年获胜的球队是否拥有联盟中最好的防守和/或最好的进攻。

通过按赛季对原始数据帧进行分组,我们可以创建一个新的数据帧,它具有两个布尔列 BA(最佳进攻)和 BD(最佳防守)。此时,我们只需将这个数据帧与获胜者合并,就可以得到最终的数据帧。

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

这个数据框架包含了我们正在寻找的答案。让我们通过创建最终视觉来直接找出答案。

形象化

这个想法是把两种情节叠加起来。

首先,一个简单的线图显示了每年获胜球队的净胜球数(如前所述)。然后,用散点图来表示球队是以联盟的最佳防守获胜,还是以联盟的最佳进攻获胜,或者两者兼而有之。

正如作业中所指定的,视觉应该遵循 Cairo 的真实、功能、美丽和深刻的原则。考虑到这一点,我做了一些调整,使视觉符合这些原则,这就是结果。

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

答案

图像清楚地给出了我们问题的答案。

拥有强大的防守似乎是最终胜利的关键。

从上图可以看出,在过去 20 年的**、**即 75% 的时间里,获胜的球队拥有联盟中最好的防守,包括:

  • 8 次,只有最好的防守(蓝点)
  • 7 次最佳进攻和最佳防守(绿点)

在过去的 20 年中,只有 5 次(1999-00,2000-01,2003-04,2005-06,2006-07)冠军没有联盟中最好的防守。此外,在过去连续 12 年的比赛中,获胜的球队总是拥有最好的防守。

虽然肯定不是唯一的,但良好的防守似乎是赢得冠军的关键因素。如果你想更深入,寻找其他有趣的模式,你可以在 Kaggle 上找到这个数据集。

资源

谢谢你走了这么远!作为一个初学者,收到反馈对我来说很重要,所以如果你有任何反馈,请在评论中告诉我。

安吉洛

谁赢得了超级星期二的媒体报道。基于数据

原文:https://towardsdatascience.com/who-won-super-tuesdays-media-coverage-based-on-data-157221b59fcc?source=collection_archive---------33-----------------------

我们分析了从 2020 年 3 月 1 日到 2020 年 3 月 7 日所有提到美国 2020 年候选人的在线媒体文章,以检查谁最受媒体关注

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

安迪·菲利西奥蒂在 Unsplash 上拍摄的照片

Politwire ,我们监测并分析媒体对政治家的报道。我们帮助政治活动、企业和媒体公司了解政治家的媒体之路。

民主党超级星期二

2020 年 3 月 3 日,美国 14 个州举行初选。大约有三分之一的代表参与其中。你可能已经知道,乔·拜登比伯尼·桑德斯多获得了大约 100 张代表票,重新领先。

尽管乔·拜登最终胜出,但这是否让他在媒体报道中大幅领先?

在上图中,我们可以看到超级星期二这一周每一天每个候选人的文章数量。拜登和桑德斯很接近,即使在超级星期二的结果之后,乔·拜登的关注度也只是稍微高一点。

尽管唐纳德·特朗普主导了媒体报道,但他是美国现任总统,如果他不是第一个,那才奇怪。

没有媒体偏见?

乍一看,2020 年美国总统候选人的媒体份额似乎是公平分布的。

我们得到的主要假设是,最有可能的是乔·拜登和伯尼·桑德斯总是一起出现——这些文章中的大部分可能都是关于民主党候选人的,而唐纳德·川普有“他的新闻”。

独一无二的文章是只提到一个候选人,而没有提到另外两个人中的任何一个的文章。

唐纳德·特朗普一半的文章都没有提到民主党提名人。看看他的底线有多高。

媒体存在的独特性是最重要的跟踪指标之一。无论是对总统候选人还是对企业来说,在竞争对手不出现的地方拥有自己的媒体份额是至关重要的。

唐纳德·特朗普是媒体的宠儿吗?

也许不会,即使唐纳德·特朗普是媒体存在的领导者,这些提及可能没有那么有用。

分离数据的一种方法是调查阳性文章的比例。

正比率的计算方法是将带有肯定语气的文章数除以所有文章数。

根据所有文章,乔·拜登和伯尼·桑德斯的正比率都超过了唐纳德·川普。

此外,拜登和桑德斯是相关的,因为绝大多数文章是相同的。因此,我们应该对独特文章的语气更感兴趣。

分析独特文章的正比率,我们可能会注意到两个主要的见解:

  1. 唐纳德·特朗普——每 10 篇独特的文章中,就有 1 篇文章的整体基调是积极的
  2. 甚至在超级星期二之前,乔·拜登的成绩也比伯尼·桑德斯好

然而,唐纳德·特朗普的 10%足以在绝对值上击败民主党候选人。

获胜者是…

不是伯尼·桑德斯。不是那个星期。

尽管如此,乔·拜登在他的重要胜利(也许是最重要的一次)后并没有得到任何异常的关注。

唐纳德·特朗普不是失败者。不管是因为他的总统职位还是因为媒体“喜欢”他,事实是他的名字是最常被听到的。

关于作者

我们是政治网,我们刚刚开始写关于 2020 年总统选举的报道。

我们有仪表盘,你可以在那里看到过去七天的结果。它是实时更新的。

此外,我们在 twitter 上发布了最近 24 小时的更新:

订阅我们的时事通讯,以防你想收到媒体报道数据分析的每周摘要。

最初发表于 Politwire 博客

如果你的数据科学迷失在翻译中,你会找谁?

原文:https://towardsdatascience.com/who-you-gonna-call-if-your-data-science-is-lost-in-translation-1df9829b7b8f?source=collection_archive---------35-----------------------

随着大量数据科学家进入就业市场,分析翻译将成为新的热门角色

曾经有一位业务主管,回家时总是感到困扰和心烦意乱。一天晚上,他的搭档问他:“怎么了?你在担心什么。”。“数据太多了”,他回答道,“我无法理解,也无法理清头绪。”“你可以试着雇佣一个数据科学家”,他的合伙人建议道。所以他就这么做了。六个月后,他仍带着不安回家,当他的搭档再次询问发生了什么事时,他回答说:“有这么多数据,我不明白我的数据科学家在告诉我什么”。

毫无疑问,这是一个日益严重的问题。随着数据科学在组织和企业中变得越来越重要,以及近年来越来越多的数据科学家被聘用,人们越来越感觉到数据科学家和运营业务领导者之间的沟通存在差距。这种差距是严重的。这阻碍了数据科学家对他们的工作产生影响,也阻碍了业务领导意识到他们的数据科学家的价值。这种良性循环可能会导致双方的沮丧和消极情绪,以及对数据科学是否如其所吹捧的那样的怀疑。

这个问题的解决方案是分析翻译,这种人了解业务及其实际决策需求,但也对分析感兴趣,有很强的沟通技能,并对数据科学家做什么以及他们如何做足够了解,因此很危险。这不仅仅是我在喝最新的库尔 Aid!我是凭经验说的——我一直与分析翻译密切合作,我不知道没有他们我该怎么办。我充满信心地预测,这个角色将是分析领域的下一个重要角色。

为什么需要翻译人员?

首先,如果你是一名数据科学家,你不应该把这当成对你技能的批评。它们稀有而重要,但风险在于它们没有影响力,因此没有得到应有的重视。以下是我认为数据科学家没有发挥其在企业和组织中的潜在影响的一些常见原因。我称这些挑战为三是:

  1. 数据科学家通常不熟悉他们的工作环境,对于他们被要求解决的业务问题,他们不具备 本能——这种本能只能来自于在业务中长时间的扎根。这意味着他们不能完全理解他们的输出如何对他们的利益相关者有用,并且他们经常没有人帮助他们思考这个问题。这可能导致利益相关者实际上无法理解或实施的产出。
  2. 数据科学家通常没有太多的 兴趣 花费大量时间思考业务实现。他们的热情是方法论和技术,他们从让事情运转和产生结果中得到乐趣。如果他们不得不花一半的时间开发幻灯片和参加会议,他们中的许多人会对自己的工作非常失望,他们的进度会慢很多。
  3. 数据科学家通常没有足够的 绝缘 来应对业务的日常需求,以便有时间有效地练习他们的技能。如果没有适当的保护,他们可能会很快被任务或问题淹没,其中许多任务或问题可以由一个有能力的报告分析师来解决。他们通常是业务新手,积累的个人资本有限,在确定工作优先级方面没有支持,他们只是花时间试图阻止那些不真正了解自己工作的人的随机工作流。

是什么造就了一个伟大的翻译家?

解决三个 I 告诉我们许多关于一个伟大的分析翻译者的特征:

  1. 他们应该来自这个行业——或者非常相似的行业——这样他们就有了来自经验的 本能 。数据科学家和他们的翻译伙伴之间的大部分对话涉及讨论方法和输出的选项,数据科学家提供关于什么是可能的信息,翻译提供关于什么是有用的判断。
  2. 他们应该享受在企业中完成事情的刀光剑影和政治,以及随之而来的沟通和影响过程。他们以前可能担任过咨询或运营的角色。但是他们应该对数据及其如何推动更好的决策有兴趣,对方法论和科学有热情。
  3. 他们应该有很强的能力来制定优先事项并与利益相关者达成一致,并积极主动地确保免受其他干扰。他们应该能够快速确定其数据科学家合作伙伴的独特技能,并帮助应对没有利用这些技能的工作需求。

因此,无论您是一名不懂数据科学的高管,还是一名不懂管理的数据科学家,都只能通过引入正确的分析翻译来实现。在它们被抢购一空之前,你可能想现在就行动起来!

最初我是一名纯粹的数学家,后来我成为了一名心理计量学家和数据科学家。我热衷于将所有这些学科的严谨性应用到复杂的人的问题上。我也是一个编码极客和日本 RPG 的超级粉丝。在 LinkedIn Twitter上找我。

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

图片来自《迷失在翻译中》(2003)——由聚焦功能提供

星巴克应该向谁发送产品?

原文:https://towardsdatascience.com/whom-should-starbucks-send-offerings-to-a-predictive-analysis-on-customer-behaviour-ce82fc87a8a0?source=collection_archive---------48-----------------------

对客户行为的预测分析

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

@ Unsplash

商业理解

每隔几天,星巴克就会向手机应用程序的用户发出一次报价。优惠可以仅仅是饮料的广告,也可以是实际的优惠,如折扣BOGO(买一送一),或者仅仅是包含产品信息的信息性优惠。某些用户可能在特定的几周内收不到任何优惠。通过这种方式,星巴克很可能可以增加顾客在收到报价后打开报价并最终完成交易的可能性。星巴克希望分析客户行为,了解哪种类型的客户会打开优惠并完成交易?

问题陈述

我们有兴趣回答以下两个问题:

1.应该向特定客户发送哪种报价才能让该客户购买更多?
2。接受报价的客户有什么共同特征吗?

问题解决方法

  • 数据探索数据可视化每个投资组合、配置文件和交易数据。
  • 预处理 (清洗&转换)数据和特征工程形成一个组合的主数据集
  • 对清洗后的预处理数据应用数据分析
  • 缩放数字特征。
  • 使用监督学习模型了解哪些客户受到产品的影响。经过训练的分类模型会将客户分类为目标类别(如果客户会响应,则为 1;如果客户不会响应,则为 0)
  • 评估模型使用准确度、f-beta 分数、训练时间。准确度和精确度是分类问题中的常见度量。评估将展示准确性(正确预测占预测总数的比率)。根据指标和培训时间选择最佳性能模型。
  • 模型调优使用 GridSearchCV 寻找最佳超参数(以提高所选模型的性能)。
  • 计算训练模型的最佳估计器给出的特征重要性
  • 在测试集上计算最佳模型的性能。

数据集描述

数据包含在三个文件中:

  • portfolio.json —包含要约 id 和关于每个要约的元数据(持续时间、类型等)。)
  • profile.json —每个客户的人口统计数据
  • 抄本. json —“交易”、“收到的报价”、“查看的报价”和“完成的报价”的记录

以下是文件中每个变量的模式和解释:

portfolio.json

  • id(字符串)—优惠 id
  • offer_type (string) —优惠的类型,如 BOGO、折扣、信息
  • 难度(int)——完成一项提议所需的最低花费
  • 奖励(int) —奖励是为完成一项提议而给予的
  • duration(int)-要约开放的时间,以天为单位
  • 频道(字符串列表)

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

profile.json

  • 年龄(整数)—客户的年龄
  • 成为会员日期(int) —客户创建 app 帐户的日期
  • 性别(str) —客户的性别(请注意,有些条目包含“O”代表其他,而不是 M 或 F)
  • id (str) —客户 id
  • 收入(浮动)—客户的收入

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

转录本. json

  • 事件(str) —记录描述(即交易、收到的报价、查看的报价等。)
  • 人员(字符串)—客户 id
  • time (int) —测试开始后的时间,以小时为单位。数据开始于时间 t=0
  • value —(字符串字典)—报价 id 或交易金额,具体取决于记录

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

星巴克希望将优惠数据、客户数据和交易数据(运营数据)联系起来,以获得关于客户行为的见解以及优惠作为商业价值的整体有效性。

数据探索

投资组合数据描述

年龄、收入和性别分布

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

年龄分布图表明,客户的平均年龄为 60 岁,大多数客户属于 40 至 70 岁之间的年龄范围。顾客工资的平均值在 6 万英镑左右。性别分布表明更多的顾客是男性。

每年和每月加入星巴克的顾客人数

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

每年加入的客户分布表明,每年加入的客户数量随着时间的推移而增加。在寒冷季节后期,特别是在(八月、十月、十二月、一月)顾客会员增加,这可能与更多的顾客在寒冷天气喝更多的咖啡有关。

按成员年份分列的性别分布

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

性别:1(女性)、2(男性)和 3(其他)

上面的图表显示,与前几年相比,更多的男性成为了星巴克的会员,而前几年的会员性别分布是平等的。

客户收入分配

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

星巴克女性顾客的平均收入高于男性顾客。

概要数据描述

**#** *Plot distribution of ages in profile dataframe* profile[‘age’].value_counts().sort_index(ascending=**True**).plot.bar(figsize=(20,8), fontsize=12,color=’teal’); plt.xlabel(‘Age’, fontsize=18) plt.ylabel(‘Count’, fontsize=18) plt.title(‘Distribution of age counts’, fontsize=18) plt.show()

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

年龄为 118 岁的客户似乎是一个异常值,其中年龄为 118 岁的客户数量为 2175,这是不现实的,将从数据框架中删除。

*#Gender counts* 
profile.gender.value_counts()

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

成绩单数据描述

*# Calculate the percentage of unique values in event feature* round((transcript[‘event’].value_counts()/transcript[‘event’].value_counts().sum())*100,2)

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

数据预处理

清理投资组合数据:

  • 将 id 列名重命名为 offer_id。
  • 缩放和标准化列难度和奖励
  • 将时间功能从天转换为小时
**#** *renaming 'id' column to offer_id.* portfolio.rename(columns={'id':'offer_id'},inplace=**True**) *# Initialize a scaler, then apply it to the features* 
scaler = MinMaxScaler() *# default=(0, 1)* columns_to_scale = ['difficulty','reward'] portfolio[columns_to_scale] = scaler.fit_transform(portfolio[columns_to_scale]) *# Convert time feature from days to hours* portfolio['duration_hour'] = portfolio['duration']*24 *# Drop duration and channels* portfolio.drop(columns=['duration'],axis=1, inplace=**True**) portfolio

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

清理配置文件数据:

  • 将 id 列名重命名为 customer_id。
  • 将年龄值 118 编码为 NaN。
  • 在成为成员列中创建可读的日期格式。
  • 删除没有性别、收入、年龄数据的行
  • 将性别值转换为数字 1、2 和 3。
  • 将年龄和收入从 float 转换为 int
  • 添加开始年份和开始月份列
  • 添加一个新列“membership_days”,该列将显示自客户成为会员以来的天数
  • 创建新列“member_type”
#rename id col name to customer_id.
profile.rename(columns={‘id’:’customer_id’},inplace=True)#encode age value 118 to NaN
profile[‘age’] = profile[‘age’].apply(lambda x: np.nan if x == 118 else x)#create readable date format for became_member_on column.
profile.became_member_on = profile[‘became_member_on’].astype(str).astype(‘datetime64[ns]’, format = “%Y%m%d”)# dropping rows with NaNs in ‘age’, ‘gender’ and ‘income’ columns
profile.dropna(inplace=True)#encode gendr column
profile[‘gender’] = profile[‘gender’].map({‘F’: 1, ‘M’: 2, ‘O’: 3})#add start_year column
profile[‘start_year’] = profile.became_member_on.dt.year
profile[“start_month”] = profile.became_member_on.dt.month# changing the datatype of ‘age’ and ‘income’ columns to ‘int’
profile[[‘age’,’income’]] = profile[[‘age’,’income’]].astype(int)# adding a new column ‘membership_days’ ,that will present the number of days since the customer become a member
profile[‘membership_days’] = datetime.now() — profile[‘became_member_on’]# removing the ‘days’ unit
profile[‘membership_days’] = profile[‘membership_days’].dt.days# creating a new column ‘member_type’ representing the type of the member: new, regular or loyal depending on the number of his ‘membership_days’
profile[‘member_type’] = pd.cut(profile[‘membership_days’], bins=[390, 1000, 1600, 2500],labels=[‘new’, ‘regular’, ‘loyal’])# Drop channels and offertype column
profile.drop(columns=[‘became_member_on’,’membership_days’ ],axis=1, inplace=True)# Re-arranging the columns to have ‘customer_id’ column the first column in dataset
profile = profile.reindex(columns=[‘customer_id’, ‘age’, ‘gender’, ‘income’, ‘start_year’, ‘start_month’, ‘member_type’])

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

清理抄本数据:

迭代 value 列,用列表中的值更新 offer_id、amount、reward 列。

**def** cleaning_transcript(transcript):
    *'''*
 *data cleaning the transcript dataframe, return usable dataframe need contain offer events*

 *INPUT:*
 *transcript - the transcript dataframe to be cleaned*

 *OUTPUT:*
 *transcript - the cleaned offer dataframe*

 *'''*
    *#Change name of feature person to customer_id in transcript dataframe*
    transcript.rename(columns={'person': 'customer_id'}, inplace=**True**)

    transcript['offer_id'] = ''
    transcript['amount'] = 0
    transcript['reward'] = 0  
    *#Iterate over value column, check it and update offer_id, amount, reward columns*
    **for** idx, row **in** transcript.iterrows():
        **for** k **in** row['value']:
            **if** k == 'offer_id' **or** k == 'offer id': *# b/c 'offer_id' and 'offer id' are representing the same thing*
                transcript.at[idx, 'offer_id'] = row['value'][k]
            **if** k == 'amount':
                transcript.at[idx, 'amount'] = row['value'][k]
            **if** k == 'reward':
                transcript.at[idx, 'reward'] = row['value'][k]

    *# Drop event_transaction since they cause missing values in 'order id' column* 
    transcript = transcript[transcript['event'] != 'transaction']
    *# Drop value column*
    transcript.drop(columns=['value'], axis = 1, inplace = **True**)

    **return** transcript

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

主数据集的数据探索

*# merge 'cleaning_transcript' dataset with 'profile' on 'offer_id'*
master_df = cleaning_transcript_df.merge(portfolio,how='left',on='offer_id')*# join 'master_df' dataset with 'portfolio' on 'customer_id'*
master_df = master_df.merge(profile,how='left',on='customer_id')

每个年龄组最受欢迎的优惠是 BOGO(买一送一)

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

女性和男性顾客更喜欢 BOGO 和打折商品

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

女性顾客比男性顾客更容易受到产品的影响

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

女性完成了约 75%的所查看的报价,而男性完成了 58%的所查看的报价。

常客(3-4 年会员)在会员类型中完成了更高范围的产品

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

Number of offer completed by Female: 15477, 74.46% of total offers viewed.
Number of offer viewed by Female: 20786.
Number of offer completed by Males: 16461, 58.17% of total offers viewed.
Number of offer viewed by Males: 28297.

完成一个报价的平均时间是 17 天

# excluding all events of ‘offer received’, just focus on offer viewed or offer completed
copy_master_df = master_df[master_df[‘event’] != ‘offer received’]
copy_master_df = copy_master_df[copy_master_df[‘event’] != ‘transaction’]
avg_time_spent_offer = copy_master_df.groupby([‘gender’, ‘offer_id’])[‘time’].mean().reset_index()print(avg_time_spent_offer[avg_time_spent_offer[‘gender’] == 1][‘time’].values[0] / 24)
print(avg_time_spent_offer[avg_time_spent_offer[‘gender’] == 2][‘time’].values[0] / 24)16.9176908752
16.8785739814

将分类值转换为数值

# OneHotEncoding feature ‘offer type’
master_df = pd.get_dummies(master_df, columns = [‘offer_type’], prefix= ‘’, prefix_sep=’’)

# OneHotEncoding feature ‘event’
master_df = pd.get_dummies(master_df, columns = [‘event’], prefix= ‘’, prefix_sep=’’)

# Change column names
master_df.rename(columns = {‘offer received’:’offer_received’,
 ‘offer viewed’:’offer_viewed’,
 ‘offer completed’:’offer_completed’}, inplace=True)

# One-hot encode channels
master_df[‘web’] = master_df[‘channels’].apply(lambda x: int(1) if ‘web’ in x else int(0))master_df[‘email’] = master_df[‘channels’].apply(lambda x: int(1) if ‘email’ in x else int(0))master_df[‘mobile’] = master_df[‘channels’].apply(lambda x: int(1) if ‘mobile’ in x else int(0))master_df[‘social’] = master_df[‘channels’].apply(lambda x: int(1) if ‘social’ in x else int(0))# Drop channels column
master_df.drop(columns=[‘channels’], axis = 1, inplace = True)# creating a new column representing the income group to which the customer belongs master_df[‘income_range’] = pd.cut(master_df[‘income’], bins=[29999, 60000, 90000, 120001],labels=[‘average’, ‘above-average’, ‘high’])# replacing the ‘income_range’ categorical labels by numerical labelslabels_income_range = master_df[‘income_range’].astype(‘category’).cat.categories.tolist()
replace_map_comp_income_range = {‘income_range’ : {k: v for k,v in zip(labels_income_range,list(range(1,len(labels_income_range)+1)))}}
master_df.replace(replace_map_comp_income_range, inplace=True)#replacing the ‘member_type’ categorical labels by numerical labelslabels_member_type = master_df[‘member_type’].astype(‘category’).cat.categories.tolist()
replace_map_comp_member_type = {‘member_type’ : {k: v for k,v in zip(labels_member_type,list(range(1,len(labels_member_type)+1)))}}
master_df.replace(replace_map_comp_member_type, inplace=True)#replacing the ‘offer_id’ categorical labels by numerical labelslabels_member_type = master_df[‘offer_id’].astype(‘category’).cat.categories.tolist()
replace_map_comp_member_type = {‘offer_id’ : {k: v for k,v in zip(labels_member_type,list(range(1,len(labels_member_type)+1)))}}
master_df.replace(replace_map_comp_member_type, inplace=True)# replacing the ‘age_group’ categorical labels by numerical labelslabels_age_group = master_df[‘age_group’].astype(‘category’).cat.categories.tolist()
replace_map_comp_age_group = {‘age_group’ : {k: v for k,v in zip(labels_age_group,list(range(1,len(labels_age_group)+1)))}}# replace categorical labels in ‘age_group’ column with numerical labelsmaster_df.replace(replace_map_comp_age_group, inplace=True)

数据建模

六种不同的机器学习模型将预测客户是否会对报价做出反应。在建立模型之前,我们的数据集应该分为训练和测试数据集,并选择了一些功能和目标表。

特征: time_h,offer_id,金额,奖励,难度,duration_hour,age_group,bogo,折扣,资讯,性别,member_type,income_range,web,email,mobile,social。

**目标标签:**报价 _ 已完成

# Split the data into features and target labelX = master_df[[‘time’,’offer_id’,’amount’,’reward’,’difficulty’, ’duration_hour’,’age_group’,’bogo’,’discount’,’informational’,’gender’, ‘member_type’,’income_range’,’web’,’email’,’mobile’, ‘social’]]Y = master_df[‘offer_completed’]

创建培训和预测渠道

  • [sklearn.metrics](http://scikit-learn.org/stable/modules/classes.html#sklearn-metrics-metrics)导入fbeta_scoreaccuracy_score
  • 使学习者适应采样的训练数据,并记录训练时间。
  • 对测试数据X_test,以及前 300 个训练点X_train[:300]进行预测。
  • 记录总预测时间。
  • 计算训练子集和测试集的准确性分数。
  • 计算训练子集和测试集的 F 值。
# Import two metrics from sklearn - fbeta_score and accuracy_score
from sklearn.metrics import fbeta_score, accuracy_scoredef train_predict(learner, sample_size, X_train, y_train, X_test, y_test): 
    '''
    inputs:
       - learner: the learning algorithm to be trained and predicted on
       - sample_size: the size of samples (number) to be drawn from training set
       - X_train: features training set
       - y_train: income training set
       - X_test: features testing set
       - y_test: income testing set
    '''

    results = {}

    # Fit the learner to the training data using slicing with 'sample_size' using .fit(training_features[:], training_labels[:])
    start = time() # Get start time
    learner.fit(X_train[:sample_size],y_train[:sample_size])
    end = time() # Get end time

    # Calculate the training time
    results['train_time'] = end-start

    # Get the predictions on the test set(X_test),
    # then get predictions on the first 300 training samples(X_train) using .predict()
    start = time() # Get start time
    predictions_test = learner.predict(X_test)
    predictions_train = learner.predict(X_train[:300])
    end = time() # Get end time

    # Calculate the total prediction time
    results['pred_time'] = start-end

    # Compute accuracy on the first 300 training samples which is y_train[:300]
    results['acc_train'] = accuracy_score(y_train[:300],predictions_train)

    # Compute accuracy on test set using accuracy_score()
    results['acc_test'] =  accuracy_score(y_test,predictions_test)

    # Compute F-score on the the first 300 training samples
    results['f_train'] = fbeta_score(y_train[:300],predictions_train,beta=0.5)

    # Compute F-score on the test set
    results['f_test'] = fbeta_score(y_test,predictions_test,beta=0.5)

    # Success
    print("{} trained on {} samples.".format(learner.__class__.__name__, sample_size))   
    # Return the results
    return results

初始模型评估

  • 初始化三个模型,并将它们存储在“clf_D”、“clf_E”和“clf_F”中。
# Initialize the three models
clf_D = LogisticRegression(random_state=42) 
clf_E = RandomForestClassifier(random_state=42)
clf_F = GradientBoostingClassifier(random_state=42)# Calculate the number of samples for 1%, 10%, and 100% of the training data
# samples_100 is the entire training set i.e. len(y_train)
# samples_10 is 10% of samples_100 (ensure to set the count of the values to be `int` and not `float`)
# samples_1 is 1% of samples_100 (ensure to set the count of the values to be `int` and not `float`)
samples_100 = len(X_train)
samples_10 = int(0.1 * samples_100)
samples_1 = int(0.01 * samples_100)# Collect results on the learners
results = {}
for clf in [clf_D, clf_E, clf_F]:
    clf_name = clf.__class__.__name__
    results[clf_name] = {}
    for i, samples in enumerate([samples_1, samples_10, samples_100]):
        results[clf_name][i] = \
        train_predict(clf, samples, X_train, y_train, X_test, y_test)# Run metrics visualization for the three supervised learning models chosen
vs.evaluate(results, accuracy, fscore)

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

模型调整

在这一部分,我们将选择最佳模型用于我们的数据,然后,执行网格搜索优化。

# Import 'GridSearchCV', 'make_scorer', and any other necessary libraries
from sklearn.grid_search import GridSearchCV
from sklearn.metrics import make_scorer# Initialize the classifier
clf = RandomForestClassifier(random_state = 1)parameters = {'n_estimators': [10, 50, 80],'max_depth': [None, 2, 3, 4],'min_samples_split': [2,3,4],'min_samples_split': [3],'min_samples_leaf': [1]}# Make an fbeta_score scoring object using make_scorer()
scorer = make_scorer(fbeta_score, beta=0.5)# Perform grid search on the classifier using 'scorer' as the scoring method using GridSearchCV()
grid_obj =  GridSearchCV(estimator=clf, param_grid=parameters, scoring=scorer, cv=None)# Fit the grid search object to the training data and find the optimal parameters using fit()
grid_fit = grid_obj.fit(X_train, y_train)# Get the estimator
best_clf = grid_fit.best_estimator_# Make predictions using the unoptimized and model
predictions = (clf.fit(X_train, y_train)).predict(X_test)
best_predictions = best_clf.predict(X_test)# Report the before-and-afterscores
print("Unoptimized model\n------")
print("Accuracy score on testing data: {:.4f}".format(accuracy_score(y_test, predictions)))
print("F-score on testing data: {:.4f}".format(fbeta_score(y_test, predictions, beta = 0.5)))
print("\nOptimized Model\n------")
print("Final accuracy score on the testing data: {:.4f}".format(accuracy_score(y_test, best_predictions)))
print("Final F-score on the testing data: {:.4f}".format(fbeta_score(y_test, best_predictions, beta = 0.5)))

未优化模型
在测试数据上的准确度分数:0.8021
在测试数据上的 F 分数:0.5381

优化模型
测试数据最终精度得分:0.8031
测试数据最终 F 值:0.5415

# Import a supervised learning model that has 'feature_importances_'
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier# Train the supervised model on the training set using .fit(X_train, y_train)
model_rforest = RandomForestClassifier().fit(X_train, y_train)# Extract the feature importances
importances_rforest = model_rforest.feature_importances_# Plot
print("Random Forest")
vs.feature_plot(importances_rforest, X_train, y_train)

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

在很大程度上影响客户是否会完成产品的最重要因素是会员资格的期限(时间)。顾客成为星巴克会员的时间越长,就越有可能对他们收到的优惠做出反应。然后,影响顾客反应可能性的第二和第三个重要因素是年龄和收入,这很有意义。此外,他们收到的录用通知的数量也会对回应产生很大影响。

# Prepare the dataframe of feature importances given to features by best estimator of RandomForest
feat_imp_df = pd.DataFrame(model_rforest.feature_importances_,\
                           index=X_train.columns.tolist(),\
                           columns=['feat_imp']).reset_index()feat_imp_df.rename(columns={'index': 'feature'}, inplace=True)
feat_imp_df['feat_imp_perc'] = np.round((feat_imp_df['feat_imp']/feat_imp_df['feat_imp'].sum())*100,2)
feat_imp_df = feat_imp_df.sort_values(by=['feat_imp_perc'], ascending=False).reset_index(drop=True)
feat_imp_df

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

特征选择和新模型测试性能

# Import functionality for cloning a model
from sklearn.base import cloneimportances = importances_ada
# Reduce the feature space
X_train_reduced = X_train[X_train.columns.values[(np.argsort(importances)[::-1])[:5]]]
X_test_reduced = X_test[X_test.columns.values[(np.argsort(importances)[::-1])[:5]]]# Train on the “best” model found from grid search earlier
clf = (clone(best_clf)).fit(X_train_reduced, y_train)# Make new predictions
y_pred = clf.predict(X_test_reduced)# Report scores from the final model using both versions of data
print(“Final Model trained on full data\n — — — “)
print(“Accuracy on testing data: {:.4f}”.format(accuracy_score(y_test, best_predictions)))
print(“F-score on testing data: {:.4f}”.format(fbeta_score(y_test, best_predictions, beta = 0.5)))
print(“\nFinal Model trained on reduced data\n — — — “)
print(“Accuracy on testing data: {:.4f}”.format(accuracy_score(y_test, y_pred)))
print(“F-score on testing data: {:.4f}”.format(fbeta_score(y_test, y_pred, beta = 0.5)))

未优化模型
在测试数据上的准确度分数:0.8031
在测试数据上的 F 分数:0.5415

优化模型
测试数据最终精度得分:0.8253
测试数据最终 F 值:0.6007

结论

分析表明,随机森林模型具有最好的训练数据准确性和 F1 值。分析表明,随机森林模型的测试精度为 0.82,F1 值为 0.6。会员资格的长短、年龄和收入等主要因素确实会影响顾客对报价做出反应的可能性。

男女都喜欢 BOGO 和打折商品,最好是 BOGO(买一送一)

女性顾客比男性顾客更容易受到产品的影响——女性顾客完成了他们所查看产品的 75%,而男性顾客完成了他们所查看产品的 58%。

57%的顾客是男性,女性占 41%。

常客(3-4 年会员)在会员类型中完成了更高范围的产品。

男性和女性都花了将近 17 天的时间来完成报价。

大多数成员是在 2017 年加入的。在寒冷季节后期,特别是在(八月、十月、十二月、一月)顾客会员增加,这可能与更多的顾客在寒冷天气喝更多的咖啡有关。

机器学习模型建议向秋冬期间在星巴克成为 3-4 名会员的高收入女性发送产品。

丰富

获得额外的特征将有助于提供更好的分类结果,因为我们仅限于例如年龄、性别和收入。

还可以对特征工程步骤进行改进,以查看是否有其他新特征要引入,并执行特征缩减方法,以查看它将如何影响模型性能。然而,特征维数减少在我们的例子中并不重要,因为我们没有那么多特征。

另一个改进是探索持续时间、奖励和难度的影响,以及它们如何影响报价响应和购买,并基于这些因素创建新功能。

最后,我们可以通过使用回归算法分析每个客户的消费金额来改进模型,以回答他们对报价的回应可能性有多大的问题,假设消费金额和对报价的回应之间可能存在相关性。

代码可以在这里找到。

谁是大骗子?

原文:https://towardsdatascience.com/whos-a-big-ol-fibber-b6b1259304db?source=collection_archive---------26-----------------------

一次从多个 Politifact 配置文件中找出意义,这是实际聚类分析中的一个练习

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

paweczerwi ski 在 Unsplash 上的照片

乖乖女的圣诞节!没错,我们四年一次的总统选举周期开始了。每四年,里面的政党举行一次形式上的加冕仪式,而外面的政党装满一辆小丑车进行全国巡演。除非第 22 修正案生效,否则这就是一场小丑赛车。

今年只有一辆小丑车,但马戏团已经拿出一大包来装满它。我们如何区分它们?有很多标准,你需要优先考虑你自己的。这通常包括研究,观看辩论,或者只是等待别人为你做决定。我将只处理“研究”角度的一个方面。与其用更多的废话来填充这篇文章,我将切入正题。我在比较 Politifact 记分卡。你可能已经知道什么是 Politifact 记分卡。

如果你不知道,Politifact 是一家报纸运营的在线“事实核查”实体。它对各种公共实体的声明进行六分制评级。因此,它有以下限制:它是“值得注意”的偏见。声明必须由政治上认为值得注意的人做出,而且声明本身必须有值得注意的来源和值得注意的重要性。由于 Politifact 没有无限的员工和预算,这意味着声明和故事会被忽略。因为决策是由人做出的,所以存在偏见。这背后没有恶意或议程。其次,它的评级包含一些偏见因素,尤其是当评级处于区间的中间时。这是不可避免的。有时需要做出判断。“裤子着火了”和“真实”很容易判断,但是当你处于中间时,可能会有些模糊。

然而,Politifact 对某个人的评价越多,我们对这个人的整体形象就越有信心。这是由于“中心极限定理”,该定理指出,从总体(陈述)中获得的样本(评级)越多,“模糊”元素相互抵消得越多。

但是,偏见问题对于利用 Politifact 档案来说并不是什么大不了的事情。是简介问题。我什么意思?大多数人似乎以一种精心挑选的方式使用 Politifact。他们会放大他们认为合适的特定规则。如果你的目标是研究具体问题,那*没什么不对。如果你的目标是对政治人物进行广泛的比较,那就大错特错了。当我们关注单个数据点时,我们让自己的情绪来驱动结论。如果政治家 A 对我们的一个个人热点问题说了一些令人讨厌的话,而那句令人讨厌的话恰好被裁定为“错误”,那么它会影响我们对政治家 A 的整体看法,而不管该政治家的其他历史。*

问题是

不幸的是,我们大多数人都不会硬连线比较个人资料,尤其是在选举前的一年,我们可能需要比较多个个人资料。看看这个:

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

这是特朗普先生、准民主党候选人(截至 2010 年 2 月 10 日)、彭斯先生和国会四名政党领导人的聚合 politifact 简介。误差棒是使用每个人的总裁定数作为“n”的比例的标准误差。条目按照从最多到最少的规则排序。举例来说,很容易一眼就看出特朗普先生与桑德斯先生不相似,但他们两人如何同时与沃伦女士相比较,以及如何同时与其他所有人相比较?

一个解决方案?

我们并不是天生就能通过查看多个个人资料来回答这些问题。幸运的是,有一种方法可以回答这些问题:集群。聚类有很多种类型。我不打算详细讨论所有这些问题。如果不熟悉,可以从这篇文章开始

我在本文中使用的类型称为层次聚类。我碰巧喜欢它,因为它链接了整个数据集,这使得很容易看到一个集群如何与另一个集群相关联。在我开始具体分析之前,我将切入正题,向您展示我的聚类分析的基本结果:

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

颜色对应于集群。有三个基本的集群,加上特朗普先生在他自己的现实世界里。共和党人的名字用下划线标出。我们得到了一些有趣的结果。南希·佩洛西和 Mssrs 是一类人。彭斯和麦卡锡。米奇·麦康奈尔和 Mssrs 是一类人。桑德斯、布蒂吉格、拜登和舒默,还有加巴德。你们中的一些人可能看着柱形图并不同意。,因为如果你把上面的聚类当成那个聚类,你就没有理解聚类的所有问题。

比宣传的还要乱!

这棵树是几种选择的结果。没有一种聚类形式是客观的。所有的聚类都要求原始信息的某些方面比其他方面更重要。结果受到这些选择的影响。我现在要脱光了。我将公开我所做的所有选择,以及它们可能如何改变输出。首先,为什么是四个集群?有各种各样令人困惑的方法来为层次聚类选择“最佳”数量的聚类。R 包" NbClust "有超过 30 个索引,它可以通过计算找到层次聚类中的“最佳”聚类数。对于给定的聚类,它们通常彼此不一致。我用了“肘法,基于“T6”聚类平方和。还有一些我没有提到的方法。

聚类通常从创建“距离矩阵”开始。这是所有数据点之间所有“距离”的集合。但什么是“距离”呢?这并不简单。通常我们说的“距离”是指“欧氏距离”。这是两点之间直线的长度。但是还有其他类型的“距离”。“城市街区”或“曼哈顿”的距离就是它听起来的样子。你也可以使用所谓的“相关距离”。我为上面的树选择的是“分数距离”。有很好的理由对超过三维的数据集使用分数距离。其他人对它们的解释比我好得多。我也做了选择来解释不确定性。档案中的规则越少,档案相对于实际人物与事实的关系就越不确定。为此,我简单地将原始距离矩阵除以标准误差。这并不复杂,但它确实意味着一个人的不确定性越大,他和其他人就越“亲近”。

如此遥远…

但是如果我们不使用分数距离呢?如果我们使用欧几里得距离、曼哈顿距离或相关距离会怎么样?这是什么:

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

不同距离方法的结果

他们彼此相似,但你可以看到不同之处。每种距离方法强调数据的不同方面。哪个是“真”的?这可能取决于数据。这也可能取决于您想要探索数据的哪些方面。例如,相关距离(1-相关系数)强调两个数据趋势之间的关系如何变化。

“错误”并不总是坏事。

你可能还记得,我说过我把不确定性粗略地融入了分析中。如果我没有呢?如果我简单地说“比例就是比例”,并(愚蠢地)假定 Politifact 数据的快照总是对人物的准确描述,会怎么样呢?这是如果:

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

不一样,不是吗?我们在这里看到了什么?我们看到了小样本对 Patrick,Steyer 和 Bennet 的影响。小样本意味着他们的原始数据是极端的。误差函数部分地照顾到了这一点,并使它们有更高的机会出现在先前树的其他聚类中。我们还看到了“垃圾聚类”效应,其中聚类算法无法清晰地分离样本,大多数样本最终聚集在一个大的聚类中。为什么我把这些树分成四簇?主要是为了与第一组树进行比较。

这些树不只是生长。

您会注意到,我谈到了距离度量,但没有提到我如何使用它们来构建树。这是因为我没有对任何一棵树使用单一的度量标准。相反,我用五种不同的方法计算了一棵共识树。为什么?在构建层次聚类树的许多不同方法中,哪种方法比其他方法更好还没有定论。所以我结合了几个互不违背对方假设的。

具体来说,我使用了“单个”、“ UPGMA ”、“完全”、“整除”、“ MiniMax ”的方法将数据链接起来(又名“链接方法”)。还有其他人,但他们有我不想处理的假设或缺点。例如,沃德的方法只有在使用平方欧几里得距离时才能正常工作。中值/中值/质心方法有可能产生负的分支长度。甚至我的思想也不去那里。

这些链接方法中的每一种都从相同的距离矩阵产生不同的树。如果我们输入用于创建第一棵树的分数距离度量,这是每个链接方法的输出:

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

有明显的不同,但也有相似之处。你会注意到,在大多数树中,特朗普先生是一个异数。佩洛西和彭斯在五棵树中的三棵树上成对出现。如果你看的话,你可以找到其他的相似之处。当达成共识时会发生什么?

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

回家了,回家了,吉吉吉吉!

打开引擎盖

虽然以上这些可能很可爱,但如果我不具体解释我是如何做到的,那就既没用也不道德。我的矩阵和树是我和 T2 一起做的。另外,我使用了protoclust代理线索包。我通过写一个脚本部分自动化了这个过程(如下)。平方和的聚类是使用旧 GMD 包中的脚本完成的。Cran 知识库不再支持 GMD。相反,你必须从 GitHub 手动添加它。

脚本的命令是Pol.Trees(ipnut, meth = "frac.dist", ErrAdj = TRUE, consensus = TRUE, frac.f = 2/3)

参数:

IP nut:count数据的数据框架或矩阵,类别为列名,主题为行名。

方法:距离矩阵生成法。可以尝试通过 base R 或 proxy 与 dist 函数一起使用的任何方法。此外,我在脚本中编写了一个名为“chi.dist”的校正“chi distance”。 警告: 慎用方法,有些零数据点的获取方式不靠谱。

ErrAdj:是否要包括误差调整。默认值为 TRUE。

共识:是否希望生成共识树。默认值为 TRUE。该树采用“phylo”格式。一个错误反而会生成树的线索集合。

frac.f:使用分数距离(frac.dist)时使用的默认分数。

我不得不承认一些事情:这个脚本不会安排和给树上色。他们会很光秃秃的。ape 中有一些命令可以处理这个问题。

这一切的意义是什么?

我为什么要写这个呢?你为什么要费心去读它?让我们面对现实吧,有很多情况下我们需要一次比较两个以上的东西,聚类是一个很好的方法。它以我们直观理解的方式直观地展示事物。也可以很好玩。当政治家的行为不符合政党路线时(如佩洛西-彭斯案),这就是一个发现。

这不会拯救世界,但它可能会帮助人们从太多的数据中找到意义。像 Politifact 这样的网站是有好处的,但是它们会把我们埋葬在数据中。聚类可以将数据转化为理解。

所以,去收集你自己的计数数据,和树一起玩吧。

Pol.Trees <- function(ipnut, meth = "frac.dist", ErrAdj = TRUE, consensus = TRUE, frac.f = 2/3){
#This computes and returns a consensus tree based on count data profiles (such as from Politifact). It presumes you are interested
#in comparing proportions, not raw counts. In addition, it automatically adjusts for uncertainty ("error") due to small counts. Even 
#then, I don't recommend having 4 or less total counts per subject.#The parameters are as follows:
    #ipnut: The count data set, wich subject names as the rownames
    #meth: Method to determine distance matrix, default is "frac.dist". WARNING: Not all methods will work properly. Recommended you
    #stick to manhattan, euclidean, frac.dist, chi.dist (both included here), or correlation. The proxy package is a little wonky with some other metrics.
        #Why manhattan distance and not euclidean? [https://bib.dbvis.de/uploadedFiles/155.pdf](https://bib.dbvis.de/uploadedFiles/155.pdf)
    #ErrAdj is whether to apply the error adjustment. Default is TRUE#Several libraries are needed for this script to function.

    library(ape)
    library(protoclust)
    library(cluster)
    library(proxy)
    library(clue)#This section creates then activates the "error adjustment" distance metric.    
    DistErrAdj <- function(x,y)
    {
        sing.err <- sqrt((x^2) + (y^2))
        sum(sing.err)
    }

    if (pr_DB$entry_exists("DistErrAdj") == TRUE)
    {
        pr_DB$delete_entry("DistErrAdj")
        pr_DB$set_entry(FUN = DistErrAdj, names = c("DistErrAdj"))
    }
    else
    {
        pr_DB$set_entry(FUN = DistErrAdj, names = c("DistErrAdj"))
    }

    #This section creates then activates the "fractional" distance metric. It uses a default f of 2/3, which can be altered with the frac.f input.
    frac.dist <- function(x, y, frac)
    {
        frac = frac.f
        sum(singfrac <- (abs(x - y) ^ frac) ^ 1/frac)
    }

    if (pr_DB$entry_exists("frac.dist") == TRUE)
    {
        pr_DB$delete_entry("frac.dist")
        pr_DB$set_entry(FUN = frac.dist, names = c("frac.dist"))
    }
    else
    {
        pr_DB$set_entry(FUN = frac.dist, names = c("frac.dist"))
    }

    #This section creates then activates a correction for the chi distance. The version in proxy generates negative distances.
    chi.dist <- function(x, y)
    {
        sqrt(sum(((x-y)^2)/(colsum/sum(colsum))))    
    }

    if (pr_DB$entry_exists("chi.dist") == TRUE)
    {
        pr_DB$delete_entry("chi.dist")
        pr_DB$set_entry(FUN = chi.dist, names = c("chi.dist"))
    }
    else
    {
        pr_DB$set_entry(FUN = chi.dist, names = c("chi.dist"))
    }

#Creating the proportions and errors for each data point.#This creates a consensus tree without bootstraps and does not automatically plot. It is the non-default. Use it if you want to have a tree
#to manipulate or annotate manually.
        x <- ipnut / rowSums(ipnut)
        q <- sqrt((x * (1 - x)) / rowSums(ipnut))
        colsum <- colSums(x)
        rawdist <- dist(x, method = meth)
        errs <- dist(q, method = "DistErrAdj") / if(ErrAdj == TRUE) {1} else {dist(q, method = "DistErrAdj")}
        findist <- rawdist / errs
        tr.ave = as.hclust(agnes(findist, diss = TRUE, method = "average"))
        tr.prot = protoclust(findist)
        tr.div = as.hclust(diana(findist, diss=TRUE))
        tr.single = as.hclust(agnes(findist, diss = TRUE, method = "single"))
        tr.comp = as.hclust(agnes(findist, diss = TRUE, method = "complete"))
        tr.ensemble <- cl_ensemble(tr.ave, tr.prot, tr.div, tr.single, tr.comp)
        tr.cons <- ladderize(as.phylo(as.hclust(cl_consensus(tr.ensemble))))if(consensus == TRUE)
        {
            tr.cons
        }

        else
        {
            tr.ensemble
        }}

谁更聪明?人工智能系统和人类的智商测试

原文:https://towardsdatascience.com/whos-smarter-an-iq-test-for-both-ai-systems-and-humans-cdf44844b612?source=collection_archive---------33-----------------------

根据谷歌人工智能研究员的说法,对人类或机器来说,掌握技能并不等同于一般的智力

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

平板电脑前的女孩:哈尔·盖特伍德在 Unsplash 上拍摄的照片

透过围绕人工智能的大肆宣传,谷歌人工智能研究员弗朗索瓦·乔莱提出了抽象和推理语料库(ARC),这是一种可能塑造未来人工智能研究进程的智力测试。迄今为止,人工智能还没有令人满意的定义,也没有任何有意义的评估方法,根据他最近的论文(“论智力的衡量”)。有一些基准,比如对电子游戏的掌握程度,但它们衡量的只是狭义的技能,而不是可以被称为类人智力的东西。

当然,开发人员并没有声称他们的国际象棋或围棋冠军拥有一般的智力,但该领域的所有此类工作都在朝着这个目标努力,即使只是含蓄地努力。这就是问题所在。目标和评估基准对科学来说是必不可少的,但它们需要明确——用乔莱的话来说就是“精确、量化的智力定义和测量”。如果没有一个正式的定义,人工智能研究人员就会回到不清楚的常用定义,这些定义本质上是概念性的,而不是可操作的。他们缺乏在不依赖测试的情况下被客观衡量的能力,这些测试“隐含着几十年前的定义和偏见”

Chollet 写道,这些偏见在“该领域对棋盘游戏和视频游戏的持续迷恋”中显而易见。他继续说道,不幸的是,这种思维模式“构建了今天的许多研究成果”,不利于人工通用智能取得更大的成功(AGI)。他试图指出假设和偏见,以便更好地定义和测量该领域的智力,这是一个雄心勃勃的目标。接下来的内容将只触及他论文中的几个重要论断,但首先是对 ARC,即测试本身的简要描述。

定义圆弧

首先,ARC 是一个可以构建智力测验的框架。最重要的是,这些测试可以应用于人类和人工智能系统。Chollet 论文的最后一部分是一个智力测验,它是按照他的框架中的指导原则建立的。最后,Chollet 写道,他的框架和这个特定的实例都是正在进行中的工作。

测试本身由数据集组成,其中有用于训练和评估的输入网格。每个网格都由各种形状和颜色的图案组成。对于每个单独的测试单元,考生被显示在由输入和输出网格组成的一到三个演示对之间。接下来是一个单一的输入网格,考生用它来构建一个输出网格,以匹配示范对指示的模式。如图 1 所示,这种格式类似于瑞文渐进矩阵,一种可以追溯到 20 世纪 30 年代的智商测试格式。该测试被设计成在没有训练的情况下进行,只有“接近人类先天知识的先验知识”

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

图 1:“隐含目标是完成对称模式的任务。任务的性质由三个输入/输出示例来说明。应试者必须生成与测试输入的输入网格相对应的输出网格(右下方)。”

做我们知道的事情

事实证明,应用于知识和理解的人类先验知识在 Chollet 的 ARC 测试中扮演着重要的角色。他非常明确地指出,“以人类为中心的参考框架不仅是合理的,而且是必要的”,这是为试图实现一般智能的人工智能系统构建的智能测试。他不同意诸如“普遍智力”或任何“用一个绝对的尺度来衡量所有智力”的想法。简而言之,他认为人工智能研究人员需要从目标范围开始。我们所知道的唯一一个范围是“与人类相关的任务空间”,在这个范围内,我们可以确定指示智力程度的指数。这并不排除其他类型的可能的普遍智能(甚至比我们更高的智能),但我们必须从我们所知道的开始。Chollet 还指出,如果我们所定义的一般智力的范围与我们自己的没有明显的重叠,那么我们完全有可能不能认为那个实体是智能的。这让我想起了路德维希·维特斯坦根的名言“如果一头狮子会说话,我们就无法理解它。”

到底什么是核心知识

如上所述,Chollet 提出“类似人类的一般智力测试”必须基于我们对周围世界的理解和感知。他将自己对这些先验的理解建立在发展科学的核心知识理论基础上,该理论是由伊丽莎白·s·斯皮克和凯瑟琳·d·金兹勒在他们的同名论文中提出的。他们确定了“构成人类认知基础的四大类先天假设。”这些类别是:

  • 客体性和基本物理学——凝聚、持续和联系。
  • 代理性和目标导向——拥有意图,朝着目标行动,并在目标导向的行动中表现出效率。
  • 自然数和初等算术——抽象数字表示。
  • 基础几何和拓扑——在 2D 和 3D 环境中定位和导航。

Chollet 说,最重要的是不仅要在智商测试中包括这些前科,而且要确定智商测试所依赖的任何其他前科。这是为了暴露测试中可能存在的任何主观性,这些主观性可能会对人类或人工智能系统的结果产生偏见。

过程 vs .神器:是歌手,不是歌

Chollet 在他的论文中提出的另一点是“过程和工件之间的混淆一直是人工智能概念化中的一个基本问题。”在他对一般智能的正式定义中,Chollet 明确区分了拥有智能的部分,即智能系统(is ),和仅仅产生技能行为的部分,即技能程序(SP)。(见图 2)前者是智能化的过程;后者才是神器。Chollet 认为,目前的人工智能研究往往侧重于后者。在他的思想中,智能的国际象棋程序是由智能过程产生的人工产物,事实上,智能过程不是程序中的机制,而是“创造国际象棋程序的研究人员所展示的智能”。

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

图 2:“问题的位置:一个智能系统生成一个技能程序来与任务交互。”

程序综合课程

Chollet 对过程与工件的讨论也引出了他所认为的人工通用智能发展的前景。他指出,ARC 的程序合成解决方案将能够完成“广泛的与人类相关的任务,这些任务通常需要人类水平的、人类流体的智能。”这种方法当然有其进化的因素,因此,似乎很有可能在几代人的时间里形成一种灵活的解决方案。实际上,程序合成方法会开发自己的课程来学习如何在 ARC 测试中获得高分。为了支持这种方法,Chollet 指出,在 ARC 等心理测试中得分高的人也更有可能在“所有人类认知任务”中表现出色。换句话说,通过程序合成方法开发的人工智能系统在 ARC 测试中得分很高,也可以在其他认知任务中表现出色,这些任务是具有一般智能的人类能够完成的。

此外,人工智能系统还可以使用这些一般的认知技能来推理和解决它事先不知道的情况。事实上,Chollet 说,ARC 解算器和人类一般智能都拥有相同的先验知识,因此人工智能系统“将接近人类的认知能力。”这几乎肯定是一条漫长的道路,Chollet 坦率地承认,上述 ARC 求解器是推测性的,并对其可能性的挑战持开放态度。不过,这似乎是一个智力挑战。

脚注

有趣的是,Chollet 指出,这些先验知识也是我们近亲的其他灵长类动物所固有的。因此,进化在它们的发展中起着重要的作用。

谁是本赛季 NBA 的最有价值球员?

原文:https://towardsdatascience.com/whos-the-mvp-of-nba-this-season-3e347c66a40a?source=collection_archive---------45-----------------------

机器学习

一个案例研究,展示一个机器学习项目从开始到结束的样子。

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

迪安·班尼特在 Unsplash 上的照片

别告诉我会是 吉安尼斯 。让我们从数据中寻找答案。

我会把这个问题框架到一个机器学习项目上,用类似于 深度学习用 Python【1】介绍的机器学习一般工作流程来完成项目。

让我们开始吧。

定义问题并获取数据。

我们想问的问题是“ 谁是 NBA 本赛季的 MVP?

或者不是,这好像是一个二元分类的问题。所以,我的第一个尝试是建立一个分类器来区分 MVP 球员和非 MVP 球员。

然而,我发现建立一个分类器是不实际的,因为我将面临样本偏差的问题。具体来说,非 MVP 球员的数量远大于 MVP 球员的数量,这就造成了模型训练和评估的难度。

因此,我把它框定为一个回归问题并且输出被定义为每年的 MVP 投票份额。

要注意 ,我在这里用我的领域知识(作为一个大粉丝我对 NBA 非常熟悉)为项目选择正确的方向。在构思一个可行的项目时,充分利用你的专业知识是非常重要的。

然后,我们来看看我们掌握的投入 X 和产出 y 方面的数据,数据的 X 部分是从1989–1990赛季到2018–2019赛季获得 MVP 票数的球员的统计。数据的 y 部分是投票份额。

然后将数据分离成训练和测试数据集。在我们得到最终模型之前,测试数据集永远不会被触及。

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

选择评估指标和评估流程。

这是一个项目的重要步骤,它定义了模型的 成功 。在这个回归问题中,我用*(MSE)作为评价度量。具体来说,该模型试图在训练过程中最小化 MSE。*

由于样本量较小,我使用了 K 倍交叉验证 而不是一次性的训练-验证-测试分割作为我的评估过程。当样本量较小时,数据的拆分实际上会影响模型的性能。通常使用 K-fold 交叉验证来解决问题。

准备数据。

数据的准备包括缺失值插补和特征归一化*。*

*my_imputer = SimpleImputer(strategy="median")
my_scaler = StandardScaler()*

特征归一化在回归问题中是必不可少的,如果将原始数据汇集到引擎中,不同规模的特征对于模型训练来说将是一场灾难。

开发一个比基线更好的模型。

在建模部分,无论您是初学者还是有经验的数据科学家,都很容易忘记设置基线模型。

这里我们使用一个简单的线性模型作为我们的基线模型,并将其与数据的预处理一起打包到一个 管道 中。对管道用法感兴趣的可以参考 sklearn 中的 管道功能。

*from sklearn.linear_model import LinearRegression
model_base = Pipeline([('imputer', my_imputer), ('scaler', my_scaler), ('ln_model',LinearRegression())])
model_base.fit(X_train, y_train)*

基线模型现在可以用来比较了。

接下来,我们将开发一个比简单线性回归性能更好的模型。我选择三个候选人, 弹性网随机森林回归器深度学习回归

弹性网是套索的组合,惩罚模型的复杂性。如果感兴趣,请参考下面我以前的一个帖子。

* [## 线性回归中的一个实用建议

从弹性网开始,记得调好定义 l1 范数之比的超参数。

towardsdatascience.com](/a-practical-suggestion-in-linear-regression-cb639fd5ccdb)

对于这三个候选的超参数调优过程,我编写了一个结合了预处理超参数空间定义交叉 - 验证过程的函数。

def train_hyper_tune(X,y):
    # create the pre-processing component
    my_scaler = StandardScaler()
    my_imputer = SimpleImputer(strategy="median")

    # define regressors
    ## regressors 1: Logistic Regression
    rgs_EN = ElasticNet(random_state=0)
    ## regressors 2: Random Forest regressors
    rgs_RF = RandomForestRegressor(random_state=0)
    ## regressors 3: Deep Learning 
    rgs_DL = KerasRegressor(build_fn=my_DL)

    # define pipeline for three regressors
    ## rgs_LR
    pipe1 = Pipeline([('imputer', my_imputer), ('scaler', my_scaler), ('en_model',rgs_EN)])
    ## rgs_RF
    pipe2 = Pipeline([('imputer', my_imputer), ('scaler', my_scaler), ('rf_model',rgs_RF)])
    ## rgs_DL
    pipe3 = Pipeline([('imputer', my_imputer), ('scaler', my_scaler), ('dl_model',rgs_DL)])

    # create hyperparameter space of the three models
    ## rgs_LR
    param_grid1 = {
        'en_model__alpha' : [1e-1,1,10],
        'en_model__l1_ratio' : [0,0.5,1]
    }
    ## rgs_RF
    param_grid2 = {
        'rf_model__n_estimators' : [50,100],
        'rf_model__max_features' : [0.8,"auto"],
        'rf_model__max_depth' : [4,5]
    }
    ## rgs_DL
    param_grid3 = {
        'dl_model__epochs' : [6,12,18,24],
        'dl_model__batchsize' : [256,512]
    }

    # set GridSearch via 5-fold cross-validation
    ## rgs_LR
    grid1 = GridSearchCV(pipe1, cv=5, param_grid=param_grid1)
    ## rgs_RF
    grid2 = GridSearchCV(pipe2, cv=5, param_grid=param_grid2)
    ## rgs_DL
    grid3 = GridSearchCV(pipe3, cv=5, param_grid=param_grid3)

    # run the hyperparameter tunning
    grid1.fit(X,y)
    grid2.fit(X,y)
    grid3.fit(X,y)

    # return results of the tunning process
    return grid1,grid2,grid3,pipe1,pipe2,pipe3

其中深度学习模型 my_DL 定义如下:

def my_DL(epochs=6,batchsize=512):
    model = Sequential()
    model.add(Dense(32,activation='relu'))
    model.add(Dense(16,activation='relu'))
    model.add(Dense(1))
    model.compile(loss='mse',optimizer='rmsprop', metrics=['mae'])
    return model

神经网络中的分类回归模型在最后一层通常是不同的。这里,对于回归建模,我们在最后一层不使用任何激活函数: model.add(Dense(1))

但如果是分类问题,就需要增加一个激活函数,比如最后一层的 sigmoid 。我已经写了一些类似的功能在我的其他职位如下:

[## 使用三种机器学习模型基于勒布朗数据的端到端游戏预测方案

综合指导一个二元分类问题使用三个不同的分类器,包括逻辑…

towardsdatascience.com](/end-to-end-project-of-game-prediction-based-on-lebrons-stats-using-three-machine-learning-models-38c20f49af5f)

然后,我们运行超参数调整功能。

my_grid1,my_grid2,my_grid3,my_pipe1,my_pipe2,my_pipe3 = train_hyper_tune(X_train, y_train)

现在,我们已经为这三个模型中的每一个获得了最佳的超参数集。然后我们需要使用训练好的超参数在整个训练数据集上重新调整*。*

*def train_on_entire(X,y,pipe,grid_res):
    # fit pipeline
    pipe.set_params(**grid_res.best_params_).fit(X, y)
    # return the newly trained pipeline
    return pipemodel1 = train_on_entire(X_train,y_train,my_pipe1,my_grid1)
model2 = train_on_entire(X_train,y_train,my_pipe2,my_grid2)
model3 = train_on_entire(X_train,y_train,my_pipe3,my_grid3)*

我们不能说一个模型比基于训练数据性能的基线模型(线性回归)更好。因此,我们需要对以前从未接触过的测试数据进行多一步评估。

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

测试数据上的表现(裕丰

现在,我们已经得出结论,通过在测试数据集上实现 最低 MSE ,模型 3 (深度学习回归器)优于其他模型。所以, model3 是我们最终的模型。

通常,一个机器学习模型项目以拥有一个性能相当好的模型而结束。

然而,在我们的项目中,这一步还不足以回答问题,“ 谁是 MVP? “这就是我们走得更远的原因。

预测和解释。

我们将把我们训练好的模型应用到目标问题中,预测 MVP 。于是,我从本赛季(NBA 因 COVID19 停赛前)的球员统计数据中提取出与我们训练数据相同的特征空间。

我们只对有机会赢得 MVP 的顶尖球员感兴趣。分别是詹尼斯安东尼卢卡詹姆斯(哈登)勒布朗科怀

如果你是一个篮球迷,你一定知道这些人。如果不是,你不需要了解他们就能理解这个机器学习项目。不管怎样,我不会浪费时间介绍他们。

这是他们 MVP 投票份额 的预测。

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

虞峰预测 MVP 投票份额

我们从媒体那里得到了不同的答案,我们预测的 MVP詹姆斯·哈登 T7!没有喜欢,没有讨厌,但都来自数据。(但我个人确实认同这个结果。😀)

预测结果后,我需要更深入地挖掘数据来解释结果或支持结果。因此,我使用 花花公子图表 比较这些玩家的统计数据(我们模型的特征空间)。

***6 号科怀,*预测投票份额= 8.4%

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

科怀统计由玉凤

第五名卢卡,预测投票份额= 8.8%

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

卢卡统计数据由玉凤

第 4 名勒布朗,预测投票份额= 13.8%

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

勒布朗统计数据由虞峰

第三名安东尼,预测投票份额= 16.4%

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

安东尼统计由俞峰

第二名 Giannis,预测投票份额= 24.0%

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

詹尼斯统计由虞风

第一名詹姆斯,预测投票份额= 28.7%

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

詹姆斯统计数据由虞峰

我们可以清楚地看到,詹姆斯·哈登的统计数据都在最好的(打了场,场均得分,投篮命中率,抢断等等*)之列。这就是为什么模型预测他是这个赛季的最有价值球员。*

对生成 花梳图 感兴趣的可以参考下面的帖子。

* [## 给出了随机森林分类器的特征重要性

如何建立一个随机森林分类器,提取特征重要性,并漂亮地呈现出来。

towardsdatascience.com](/present-the-feature-importance-of-the-random-forest-classifier-99bb042be4cc)

就是这样。一个从头到尾的问题驱动的机器学习项目。*

外卖

  1. 应用领域知识对于项目设计和数据收集非常重要。
  2. 当样本量较小时,使用 K 倍交叉验证。
  3. 不要忘记在建模前标准化你的特征。
  4. 用测试数据上的表现来评估你的模型。
  5. 使用图形来解释你的预测结果。
  6. 詹姆斯·哈登是最有价值球员。

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

裘德·贝克在 Unsplash 上的照片

参考资料:

弗朗索瓦·乔莱用 Python 进行深度学习。*

为什么 85%的人工智能项目会失败

原文:https://towardsdatascience.com/why-85-of-ai-projects-fail-2c85cdd4bf45?source=collection_archive---------32-----------------------

从别人的错误中吸取教训。生命太短暂了,不能自己去创造。

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

JESHOOTS.COMUnsplash 上拍照

许多公司愿意投身于人工智能的迷人世界,并从它带来的好处中学习。通常故事是这样的:董事委员会决定他们的公司应该领导他们行业的人工智能创新生态系统。为了做到这一点,他们雇佣了一个拥有高超技能的团队,在资源上花费了大量的金钱,几个月的“PUM”之后他们发现自己在起点上的钱更少了,而且对 AI 完全没有信任。这些公司犯了哪些错误?AI 只是炒作,一点好处都没有吗?我们能从这么多失败的项目中学到什么?

1 —人工智能并不适合所有人

一旦你的公司决定尝试人工智能,就需要一个非常清晰和详细的人工智能战略。一个人工智能项目的基础是基于三根支柱,缺少任何一根都会使整个建筑颤抖。

三大支柱:

  • 技能:数据科学家是一个相当新的工作,很少有数据科学家可以说他们有超过 15-20 年的经验。数据科学家是一种非常稀缺的资源,组建一支合适的团队既困难又昂贵。
  • 技术环境:人工智能模型只是解决方案的一部分,如果你想让你的项目成功,你需要各种技能和解决方案来实现它。你需要一个软件开发人员和工程师团队来处理人工智能项目的架构复杂性。设计良好的生产环境是必须的,不应该由数据科学家来管理。
  • 数据:垃圾进,垃圾出。公司必须设计一个数据策略来管理人工智能项目的关键资源,数据。数据科学家需要随时提取、清理和分析数据。处理过时的数据、重复的数据、不正确的数据甚至缺失的信息可能会导致团队受挫,项目失败。数据治理是人工智能项目成功的最重要和被低估的支柱之一。

这三个支柱是必须的,如果缺少其中一个,AI 项目可能会失败。我不知道有哪个数据科学家团队拥有很棒的工具,在没有任何数据的情况下开发惊人的模型。或者,即使你的公司有一个很棒的团队和数据,如果你没有所需的环境,你怎么能期望转移到模型的生产呢?

最后,考虑这种战略转变对公司的文化影响也很重要。很多项目之所以会失败,是因为没有得到管理层或者公司领导的信任。人工智能是一种工具,如果管理它的人不使用它,它几乎不会对业务产生影响。

2 — AI 开始于损益表

假设我们已经建立了我们的三大支柱,我们应该如何确定我们的人工智能项目?怎么才能知道从哪个项目入手?

大多数公司一开始都以技术为导向,比如“我想成为第一家使用聊天机器人的公司!”,或者 Google 发布了一种全新的技术,让我们使用它吧!是失败项目的根源。如果你有这种倾向,这意味着你正在强行解决一个问题,你还没有确定你怎么知道什么是正确的解决方案?你不应该从解决方案出发,而应该从问题出发。

公司应该从业务导向开始,而不是技术导向。分析财务报表,找出公司成本最高的地方。继续客户获取和保留策略,有没有办法用人工智能来改善它?首先确定问题,然后决定采用哪种解决方案。

业务导向允许公司从财务角度衡量人工智能项目,我们可以通过 ROI 等 KPI 来估计成本、收入或对公司的影响。以这种方式衡量人工智能项目有两大好处,首先,它给出了一个清晰的方向。人工智能团队可能会迷失在训练模型中,尝试新技术并提高准确性。他们应该尝试多少新技术,或者应该花多少时间进行培训?他们应该继续工作,直到解决业务问题,这是唯一重要的 KPI。

其次,数据科学家团队和主管之间的沟通通常不太顺畅。经过几个月的工作和出色的表现,你最不希望缺少的就是沟通。为此,我们需要使用商业语言。通过财务 KPI,用他们能理解的语言解释你的 AI 成就

如果你是在你的第一个项目上,前面的考虑应该被考虑两次。第一个项目的失败会对团队的发展产生政治上的副作用,也会失去领导的信任。这可能会更糟,它可能会导致人工智能团队感到沮丧和沮丧。

3 —端到端解决方案

将原型模型投入生产是一个重要的里程碑。

公司未能花太多时间专注于模型创建,并且忽略了原始问题。在软件开发中,遵循敏捷方法是项目成功的关键。

与其等待几个月来交付一个最终的软件,不如致力于快速产生成果的紧凑而短暂的迭代。每次迭代之后,我们都会收到来自客户和用户的反馈,这样我们就可以改进。我们假设用户为什么不喜欢这个解决方案,通常我们会考虑模型的准确性或性能。由于采用了敏捷方法,我们不在假设的基础上工作,而是建立在客户反馈的基础上。

此外,当我们迭代并创建完整的解决方案管道时,业务领导可以提前交付,使他们能够看到进展和投资回报。它有助于管理期望和更好地理解用户需求。

4 —内部与外包

数据科学家正在寻找新的技术和解决方案来提高当前模型的性能。他们希望分析数据,设计模型,训练模型,并在每次迭代中进行微调。这项任务是高度消耗和需要非常深刻的专业知识,此外,这是非常昂贵的,需要时间来有一个可靠的模型。

另一方面,我们有像亚马逊、谷歌或微软这样的大型科技公司提供尖端模型,用如此海量的数据进行训练,以至于大多数公司甚至无法想象和发展这些熟练的团队。我们能和他们竞争吗?

大型云提供商通过 API 以极低的价格提供他们训练过的模型。您按使用付费,对于成千上万的 API 调用,您可以被收取美分(这取决于您使用的模型)。这些开箱即用的型号极大地减少了上市时间和入门成本。几天之内,你就可以以非常低的成本开发一个人工智能管道,这样你就可以收集用户的反馈。

我们可以永远使用 API 吗?当然不是,正如我们已经说过的,我们致力于短而紧凑的迭代来快速交付,这就是 API 如此有用的原因。当您的解决方案得到验证,客户正在使用它,领导愿意投入更多资金时,您就知道您的解决方案正在发挥作用,并为您的公司带来了明显的回报。一旦你能够验证所有这些,你就准备好从 API 转移到开发你自己的模型并获得对解决方案的控制。这同样适用于在线提供的预培训模型,如 ResNet、YOLO、伯特…

结论

在人工智能领域起步可能非常具有挑战性,有许多变量需要考虑,还有许多不确定性。正如我们在这篇文章中读到的,大多数问题都是由于管理和业务决策而产生的。我们必须明白,人工智能是一种工具,它不会自己解决问题。

认识问题,隔离并理解它,然后关注你的第一条管道,这是关键。在这个早期阶段,你应该抛开你的完美主义,专注于端到端的解决方案。此时,您将能够接收反馈并迭代解决方案。

参考文献

https://www . pactera edge . com/pactera-white-paper-reveals-85-percent-ai-projects-ultimate-fail-0

[## 我喜欢成为数据科学家的 3 个原因

这一切都归结于马尔科姆·格拉德威尔在他的书《局外人》中解释的“有意义的工作”的概念。

towardsdatascience.com](/3-reasons-why-i-love-to-be-a-data-scientist-90696ac0d314) [## 什么是注意机制?请大家注意一下。

解决 Seq2Seq 问题技术的演变,从 RNN 到自我关注。

towardsdatascience.com](/what-is-attention-mechanism-can-i-have-your-attention-please-3333637f2eac)

为什么 90%的机器学习模型从未投入生产

原文:https://towardsdatascience.com/why-90-percent-of-all-machine-learning-models-never-make-it-into-production-ce7e250d5a4a?source=collection_archive---------6-----------------------

意见

公司缺乏领导支持、团队间的有效沟通和可访问的数据

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

大多数机器学习模型从未得到部署。作者图片

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 C 公司正在经历艰难时期。我不是在谈论疫情和股市波动。

时代是不确定的,必须让客户体验越来越无缝和身临其境并没有减轻公司的任何压力。从这个角度来看,可以理解他们正在投入数十亿美元开发机器学习模型来改进他们的产品。

但是有一个问题。公司不能只是向数据科学家和机器学习工程师扔钱,并希望奇迹发生。

数据不言自明。据 VentureBeat 报道,大约 90%的机器学习模型从未投入生产。换句话说,数据科学家的工作日中,只有十分之一最终能为公司做出有用的东西。

尽管 10 位科技高管中有 9 位认为人工智能将成为下一次技术革命的中心,但它的采用和部署仍有发展空间。数据科学家不是罪魁祸首。

[## 为什么开发人员会爱上函数式编程

从 Python 到 Haskell,这种趋势不会很快消失

towardsdatascience.com](/why-developers-are-falling-in-love-with-functional-programming-13514df4048e)

公司不是为机器学习而建立的

领导的支持不仅仅意味着金钱

数据科学家的就业市场非常好。公司正在招聘,他们也准备支付高薪。

当然,经理和企业领导人期望这些数据科学家为他们增加很多价值。然而,就目前而言,他们并不容易做到这一点。

GAP 数据和分析部门的 SVP 克里斯·查珀(Chris Chapo )说:“有时候人们会想,我只需要在一个问题上砸钱或者投入一项技术,成功就会从另一端出现。”。

为了帮助数据科学家在他们的角色中脱颖而出,领导者不仅需要将资源导向正确的方向,还需要了解机器学习模型是什么。一个可能的解决方案是,领导者自己接受一些数据科学的入门培训,这样他们就可以在自己的公司将这些知识付诸实践。

缺少对数据的访问

公司在收集数据方面并不差。然而,许多公司都是高度孤立的,这意味着每个部门都有自己收集数据的方式、首选格式、存储位置以及安全性和隐私偏好。

另一方面,数据科学家经常需要来自几个部门的数据。孤立使得清理和处理这些数据变得更加困难。此外,许多数据科学家抱怨他们甚至无法获得他们需要的数据。但是,如果你没有必要的数据,你应该如何开始训练一个模型呢?

孤立的公司结构和不可访问的数据在过去可能是可管理的。但是在一个技术变革飞速发展的时代,公司需要加快步伐,建立统一的数据结构。

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

对于数据科学家来说,访问他们需要的数据至关重要。作者图片

IT、数据科学和工程之间的脱节

如果公司的目标是减少孤立,这也意味着部门之间需要更多的沟通,并调整他们的目标。

在许多公司中,IT 和数据科学部门之间有一条基本的鸿沟。它倾向于优先考虑让事情工作并保持稳定。另一方面,数据科学家喜欢试验和打破东西。这不会导致有效的沟通。

此外,对于数据科学家来说,工程学并不总是必不可少的。这是一个问题,因为工程师可能不总是理解数据科学家设想的所有细节,或者可能由于沟通不畅而以不同的方式实现事情。因此,正如 StackOverflow 指出的那样,能够部署他们的模型的数据科学家比那些不能部署的科学家具有竞争优势。

[## 为什么机器学习部署很难?

在几个人工智能项目之后,我意识到大规模部署机器学习(ML)模型是最重要的…

towardsdatascience.com](/why-is-machine-learning-deployment-hard-443af67493cd)

机器学习模型带来了自己的一系列挑战

扩大规模比你想象的要难

如果一个模型在一个小环境中工作得很好,那并不意味着它在任何地方都可以工作。

首先,处理更大数据集的硬件或云存储空间可能不可用。此外,机器学习模型的模块化在大规模上并不总是像在小规模上一样有效。

最后,数据来源可能不容易,甚至是不可能的。如前所述,这可能是由于公司中的竖井结构,或者是由于获取更多数据的其他挑战。

这也是跨组织统一数据结构,鼓励不同部门之间交流的另一个原因。

努力得到了复制

在部署机器学习模型的漫长道路上,超过四分之一的公司面临重复努力。

例如,软件工程师可能试图实现数据科学家告诉他们的事情。后者可能会继续下去,自己做一些工作。

这不仅是浪费时间和资源。当涉众不知道使用哪个版本的代码,以及如果他们遇到任何错误该向谁求助时,这也会导致额外的混乱。

虽然如果数据科学家能够实现他们的模型,他们就有优势,但是他们应该清楚地与工程师沟通,关于谁需要做什么。这样,他们可以节省公司的时间和资源。

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

有效的沟通对于机器学习模型的工作至关重要。作者图片

高管并不总是买入

技术高管坚信人工智能作为一个整体的力量,但这并不意味着他们相信外面的每一个想法。据 Algorithmia 报道,三分之一的企业高管将糟糕的部署统计归咎于缺乏高层的支持。

似乎数据科学家仍然被视为有点书呆子气,缺乏商业意识。这使得数据科学家提高他们的商业技能,并尽可能地寻求与高管对话变得更加重要。

当然,这并不意味着每个数据科学家都突然需要一个 MBA 学位才能胜任他们的工作。然而,从课堂或商业经验中学到的一些关键知识可能对他们大有裨益。

[## 每个数据科学家都需要向商业领袖学习什么

因为软技能很重要。

towardsdatascience.com](/what-every-data-scientist-needs-to-learn-from-business-leaders-47dcf3204076)

缺乏跨语言和框架支持

由于机器学习模型仍处于初级阶段,当涉及到不同的语言和框架时,仍然存在相当大的差距。

一些管道以 Python 开始,以 R 继续,以 Julia 结束。其他人则反其道而行之,或者完全使用其他语言。由于每种语言都有独特的库和依赖集,项目很快就变得难以跟踪。

此外,一些管道可能会利用 Docker 和 Kubernetes 的集装箱化,其他管道可能不会。有些管道会部署特定的 API,有些则不会。这样的例子不胜枚举。

TFXMlflowKubeflow 这样的工具开始出现来填补这个空白。但是这些工具仍然处于初级阶段,到目前为止,在这方面的专业知识还很少。

数据科学家知道,他们需要不断查看自己领域的最新进展。这也应该适用于模型部署。

版本和可复制性仍然具有挑战性

与上述问题相关的是,到目前为止,还没有对机器学习模型进行版本控制的可行方法。很明显,数据科学家需要跟踪他们所做的任何更改,但现在这很麻烦。

此外,数据集可能会随时间漂移。随着公司和项目的发展,这很自然,但这使得重现过去的结果变得更加困难。

更重要的是,一旦一个项目开始,就要建立一个基准,模型现在和将来都要根据这个基准运行。结合勤奋的版本控制,数据科学家可以让他们的模型具有可重复性。

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

如果一个模型是不可复制的,这可能会导致以后漫长的调查。作者图片

如何停止尝试并开始部署

如果一个数据科学家 90%的努力一无所获,那不是一个好兆头。如上所示,这不是数据科学家的错,而是由于固有的和组织上的障碍。

变化不是一天就能发生的。对于刚刚开始研究机器学习模型的公司来说,从一个非常小而简单的项目开始是明智的。

一旦管理者勾勒出一个清晰简单的项目,第二步就是选择合适的团队。它应该是跨职能的,应该包括数据科学家、工程师、开发人员和任何其他对其成功似乎很重要的角色。

第三,管理者应该考虑利用第三方来帮助他们在开始时加速。 IBM 是提供这种服务的公司之一,但市场上还有其他公司。

最后一个警告是不要不惜一切代价追求复杂。如果一个便宜简单的模型满足了 80%的客户需求,并且可以在几个月内发货,那已经是一个伟大的壮举了。此外,构建简单模型的经验将推动更复杂模型的实现,有望让客户百分之百满意。

[## 再见了蟒蛇。你好朱莉娅。

随着 Python 的寿命逐渐停止,一个热门的新竞争者正在出现

towardsdatascience.com](/bye-bye-python-hello-julia-9230bff0df62)

底线是:革命需要时间

下一个十年肯定是革命性的——就像过去的十年一样。人工智能的广泛应用只是 T4 众多发展趋势之一。物联网、先进机器人和区块链技术的兴起也在此列。

不过,我故意说的是几十年,而不是几年。例如,考虑 90%的公司都在云中——数量如此之多,以至于我们甚至很难想象如果没有它我们的生活会怎样。另一方面,云花了几十年才获得广泛采用。

没有理由相信人工智能革命会有任何不同。这需要一段时间来实施,因为现状包含了许多需要克服的障碍。

但由于机器学习提供了如此多的方式来改善客户体验和公司效率,很明显,赢家将是那些快速和早期部署模型的公司。

为什么一场重大的人工智能革命即将到来,但不是你想的那样——AAAI 2020

原文:https://towardsdatascience.com/why-a-major-ai-revolution-is-coming-but-its-not-what-you-think-aaai-2020-aedbe2a3928f?source=collection_archive---------5-----------------------

来自 AAAI 2020 会议:图灵奖科学家辛顿、勒昆和本吉奥致力于让机器理性

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

从左至右,扬·勒昆、杰夫·辛顿、约舒阿·本吉奥、弗朗西丝卡·罗西和丹尼尔·卡内曼热烈讨论计算机是否真的会“思考”

你已经知道深度学习擅长视觉、翻译、玩游戏和其他任务。但是神经网络不像人类那样“学习”,相反,它非常擅长快速模式匹配。今天的研究主要集中在具有更大数据集和复杂损失函数的更大模型上。但是下一次革命可能会更加根本性。让我们来看看两种方法:用层叠胶囊自动编码器添加逻辑和大规模自我监督学习。

三位图灵奖获得者都同意深度学习的问题

Yann LeCun 提出了深度学习的三大挑战:

  1. 用较少的标记样本学习
  2. 学习推理
  3. 学习计划复杂的动作序列

杰夫·辛顿——“这是关于 CNN 的问题,以及为什么它们是垃圾”:

  1. CNN 不擅长处理旋转或缩放
  2. CNN 不理解图像中的物体及其组成部分
  3. 有线电视新闻网在反对的例子面前是脆弱的

Yoshua Bengio —“神经网络需要发展意识”:

  1. 应该从更少的例子中更快地概括
  2. 从世界上学习更好的模型,比如常识
  3. 更擅长“系统 2”思维(相对于快速识别,较慢的方法思维)

他的讲述总结了大多数人工智能科学家已经知道的事情:深度学习真的擅长于做狭窄的、基于模式的任务,如对象或语音识别。挑战是让人工智能 1)用更少的例子学习 2)对琐碎的对手攻击更鲁棒 3)能够推理 4)计划更复杂的动作序列。

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

Yann LeCun 阐述了深度学习的三个挑战

Hinton 提出了堆叠胶囊自动编码器,它将先验注入到神经网络的结构中

T 这里的关键见解是,对于卷积神经网络,我们只需向完全连接的神经网络添加一点点结构(卷积),它就能极大地帮助网络进行图像识别。

Hinton 现在将基本的神经元结构改变为“胶囊”,其包括 1)用于识别形状的逻辑单元 2)用于姿势的矩阵和 3)用于诸如变形、速度、颜色等其他属性的向量。添加的结构应该有助于神经网络识别和存储关于形状、姿势和其他属性的信息。全文 Neurips 论文此处这里是 AI 入门

如下所示,该算法在无监督训练后,在 MNIST 的 10 个数字类别中显示出清晰的分离。这意味着我们可以只使用 10 个标记样本(每个数字一个)来训练神经网络。

想象一个婴儿在玩编号为 1-10 的积木……过一会儿,婴儿应该能够将相似的数字组合在一起(不管姿势、畸形等),尽管她不知道这些数字是什么意思。这就是这里正在发生的事情。

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

辛顿展示了 MNIST 数字的无监督学习和使用生成的嵌入的类的清楚分离。

辛顿正试图教计算机学习关系,这导致了逻辑

Hinton 的 Stacked Capsule 自动编码器是将知识结构构建到神经网络中的一个例子,它使网络能够进行推理。在 MNIST 的例子中,它识别一个数字是如何由许多部分组成的。

更进一步,你可以想象我们可以用这种方式表示其他关系,比如能力(能走,能飞,等等)和特征(有头,有翅膀,等等)。从这里,很容易看到计算机将如何能够推理动物是鸟,因为它有翅膀,可以飞。

还有其他方法可以将逻辑与神经网络结合起来,但陪审团仍然没有找到最好的方法。

特斯拉的 autopilot 是神经网络和逻辑系统结合的又一个例子。在这种情况下,神经网络仅用于进行对象识别,然后一组手动编写的规则为汽车提供方向,例如“一名行人在汽车前面行走,踩刹车并停下来”。

最大的区别是 1)Hinton 的关系系统可以使用梯度下降来训练,但是纯符号系统不可以,以及 2)训练系统上的向量表示可以进行相似性,但是符号系统不能。例如,“人类与类人猿相似,因为他们有 4 条腿,圆脸,而且身高差不多。”

你可以想象结合逻辑和系统的其他方式,比如在神经网络或级联系统中集成符号推理,其中逻辑开始是模糊的,然后通过符号规则得到巩固。但肯定不清楚哪种方法最好。

Yann LeCun 提出大规模的自我监督学习

W hat 如果我们用胶囊跳过了这种花哨的步法,网络还能学习这些关系吗?Yann LeCun 就是这么想的。

婴儿是这样学习的。他们首先观察世界,通过观察物体下落来了解重力。因此,如果你给一个 10 个月大的婴儿看一个悬浮在空中的物体,他们会非常惊讶——婴儿学会了重力,并预计物体会下落,因为他们一直在观察这个世界。

Yann 的论点是,如果我们能够让神经网络进行视频预测,那么我们就有办法让计算机自己学习关于世界的各种关系,而无需将特定的关系注入网络结构。

但是预测未来的视频帧是很难的,因为未来实际上是不可预测的,所以网络将试图将所有可能的未来结合到一个模糊的图像中。Yann 认为基于能源的模型可能很快使这成为可能。

一场人工智能革命即将到来

今天,围绕人工智能的大部分讨论都集中在制作更大的模型和更复杂的损失函数上。但是神经网络的发明者正在领导攻击神经网络核心缺点的研究。

虽然还不清楚哪种方法会导致下一次突破,但我非常乐观地认为,一些研究将会奏效,并导致人工智能能力的大幅提高。人工智能的用户将通过密切关注和尽快整合这些突破而受益。

感谢我的朋友哈诺兹·巴瑟纳和张俭阅读本文的草稿。

获取演讲的完整视频记录

在这里学习搭建自己的深度学习计算机,开始练习 AI

为什么会计师非常适合学习编程?

原文:https://towardsdatascience.com/why-accountants-are-great-fit-for-programming-6033927047e6?source=collection_archive---------18-----------------------

编程会让你做更有意义的工作

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

弗兰基·查马基在 Unsplash 上拍摄的照片

我认为会计师应该学习如何编码。这么做有很多原因,快速的谷歌搜索会给你大量的结果。

但是为什么会计师首先非常适合编程呢?

当然,还有其他职业,但我们会计师更适合在工作中利用编程的优势。

以下是我认为我们非常适合学习编程的原因。

会计师处理大量的数据

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

照片由马库斯·斯皮斯克Unsplash 拍摄

会计师在日常工作中会接触到数据。我们操纵、转换、计算、存储和共享数据。

多年来,Excel 一直是我们会计师工作的首选工具。但是,随着今天的数据量和速度,新的工具已经出现,以处理这些。而且大部分都需要编程知识。

学习编程允许我们使用这些新工具,并为组织提供新的见解。

会计师很了解电子表格

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

照片由米卡·鲍梅斯特Unsplash 上拍摄

我要做一个大胆的声明。

所有的应用程序都只是超负荷的电子表格。

它们基本上是我们所知的传统电子表格局限性的变通方法。

我们如何使用电子表格?—我们通常将数据放入其中,对其进行操作,并存储结果。

但是它们有局限性——不够美观,数据可能被破坏,重复数据,无效数据,不太安全,等等。

因此,我们通过分离数据、逻辑和表示来解决这些限制。

换句话说,我们会计师离创建或理解任何应用程序只有一步之遥,因为我们知道这些应用程序通常可以解决的问题。

会计师处理大量重复性的工作

会计领域存在大量重复性任务,如在系统中输入发票、在实践管理软件中更新客户信息、计算税款等。

随着技术的进步,其中大部分现在都可以自动化,解放了我们的时间,让我们专注于更有价值的任务,从而继续在当今世界发挥作用。

会计师耐心且关注细节

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

乔·塞拉斯Unsplash 上的照片

会计是一个训练有素的职业。你必须得到正确的数字,否则你有可能用错误的信息误导你的利益相关者。

耐心和对细节的关注体现在会计的每个阶段——从将交易输入会计系统、进行调整,到创建财务报告。

任何会计师都会有审计电子表格的经历,因为数字没有意义——结果发现你在公式中使用了错误的单元格引用。

编程也是如此。任何有编程经验的人都可能有这样的经历:编码了几个小时,但在运行程序时发现了一个 bug 却发现在代码的某个地方使用了=而不是==

如果你考虑一下——调试就相当于审计你的电子表格——只是它现在适用于你的脚本。

会计师已经知道商业智能和数据科学——但我们不这样称呼它

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

卡洛斯·穆扎Unsplash 上的照片

如今,有很多关于数据科学和商业智能的宣传。

但我们会计师早在这两个术语流行之前就已经知道了。我们称之为管理会计

管理会计是会计的一个分支,主要是为管理层提供相关的决策信息。

这超出了传统的财务数据,可能涉及客户流失、库存交付周期等数据。—用于业务决策的任何数据。

不同之处在于,今天的技术允许以更快的速度收集和处理更大量的数据。

我们会计师是每个组织最初的“数据分析师”,如果我们适应并学习编程,我们将继续这样做。

会计师拥有商业领域的知识

编程是解决问题的工具。这是达到目的的手段。因此,要想编程好,你必须首先定义要解决的问题。

这就是领域知识的用武之地。会计师知道哪些地方需要改进,哪些地方编程可以提供帮助。

我们也知道如何衡量任何软件解决方案的好处及其对底线的最终影响。

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

Unsplash 上由 Helloquence 拍摄的照片

给我的会计师同事们

没有比现在更好的学习编程的时间了。如果你不能马上理解,不要担心——任何程序员都经历过。重要的是你开始。

“种树的最佳时间是 20 年前。第二好的时机就是现在。”

-中国谚语

我希望这篇文章能鼓励你学习编程。它是你工具箱里的必备工具。

编程是一种解放的体验——它会释放你的时间去处理更有意义的工作。

查看我的文章如果你是一名会计,我推荐你首先学习哪种编程语言 这里 。提示:不是 Python。

跟我上 领英 推特

为什么人工智能和机器学习不是一回事。

原文:https://towardsdatascience.com/why-ai-and-machine-learning-arent-the-same-thing-6f98ff7e38dd?source=collection_archive---------28-----------------------

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

如何在商业中使用无监督学习

围绕人工智能的许多宣传都涉及机器学习的最新发展。术语“AI”和“机器学习”经常被错误地使用,所以让我们重新定义这两个术语。AI,在之前的帖子中定义,可以理解为执行通常与人类认知相关的任务的计算机。机器学习是 AI 的六大学科之一。换句话说,机器学习是人工智能的多个类别之一,但并不是所有的人工智能都涉及机器学习。

为了澄清事情,可以将机器学习视为一种“特殊”的人工智能,它可以检测数据集内的模式,并使用这些模式来做出建议或预测。机器学习算法不是拥有人类编码的指令,而是依靠数据来获得洞察力。因此,机器学习的“学习”部分。

为简单起见,我们来想一个我们每天都依赖的算法:天气预测。比如说,我们相信明天的天气是基于今天的天气,昨天的天气,以及去年这个日期的天气。我们可以拟出一个假想的方程式。

weather tomorrow = B0+B1 today+B2 year+B3 last year

天气预报员将使用我们的方程,并向机器学习算法输入我们有数据记录以来的所有不同变量。需要记住的最重要的一点是,数据包括了直到今天的 WeatherTomorrow 变量。基于这些历史数据,包括这些方程所提问题的历史“答案”,我们的算法试图预测明天的天气。这叫做监督的机器学习。在监督机器学习中,算法是用包括输出变量或我们正在寻找的“答案”的数据来训练的。

另一个简单的例子:房价。你给计算机每月输入数据(如利率、平方英尺大小、房产位置)和每月输出数据(如房屋售价)。然后,对算法进行训练,以根据给定的输入和输出做出未来预测。

当您有一个输出可以由人类分类或收集的数据集(这称为标记数据)时,有监督的机器学习是最好的。以下是监督机器学习的几个用例:

  • 为雇佣新员工提供决策框架
  • 预测库存水平
  • 预测呼叫中心的来电量

这种算法的有效性在于所收集数据的质量。直到最近,数据收集还很困难、昂贵且耗时。如今,随着智能手机、社交媒体和对互联网的不断访问,有太多的数据可供监督机器学习算法使用。公司面临的挑战是正确收集这些数据,了解它可以提供什么样的见解,并足够敏捷地根据一致的实时见解来转变业务战略。

了解算法的功能、为其提供数据所需的数据以及可以解决的业务问题类型,是让您的公司或业务部门更加数据驱动的良好开端。

为什么人工智能黑客马拉松不会为现实世界的问题建立解决方案

原文:https://towardsdatascience.com/why-ai-hackathons-wont-build-solutions-to-real-world-problems-292421448a95?source=collection_archive---------50-----------------------

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

【2013 年维基媒体黑客马拉松

这里是我们应该做的,而不是成功地建立人工智能解决方案。

这些天有几十个响应新冠肺炎的黑客马拉松正在组织中,1000 多人贡献他们的时间来构建解决方案。我指导过欧洲最大的一个项目,有 1000 多名工程师参与其中。组织者为此投入了数天甚至数周的工作。因此,我真诚地赞扬他们的努力和善意。然而,在没有从组织者和参与者身上带走任何东西的情况下,我质疑黑客马拉松的有效性。

为什么黑客马拉松不会构建现实世界的解决方案

  1. **缺乏领域专业知识:**像新冠肺炎这样的社会问题不能仅靠工程师来解决。为了构建现实世界的解决方案,我们需要让决策者、领域专家、用户参与进来——这是参与黑客马拉松的团队通常无法接触到的。
  2. **不同背景的缺乏导致模型中的偏见:**黑客马拉松是由互相认识的团队组成的,因此最终都有相同的背景。这忽略了其他观点和背景。我们已经看到,只由工程师开发的系统最终会出现偏差。在家庭暴力事件中,男性使用 Alexa 和 Google Home 将配偶拒之门外。他们把音乐开得很大声,或者把他们锁在门外。在一个大多数男性工程师构建这些产品的环境中,可能没有人会考虑这种情况。此外,有许多例子表明人工智能和数据传感器可能带有偏见、性别歧视和种族主义[1]。
  3. **开发时间太少:**三四天的时间不足以测试或构建可在生产环境中复制的解决方案。请记住,在一个项目中,你会给评委留下深刻印象,但在另一个项目中,你会构建完整的解决方案。构建一个原型很容易,但是在进入现实世界时,还有数十个其他的外部实体需要考虑。除了技术挑战之外,还有其他需要与原型集成的领域(比如营销、设计和销售)。
  4. 缺乏多样的想法。当我在指导黑客马拉松的时候,我可以说,在 100 多个想法中,我们可以将它们全部放入 10 到 15 个想法中。其中大部分是相似的——这是因为上面提到的第二点。
  5. **竞争 vs 协作:**既然可以协作,为什么我们还需要 100 多个团队相互竞争?在我之前的一篇文章中,“为什么 Kaggle 不具有包容性,如何构建一个更具包容性的数据科学平台”,我认为像 Kaggle 这样基于竞争的模型并不是构建现实世界解决方案的最佳模型。在众多原因中,一个关键的问题是人们被激励去赢,而不是一起寻找问题的最佳解决方案。竞争模式的缺点也适用于黑客马拉松。

另一种选择?合作的方法

如果我们真的想以包容和有效的方式解决像 COVID-19 这样的社会挑战,我们需要确保几个机制。

  1. 利用全球协作:当今的大多数挑战本质上都是全球性的。不是一个国家或者一群人能解决的。因此,为了解决这些挑战,我们需要一种新的模式,一种全球社区可以聚集在一起解决问题、共享数据和构建解决方案的模式。在大数据、人工智能和机器学习的世界里,数据是关键。这不是复杂的算法或更好的团队,而是拥有更好(和更多)数据的团队获胜。此外,由于在线课程,教育,特别是像人工智能和人工智能这样的新兴技术,变得容易获得。现在,对于世界上任何地方的任何人来说,从像 Udemy,Coursera 这样的网站开始学习是非常容易的。这些使得有可能获得一个由高度积极的人组成的社区,他们有共同的愿景、动机和使命,并创建全球协作。
  2. **与领域专家紧密合作。**大多数现实世界的问题不仅限于数据科学问题,而是涉及领域专家来创造价值。我们已经看到,在与领域专家合作的同时,来自不同背景的数据科学家帮助公司细化问题,并为问题提供新的视角。
  3. 让面临问题的人参与进来:让来自各种背景的人参与进来,尤其是那些面临问题的人。这带来了同理心和无偏见,因为面临问题的人天生不会建造对他们不利的东西。
  4. 遵循自下而上的模式:我坚信创新的未来是自下而上的,在这种模式下,社区将走到一起合作并解决他们的问题。我在同一个上写的一篇文章是关于社区将如何驱动人工智能的未来,而不是政府或公司。我认为社区有内在和外在的动机去解决问题,这对于构建未来的解决方案是至关重要的。当面对问题的人能够找到解决方案,这是多么好的一件事。

“自上而下的协作不起作用,是时候建立自下而上的模式了”

总之,我认为:

我们应该更全面地思考,尽最大努力创造良好的环境,让我们超越性别、种族和文化背景,关注我们人类如何合作建设更美好的未来。黑客马拉松没有创造这样的环境,因此不太适合构建现实世界的解决方案。

数字化和人工智能在生活的各个方面和经济的各个领域都有巨大的潜力。然而,只有人与技术的结合才能真正实现进步和更高的生产率。我们必须强调社区和有目的的合适的人。这实际上是创造未来解决方案和产品的关键。

参考资料:

[1]https://www.logically.co.uk/blog/5-examples-of-biased-ai/

为什么人工智能对于成功的客户体验战略至关重要

原文:https://towardsdatascience.com/why-ai-is-imperative-for-a-successful-customer-experience-strategy-4687d70f13a9?source=collection_archive---------51-----------------------

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

Unsplash 上由 Franck V. 拍摄的照片

人工智能

人工智能可以在企业向顾客提供数字客户体验的方式上做出经验性的改变。

美国经济学家西奥多·莱维特(1925 年 3 月 1 日——2006 年 6 月 28 日),哈佛商学院教授,同时也是《哈佛商业评论》的编辑,有一句名言,“人们不想买四分之一英寸的钻头。他们想要一个四分之一英寸的洞!”

人类需要一种智能的、集成的、简单的、跨设备的客户体验,更重要的是那种理解他们并个性化的体验。人工智能是发展最快和最强大的技术之一,它让用户拥有客户需要的那种用户体验

根据 Digital IQ 2020 的一份报告, 82%的表现最佳的公司 表示非常关注数字化客户体验。

因此,企业需要利用人工智能来提供主动、智能、集成的全渠道体验以及相关的个性化交互,以设计最佳的客户体验。

在这篇博客中,我将与你分享人工智能如何在企业向顾客提供数字客户体验的方式上做出经验性的改变。

1。使搜索超越文本!

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

iProspect 上进行语音搜索

在这个超级信息搜索的世界里,大多数东西都是在移动设备上即时搜索的,用户需要多种搜索方式是很自然的。人工智能帮助企业让他们的访问者和顾客超越传统的搜索策略。

换句话说,人工智能允许人们通过语音和图像而不仅仅是文本进行智能搜索,大大提高了他们的搜索效率,增强了他们的购物体验。

今年早些时候,电子商务巨头易贝推出了一个新的视觉驱动的人工智能平台 Krylov ,让用户在购物时拥有更好的电子商务客户体验。

易贝副总裁 Sanjeev Katariya 和产品管理总监 Ashok Ramani 表示:“通过易贝现代人工智能平台支持的计算机视觉,该技术可以帮助您根据相机或图像的点击来找到物品。用户可以进入易贝应用程序,拍下他们要找的东西的照片,几毫秒后,平台就会显示与照片匹配的商品。”

语音搜索是另一种流行的搜索方法。语音搜索增加更多。Gartner 的一项研究预测,到 2020 年, 30%的浏览会话将包含语音搜索。

此外,随着基于人工智能的辅助工具如 Google Home 和亚马逊的 Alexa 的出现,语音搜索已经帮助语音搜索的使用急剧增加。

2。全天候客服(永不枯竭的耐心)**

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

Petr macha ekUnsplash 上拍摄的照片

人工智能相对于人工支持代理的最大优势之一是它可以提供全天候的客户支持服务。人工智能驱动的对话聊天机器人允许企业向访客和客户提供实时客户支持。

“据 IBM 称,高达 80%的常规客户服务问题 可以由聊天机器人回答。”

所有公司都需要向用户提供无缝、不间断的客户服务,但由于人力资源的限制,大多数公司负担不起,只有少数公司有。即使是最忠诚的顾客也不愿意等待商家开门来回答他们的询问和问题。聊天机器人解决了这一问题,它可以回答客户的问题和疑问,而不用考虑日期和时间。

聊天机器人是客户体验战略的一个重要方面的另一个原因是,聊天机器人不仅 24 小时回应客户的询问,并为他们提供问题的解决方案,而且还提供最佳的客户体验。

一些客户不断提出的紧迫问题可能会惹恼服务人员,或者让他们不像平时那样愉快。人工智能聊天机器人缓解了这种销售灾难。

3。推荐引擎:个人购物者/交叉销售专员

一个推荐引擎是一个人工智能驱动的系统,帮助在线企业、软件网站、电子商务商店、博客平台等。根据用户的在线行为向他们推荐产品,甚至服务和信息。推荐也可以通过用户和相似用户的偏好、兴趣和历史来获得。

这些系统使用机器学习、深度学习算法和自然语言处理(NLP)来跟踪和分析面包屑数据,并精确地实时向正确的人推荐相关内容。

例如,举一个电子商务网站的例子。推荐引擎可以帮助已经购买或正在寻找产品的消费者在电子商务商店中找到正确的路径。以某种方式做到这一点,他们将找到他们正在寻找的产品的替代品,补充他们感兴趣的产品的项目,类似的产品等。

这使得消费者的购物体验个性化,即使是在网上。因此,推荐引擎不仅为用户创造了令人满意的数字客户体验,还帮助企业销售更多产品。

另一个例子是网飞和 Youtube,这两个最受欢迎的娱乐网站消费内容。人们在这些网站上看到的推荐是由推荐引擎根据用户过去的行为进行筛选的,从而实现最佳的用户体验以及最大的屏幕时间。

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

媒体上的 YouTube 推荐引擎

4。在数字客户体验中找回“人情味”

许多电子商务企业主表示,他们缺乏或者他们认为他们拥有强大的客户体验战略,只是因为他们没有实体店,他们看不到他们的客户。

虽然这是可以理解的,但同样重要的是要注意到,有一些智能工具和技术可以帮助企业主实现他们的数字客户体验,即使不超过店内客户体验,也能与之媲美。

首先,在线企业不应该让他们的网站或网上商店的访问者感到孤立无援。在他们的顾客旅程中为他们提供帮助。

结论

人工智能方兴未艾,刚刚起步。AI 的惊人增长并不意味着体力工作和人类劳动的冗余。

尽管这项技术有多强,但它不会把我们推向遗忘,而是相反。人工智能是一种工具,可以让我们更好地工作,让我们更有效率,节省我们的时间,以便我们可以处理更复杂的问题。

我们有必要认识到这一点,以便更容易地接受和欢迎人工智能,实现为用户提供出色的客户体验的共同目标。

精选作者简介:

Dhruv Mehta 是一名数字营销专家,在 Acquire 工作,提供数字时代的解决方案。在空闲时间,他喜欢写关于技术营销的文章。他经常为调整你的业务做出贡献。在 TwitterLinkedIn 上与他联系。

为什么人工智能让我们思考🤔

原文:https://towardsdatascience.com/why-ai-makes-us-think-b916aec63d29?source=collection_archive---------40-----------------------

论算法的规则

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

我的意思并不是说“人工”这个形容词会引发哲学思考和关于智力本质以及人性本质的争论。那里没有消息。问问丹尼尔·丹尼特或者任何心灵哲学家就知道了。

我的意思是,人工智能让我们再次思考计算机化系统的伦理和政治

最近,我注意到几个声音呼吁“规范算法”。

从表面上看,这个短语毫无意义。算法是一张处方:以确定的方式解决一类问题的一系列步骤。当然,从这个意义上讲,没有必要监管任何算法。

对监管的呼吁实际上旨在针对的不是传统意义上的算法,而是最近才开始被称为算法的东西,即:采用非算法组件来做出自主决策的软件系统。

什么?

为了理解正在发生的事情,你需要知道“算法”这个词已经分两步改变了意思:

  1. 自动反义词 :“算法”这个词已经成为它自己的反义词。最初,计算机科学家用它来表示:确定性地解决问题的一组指令。在 AI 的语境中,“算法”的通俗含义已经变成了:通过实例训练的程序,高深莫测地解决一个问题。
  2. Pars pro toto :算法这个词不再是专门为以非算法方式完成任务的人工智能组件而保留的,现在也用于指代它所属的整个系统。

就像一个莫比乌斯带或一只鳄鱼颠倒着咬自己的尾巴一样,世界“算法”的意义已经从“确定性配方”转变为“具有非算法、数据驱动的决策组件的计算机化系统”。

关系

事实上,正是这种“算法”的新生概念中的“数据”和“决策”的成分,解释了为什么有理由进行伦理关注和政治辩论,并因此呼吁进行监管。

算法(在新的意义上)利用数据——我们的数据,公民消费者的数据——来做出影响我们的决定。影响我们的资产,运动,工作,自由,权利。简而言之:那会影响我们的生活。

无论何时处理个人数据,隐私都是一个问题。隐私与个人的自主性和能动性密切相关。

无论何时做出影响生活的决定,责任都是一个问题:我们审查和质疑决定原因的能力,以及它的合法性。

因此,虽然计算机化系统已经存在并影响我们的生活至少半个世纪了,但它们对我们数据的使用越来越多,决策能力越来越强,这确实证明有理由重新思考它们的道德和政治。

清楚

我对那些参与这场辩论的人的建议是,无论他们是政治家、政策制定者、公民还是(计算机)科学家,都应该思考一下他们使用的词汇。思路清晰需要语言清晰。确保你至少清楚“算法”是什么意思。

Joost Visser 是莱顿大学软件和数据科学教授。Joost 拥有代尔夫特理工大学的计算机科学学位和莱顿大学的哲学学位。

NB :有趣的是,美国国会的算法问责法案只用了两次“算法”这个词。一次是在其标题中,一次是解释这仅仅是实际法案的简称,然后继续说明其真正的监管对象是“自动化决策系统”。内容明确,标题混乱的法规。

[## Text - H.R.2231 -第 116 届国会(2019-2020):2019 年算法问责法案

指导美国联邦贸易委员会要求使用、存储或共享个人信息的实体进行…

www.congress.gov](https://www.congress.gov/bill/116th-congress/house-bill/2231/text)

为什么人工智能模型很少投入生产

原文:https://towardsdatascience.com/why-ai-models-rarely-make-it-to-production-2f3935f73e27?source=collection_archive---------27-----------------------

MLOps 思维模式如何振兴你的人工智能项目

与 NVIDIA 的 Tony Paikeday 的联合帖子。

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

照片由丹尼尔·奥伯格Unsplash 上拍摄

问题:ML 型号很难发货

在进行人工智能投资后,许多团队发现 ROI 难以捉摸。通常,伟大的实验无法成为伟大的产品。这条推文很好地总结了这种痛苦:

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

“模型债务”的痛苦,当团队拥有未发布的模型,而这些模型还没有投入生产。https://twitter.com/ginablaber

在开发具有高预测准确性的模型方面投入了大量人力物力之后,看到企业因未部署或未充分部署的模型而陷入“模型债务”是令人痛苦的。通常情况下,缺少的是一个将机器学习开发和 IT 最佳实践统一起来的“ MLOps ”策略。我们来看看为什么。

为什么将 ML 模型投入生产如此困难?

两个主要原因:

  1. 对于数据科学项目,团队不会像对更传统的开发项目那样实施同样的 DevOps 严格性。与其他生产产品一样,生产 AI 管道应该具有监控、版本控制、可扩展性、&可重复性。组织应该对 IT 团队进行预算,以便为 AI 项目实现相同级别的弹性和可重复性。
  2. 人工智能模型不像常规软件。代码发布后,模型性能会迅速下降。需要持续的监控和再培训,而相关的工具在很大程度上仍不成熟——这主要是因为最佳实践仍在不断发展。组织至少应该计划让数据科学家继续参与,即使是在模型已经投入生产之后。

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

进入生产的计划外步骤

如何为成功做计划

人员:将 IT 和数据科学团队聚集在一起

许多人工智能工作是不透明的——不是每个人都可以容易地检查或理解它。建造它的人基本上被认为是工匠。因此,组织通常认为这些项目的责任完全在于数据科学团队。这是短视的。

AI 项目需要整合到企业 IT 运营中。人工智能开发人员通常不是——也不应该是——如何构建健壮、可扩展平台的专家。

这是一条双行道:房子的两边都需要为对方的工作做计划。您的数据科学家是否构建了稳健的模型?他们有可扩展的推理设计吗?您的 IT 团队能否支持临时基础架构请求?他们向开发人员提供自助服务环境吗?也许你需要一个“人工智能工程师”的角色?

流程:实施 AI 项目的设计→测试→生产流程

今天,许多公司还没有为他们的人工智能项目实施生命周期管理。像任何产品一样,有一个明确的发布周期可以使过程标准化。拥有一点点过程实际上使单个项目更容易出门,因为他们不必每次都重新发明轮子。

期待这个过程的发展和成长——这是你正在使用这个系统的好迹象。但是你必须从某个地方开始。

技术:快速发展技术的计划

对于传统的软件开发工作流,现代 devops 工具在不断发展。但是对于人工智能开发来说,随着应用程序生态系统的快速发展填补了工具的空白,工具的发展更加迅速。规划不断发展的 MLOps 应用程序需要灵活的基础设施,并愿意不断研究最新的调度程序、版本控制工具、实验跟踪器等。

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

您的数据科学家和基础架构团队对管道组件有相同的理解吗?

优先生产而不是实验

人工智能的目标是使用模型来影响业务,而不仅仅是为了实验而实验。因此,通过将生产置于实验之上,我们并不是说不要做必要的探索工作——我们是说所有的工作,包括探索,都应该牢记最终结果。

弥合实验和生产之间差距的最快方法是弥合 AI 团队和 IT 团队之间的差距。认可模型开发之外的提升需求。致力于为数据科学项目实现与传统开发项目相同的 DevOps 严格性。

你还可以在 NVIDIA 纯存储&的这段录音中听到更多关于 MLOps 的信息。

为什么亚马逊会有 Alexa 问题,你能从中学到什么

原文:https://towardsdatascience.com/why-amazon-has-an-alexa-problem-and-what-you-can-learn-from-it-2af47bb3378c?source=collection_archive---------58-----------------------

事实证明,确实存在数据过多的问题

当亚马逊推出 Alexa 时,许多预言家和技术专家都对这种可能性感到眩晕。最后,这是一台经济实惠的机器,预示着真正的语音激活计算时代的到来,这是一个简单的设备,可以帮助你购物,开灯,烹饪时背诵食谱,等等。事实是,Alexa 开启了一个全新的时代。这并不是大多数乐观主义者所希望的。

Alexa 并没有成为一个充满数字助理、让我们生活更轻松的世界的开端,而是迎来了质疑和担忧。它会在不该打开的时候打开。当我们不想听的时候,它会听。Alexa 的底层机器学习模型并不完美——平心而论,没有人指望它们会完美——但训练这些模型需要我们在自己家里创建的数据。这些数据需要注释。这意味着,在某个地方,某个我们不认识的人在听我们和一台我们可能不知道的电脑说话,甚至一开始就在录我们的音。

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

照片由安德烈斯·乌雷纳Unsplash 上拍摄

我们上面链接的亚当·克拉克·埃斯蒂斯的文章非常详细地阐述了这些问题,但第二段列出了一些最令人不安的东西:

“隐私倡导者已经向美国联邦贸易委员会(FTC)提交了一份投诉,指控这些设备违反了联邦窃听法案。记者调查了永远在线的麦克风和人工智能语音助手的危险。像我这样持怀疑态度的科技博客作者认为,这些东西比人们意识到的更强大,并且侵犯了隐私。最近关于亚马逊员工如何审查某些 Alexa 命令的新闻报道表明,情况比我们想象的更糟。”

现在,我们很多从事技术工作的人都明白,数据是无数公司和解决方案的基石。收集这些数据本质上让这些公司赚钱,并使他们的解决方案更加智能。但是,消费者对他们的每一个行为都被世界上某个地方的第三方编目、存储、分析,有时还被查看和标记的想法并不感到兴奋。

抛开隐私的争论——不是驳回,只是暂时搁置——Alexa 还强调了数据科学和机器学习收集中的一个问题:数据囤积。

只要想想 Alexa 用户创造了多少数据。今天有超过 1 亿个 Alexa 设备。大约 6600 万人拥有智能音箱,亚马逊的 Echo 占其中的 60%。这是一个真正惊人的语音数据量。但现在想想我们上面提到的:有时 Alexa 设备只是打开。他们正在收集更多的数据,其中一些可能是非法的,其他的通常质量很差。

现在,当然,其中一些数据将是非常有价值、有用、信息丰富的数据,亚马逊可以利用这些数据让 Alexa 变得更加复杂。没有人否认这一点(尽管还是有一些隐私问题)。问题是并非所有数据都是平等的。事实上,有些数据非常糟糕。

收集所有的数据,嗯,这是我们这个行业的普遍习惯。但是你最终得到的是这样一个场景:很难理解什么是有用的数据,什么是无用或有害的数据。其目的可能是从大量数据中构建更好的模型,但现在留给你的是一个巨大的数据价值问题。这意味着您将需要一个高级和广泛的数据监管过程,以发现实际上会使您的模型更好的数据。

现在,亚马逊并没有因为资本而受到伤害,但是光靠钱并不能解决问题。但对我们其余的人来说,囤积太多数据并假设这些数据都是有用的或者我们可以在以后解决这些问题的后果更加可怕。尽可能地收集每一份数据会有污染基于这些数据构建的模型的风险。

这就是为什么我们认为数据收集和监管对于商业成功至关重要。了解哪些数据对你的项目有用,哪些数据无用是至关重要的。拥有一个数据监管策略意味着你可以从中形成一个数据收集过程。让我们解释一下:

比方说,你正在研究自动驾驶汽车模型。这是一个数据贪婪的问题,但也是一个有大量有害和冗余数据的问题,这些数据对你的模型没有帮助。我们可以帮助您找到哪些数据真正改善了您的模型现在的行为,以及随着时间的推移,您继续训练它。比方说,理解您的模型对乡村道路数据的需求意味着您可以派司机去收集这些数据,而不是浪费 I-80 上的宝贵资源。随着模型所需数据的发展,您的收集策略也可以随之发展。

换句话说,拥有一个数据收集和管理策略是一件好事。这会让你的公司像亚马逊一样成功吗?那是一项艰巨的任务。但是你不会发现自己浪费时间在坏数据上训练好模型。这当然是一件好事。

我们数据人为什么以及如何帮助对抗新冠肺炎

原文:https://towardsdatascience.com/why-and-how-should-we-data-people-help-fight-against-covid-19-eng-esp-a45ee5e3688a?source=collection_archive---------24-----------------------

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

图片来自 Tim Mossholder 在 Unsplash——免费库存图片

变更数据

英文和西班牙文

—英文版—

为什么是我们

在过去的日子里,你有多少次发现自己在谈论冠状病毒?或者在网上查看主要报纸,寻找最新消息?在不到几个月的时间里,世界的优先事项发生了巨大变化,新冠肺炎现在是世界各国政府议程上的唯一议题。有时,我们似乎生活在科幻电影中。像西班牙和意大利这样的国家关闭边境,设置封锁,以阻止已经显示出令人眩晕和暴力的爆发。尽管我们对这种病毒还有很多不了解,但我们每天遭受的新闻轰炸并没有让任何人更容易理解。假新闻、从可疑来源上传新闻的网站、过多的模因和社交网络传播,在信息至关重要的时刻只会让情况变得更糟。

很多人都在谈论著名的指数增长和平坦化曲线的必要性。然而,很少有网站和专业人士愿意用一种每个人都能理解的方式来解释这些概念。看起来我们想要过度复杂的解释来展示某种智慧,而现在重要的事情是允许普遍获取信息。

鉴于这种情况,一方面,作为数据领域的专业人士,我们很荣幸能够理解微积分,以及什么是指数曲线,它是如何表现的,拐点是什么,以及平坦曲线的概念实际上是如何工作的。然而,从逻辑上来说,并非所有人都是如此。我们不能要求孩子、老人或其他领域的专业人士从早到晚熟悉这些想法。

另一方面,一些组织提供了用于调查和报告的开源数据。例如,约翰霍普金斯大学 CSSE 分校的数据仓库给出了每天报告的、康复的和死亡的病例数。因此,没有理由不从我们的立场出发,至少用可视化和简单的解释来促进理解和普遍获取信息。

我们目前所知的

就像没有人会为了去超市而购买一级方程式赛车一样,显然,我们不能要求世界上任何卫生系统的结构、供应和组织方式能够在任何给定时间面对疫情。在正常情况下,这是不划算的。然而,即使考虑到这一点,主要问题是,根据以前的汽车类比,虽然一些国家足够幸运地拥有奔驰、奥迪或法拉利,但许多国家仍然开着 1995 年的大众帕萨特,或者更糟,80 年代的菲亚特 Uno 或 Mini。

在这种情况下,我们面对的是一种不分种族、洲或社会经济阶层的病毒。这种病毒能够像我们一样轻易地跨越国界和海洋。如果你想知道新冠肺炎是如何如此迅速地失去控制的,只要看看过去 70 年里世界各地区国际游客人数的变化就知道了:

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

来源:我们的数据世界 —开放存取和开源图表和主题

尽管如此,我们从未想到,在不到两个月的时间里(我在中国报告首例病例后 54 天写这篇文章),会有 157 个国家感染了冠状病毒。然而,在我们作为人类的防御中,到目前为止我们对新冠肺炎的了解帮助我们理解了理解这种快速传播的 5 个关键概念:

  1. 潜伏期:从感染到出现症状的时间。尽管存在潜伏期为 19 至 27 天的病例[1],但这些似乎是异常值。根据世界卫生组织,对新冠肺炎潜伏期的大多数估计为 1-14 天[1]。一些政府和组织已经宣布中值和/或平均潜伏期约为 3-5 天,分布的第 95 百分位为 12.5 天。这意味着 95%的人会在头 13 天出现症状[1]。
  2. 序列间隔:传输链中连续病例之间的时间【3】。新冠肺炎病毒的连续间隔估计为 5-6 天[4]。这意味着许多人在传染给其他人之前就会出现症状。事实上,尽管发病前 3-5 天的症状前传播(出现症状前的病毒传播)是流感或普通流感传播的主要驱动因素,但新冠肺炎似乎并非如此。德克萨斯大学的研究人员发现,大约 10%的患者是被携带病毒但尚未出现症状的人感染的[5]。
  3. 发病率或传染率:疾病传播的速度。它是由它的繁殖数来表示的,繁殖数代表单个感染者将病毒传播给的平均人数[1]。根据世卫组织,对新冠肺炎来说,这个数字被理解为在 2 和 2.5 之间[4]。然而,有研究表明其范围为 2.24 至 3.58 [6]。作为参考,普通流感的生殖数是 1.3,而 SARS 是 2.0 [1]。
  4. 死亡率:在 2020 年 1 月 29 日举行的世卫组织新闻发布会上,新型冠状病毒的病死率估计在 2%左右。然而,它指出,在不知道有多少人被感染的情况下,确定死亡率的百分比还为时过早。先前的估计是这个数字为 3% [1]。
  5. 它传播的难易程度:疫情爆发的规模取决于病毒在人与人之间传播的速度和难易程度。冠状病毒主要通过半径约 1.8 米内的人际接触传播,人们通过咳嗽和打喷嚏传播病毒颗粒。这些颗粒可以落在附近人的嘴或鼻子里,但也有可能通过触摸病毒最近降落的表面,然后触摸人的嘴来感染病毒[7]。然而,冠状病毒如此容易传播的原因似乎在于其生物组成。事实是,这种病毒比 SARS 更容易传播,迄今为止感染人数是 SARS 患者的十倍以上[8]。

数百万携带病毒的人跨越国界,有时甚至在不知情的情况下如此迅速地感染他人,这就是病毒诞生的地方,也是我们最近可能听说过的著名的指数增长的地方。下面的 gif 是使用由 3Blue1Brown 制作的视频的一部分完成的,它显示了人们在旅行社区之间是多么容易传染:

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

来源:YouTube 上的 3Blue1Brown 视频 |作者许可。参见 3Blue1Brown 网页

从被感染的人那里被感染,从其他人那里被感染,如此等等,总数是如何在几天内呈指数增长的。这意味着数量成倍增加。怎么会?鉴于攻击率或传染率大于 1,对于每个感染病毒的人,我们将看到更多的人被感染。因此,随着时间的推移,这种从被感染者那里感染到从其他人那里感染的逻辑被传播开来,这要感谢更多的人感染了这种病毒。以这样的曲线结束:

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

由作者绘制

如果我们看看 1 月 22 日至 3 月 6 日期间中国境外有记录的病例总数,我们可以很容易地注意到指数行为:

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

来源:YouTube 上的 3Blue1Brown 视频 |作者许可。参见 3Blue1Brown 网页

不幸的是,YouTube 频道 3Blue1Brown 显示的数字并非巧合。使用前面提到的约翰·霍普金斯大学 CSSE GitHub 数据库上提供的按国家分类的数据,我们可以看到,在中国以外,到目前为止受影响最大的 10 个国家在查看与前一天相比的增长率时都遵循非常相似的行为:

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

作者使用约翰·霍普金斯大学 CSSE 分校的数据制作的图表

这里的主要区别是疾病爆发的实际开始时间。如果我们选取同一组国家,并从较晚的阶段开始检查它们的曲线,而不是从它们宣布第一个病例的那天开始,这些曲线实际上非常相似:

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

作者使用约翰·霍普金斯大学 CSSE 分校的数据制作的图表

在过去 3 周内宣布了首例病例的国家也出现了同样的情况:

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

作者使用约翰·霍普金斯大学 CSSE 分校的数据制作的图表

我知道这看起来不太乐观。事实是我们迟早都会感染病毒。大多数政府目前努力实现的目标是延缓这种大规模传染,以便世界各地的国家卫生系统能够应对需要援助的人数。

在这里,伙计们是我们了解正在发生的核心问题的地方。很多人在反对所谓的狂热和偏执时,都把注意力集中在病毒的死亡率上。然而,尽管 2——3%的死亡率已经相当高了(低于世界其他流行病和疾病,但大大高于季节性流感的 0.1%),但各国目前面临的最大风险是卫生系统的崩溃。回到汽车的类比,记住当一些国家开豪华车的时候,大量的人仍然开着 1980 年的车。或者更糟,他们甚至可能没有一辆合适的车!如果像意大利或西班牙这样的国家无法应对一场侵略性的疫情,其他国家可能会遭受更严重的后果。当医院开始耗尽呼吸器和病床时,老年人、患有其他疾病的病人以及世界上资源较少的大部分人口可能会成为最大的受害者。

这就是为什么现在的主要目标恰恰是让曲线变平的想法。最近有很多关于这方面的讨论,但是从与家人和朋友的交谈中,我注意到,不幸的是,这不是一个容易理解的概念。简而言之,政府试图做的不是永远阻止病毒的传播,而是推迟人们被感染的时间,以便他们能够治疗每个人,而不会导致卫生系统的崩溃。

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

由作者绘制

但是,考虑到前面提到的成倍增长,如果每个病毒携带者会感染 2 到 3 个人,我们如何才能延缓新冠肺炎病毒的传播呢?没那么简单,但是我们需要今天的新增病例数少于昨天的新增病例数,以此类推尽可能多的天数。为了实现这一目标,鉴于病毒仅在人与表面之间传播,隔离和卫生措施是实现最终目标的关键。

《华盛顿邮报》发表了一篇令人惊叹的文章,名为“为什么冠状病毒这样的疫情呈指数级传播,以及如何使曲线变平”通过一组动画清楚地显示了同时感染人数的差异,这些动画显示了有和没有社会距离的社区内的传染情况。但是,最终目标是使今天的新病例数与昨天的新病例数之比小于 1。我们目前进展如何?一些国家比其他国家做得更好,但我们仍有很长的路要走。例如,中国、韩国和台湾似乎正朝着正确的方向前进:

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

作者使用约翰·霍普金斯大学 CSSE 分校的数据制作的图表

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

作者使用约翰·霍普金斯大学 CSSE 分校的数据制作的图表

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

作者使用约翰·霍普金斯大学 CSSE 分校的数据制作的图表

而其他一些国家则像伊朗、法国或意大利一样一直在苦苦挣扎:

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

作者使用约翰·霍普金斯大学 CSSE 分校的数据制作的图表

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

作者使用约翰·霍普金斯大学 CSSE 分校的数据制作的图表

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

作者使用约翰·霍普金斯大学 CSSE 分校的数据制作的图表

作为数据专业人员,我们还能做些什么?

  • 用简单的话解释:帮助其他人看到你可能在图表上看到的东西,以及所有关于病毒行为的精彩在线解释。
  • 提供可视化:事实证明,通过可视化,我们都能更好地理解。此外,好的、免费的可视化可以像病毒一样传播。就像《信息是美丽的》中的数据包一样,我之前使用的视频来自 3Blue1Brown 或者来自 Washington Post 的惊人文章。
  • 组织内部的帮助:所有公司都会受到病毒的影响。理解它现在是如何影响的是减少未来影响的第一步。
  • 参与开源项目:如果你已经是行业内的资深专业人士,考虑让自己参与任何开源项目或团队,尝试虚拟地召集有经验的人一起工作,以获得可行的见解。例如,Flixbus 的数据副总裁 Alexander Stage 正在 LinkedIn 的职位中招聘数据专业人员和研究人员。

不管是什么情况,我们的目标都是从我们每个人的立场出发做出贡献。新冠肺炎展示了人类最糟糕的和最好的一面。从人们囤积卫生纸,储备所有人甚至食物银行,到意大利人在阳台上一起唱歌。让我们为最后一组尽一份力吧!

—西班牙语版本—

什么事?

他们最近几天有多少次谈到冠状病毒?或者检查主要新闻网站是否有最新的更新?在不到两个月的时间里,世界的优先事项发生了巨大变化,coid-19 成为全球数百个国家政府议程上的唯一项目。现在我们好像在看科幻电影。像西班牙和意大利这样的世界大国关闭边界,并对其人民实施封锁,以阻止一场它已经证明是迅速和暴力的爆发。虽然我们对冠状病毒的了解还很多,但轰炸我们每天收到的信息并不一定使我们大家更容易理解。虚假新闻、从可疑来源收集笔记的网站、梅梅和过多的社交媒体出版物,在信息至关重要的时候,使媒体变得混乱不堪。

著名的指数曲线和展平这种曲线的概念得到了广泛的讨论。但是,很少门户网站和专业人员关心如何以大家都能理解的方式解释这些概念。有时,我们似乎喜欢将这些解释复杂化,以显示某种程度的智慧,而现在最重要的是普遍获得信息。

作为当今世界的专业人士,我们有幸理解计算,准确理解指数曲线是什么,它的行为方式,它的转折点是什么,以及展平曲线的概念意味着什么。但是,从逻辑上讲,并非所有人都是如此。我们不能要求儿童、老年人或只是其他专业人员熟悉这些概念。

此外,一些组织还提供了开放日期,供调查和报告使用。例如,位于 GitHub 的 Johns Hopkins CSSE 的“T0”数据存储库每天提供全球每一城市报告、检索和死亡的总人数。因此,我们没有理由不从我们的专业中至少提供能够有助于民众理解的解释和看法。

到目前为止我们知道些什么

正如任何人都不会只有一级方程式赛车去购物一样,显然,我们不能要求世界上任何卫生系统的结构、供应和组织方式使我们能够随时应对大流行病。在正常情况下,如果基础设施和人员能够在流行病最严重的时候对其提出要求,那将是不具成本效益的。但是,即使考虑到这一点,问题仍然是,按照汽车的类比,虽然一些国家有幸拥有奔驰、奥迪甚至法拉利的最新车型,但许多国家仍在使用大众汽车,但更重要的是,大多数国家仍然经营着一辆或一辆 80 年代甚至更早的小型菲亚特。

在这方面,我们作为一个星球面临着不分种族、大陆或社会阶层的病毒。像我们一样容易跨越国界和海洋的病毒。如果我们想知道为什么 coid-19 如此迅速地离开我们的手,我们只需看看过去 70 年来旅游业的发展:

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

资料来源:我们的世界在数据 —开放存取和开放源码图表及主题

由于国际人口流动的增加,我们从未想象过,在不到两个月的时间里(自从中国报告首例病例以来的 54 天前,我撰写了这个故事),会有 157 个国家感染了 coid-19 冠状病毒。但是,在我们作为人类的防卫中,迄今对病毒了解甚少,使我们能够了解病毒的五个关键方面,以了解这种传播:

  1. 潜伏期或潜伏期是指感染与症状发生之间的时间。虽然有 19 至 27 天[1]的情况,但这些情况似乎是例外情况。据世界卫生组织称,大多数估计数将 coid-19 的潜伏期定为 2 至 14 天[1]。一些国家政府和组织报告的平均潜伏期约为 3-5 天,而 95%的人口预计在头 13 天出现症状[1]。
  2. 序列间隔:对应于传输链中连续事例之间的时间[3]。coid-19 的序列间隔估计为 5 至 6 天[4]。也就是说,很多人会先出现症状,然后才能传染给别人。事实上,虽然疾病头 3-5 天的无症状传播(症状前传播)是常见流感的主要传染源,但 coid-19 似乎并非如此。得克萨斯大学的研究人员估计大约。10%的患者感染了病毒,但尚未表现出症状[5]。
  3. 传染率或发作率:是指疾病传播的速度,以感染者平均人数表示。[1]。据世界卫生组织称,就 coid-19 而言,这一数字为每名感染者 2 至 2.5 人。然而,研究表明,这一数字可能高达 3.58 [6]。以 SARS 为例,常见流感的相同数字分别为 1.3 和 2.0。
  4. 死亡率:虽然很难根据不同的测试策略来估计各国政府的死亡率,但世界卫生组织在 2020 年 1 月 29 日的记者招待会上表示,冠状病毒的死亡率可能约为 2%。以前的数字表明,这一数字约为 3% [1]。
  5. 传染性有多容易:爆发的规模直接取决于病毒是如何迅速和容易地以人与人之间的方式传播的。当人们打喷嚏或咳嗽时,冠状病毒主要是通过半径小于 1.8 米的接触以人与人之间的方式传播的。然而,一旦接触到这些微粒可能落在其上的表面,也可能会通过双手接触表面而感染[7]。但是,冠状病毒之所以如此容易传播,是因为它的生物组成,事实证明比 SARS 快得多,容易得多,而且感染 SARS 的人数已经超过后者的 10 倍[8]。

因此,在这几百万人跨越国界、携带病毒、有时甚至不知情、迅速传染给其他人的人群中,我们最近可能都听说过的著名指数曲线正在出现。下面的 gif 是从【3blue 1 brown】拍摄的视频中提取出来的,清楚地表明了在社区间传播是多么容易:

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

资料来源:3 blue 1 brown video on YouTube|作者许可。参见 3Blue1Brown 网页

受感染者的感染情况,等等,是受感染者总数如何呈指数增长的。也就是说它会成倍增长。怎么做?由于感染率高于 1,每一个感染病毒的人,我们一定会看到更多的感染者。因此,随着时间的推移,受感染者传染的逻辑分布在更多的感染者身上,最终形成了这样一个曲线:

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

作者画的

如果我们看看 1 月 22 日至 3 月 6 日期间在中国境外登记的病例总数,我们可以很容易地看到这种行为:

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

资料来源:3 blue 1 brown video on YouTube|作者许可。参见 3Blue1Brown 网页

不幸的是,YouTube 频道【3blue 1 brown】显示的数字并不匹配。使用 johns hopkins csse 提供的 GitHub 存储库按国家分列的数据,我们可以看到,在中国以外,受影响最严重的 10 个国家都在经历着非常相似的增长曲线:

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

作者使用约翰霍普金斯综援资料制作的图表

图中各国之间的主要区别只有在疫情真正爆发时才会出现。如果我们把同一组国家放在一个更高级别的地方,而不是从他们宣布第一个案例的那一天起,曲线就更加相似:

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

作者使用约翰霍普金斯综援资料制作的图表

在过去 3 周内宣布第一批病例的国家也是如此。

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

作者使用约翰霍普金斯综援资料制作的图表

我知道这些图表看起来并不特别乐观。事实是,我们很可能迟早都会感染病毒。大多数国家政府目前正在努力减缓感染速度,以避免大规模感染,使保健系统崩溃,从而能够处理需要医疗援助的病例数量。

而这里是发生什么事的关键所在。很多人对我们所经历的狂热者和偏执狂争论不休,从而对病毒的死亡率产生了共鸣。然而,即使 2-3%的死亡率并不是微不足道的,但目前最大的风险是保健系统的崩溃。回到汽车的类比,让我们回顾一下,虽然一些国家拥有豪华汽车,但许多国家仍在经营一辆 80 年代的汽车。更糟的是,他们连车都没有!如果像意大利或西班牙这样的国家无法应对这种侵略性爆发,其他国家可能会遭受更严重的后果。老年人、患有其他疾病的人,甚至更严重的疾病,或者仅仅是社会上处境最不利的阶层,可能受到最严重的影响。

这就是为什么现在的目标正好是使这一增长曲线平坦化的主要原因。虽然最近很多人谈到这一点,但我在与朋友和家人交谈时注意到,不幸的是,这不是一个大家都能理解的概念。简而言之,各国政府正在努力实现的目标不是永远制止这种传染,而是推迟我们感染的时间,以便卫生系统能够继续运作而不崩溃。

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

作者绘制的图表

但是,如果每一个感染病毒的人又会感染 2 到 3 个人,我们怎么能阻止 coid-19 的传染呢?这并不容易,但我们需要今天的新案件数量少于昨天的新案件数量等等。《华盛顿邮报》一篇名为《T2》的优秀文章“冠状病毒等突破指数传播,以及如何宣传‘T3’”(冠状病毒等哪些爆发呈指数性传播,如何缓解)清楚地表明了同时感染人数的差异通过以下途径传播的情况:一次感染一个人的人数;一次感染一个人的人数;一次感染一个人的人数;一次感染一个人的人数;一次感染一个人的人数;一次感染一个人的人数;一次感染一个人的人数;一次感染一个人的人数;一次感染一个人的人数;一次感染一个人的人数;一次感染一个人的人数;一次感染一个人的人数;一次感染一个人的人数最终目标是,今天新病例数与昨天新病例数的比率低于 1。我们怎么到现在为止?一些国家似乎比其他国家做得更好,但我们肯定还有很长的路要走。例如,中国、南科尔拉台湾似乎正朝着正确的方向前进:

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

作者使用约翰霍普金斯综援资料制作的图表

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

作者使用约翰霍普金斯综援资料制作的图表

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

作者使用约翰霍普金斯综援资料制作的图表

其他国家,如伊朗、西班牙和意大利,看起来不太好:

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

作者使用约翰霍普金斯综援资料制作的图表

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

图片来源:Charts created by the author using data from Johns Hopkins CSSE

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

图片来源:Charts created by the author using data from Johns Hopkins CSSE

作为数据科学专业人士,我们还能做些什么?

  • 用简单的词语解释:帮助其他人看到图表在说什么,以及指数曲线背后的所有喋喋不休,以及平滑它的想法。
  • 提供可视化(T3):事实证明,我们都通过可视化更好地理解。好的开源可视化甚至可以成为病毒式的,例如来自信息是美丽的的数据包,如前面提到的来自3Blue1Brown的视频或来自华盛顿邮报的迷人文章。
  • 在组织内部做出贡献(T11):所有组织都将受到冠状病毒的某种形式的打击。协作了解您现在如何影响是减少未来影响的第一步。
  • 参与开放式项目:对于行业中的高级专业人士,可以参与开源项目或加入希望将专业人士聚集在一起进行可操作见解的团体。例如,flixbus 的数据副总裁 Alexander Stage 正在招募数据专业人员和研究人员。(T15)

无论情况如何,目标是从我们每个人的立场做出贡献。COVID-19 正在展示最糟糕和最好的人类比赛。From people stockpiling toilet paper, stocking out everyone else and even food banks , to people in Italy singing all together from their balconies 。让我们为最后一组做出贡献!

无论如何,目标是从我们的标题中做出贡献。冠状病毒正在显示出人类最糟糕和最好的一面,从人在超市购买几十卷卫生纸并耗尽其余部分,到意大利的邻居在阳台上唱歌。让我们从我们的领域尝试添加到最后一组!

来源:

[1] https://www.worldometers.info/coronavirus/coronavirus-incubation-period/

[2] https://www.who.int/news-room/q-a-detail/q-a-coronaviruses

https://www.definitions.net/definition/serial+interval

[4] https://www.who.int/docs/default-source/coronaviruse/situation-reports/20200306-sitrep-46-covid-19.pdf?sfvrsn=96b04adf_2

[5] https://www.eurekalert.org/pub_releases/2020-03/uota-csq031320.php

[6] https://www.sciencedirect.com/science/article/pii/S1201971220300539

[7] https://www.livescience.com/how-coronavirus-spreads.html

[8] https://www.nature.com/articles/d41586-020-00660-x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值