TowardsDataScience-博客中文翻译-2019-七十二-
TowardsDataScience 博客中文翻译 2019(七十二)
原文:TowardsDataScience Blog
协议:CC BY-NC-SA 4.0
如果你的同事是机器人呢
原文:https://towardsdatascience.com/what-if-your-colleague-is-a-robot-e1256b3e2c94?source=collection_archive---------31-----------------------
人工智能、机器人和合作的奇异未来
SOURCE: © ADOBE STOCK
纵观历史,我们已经看到了整个行业的组织是如何接受机器人技术的,以及今天,这些组织中的一些是如何在没有机器人技术的情况下运作的。每一天,我们都见证了技术是如何融入我们工作生活的几乎每一个方面的,并且在许多情况下,我们依赖它来执行我们的大多数日常任务。
几十年来,组织一直在使用机器人来自动化日常流程。事实上,每天我们都被它们包围着,无论是在家里,在街上还是在办公室——从自动取款机和自动售货机到更复杂的手术机器人和自动驾驶汽车。这些机器人有不同的形式和形状,也许它们看起来不像人类,但企业喜欢它们,它们肯定是大规模生产力的关键驱动力。
现在,想象一个正常的一天——早上醒来,去你的工作场所,喝一杯咖啡,开始与你的同事交谈……一切看起来都很正常,你参与到对话中,交流想法和新想法,然后结束,走到你的办公桌前开始工作。一小时后,你的经理要求你分析和比较五份长篇报告。你没有时间做那件事,那需要太多的工作时间和太多的精力;另外,你还有其他事情要做。因此,你向你的同事寻求帮助,并在一个小时内惊人地得到了结果。
这听起来很不现实吧?没有一个普通的同事会为你做这项工作,甚至这么快就完成。但是如果我告诉你,你的同事是一个机器人呢?一个外表和行为都和其他人一样的机器人。它可以像你一样说话,像你一样思考,几乎像你一样推理。但它仍然是一个机器人。你会有什么感觉?
SOURCE: © ADOBE STOCK
人工智能、机器学习和机器人技术:
许多机器人不是人工智能的,它们被编程来执行重复的任务或运动,以操纵现实世界中的物体。然而,一些专家提出,构成机器人的是它的思考和决策能力,但这难道不意味着使用 AI 吗?
另一方面,人工智能(AI)旨在通过解决问题、学习、感知和推理等技能来复制人类的智能行为。它可能涉及某种程度的机器学习(ML),这是基于授权机器访问数据的想法,这将允许它们自学。
AI 与 ML 和 Robotics 打算创造一个具有人类智能的人造机器/机器人,它能够自己表达原始想法。我们还没有做到这一点,但我们已经取得了很大进展。
你可能已经听说过索菲亚,看起来像人类的社交机器人。如果你知道我在说什么,想想一个更复杂的索菲亚版本,与人类一起工作和协作。
其他重大进展包括所谓的“T4”机器人流程自动化(RPA)。这些软件机器人通过复制人类互动来帮助企业和员工做简单的工作。它只是一个软件,而不是一个物理的人工智能机器人,但这绝对是一个重大突破。
真正的挑战是让 AI 理解自然智能是如何工作的,因为我们知道我们的大脑是如何运作的,我们可以教会 AI 如何思考和学习,但我们仍然不知道所有这些联系如何才能引导 AI 使用抽象推理或“常识”。
SOURCE: © ADOBE STOCK
我的同事是一个机器人:
回到我们开始的地方——机器人旨在通过执行体力和智力任务,与人类一起建立想法,从我们的环境中学习,质疑决策,并一起找到解决方案,来与人类共享工作空间,这将降低许多风险,并成倍提高生产率。
机器人已经可以比人类做得更好,但它仍然需要人类来解释他们的工作,并以战略性和创造性的方式应用结果。出于这个原因,我们需要确保机器人被视为互补而非竞争,并分配给它们没有人愿意做的工作,即紧张而重复的工作;把涉及判断和专业知识的工作留给人类。
再想象一次,同样的场景,你和你的同事进行对话,但是现在你从一开始就确定那是一个机器人。会不会感觉怪怪的?
可能吧,我知道这听起来也很可怕,但是如果我们更深入地思考一下,想想拥有一个人工智能同事的好处而不是坏处,这可能会改变我们的观点。这些优势包括:
安全:涉及使用重型机械、尖锐物体、极高或极低温度、化学品等的任务将由机器人执行。这将保护在危险和不健康工作条件下的工人。
速度和一致性:人工智能机器人工作速度快,没有任何干扰,它们不需要休假,全天候可用。
没有错误:机器人几乎没有犯错的余地,它们精确而优质。
快乐&生产力:最重要的是,所有这些福利都是为了提高员工的快乐和生产力。如前所述,这些机器人将接管那些我们不喜欢的任务。从危险、乏味和重复的基本任务到需要高度分析技能的更复杂的任务。
SOURCE: © ADOBE STOCK
可以由人工智能机器人完成的工作示例:
数据记者:这类记者是那些专注于分析数据的人。人工智能机器人可以更快更有效地完成这些工作。
秘书:像接电话、发邮件、安排会议等行政任务(包括体力、手工任务),都可以由人工智能机器人来完成。
文档审查(律师):许多律师不得不在成千上万的文档中搜寻特定的信息。人工智能机器人可以瞬间过滤信息,还可以分析信息并生成报告。这项工作也适用于其他相关领域。
药剂师:当你去药店时,人工智能机器人可以扫描你的处方并拿到你的药。对于非处方药,你可以指出你的症状,机器人会给出建议。此外,这些机器人可能会访问医院的数据和你的健康记录,以提供更准确的建议。
人工智能警察和情报助理:人工智能机器人可能会通过收集、存储、整理和强调调查所需的关键数据来帮助警察和中情局等机构。他们也可以执行一些体力任务,如巡逻,逮捕,甚至指挥交通。
机器人可以被教会如何混合和提供饮料。从啤酒到招牌鸡尾酒,应有尽有。他们可以在几分钟内制造数百个。
人们对机器人取代人类和消除工作岗位有很多担忧,但这些机器人可能会与人类并肩工作,合作并补充我们的工作,而不是接管工作。事实上,技术创造的就业机会将比它淘汰的多。许多工作将会改变,新的工作将需要一套新的技能,我们必须通过人工智能推动的高级教育和培训系统来获得这些技能。
如果我们打算与机器人共享一个工作空间,并将它们视为合作伙伴而非对手,它们必须首先以人类的身份体验这个世界,这意味着它们需要能够了解我们。这将使人类和机器人之间的互动更加容易,也可以让他们更快地学习。
道德与人工智能同事
就道德而言,我们对人工智能同事有什么期望?
SOURCE: © ADOBE STOCK
人工智能和机器人将对社会、价值观和人权产生巨大影响。
如果我们希望机器自主运行,在某一点上,它们将需要收集大量数据。但是我们希望与机器人分享多少这些数据呢?如果机器人造成事故,谁来负责?我们愿意放弃自己的隐私去和机器人互动吗?我们能相信机器人吗?
随着技术的发展,更多的问题将会不断出现,而我们有责任通过共同努力来实施一个规范和保护这些创新轮廓的结构来回答这些问题。
每个故事都有两个方面,不确定的时代会到来,技术如果出错,会变得危险。因此,我们必须小心管理机器人,最终,人类将负责控制、检查和运行机器人。
人工智能和机器人不应再被恐惧,而应被视为一种合作工具。
是什么影响了 Airbnb 上西雅图的房产预订价格?
原文:https://towardsdatascience.com/what-influences-the-booking-price-of-properties-in-seattle-on-airbnb-32e274ffcfac?source=collection_archive---------38-----------------------
A view of Seattle Skyline with the snowy mountain in the backdrop
Airbnb,一个预订住宿房产的在线市场,发布了一个关于 Kaggle 的数据集。它包含 2016 年西雅图的房产列表数据及其可用性和预订价格。
带着好奇的心,我决定探索数据集。经过一番探索,我想通了这个数据集能回答什么样的问题。
在这里我分享一些我从中发现的感悟。
你可以查看我的项目笔记本和 Github 库,看看我是如何得出这些见解的。
今年可供使用的房产数量趋势如何?
2016 年初,从 1 月到 3 月,西雅图 Airbnb 上首次提供的房产数量急剧增加。三月份之后,增长就不那么快了,尽管全年都在稳步增长。
Vacation rental in Seattle listed on Airbnb
过去一年,酒店入住率的趋势如何?
这有助于我们了解 2016 年西雅图上市酒店的预订比例。它可以被看作是通过 Airbnb 对所列房产的使用率。
入住率在 1 月和 3 月之间波动很大,因为在此期间有大量新物业首次推出。从 4 月到 7 月,入住率为 22-25%。7 月份是西雅图的夏季,所有列出的酒店的最高入住率都超过了 30%。7 月之后,入住率从 30%下降到年底的 23%。
A view of cozy kitchen and dining area from a property in Seattle
这一年有多少房产被占用?
入住的房产数量与 2016 年西雅图选择在 Airbnb 上预订房产的人数成正比。
1 月至 4 月期间,有 400 至 500 处房产被占用。从 4 月份开始,这个数字跃升至* 600。7 月份,又有一波上涨,700 多处房产被占用。入住率在 7 月后接*年底时逐渐下降,2016 年底有* 650 家酒店入住。
An aesthetic house boat property found in Seattle
2016 年房地产的*均价格趋势如何?
从 1 月到 7 月,预订价格总体稳步上升。7 月,*均预订价格超过 150 美元,并保持在 150 美元以上,直到 8 月底。从 9 月份开始,*均价格开始下降。临*年底圣诞节期间,价格略有上涨。
*均价格每月大致有 4 次上涨,你能猜到原因吗?让我们放大到七月。
Celebration of 4th July in Seattle [Image Source]
*均价格在七月的一周中是如何变化的?
周五和周六的价格往往高于其他时间。也许,这可以归因于更多的人选择在周末而不是工作日通过 Airbnb 上市的物业住宿。
2016 年西雅图有哪些类型的房产上市?
大多数房产都是公寓或房子类型。还有大量的公寓、联排别墅和阁楼。
A view of Seattle tower from apartment
回到我开始这篇文章时提出的问题。
影响房产预订价格的因素有哪些?
我们能根据它的位置、大小和便利设施预测房产的预订价格吗?
数据集具有包含属性列表属性的文件。它包含的属性包括位置、邻里关系、便利设施、大小、浴室和床位数量、物业类型等。我们的常识表明,这些属性在决定 Airbnb 上预订的房产价格时起着重要作用。
我创建了热图,以可视化的数字属性之间的关系,包括他们一年来的预订价格。列和行相交处的单元格中的数字表示数据集中两个属性之间的相关性。数字越接* 1,两个属性之间的相关性越高。
从这张热图中可以明显看出,预订价格与酒店可容纳的人数、卧室数量、床位和*方英尺大小等属性高度相关。正如预期的那样,酒店可以容纳的人数与卧室和床位的数量高度相关。
我在这个方向上做了进一步的研究,用岭回归技术训练了一个统计模型,看看这些属性是否可以用来猜测一个房产的价格。
按照训练机器学习模型的标准过程,我首先通过执行以下步骤来准备数据集。
- 连接两个数据框,其中一个数据框包含一年中不同日期的列表价格,而另一个数据框包含该物业的属性,如位置、大小、设施等。这有助于我在估算预订房产的价格时考虑到星期几和月份。
- 消除目标可变价格中缺少值的行
- 将分类变量转换为每个分类级别都有二进制数值的列
- 用列的*均值填充数字列的缺失值。我选择不填充分类变量的缺失值。
- 从数据框中选择的列将作为输入变量 X 和目标变量 y。
- 将 X 和 y 数据集分成训练数据集和测试数据集。
- 在训练数据集上拟合岭回归模型。
- 预测测试数据集中的房产价格。
- 通过计算价格的测试值和预测值之间的 r 值来评估模型的性能,该值大约为 0.63。
- 解释训练回归模型中每个输入变量的系数,以了解其对价格预测的影响。
以下是训练模型中系数绝对值最高的输入变量列表。它们可以被认为是一年中对预测酒店预订价格具有最大意义的酒店和时间的属性。与input_variable
相关联的coef
列中的正值和负值分别表示输入变量对房产预订价格的估计的正面和负面影响的量。
正如您所注意到的,对价格估计影响最大的前两个输入变量与房地产的类型有关。另一个重要的影响因素是房产的位置和邻*区域。根据这个统计模型,酒店中浴室的数量也是价格的一个重要影响因素。
让我们深入挖掘不同类型的输入变量的系数,以了解它们对估计价格的影响有多大。
财产类型对价格估算的影响
- 类型船的属性很可能有更高的预订价格。
- 宿舍,共用房间或帐篷类型的财产很可能有。更低的预订价格
Boat house barges, a unique type of properties found in Seattle
物业邻*对价格估计的影响
根据这些表格,包括东南木兰、温德米尔、西湖、派克市场和先锋广场在内的邻*地区列出的物业更有可能有高预订价格。然而,位于 Crown Hill 和 Laurelhurst 的酒店可能会有较低的预订价格。
Maps of Seattle highlighting Southeast Magnolia neighbourhood on the left and Windermere neighbourhood on the right
一年中月份对价格估计的影响
在六月、七月和八月;该资产可能具有较高的预订价格,而在一月和二月,该资产可能具有较低的预订价格。
The Washington State International Kite Festival in Summer 2019
星期几对价格估计的影响
该房产在周六和周五可能会有较高的价格,而在其他日子可能会有较低的价格。
Tourists enjoying during weekends near Seattle
便利设施对价格估算的影响
配有便利设施的物业,如门卫、游泳池、空调、有线电视、适合活动、热水浴缸、健身房等。很可能会有更高的预订价格。允许吸烟的酒店可能会有较低的预订价格。
A pool house property at Seattle
结论和见解
观察经过训练的模型的系数,可以得出几个结论,我在这里重申。
- 类型船的属性很可能有更高的预订价格
- 宿舍、共享房间或帐篷类型的酒店很可能有较低的预订价格
- 准确的位置和物业所在的社区在决定其预订价格方面起着非常重要的作用。
- 该物业的浴室和卧室数量与预订价格成正比。
- 价格也与它能容纳的人数成正比。
- 对预订价格有积极影响的便利设施包括门卫、游泳池、有线电视、热水浴缸、健身房和电梯。
- 7 月和 8 月的预订价格往往较高,而 1 月和 2 月的预订价格往往较低。
- 周五和周六的预订价格往往会比其他日子高。
- 允许吸烟作为一种礼仪对价格有很大的负面影响。
- 根据现有数据的训练模型,位于菲尼里奇西雅图市的房产不太可能有高价格。
- 由于数据集中的所有属性都位于西雅图,因此市场和辖区等属性在确定价格时不起任何作用,因为它们不会在输入数据中添加任何差异。但是,在对包含美国多个城市的列表的数据集训练相同的统计模型时,他们可能会成为重要的影响者
我希望你觉得这篇文章很有见地。你可以查看我的项目笔记本和 Github 库,看看我是如何得出这些见解的。
什么是数据工程师?
原文:https://towardsdatascience.com/what-is-a-data-engineer-8084680048?source=collection_archive---------15-----------------------
线索:我们是数据科学推动者!
Photo by Franck V. on Unsplash
数据工程师这个职位并不总是和数据科学家这样的职位有着相同的性感内涵。然而,外表并不代表一切,数据工程师的工作实际上构成了数据科学家工作的重要部分。
可以理解的是,像机器学习和人工智能这样的话题总是会赢得流行度竞赛,特别是当它们在主流媒体上越来越受欢迎的时候。然而,这些概念背后的大部分工作源于数据工程工作。
这不是一篇关于数据工程师与数据科学家之战的文章,这里没有牛肉。相反,这篇文章来自于我最*看到的关于这一点的文章海洋:数据科学家 80%的工作是数据准备和清理。
因此,我将谈谈为什么我认为数据工程是一个重要的领域,这是基于它能够实现什么,以及它如何与数据科学一起为行业中的最新技术提供支柱。
人工智能和机器学习模型需要数据
与任何一位数据科学家交谈,他们都会告诉你,获取数据,尤其是拥有他们的模型所需的一切的数据源,是一个遥远的梦想。
在现实世界中,如此有用的数据集非常罕见,这也是数据工程师的第一项技能发挥作用的地方。我们花费大量时间从一系列来源中提取数据集,大部分时间都集中到一个中心来一起使用。
Image Source: https://i.redd.it/2c2megoon2411.jpg
现在任何人都可以从网站上下载静态数据集。数据工程师的好处就是:工程。他们不仅可以从不同的来源为你提供大量的数据,而且可以以一种可重复的方式,频繁地更新,如果需要的话,甚至可以实时更新。
干净的数据=更好的模型
构建 AI 或 ML 模型所需的所有数据现在都频繁地进入你的中央数据中心(如果你想了解更多细节,我最*写了一篇关于如何构建完美数据仓库的文章)。
让你的人工智能和人工智能模型起飞前的下一步是准备数据。这就是我这篇文章的来源。我看到的关于这一点的文章数量,甚至是 2016 年《福布斯》的一项调查,简直是疯了。
Image Source: Forbes
福布斯调查表明,80%的数据科学工作是数据准备,75%的数据科学家认为这是工作中最无聊的部分。
👋你猜怎么着,这也是数据工程师蓬勃发展的地方。我们花了太多时间处理数据,以至于很多工作已经成为我们的第二天性。无论是将数据集连接在一起,清除空值和错误值,将字符串处理成特征,还是聚合数据,我们都能为您提供帮助。
作为免费赠品,所有这些都将以可重复的方式构建,因此随着数据的更新,它也会被清理,从而提供一个一致的新鲜、干净的数据源。
作为二对一,您还可以获得额外的好处,解放您的数据科学家,让他们从模型中挤出每一寸空间,并保持更高的士气,因为他们工作中最无聊的部分现在已经消失了。
最后建立一个模型
我们终于到了,在模型的所有前期工作终于可以开始之后,你可能会认为这是数据工程师消失在深渊中的地方。
然而,任何构建过人工智能和人工智能模型的人都会知道,生活并没有那么简单。在构建模型的过程中,随着更多问题的提出和答案所需的额外数据的增加,上述问题将会多次重复。
这是数据科学家真正闪光的地方,让他们在这里做他们的事情是多么重要,我怎么强调都不为过。到目前为止,我所谈论的一切并不是我想说数据工程师更好或更有价值,而是要展示他们如何能够为数据科学家提供更高效的工作流,以深入了解本质。
一个模型只有在有人要用的时候才是有用的
模型的第一次迭代工作已经完成。我们可以打包回家,对吗?正如你们大多数人已经知道的,事实并非如此。模型可能会建立起来,但需要考虑的事情很少:它将如何在现实世界中使用,以及它多久会变得陈旧。
人工智能或 ML 模型的目的是解决现实世界中的问题,所以现在需要应用它。通常这意味着在应用程序中实现,或者用于细分或预测营销。
Image Source
数据工程师将能够将模型添加到数据管道中,该数据管道根据模型处理您的整个用户群,并相应地对他们进行细分。他们可以利用这一点来触发自动通信或将细分发布到数据层,以便在您的网站上启用细分目标内容。
如果你担心这个模型会在几个月后变得陈旧,不要担心。一个好的数据工程师将能够与数据科学家一起工作,并将他们的工作转化为可以不断更新的东西。输入新数据,重建模型并自动发布。
那么我在暗示什么呢?
无论你是在考虑聘请一名数据工程师,还是想进入数据领域,但不知道从哪里开始,数据工程显然是一个需要考虑的重要领域。
您可以看到构建一个数据模型并使其生效背后有多少工作可以由数据工程师来完成。
获得的效率意味着建立模型的速度会更快,模型无疑会更好,因为数据科学家有更多的时间来调整和改进它们。
寻找更多伟大的数据工程内容?然后 注册我的简讯 学习现实世界的数据工程技术,并接收个人策划的内容。我还经常在时事通讯中刊登订阅者的文章,以增加你的影响力。
什么是 Deepfake,为什么要关注它?
原文:https://towardsdatascience.com/what-is-a-deepfake-and-why-should-you-care-763f667321d0?source=collection_archive---------23-----------------------
Deepfakes 篡改我们的眼睛、耳朵和真实感。我们准备好阻止它摧毁我们对真理的观念了吗?
Photo by Elijah O’Donnell on Unsplash
deepfake 是一种使用人工智能和机器学习技术篡改的图像、视频或音频。尽管 deepfakes 被用于偶尔的搞笑模因,但在错误的人手中,它可能会导致公共危机和金融危机。
第一:deepfakes 是如何产生的?
Deepfakes 是生成式对抗网络(GAN)和无监督机器学习的结果。获得初始数据后,计算机会使用生成器和鉴别器进行自我学习。
发生器生成初始的假图像、音频或视频,并将其发送给鉴别器进行检查。如果它确定图像是假的,生成器根据鉴别器的反馈修改文件。然后,使用提供的数据,生成器再次修改文件,并将其发送回鉴别器进行评估。这种情况会持续下去,直到它骗过鉴别者,让他们认为假文件是真的。
然而,这个过程可能会有问题。如果鉴别器很弱,它可能会过早地将假图像标记为“真实”图像,从而产生不合格的深度假图像。这被称为“肤浅的假动作”,在媒体上经常使用。
Photo by Christian Gertenbach on Unsplash
什么是浅薄的假货?
浅假不如深假有说服力。因为它缺乏同样深度的真实感,所以用你的感官来检测一个肤浅的赝品要容易得多。
一个肤浅的假图像的例子是一个拙劣的 PS 面部交换。或者视频中的浮动剪切头。或者是一个伪装成人类的机器人声音(就像 robocalls cams 中经常使用的那些)。
浅层假货可能比深层假货更容易被发现,但这并不会降低它们的危害性。
CNN 记者吉姆·阿科斯塔(Jim Acosta)是一个流行的浅薄的假视频的受害者。在视频中,有人看到阿科斯塔“攻击”一名白宫实习生。但在真正的无导演版本中,阿科斯塔没有这样做——是实习生试图从阿科斯塔手中夺走麦克风。
尽管不被认可,这个肤浅的赝品仍然产生了影响。阿科斯塔的粉丝仍然支持他,但任何不喜欢他的人都更可能相信他有能力攻击无辜的人——即使他一开始就没有。盲目相信一个来源,不管是真是假,都是一个确认偏差的问题。这也是浅层假货和深层假货迅速传播的主要原因之一。
确认偏差如何确认 deepfakes 的有效性
虽然用我们的眼睛和耳朵很难发现 deepfake,但这不是 deepfakes 的主要问题。
一项涉及 3000 多名成年人的新研究揭示了我们如何感知数据的主要问题。在向参与者展示了带有虚假文本的虚假图像后,结果显示确认偏差影响了他们(以及我们作为人)对深度虚假的看法。
这意味着,如果它强化了我们的信念,我们更有可能分享信息(比如 deepfakes),而不管来源的有效性。它会迅速传播开来,对公众舆论产生影响(就像 Acosta 事件一样),或者对公司造成财务损失。
Photo by Jp Valery on Unsplash
deepfakes 是如何影响公众的
网络安全公司赛门铁克称,三家公司已经陷入了深度假音频骗局。在骗局中,攻击者通过使用 deepfake 音频伪装成 CEO。然后,作为首席执行官的“代言人”,他们给高级财务官打电话,要求紧急转账。
数百万美元就这样没了。
Deepfakes 不仅用于经济利益,也用于报复。这款名为 deepnude 的应用程序将女性的衣服与人工开发的裸体身体互换。未经女方同意创作和传播这些图像被称为报复色情。它已经促使新的立法反对数字篡改图像和视频。
前提是你能识别出一个深度假货,这对于我们的眼睛和耳朵来说是非常困难的。那么我们怎么才能找到他们呢?使用制造 deepfakes 所需的相同类型的算法。
如何检测 deepfakes
新算法可以检测 deepfakes,但不幸的是,这不是一个快速的过程。
一个成功的检测算法的一个方面涉及到一个像素一个像素地研究 deepfake 图像。为了做到这一点,递归神经网络必须研究数以千计的真实和深度伪造图像,以解读其中的差异。
其中一个区别是深度伪造图像的*滑边缘。当插入新图像时,它会使边缘变得不清晰。计算机会使边缘变得稍微*滑一点,但太多了,无法补偿。因此,这种不自然的*滑可以显示图像是一个深度赝品,而不是伪装它。
这种算法可能适用于视频,但现在,它并不完全符合标准。它需要逐帧分析视频,并检查每一帧的像素。当算法完成并确定这是一个深度假视频时,损害可能已经造成了。
Photo by Sonja Langford on Unsplash
时间在流逝…
技术每天都在进步,deepfakes 也不例外。每天坏演员都在学习新的方法来创造高度逼真的深度赝品。我们目前的检测算法可能会在一天内过时。
Kiesha Frue 是一名 专业文案、编辑、 校对。她沉迷于文字、澄清信息和法国香草卡布奇诺(最后一点可能没那么重要。除非那是你的事!).
内核是什么?
原文:https://towardsdatascience.com/what-is-a-kernel-7c532d5d3e56?source=collection_archive---------12-----------------------
探索整体内核与微内核之间的差异或细微差别
在字典中,果仁是坚果、种子或果核中较软的、通常可食用的部分,包含在外壳中,如“核桃仁”。它也可以是某事的中心或最重要的部分“这是争论的核心”。
内核是一个计算机程序,是计算机操作系统的核心,完全控制系统中的一切。
内核通常是在 引导加载程序 之前启动时加载的第一批程序之一。
“引导加载程序是一种加载并启动操作系统或计算机系统的引导时间任务和进程的程序。它能够在计算机启动或引导时将操作系统加载到计算机内存中。引导加载程序也称为引导管理器或引导加载程序。【1】
你可能听过“启动”一个系统的说法。引导装载程序为中央处理器翻译数据处理指令。引导加载程序处理内存和外围设备,如键盘、显示器和扬声器。
The boot system for all standard computers and operating systems — image by Neosmart retrieved the 27th of September.
我隐约感觉到内核作为计算机系统操作的一部分很重要,但是我不确定它是如何操作的。因此,我找到了更多关于 Linux 内核的信息。
Demystifying the Linux Kernel from Digilent blog retrieved the 27th of September.
“…内核是应用程序、CPU、内存和设备之间的屏障。从视频游戏到互联网,应用程序是人们一直在使用的东西
Linux 内核是一个免费的、开源的、单片的、类似 Unix 的操作系统内核。这可以这样表示。
当然可能简化的优点如下。
- 因为涉及的软件较少,所以速度更快。
- 因为它是一个单一的软件,所以它的源代码和编译形式都应该更小。
- 更少的代码通常意味着更少的错误,这可以转化为更少的安全问题。
所有操作系统服务都与主内核线程一起运行,因此也驻留在同一个内存区域。
单片内核的主要缺点是:
- 系统组件之间的依赖关系— 设备驱动程序中的错误可能会导致整个系统崩溃
- 大型内核可能变得非常难以维护。
单片内核中的大多数工作都是通过系统调用来完成的。
系统调用 是程序与操作系统交互的一种方式。当计算机程序向操作系统的内核发出请求时,它就发出了一个系统调用。系统调用通过应用程序接口(API)向用户程序提供操作系统的服务。
在一篇关于极客素材的文章中,计算机硬件、OS 内核、系统功能、应用程序代码和库函数之间的交互:
在计算机科学中,库是计算机程序使用的非易失性资源的集合,通常用于软件开发。
什么是应用程序代码和库代码。更重要的是,两者之间有什么区别?根据对编码的热情,这些可以定义为:
库代码意味着在不同的环境下,可以在不同的应用程序中重用——无需修改代码即可扩展和适应。
应用代码在一个环境中使用,可以改变其行为。作为区别的一个例子,我将实现一个示例日志记录机制。一个编写为应用程序代码,一个编写为库代码。
因此,微内核和单片内核的区别在于系统调用以及‘内核空间’。
Image retrieved from Tech Difference on the 28th of September. A more detailed explanation can be found at https://techdifferences.com/difference-between-microkernel-and-monolithic-kernel.html
主要区别如下:
- 微内核和单片内核的基本区别在于,微内核在不同的地址空间实现用户服务和内核服务,单片内核在同一地址空间实现用户服务和内核服务。
- 微内核的大小很小,因为只有内核服务驻留在内核地址空间中。然而,由于内核服务和用户服务驻留在同一个地址空间中,所以单片内核的大小相对比微内核要大。
- 由于应用程序和硬件之间的通信是使用系统调用建立的,因此单片内核的执行速度更快。另一方面,由于应用程序和系统硬件之间的通信是通过消息传递建立的,所以微内核的执行是缓慢的。
- 由于新的服务将被添加到与内核空间隔离的用户地址空间中,所以微内核的扩展很容易,因此不需要修改内核。与单片内核的情况相反,如果要在单片内核中添加新服务,则需要修改整个内核。
- 微内核比单片内核更安全,就好像微内核中的服务出现故障时,操作系统不受影响。另一方面,如果一个服务在单内核中失败,整个系统都会失败。
- 单片内核设计需要更少的代码,这进一步导致更少的错误。另一方面,微内核设计需要更多的代码,这进一步导致更多的错误。
这可能导致一个粗略的概括。
微内核更慢更安全。
单片内核速度更快,安全性更低。
然而,这并不简单。举例来说,macOS 内核结合了微内核(Mach)和单片内核(BSD)的特性,而 Linux 只是一个单片内核[2]。单片内核负责管理 CPU、内存、进程间通信、设备驱动程序、文件系统和系统服务器调用。
话说回来,内核空间是什么?
在 Linux 系统中,系统内存可以分为两个不同的区域:内核空间和用户空间。内核空间是内核(即操作系统的核心)执行(即运行)并提供其服务的地方[3]
你可能已经听过人们谈论这与机器学习的关系。在机器学习中,核方法是一类用于模式分析的算法。这就是我们谈论关系研究的地方,然而我们将在另一个时间回到这一点。
参考文献:
- https://www.techopedia.com/definition/3324/boot-loader
- https://itsfoss.com/mac-linux-difference/
- http://www.linfo.org/kernel_space.html
这是第 500 天的第 116 天。我目前第 101-200 天的重点主要是编程。如果你喜欢这篇文章,请给我一个答复,因为我确实想提高我的写作或发现新的研究,公司和项目。
什么是神经网络?
原文:https://towardsdatascience.com/what-is-a-neural-network-a02b3c2fe3fa?source=collection_archive---------36-----------------------
神经网络的基本概念
神经网络是一组算法,大致模仿人脑,用于识别模式。他们通过一种机器感知、标记或聚类原始输入来解释感官数据。它们识别的模式是数字的,包含在向量中,所有现实世界的数据,无论是图像、声音、文本还是时间序列,都必须转换成向量。
先说房价预测例子。
假设我们有一些房子及其价格的数据集。我们想拟合一个函数来预测房价。
这里,房子的大小是输入数据( x ) &价格是输出( y )。
所以, y = f(x) 表示房价( y )是房子大小( x )的函数。
如果我们绘制价格和大小的数据,我们会得到这样一个图表-
Fig-1: Housing Price Dataset
现在,让我们使用图表中的这些数据画一条直线,以直观显示数据的趋势。看起来像这样-
Fig-2: Housing Price Dataset with trendline
这条直线代表了与面积相关的房价趋势。如果房子的大小已知,我们可以通过把大小画到那条直线上来求出它的价格。
现在,为了获得完美代表数据集的完美直线,我们使用由神经网络中的神经元计算的线性回归。
什么是神经网络中的神经元?
我们前面说过,房子的大小是输入数据( x 数据&价格是输出数据( y )。
我们上面所做的是,我们给出了一些关于房屋大小的价格示例,在这些数据的帮助下,我们可以预测上面示例中没有列出的任何大小的任何房屋的价格。
这里神经元开始发挥作用。我们将输入数据( x )提供给神经元,并从中获得输出( y )。
Fig-3: Neuron in a Neural Network
这是最简单的神经网络例子。
让它变得稍微复杂一点,让我们假设房子的价格也取决于其他因素。比如家庭规模、卧室数量、步行能力、邮政编码、学校质量和财富。
所有这些因素都是相互关联的,就像-
- 从一个地方到另一个地方的“可步行性”取决于这个地方的地址(邮政编码)。
- “学校质量”也取决于地址。像好的知名学校更有可能在富人区和城市地区。
因此,我们将这些因素中的一部分放入输入层,另一部分放入隐藏层。
因此,总体而言,现在的“房价”取决于所有这些因素。
在上图中,
- 由“大小”、“卧室数量”、“邮政编码”、“财富”创建的层被称为这个神经网络的输入层。
- 由“家庭规模”、“可步行性”、“学校质量”创建的层被称为神经网络的隐藏层。
- “价格”是神经网络的输出。
因此,我们实现了以下内容:
Fig-4: Neural Network Representation
因此,举例来说,不是说第一个节点代表“家庭规模”,它只取决于特征“x1”和“x2”,我们会说,“好吧,神经网络,你决定你想知道什么,我们会给你所有的四个特征来完成你想要的”。
每个输入特征都与这些圆(神经元)中的每一个相连,神经网络的显著之处在于,给定足够多的带有“x”和“y”的训练示例,神经网络非常善于计算出从“x”到“y”的精确映射函数。
深度学习为什么会腾飞?
深度学习优于传统机器学习算法的原因有很多。
从上图中,我们可以看到,
- 对于传统的学习算法来说,随着数据量的增加,性能在某一点后会饱和。因此,从机器学习模型中获得的最高性能不可能那么高。
- 但是对于神经网络来说,随着我们不断增加数据量,性能也会变得更好。因此,为了利用深度学习实现最佳性能,我们需要向神经网络提供大量数据。
这就是深度学习的闪光点。当涉及到大量数据的培育时,它可以比传统的机器学习算法表现得更好。
什么是感知器?
原文:https://towardsdatascience.com/what-is-a-perceptron-210a50190c3b?source=collection_archive---------10-----------------------
神经网络是一个由感知器组成的互联系统,所以可以说感知器是任何神经网络的基础。感知器可以被视为神经网络中单层的构建模块,由四个不同部分组成:
- 输入值或一个输入图层
- 权重和偏差
- 净和
- 激活功能
一个由感知器组成的神经网络,可以被感知为由非常简单的逻辑语句(感知器)组成的复杂逻辑语句(神经网络);“和”和“或”的陈述。一个陈述只能为真或为假,但不能同时为真或为假。感知器的目标是从输入中确定它正在识别的特征是否是真的,换句话说,输出是 0 还是 1。复杂语句仍然是语句,其输出只能是 0 或 1。
遵循感知器如何工作的图并不十分困难:对加权输入(来自前一层的每个输入乘以它们的权重的乘积)求和,并加上偏差(隐藏在圆圈中的值),将产生加权净和。输入可以来自输入层或前一层的感知器。然后,加权的净和被应用于激活函数,该激活函数然后标准化该值,产生 0 或 1 的输出。由感知器做出的这个决定然后被传递到下一层,供下一个感知器在他们的决定中使用。
这些部分一起构成了神经网络层中的单个感知器。这些感知器一起工作,通过传递它看到的特征是存在(1)还是不存在(0),成功地对输入进行分类或预测。感知器本质上是信使,传递与分类相关的特征与分类所具有的特征总数的比率。例如,如果这些特征中有 90%存在,那么输入可能就是分类,而不是只有 20%分类特征的另一个输入。就像海伦·凯勒曾经说过的,“独自一人,我们能做的很少;我们一起可以做很多事情。”这对周围的感知机来说都是如此。
什么是…量子电路传输器?
原文:https://towardsdatascience.com/what-is-a-quantum-circuit-transpiler-ba9a7853e6f9?source=collection_archive---------15-----------------------
奇点研究
优化量子电路
量子电路和门
量子电路是程序在量子计算机上表达的方式。简而言之,量子电路是在量子位上执行的一系列矩阵运算,量子位是位的量子版本。量子电路将一些量子位作为输入,对它们进行矩阵运算,然后作为输出,我们进行测量并得到某些状态向量。一个门只是对一个或多个量子位进行矩阵运算的另一个术语。
减少门数
为什么要减少门数?目前,量子计算硬件通常被约翰·普雷斯基尔等专家认为是“噪声中等规模量子硬件,或“NISQ”级硬件。保持量子硬件隔离和足够冷以消除来自环境的干扰是极其困难的。目前用于量子计算的大多数硬件都必须隔离在一个接*零开尔文(即 F 或 C)的大型超冷却室中……这太冷了!如果不明显的话,保持如此寒冷的东西,比外层空间的*均温度更冷,是极其困难的,但为了防止任何类型的热量(或其他形式的光)与量子计算机芯片相互作用,这也是必要的。
所有这些和门数有什么关系?嗯,保持量子计算机的硬件足够冷是保持其稳定和防止所谓的退相干的一部分。如果光(例如热)与芯片相互作用,就会导致计算错误,并扰乱极其脆弱的量子位。程序运行的时间越长,也就是说,应用于量子电路的门越多,量子位的退相干和环境干扰的机会就越大。因此,减少电路中的门的数量意味着缩短程序的运行时间,这意味着在运行代码时由于故障门或环境干扰导致的去相干和错误的机会更低。
因此,减少门数是研究人员目前的一个巨大焦点。如果我们能减少量子计算机上运行的程序的门数和运行时间,我们就能得到更精确、更高效的算法。
运输工人
Transpilers,或源到源编译器是一个古老的概念,应用于经典计算和量子计算。它们本质上是采用一个版本的代码,以某种方式优化它,也许是通过缩短代码,减少运行代码所需的内存量,或者减少代码的运行时间,新优化的代码是 transpiler 的输出。transpiler 输出的新代码执行相同的任务,并且是等价的,但是在某些方面比原始代码更有效。
量子传输器仍处于起步阶段。它们对于提高 NISQ 类硬件的性能至关重要,因为它们通过减少门数来减少运行时间,正如我们已经知道的,减少门数和运行时间可以减少量子计算机上的计算错误。
基本门和硬件
transpilers 的另一个用途是构建与硬件无关的程序和软件。与大多数笔记本电脑和个人电脑不同,你运行的硬件是一个普通的程序!对于经典计算机来说,这在一定程度上是正确的,但与量子计算机不同。我们实际上可以在特定硬件设置上执行的门操作受到硬件架构和量子位连接拓扑的限制。每个量子位只能与其他几个量子位相互作用,有些门操作根本无法在任何给定的硬件上执行。所有硬件都是如此。当我们为量子计算机编写代码时,有一个执行一组等价的门操作而不引起错误的 transpiler 是必要的。由于已经提到的涉及导致退相干的门误差和环境干扰的原因,具有以最少的方式有效地实现这一点的传输器是非常有用的。
量子复杂性和 QMA 难题
优化一个量子电路有多难?嗯,那要看情况,但是有一些解决方案看起来非常有效。如果我们只想要*乎完美的优化,机器学习是寻找最优线路的一种非常有效的方式。量子电路学习如何优化自己的一个例子可以在论文量子电路结构学习中找到。量子机器学习软件 Penny Lane 有一个这个模型的实现,以及一个为好奇者编写的很好的教程。该实现最小化了 变分量子本征解算器 (VQE)问题的哈密顿量,并改进了初始电路结构。
如果我们想要尽善尽美,这是一个【QMA】的难题。这就是著名的 P vs 克莱数学学院NP 千年奖问题的 NP-Hard 问题的量子等价。
自动定理证明
LEAN,一款由微软开发的自动化定理证明软件,得到了数字理论家凯文·巴扎德诙谐幽默的大力支持,可能会证明(抱歉,我忍不住了)是优化量子电路和为量子计算构建高性能编译器和传输器的重要下一步。
如果你有想法要分享,有问题,或者你需要量子机器学习的咨询服务,请通过 LinkedIn 联系作者,访问奇点网站,或者查看 Github 教程。
主数据管理中实际发生了什么?
原文:https://towardsdatascience.com/what-is-actually-happen-inside-your-master-data-management-369222a14e43?source=collection_archive---------29-----------------------
让我们来看看通往“单一版本的真理”的简单而复杂的过程
当您读到本文时,数据管理社区已经就主数据管理(MDM)是任何组织的数据治理实践中最重要的部分之一达成了多年的一致意见。成为数据驱动型组织不仅仅是获取大量数据。相反,它要求数据以“最干净”的形式用于分析,然后支持决策过程。
通向最干净的数据的道路充满了挑战和困难。举例来说,我们必须能够通过确定哪个来源最可信,并确保不存在重复,使来自各种来源的数据足够可靠,从而成为分析的原材料。有许多工作要做,这正是 MDM 正在做的,不是在一次扫描中,而是在一系列复杂的过程中,需要有史以来最先进的技术。在本帖中,每一个 MDM 过程都将用简单的语言解释,而不会破坏其复杂性。只有理解了 MDM 背后的东西,我们才能开始理解 MDM 在数据治理实践中的重要性。
数据分析
在使用 MDM 创建单一真实来源的过程中,最早的阶段是理解数据源的质量。这项工作正在通过数据分析进行。数据概要分析是审查数据源以了解数据的结构、内容、质量和相互关系的过程。
在这一过程中开展的活动可能包括:
- 统计描述的集合,如最小值、最大值、计数和总和。
- 数据类型、数据长度和循环模式的集合。
- 用关键字、描述和类别等信息标记数据
- 评估数据质量和数据合并时可能出现的风险
- 收集元数据并评估其准确性
- 确定分布、候选键(候选键)、候选外键(候选外键)、函数依赖、嵌入值依赖(嵌入值依赖)以及表间分析的过程。
此外,分析数据可以分为 3 种类型,即:
1.结构发现
通过对数据(如最小或最大数量)进行数学检查,执行验证过程以确保数据一致且格式正确。结构发现有助于我们了解数据的组织情况,例如,以错误格式输入的 ID 号的百分比。
2.内容发现
这是一个逐个检查数据记录以识别错误的过程。内容发现帮助我们发现数据内容中的系统性问题,例如没有区号的电话号码。
3.关系发现发现数据片段如何相互关联的过程。理解数据之间的关系非常重要,因为相互关联的数据可以放在一起以减少重复,或者在不破坏其相关性的情况下进行传输。
数据标准化
数据集成过程是 MDM 实现中非常关键的过程。为了实现有效的数据集成,有必要同步定义、表示和数据结构。这可以通过数据标准化阶段来实现,数据标准化阶段是促进连通性、一致性和信息同步的重要数据质量技术。
数据标准化不仅包括从数据的结构或内容中制定规则,还包括定义需要如何改变数据以适应企业范围的数据定义的规则。组织应该拥有标准的数据规则,这些规则既要健壮又要足够灵活,以适应信息结构的任何变化。
在标准化过程中,原始数据被转换成标准格式,目的是该数据可以被组织中的所有过程、系统和应用程序使用,具有已被标准化和一致的实体的类型和属性。一致的数据格式和值对于简化数据清理过程、识别重复项以及改进系统或部门之间的业务通信非常有用。
数据标准化过程中的一些活动可能包括:
- 消除外来标点符号和空格—一些字符串字符有额外的标点符号或空格需要删除,例如通过字符修剪。
- 数据重新排列—在某些情况下,需要根据标准格式重新组织名字和姓氏等个别标记。
- 数据重新排序-以隐含的顺序重新排列数据,例如邮政地址。
- 消除域值冗余—强化来自不同来源的数据(或来自相同来源的数据),这些数据仍然使用不统一的度量单位。例如,在测量距离时使用公里和英里。
- 不一致格式的对齐—电话号码、邮政编码和其他数据元素等数据可以用不同的方式进行格式化。这种不一致的格式会造成重复,并使数据分析变得困难,因此需要对其进行标准化。
- 数据映射——识别独立数据模型之间相关性的过程。
数据匹配
通过整合来自各种系统和应用程序的信息,MDM 系统将成为组织中可靠和可信的主数据源。但是,在实现这些目标之前,必须确信整合的数据具有正确的相关性,并且没有重复。这可以通过数据匹配或身份解析来实现
数据匹配基本上是在大型数据集中识别重复项的过程。由于实际数据代表相同的项目,但在多个系统中输入或生成,因此可能会出现重复。另一件同样重要的事情是识别非重复数据,因为通常有两个相似的数据表示本质上不同的东西。
数据匹配过程需要唯一的标识符,该标识符可以从不随时间变化的数据属性中获得,例如:姓氏、出生日期、颜色或体积。值得注意的是,匹配过程对数据质量非常敏感。因此,要链接的数据必须首先经过标准化过程,以便具有相同的质量。
至少有两种数据匹配方法,即:
- 确定性匹配—在这种方法中,将比较每个数据记录的唯一标识符,以确定正确的匹配。这种方法并不完全可靠,因为在某些情况下,很难找到能够在两个记录之间提供可靠的兼容性级别的标识符。
- 概率匹配—在这种方法中,比较两个记录之间的几个标识符,并给每个标识符一个权重,以表明匹配的显著性。然后将权重相加,值越高,两个记录匹配的可能性越大。
存活率
在经过匹配阶段并识别出重复数据后,下一步是通过重复数据消除形成黄金记录,这是一项确定哪些数据将保留下来的活动。这个黄金记录将是代表最完整、一致和最新信息的“最佳数据”。
重复数据消除的过程必须经过一组特定的规则,这些规则通常称为生存规则。生存规则的确定有其自身的挑战,因为它必须考虑各种方面,如数据结构、数据源、如何构建数据以及每个组织中存在的业务规则。
一般来说,有三种基本方法用于确定存活率,即:
- 最*—这种方法从最早到最*跟踪数据创建日期,并自动将稍后创建的数据作为幸存者。
- 最频繁—这种方法分析信息出现的频率。重复出现的信息表明数据是持久可靠的。
- 最完整—这种方法将元素的完整性视为决定数据正确性和可靠性的主要因素。填充了最完整元素的数据将被视为最合适的幸存者候选。
即使您处理的数据量不是很大,上面所有的过程听起来也不那么简单。现在,您可以想象一旦处理企业级数据,它会变得多么复杂。因此,这篇文章前面说的 MDM 过程需要大量最先进的技巧和技术来实现并不夸张。到目前为止,我希望我们现在都一致认为 MDM 是数据治理计划中极其重要的元素。
下次见!
AI 是什么?
原文:https://towardsdatascience.com/what-is-ai-38f228d70f5c?source=collection_archive---------15-----------------------
人工智能和机器学习用鸭子解释得非常简单
我的区块链金融学教授加里·詹斯勒喜欢在他的讲座中使用 T2 鸭子测试。然而,在他的背景下,他通常试图解释为什么加密货币应该像证券一样受到监管——不要担心,如果你不知道这意味着什么,没关系,这不是本文的目的。最相关的是鸭子测试的想法。它是这样说的:
如果它看起来像鸭子,游泳像鸭子,叫声像鸭子,那么它很可能就是一只鸭子。
有趣的是,这就是今天人工智能的基本公式。你可以把它分成两部分:训练,这是使用机器学习来完成的,推理,这通常是由人工智能来完成的。
培训:没有比更多数据更好的数据了
如果它长得像鸭子,游起来像鸭子,叫起来像鸭子…
鸭子测试的第一部分是指训练。这可以通过几种方式来实现,这也是机器学习等其他实践发挥作用的地方。然而,不管应用哪种类型的学习,目标是产生一种计算机(或任何可以进行计算的设备,如手机或任何包含“智能”一词的设备)可以使用的算法,以在未来准确识别它之前学习的内容。
Edited Image. (Original Source: Photo by Christian puta on Unsplash)
让我们以鸭子的图像为例。我们希望未来的计算机能够识别鸭子,无论是 JPEG 或 PNG 这样的静止图像,还是 MP4 这样的视频;毕竟,视频只是快速显示的图像的集合(例如,电影视频通常是每秒 24 帧,即 FPS,这意味着在一秒钟内,24 幅图像在屏幕上闪过,以产生看起来像运动的效果)。在图像或视频中识别鸭子或其他物体(通常称为感兴趣的物体)的能力称为计算机视觉,这是一个实用的术语,因为计算机或其他设备正在模拟视觉。计算机视觉是人工智能领域最热门的话题之一,也是世界上唯一一家盈利的纯人工智能初创公司 SenseTime 的专长。
在没有进入机器学习或不同类型的机器学习如何工作的细节的情况下,让我们训练我们的算法来准确识别图像或视频中的鸭子。我们可以通过提供一组图像让它学习来做到这一点,我们称之为训练数据集。在训练数据集中,成千上万只鸭子和非鸭子(任何其他动物或物体)的不同图像。有时,鸭子可能会在陆地上蹒跚而行,而在其他时候,它可能会飞,游泳,或张开嘴嘎嘎叫。我们可能会加入一些更复杂的鹅或天鹅的图片。我们也可以喂它明显不是鸭子的图像(例如,猫,这是一种没有羽毛、翅膀和嘴的四足动物)。我们可以给每张照片贴上“鸭子”或“不是鸭子”的标签,在把所有的图像输入电脑后,电脑应该能很好地分辨出哪些是鸭子,哪些不是。
确认
现在是时候测试它的学习了。在浏览了数千张鸭子和非鸭子的图片后,计算机将生成一种算法(算法只是代码,你可以把它想象成规则),它将用来识别未来的鸭子。然而,在将其部署到现实世界之前,我们需要确保它生成的算法是准确的,以及准确到什么程度。程度尤其重要,因为不同的用例需要不同的准确性水*(我们将在后面详细讨论)。为了测试它的学习,我们有另一组不同于第一组图像的图像,我们称之为验证数据集。
与训练数据集类似,这个数据集也将包含大量图像。有些是鸭子,有些不是鸭子。计算机现在浏览每一幅图像,但不做任何学习;取而代之的是,它应用自己的算法,将每张图片标记为鸭子或非鸭子。作为人类训练员,我们有所有的答案——我们确切地知道有多少张图片是鸭子,以及哪些是鸭子。我们将我们得到的正确答案与计算机做出的猜测进行比较,看看它(以及它的算法)有多准确。
假设该算法能够准确识别 95%的鸭子;即,在 1,000 张鸭子图像中,50 张被错误标记,950 张被正确标记。有错误的 5%的标签被称为错误率。在某些情况下,鸭子的图片被错误地标注为非鸭子。我们称这些错误为假阴性(它被错误地标记为阴性,即不是鸭子)。另一方面,我们有一些非鸭子的图片被错误地标注为鸭子。我们称这些错误为假阳性(它被错误地标记为阳性,例如,一只鸭子)。
错误率的重要性
95%可能听起来很棒——我会很高兴在期末考试中得到这样的分数。然而,将精确度高达 95%的东西投入大规模生产可能是一个可怕的错误。比方说,我们不看鸭子,而是看医学图像来检测癌症的迹象。美国癌症协会估计,2019 年美国将有* 200 万例癌症诊断(更准确地说是 170 万,但为了简化计算,我四舍五入为 2)。如果一个有 95%准确率的计算机算法做出这些诊断,我们会有一个相当大的问题。
一方面,如果 5%的误差都是假阳性,那么 100,000 人将被告知他们患有癌症,而他们并没有患癌症。这可能不言而喻,但被告知患有癌症是一个改变生活的诊断,它在深深的情感层面上影响着患者和他们所爱的人。关于乳腺癌假阳性诊断的长期影响的研究表明,即使在诊断后三年,患者也会感受到心理社会影响的影响。
另一方面,如果 5%的误差都是假阴性,那么许多患者在患癌症时会被告知他们没有患癌症。这对心理和身体都有影响。
没有什么比实践经验更好的了
我们可以自己编写识别鸭子的算法吗?是的,程序员当然可以写一个。但它不太可能接*计算机根据自己看到数千张鸭子和非鸭子照片的经验编写的算法。这就是为什么机器学习最*成为人工智能的一个关键部分。
澄清一下,人工智能和机器学习不是一回事。正如我们刚刚了解到的,机器学习被用来创建算法,这些算法被用来预测(一种奇特而自信的说法猜)某些事情,例如感兴趣的对象是否是一只鸭子。
假设我们的鸭子算法 95%的准确率已经足够好了;也就是说,我们可以容忍 5%的错误率。接下来我们需要做的是将算法投入使用,这个过程叫做推理。
推理
…那么它很可能是一只鸭子。
推理是采用经过训练的算法并将其应用于用例的过程。不像在训练中,没有更多的数据集;相反,数据流入并由算法自动处理,然后产生结果。有了推断,数据就不需要存储了;相反,一旦算法处理了传入的数据,就不再需要它了。
在我们的例子中,我们准备部署我们的鸭子/非鸭子算法。我可以将它安装在我后院的摄像机上(就像我正在使用的算法示例一样,我的后院也是虚构的),以记录鸭子每天访问我的大型锦鲤池塘(虚构的)的次数。在这个例子中,我可能会将我的摄像机称为人工智能摄像机,因为它现在可以拍摄视频,并通过使用我们之前刚刚训练的机器学习算法来思考鸭子是否出现。
在一天结束时,我可能会检查相机的结果,它会告诉我它数了 100 只鸭子。但是这个数据有局限性。推论的问题是,它只能告诉我它可能是一只鸭子,而不是它一定是一只鸭子;毕竟我们知道算法有 95%的准确率。
有 5%的错误率可能是由于假阴性或假阳性造成的,但这对于我的用例来说是可以接受的,因为我的目标可能不是统计参观我的锦鲤池塘的鸭子的确切数量,而是减少参观的鸭子的数量,因为每次它们参观,我的锦鲤都有被吃掉的风险。我可以使用鸭子数量作为基准,尝试做不同的事情,看看这个数字是否有显著变化。例如,我可以在池塘周围放一个狼雕像,然后重新检查我的数字。如果鸭子的数量下降到 99 只,那可能只是由于错误率——我无法从中得出明确的结论。但是,如果降到 10,我会更加确信我的假狼是值得投资的!
另一个问题是,我不知道是 100 只独特的鸭子参观了我的池塘,还是只有一只顽固的讨厌的鸭子。但我可以再次使用机器学习,重新训练我现有的算法,不仅仅是鸭子识别器,而是鸭子面部识别算法,以识别每只鸭子和它们到访的次数。我也可以训练一个全新的算法来识别鸭子的面部,并将这个算法添加到摄像头中,这样在第一个算法识别出鸭子后,第二个算法就可以识别出它是否与之前的相同。
我希望这是一个有趣而简单的例子,说明当今世界的人工智能是什么,以及机器学习是其中的一个重要部分。通过这个例子,我还想指出创建算法时的一些限制,以及部署算法时的注意事项——看似可接受的错误率在生产中扩展时会产生很大的后果。如果你想了解更多关于这种后果的真实例子,可以看看凯茜·奥尼尔的书,数学毁灭的武器 ( 参考链接)。
什么是偏见?
原文:https://towardsdatascience.com/what-is-ai-bias-6606a3bcb814?source=collection_archive---------8-----------------------
AI 偏见的麻烦从定义开始,但不会结束。“偏见”是一个被过度使用的术语,在不同的上下文中,它的意思是非常不同的。
Image: source.
这里有一些偏见的定义供你参考。
- 统计学中:偏差是估计量的期望值与其估计量之差。那太专业了,所以请允许我翻译一下。偏见是指结果系统地偏离了目标。想想射箭时,你的弓没有被正确瞄准。高偏差并不意味着你射得到处都是(这是高方差),但可能会导致一个完美的射手一直击中靶心以下。在这种用法中,这个词没有多少感情内涵。
- 在数据收集(以及统计)中:当您摸索您的数据收集时,因此您的 样本 不能代表您的 感兴趣人群 。“抽样偏差”是这里的正式名称。这种偏见意味着你不能相信你的统计结果。跟随这个链接看我的文章。
- 在认知心理学中:对理性的系统性偏离。在这个简洁的定义中,除了“from ”,每个词都有特定领域的细微差别。翻译成外行话?令人惊讶的是,你的大脑进化出了一些对事物做出反应的方式,心理学家最初发现这些反应令人惊讶。分类的认知偏见清单令人瞠目结舌。
- 在神经网络算法中:本质上是一个截距项。(偏见听起来比那个高中数学单词更酷,对吧?)
- 在社会和自然科学中:任何一系列现象,包括过去/不相关的条件对现在决策的过度影响。例子包括文化偏见和基础设施偏见。
- 电子学中: 用交流信号加在电路中的固定 DC 电压或电流。
- 在地理上: 西弗吉尼亚州的一个地方。(听说法国人也有一些偏见。)
- 神话中:这些古希腊人中的任何一个。
- 大多数人工智能专家认为: 当计算机系统反映了创造它的人类的隐含值时,就会出现算法偏差。(人类创造的一切不都是隐性价值观的反映吗?)
- 大多数人认为:我们过去的经历扭曲了我们对信息的感知和反应,尤其是在不公*对待他人和其他普遍不良的情况下。有些人把这个词与同义。
哦亲爱的。这里的意思相当多,有的比有的辣。
ML/AI 说的是哪一个?
年轻的人工智能学科有一个习惯,那就是从 every-which-where 中借用行话(有时似乎不查原意),所以当人们在 AI 中谈论偏见时,他们可能指的是上面几个定义中的任何一个。想象一下,你准备好接受一篇华丽的论文的情感宣泄,这篇论文承诺要修正 AI 中的偏见……却发现(才几页)他们谈论的偏见是统计学上的偏见。
然而,现在谈论起来很时髦的一件事,却是引起媒体关注的一件事。血淋淋的人类。唉,当我们阅读(和写作)时,我们甚至会带来各种各样的偏见(过去的经历扭曲了我们对信息的感知和反应)。)关于这些话题。
AI 的全部意义在于让你用例子(数据)向计算机解释你的愿望!)代替指令。哪些例子?嘿,那是你作为老师的选择。数据集就像教科书,供你的学生学习。你猜怎么着?教科书有人类作者,数据集也是。
教科书反映了作者的偏见。像教科书一样,数据集也有作者。它们是根据人们的指示收集的。
想象一下,试图用一个有偏见的作者写的教科书来教一个人类学生——如果这个学生最终反映了一些同样的偏见,你会感到惊讶吗?那会是谁的错?
人工智能的惊人之处在于它是多么的不偏不倚。如果它有自己的个性和观点,它可能会勇敢地面对那些向它提供充满偏见的例子的人。相反, ML/AI 算法只是继续你展示给它们的模式的工具。给他们看不好的模式,他们就会回应。在最后两个要点的意义上,偏见不是来自 ML/AI 算法,而是来自人。
偏见不是来自 AI 算法,而是来自人。
算法从来不会自己思考。事实上,它们根本不会思考(它们是工具),所以由我们人类来替它们思考。如果你想知道你能为人工智能偏见做些什么,并深入这个兔子洞,这里是入口。
* [## 注意窗帘后面的那个人
人工智能偏见和公*的严酷事实
medium.com](https://medium.com/hackernoon/ai-bias-and-what-you-can-do-about-it-4a6ae48b338e)
感谢阅读!YouTube AI 课程怎么样?
如果你在这里玩得开心,并且你正在寻找一个为初学者和专家设计的有趣的应用人工智能课程,这里有一个我为你制作的娱乐课程:
Enjoy the entire course playlist here: bit.ly/machinefriend
喜欢作者?与凯西·科兹尔科夫联系
让我们做朋友吧!你可以在 Twitter 、 YouTube 、 Substack 和 LinkedIn 上找到我。有兴趣让我在你的活动上发言吗?使用表格联系。*
什么是 API,它是如何工作的?
原文:https://towardsdatascience.com/what-is-an-api-and-how-does-it-work-1dccd7a8219e?source=collection_archive---------0-----------------------
包括几种不同的类型和它们的作用
https://images.app.goo.gl/Jm3fL1oRmpfhLHRr8
大多数人从未听说过 API,更不用说它是做什么的了。他们可能认为这是一个很酷的新缩写,像 LOL 或 LMAO 一样使他们的短信更容易。
他们不知道这是一项强大的技术,能够成就大事。如今,我们每天使用的应用程序都在使用它。像 Yelp 这样的公司用它来定位附*的餐馆。人们一直在使用 API,而他们自己却不知道。每当你想分享一篇博文或一篇文章或一份食谱,点击脸书、Twitter 或 LinkedIn 的小图标(通常在顶部或边栏)来分享这些信息时,你就在使用 API。
现在你已经对 API 的使用有了一些了解,让我们来看看 API 到底是什么。
什么是 API?
API 是应用程序编程接口的首字母缩写,软件使用它来访问数据、服务器软件或其他应用程序,并且已经存在了相当一段时间。
通俗地说,就是让两个应用互相对话的软件中介。可以把 API 想象成两个人之间的翻译器,这两个人说的不是同一种语言,但是可以通过中间人进行交流
API 非常通用,可以在基于 web 的系统、操作系统、数据库系统和计算机硬件上使用。
开发人员使用 API,通过重用以前的代码,只更改与他们想要改进的流程相关的部分,使他们的工作更有效率。一个好的 API 使得创建一个程序更加容易,因为构建模块已经就位。API 使用已定义的协议,使开发人员能够快速、大规模地构建、连接和集成应用程序。
现在你对 API 有了更好的理解,让我们看看它们是如何工作的。
API 是如何工作的?
API 通过一组规则进行通信,这些规则定义了计算机、应用程序或机器如何相互通信。API 充当任何两台机器之间的中间人,这两台机器为了一个特定的任务想要相互连接。
一个简单的例子是,当你从手机登录脸书时,你告诉脸书应用程序你想访问你的帐户。移动应用程序调用 API 来检索您的脸书帐户和凭证。然后,脸书将从其服务器之一访问这些信息,并将数据返回给移动应用程序。
这些类型的 API 称为 web APIs,是最常见的,但仅限于 web。几乎每台机器或系统都有与其他机器或系统交互的 API。
API 已经存在很长时间了,但是直到最*才开始流行。公司使用这种技术通过寻找更有效的方法来更快地检索信息以服务于客户,从而获得相对于其他公司的优势。
正如我前面提到的,web APIs 并不是唯一存在的。我们将在下一节深入探讨其中的一些。
原料药的类型
Web APIs 是使用最多的,但是还有其他的 API 你应该知道。这些和 web API 一样可靠和高效,但并不广为人知。
REST (RESTful) API —代表具象状态转移,使用轻量级 JSON 格式传递数据。大多数公共 API 都使用它,因为它的快速性能、可靠性以及通过重用模块化组件而不影响整个系统的伸缩能力。
这个 API 通过使用一组统一的预定义操作来提供对数据的访问。REST APIs 基于 URL 和 HTTP 协议,并基于以下 6 个架构约束:
1。基于客户端-服务器的 —客户端处理前端流程,而服务器处理后端流程,两者可以相互独立替换。
2。统一接口 —定义了客户端和服务器之间的接口,简化了架构,使各部分可以独立开发
3。无状态 —从客户端到服务器的每个请求必须是独立的,并且包含所有必要的信息,以便服务器能够理解并相应地处理它。
4。可缓存的 —维护客户端和服务器之间的缓存响应,避免任何额外的处理
5。分层系统 —分层排列各层,以便每个层只能“看到”与其交互的相应层。
6。按需编码 —允许通过下载和执行小程序和脚本形式的代码来扩展客户端功能。这通过减少需要预先实现的功能数量来简化客户端。
一旦你遵循了这些定义的约束,你创建的 API 就是 RESTful 的。
SOAP —简单对象访问协议比 REST 稍微复杂一点,因为它需要更多关于如何发送消息的前期信息。这种 API 自 20 世纪 90 年代末就已经出现,并使用 XML 来传输数据。它需要严格的规则和需要更多带宽的高级安全性。
这种协议没有缓存的能力,具有严格的通信,并且在考虑处理任何呼叫之前需要关于交互的每一条信息。
XML-RPC——可扩展标记语言——远程过程调用。这种协议使用特定的 XML 格式来传输数据,比 SOAP 更古老也更简单。客户端通过向实现 XML-RPC 的服务器发送 HTTP 请求并接收 HTTP 响应来执行 RPC。
JSON-RPC —与 XML-RPC 非常相似,除了这个协议使用 JSON 而不是 XML 格式之外,它们的工作方式是一样的。客户端通常是调用远程系统的单个方法的软件。
结论
这是对这个许多人不知道的外国首字母缩略词的快速介绍。他们可能听说过这个术语,但不清楚这项技术到底是什么。我们讨论了它们是什么,它们是如何工作的,甚至讨论了目前使用的不同类型的费用。
API 已经存在了很长一段时间,只要企业将它们作为运营的一部分,它将继续存在。它们非常通用,并且可以快速实现。我们不应该被 API 吓倒,因为我们已经对它们是什么以及它们是如何工作的有了更好的理解。
人工智能到底是怎么回事?
原文:https://towardsdatascience.com/what-is-artificial-intelligence-all-about-anyway-b57c7eb75f5f?source=collection_archive---------13-----------------------
人工智能
人工智能概述
人工智能(AI)是未来。人工智能只属于电影。人工智能已经是你日常生活的一部分。所有这些都是正确的,这取决于你指的是什么样的人工智能。
如果你认为人工智能是未来的事情,我想给你举个例子来说明人工智能多年来是如何被使用的。我们都依赖应用程序出行,普通人依靠物理地图浏览城市、国家和大陆已经过去很长时间了。一个非常受欢迎的应用是谷歌地图。谷歌使用你在智能手机上的位置数据。并且可以分析运动的速度和方向。它可以在任何给定时间通过实时交通更新为您指明方向。
数据是人工智能的关键,在未来,数据将成为政府、企业和组织的新货币。没有数据,人工智能将是不可能的…在谷歌地图的情况下,数据被收集,人工智能算法被训练,以通过减少时间来改善你的日常通勤。
在媒体上,他们可能会交替使用人工智能、深度学习和机器学习等术语来描述这些技术进步,但它们并不完全相同,我将在另一篇博客中解释它们的区别,但总的来说,主要区别如下图所示。
人工智能是封装机器和深度学习的更大的圆圈。人工智能被归类为智能机器,在给定特定问题的情况下,它会导致最优或次优的解决方案。
维基百科对人工智能程序给出了以下定义,即任何能够感知其环境并采取行动以最大化其成功实现目标的机会的设备。
属于人工智能而不是机器学习的程序往往是可以利用决策树进行逻辑的程序,或者是为可能出现的潜在问题建立规则和指令的程序。
例如,如果你在一个“刚去过”或“远离家乡”的国家用信用卡购物,那么你的银行可以也应该标记所有交易以供审查。一些银行甚至会完全冻结你的卡,直到你确认你在另一个国家使用过你的卡(这对欺诈很有好处,但当你在旅行时,它可能会成为你生活的贝恩……因为当你访问每个国家时,你必须不断更新你的银行)。这个可能没有训练数据,所以不会有机器学习;这是程序员编写的简单规则。
另一方面,其他事情可能由 ML 处理:例如,电子邮件地址中的位数、与电子邮件的域相结合、与 IP 网络相结合、与交易的时间相结合,这些都可能是将 ML 系统推到边缘以拒绝在线交易的特征。
正如你从图表中看到的,人工智能是一个广泛的概念,是在 20 世纪 50 年代建立的。人工智能可以根据人工智能的能力进一步归纳成不同的类别。这些是人工狭义智能、人工广义智能和人工超智能。
人工狭义智能专攻一个领域。例如,有一种人工智能可以在脸书的图片上识别你的脸,但这是它唯一能做的事情。如果你让它开车,它不知道从哪里开始。
人工通用智能指的是一台计算机在一系列领域像人一样聪明。一般智能意味着机器可以完成人类可以完成的任何智力任务。实现这一点比人工狭义智能要困难得多,而且还没有人做到过,所以我们离 iRobot 还有很长的路要走,不要担心!一台机器必须具备人类的素质,比如能够计划、解决问题、快速学习、从经验中学习、一次性学习、抽象思维等等,才能拥有一般的智能。
人工超级智能由人工智能思想家和牛津哲学家定义为“在每个领域都比最优秀的人类大脑聪明得多的智力,包括科学创造力、智慧和社交技能。”人工超级智能的范围从比人类稍微聪明一点的计算机到比人类聪明一倍的计算机。
人工狭义智能早已存在,在日常生活中无处不在。就像工业革命一样,很多人把 AI 称为开启了一场智能革命。在那里,人工智能将从狭义人工智能转变为广义人工智能,然后在智能水*上指数级提高到超级智能。
什么是大数据?来回答一下这个问题吧!
原文:https://towardsdatascience.com/what-is-big-data-lets-answer-this-question-933b94709caf?source=collection_archive---------8-----------------------
以及为什么您作为最终用户是最重要的产品
Photo by kmuza on Unsplash
ig Data 是一个在媒体、董事会会议室以及两者之间的任何地方都广为流传的词语。它已经被使用、过度使用和错误使用了太多次,以至于很难知道它真正的意思。是工具吗?是技术吗?难道只是数据科学家用来吓唬我们的流行语?它真的会改变世界吗?还是毁了它?首先,我们只能说大数据每天都在“快速”增长,如此之快,以至于世界上 90%的数字数据都是在过去两年中创建的。
什么是大数据?
大数据?在其最纯粹的形式中,大数据用于描述大量结构化和非结构化数据,这些数据如此之大,以至于难以使用传统技术进行处理。因此,大数据就像它听起来的那样,是一大堆数据。
大数据是一个相对较新的概念,它代表了现在正在收集的不断增长的数据量和各种类型的数据。大数据的支持者经常称之为世界的“数据化”。随着世界上越来越多的信息转移到网上并数字化,这意味着分析师可以开始将其作为数据使用。社交媒体、在线书籍、音乐、视频和传感器数量的增加都增加了可供分析的数据量的惊人增长。
你在网上做的一切现在都作为数据被存储和跟踪。在 Kindle 上阅读一本书会产生关于你在读什么、什么时候读、读得多快等等的数据。同样,听音乐会产生关于你在听什么、什么时候听、听的频率和顺序的数据。你的智能手机会不断上传你的位置、移动速度和使用的应用程序等数据。
同样需要记住的是,大数据不仅仅是我们正在生成的数据的数量,它还涉及所有不同类型的数据(文本、视频、搜索日志、传感器日志、客户交易等)。).考虑大数据时,请考虑“七个 V”
- 卷:大数据,嗯……大!随着互联网、移动设备、社交媒体和物联网(IoT)技术的迅猛发展,所有这些来源生成的数据量也相应增长。
- 速度:除了变得更大以外,数据的生成和组织处理数据的能力也在加速。
- 多样性:在更早的时候,大多数数据类型都可以整齐地捕获到结构化表的行中。在大数据世界中,数据通常以非结构化格式出现,如社交媒体帖子、服务器日志数据、经度地理坐标、照片、音频、视频和自由文本。
- 可变性:非结构化数据中单词的含义可以根据上下文发生变化。
- 准确性:由于有许多不同的数据类型和数据源,大数据集中不可避免地会出现数据质量问题。准确性是指探索数据集的数据质量,并系统地清理数据,使其对分析有用。
- 可视化:一旦对数据进行了分析,就需要以可视化的方式呈现出来,以便最终用户理解和操作。
- 值:数据必须结合严谨的处理和分析才有用。
大数据术语
不可避免的是,围绕大数据的许多困惑来自于围绕它涌现的各种新术语。以下是最受欢迎的几个:
- 算法 —软件运行分析数据的数学公式
- 亚马逊网络服务(AWS) —云计算服务的集合,帮助企业执行大规模计算操作,而无需内部存储或处理能力
- 云(计算) —在远程服务器上而不是本地运行软件
- 数据科学家 —从数据中提取见解和分析的专家
- Hadoop —允许存储、检索和分析超大型数据集的程序集合
- 物联网(IoT) —指的是收集、分析和传输自身数据(通常无需人工输入)的物体(如传感器)
- 预测分析 —利用分析来预测趋势或未来事件
- 结构化 v 非结构化数据 —结构化数据是可以组织在一个表中的任何东西,以便它与同一个表中的其他数据相关联。非结构化数据是一切不能。
- 网络搜集 —从网站上自动收集和组织数据的过程(通常通过编写代码)
大数据的重要性:
大数据的重要性不在于数量,而在于你如何处理数据,以及你如何利用数据进行分析,从而让你的企业和组织受益。
大数据有助于分析:
- 时间
- 费用
- 产品开发
- 决策等
大数据与分析相结合,可以帮助您确定企业失败的根本原因,并根据对客户购买历史的分析来分析销售趋势。还有助于确定欺诈行为并降低可能影响组织的风险。
大数据的使用
大数据技术非常有利于企业提高效率和开发新的数据驱动服务。大数据有多种用途。例如,分析包含天气报告的一组数据来预测下一周的天气。
以下是大数据的一些用途及其使用场合
- 卫生保健
- 检测欺诈
- 社交媒体分析
- 天气
- 公共部门。
大数据在医疗保健中的贡献
大数据在医疗保健领域的贡献大幅增长。随着医学的发展,需要存储大量的病人数据。大数据被广泛用于存储患者的健康史。
该数据可用于分析患者的健康状况并防止未来的健康问题。在这两个有趣的大数据可视化示例中,我们可以直接看到大数据的威力:
- 谷歌的著名表现是,他们可以根据人们何时何地搜索与流感相关的词汇来预测流感的爆发。
- 当你喉咙痛的时候,你的耳朵也会感染吗?通用电气找到了这些问题的答案,或者至少是试图回答这些问题。Health Infoscope 是 7200 万份电子记录的汇编,显示了一种疾病与另一种疾病的联系。它还显示了这种联系的强度以及因一种疾病感染另一种疾病的可能性。
检测欺诈行为
欺诈检测和防范是当今大数据的众多用途之一。信用卡公司面临许多欺诈,大数据技术被用来检测和预防欺诈。
早期的信用卡公司会跟踪所有交易,如果发现任何可疑交易,他们会打电话给买家,确认交易是否完成。但是现在可以观察购买模式,并使用大数据分析来分析受欺诈影响的领域。这对于防止和发现欺诈非常有用。
社交媒体分析
大数据的最佳使用案例是在脸书、Twitter 等社交媒体网络上持续流动的数据。数据以评论、图片、社交状态等形式收集和观察。
公司使用大数据技术来了解客户的需求,并检查他们在社交媒体上的言论。这有助于公司分析并提出有利于公司发展的战略。
天气
大数据技术被用来预测天气预报。大量的数据是关于气候的,取一个*均值来预测天气。这对于预测洪水等自然灾害是有用的。
国营部分
大数据用于许多政府和公共部门。大数据为电力调查、经济促进等提供了很多便利。
大数据还用于许多其他领域,如教育部门、保险服务、交通运输。安全情报等。大数据已成为分析的重要组成部分,是理解业务增长和制定战略以帮助其进一步发展所必需的。
为什么它变得如此受欢迎
大数据最*的流行在很大程度上是由于技术和基础设施的新进展,允许处理、存储和分析如此多的数据。在过去的五年中,计算能力有了很大的提高,同时价格也在下降,这使得中小型公司更容易获得计算能力。同样,用于大规模数据分析的基础设施和工具变得更强大、更便宜、更易于使用。根据
随着这项技术变得越来越强大,越来越便宜,许多公司开始利用它,创造产品和服务,帮助企业利用大数据提供的所有优势。根据 Inc 的数据,2012 年大数据产业价值 32 亿美元,并且还在快速增长。他们说,“到 2015 年,[大数据]行业总收入预计将达到* 170 亿美元,比整个 IT 市场的增长速度快 7 倍左右”。
企业也开始注意到大数据趋势。在最*的一项调查中,“87%的企业认为大数据分析将在未来三年内重新定义其行业的竞争格局。”
企业为什么要关心?
数据一直被企业用来通过分析获得洞察力。大数据的出现意味着他们现在可以在更大的规模上做到这一点,考虑越来越多的因素。通过从更多样化的数据集中分析更大量的数据,企业可以更准确地获得新的见解。这直接有助于改善组织内的绩效和决策。
大数据正迅速成为公司超越同行的重要方式。良好的数据分析可以突出新的增长机会,识别甚至预测市场趋势,用于竞争对手分析,产生新的销售线索等等。学会有效地使用这些数据将使企业的运营更加透明,预测更准确,销售更快,利润更高。
未来
没有人能够预测大数据的未来。新技术的快速发展,尤其是在机器学习领域,无疑会篡夺我们试图做出的任何预测。可以肯定的是,大数据将会继续存在。我们产生的数据量只会增加,通过分析,我们可以了解并最终能够预测一些非常酷的事情。很快,大数据将触及并改变每个行业和日常生活的方方面面。
结论
无论你是否相信关于大数据是否会改变世界的宣传,事实仍然是,学习如何有效地利用最*涌入的数据可以帮助你做出更好、更明智的决策。从大数据中得到的不是它的庞大,而是它的多样性。你不一定需要分析大量数据来获得准确的见解,你只需要确保你正在分析的是正确的数据。为了真正利用这场数据革命,你需要开始考虑新的和各种各样的数据源,这些数据源可以让你更全面地了解你的客户、市场和竞争对手。借助当今的大数据技术,一切都可以作为数据使用,让您获得无与伦比的市场因素。
如果你想联系我,顺便说一句,你知道一个好笑话,你可以在 Twitter 或 LinkedIn 上联系我。
感谢阅读!😄 🙌
比特币是用来做什么的?
原文:https://towardsdatascience.com/what-is-bitcoin-used-for-e3b0745d0b80?source=collection_archive---------12-----------------------
Photo by Icons8 team on Unsplash
比特币价格波动背后的一瞥
卑微的出身
在 2008 年的万圣节,在全球金融危机的最后阶段,一个化名为 T2 中本聪 T3 的个人或团体发布了 T4 比特币白皮书 T5。几个月后,2009 年 1 月 9 日,比特币向全世界发布,任何人都可以下载一份客户端来托管分布式账本的副本。四天后,哈尔·芬尼收到了第一笔比特币交易——中本聪给了哈尔 10 个比特币。
慢慢地,在 2009 年到 2013 年间,收养继续蔓延。2010 年,Laszlo Hanyecz 进行了世界上最著名的比特币购买;向任何愿意给他买两个披萨的人支付10000 比特币。这 10,000 个比特币当时价值约 30 美元。相比之下,在写这篇文章的时候,藏起来的比特币价值 1.036 亿美元。这个著名的购买日已经作为比特币披萨日载入史册。
Source: Google Finance
除了买披萨,比特币还作为一种支付方式而出名。到 2012 年第三季度,允许商家接受比特币的支付处理器 bit pay已经有 1000 家商家注册使用这项服务。凭借其匿名性的价值主张,比特币迅速成为黑暗网络上的一种流行支付选择。2013 年, FBI 查封了黑暗网站丝绸之路,收缴了26000 比特币;随后,它又从“丝绸之路”的创始人和前所有者罗斯·乌布里希特手中没收了另外 14.4 万枚比特币。
虽然比特币的历史充满了不同潜在用例的轶事,但事实仍然是,加密货币仍然在努力实现一个目标。批评者强调了这个问题,并认为比特币(和其他加密货币)试图解决一个并不存在的问题。数字货币的支持者声称,比特币将在未来解决世界上所有的金融问题。从品牌问题到技术障碍,十年后,比特币的使用案例仍然只是理论上的。
盲目转向的副作用
比特币对未来做出了许多承诺,但其 1857 亿美元的市值目前仅由投资者的信心支撑。看涨的比特币估值充斥着加密货币新闻领域,例如这篇发表于 2019 年 6 月的文章声称比特币到 7 月中旬可能达到 2 万美元,到年底可能达到 10 万美元。无论是比特币交易所交易基金还是脸书的 Libra 都没有显著提升比特币的价值,尽管狂热分子可能会这么说。
The Bitcoin market did not react to Facebook’s Libra announcement. (Source: Coin Market Cap)
当预测价格被强调时,除了“如果它继续它的抛物线轨迹”之外,很少或没有关于价格如何到达那里的路线图被提及;换句话说,如果人们继续以目前的速度购买,比特币价格将会上涨(显然)。这种推理对机构投资者来说永远行不通——比市场如何表现更重要的是,市场为什么会以那种方式表现。
也就是说,信仰是一种强大的燃料。它为宗教、现有货币、政府提供动力,并将每枚比特币的价格推高至 1 万美元。但由于只有有限的采用(不到 1500 亿美元的市值),仅用信心刺激市场会导致价格波动。
如果没有用例,比特币主要存在于两个地方:集中交易所和信徒的冷藏钱包。不过,这些地点很受欢迎,因为它们允许比特币社区通过投机实践自己的信仰。虽然冷藏钱包将一定量的比特币供应挡在了市场之外,但集中式交易所提供了一个考验信心的舞台。
在撰写本文时,比特币的 24 小时美元交易量约为 137 亿美元。按每比特币 10.4 万美元计算,这大约相当于 24 小时内有约 130 万比特币被交易。相比之下,这一数量与公开交易市场上的Planet Fitness的数量相似。相比之下,行星健身的市值只有 58 亿。
Source: Coin Market Cap
然而,与 Planet Fitness 所在的证券交易所不同,比特币的交易所不受监管,这意味着清算资产的规则较少。例如,如果 Planet Fitness 的一名董事会成员想要出售一批股票,就需要向市场公布,通常会在提交给 SEC 的 10-K 报告中注明。另一方面,比特币巨鲸可以随时清算,不需要任何解释。因此,比特币价格的大幅上涨或下跌比股票市场更常见;毕竟,一旦投资者失去信心,他们可以立即匿名清算他们所有的比特币。
比特币作为交易货币的局限性
虽然它被设计为一种进行数字化、点对点交易的方式,但该技术目前还不具备可扩展性。它在很大程度上依赖于所谓的工作证明,这是一种用于证明交易发生的方法。
使用这种方法的好处是,比特币网络上的用户不需要相互了解或信任,也不需要依赖第三方作为对交易拥有最终决定权的中央机构。这种方法的好处来自于速度的代价,尽管。比特币网络每秒只能处理 7 笔交易。如果您想了解更多关于工作证明事务速度问题的细节,请查看下面我以前的文章:
[## 区块链的可扩展性问题&类似 Visa 的交易速度竞赛
是的,区块链有一个可扩展性问题。这就是问题所在,这就是人们正在解决的问题。
towardsdatascience.com](/the-blockchain-scalability-problem-the-race-for-visa-like-transaction-speed-5cce48f9d44)
更准确地说,每 10 分钟,一批交易(称为交易块,因此称为“块”链)被验证。然而,问题是这个批处理的容量只够容纳这么多的交易。例如,如果你去星巴克,用比特币购物,在最好的情况下,如果星巴克足够慷慨,只接受 1 次验证,你购买的咖啡将被放入下一批,并在 10 分钟内得到验证(只接受 1 次验证有风险,但我们不会在本例中深入讨论)。
另一方面,如果您前面有一个很长的交易列表,您的咖啡交易可能无法进入下一批。最终发生的情况是,您的事务排队等待下一批。事务正在等待的队列被称为内存池。所以现在你要等上一批交易完成后再等 10 分钟;也就是说,你必须等待 20 分钟。即使这样,也不能保证。希望到现在为止,你已经明白了这一点,并且明白了用比特币买一杯咖啡会有多麻烦。
然而,如果你在任何集中的交易所交易,你可能会认为比特币的速度几乎是即时的,但这是一种错觉。在中央交易所,所有的比特币都储存在一个地方。你的比特币和我的在一起。该交易所只是管理一个数据库,根据每笔交易增加和减少你拥有的比特币记录。这就是为什么比特币最大主义者认为你不会真正拥有你的比特币,除非它在你的钱包里;如果它在交易所交易,你就有风险。交易所可能有一天会带着你所有的硬币消失,或者干脆拒绝给你你购买的硬币。
作为价值储存手段的比特币
在比特币目前的状态下,我认为它唯一的实质性用途是价值储存,类似于黄金。它是一种投机性资产,因为除了承诺未来价值之外,它没有任何实际价值。大多数人持有比特币是因为这种前景,而少数人可能会进行短期交易以对冲这种押注。
作为价值储存手段,比特币有几个有利的属性。首先,它可以被拥有,并且易于存储。与黄金不同,比特币可以存储在 u 盘上,不管你拥有多少。黄金占据物理空间,持有大量黄金会变得引人注目。比特币也是有固定金额的。总的来说,全球可用的比特币不会超过 2100 万个。黄金虽然稀有,但仍在继续开采,供应量也在不断增加。比特币也很难模仿。它是无法伪造的,尽管骗子可以卖给无知的买家。另一方面,受过教育的买家比假黄金或假现金更容易发现假比特币——他们只需检查区块链,那里有流通中的每一枚比特币的公共记录。
最后,比特币越来越被广泛理解——人们很好奇。谷歌搜索趋势表明,搜索词“比特币”今天的受欢迎程度是 2016 年这个时候的 3 倍(在 2017 年末,最*的泡沫期间,受欢迎程度达到顶峰)。虽然比特币与黄金相比还远未普及,但它的普及程度正在提高,随着越来越多的人开始获得比特币,它作为价值储存手段的地位变得更加可信。
随着比特币社区继续开发更多技术来构建比特币区块链,未来数字货币的使用案例可能会增加。目前,它仍然是一种投机性的、不可扩展的资产,目前被作为价值储存手段持有。
什么是认知计算?企业如何从认知技术中获益?
原文:https://towardsdatascience.com/what-is-cognitive-computing-how-are-enterprises-benefitting-from-cognitive-technology-6441d0c9067b?source=collection_archive---------2-----------------------
自从计算的概念提出以来,人工智能确实是一个遥远的目标,随着新的认知计算模型的出现,我们似乎每天都在离这个目标越来越*。
来自认知科学的融合,并基于模拟人类思维过程的基本前提,认知计算的概念以及应用必将不仅对我们的私人生活产生深远的影响,还会对医疗保健、保险等行业产生深远的影响。认知技术的优势确实超越了传统的人工智能系统。
根据最先进的认知计算框架 IBM Watson 总经理大卫·肯尼的说法,“人工智能只能和教它的人一样聪明。”对于最*的认知革命来说,情况并非如此。
认知计算过程使用人工智能、神经网络、机器学习、自然语言处理、情感分析和上下文感知的融合来解决日常问题,就像人类一样。 IBM 将认知计算定义为一种高级系统,它可以大规模学习,有目的地推理,并以自然的形式与人类互动。
认知计算与人工智能
虽然人工智能的基本用例是实现解决问题的最佳算法,但认知计算则更进一步,试图通过分析一系列因素来模仿人类的智力和智慧。与人工智能相比,认知计算是一个完全不同的概念。
- 认知计算学&模仿人类思维过程
与只处理给定问题的人工智能系统不同,认知计算通过研究模式来学习,并建议人类根据其理解采取相关行动。在人工智能的情况下,系统完全控制一个过程,并采取措施通过使用预定义的算法来完成任务或避免某个场景。
相比之下,认知计算是一个完全不同的领域,它充当助手,而不是完成任务的人。通过这种方式,认知计算赋予人类更快、更准确的数据分析能力,而不必担心机器学习系统做出的错误决策。
- 认知计算并没有将人类排除在外
如上所述,认知计算的主要目的是帮助人类做决策。这赋予了人类在分析中卓越的精度,同时确保一切都在他们的控制之下。为了说明,让我们以医疗保健系统中的人工智能为例。一个人工智能支持的系统将在不咨询人类医生的情况下做出所有关于治疗的决定,而认知计算将利用自己的一组数据和分析来补充人类诊断,这有助于提高决策的质量,并为关键流程添加人情味。
走向认知:认知计算的优势
在过程自动化领域,现代计算系统将彻底改变当前和遗留系统。根据 Gartner 的说法,认知计算将颠覆数字领域,这与过去 20 年中引入的任何其他技术都不一样。通过具有分析和处理大量体积数据的能力,认知计算有助于将计算系统用于相关的现实生活系统。认知计算有许多优势,包括:
- 精确的数据分析
认知系统在收集、并置和交叉引用信息以有效分析情况方面效率很高。如果我们以医疗保健行业为例,IBM Watson 等认知系统帮助医生收集和分析各种来源的数据,如以前的医疗报告、医学期刊、诊断工具以及来自医疗界的过去数据,从而帮助医生提供数据支持的治疗建议,使患者和医生都受益。认知计算没有取代医生,而是采用机器人流程自动化来加速数据分析。
- 更精简&更高效的业务流程
认知计算可以分析新兴模式,发现商业机会,并实时处理关键的以流程为中心的问题。通过检查大量数据,像沃森这样的认知计算系统可以简化流程,降低风险,并根据不断变化的环境进行调整。虽然这为企业建立对不可控因素的适当响应做好了准备,但同时它也有助于创建精益业务流程。
- 改善客户互动
通过实施机器人流程自动化,该技术可用于增强客户互动。机器人可以向客户提供上下文信息,而无需与其他员工互动。由于认知计算使得仅向客户提供相关的、上下文相关的和有价值的信息成为可能,因此它改善了客户体验,从而使客户满意并更多地参与到业务中。
工作中的认知计算:全球组织如何利用这项技术
根据技术专家的说法,认知计算是未来。许多成功和成熟的企业已经将该技术集成到他们的日常业务中。有许多成功的用例场景和认知计算示例向世界展示了如何高效地实现认知计算。让我们来看看该技术的一些成功使用案例:
- Cora-苏格兰皇家银行智能代理
在 IBM Watson 的帮助下,苏格兰皇家银行开发了一个智能助理,能够在一天内处理 5000 个查询。利用认知学习能力,该助理使 RBS 能够分析客户投诉数据,并创建一个常见问题库。该助理不仅分析查询,而且还能够提供 1000 种不同的回答,并理解 200 种客户意图。
这位数字助理学会了客户如何询问一般问题,如何处理查询,如果太复杂,如何转给人工代理。
- Welltok 的健康护理门房
Welltok 开发了一种高效的医疗保健门房——caféWell,它通过处理大量医疗数据来更新客户的相关健康信息。 CaféWell 是一种全面的人群健康工具,健康保险提供商使用它来帮助他们的客户获得改善健康的相关信息。通过从各种来源收集数据和最终用户对问题的即时处理,CaféWell 提供智能和定制的健康建议,以提高健康商数。
Welltok 的首席执行官 Jeff Margolis 在讨论 CaféWell 时说:“我们必须超越当前为患者建立的‘疾病护理’系统,转变为优化每个消费者健康状况的系统。要做到这一点,该行业需要一种实用但完全不同的方法来吸引全国 85%的人口,他们每天都在做出影响他们健康的选择。”
- 从个人旅行规划师到简化旅行计划的开拓者
由认知技术驱动, WayBlazer 的旅行规划器通过用自然语言提问,让旅行者更容易规划旅行。礼宾员询问基本问题,并通过收集和处理旅行数据以及对旅行者偏好的洞察来提供定制结果。
这种类型的认知驱动工具有助于旅行者节省搜索航班、预订酒店和计划活动的时间,而无需在最终确定旅行之前研究几个网站。旅行社已经成功地使用了这种工具,同时帮助他们增加了收入和客户满意度。
- Edge up 的智能工具,通过手机 App 管理梦幻足球队
梦幻足球是全球 3300 多万人非常喜爱的娱乐消遣方式。在认知学习和计算的帮助下, Edge Up Sports 开发了一个工具,并与他们的移动应用程序集成,帮助用户通过问简单的问题来起草他们的幻想团队。
这些问题用自然语言起草,让用户更容易做出决定,然后由系统通过浏览社交媒体和新闻报道中关于球员的数据进行分析,并评估用户情绪,帮助球队经理做出更好的决定。
认知计算的问题:更美好未来的挑战
每项新技术在其生命周期中都面临一些问题。尽管由于认知计算的内在优势,创新有可能改变生活,但由于害怕改变,创新正受到人类的抵制。人们发现了认知计算的几个缺点,这给更广泛的采用带来了巨大的挑战,例如:
- 安全
当数字设备管理关键信息时,安全性问题就自然而然地出现了。由于能够处理大量数据并对其进行分析,认知计算在数据安全和加密方面面临着重大挑战。
随着越来越多的互联设备进入市场,认知计算将不得不通过开发一个完全可靠的安全计划来考虑与安全漏洞相关的问题,该计划还具有识别可疑活动以促进数据完整性的机制。
- 领养
任何新技术成功道路上的最大障碍是自愿采用。为了让认知计算取得成功,有必要对新技术如何让流程和业务变得更好制定一个长期愿景。
通过技术开发人员、企业、政府和个人等各利益相关方之间的合作,可以简化采用流程。与此同时,有一个数据隐私框架来进一步推动认知计算的采用是至关重要的。
- 变革管理
变化管理是认知计算必须克服的另一个关键挑战。人们抵制改变是因为他们天生的人类行为&由于认知计算具有像人类一样学习的能力,人们担心有一天机器会取代人类。这已经对增长前景产生了很大的影响。
然而,认知技术是为了与人类同步工作而构建的。人类将通过向系统输入信息来培育技术。这使得它成为人们必须接受的人机交互的一个很好的例子。
- 漫长的开发周期
最大的挑战之一是通过认知计算开发基于场景的应用所投入的时间。认知计算目前正被开发为一种通用解决方案,这意味着如果没有强大的开发团队和大量的时间来开发解决方案,该解决方案就无法在多个行业领域实施。
漫长的开发周期使得小公司更难独立开发认知能力。随着时间的推移,随着开发生命周期趋于缩短,认知计算肯定会在未来获得更大的舞台。
包装
作为数字进化周期的一部分,认知技术的采用始于识别可以使用该技术自动化的手动流程。许多公司,如 IBM,已经成为认知技术领域的先驱,推动了全球几个真正的数字组织。
随着时间的推移,越来越多的数据被分析,以深入了解过去的事件并改进当前和未来的流程。认知技术不仅有助于之前的分析,还将有助于通过预测分析更准确地预测未来事件。
作为一种强大而灵活的技术,B2B 和 B2C 领域的未来可能性和途径是巨大的。IBM Watson 已经在金融和医疗领域利用了认知计算的能力和优势。在未来,人们相信这种技术将帮助人类变得比以前更有效率,委托世俗的分析和专注于创造性的工作。
在不到 5 年的时间里,认知技术对组织的影响肯定会大幅增长。所有行业/领域的利益相关者都需要了解是否、如何以及在哪里投资应用认知技术。
为了从认知计算中获得最大收益,组织需要对其流程、数据、人才模型和市场进行全面分析。我们认为,除了降低成本,认知技术的最大潜力之一在于创造价值,以及通过简化大量流程来重组工作和提高效率的能力。
尽管面临各种挑战和障碍,但认知技术的益处不容忽视。这将有利于所有的组织和人类,从总体上来说,开始过渡进程,并采用创新技术,为一个光明和更有效的未来。
为了充分利用像认知技术这样的创新突破的潜力,你需要一个了解现代趋势的有弹性的认知计算技术合作伙伴&正在开发尖端的商业解决方案。如果您想了解我们如何帮助您在业务中采用人工智能&认知技术,请写信给 hello@marutitech.com&的我们,了解我们如何通过独创性和创新来帮助改善关键的业务流程。
理解数据
原文:https://towardsdatascience.com/what-is-data-8f94ae3a56b4?source=collection_archive---------1-----------------------
关于信息、内存、分析和分布的思考
Here’s the audio version of the article, read for you by the author.
我们感官感知的一切都是数据,尽管它在我们大脑湿物质中的存储还有待改进。写下来更可靠一点,尤其是当我们在电脑上写下来的时候。当那些笔记组织良好时,我们称之为 数据 ...虽然我见过一些非常混乱的电子涂鸦得到相同的名字。我不知道为什么有些人把 data 这个词读起来像是有个大写的 D 在里面。
为什么我们用大写 D 来读数据?
我们需要学会对数据采取不敬的务实态度,因此本文旨在帮助初学者了解幕后情况,并帮助从业者向表现出数据崇拜症状的新手解释基础知识。
感觉和感官
如果你从网上购买数据集开始你的旅程,你有忘记它们来自哪里的危险。我将从绝对的零开始向你展示你可以随时随地制作数据。
这里有一些常年住在我的储藏室,安排在我的地板上。
My life is pretty much a Marmite commercial. Three sizes; Goldilocks would be happy here.
这张照片是数据——它被存储为你的设备用来向你展示美丽色彩的信息。(如果你很想知道当你看到矩阵时图像是什么样的,看看我的监督学习介绍。)
让我们从我们看到的东西中找到一些意义。我们有无限的选择去关注和记忆什么。这是我看食物时看到的一些东西。
There’s no universal law that says that this, the weight in grams, is the best thing to pay attention to. We‘re allowed to prefer volume, price, country of origin, or anything else that suits our mood.
如果你闭上眼睛,你还记得你刚刚看到的每一个细节吗?没有吗?我也没有。这差不多就是我们收集数据的原因。如果我们能在头脑中完美地记住并处理它,那就没有必要了。互联网可以是一个洞穴里的隐士,记录人类所有的推文,完美地呈现我们数十亿张猫的照片。
书写和耐久性
因为人类的记忆是一个漏桶,所以用我们在黑暗时代上学时统计数据的方式记下信息将是一种进步。是的,我的朋友们,我还有纸在这里的某个地方!让我们记下这 27 个数据点。
This is data. Remind me why we’re worshipping it? Data are always a caricature of reality made to the tastes of a human author. This one’s full of subtle choice — shall we record dry weight or wet weight? What to do with volume units? Also, I might have made mistakes. If you inherit my data, you can’t trust your eyes unless you know what exactly happened in the data collection.
这个版本的伟大之处——相对于我的海马体或地板上的东西——在于它更耐用、更可靠。
人类的记忆是一个漏桶。
我们认为记忆革命是理所当然的,因为它始于几千年前,商人需要一个可靠的记录,谁卖给谁多少蒲式耳的东西。花一点时间来意识到拥有一个比我们的大脑更好地存储数字的通用书写系统是多么的荣耀。当我们记录数据时,我们产生了对我们丰富感知的现实的不忠实的破坏,但在那之后,我们可以以完美的保真度将结果的未被破坏的副本转移给我们物种的其他成员。文笔惊人!存在于我们体外的思想和记忆。
当我们分析数据时,我们在访问别人的记忆。
担心机器胜过我们的大脑?连纸都能做到!这 27 个小数字对你的大脑存储来说是一个很大的提升,但如果你手边有一个书写工具,耐用性是有保证的。
虽然这是一个耐久性的胜利,但用纸工作是令人讨厌的。例如,如果我突发奇想,把它们从最大到最小重新排列,会怎么样?纸,给我一个更好的顺序!没有?可恶。
电脑和魔咒
你知道软件最棒的是什么吗?咒语真的有效!所以让我们从纸张升级到电脑。
Ah, spreadsheets. Baby’s first data wrangling software. If you meet them early enough, they seem friendly by dint of mere exposure. Spreadsheets are relatively limited in their functionality, though, which is why data analysts prefer to strut their stuff in Python or R.
电子表格让我不冷不热。与现代数据科学工具相比,它们非常有限。我更喜欢在 R 和 Python 之间摇摆,所以这次让我们试试 R。你可以在浏览器中用 Jupyter 跟随:点击 【带 R】框,然后点击几次剪刀图标,直到所有内容都被删除。恭喜,只花了 5 秒钟,你就可以粘贴我的代码片段并运行它们了。
weight <- c(50, 946, 454, 454, 110, 100, 340, 454, 200, 148, 355, 907, 454, 822, 127, 750, 255, 500, 500, 500, 8, 125, 284, 118, 227, 148, 125)
weight <- weight[order(weight, decreasing = TRUE)]
print(weight)
你会注意到,如果你是新来的,R 的 abracadabra 对你的数据排序并不明显。
嗯,“abracadabra”这个词本身就是如此,电子表格软件中的菜单也是如此。你知道这些事情只是因为你接触过它们,而不是因为它们是普遍规律。要用电脑做事情,你需要向你的常驻占卜师要魔法单词/手势,然后练习使用它们。我最喜欢的圣人叫做互联网,他知道所有的事情。
Here’s what it looks like when you run that code snippet in Jupyter in your browser. I added comments to explain what each line does because I’m polite sometimes.
为了加快你的巫师训练,不要只是粘贴咒语——试着改变它们,看看会发生什么。比如上面片段中把 TRUE 变成 FALSE 会有什么变化?
你这么快就得到答案是不是很神奇?我喜欢编程的一个原因是它是魔法和乐高的结合。
如果你曾经希望你能变魔术,那就学着写代码吧。
简单地说,编程是这样的:向互联网询问如何做某件事,用你刚刚学到的神奇单词,看看当你调整它们时会发生什么,然后像乐高积木一样把它们放在一起,完成你的命令。
分析和总结
这 27 个数字的问题在于,即使它们被排序,对我们来说也没有多大意义。当我们阅读它们的时候,我们会忘记刚刚读过的内容。这是人类的大脑。告诉我们去读一个由一百万个数字组成的有序列表,我们最多能记住最后几个。我们需要一种快速的方法来分类和总结,这样我们就可以掌握我们正在看的东西。
这就是分析的用途!
median(weight)
用正确的咒语,我们可以立即知道体重的中位数是多少。(Median 的意思是“中间的东西”。)
This is for the three of you who share my taste in movies.
结果答案是 284g。谁不爱瞬间的满足感?有各种各样的汇总选项:(min()、max()、mean()、median()、mode()、variance() …都试试吧!或者试试这个神奇的单词,看看会发生什么。
summary(weight)
对了,这些东西叫做 统计 。统计数据是任何一种将你的数据混在一起的方式。这不是统计学领域的内容——这里有一段 8 分钟的学术介绍。
绘图和可视化
这一部分不是关于那种涉及世界统治的阴谋(请继续关注那篇文章)。就是用图片总结数据。事实证明,一张照片可能比一千个单词更有价值——每个数据点一个单词,然后更多。(这样的话我们就做一个只值 27 个砝码的。)
Tip jars are nature’s bar charts, pun intended. More height means more popularity in that category. Histograms are almost the same thing, except that the categories are ordered.
如果我们想知道权重在我们的数据中是如何分布的——例如,是 0 到 200g 之间的项目多,还是 600g 到 800g 之间的项目多?— a 直方图 是我们最好的朋友。
Nature’s histogram.
直方图是总结和显示样本数据的方法之一。对于更受欢迎的数据值,它们的块更高。
把条形图和直方图想象成流行度竞赛。
要在电子表格软件中制作一个,神奇的咒语是在各种菜单上点击一长串。在 R 中,速度更快:
*hist(weight)*
这是我们的一行程序带给我们的:
This is one ugly histogram — but then I’m used to the finer things in life and know the beauty of what you can do with a few more lines of code in R . Eyesore or not, it’s worth knowing how easy the basics are.
我们在看什么?
在水*轴上,我们有垃圾箱(或者小费罐,如果你喜欢的话)。默认情况下,它们被设置为 200g 的增量,但我们稍后会更改。纵轴是计数:有多少次我们看到重量在 0 克到 200 克之间?剧情说 11。600g 到 800g 之间怎么样?只有一个(如果没记错的话,那是食盐)。
我们可以选择我们的容器大小——我们没有修改代码得到的默认容器是 200g 容器,但是也许我们想使用 100g 容器来代替。没问题!受训的魔术师可以修改我的咒语来发现它是如何工作的。
*hist(weight, col = "salmon2", breaks = seq(0, 1000, 100))*
结果如下:
现在我们可以清楚地看到,两个最常见的类别是 100–200 和 400–500。有人在乎吗?大概不会。我们这样做只是因为我们可以。另一方面,一个真正的分析师擅长快速浏览数据的科学和寻找有趣的金块的艺术。如果他们的手艺好,他们就值他们重量的黄金。
什么是发行版?
如果这 27 项是我们关心的所有东西,那么我刚刚做的这个直方图样本也正好是人口分布。
这基本上就是的分布:如果你将 hist() 应用于整个人口(所有你关心的信息),而不仅仅是样本(你手头上碰巧有的数据),你就会得到这个直方图。有几个脚注,比如 y 轴上的刻度,但是我们会把它们留到另一篇博文中——请不要伤害我,数学家们!**
A distribution gives you popularity contest results for your whole population. It’s basically the population histogram. Horizontal axis: population data values. Vertical axis: relative popularity.
如果我们的人口都是 T21 的包装食品,那么分布将会是他们体重的直方图。这种分配仅仅作为一种理论概念存在于我们的想象中——一些包装食品已经湮没在时间的迷雾中。即使我们想,我们也不能建立那个数据集,所以我们能做的最好的事情就是用一个好的样本来猜测它。
什么是数据科学?
有各种各样的观点,但我喜欢这个定义:“ 数据科学 是使数据有用的学科”它的三个子领域涉及挖掘大量信息以获得灵感(分析),基于有限信息明智地做出决策(统计),以及使用数据中的模式来自动化任务( ML/AI )。
所有的数据科学都归结为一点:知识就是力量。
宇宙中充满了等待收获和利用的信息。虽然我们的大脑在驾驭现实方面令人惊叹,但它们不太擅长存储和处理某些类型的非常有用的信息。
这就是为什么人类首先求助于泥板,然后求助于纸,最终求助于硅。我们开发了快速查看信息的软件,如今知道如何使用它的人自称为数据科学家或 T2 数据分析师。真正的英雄是那些构建工具,让这些从业者更好更快地掌握信息的人。顺便说一句,即使是互联网也是一种分析工具——我们只是很少这样想,因为即使是孩子也能做那种数据分析。
面向所有人的内存升级
我们感知的一切都储存在某个地方,至少是暂时的。数据没有什么神奇的,除了它比大脑管理的更可靠。有些信息是有用的,有些是误导的,其余的都在中间。数据也是如此。
我们都是数据分析师,一直都是。
我们认为我们惊人的生物能力是理所当然的,并夸大了我们与生俱来的信息处理能力和机器辅助能力之间的差异。不同之处在于耐用性、速度和规模……但常识性的规则同样适用于这两者。为什么那些规则在一个等式的第一个符号就被抛弃了?
Still looking for Data to pronounce with a capital D? Well, there it sits.
我很高兴我们庆祝信息作为进步的燃料,但崇拜数据是神秘的东西对我来说没有意义。最好简单地谈论数据,因为我们都是数据分析师,而且一直都是。让我们让每个人都能这样看待自己!
感谢阅读!YouTube AI 课程怎么样?
如果你在这里玩得开心,并且你正在寻找一个为初学者和专家设计的有趣的应用人工智能课程,这里有一个我为你制作的娱乐课程:
Enjoy the entire course playlist here: bit.ly/machinefriend
喜欢作者?与凯西·科兹尔科夫联系
让我们做朋友吧!你可以在 Twitter 、 YouTube 、 Substack 和 LinkedIn 上找到我。有兴趣让我在你的活动上发言吗?使用表格取得联系。
什么是数据清洗?如何处理数据进行分析和机器学习建模?
原文:https://towardsdatascience.com/what-is-data-cleaning-how-to-process-data-for-analytics-and-machine-learning-modeling-c2afcf4fbf45?source=collection_archive---------8-----------------------
数据清洗在数据管理、分析和机器学习领域都扮演着重要的角色。在本文中,我将尝试给出关于数据清理的重要性和不同数据清理过程的直觉。
什么是数据清洗?
数据清理是指识别数据中不正确、不完整、不准确、不相关或缺失的部分,然后根据需要对其进行修改、替换或删除的过程。数据清理被认为是基础数据科学的基础元素。
数据对于分析和机器学习来说是最有价值的东西。在计算或商业中,到处都需要数据。当涉及到真实世界的数据时,数据可能包含不完整、不一致或缺失的值。如果数据被破坏,那么它可能会阻碍进程或提供不准确的结果。让我们看一些例子来说明数据清理的重要性。
假设你是一家公司的总经理。贵公司收集购买贵公司产品的不同客户的数据。现在你想知道人们对哪些产品最感兴趣,并据此增加该产品的产量。但是如果数据被破坏或者包含丢失的值,那么你将会被误导做出正确的决定,你将会有麻烦。
归根结底,机器学习是一种数据驱动的人工智能。在机器学习中,如果数据不相关或容易出错,就会导致错误的模型构建。
Figure 1: Impact of data on Machine Learning Modeling.
只要你清理了你的数据,只要你能做出更好的模型。因此,我们需要在使用数据之前对其进行处理或清理。没有高质量的数据,期待任何好的结果都是愚蠢的。
清理数据的不同方式
现在,让我们仔细看看清理数据的不同方式。
列不一致:
如果您的数据框(数据框是一个二维数据结构,即数据以表格的形式排列成行和列 ) 包含不相关的列或者您永远不会使用它们,那么您可以删除它们,以便更加关注您将处理的列。让我们看一个如何处理这样的数据集的例子。让我们使用 pandas DataFrame 创建一个学生数据集的例子。
import numpy as np # linear algebraimport pandas as pd # data processing, CSV file I/O data={'Name':['A','B','C','D','E','F','G','H']
,'Height':[5.2,5.7,5.6,5.5,5.3,5.8,5.6,5.5],
'Roll':[55,99,15,80,1,12,47,104],
'Department':['CSE','EEE','BME','CSE','ME','ME','CE','CSE'],
'Address':['polashi','banani','farmgate','mirpur','dhanmondi','ishwardi','khulna','uttara']}df=pd.DataFrame(data)
print(df)
Figure 2: Student data set
这里如果我们想删除“身高”列,我们可以使用 python pandas。DataFrame.drop 从行或列中删除指定的标签。
DataFrame.**drop**(*self*, *labels=None*, *axis=0*, *index=None*, *columns=None*, *level=None*, *inplace=False*, *errors='raise'*)
让我们去掉高度栏。为此,您需要在 column 关键字中加入列名。
df=df.drop(columns='Height')
print(df.head())
Figure 3: “Height” column dropped
缺失数据:
很少有真实世界的数据集没有任何缺失值。当您开始处理真实世界的数据时,您会发现大多数数据集包含缺失值。处理缺失值非常重要,因为如果您让缺失值保持原样,它可能会影响您的分析和机器学习模型。因此,您需要确定数据集是否包含缺失值。如果您在数据集中发现缺失值,您必须处理它。如果您在数据集中发现任何缺失值,您可以对其执行以下三项任务中的任何一项:
1。保持原样
2。填补缺失值
3。删除它们
为了填充缺失的值,我们可以执行不同的方法。例如,图 4 显示空气质量数据集有缺失值。
airquality.head() # return top n (5 by default) rows of a data frame
Figure 4: missing values.
在图 4 中,NaN 表示数据集在该位置包含缺失值。在你的数据集中找到丢失的值后,你可以使用 熊猫。DataFrame.fillna 来填充缺失的值。
DataFrame.**fillna**(*self*, *value=None*, *method=None*, *axis=None*, *inplace=False*, *limit=None*, *downcast=None*, ***kwargs*)
你可以根据自己的需要,使用不同的统计方法来填补缺失值。例如,在图 5 中,我们将使用统计*均值方法来填充缺失值。
airquality['Ozone'] = airquality['Ozone'].fillna(airquality.Ozone.mean())airquality.head()
Figure 5: Filling missing values with the mean value.
你可以看到“臭氧”一栏中缺少的数值被该栏的*均值所填充。
您还可以删除找到缺失值的行或列。我们删除包含缺失值的行。在这里,您可以借助 熊猫来删除丢失的值。DataFrame.dropna 。
airquality = airquality.dropna() #drop the rows containing at least one missing valueairquality.head()
Figure 6: Rows are dropped having at least one missing value.
这里,在图 6 中,您可以看到 Solar 列中的行缺少值。r 掉了。
airquality.isnull().sum(axis=0)
Figure 7: Shows the numbers of missing values in column.
异常值:
如果你是数据科学新手,那么你脑海中出现的第一个问题是“这些离群值意味着什么”?让我们先讨论离群值,然后我们将讨论数据集中这些离群值的检测,以及检测到离群值后我们将做什么。
根据维基百科的说法,
在统计学中,一个 离群值 是与其他观测值有显著差异的数据点。 "
这意味着离群值表示一个数据点明显不同于数据集中的其他数据点。由于实验中的误差或测量中的可变性,会产生异常值。让我们看一个例子来澄清这个概念。
Figure 8: Table contains outlier.
在图 4 中,数学列中的所有值都在 90–95 之间,只有 20 与其他值有显著差异。这可能是数据集中的输入错误。所以我们可以称之为离群值。这里要补充一点——不是所有的离群值都是坏数据点。有些可能是错误,但其他是有效值。
所以,现在的问题是我们如何检测数据集中的异常值。
为了检测异常值,我们可以使用:
1。箱线图
2。散点图
3。z 分数等。
我们将在这里看到散点图方法。让我们画一个数据集的散点图。
dataset.plot(kind='scatter' , x='initial_cost' , y='total_est_fee' , rot = 70)
plt.show()
Figure 9: Scatter plotting with outlier.
在图 9 中,有一个带有红色轮廓的异常值。检测到这一点后,我们可以将其从数据集中移除。
df_removed_outliers = dataset[dataset.total_est_fee<17500]df_removed_outliers.plot(kind='scatter', x='initial_cost' , y='total_est_fee' , rot = 70)plt.show()
Figure 10: Scatter plotting with removed outliers.
重复行:
数据集可能包含重复条目。删除重复行是最容易的任务之一。要删除重复的行,可以使用—
dataset _ name . drop _ duplicates()。 图 12 显示了具有重复行的数据集的示例。
Figure 11: Data having duplicate rows.
dataset=dataset.drop_duplicates()#this will remove the duplicate rows.print(dataset)
Figure 12: Data without duplicate rows.
整理数据集:
整齐的数据集意味着每一列代表单独的变量,每一行代表单独的观察值。但是在混乱的数据中,每一列代表的是数值而不是变量。整齐的数据有助于解决常见的数据问题。你可以使用pandas . melt将杂乱的数据变成整齐的数据。
import pandas as pd
pd.melt(frame=df,id_vars='name',value_vars=['treatment a','treatment b'])
Figure 13: Converting from Untidy to tidy data.
还可以看 熊猫。DataFrame.pivot 用于解冻整齐的数据。
转换数据类型:
在 DataFrame 中,数据可以有多种类型。例如:
1。分类数据
2。对象数据
3。数字数据
4。布尔数据
某些列的数据类型可能由于某种原因而改变,或者具有不一致的数据类型。您可以使用 pandas 从一种数据类型转换为另一种数据类型。data frame . astype。
DataFrame.**astype**(*self*, *dtype*, *copy=True*, *errors='raise'*, ***kwargs*)
字符串操作:
数据清理最重要和最有趣的部分之一是字符串操作。在现实世界中,大多数数据都是非结构化数据。字符串操作是指改变、解析、匹配或分析字符串的过程。对于字符串操作,你应该有一些关于正则表达式的知识。有时候你需要从一个大句子中提取一些价值。在这里,字符串操作给了我们很大的好处。比方说,
“这把伞花了 12 美元,他从他妈妈那里拿了这笔钱。”
如果你想从句子中提取“$12”的信息,那么你必须构建一个正则表达式来匹配这个模式。之后你就可以使用 python 库了。python 中有许多用于字符串操作的内置和外部库。
import repattern = re.compile('|\$|d*')result = pattern.match("$12312312")print(bool(result))
这将给你一个显示“真”的输出。
数据拼接:
在当今的数据科学时代,数据量与日俱增。由于数据量大,数据可能存储在单独的文件中。如果您处理多个文件,那么为了简单起见,您可以将它们连接起来。您可以使用以下 python 库进行 concatenate。
pandas.**concat**(*objs*, *axis=0*, *join='outer'*, *join_axes=None*, *ignore_index=False*, *keys=None*, *levels=None*, *names=None*, *verify_integrity=False*, *sort=None*, *copy=True*)
让我们看一个如何连接两个数据集的例子。图 14 显示了从两个不同文件加载的两个不同数据集的示例。我们将使用pandas . concat来连接它们。
Figure 14: Dataset1(left) & Dataset2(right)
concatenated_data=pd.concat([dataset1,dataset2])
print(concatenated_data)
Figure 15: Concatenated dataset.
结论:
数据清理对于使您的分析和机器学习模型无错误非常重要。数据集中的一个小错误会给你带来很多问题。你所有的努力都可能白费。因此,请务必保持数据的整洁。
参考资料:
1.数据帧
2。data camp-清理 python 中的数据
3。处理缺失数据
4。如何用熊猫
去除数据中的离群点 5。检测和去除离群点的方法6
。离群点去除 clustring7。从数据中剔除异常值的 3 种方法。熊猫。data frame . astype9。 pandas.concat
10。熊猫。data frame . melt11。整理数据
最后,感谢您的阅读。
什么是数据科学?
原文:https://towardsdatascience.com/what-is-data-science-3a8b976f6cd3?source=collection_archive---------21-----------------------
这份美丽工作的神话、梦想和现实
Photo by Luke Chesser on Unsplash
数据科学被认为是我们这个时代最迷人的工作之一。它可以很搞笑,可以给你满足感,但是真的如它所描述的那样吗?****
在本文中,我将向您展示数据科学家生活中的现实。
你认为是什么
在他们职业生涯的开始,数据科学家认为数据科学是一个奇妙的、神奇的世界,充满了算法、 Python 函数,用一行代码和统计模型来执行每一种可能的法术,这些模型能够检测数据中最有用的相关性,这可能使你成为公司中不可战胜的超级英雄。你开始梦见你的首席执行官向你祝贺并和你握手,你开始看到决策树和集群无处不在,当然,还有你能想到的最可怕的神经网络架构。
但是从你第一个数据科学项目的第一天起,你开始意识到现实是什么。
它到底是什么
对结果的期望
管理者通常认为数据科学是信息技术的圣杯。他们对它有着巨大的期望,他们希望此时此地得到满足。
事实上,结果很难实现,而且需要很多时间。有时候一个结果达不到。想一想集群的例子。你可以花一生的时间来寻找一个根本不存在于你的数据中的聚类模式。大多数经理不理解这一事实,这对你和你的团队来说是非常有压力的。
解释
唯一比好算法更好的是一个可解释的算法。永远不要忘记这一点。世界上没有哪个理智的经理人会仅仅因为 AUROC 大于 95%就遵循一种未知的算法来管理公司的资金。管理者需要理解算法,弄清楚他们如何看待数据,这对于数据科学家来说通常是一项艰巨的任务。向没有科学背景的人解释算法可能相当困难,但这在大公司中非常普遍,你必须面对这个事实。
大多数时候,你会发现自己试图抹去老板脸上那个可怕的问号,尽可能地简化,让他们理解你的结果。记住:如果你不能解释你的结果,经理们会开始问自己你在你的公司是否有用。
商业理解
你将花费大量时间采访产品负责人和 ITC 专业人士,以了解隐藏在他们所知道或产生的商业数据中的信息。没有他们的帮助,你不可能成功。
很多时候,数据来自复杂的异构系统,这通常意味着您需要理解几行日志文件。数据不是一切;信息决定一切。永远不要忘记这一点。信息隐藏在数据中,你需要有人告诉你应该在哪里挖掘。
公司越大,就越难找到合适的人来面试,当你最终成功的时候,他们的回答会产生更多的问题,这些人可能没有足够的时间给你和你的“无聊的东西”。
数据可视化
您会发现自己比想象中更频繁地使用数据可视化。图表、幻灯片和其他图形工具就像你猎枪里的银弹。也许你脑子里有神奇的公式,图表之类的。别管他们了。数据科学是通过图形表示来讲述的,通常很难找到适合你的观众的合适的可视化技术。
最后期限
他们在那里。我们是一个充满期限和期望的世界的奴隶。当你是一名软件工程师时,你的计划中有里程碑,不允许你拖延一秒钟。在数据科学中,事情并不简单。
即使在数据科学中也有截止日期和里程碑,并且其中有一个巨大的困难:数据科学是一种非常接*于学术研究的东西,所以它不太适合经典的、瀑布 ITC 项目管理风格。相反,一些敏捷框架(例如 Scrum 或看板)应该工作得很好,因为它有快速适应变化的生理能力。但是敏捷很难教给管理者。这会给他们一个错误的想法,认为没有明确的交货日期,这是公司很难接受的。
算法和编程
最后,有趣的部分。Python,R,Knime,阅读科学论文,优化算法,交叉验证等等。技术和真正的乐趣只是工作的一小部分,在整个项目生命周期中只占很少的时间。也许在编写第一行代码之前,你已经对前面的阶段失去了热情,事情看起来不再像你一开始想的那么有趣。
做数据科学最好的方法是什么?
根据我的经验,我可以用一个词来回答:敏捷。在编写第一行 Python 代码之前,没有必要执行所有的业务理解部分。从对一小块数据的简单业务理解开始,探索它,可视化它并从一个简单模型开始。每周创造第一个可量化的结果让你的客户持续参与这个过程。以恒定的交付率交付小成果,请不要落入瀑布陷阱。
简单是关键。永远不要忘记。尽可能从最简单的事情开始,只在需要的时候增加一点复杂性。
在持续的小结果中有一种心理上的解脱感,如果你想在公司的最后期限和业务流程的丛林中生存,这是你必须使用的另一种武器。这样,你的每一个致力于你的项目的同事都会感受到你的困难并开始理解数据科学有多难。
记住,公司仍然认为数据科学是 ITC 的一个分支。他们并没有完全错,但是他们不应该期望你遵循瀑布方法。所以,你必须努力引导你的公司走向一种敏捷的思维方式。
关于工作的解释部分,我更倾向于从最简单的机器学习模型开始:可能的: k *邻。这很容易理解。你只需要一张纸,一支铅笔和一个画有一些点的笛卡尔*面。就是这样。如果它产生了非常好的结果,每个人都会最终看到你喜欢你认为你是一个伟大的商业伙伴。
如果 KNN 不起作用,那么你可以使用回归和决策树(随机森林、梯度提升树分类器等等),它们非常容易解释,或者贝叶斯网络,它们有非常有用的图形表示。
最后,视觉化。想象一切。让你的老板给你买一门数据可视化的课程,尽可能多地学习最好的可视化技术,请记住避免饼图。它们毫无用处,而且容易误导人。如果你提供一个简单的散点图或者柱状图,人们会捕捉到所有的相关信息。
简单的结果是最好的。几天前,我和我的团队展示了一些关于时间序列分析的结果,只使用了三张幻灯片:描述业务现象的高层KPI,一个混淆矩阵和一些绩效指标。从第一张幻灯片开始,我们的观众就很热情,只是因为我们一开始就用简单的方式用清晰的数字解释业务。在很多情况下,一个小积木真的可以救你一命。
结论
数据科学是一项令人兴奋的工作,但如果你对非技术观众讲话,它可能会非常难以执行。数据和业务密切相关,当你与以业务为导向的人一起工作时,你必须记住这一点。生存的唯一方法是在数据驱动自下而上方法和业务驱动自上而下方法之间找到一个中间点。
最后,由于数据科学很难并且耗时,以恒定的交付率交付小成果是你保持客户参与的唯一方法。
什么是数据科学?
原文:https://towardsdatascience.com/what-is-data-science-7b059ba97543?source=collection_archive---------16-----------------------
作者:本杰明·曼宁博士
完全披露:这篇博客的部分内容摘自我为以前工作过的公司写的一篇文章,但内容是我的,没有任何限制。
前言:在你花几分钟时间阅读这篇文章却发现它不是一个教程之前,我现在就通知你;不是的!然而,如果你是一个有点“非技术”的人,甚至是管理人员,需要好好阅读关于你可以用数据科学“做什么”的书籍,那么你就来对地方了。
早在 1999 年,我就开始了我的机器学习职业生涯,在 2007 年我将自己的公司转型为现在所谓的“数据科学”之前,我喜欢从事各种软件工程,甚至一些网站开发工作。是的,我已经存在了一段时间,看到了许多技术和方法来来去去,但我访问的公司越多,我就越清楚地看到 理解数据科学甚至利用内部数据和资源 的问题随着时间的推移正在成为一个永远难以解决的问题。
我经常被学生和同事问及我对数据科学的最佳定义。作为一名资深数据科学家,在指导了数百名该领域的专业开发学生多年后,你可能会认为这对我来说是一项容易解决的任务,但我越想越觉得答案越复杂,我认为这正是支持行业中大量困惑的中间派概念。
What is Data Science? source: https://ec.europa.eu/jrc/communities/sites/jrccties/files/skills_map_v4_1.png
这肯定是一个悖论,因为随着时间的推移,大多数行业通过更高层次的理解开始成熟,但数据科学似乎是一只独角兽,至少在放置我们都可以遵循的通用定义的更精细点的意义上。
在我看来,数据科学不应该围绕它是什么来定义,而更应该围绕我们用它做什么来定义— Ben Manning
在这样做的过程中,人们可以很容易地确定有许多不同类型的数据科学家在扮演许多不同的角色,尽管可以说数据是所有这些的核心,但我认为事实并非如此。我认为 值 是数据科学中所有不同角色的 公分母 。
每个人和每个角色都应该带来价值
为公司带来价值是我们在组织中扮演的每一个角色都要做的事情。数据科学家没有什么不同,只是我们有不同的工作介质,我们处理各种形状、大小和形式的数据,这也带来了许多新的支持角色。
数据翻译员、数据工程师、ML 工程师、AI 工程师和一大堆其他新职位目前正在涌入,以填补我们新发现的分析更大和新(更)类型数据的能力所创造的空白。
让我们看一个典型的例子‘如何’获得这个值
我拥有两家公司,一家是数据科学企业培训公司( UpLearn.io ),另一家是数据科学工程咨询公司( EdgeLearn.ai ),我们经常有客户带着大量数据来找我们,但他们根本没有从中获取价值的起点。这也是我创办企业培训机构的原因之一(不要脸的塞入境!)
随着我们会见越来越多的客户,我们很快发现大多数企业,无论大小,对数据科学到底是什么以及如何利用它都知之甚少。事实证明,这不是一个操作问题,而是一个教育问题,所以我们已经转移我们的重点来解决它,并开始 UpLearn.io 。
我们与许多来到 EdgeLearn.ai 网站的客户合作的一个共同领域是更好地了解他们的客户,或者对他们最重视的人进行 360 度全方位的观察。
Customer 360 Lifecycle | source: https://2s7gjr373w3x22jf92z99mgm5w-wpengine.netdna-ssl.com/wp-content/uploads/2017/11/customer-360.png
简单来说:一个企业越了解它的客户;就能更好地为他们服务。
在构建我们的客户 360 解决方案时,我们使用数据分析、机器学习和大数据来满足许多不同的领域,但大多数都围绕四个主要领域:
- 了解客户——即谁是我们的典型客户?
- 预测一个或一组产品的性能或销售。
- 汇总以前未知的可能交叉销售机会。
- 为我们的客户构建“假设”场景,提供更多关于最佳和最有可能花费他们宝贵金钱的地方的详细信息。
为了这篇文章的目的,我已经将所有这些领域简化并合并到建立客户档案中。
客户档案里有什么?
客户是任何企业的生命线,了解我们所服务的客户的一切不仅可以让我们提供更好的服务,还可以建立品牌忠诚度,甚至简化供应链。来自历史购买的简单人口统计数据可以提供大量信息,如购买行为、品牌偏好,甚至可以更好地描述客户可能购买或不购买产品或服务的具体原因。
例如,我们可以分析包含超过 500,000 次购买的简单数据集,以及简单的人口统计数据,如性别、年龄、邮政编码等。、以及通常通过让顾客注册积分卡和其他营销工具来收集的其他变量。通常,我们还知道产品细节,如价格、功能,有时甚至知道交易中购买的其他产品。
从这些简单的数据中,我们可以使用数据科学来构建客户 360°购买档案,以便更好地了解谁在何时购买了什么。
但是如果我们已经从历史数据中知道了,这又有什么用呢?
用数据科学实现价值
数据科学方法让我们能够发现与客户相关的变量之间可能存在的以前未知的关系,这不仅可以帮助我们更好地了解谁买了什么,甚至可能使相关性更好地描述为什么,尽管因果关系不是数据科学的最终目标;正如我们已经说过的,价值是。
Customer Profile | Source: IBM.com
更好的是,我们可以使用这些新学到的规则来“模拟”客户的购买行为,不仅预测他们接下来可能会购买什么,还预测他们可能会购买什么。我们还可以更好地理解和模拟我们的营销工作在单个集中领域或支出领域的效果——这意味着什么?这意味着我们可以“模拟”公司在某个过程中花费资金的各个领域的表现。
这是数据科学真正带来价值的地方,这又回到了通过我们用它做什么来定义它,通过让我们更好地了解过去,并以比我们以前通常实现相同目标更快、更高效、更可靠和可重复的方式将我们学到的知识应用到未来。
最后,我们正在了解以前我们根本没有能力分析的业务和流程,在许多情况下,我们甚至没有这样做所需的数据。云技术的快速发展消除了基础设施工作,并提供了一种更简单、更简化的方法来处理多个领域的技术,包括多样化数据集、弹性计算、低成本存储、数据共享、ML/AI 打包和更易于使用的可视化工具,这使得发现比以往任何时候都更容易理解和验证,我们只是看到了开始。
产生的数据越多,数据科学就变得越相关,我们最终就会更好地理解它是什么,以及我们可以用它来做什么,以更好地服务于我们的企业和社区。
Benjamin Manning 博士来自佐治亚州雅典市,在过去的 25 年里,他一直是一名机器学习顾问和系统工程师。他现在是 IBM 的高级数据科学家,之前是佐治亚大学计算机系统工程学院的成员,目前在许多大学指导数据科学专业发展学生。2017 年,他获得了 O-Reilly 人工智能多样性奖学金和谷歌物联网(IoT)技术研究奖。2018 年,他在佐治亚大学完成了计算机系统工程博士学位,重点是使用深度学习和计算机视觉来改进太阳预测模型。
你可以在 LinkedIn 上和他联系。
数据科学训练营是什么样的?
原文:https://towardsdatascience.com/what-is-data-science-bootcamp-like-6f63d8ee88e0?source=collection_archive---------16-----------------------
第一天。我们的数据科学入门讲师正在讲话,但我无法集中注意力,因为我听到了另一个房间的哔哔声,这快把我逼疯了。我起床查看,希望能找到一块 90 年代的手表或一只电子鸡在做最后的垂死挣扎。相反,我看到了一个看起来像火星漫游者和 Roomba 真空吸尘器的私生子,在地板上嘟嘟嘟地走着,吞吃着烟头。它的创造者,前一批成员,解释说这是他们为期三个月的项目——更重要的是,是的,他们可以关闭哔哔声。
我回到我的入门课,感觉对噪音如释重负,就像我被技能差异吓到一样。我陷得太深了吗?
我的技术背景是什么?
“Huh! I thought it was psychic-learn!”
我是学法律的,2009 年毕业。在伦敦一家律师事务所实习时,我意识到我宁愿成为制造法律困境的人,也不愿成为事后收拾残局的人。这就剩下了两个选择——犯罪或创业。经过深思熟虑,我决定创业。因此,我开始自学 web 开发,将整个编程语言放到的闪存卡上,回到我年轻时偶尔充满 RSI 的热情。我把法律和代码结合在一起,创建了一个微型网络销售公司法律概述,从那以后,这个公司(大部分)设法维持了我的生活。
因此,虽然我是一名经验丰富的程序员,但我的数学较弱,没有获得量化学位(量化律师唯一做的就是计算计费小时)。在开始训练营之前,我试图通过学习一些线性代数、微积分和概率来赶上进度,但是——老实说——数学的东西要不稳定得多。
是什么促使我学习数据科学?
在某种程度上,我有唯利是图的动机,因为我可以看到将机器学习应用到我的业务中并从中获利的方法(例如,我想预测发送电子邮件的好提议,另外我想通过从我出售的文档中提取判例法和法规来提高我的 SEO。)
也许更大的动机是我喜欢学习新东西。抽出时间专注于学习对我来说是一种享受,就像一个长假期对一个不那么讨厌、头发更好的人来说一样。
最后,作为一名 web 开发人员,我一直对机器学习有着严重的 FOMO 感。我想跟上我们时代的最新技术,并消除对落后的恐惧。
为什么我选择训练营而不是自学?
这对我来说真是一个艰难的决定,因为,像许多自学成才的程序员一样,我为自己是一个自学者而自豪。我甚至写过一篇 40 页的文章,题目是自学...所以你可以想象我对于参加夏令营有着不小的认知失调。当我自己很好地学习了 web 开发时,为什么我需要外部机构来教我数据科学呢?
让我动摇的是两个务实的考虑:
- Web 编程比数据科学更有利于自学。在 web 开发中,编写代码和测试代码之间的反馈回路非常小。你可以在几秒钟内尝试十种变化。通常你的错误是显而易见的——比如网页上出现了错误的数据。但是数据科学却不是这样。反馈循环慢得令人痛苦。一些模型需要几个小时甚至几天的时间来训练,所以在它工作之前,你没有机会盲目地点击“up and enter”。更重要的是,数据科学中的错误更难诊断。通常输出是一个描述你的预测好坏的数字。当你得到一个垃圾结果时,几乎任何事情都可能是原因——通常是你对模型思考中的一个错误假设。我希望,有专业的导师在身边,能让我避免浪费时间。
Typical web development workflow
- 尽管我自学了编码,但我注意到,当我和房间里的其他程序员一起工作时,我的学习速度是最快的速度,吸收了他们所有的现实技术和提高生产力的实践。现在我 30 多岁了,承担了更多的责任,我更加重视快速学习。但是我没有一个可以一起做项目的数据科学家朋友网络,更不用说有那么多空闲时间的朋友了。因此,训练营似乎是让我融入这种环境的合理方式。
我如何在训练营中做出选择?
不管怎样,我最终去了数据科学静修中心,在他们的柏林办公室学习。(同一个团队在多伦多经营着一个*行的训练营,名为 AI Deep Dive 。)我不知道我的训练营比其他许多训练营更好还是更差——我的样本量只有一个!但我能做的是分享我的经验,我希望这种经验能推广到任何比较选择的人。
- 你的编程技能和你的同伴的编程技能之间的良好匹配:编程是数据科学的必要条件。如果没有基本的编程能力,即使是最伟大的统计学家也无法完成任何事情。但是学生之间的编程经验差别很大。毕竟,在这个领域,最好的从业者通常被认为比普通人的工作效率高出 10 倍。因此,选择一个训练营,在那里候选人需要有一定程度的编程技能,这与你自己的有些匹配。否则,当你的深度学习课程变成如何用多个参数调用 python 函数的课程时,你会感到沮丧。
- 节奏:相应地,选择一门适合你学习风格的课程。当我与另一个训练营的参与者会面时,我们提出了一个度量标准来校准我们程序的相对步调:$time _ spend _ learning _ pandas(pandas 是一个用于查看、清理和修复数据的 python 库)。我们比他们晚两天。两者都不是“更好”,它只是取决于你对如何快速覆盖材料的偏好,以及你更喜欢深入还是广泛。
- 多样性:一些训练营似乎有清一色的白人和男性班级。如果这听起来不符合你的口味,检查一下你考虑的训练营在多大程度上面向其他人群,包括来自其他人群的人。至少在我的学校,十个学生中有三个是女性,还有两个老师(到目前为止)。
- 班级人数:显然,越少越好。务必区分初始班级规模和两周内的实际班级规模。虽然我们一开始有 10 个人,但后来有两个人完全退出了(一个是因为课程太难,另一个是因为个人原因)。此外,*均每节课有两个人缺席,这使得我们的实际班级人数减少到了更亲密的六个人。
- 教师是在工业界工作还是全职教师?一般来说,我更喜欢工业界的老师。听到现实世界的公司是如何做事的令人振奋,因为他们经常使用令人惊讶的标准技术并取得令人满意的结果。更重要的是,来自行业的导师可以帮助你在事后获得聘用。一位教练告诉我们,他四年前在同一个训练营学习,并通过他以前的导师获得了他的最后三份工作。也就是说,从工业界聘请教师也有不利的一面:因为他们已经有了白天的工作,他们可能只能在周末或法定假日授课。后果就是你的作息会变得不规律。这就引出了我的下一个观点…
- 时间表:我们的时间表比我想象的更不稳定,周末有很多课要上。训练营的组织者或多或少希望学生在 3 个月的时间里全身心地投入到学习中。这种强度是值得的,但也是令人疲惫的。我基本上适应了,但是时间紧迫的人应该提前询问他们训练营的时间表,以确保他们不会冲突。
- 在城里还是在城外?我选择在柏林学习,我已经在那里
生活了七年。然而,我的大多数同学都是从其他地方来的。我很嫉妒:我认为离家学习有一个很大的好处,因为分心的事情更少,需要参加的社交活动更少。我的团队中有一个人没有告诉任何柏林朋友他在城里,以便更好地专注于素材。 - 教师在数据科学社区有多大影响力?在所有条件相同的情况下,我更喜欢有着良好公众声誉的导师的训练营(受欢迎的文章,实际上被真正的数据科学家使用的 GitHub repos,等等)。)这在一定程度上保证了我是由真正了解自己知识的人来教授的。当我看到一个我已经在上读过的关于数据科学的作者辅导了我们三天时,我很高兴。
- 训练营有当地社区吗?有一种说法是,最好的老师是比你领先一步的人,因为这个人仍然会认同你正在经历的困难。我的训练营办公室里有一间空房,是为之前的训练营参与者提供的临时工作空间。这个提议经常被利用,这意味着通常会有一些老兵四处游荡,乐于炫耀他们新获得的知识并回答我的基本问题。我在训练营中注意到的另一种社区形式是下班后在他们的办公室里举办 meetup.com 活动。当这样的事件发生在你家门口时,这将是一个与实践者交流并挤进更多数据科学的好方法。
我喜欢训练营的什么?
- 到目前为止,我最大的亮点是完成了我的第一个端到端项目。训练营把我们分成几个小组,我们将花三天时间参加一个预测药店销售额的挑战。尽管我们已经有了关于各种珍闻的课程,但我不知道如何将所有的东西整合到一个真正的项目中,并做出预测。花三天时间做这个挑战对巩固我所学的东西非常有效。除了漂浮在周围帮助我们摆脱困境的
之外,教练们也参加了比赛。显然,他们彻底击败了学生队,但看到我的*均误差只比他们低百分之几,我确实有一种成就感。这让我意识到,你只需要一些基本的东西就可以得到满意的结果。如果我在自己的企业中应用类似的模式,它就已经很有价值了!通过比较老师的解决方案和我自己的,我也学到了很多。 ( )我队的代号 在这里,以防你好奇。) - 我被竞争所激励。所以,当老师给我们做练习时,我会注意到别人比我领先三个问题,我会有一种强烈的冲动想赶上去。这将促使我在课后更加努力地学习——比其他情况下更努力。
- 与此相关的是,在我比同龄人更有知识的领域,帮助他们是一种回报。
- 在社交方面,我喜欢结识*常社交圈之外的人。例如,一名学生是科威特银行家/企业家,在流媒体出现之前,他曾试图在视频游戏中扮演网飞。另一个是对认知感兴趣的神经生物学研究者。
- 我感谢导师们在建立一个干净的开发环境方面的帮助。整个互联网似乎充满了关于安装 anaconda 和使用这些可怕的笔记本的建议。我曾被引导去相信,如果我不按照这个建议去做,我们所知道的世界将会终结。不是这样的!指导者向我展示了如何用一个常规的 python 虚拟 env 和我信赖了十年的 VIM 编辑器来流畅地运行一切。
我不喜欢训练营的什么?
Oh wait, wrong kind of bootcamp.
- 有些人(可能包括我)在上课时间贪婪地问问题,问一些对课堂毫无用处的事情。但这些问题是有代价的,因为它们迫使教师删减掉原本会涉及的核心内容。
- 有些人(有时也包括我)会迟到,当导师为迟到者提供宽限期时,无聊地等在那里令人沮丧,副作用是减少了其他人的上课时间。我更喜欢准时上课——不管是否有人出席。事实上,当导师提供宽限期,它鼓励更多的未来迟到。
- 为机器学习库下载和安装软件包可能需要 40 分钟以上。我们的老师有时会要求我们在前一天晚上安装一堆东西,但如果一些学生没有注意到备忘录或者只是没有注意,就会占用教学时间。
- 很容易变得危险地过度自信,让自己陷入尴尬。有一次,我因为自己的代码是正确的而骄傲自大——更愚蠢的是,因为某个指导者的代码是错误的。以至于我公开与他们对质。最终,他们看了看我的屏幕,他们花了大约两秒钟的时间找到了我的(难以置信的)错误。他们处理得很优雅,但我对自己感到愤怒,回到“愚蠢的初学者”阶段有点受宠若惊。简而言之,训练营对自我很苛刻。
- 教师的素质可能会有差异。虽然我喜欢我们的大多数老师,但有一位老师轻蔑的语气让我害怕在课堂上说话。我认为他本身并无恶意——更像是社交能力差。虽然我更希望我的训练营没有雇用他,但他们确实在第二天询问了我对他的课的反馈,并为我的糟糕经历感到抱歉。真正的考验将是运营商是否会放弃下一批导师…
三周后我提高了哪些技能?
用行话来说,这一段可能有点难懂,所以可以跳过。
- 通过 3 天的互动练习,我对主要的机器模型如何工作有了一些直觉,玩的是简化版本的算法。例如,这里有一个视频,展示了改变回归模型的偏差和斜率如何影响总误差量(SSE)和误差大小的分布。
We developed intuition by playing with models and answering questions.
-
我来自 Ruby/Javascript 背景,对 Python 的古怪之处了解不多。但是多亏了“高级 python”类,我才得以了解 python 的特性,比如装饰器、操作符重载、类型提示、requirements.txt 实践,以及 Python 处理可变性/不变性的(通常是疯狂的)方式。
-
我开始采用矢量化计算的范式,即在向量(或矩阵)上调用函数,而不是在普通列表上。矢量化计算可以比常规 Python 循环快 100 倍,例如,因为处理器不必担心列表式结构中的后续项目可能是不同的数据类型(因此需要替换机器指令)。
-
现在,我可以使用 pandas 浏览数据集,例如查看列类型、查找空值、计算子组的*均值、定位异常值以及过滤行:
-
我可以用 pandas 复制许多 SQL 查询。例如:
-
我可以预测机器学习中使用的矩阵的内存使用情况。这实际上非常简单——如果某个 8 字节浮点输出矩阵中有 60k 行和 10k 列,这意味着它将需要 6 亿个槽,每个槽的大小为 8 字节——即 4.8GB 的内存。
-
我可以在探索性分析过程中绘制数据图表,例如,比较一周中不同日子的销售均值。
Hmm, I wonder if there’s a pattern in this data…
-
我意识到在我的 python 代码中使用断言的价值,这样当我改变“仅仅一件事”时,就可以阻止错误的蔓延。例如
-
我知道如何建立和构建一个小型数据科学项目——如何分割数据以进行测试/训练,如何在探索过程中绘制图表,我有哪些选项来清理有问题的记录,如何以一种干净的方式进行特征工程,如何从 scikit-learn 中训练一个预打包的模型,如何测试模型的准确性,如何使用自动化工具来搜索更好的模型参数(例如 GridSearch ), 如何将拟合好的模型保存到磁盘上,这样就不必再从头开始训练它,最后,如何将所有东西打包成一个可运输的程序,对看不见的数据进行预测。
-
我现在意识到,尽管数据科学领域非常庞大,但有一些常用算法在许多情况下表现良好,并且可能在“普通”公司中对“普通”数据科学问题做得足够好。这些模型包括随机森林、逻辑回归、线性回归、K *邻、维度缩减,当然还有神经网络。
-
我知道如何在开发数据科学模型时加快反馈循环。例如,一旦我的训练数据被清理,我现在将它保存为中间 CSV 文件,以便(通常很慢的)清理计算不需要一次又一次地执行。我给我的代码一个“调试模式”,在这个模式下,要拟合的模型被给定参数,使它几乎可以立即进行训练:这给了我一种方法来检查代码的整体流程,而不必永远等待。
-
我终于理解了多元微积分中的梯度。这要归功于导师推荐的优秀视频和网站,也要归功于我的两位同学,他们耐心地浏览了我的纸笔推导,理清了我的思路。
-
(靠我自己)我学会了如何将可爱的 python 工具 scrapy 与 Scraping Hub 结合起来,后者是一种让在云中运行刮刀变得非常容易的服务。
-
(还是我自己)我为 python 优化了我的编辑器(VIM)。我用 autopep8 实现了一种漂亮的风格,我用 yapf 自动重新格式化了长行,我用 pyflakes 检测了语法错误,我用 jedi-vim 获得了自动完成和函数文档,并使用 mypy 实现了可选的输入提示。最后但同样重要的是,插入调试器代码片段或打印当前行的快捷方式。
我该如何建议人们充分利用他们的训练营经历?
- 在开始之前,对编程有一定的了解:如果你不会编程,你的工作将会变得非常缓慢。老实说,如果你还没有花至少一百个小时进行常规编程,那么参加数据科学训练营就是浪费你的时间和金钱。
- 乐于向导师提问:一些学生甚至在私下(课后)都不好意思提问,这意味着他们错过了导师的专业知识,这是参加训练营的一个关键优势。此外,还有陷入垃圾的危险纳什均衡没有人理解所教的内容,但每个人都认为其他人都理解,因为没有人问任何问题…
- 向其他学生寻求帮助:我们这一批人各有所长——我在经典编程方面经验丰富,而其他人则擅长使用计算机解决复杂的方程。利用同龄人的知识是摆脱困境的好方法。我还学会了更加适应其他学生可能寻求帮助的间接、保全面子的方式——例如,有人问我“你修改代码来做 XYZ 了吗?”)直到一天后,我才意识到他们真正的意思是“你能和我分享一下你是如何在 XYZ 迷路的吗?”将此与另一个更直接的人进行比较,他可能会说“你能把你的 XYZ 代码发给我吗?”
- 激发教师的智力兴趣:如果教师对时间序列数据或贝叶斯统计感兴趣,他们会喋喋不休地谈论这些话题。这意味着你可以战略性地选择项目,以激发他们的热情。
之后找份工作?
因为我已经拥有了自己的生意,所以这不是我要考虑的。但是对于课程中的许多其他人来说,之后找到一份工作是一个主要的动机,所以我将补充一些观察。
我遇到了前几批训练营的很多人,听到了他们在就业市场上表现如何的窃窃私语:结果完全不令人惊讶。基本上,任何被驱动的人,任何能够发布工作代码的人,任何有一点社交风度的人都被工业界抢购一空。我说这“不足为奇”,因为同样的人可能会在没有参加任何训练营的情况下被抢购。但可能只适合普通的编程工作,而不是数据科学工作。
我意识到我的观点几乎是一个同义反复:如果你想在训练营结束后被聘为数据科学家,无论如何都要成为那种可以被聘用的人。
结论:我陷得太深了吗?
在我的第一天,在看到前一届的一个团队是如何制造出一个怪异的人工智能机器人后,我感到很害怕,因为我不够资格。但我不应该如此沮丧。事实是:程序员建立在其他程序员的工作之上。在这个团队中,他们的工作基于驴车,一个开源的小型车辆 DIY 自动驾驶*台。
Donkey Car — https://www.donkeycar.com/
我这样说并不是要贬低那个队的成就,他们所做的确实令人印象深刻。我这么说是为了展示今天的工具是如何让初学者也能完成对其他程序员来说与魔术无异的壮举——更不用说对公众了。这正是数据科学令人兴奋的地方。
我不再感到害怕——我感到受到了鼓舞。
什么是大屏幕数据可视化,如何实现?
原文:https://towardsdatascience.com/what-is-data-visualization-for-large-screen-and-how-to-implement-it-1d79cf07783?source=collection_archive---------10-----------------------
1。什么是数据可视化?
在大数据时代,可视化仪表盘已经成为商业决策的重要工具。
将复杂抽象的数据以一种更容易理解的形式直观地呈现出来的一系列手段被称为数据可视化。数据可视化旨在使人们快速理解数据背后的含义。
数据可视化除了具有可视化的特性,还具有交流和交互的特性。
2。什么是大屏幕数据可视化?
以大屏幕为主要显示载体的可视化仪表盘设计称为大屏幕数据可视化。它的特点是大面积、酷炫的动态效果和丰富的色彩。大屏幕仪表盘可用于信息显示、数据分析、监控和预警。
3。大屏在企业中有哪些应用场景?
为了让大家更好的理解大屏数据可视化的概念,我将列举一些大屏在企业中的应用场景。
3.1 实时监控中心
From FineReport
From FineReport
3.2 战略指挥总部
From FineReport
From FineReport
3.3 展览中心
From FineReport
3.4 会议中心
From FineReport
From FineReport
3.5 活动中心
From FineReport
4。大屏数据可视化如何入门?
这里我以数据可视化工具FineReport为例,教你一些基本的技巧,让你快速有效的学会制作一个炫酷的大屏幕仪表盘。
FineReport 为企业提供数字大屏幕解决方案。无需特殊定制即可轻松打造炫酷的大屏仪表盘,支持多场景大屏集中控制。而且它的个人版是完全免费的,你可以 下载它 放心地练习可视化技术。
现在,让我们从仪表板设计的基础开始。
4.1 了解仪表板设计的基础知识
①描述
FineReport 采用画布风格的操作界面,专为大屏幕和移动终端设计。它可以帮助用户通过简单的拖放操作构建一个强大而全面的“管理驾驶舱”。FineReport 的仪表板设计模式有很多优点:
1)多种布局方式:自适应布局、绝对布局、Tab 布局;
2)丰富的可视化组件:报表块、图表和小部件;
3)组件联动:点击一个组件,其他相应重载数据;
4)数据监控:可以自动检测后端数据的变化,仪表板会刷新以更新变化;
5)轮播:不同的图表可以在同一个组件中以轮播方式切换。
②仪表板界面
打开设计器,点击文件>新建表单创建一个新的仪表板模板,如下图所示。
仪表板有许多组件,如参数界面、空白块、图表等。为了帮助您理解每个组件的含义,我将所有组件添加到同一个界面中。
****-参数界面:将该元素拖动到画布上,会得到一个过滤报表块和图表中数据的面板。您可以向面板添加小部件。
****-空白块:空白块包含页签布局块、绝对布局块和报表块。
选项卡布局块可以在选项卡中显示不同组件,并以轮播模式实现组件切换。
绝对布局块使元素的大小固定。
报告块类似于常规报告,数据显示在组件范围内。
****-图表:常规报表支持的所有图表类型都可以拖到画布上进行数据可视化。
****-Widget:Widget 是过滤数据的组件。它可以作为参数界面的一部分添加,也可以作为单独的组件添加。
4.2 根据指标选择图表类型
- 进行业务需求研究,提取基于业务场景的关键指标。
- 根据关键指标确定图表类型。
数据可视化的最终目的是更清晰地传达信息,也就是用什么图形来呈现数据是很重要的。我们确定了一个数据关系类型后,就可以根据数据的使用场景,找出对应的图表和使用建议,并从中进行选择。
****
From FineReport
如果想了解更多各种图表的使用场景,可以阅读本文 数据可视化中的 16 大图表类型 。
4.3 大屏幕设计布局
设计布局就是把大屏幕按照大小分成几个区域,每个区域放置一个业务指示器。根据数据可视化的目的提取指标,分为一级指标和二级指标。一级业务指标通常安排在中间位置,占用面积较大,其余指标围绕一级指标进行。以下是大屏幕的常见布局设计。
****
From FineReport
- 主要指示器:大多位于屏幕中央。您可以添加动态效果来增强视觉效果。
- 次要指标:大多在屏幕两侧,一般是各种类型的数据或图表。
4.4 考虑配色方案
合理的布局可以让商业内容更有层次,合理的配色可以让浏览者更舒服。大屏幕的仪表盘背景色通常遵循两个原则:深色调和一致性。如下图,我给你看几个推荐的配色。
单个元素的背景应该与整体背景颜色一致,以避免突兀。建议用透明色搭配一些单独的组件元素。
From FineReport
4.5 添加动态效果
动态效果的范围很广,可以从多个角度解读,比如背景动画、刷新加载动画、轮播动画、图表闪烁动画、地图流动动画等。,都属于动态效果的范畴。
From FineReport
动感的增加可以让大屏幕看起来活灵活现。然而,过多的动态使观众眼花缭乱,导致大屏幕仪表盘失去了商业显示器的价值。既要*衡酷炫的效果,又要突出内容。
如下图高速公路监控仪表盘,动态显示路况下通行费缴纳数值,关键信息一目了然。
From FineReport
最终
现在,你明白什么是大屏幕数据可视化以及如何实现它了吗?如果你想要一个更详细的大屏幕仪表盘制作教程,本文 一步一步制作销售仪表盘 将对你有所帮助。而且我觉得可视化工具 FineReport 对于那些初学者来说是个不错的选择。
您可能也会对…感兴趣
2019 年你不能错过的 9 个数据可视化工具
数据分析师需要掌握的 6 项关键技能
商业仪表盘入门
新手如何设计酷炫的数据可视化?
2019 年 6 大数据分析工具
数据可视化十大地图类型
什么是深度学习,它是如何工作的?
原文:https://towardsdatascience.com/what-is-deep-learning-and-how-does-it-work-f7d02aa9d477?source=collection_archive---------6-----------------------
坐下来,放松,对人工神经网络、梯度下降、反向传播等酷概念感到舒适。
Photo by Chevanon Photography from Pexels
什么是深度学习?
这是从例子中学习。差不多就是这样。
在非常基础的层面上,深度学习是一种机器学习技术。它教会计算机通过层层过滤输入,以学习如何预测和分类信息。观察可以是图像、文本或声音的形式。
深度学习的灵感来自人脑过滤信息的方式。它的目的是模仿人类大脑如何工作来创造一些真正的魔法。
GIF via GIPHY
这实际上是一个人工神经网络。
在人脑中,大约有 1000 亿个神经元。每个神经元都与大约 10 万个相邻的神经元相连。我们在某种程度上重现了这一点,但在某种程度上是为机器服务的。
在我们的大脑中,神经元有一个体、树突和轴突。来自一个神经元的信号沿着轴突传递到下一个神经元的树突。信号传递的连接被称为突触。
神经元本身是没用的。但是当你有很多这样的人时,他们会一起创造出一些真正的奇迹。这就是深度学习算法背后的想法!你从观察中获得输入,然后把你的输入放到一个层中。该层创建一个输出,该输出又成为下一层的输入,依此类推。这种情况反复发生,直到你的最终输出信号!
神经元(节点)获得一个或多个信号(输入值),这些信号通过神经元。那个神经元传递输出信号。
把输入层想象成你的感官:例如,你看到的、闻到的和感觉到的东西。这些是一次观察的独立变量。这些信息被分解成数字和计算机可以使用的二进制数据位。你需要标准化或规范化这些变量,使它们在相同的范围内。
它们使用多层非线性处理单元进行特征提取和转换。每个后续层使用前一层的输出作为其输入。他们所学的形成了概念的层次结构。在这个层次结构中,每一级都学会将其输入数据转换成越来越抽象和复合的表示。
Image by ahmedgad on Pixabay
这意味着,例如,对于一幅图像,输入可能是像素矩阵。第一层可以对边缘进行编码并组成像素。下一层可能构成边缘的排列。下一层可能编码鼻子和眼睛。下一层可能会识别出图像包含人脸,等等。
神经元内部发生了什么?
输入节点以数字形式接收信息。信息以激活值的形式呈现,每个节点都有一个编号。数字越高,激活程度越大。
基于连接强度(权重)和传递函数,激活值传递到下一个节点。每个节点对其接收的激活值求和(它计算加权和),并基于其传递函数修改该和。接下来,它应用一个激活函数。激活函数是应用于这个特定神经元的函数。由此,神经元知道是否需要传递信号。
每个突触都被分配了权重,这对人工神经网络 (ANNs)至关重要。重量是人工神经网络学习的方式。通过调整权重,人工神经网络决定信号传递的程度。当你训练你的网络时,你决定如何调整权重。
激活通过网络运行,直到它到达输出节点。然后输出节点以我们可以理解的方式给我们信息。您的网络将使用成本函数来比较输出和实际预期输出。模型性能由代价函数来评价。它表示为实际值和预测值之间的差值。您可以使用许多不同的成本函数,查看网络中的误差。你在努力减少功能损失。(本质上,损失函数越低,就越接*你想要的输出)。信息返回,神经网络开始学习,目标是通过调整权重来最小化成本函数。这个过程被称为反向传播。
在正向传播中,信息被输入到输入层,并通过网络向前传播,以获得我们的输出值。我们将这些值与我们的预期结果进行比较。接下来,我们计算误差并反向传播信息。这允许我们训练网络并更新权重。(反向传播允许我们同时调整所有权重。)在此过程中,由于算法的结构,您可以同时调整所有权重。这使您可以看到神经网络中的每个权重对错误的哪一部分负责。
当您将重量调整到最佳水*后,您就可以进入测试阶段了!
Photo by Yogendra Singh from Pexels
人工神经网络是如何学习的?
有两种不同的方法可以让程序做你想做的事情。首先,有特别指导和硬编程的方法。你确切地告诉程序你想要它做什么。然后还有神经网络。在神经网络中,你告诉你的网络输入和你想要的输出,然后让它自己学习。
通过允许网络自己学习,你可以避免输入所有规则的必要性。你可以创建架构,然后让它去学习。一旦它训练好了,你可以给它一个新的图像,它将能够区分输出。
前馈和反馈网络
一个前馈网络是一个包含输入、输出和隐藏层的网络。信号只能单向传播(向前)。输入数据传递到执行计算的层。每个处理元件基于其输入的加权和进行计算。新值成为新的输入值,用于下一层(前馈)。这将贯穿所有层,并决定输出。前馈网络通常用于例如数据挖掘。
一个反馈网络(例如,一个递归神经网络)有反馈路径。这意味着它们可以使用环路双向传输信号。神经元之间所有可能的连接都是允许的。由于这种类型的网络中存在环路,因此它成为一个非线性动态系统,不断变化直到达到*衡状态。反馈网络通常用于优化问题,其中网络寻找相互关联的因素的最佳安排。
什么是加权和?
神经元的输入可以是来自训练集的特征,也可以是来自前一层神经元的输出。两个神经元之间的每个连接都有一个独特的突触,并附有独特的权重。如果你想从一个神经元到下一个神经元,你必须沿着突触行进,并支付“通行费”(重量)。然后,神经元将激活函数应用于来自每个传入突触的加权输入的总和。它将结果传递给下一层的所有神经元。当我们谈论更新网络中的权重时,我们谈论的是调整这些突触上的权重。
一个神经元的输入是前一层所有神经元的加权输出之和。每个输入都乘以与将输入连接到当前神经元的突触相关联的权重。如果在前一层中有 3 个输入或神经元,则当前层中的每个神经元将具有 3 个不同的权重:每个突触一个。
简而言之,一个节点的激活函数定义了该节点的输出。
激活函数(或传递函数)将输入信号转换成输出信号。它在 0 到 1 或-1 到 1 的范围内映射输出值。这是一个抽象概念,代表细胞内动作电位发放的速率。这是一个数字,代表细胞被激发的可能性。在最简单的情况下,函数是二元的:是(神经元触发)或否(神经元不触发)。输出可以是 0 或 1(开/关或是/否),也可以是范围内的任何值。例如,如果您使用映射范围在 0 和 1 之间的函数来确定图像是一只猫的可能性,输出 0.9 将显示您的图像实际上是一只猫的概率为 90%。
什么是激活功能?
简而言之,一个节点的激活函数定义了该节点的输出。
激活函数(或传递函数)将输入信号转换成输出信号。它在 0 到 1 或-1 到 1 的范围内映射输出值。这是一个抽象概念,代表细胞内动作电位发放的速率。这是一个数字,代表细胞被激发的可能性。在最简单的情况下,函数是二元的:是(神经元触发)或否(神经元不触发)。输出可以是 0 或 1(开/关或是/否),也可以是范围内的任何值。
我们有什么选择?有许多激活函数,但以下是四个非常常见的函数:
阈值功能
这是一个阶跃函数。如果输入的合计值达到某个阈值,该函数将传递 0。如果它等于或大于零,那么它将传递 1。这是一个非常严格,简单,是或不是的函数。
Example threshold function
乙状结肠功能
此函数用于逻辑回归。与阈值函数不同,它是一个从 0 到 1 的*滑渐进过程。它在输出层很有用,大量用于线性回归。
Example sigmoid function
双曲正切函数
这个函数非常类似于 sigmoid 函数。但是,与从 0 到 1 的 sigmoid 函数不同,该值从-1 到 1,一直到 0 以下。尽管这不太像大脑中发生的事情,但这个函数在训练神经网络时会产生更好的结果。神经网络有时会在使用 sigmoid 函数进行训练时“卡住”。当有很多强烈的负面输入使输出接*于零时,就会发生这种情况,这会扰乱学习过程。
Example hyperbolic tangent function (tanh)
整流器功能
这可能是神经网络世界中最受欢迎的激活函数。这是最有效的,也是生物学上最合理的。尽管它有一个扭结,但在 0°扭结后,它是*滑和渐变的。举例来说,这意味着你的输出要么是“否”,要么是“是”的百分比这个函数不需要标准化或其他复杂的计算。
Example rectifier function
什么?
比如说,你想要的值是二进制的。你在寻找一个“是”或“否”。你想使用哪个激活功能?
从上面的例子中,你可以使用阈值函数,也可以使用 sigmoid 激活函数。阈值函数会给你一个“是”或“否”(1 或 0)。sigmoid 函数可以给你一个肯定的概率。
例如,如果您使用 sigmoid 函数来确定图像是一只猫的可能性,输出 0.9 将显示您的图像实际上是一只猫的可能性为 90%。
Photo by minanafotos on Pixabay
想了解更多关于图像分类的知识?看看这篇文章!
[## 深度学习完全初学者指南:卷积神经网络
在几分钟内征服 CNN 和图像分类的基础
towardsdatascience.com](/wtf-is-image-classification-8e78a8235acb)
想潜得更深吗?查看 Xavier Glorot 等人的深度稀疏整流器神经网络。
你如何调整重量?
你可以使用蛮力方法来调整权重,并测试数千种不同的组合。但是即使最简单的神经网络只有五个输入值和一个隐藏层,你也会得到 10⁷⁵可能的组合。
在世界上最快的超级计算机上运行这个程序需要的时间比迄今为止宇宙存在的时间还要长。
输入梯度下降
但是如果你使用梯度下降,你可以查看权重的倾斜角度,并找出它是正还是负,以便继续向下倾斜,在你寻求达到全局最小值的过程中找到最佳权重。
如果你使用梯度下降,你可以查看重物的倾斜角度,并找出它是正还是负。这允许你继续下坡,在你寻求达到全局最小值的过程中找到最佳权重。
Photo by RANJAN SIMKHADA from Pexels
梯度下降是一种寻找函数最小值的算法。你会一遍又一遍地看到类似的情况,有人被困在山顶,试图下来(找到最小值)。大雾使她看不清路,所以她使用梯度下降法到达山脚。她看了看她所在的山的陡峭程度,然后向最陡的下坡方向走去。你应该假设陡度不会立即变得明显。幸运的是,她有一个可以测量陡度的工具!
不幸的是,这个工具需要很长时间。
她想尽可能少地使用它,以便在天黑前下山。真正的困难是选择她使用工具的频率,这样她就不会偏离轨道。
在这个类比中,人就是算法。山的陡度是该点误差面的斜率。她走的方向是该点误差曲面的梯度。她使用的工具是微分(误差表面的斜率可以通过对该点的*方误差函数求导来计算)。在进行另一次测量之前,她行进的速率是算法的学习速率。这不是一个完美的类比,但它让你很好地理解了梯度下降是怎么回事。机器正在学习模型应该采用的梯度或方向,以减少误差。
gradient descent (simplified!)
梯度下降要求代价函数是凸的,但是不是怎么办?
Now what?
正常梯度下降将卡在局部最小值而不是全局最小值,从而导致网络不合格。在正常梯度下降中,我们将所有行插入同一个神经网络,看一看权重,然后调整它们。这被称为批量梯度下降。在随机梯度下降中,我们一行接一行,运行神经网络,查看成本函数,调整权重,然后移动到下一行。实际上,您正在调整每一行的权重。
随机梯度下降波动大得多,可以让你找到全局最小值。它被称为“随机的”,因为样本是随机混合的,而不是作为一个单独的组或当它们出现在训练集中时。它看起来可能会慢一些,但实际上更快,因为它不必将所有数据加载到内存中,并在数据一起运行时等待。批量梯度下降的主要优势在于它是一种确定性算法。这意味着,如果你有相同的起始重量,每次运行网络,你会得到相同的结果。随机梯度下降总是随机工作。(您也可以运行小批量梯度下降,您可以设置行数,一次运行那么多行,然后更新您的权重。)
已经提出并使用了对基本随机梯度下降算法的许多改进,包括隐式更新(ISGD)、动量法、*均随机梯度下降、自适应梯度算法(AdaGrad)、均方根传播(RMSProp)、自适应矩估计(Adam)等等。
因此,这里有一个用随机梯度下降训练人工神经网络的快速演练:
- 将权重随机初始化为接* 0 的小数字
- 将数据集的第一个观测值输入到输入图层,每个要素位于一个输入结点中。
- 正向传播 —从左到右,神经元被激活,每个神经元的激活受权重的限制。你传播激活,直到你得到预期的结果。
- 将预测结果与实际结果进行比较,并测量产生的误差。
- 反向传播 —从右到左,误差反向传播。根据权重对误差的影响程度来更新权重。(学习率决定了我们更新权重的程度。)
- 强化学习(重复步骤 1-5,并在每次观察后更新权重)或 批量学习(重复步骤 1-5,但仅在一批观察后更新权重)。
- 当整个训练集已经通过 ANN 时,这是一个时期。重复更多的纪元。
你有它!这些是人工神经网络背后的基本思想。
想了解更多?
你可能想读一下 Yann LeCun 等人的高效反向传播,以及 Michael Nielsen 的神经网络和深度学习。如果你有兴趣了解更多关于成本函数的知识,请查看神经网络中使用的成本函数列表,以及应用。
感谢阅读!如果你有任何问题,请在下面的评论中告诉我,或者随时联系我!
原载于 2019 年 9 月 7 日 内容简洁 。
什么是深度迁移学习,为什么它变得如此流行?
原文:https://towardsdatascience.com/what-is-deep-transfer-learning-and-why-is-it-becoming-so-popular-91acdcc2717a?source=collection_archive---------10-----------------------
A man sitting on a bridge in Austria
介绍
正如我们已经知道的,大型有效的深度学习模型是数据饥渴的。他们需要用数千甚至数百万个数据点进行训练,然后才能做出合理的预测。
培训在时间和资源上都非常昂贵。例如,由谷歌开发的流行语言表示模型 BERT 已经在 16 个云 TPU(总共 64 个 TPU 芯片)上训练了 4 天。客观地说,这是大约 60 台台式计算机连续运行 4 天。
然而,最大的问题是,像这样的模型只能在单一任务中执行。未来的任务需要一组新的数据点以及等量或更多的资源。
Photo by Rachel on Unsplash
然而,人类的大脑并不是这样工作的。当解决一个新任务时,它不会丢弃先前获得的知识。相反,它根据从过去学到的东西做出决定。
迁移学习旨在模仿这种行为。
什么是迁移学习?
迁移学习是深度学习(和机器学习)中的一种方法,其中知识从一个模型转移到另一个模型。
Def: 模型 A 使用大型数据集 D.a 成功训练以解决源任务 T.a。但是,目标任务 T.b 的数据集 D.b 太小,妨碍了模型 B 的有效训练。因此,我们使用部分模型 A 来预测任务 T.b. 的结果
一个常见的误解是,训练和测试数据应该来自同一个来源或具有相同的分布。
使用迁移学习,我们能够在不同的任务中使用全部或部分已经预先训练好的模型来解决特定的任务。
著名的人工智能领袖吴恩达在下面的视频中很好地解释了这个概念。
什么时候使用迁移学习?
迁移学习正在成为使用深度学习模型的首选方式。原因解释如下。
缺乏数据
深度学习模型需要大量数据来有效地解决一项任务。然而,并不是经常有这么多数据可用。例如,一家公司可能希望为其内部通信系统构建一个非常特定的垃圾邮件过滤器,但并不拥有大量带标签的数据。
在这种情况下,可以使用类似源任务的预训练模型来解决特定的目标任务。
任务可以不同,但它们的领域应该相同。
换句话说,你不能在语音识别和图像分类任务之间进行迁移学习,因为输入数据集的类型不同。
你可以做的是在狗的照片上使用预先训练好的图像分类器来预测猫的照片。
Source: “How to build your own Neural Network from scratch in Python” by James Loy
速度
迁移学习减少了很大一部分培训时间,并允许立即构建各种解决方案。此外,它还可以防止设置复杂且昂贵的云 GPU/TPU。
社会公益
使用迁移学习对环境有积极的影响。
根据麻省理工科技评论的一项研究,在云 TPU 上训练的大型神经网络(200M+参数)在其生命周期内产生的二氧化碳相当于 6 辆汽车。迁移学习可以防止这些强大的处理单元的广泛使用。
深度迁移学习策略
迁移学习可以通过几种不同的策略应用于深度学习和机器学习领域。在这篇文章中,我将只涉及深度学习技术,称为深度迁移学习策略。
在深度学习模型上进行迁移学习有 3 种主要策略。
直接使用预先训练的模型
最简单的策略是通过直接应用来自源任务的模型来解决目标任务。
这种模型通常是大型(数百万个参数)神经网络,在最先进的机器上训练数天甚至数周。
大公司(公司、大学等。)倾向于向公众发布此类模型,旨在增强该领域的发展。
一些直接使用的预训练模型包括前面提到的伯特以及 YOLO(你只看一次)、手套、未监督的等等。
利用从预训练模型中提取的特征
我们可以通过丢弃最后一个完全连接的输出层,将预训练的神经网络视为特征提取器,而不是像前面的例子那样使用端到端的模型。
这种方法允许我们直接应用新的数据集来解决一个完全不同的问题。
它带来了两个主要优势:
- 允许指定最后一个完全连接层的尺寸。
例如,预训练网络可能具有来自最后完全连接之前的层的7×7×512输出。我们可以将其拉*为 21,055 ,这将产生一个新的 N x 21,055 网络输出( N —数据点的数量)。
- 允许使用轻量级线性模型(如线性 SVM、逻辑回归)。
因为预训练的复杂神经网络模型被用作新任务的特征,所以我们被允许训练更简单和更快速的线性模型,以基于新的数据集修改输出。
特征提取策略最适合于目标任务数据集非常小的情况。
微调预训练模型的最后几层
我们可以更进一步,不仅训练输出分类器,而且在预训练模型的一些层中微调权重。
典型地,网络的早期层(尤其是 CNN)被冻结,而最后的层被释放用于调谐。
这允许我们在现有模型上执行完整的训练,并在最后一层修改参数。
我们选择仅修改最后的图层,因为已经观察到网络中较早的图层捕获更多的通用要素,而较晚的图层则非常特定于数据集。
假设我们最初的预训练模型以非常高的准确度识别奔驰汽车。该模型的初始层倾向于捕捉关于车轮位置、汽车形状、曲线等的信息。我们可以在下一个识别法拉利汽车的任务中保留这些信息。然而,对于更具体的法拉利功能,我们应该用新的数据集重新训练最后几层。
话虽如此,当目标任务数据集非常大,并且与源任务数据集共享一个相似的域时,最好使用微调策略。
资源
本文的灵感来自一系列论文和教程,其中包括:
- 转移学习作者 Andrej Karpathy @ Stanford。
- 由 Dipanjan (DJ) Sarkar 撰写的综合实践指南,将学习与深度学习中的真实世界应用。
- Keras:利用深度学习对大型数据集进行特征提取作者 Adrian Rosebrock。
- 使用 Keras 进行微调和深度学习Adrian rose Brock。
- 迁移学习研究综述。
- 深度学习迁移学习的温和介绍作者 Jason Brownlee。
- Jason Brownlee 的《用计算机视觉模型在 Keras 中转移学习》。
感谢您的阅读。希望你喜欢这篇文章。❤️
什么是探索性空间数据分析(ESDA)?
原文:https://towardsdatascience.com/what-is-exploratory-spatial-data-analysis-esda-335da79026ee?source=collection_archive---------9-----------------------
提示:不是通常的 EDA。关于如何使用空间探索性数据分析(空间自相关)从数据中获得洞察力的指南
Photo by fabio on Unsplash
当您想要从基于位置的数据中探索模式时,您会怎么做?你怎么知道你的位置数据不是随机的?用相关性就够了吗?或者有没有其他的统计方法用于这种探索性的数据分析。
在本教程中,我将向您展示如何使用 Python 通过简单易行的步骤对您的位置数据执行探索性数据分析。Github 中也有本教程的代码。
探索性空间数据分析
在数据科学中,我们倾向于在进行任何建模或处理任务之前探索和研究数据。这有助于您识别模式、总结数据的主要特征或测试假设。传统的探索性数据分析并不明确调查数据集的位置成分,而是处理变量之间的关系以及它们如何相互影响。相关统计方法常用于探讨变量之间的关系。
相比之下,探索性空间数据分析(ESDA)将特定变量与位置相关联,同时考虑邻域中相同变量的值。用于此目的的方法称为空间自相关。
空间自相关描述给定变量中存在(或不存在)空间变化。像传统的相关方法一样,空间自相关具有正值和负值。正空间自相关是指彼此靠*的区域具有相似的值(高-高或低-低)。另一方面,负的空间自相关表示相邻区域不同(低值紧挨着高值)。
Spatial Autocorrelation: Source
探索性空间数据分析(ESDA)主要有两种方法:全局和局部空间自相关。全局空间自相关侧重于数据集中的总体趋势,并告诉我们数据集中的聚集程度。相比之下,局部空间自相关检测数据集中的可变性和发散性,这有助于我们识别数据中的热点和冷点。
获取数据
在本教程中,我们使用 Airbnb 数据集(点数据集)和伦敦的图层超级输出区域-LSOA-邻域(面数据集)。我们进行空间连接,将 Airbnb 房源的每个点连接到邻*区域。如果您想了解并在工作流中使用强大的空间连接工具。我这里有个教程:
[## 如何在 Python 中通过位置轻松连接数据—空间连接
如何在 Python 中轻松地进行空间连接,以及为什么它是数据科学中经常被忽略的强大工具。
towardsdatascience.com](/how-to-easily-join-data-by-location-in-python-spatial-join-197490ff3544)
我们使用的数据集是空间连接的伦敦 Airbnb 房产,带有每个本地区域(街区)的房产*均价格。
对于本教程,我们使用 Pandas、Geopandas 和 Python 空间分析库(Pysal) 库。所以让我们导入这些库。
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as pltimport pysal
from pysal import esda, weights
from esda.moran import Moran, Moran_Localimport splot
from splot.esda import moran_scatterplot, plot_moran, lisa_cluster
我们可以读取 Geopandas 中的数据。
avrg_price_airbnb = gpd.read_file(“london-airbnb-avrgprice.shp”)
avrg_price_airbnb.head()
以下是伦敦 Airbnb 房产均价的前 5 行。
由于我们有一个几何列(纬度和经度),我们可以映射数据。这是每个街区*均价格的 choropleth 图。
choropleth map — average prices of Airbnb properties in London.
有了这张 choropleth 地图,我们可以看到分箱的价格范围,但这并没有给我们任何统计数据,我们可以确定是否存在空间自相关(正或负,甚至热点和冷点在哪里。这就是我们接下来要做的。
空间权重和空间滞后
在执行任何空间自相关之前,我们首先需要确定空间权重和空间滞后。
空间权重是我们确定区域邻域的方式。有多种不同的统计方法用于确定空间权重,除此之外,本文将对每种方法进行深入解释。最常用的空间权重方法之一是我们使用的皇后邻接矩阵。这是一个解释女王邻接矩阵如何工作的图表(也包括车邻接矩阵)
Contiguity Matrix Source
为了计算皇后邻接空间权重,我们使用 Pysal。
w = weights.Queen.from_dataframe(avrg_price_airbnb, idVariable=”LSOA_CODE” )w.transform = "R"
另一方面,空间滞后是给定变量(在我们的例子中是价格)的空间权重矩阵的乘积。空间分支对行进行标准化,并获取每个加权邻域中价格的*均结果。
avrg_price_airbnb[“w_price”] = weights.lag_spatial(w, avrg_price_airbnb[“price”])
现在,我们在表中创建了一个新列来保存每个街区的加权价格。
全球空间自相关
全局空间自相关决定了数据集中的整体模式。这里我们可以计算是否有趋势,并总结感兴趣的变量。Moran 的 I 统计通常用于确定全局空间自相关,因此让我们来计算一下。
y = avrg_price_airbnb[“price”]
moran = Moran(y, w)
moran.I
我们得到这个数据集的数字 0.54 。这个数字是什么意思?这个数字总结了数据集的统计数据,就像非空间数据的*均值一样。莫兰的 I 值范围从-1 到 1。在我们的案例中,该数字提供了该数据集中存在正空间自相关的信息。请记住,我们仅使用 Moran 的 I 统计量来确定全局自相关。它并没有告诉我们这个正的空间自相关存在于哪里(我们接下来会这样做)。
我们使用 Moran 的 I 图来显示全球空间自相关,这与其他散点图相同,使用线性拟合来显示两个变量之间的关系。
fig, ax = moran_scatterplot(moran, aspect_equal=True)
plt.show()
Moran’s I Scatter Plot
Moran 的 I 散点图和 Moran 的 I 散点图都显示了数据集中不同位置的正相关观察值。让我们看看数据集中哪里有空间变化。
局部空间自相关
到目前为止,我们只确定了邻*地区的房地产价格与其位置之间存在正的空间自相关。但是我们还没有探测到星团在哪里。空间关联局部指标(LISA)就是用来做这个的。LISA 将区域分为四组:高值接*高值(HH),低值接*低值(LL),低值在其邻域内具有高值,反之亦然。
我们已经计算了权重(w ),并将价格确定为我们感兴趣的变量(y)。为了计算 Moran 局部,我们使用 Pysal 的功能。
# calculate Moran Local
m_local = Moran_Local(y, w)
和 plot Moran 的局部散点图。
# Plot
fig, ax = moran_scatterplot(m_local, p=0.05)
ax.set_xlabel(‘Price’)
ax.set_ylabel(‘Spatial Lag of Price’)
plt.text(1.95, 0.5, “HH”, fontsize=25)
plt.text(1.95, -1.5, “HL”, fontsize=25)
plt.text(-2, 1, “LH”, fontsize=25)
plt.text(-1, -1, “LL”, fontsize=25)
plt.show()
正如我们提到的,散点图将这些区域分为四组。
Moran Local Scatter Plot — LISA
现在,这很酷,我们可以看到所有的值被分为四组,但令人兴奋的是看到这些值在地图上聚集在一起。同样,Pysal (splot)中有一个函数可以绘制 LISA 结果的地图。
LISA Cluster Map -Airbnb Average price per neighborhood.
上面的地图显示了 Airbnb 房产*均价格的变化。红色表示聚集在一起的社区,这些社区的物价很高,周围也很高(主要是市中心)。蓝色区域表示价格低的地方,周围也是低价值价格的区域(主要是外围)。同样有趣的还有低-高和高-低面积浓度。
与我们从本教程开始的 Choropleth 地图相比,LISA 更加清晰,并提供了数据集的清晰图片。探索性空间数据分析(ESDA)技术是帮助您识别可应用于任何给定变量的空间自相关和局部聚类的强大工具。
结论
在本教程中,我们探讨了如何对空间数据执行探索性数据分析(EDA)。本教程的代码可以在 GitHub 的笔记本和数据中找到。
[## shakasom/esda
此时您不能执行该操作。您已使用另一个标签页或窗口登录。您已在另一个选项卡中注销,或者…
github.com](https://github.com/shakasom/esda/blob/master/Exploraty_Spatial_Data_Analysis.ipynb)
您也可以从这里直接运行 Google Colab 笔记本:
[## 谷歌联合实验室
编辑描述
colab.research.google.com](https://colab.research.google.com/drive/1R8hzFFX50qnfipoXcdXi4zCmG0zvTXD5)
指数分布——直觉、推导和应用
原文:https://towardsdatascience.com/what-is-exponential-distribution-7bdd08590e2a?source=collection_archive---------1-----------------------
何时使用指数分布
我们总是从“为什么”开始,而不是直接进入公式。如果你明白其中的原因,它会一直伴随着你,你会更有可能把它应用到你自己的工作中。
1.为什么我们必须发明指数分布?
预测直到下一个事件(即成功、失败、到达等)的等待时间。).
例如,我们希望预测以下内容:
- 到顾客完成浏览并在您的商店实际购买商品的时间 (成功)。
- AWS EC2 上的硬件出现故障****之前的时间。
- 你需要等待**的时间直到**公交车到达(到站)。****
那么,我的下一个问题是这样的:为什么λ * e^(−λt)是下一个事件发生之前的时间的 PDF?
接下来的问题是:X ~ Exp(0.25)是什么意思? 参数 0.25 是指 0.25 分钟、小时还是天,还是指 0.25 事件?
从这一点开始,我假设你对泊松分布了如指掌。如果你没有, 这篇文章 会给你一个清晰的思路。
X~Exp(λ)👉泊松中的指数参数λ和λ一样吗?****
关于 X ~ Exp(0.25) 有一点可以让你免于混淆,那就是记住 0.25 是 而不是持续时间,但它是事件 速率,与 泊松过程 中的参数λ相同。
例如,你的博客每天有 500 名访客。那是一个率。一个小时内到店的顾客数量,每年的地震次数,一周内的车祸次数,一页的错别字数量,在 Chipotle 发现的头发数量等。、都是单位时间的率(λ)是泊松分布的参数。**
然而,当我们对事件之间的经过时间建模时,我们倾向于用时间**来代替速率,例如计算机可以无故障开机的年数是 10 年 (而不是 说 0.1 故障/年,当你看到时,术语——指数分布的“均值”——1/λ就是它的意思。********
当你看到术语衰变参数或者更糟糕的术语衰变率时,困惑就开始了,这个术语在指数分布中经常使用。衰变参数以时间表示(例如,每 10 分钟、每 7 年等。),它是泊松中速率(λ)的a倒数(1/λ)。想一想:如果你每小时得到 3 个客户,就意味着你每 1/3 小时得到一个客户。****
所以,现在你可以回答如下: “X ~ Exp(0.25)”是什么意思?
意思是泊松比** 会是 0.25。在一个单位时间(可以是分钟、小时、年)内,事件*均发生 0.25 次。把这个转换成时间项,假设你的单位时间是一个小时,那么事件发生需要 4 个小时(0.25 的倒数)。**
***** Confusion-proof : Exponential‘s parameter λ is the same as that of Poisson process (λ).****
2.让我们从零开始推导指数的 PDF!
我们的第一个问题是:为什么λ * e^(−λt)是直到下一个事件发生的时间的 PDF?****
指数分布的定义是一个 泊松过程 中的事件之间的时间的概率分布。***
想想看, 事件发生前的时间量是指在等待期间,没有一个事件发生。
换句话说,这就是泊松(X=0)。
Poisson(X=0): the first step of the derivation of Exponential dist.
关于泊松 PDF 需要记住的一点是泊松事件(X=k)发生的时间周期仅仅是一(1)个单位时间。
如果你想对“在 持续时间 t ,不仅仅是在* 一个单位时间内,什么都不发生”的概率分布建模,你会怎么做呢?*
***P(Nothing happens during t time units)**= P(X=0 in the first time unit)
* P(X=0 in the second time unit)
* … * P (X=0 in the **t-th** time unit)
= e^−λ * e^−λ * … * e^−λ = **e^(-λt)***
泊松分布假设事件的发生相互独立。所以我们可以通过将 P( X =0 在单个单位时间内) t 乘以,计算出在 t 单位时间内零成功的概率。
***P(T > t)** **= P(X=0 in t time units) = e^−λt*** **T** : **the random variable of our interest!
** the random variable for **the waiting time until the first event**
* **X** : **the # of events in the future which follows the Poisson dist.*** **P(T > t) :** The probability that the waiting time until the first event is greater than **t** time units
* **P(X = 0 in t time units) :** The probability of zero successes in **t** time units*
PDF 是 CDF 的衍生物。
既然我们已经有了指数的 CDF, 1 - P(T > t),就可以通过微分得到它的 PDF。
The probability density function is the derivative of the cumulative density function.
3.无记忆属性
***Defintion:****P(T > a + b | T > a) = P(T > b)***
这意味着…
给我看看证据?
无记忆是“有用”的属性吗?
使用指数分布对机械设备的寿命建模是否合理?
例如,如果设备已经使用了九年,那么无记忆意味着它将继续使用三年(因此,总共 12 年)的概率与一台全新的机器继续使用三年的概率完全相同。
***P(T > 12|T > 9) = P(T > 3)***
你觉得这个等式合理吗?
对我来说,没有。根据我的经验,设备越老越容易坏。为了对这一特性建模,例如,我们可以使用威布尔分布。
那么,什么时候使用指数分布比较合适呢?
车祸。如果在过去的五个小时里没有人撞到你,这不会增加或减少你发生车祸的几率。这就是为什么 λ通常被称为危险率。
还有谁拥有无记忆属性?
指数分布是唯一的连续分布,它是无记忆的(或者具有恒定的失效率)。几何分布,它的离散对应物,是唯一无记忆的离散分布。
4.应用程序 IRL🔥
a)等待时间建模
指数随机变量的值有更多的小值和更少的大值。你正在等的公共汽车可能在接下来的 10 分钟内到达,而不是接下来的 60 分钟。
使用指数分布,我们可以回答下面的问题。
1.公共汽车*均每 15 分钟来一趟。(假设从一辆公交车到下一辆公交车的时间呈指数分布,这意味着一小时内到达的公交车总数呈泊松分布。)而我刚好错过了公交车!司机不友好。我一到,司机就关上门走了。如果下一班公共汽车在十分钟内没有到达,我必须打电话给优步,否则我会迟到。下一辆公共汽车不到十分钟到达的可能性有多大?
2.90%的公共汽车在前一辆公共汽车几分钟内到达?
3.两辆公共汽车*均需要多长时间到达?
*如果你想看看你的答案是否正确,请在评论中发表你的答案。
b)可靠性(故障)建模
既然我们可以模拟成功的事件(公共汽车的到达),为什么不能模拟失败——产品持续的时间?
AWS 硬件在需要重启之前可以运行的小时数呈指数分布,*均为 8000 小时(大约一年)。
1.您没有备份服务器,需要不间断运行 10,000 小时。不重启服务器就能完成运行的可能性有多大?
2.服务器在 12 个月到 18 个月之间不需要重启的概率是多少?
请注意,有时指数分布可能不合适——当故障率在整个生命周期内变化时。然而,它将是唯一一个具有这种独特性质的分布——恒定危险率。
c)服务时间建模(排队论)
代理的服务时间(例如,Chipotle 员工为我做墨西哥卷饼需要多长时间)也可以建模为指数分布变量。
流程的总长度——几个独立任务的序列——遵循 Erlang 分布:几个独立的指数分布变量之和的分布。
5.概述:泊松分布和指数分布之间的关系
如果单位时间内的事件数量遵循泊松分布,则事件之间的时间量遵循指数分布。
假设事件之间的时间不受之前事件之间的时间的影响(即,它们是独立的),那么单位时间内的事件数量遵循泊松分布,比率为 λ = 1/μ 。
6.锻炼
我发现我对数学题目的理解大部分来自于做题。所以,我鼓励你也这样做。尝试完成下面的练习,即使它们需要一些时间。
- 设 U 是 0 到 1 之间的均匀随机变量。那么指数随机变量 X 可以被生成为
***X = -1/λ * ln(U)***
证明原因。
2.PDF 的 y 轴上的最大值为 λ 。为什么会这样呢?
Probability Density Function of Exponential Distribution
3. X1 和 X2 是独立的指数随机变量,速率为 λ 。
X1 ~ Exp(λ)
X2 ~ Exp(λ)
让 Y=X1+X2 。
Y 的 PDF 是什么?这个分布可以用在哪里?
答案在这里。
你可能喜欢的其他直观的文章:
* [## 泊松分布直觉(和推导)
…为什么泊松会发明这个?…](/poisson-distribution-intuition-and-derivation-1059aeab90d) [## 贝塔分布——直觉、例子和推导
…二项式和贝塔式的区别在于前者模拟成功的次数,而后者模拟成功的概率…](/beta-distribution-intuition-examples-and-derivation-cf00f4db57af)*
对于自动事实核查来说,什么是“足够好”呢?
原文:https://towardsdatascience.com/what-is-good-enough-for-automated-fact-checking-4454ace645c7?source=collection_archive---------22-----------------------
自动化事实核查即将到来,但我们无法就基本定义和标准达成一致。
虽然事实审查员总是很忙,但选举季节不可避免地增加了他们的工作量。因此,事实核查社区中的许多人梦想有一天自动事实核查系统能够在总统辩论等重要事件中实时显示事实核查。
但是什么是自动事实核查呢?出于本文的目的,自动事实核查系统依靠计算方法来 1)减少有问题的陈述(索赔)和更正(事实核查文章)之间的滞后时间,以及 2)增加与事实核查相关的索赔数量。
最常讨论的(和资助的)开发自动化事实检查的策略依赖于“声明匹配”。主张匹配系统从政治辩论、演讲、推文等中提取文本。并标识已经被事实检查过语句,并将已经创建的事实检查文章链接到“有问题的”文本片段。这种方法理论上有助于核实更多内容,因为演讲、辩论、推特等中有许多不真实或误导性的陈述。重复的说法可能已经被事实证实(例如,奥巴马不是在美国出生的,疫苗会导致自闭症)。
示例:已审核的索赔
索赔匹配系统的一个实现是谷歌的短命审查索赔功能,它出现在新闻出版商的谷歌搜索结果页面的子集上。该功能将新闻出版商文章中的声明与已经存在的事实核查文章相匹配。
该专题发布两个月后,保守派新闻媒体抱怨称,他们受到了该专题不公*的攻击。谷歌删除了这一功能,并向波因特解释说,他们“在我们将事实核查映射到出版商的系统中遇到了挑战,经过进一步检查,很明显我们无法为用户提供我们想要的质量。”
Image of the Reviewed Claims feature that appeared on some news publisher search result pages from November 2017 to January 2018. Reviewed Claims was removed by Google after conservative media backlash and amid quality concerns.
虽然我不确定审查索赔系统是如何设计的,但谷歌研究人员在 2018 年发表了一篇论文,概述了一个解决“索赔相关性发现问题”的系统,即识别包含(并支持)事实核查声明的在线文章。如果这听起来相似,基本上就是前面描述的索赔匹配。谷歌的论文描述了一种准确率约为 82%的方法。
过去一年来,“已审核索赔”案例研究吸引了我,并促使我考虑以下两个问题:
1。对于一个公开发布的自动化事实检查工具,什么是合适的准确度分数(和相关的度量标准)?
2。我们应该如何定义“相关的”索赔匹配?
我怀疑(事实核查社区的许多其他人也怀疑)我们是否接*自动化事实核查系统接*完美的准确性水*,因此我们需要坦率地讨论令人满意的精确度,并回忆这些系统的分数,因为我们计划将这项研究转移到公共领域。这种对话对于构建工具的事实核查组织、试图根据事实核查文章的存在来了解消息来源可信度的用户,以及其收入流被推荐算法改变的新闻出版商来说非常重要,推荐算法会考虑出版商的内容是否已被事实核查人员标记。
然而,如果我们不理解何时一个声明应该与事实核查相匹配,那么关于适当指标的讨论是没有用的。概括地说,事实核查文献已经建立了一个“良好的”自动权利要求匹配系统,将有问题的权利要求与相关的事实核查文章进行匹配。
虽然这看起来很简单,但确定相关性实际上比乍看起来要复杂得多。换句话说,是的,在自动事实核查中没有一个“足够好”的共同定义,但是,更根本的是,我们没有一个“相关”索赔匹配的共同定义。
确定相关性:一个思维实验
这里有一个快速练习来说明在索赔匹配中确定相关性的困难。**思考以下哪个标题应与事实核查“疫苗不会导致自闭症”的说法相匹配(即相关)**
- “疫苗可能导致自闭症:“*注意,这篇文章并没有说疫苗导致自闭症。标题用“可能”这个词来修饰疫苗和自闭症之间的联系。*
- “关于疫苗的效果,我们并不知道我们应该知道的一切”:这个标题是第一个的更极端版本。为了增加复杂性,让我们想象这篇文章甚至没有在文章的任何地方提到自闭症这个词,但它确实建议父母尽可能久地等待给孩子接种疫苗,因为潜在的风险。
- “杰西卡·贝尔称疫苗可能导致自闭症”:这篇文章没有对疫苗是否会导致自闭症表明立场,这位新闻发布者似乎只是在报道一位名人所说的话。
- “疫苗可能导致乳腺癌:“这篇文章没有提到自闭症,但确实说 MMR 疫苗和乳腺癌之间有直接联系。
- “疫苗导致自闭症,我是英国女王”:这篇文章多次提到疫苗导致自闭症,但本意是讽刺。
确定“疫苗不会导致自闭症”是否是这些文章中每一篇的相关主张匹配简单吗?我的研究表明,对大多数人来说,事实并非如此。我对本科生和亚马逊机械土耳其工人进行了一项小规模定性研究,其前提与上述思想实验相似。我发现本科生在这项任务上经历了一段具有挑战性的时间,但在和解过程之后,最终彼此达成了适度的一致。然而,亚马逊土耳其机械公司的员工对相关索赔匹配的定义要比本科生宽松得多。这一初步发现还需要进一步的研究。
在事实核查文献中,关联性是如何定义的?
我发现,关于定义相关性的定义挑战,目前的出版物和自动事实核查系统的描述对这些基本定义缺乏重视。我在下面提供了两个例子,但还有其他例子。
- 在 Google 关于“索赔相关文档发现”的研究论文中,有两条关于相关性的评论。一个是技术定义:“给定一篇带有权利要求 c 的事实核查文章,权利要求相关文档是一个处理 c 的相关文档。”我个人认为这个定义并不充分。更能说明这一困境的是作者在引言中的评论:“权利要求相关性发现问题不需要在文档中出现字面上或精确的权利要求,而是旨在找到那些看起来在精神上一致的权利要求。”
主张只需要“精神上一致”就可以成为相关匹配的想法有点说明问题,因为它可能意味着第一个带项目符号的假设性主张“疫苗可能导致自闭症”,我上面概述的应该被标记为与事实检查“疫苗不会导致自闭症”相关,但这个定义仍然留下了如何解决其他几个主张的问题。
- ClaimBuster 是一个端到端的自动事实核查系统,具有索赔匹配组件。据我所知,这是自动化的事实核查系统,在学术场所被写得最多。在讨论“索赔匹配器”组件如何工作时,给出了下面的解释:“索赔匹配器搜索事实检查库,并返回那些与索赔匹配的事实检查…系统有两种方法来测量索赔和事实检查之间的相似性…一个 Elasticsearch 服务器被部署用于基于标记相似性搜索知识库,而一个语义相似性搜索工具包 Semilar 被应用于基于语义相似性的搜索。我们将两者的搜索结果结合起来,寻找与给定声明相似的事实核查。”
我也认为这种确定相关性的解释是不充分的。对一个系统所采用的技术方法的描述并不能解决任何关于相关性定义的细微差别的遗留问题。它也不允许我们以一种有意义的方式将这个系统与谷歌论文中的“精神一致”指南进行比较。
最后…
其他人呼吁在过度承诺自动事实核查的能力时要谨慎,我认为这些担忧是有根据的。然而,我提出了一些不同的建议:我认为事实核查社区需要确保我们批判性地思考当谈到自动事实核查系统时,“足够好”和“相关”意味着什么。我有兴趣听听其他人对这些问题的想法,请随时联系。
感谢 埃尼·穆斯塔法拉杰 他的反馈极大地改善了这篇博文的发展轨迹。
什么是标签*滑?
原文:https://towardsdatascience.com/what-is-label-smoothing-108debd7ef06?source=collection_archive---------1-----------------------
一种让你的模型不那么过于自信的技巧
Photo by Levi XU on Unsplash
当使用深度学习模型进行分类任务时,我们通常会遇到以下问题:过度拟合和过度自信。过拟合得到了很好的研究,可以通过早期停止、放弃、权重调整等来解决。另一方面,我们对付过度自信的工具更少了。标签*滑是一种解决这两个问题的正则化技术。
过度自信和校准
如果一个分类模型的预测结果概率反映了它们的准确性,那么它就是校准的。例如,考虑我们数据集中的 100 个例子,每个例子的模型预测概率为 0.9。如果我们的模型被校准,那么 90 个例子应该被正确分类。类似地,在另外 100 个预测概率为 0.6 的例子中,我们预计只有 60 个例子被正确分类。
模型校准对于以下方面非常重要
- 模型的可解释性和可靠性
- 决定下游应用的决策阈值
- 将我们的模型集成到集成或机器学习管道中
过度自信的模型没有被校准,它的预测概率总是高于准确性。例如,对于精度仅为 0.6 的输入,它可能会预测 0.9。请注意,测试误差较小的模型仍然可能过于自信,因此可以从标签*滑中受益。
标签*滑公式
标签*滑用 y_hot 和均匀分布的混合代替一个热编码的标签向量 y_hot :
*y_ls* = (1 - *α*) * *y_hot* + *α* / *K*
其中 K 是标注类的数量, α 是确定*滑量的超参数。如果 α = 0,我们获得原始的一个热码编码的 y_hot 。如果 α = 1,我们得到均匀分布。
标签*滑的动机
当损失函数是交叉熵时,使用标签*滑,并且模型将 softmax 函数应用于倒数第二层的 logit 向量 z 以计算其输出概率 p 。在这种设置中,交叉熵损失函数相对于 logits 的梯度简单地为
∇CE = *p* - *y =* softmax(*z*) *- y*
其中 y 为标签分布。特别是,我们可以看到
- 梯度下降会尽量使 p 接* y 。
- 梯度限制在-1 和 1 之间。
独热编码标签鼓励将最大可能的 logit 间隙输入 softmax 函数。直觉上,较大的 logit 差距与有界梯度相结合会使模型的适应性降低,并对其预测过于自信。
相比之下,*滑的标注鼓励小的 logit 间隙,如下例所示。[3]显示,这导致更好的模型校准,并防止过度自信的预测。
具体的例子
假设我们有 K = 3 个类,我们的标签属于第 1 类。设[ a , b , c 为我们的 logit 向量。
如果我们不使用标签*滑,标签向量就是独热编码向量[1,0,0]。我们的模型将使 a ≫ b 和 a ≫ c 。例如,将 softmax 应用于 logit 向量[10,0,0]会得到四舍五入到 4 位小数的[0.9999,0,0]。
如果我们使用 α = 0.1 的标签*滑,*滑后的标签向量≈ [0.9333,0.0333,0.0333]。logit 向量[3.3322,0,0]将*滑后的标签向量*似到 softmax 之后的 4 位小数,并且它具有更小的间隙。这就是为什么我们称标签*滑为正则化技术,因为它限制了最大的 logit 变得比其余的大得多。
履行
- Tensorflow:标签*滑已经在 Tensorflow 的交叉熵损失函数中实现。参见二元交叉熵和分类交叉熵。
- PyTorch:参见 OpenNMT 中的示例。
常见问题
问:我们什么时候使用标签*滑?
答:每当分类神经网络遭受过度拟合和/或过度自信时,我们可以尝试标签*滑。
问:我们如何选择 α ?
答:就像其他正则化超参数一样,没有选择 α 的公式。通常通过试错来完成,而 α = 0.1 是一个很好的起点。
问:我们可以在标签*滑中使用均匀分布以外的分布吗?
答:技术上来说是的。在[4]中,理论基础是为任意分布开发的。也就是说,绝大多数关于标签*滑的实证研究都使用均匀分布。
问:标签*滑在深度学习之外使用吗?
答:不尽然。大多数流行的非深度学习方法不使用 softmax 函数。因此,标签*滑通常不适用。
进一步阅读
- [3]研究了标签*滑的工作方式和原因,提供了一种新的可视化方案,并分析了标签*滑对于不同任务的性能。知识蒸馏的部分尤其有趣。
- [5]和[4]讨论了标签*滑如何影响损失函数及其与 KL 散度的关系。
- [1]第 7.5.1 章介绍了标签*滑如何帮助处理有噪声的标签。
- [2]介绍了温度缩放,这是一种简单而有效的校准神经网络的方法。
参考
- 古德菲勒、本吉奥和库维尔。深度学习 (2016),麻省理工学院出版社。
- C.郭,g .普莱斯,y .孙,k .温伯格。关于现代神经网络的校准 (2017),ICML 2017。
- R.米勒、s .科恩布利斯和 g .辛顿。标签*滑何时有帮助? (2019),NeurIPS 2019。
- G.佩雷拉,g .塔克,j .乔洛夫斯基,凯泽和 g .辛顿。通过惩罚置信输出分布来正则化神经网络 (2017),arXiv。
- C.Szegedy、V. Vanhoucke、S. Ioffe、J. Shlens 和 Z. Wojna。重新思考计算机视觉的初始架构 (2016),CVPR,2016。
什么是学习?
原文:https://towardsdatascience.com/what-is-learning-b451f695573e?source=collection_archive---------36-----------------------
回到智力的基础
Photo by Thought Catalog on Unsplash
Medium 有很多定义或解释机器学习及其技术和子领域的文章。作为一名人工智能专家,我很喜欢这个。但是,在定义什么是机器学习之前,我们需要问一个更根本的问题:学习本身是什么?
让我们用可能是最基本的方式来定义学习:
学习是一个智能体的智能变化。
智能体可以是人、其他动物甚至是植物,也可以是机器,只要它表现出智能。智能需要自己的定义,我借用通用智能:机器智能的定义:
"智能衡量一个代理人在广泛的环境中实现目标的能力."
使用智能的这个定义,学习就变成了一个代理人实现其目标的能力的变化。这种能力可以通过获取知识来改变:例如,更多地了解你的环境可以让你在那个环境中更好地实现你的目标。然而,获得新技能显然也能让你更好地实现目标。一个人甚至可以改变自己的道德价值观,在这种情况下,一个人的实际目标也可以改变:这显然改变了一个人实现目标的能力,因为目标本身也在改变。
我想读者可能会反对这篇文章中给出的学习的定义,因为它不包括“更好”这个词。大多数情况下,学习被视为在某方面变得更好:例如,更擅长下棋。给出的定义只是简单地谈论智力的变化,所以下棋变得更差也算学习。这不是我们通常所说的“学习”!然而,在一项技能上变得更好并不总是意味着在实现个人的目标上变得更好。因此,为了避免混乱,我坚持在智力上“改变”。
感谢阅读!您可能还喜欢:
[## 人工智能的主要问题是
AI 末日场景被迅速驳回
towardsdatascience.com](/the-major-problem-with-ai-8f53cf7d3a50)
什么是“线性”回归模型?
原文:https://towardsdatascience.com/what-is-linear-regression-model-f24f1a24f9bb?source=collection_archive---------19-----------------------
线性回归模型背后的线性假设以及为什么线性很重要
线性回归模型是机器学习和统计学领域中最简单的模型之一。也就是说,线性回归背后的线性假设经常被误解。
例如,下面的 2 个模型都是线性回归模型,即使右边的线看起来也不像线性的。
Figure 1. Two different linear regression models for a data set
如果是惊喜,这篇文章送给你。在这篇文章中,我试图解释线性回归模型背后假设的是什么样的线性,以及为什么线性很重要。
为了回答这些问题,让我们通过两个简单的例子来一步步了解线性回归是如何工作的。
示例 1:最简单的模型
让我们从最简单的例子开始。给定下面的训练数据— 3 对( x 、 y ) — (2,4)、(5,1)、(8,9) ,我们想要找到一个对目标变量 y 和输入变量 x 之间的关系进行建模的函数。
Figure 2. A training data set to use in this article
我们的第一个模型是最简单的模型,如下所示。
所以我们尝试用这个非常简单的线性函数来模拟 x 和 y 之间的关系。这里需要注意的是,该函数不仅与输入变量 x 成线性关系,而且与参数 a、b 成线性关系。
现在,我们的目的是确定最符合训练数据的参数 a 和 b 的值。
这可以通过测量每个输入 x 的实际目标值 y 和模型 f(x) 之间的失配来实现,并使失配最小化。这种不匹配被称为误差函数。
误差函数有许多不同的选择,但最简单的一个是 RSS,即每个数据点 x 的模型 f(x) 与相应目标值 y 之间的误差*方和。
利用误差函数的概念,我们可以将“确定最适合训练数据的参数 a,b 重新表述为“确定最小化误差函数的参数 a,b ”。
让我们计算训练数据的误差函数。
好的,上面的等式是我们想要最小化的误差函数。但是我们如何找到使这个函数最小化的参数 a,b 的值呢?为了得到一个概念,让我们想象这个函数。
Figure 3. Error function of the first model
从上面的 3D 图中你可以本能地猜测,这个函数是一个凸函数。凸函数的优化(寻找最小值)比一般的数学优化简单得多,因为任何局部最小值总是凸函数的全局最小值。(非常简单的解释就是凸函数只有一个极小点,比如“U”形)由于凸函数的这个特性,可以通过简单地求解如下的偏微分方程来找到使函数最小的参数。
让我们解决我们的案子。
通过解上面的方程,我们得到 a = 5/6,b = 1/2。因此,我们的第一个模型(最小化 RSS)如下所示。
Figure 4. The first model
示例 2:简单的曲线模型
现在,对于相同的数据点,让我们考虑另一个模型,如下图所示。
如你所见,这不再是输入变量 x 的线性函数了。然而,这仍然是参数 a,b 的线性函数。
让我们看看这种变化如何影响模型拟合的过程。我们将使用与上一个例子相同的错误函数— RSS。
如上所述,等式看起来与前一个非常相似。(系数的值不同,但方程的形式相同。)观想如下。
Figure 5. Error function of the second model
形状看起来也差不多。这还是一个凸函数。这里的秘密是,当我们用训练数据计算误差时,输入变量被给定为具体值(例如,在我们的数据集中, x 的值被给定为 2,5 和 8——(2,4),(5,1),(8,9) )。因此,无论输入变量的形式有多复杂(例如, x,x,sin(x),log(x) 等),误差函数中的值都是常量。
由于第二个模型的误差函数也是凸函数,我们可以通过与前一个例子完全相同的过程找到最佳参数。
通过求解上述方程,我们得到 a = 61/618,b = 331/206。所以,我们的第二个模型得到如下。
Figure 6. The second model
结论:线性回归模型背后的线性
即使一个与输入变量 x 成线性关系,一个与 x 成非线性关系,上述两个例子也可以用完全相同(且非常简单)的程序解决。这两个模型的共同特点是两个函数都与参数 a、b 成线性关系。这是线性回归模型背后假定的线性,也是线性回归模型数学简单性的关键。
上面我们只看到了两个非常简单的模型,但是一般来说,模型对其参数的线性度保证了它的 RSS 总是一个凸函数。这就是为什么我们可以通过求解简单的偏微分方程得到最优参数的原因。这就是线性度很重要的原因。
什么是线性回归?第二部分
原文:https://towardsdatascience.com/what-is-linear-regression-part-2-83bcb711e465?source=collection_archive---------20-----------------------
在任何企业中,都有一些容易衡量的变量,如年龄、性别、收入、教育水*等。还有一些难以衡量的变量,如贷款金额、病人住院天数、10 年后的房价等。因此回归是一种技术,它使你能够在易于测量的变量的帮助下确定难以测量的变量。
推荐:什么是线性回归?零件:1
线性回归是一种回归技术,可定义如下:
“线性回归是一个研究领域,它强调两个 连续变量 之间的********预测变量响应变量 ”。
(注:当有一个以上的预测变量时,则成为多元线性回归。)**
- 预测变量通常表示为 x,也称为自变量。
- 响应变量通常表示为 y,也称为因变量。
让我们借助 R 中的一个例子来理解它。R 中有一个内置的数据集“cars ”,它包含 50 对速度(英里/小时)与停车距离(英尺)的数据点,这些数据点是在 1920 年收集的。我截取了前 25 个数据点的截图,让你对数据集有所了解。
在上面的数据集中,如果我们仔细观察,我们会发现不同的汽车在相同的速度下有不同的停车距离。这可能有多种因素。一些因素可能是不同的天气条件、轮胎质量、车型、道路质量、交通状况等。
为了理解线性回归,我们要避开所有其他因素,只关注汽车的速度。因此,我们的目标是找出速度和停车距离之间是否存在任何线性关系,并将绘制该关系,然后预测所有数据点的*均停车距离。
通过观察协方差和相关系数,我们可以对这种关系有一些直觉,如下所示:
共方差:
cov(cars_data$dist, cars_data$speed) #covariance
## [1] 109.9469
距离和速度之间的协变是 109.9469。它的值是正的,这告诉我们变量在同一个方向上一起运动。(负值时相反)。
关联:
为了了解变量如何一起移动的强度,将协方差标准化为无量纲量,即相关性。相关系数 r 是一个介于-1 到+1 之间的数字,它告诉我们(回归)线与数据的拟合程度。
cor(cars_data$speed, cars_data$dist) # Correlation
## [1] 0.8068949
- 车速与距离的相关系数为 0.8068949。
- 由于该值接*于 1,并且具有+ve 符号,因此我们可以得出变量正相关的结论。
推荐文章:协方差和相关性详解
让我们通过绘制散点图来可视化数据集。
- 独立变量(预测变量)—速度(mph) —绘制在 X 轴上。
- 因变量(响应变量)—停车距离(英尺)—绘制在 Y 轴上。
plot(cars_data$speed,cars_data$dist,xlab="Speed in miles per hour",ylab="Distance in feet",main="Stopping Distance Vs. Speed", col= "blue")
散点图的观察结果:
- 红色标志点,同一速度有多个停车距离。这是可能的,因为不同的汽车,不同的道路,不同的天气条件等。
- 因此,如果我们取红色标记处所有这些点的*均值,那么它将给出该点的*均停车距离,但如果我们想知道黄色标记处的停车距离呢?我们没有给出这个黄点的任何数据。
- 因此,如果我们取所有的点,并以某种方式估算黄色标记点的*均值,这将是该点的停车距离,而不是关注任何局部点。
如何做到这一点,如果我们画一条穿过所有数据点的直线,这将给出作为速度函数的停车距离的样本*均值。
这条线方程看起来像是: y = m*x + c m:斜率,c:y 处的截距
所以如果我们改变 m 和 c,那么它会给我们所有可能画出的线。
为了得出结论,我们需要找到斜率 m 和截距 c 的最佳值,这将产生最佳拟合线。所以让我们来了解一下什么是最佳拟合线。
最佳拟合线:
Best Fit Line
因此可以说,通过大多数数据点的线是最佳拟合线。但是现在如果我们看到 fig-01,我们还会说它是最佳拟合线吗?不。如果我们记得我们的中学时代,被要求画一条最佳拟合线,那么我们会画一条类似于图-02 中橙色线的线。我们的大脑如何识别它为最佳拟合线。令人惊讶的是,它没有通过任何数据点。所以它是如何被画出来的,也许是通过把所有数据点的距离最小化的点连接起来。
先来了解一下背后的一些数学。
- y 是数据点 x 的实际值。
- ŷ = m*x + c (ŷ读作 y-hat,这是使用我们试图找出的一些 m 和 c 对数据点 x 的预测值)
差值 y — ŷ 是一个误差项,也称为残差。考虑到所有的数据点,这将是σ(y(I)—ŷ(i)).这被称为所有数据点的*均距离,需要最小化,但是最小化意味着什么呢?我们是否也考虑误差的负值,如果是的话,那么如果两个数据点有+2 和-2 的误差,它们将在求和计算总误差时被抵消?因此,最小化残差的最佳方法是最小化误差*方和,即:
现在有两个未知数 m 和 c。因此,使用微积分,如果我们对 m 和 c 求偏导数,并使它们等于 0,然后求解这两个方程,我们将得到斜率 m,如下所示:
其中 xbar 是 x 值的*均值,ybar 是 y 值的*均值。
截距 c 可以通过将(xbar,ybar)点代入公式 y = m*x + c 来计算,以代替 x 和 y,因为我们知道最佳拟合线将通过 x 和 y 的中点,即 xbar 和 ybar。并且已经计算了 m 的值。
这种拟合最佳直线的方法称为最小二乘回归
然而在实践中,我们不需要手动计算所有这些,幸运的是我们有 R 个内置函数来做这件事。让我们看看这些功能:
- lm 函数用于拟合线性模型
LinearReg = lm(dist ~ speed, data = cars_data)
coefficients(LinearReg)
## (Intercept) speed
## -17.579095 3.932409## c = -17.579095
## m = 3.932409## Summary of the linear model:
summary(LinearReg)##
## Call:
## lm(formula = dist ~ speed, data = cars_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -29.069 -9.525 -2.272 9.215 43.201
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -17.5791 6.7584 -2.601 0.0123 *
## speed 3.9324 0.4155 9.464 1.49e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 15.38 on 48 degrees of freedom
## Multiple R-squared: 0.6511, Adjusted R-squared: 0.6438
## F-statistic: 89.57 on 1 and 48 DF, p-value: 1.49e-12
让我们使用内置函数绘制最佳拟合线,如下所示:
plot(cars_data$speed,cars_data$dist,xlab="Speed in miles per hour",ylab="Distance in feet",main="Stopping Distance Vs. Speed: Best fit line", col= "blue")
abline(LinearReg,col="steelblue",lty=1,lwd=4) # The function adds straight line to a plot
因此,从上面的最佳拟合线,我们可以确定人口数据中任何数据点的停止距离。当两个连续变量之间存在线性关系时,线性回归是预测响应变量的值的一种非常强大的技术。
请在下面的评论区分享你的想法/想法。
本文首次出现在“科技隧道”博客上,网址为https://ashutoshtripathi . com/2019/01/06/what-is-linear-regression-part 2/
什么是逻辑回归?
原文:https://towardsdatascience.com/what-is-logistic-regression-60a273e6bd91?source=collection_archive---------24-----------------------
逻辑回归是分类问题中使用最广泛的机器学习算法。在其原始形式中,它用于只有两个类别要预测的二元分类问题。然而,通过很少的扩展和一些人脑,逻辑回归可以很容易地用于多类分类问题。在这篇文章中,我将解释二进制分类。我还将解释最大化对数似然函数背后的原因。
为了理解逻辑回归,需要很好地理解线性回归的概念及其成本函数,它只不过是最小化误差*方和。我在之前的文章中已经详细解释了这一点,我建议你在深入研究逻辑回归之前刷新一下线性回归。假设你对线性回归有很好的理解,让我们开始深入研究逻辑回归。然而,又出现了一个问题,为什么我们不能用线性回归来解决分类问题。让我们先理解这一点,因为这将是理解逻辑回归的一个非常好的基础。
分类问题为什么不能用线性回归?
线性回归产生[- ∞到+ ∞ ]之间的连续值作为预测问题的输出。因此,如果我们定义了一个阈值,那么我们可以说,在阈值之上它属于一个类别,在阈值之下,它是另一个类别,这样,我们可以直观地说,我们可以使用线性回归来解决分类问题。然而,故事并没有到此结束。问题出现了,如何设置阈值,添加新记录不会改变阈值怎么办?我们通过查看最佳拟合线和添加新记录集来计算阈值,最佳拟合线会发生变化,从而进一步改变阈值。因此,我们不能肯定地说,一个特定的记录属于哪一类,因为我们没有一个确定的阈值。而这也是我们不能直接用线性回归来解决分类问题的主要原因。
下图用一个例子描述了整个概念。
如果我们扩展线性回归的概念,将输出[- ∞到+ ∞]的连续值的范围限制为[0 到 1],并有一个函数计算属于特定类的概率[0 到 1],那么我们的工作就完成了。幸运的是,s 形或逻辑功能为我们完成了这项工作。因此,我们也说逻辑回归是使用 Sigmoid 函数的线性回归的变换。
Sigmoid 函数
一个S 形函数是一个数学函数,它有一个特征“S”形曲线或S 形曲线。通常, Sigmoid 函数是指第一张图中所示的逻辑函数的特例,由公式定义(来源:维基百科):
所以 Sigmoid 函数给出了我们进入 1 类或 0 类的概率。因此,通常我们将阈值取为 0.5,并且如果 p >.5,则它属于类 1,并且如果 p <.5 then="" it="" belongs="" to="" class="" however="" this="" is="" not="" a="" fixed="" threshold.="" varies="" based="" on="" the="" business="" problem.="" and="" what="" threshold="" value="" should="" be="" we="" can="" decide="" with="" help="" of="" aic="" roc="" curves.="" which="" i="" will="" explaining="" later="" in="" post="" target="" mostly="" how="" logistic="" regression="" works.=""/>
How Logistic Regression works:
As I have already written above that logistic regression uses Sigmoid function to transform linear regression into the logit function. Logit is nothing but the log of Odds. And then using the log of Odds it calculates the required probability. So let’s understand first what is the log of Odds.
Log of Odds:
The odds ratio is obtained by the probability of an event occurring divided by the probability that it will not occur. and taking the log of Odds ratio will give the log of Odds. So what is the significance log of Odds here?
Logistic function or Sigmoid function can be transformed into an Odds ratio:
Let’s do some examples to understand probability and odds:
- odds s = p/q, p is prob of winning, q is prob of losing that is 1-p. then if s is given then prob of winning p = numerator/(numerator + denominator) and prob of losing q = denominator/(numerator + denominator). Now let’s solve some examples.
- If the probability of winning is 5/10 then what are the odds of winning? p = 5/10, => q = 1-p => q = 5/10,则 s = p/q => s = 1:1
- 如果赢的赔率是 13:2,赢的概率是多少?中奖概率 p =分子/(分子+分母)=> p = 13/(13+2) = 13/15。
- 如果赢的赔率是 3:8,那么输的概率是多少?丢失 q 的概率=分母/(分子+分母)=> q = 8/(3+8) => q = 8/11
- 如果输 q 的概率是 6/8,那么赢的几率是多少?s= p/q,(1-q)/q => s = 2/6 或 1/3。
逻辑模型
在下面的信息图表中,我解释了逻辑模型的完整工作过程。
这里还要注意的一点是,逻辑回归使用最大似然估计(MLE ),而不是线性模型中使用的最小化误差的最小二乘法。
最小二乘法与最大似然估计
在线性回归中,我们最小化 SSE。
在逻辑回归中,我们取而代之的是最大化对数似然。这背后的主要原因是 SSE 不是凸函数,因此找到单个最小值并不容易,可能有多个最小值。然而,对数似然是一个凸函数,因此找到最佳参数更容易。最佳值可以是最大值或最小值,在对数似然的情况下,它是最大值。
现在让我们了解对数似然函数对于目标变量的两个类别 1 和 0 是如何表现的。
情况 1: 当实际目标类别为 1 时,我们希望预测的目标 y hat 值接* 1。让我们理解对数似然函数是如何实现这一点的。
放 y_i =1 会使方程的第二部分(在+之后)为 0,只剩下 ln(y_i hat)。y_i 在 0 到 1 之间。ln(1)为 0,ln(小于 1)将小于 0 表示负。因此,对数似然的最大值将是 0,并且只有当 y_i 接* 1 时才是这样。因此,最大化对数似然相当于获得一个接* 1 的 y_i hat,这意味着它将清楚地将预测目标识别为 1,这与实际目标相同。
情况 2: 当实际目标类为 0 时,我们希望预测目标 y hat 接* 0。让我们再次理解,在这种情况下,最大化对数似然将产生更接*于 0 的 y_i hat。
设 y_i = 0 将使方程的第一部分(在+号之前)为 0,只剩下(1-y_i)ln(1-y_i hat)。1-y_i 将再次为 1,因为 y_i 为 0,因此在进一步简化后,等式将保持为 ln(1-y _ I hat)。所以现在 1-y_i hat 将小于 1,因为 y _ I hat 将在 0 到 1 之间。所以 ln(1 — y_i hat)的最大值可以是 0。意味着 1-y_i hat 应该接* 1,这意味着 y _ I hat 应该接* 0。这是意料之中的,因为实际值 y_i 也是 0。
这就是我们最大化对数似然的原因。
这就是逻辑回归的全部内容。在下一篇文章中,我将解释一个使用 python 的逻辑回归的完整例子。
视频解释:
希望它已经让你很好地理解了逻辑回归背后的概念。请在下面的评论区分享你的想法。另外,你可以订阅我的 youtube 频道:科技隧道
谢谢大家!
关于回归的推荐文章:
- 数据科学基础统计第一部分
- 什么是线性回归?零件:1
- 什么是线性回归?零件:2
- 协方差和相关性
- 什么是决定系数| R *方
- 回归模型中的特征选择技术
- R 中的“stepAIC”是什么?
- 什么是 R 中的多重共线性?
原载于 2019 年 6 月 17 日http://ashutoshtripathi.com。
那么什么是机器学习呢?
原文:https://towardsdatascience.com/what-is-machine-learning-3f65423b7487?source=collection_archive---------23-----------------------
Photo by fabio on Unsplash
我相信现在你一定听说过这个术语,如果不惊讶,看看苹果或谷歌的演示就知道了;甚至麦当劳也在做一些的事情。事实上,不仅仅是他们,如果你看一下谷歌趋势页面的机器学习,你会注意到随着时间的推移,受欢迎程度和兴趣呈上升趋势。所以每个人都在谈论它…
你可以很容易地找到许多机器学习的流行用例。我敢肯定,当你需要购买新衣服或鞋子时,你会在亚马逊上查询。然后你会看到一张为你推荐的商品清单。事实上,这是机器学习在发挥作用。你可能也听说过正在测试的自动驾驶汽车,或者你可能与聊天机器人互动过。几乎所有其他品牌都在重新思考他们的战略,让机器学习参与进来,并以这样或那样的方式利用它的巨大力量。
但是什么是机器学习呢?
我将从汤姆·米切尔给出的一个流行定义开始:
如果一个计算机程序在 T 中的任务上的性能,如 P 所测量的,随着经验 E 的增加而提高,那么就说该计算机程序从关于某类任务 T 和性能测量 P 的经验 E 中学习。
wait, what? | Photo by Emily Morter on Unsplash
如果你没有明白,不要担心,即使我一开始也没有完全明白。它本质上说的是,假设你有很多很多的数据,通过机器学习,你可以发现隐藏在数据中的模式,计算机程序可以学习这些模式。这个被转化为机器学习模型的计算机程序,当面对新的数据时,现在可以以一定的信心识别该模式是否可以在这里找到。
基本上发生的事情是,当你建立一个机器学习模型时,你用大量历史数据训练该模型,该模型与你试图解决的问题具有相同的上下文。某些模式由模型学习,有助于识别、识别或预测。例如,你可以建立一个机器学习模型来识别图像中的实体,如猫或狗;或者,在给定一些参数(如房间数量、房屋面积等)的情况下,使用机器学习模型来预测房屋的价格。但是,只有使用正确的数据对模型进行适当的训练,才能实现这一切。
在我们继续之前,让我们先来看两个重要的概念。
分类
分类是将每一件物品归入特定类别的过程。例如,识别图像中的一只猫意味着将图像中的对象分类为一只猫。简而言之,给任何事物贴上标签就叫做分类。
在机器学习场景中,分类问题的数据会有很多参数,称为特征,用于需要分类的实体和标签。在这种情况下,模式将是这些特征,它们一起将我们引向标签类。
回归
回归问题与变量的相互依赖性有关。有自变量和因变量,顾名思义,因变量的值取决于自变量。通常,这些值都是数值,也就是连续的,它们是通过选择特定的数学函数得到的。因此,预测某样东西的价值,比如说房子或汽车的价格,甚至是股票价值,都属于回归问题。这里的模式是自变量的值导致因变量的值。
回来,我们一直在谈论的这种模式可以以两种不同的方式出现,要么在数据中明确提到,在这种情况下有一个标签或依赖值,要么隐藏在需要找出的数据中。基本上,机器学习大致分为两种类型:
- 监督学习
- 无监督学习
监督学习
监督学习指的是对包含标签的数据进行处理的那类机器学习算法。比方说,你想找出某个图像是否包含一个苹果。因此,您将使用包含苹果的图像和不包含苹果的图像来训练您的机器学习模型。当面对新的数据时,你的模型会很有信心地告诉你新的图像是否包含苹果。一个很好的例子就是当你想做任何分类任务的时候,比如前面提到的物体检测问题。或者一个回归任务,我们将某种形式的输入(由值组成)映射到一个函数来预测一个连续值。所以在这种情况下,我们已经知道了输出应该是什么样子,知道了输入和目标变量之间的关系。
无监督学习
无监督学习指的是在没有提供任何标签的情况下,在数据中寻找模式的一类机器学习算法。因此,你向你的机器学习模型提供大量数据,该模型根据它自己的模式、结构和数据点中的连接来计算。无监督学习的一个有趣且最常见的应用是自动数据聚类,比如在构建客户细分模型时部署的应用,或者谷歌用来将相似的新闻文章聚集在一起的应用。
在这篇文章中,我想简单介绍一下机器学习及其广泛的分类。还有许多其他类别的机器学习技术,如强化学习、关联挖掘或异常检测,都非常有趣,绝对值得一试!
如果你想看到更多这样的文章,请前往数据科学门户网站
[## 数据科学门户
大家好,欢迎来到数据科学门户。这个空间致力于学习和理解所有令人兴奋的…
thedatascienceportal.com](https://thedatascienceportal.com/)
感谢阅读!
什么是机器学习:崩溃
原文:https://towardsdatascience.com/what-is-machine-learning-breakdown-3bc849b803a0?source=collection_archive---------33-----------------------
一本有用的指南,下次有人问你“什么是机器学习”时会让你大吃一惊。
Prefer to listen to your articles? Press the play button above!
你有没有问过或者被问过一个非常著名的问题“什么是机器学习”?你可能会陷入一个兔子洞,里面有你从未真正回答过的其他问题。你的定位定义变成了 Tom Mitchell 的定义:“如果一个计算机程序在某类任务 T 和性能度量 P 中的任务性能(由 P 度量)随着经验 E 的增加而提高,那么这个程序就可以说是在从经验 E 中学习。这个定义让你有点困惑,但是如果你记住了它,你会觉得很聪明。你会发现它基本上意味着一种算法,它有学习的能力,而不需要通过经验明确编程。
我们将从什么是机器学习这个问题中回答一些在对话中经常出现的问题。
它是怎么来的?
拟人化或把人类的特征或行为归因于非人类物体。人类有这种惊人的自我意识能力。我们知道我们在生活,我们试图寻找生命的意义,我们看着一个出口,看到一张惊讶的脸在看着我们。当我们发现自己的思想时,我们对自己知识的缺乏不断推动我们走向人工智能。
我们一直在努力寻找比我们更强大、可能比我们更好的东西。自 18 世纪初以来,一台体现我们是谁的机器就一直在人们的脑海中。文学作品,如《格列佛游记】,谈到了与我们现代计算机密切相关的全知机器。
第一台计算机 和编码器
在 19 世纪早期,计算机之父查尔斯·巴贝奇创造了一种能进行数学计算的机器,称为差分机或分析机。并非巧合的是,他是第一位计算机程序员阿达·洛芙莱斯的朋友。她发表了一篇文章,解释如何扩展巴贝奇的差异引擎。这篇文章描述了包括字母和符号的代码,而不仅仅是数字。
Ada Lovelace (left) and Charles Babbage (right)
第二次世界大战
快进到 20 世纪初。二战期间传输的加密信息很容易被敌人截获。德国人使用“谜”码,这被证明很难破译。艾伦·图灵和他的团队用一种叫做炸弹机的设备破解了它。艾伦·图灵是英国数学家、计算机科学家、逻辑学家、密码分析学家、哲学家和理论生物学家。他为机器学习奠定了基础。机器可以理解人类,但人类自己不能完全理解数据。
庞贝机器启发了艾伦·图灵的测试,人们亲切地称之为图灵测试。这个测试是在图灵 1950 年的论文“计算机械和智能”中介绍的,本质上是一个模仿游戏。简而言之,它涉及两个人和一台机器。一个人在一堵墙后面,与机器和其他人没有接触。孤独的人通过电子方式向机器和人提问。如果询问者不能区分人和机器,机器就被认为是“智能的”。
艾夏
20 世纪 50 年代是大量人工智能研究的时代。Ferranti Mark 1 是一台机器,它只是通过使用它的算法来玩跳棋。人工智能之父约翰·麦卡锡开发了可以用符号计算的 LISP 程序语言。人工智能是在麦卡锡组织的达特茅斯会议上创造的。
艾冬
然后在 20 世纪 60 年代,取得了雄心勃勃的进展。这引发了一场 AI 寒冬。该技术无法计算应用程序所需的大数据。研究开始停止,计算机硬件的工作开始了。
互联网与现代进步
在 20 世纪 90 年代初,互联网被发布,随着计算机能力的增强,对人工智能的研究可以再次开始。网络泡沫中的数据被储存起来,这些数据被用来与计算机一起工作,寻找用户的模式。
2011 年——IBM Watson 击败了两次 Jeopardy!冠军和 Siri 发布。
2015 年——deep mind alpha Go 在围棋上击败了一名人类棋手
2016 年——汉森机器人公司(Hanson Robotics)索菲亚(Sophia)发布,拥有展现人类表情、视觉和交流的能力。她是第一个机器人公民。
2017 年——脸书人工智能研究实验室创造了两个聊天机器人来相互交谈,它们最终创造了自己的语言。
2019-自动驾驶汽车和转移学习的进步
为什么这么重要?
能够像人一样思考和说话的计算机是如此重要的原因!一旦我们充分利用了机器的能力,我们作为一个物种将会取得巨大的进步。量子计算机正在向我们走来,有了这种不可思议的技术,我们将迈向终点。最终是让我们和机器人一起工作,还是上传成为机器人,只有时间能告诉我们。
机器学习可以用来做什么?
在未来,人类能做的任何事情。可能减去悲伤、快乐、爱情等情绪。它将能够识别和模仿情绪,但它可能无法体验潘多拉的盒子。它将能够做出准确的医疗诊断,比人类更好地驾驶汽车,并在没有人类的情况下创造和经营企业。
在现在,主要是模式识别。该算法被赋予大量的数据进行分类,并找出是否有任何相关性。计算机视觉就是在图像中寻找模式,并疯狂地发展。面部识别、驾驶汽车和预测某人是否会摔倒都是为了找到图像像素内的模式。
它是如何学习的?
现在,它通过在给定的数据中寻找模式来学习,也通过奖励来学习。在大数据中寻找模式是它如何确定新输入(无论是图像还是一些文本)将被分类的。通过奖励来帮助一个算法学习是耗时的,并且充满了试错。基本上,大脑会通过在一个环境中移动来学习,并根据它的行为触发一套奖励系统。如果它做了一件好事,它会得到积极的回报,而做了一件坏事,它会得到消极的回报。是的,你可以过度惩罚它,以至于它甚至不会动,因为它想要积极的回报。
If you look closely, you will see that it is made up of numbers.
有哪些职业侧重于此?
许多职业道路侧重于机器学习和人工智能。目前它主要是在研究中,但随着研究的公开,它将需要实施。下面是一个快速列表:
- 数据科学家
- 机器学习工程师
- 商业智能开发人员
- 大数据工程师/架构师
- 机器学习、人工智能、NLP(自然语言处理)或深度学习的研究科学家
- 深度学习工程师
- 计算机视觉工程师
- 软件开发人员
职称实际上只是工作要求的表面。基本上任何职位的人都可以做。如果你在这个领域找工作,一定要看看任何一个技术类的工作,因为机器学习可能就藏在它的描述里。
我该怎么学?
学习人工智能可以通过互联网进行。使用 MOOCs(大规模开放在线课程),如果你投入时间,你可以在一个月内学会机器学习的基础知识。这并不容易,但如果你坚持不懈,你会看到一些回报。
我有一个帖子可以帮助回答这个问题:学习机器学习的 5 个简单步骤。在帖子中,有你可以使用的书籍和课程,以及我推荐你采取的步骤,这样你就不会变得不知所措。
以下是一些被证明是有益的其他来源:
- Datacamp.com(美元)
- 机器学习 A-Z:Udemy 上的数据科学实践 Python&R
- 在 Udemy 上用 Python 进行机器学习、数据科学和深度学习
有一些免费的机器学习课程,但它们免费是有原因的。我发现免费课程漏洞百出,而且不如付费课程相关。在他们被释放后,创作者(许多,但不是全部)倾向于将他们抛在身后,专注于他们的付费课程。如果你预算有限,吴恩达的机器学习课程是免费的,没有证书和评分。优达城的课程大减价,大约 10 美元。如果你手头拮据,一定要检查一下。爱看书?你当地的图书馆可能有你感兴趣的书。
如果你有工作,和你的上司谈谈,看他们是否愿意支付你的部分教育费用。你可能会感到惊讶。他们可能会说是。
机器学习的未来是怎样的?
不可阻挡。神经网络将会出现在手机上,更深层次的个性化将会出现,医疗保健系统将会被破坏。机器学习将彻底改变我们的生活和行为方式。我们将拥有增强视力的眼镜,这样我们就可以拥有超过 20/20 的视力,汽车将检测我们何时沮丧或快乐,并成为我们的朋友,人类医生将从处理患者的日常医疗需求过渡到支持晚期病例。
量子计算将在其增长中发挥重要作用。政府和公司在这方面投入了数百万美元。在现代硬件上几乎不可能解决的算法在量子计算机上只需几分之一秒就能解决。这些算法的准确性和速度将在医疗保健领域最引人注目。即使是训练有素的专家也很难确定患者是否患有癌症,是恶性还是良性,或者处于哪个阶段。随着机器学习与量子计算相结合,它将变得快速而准确,因此患者将能够快速获得他们需要的药物。
仅仅是炒作吗?
不,不是的。深度学习早已从机器学习进化而来。随着研究的继续,算法和模型将继续进步。人工通用智能是目标。不管这让你感到恐惧还是兴奋,根据当前的技术趋势,它预计将在下一个 50 年内出现。
据预测,一个人工智能的冬天即将来临。在那段时间里,关于人工智能和人工智能的讨论将逐渐*息,但研究(有资助和无资助)仍将继续。尽管流行的“炒作”会逐渐消失,但它所产生的影响将会持续并增长。现在需要对它进行讨论和宣传,以便建立一个伦理研究和发展的基础。
神经网络真的是答案吗?
它们只是答案的一部分。除了神经网络,还有许多不同的模型。有随机森林、线性/逻辑回归、支持向量机、朴素贝叶斯、k-最*邻等等。神经网络是在计算机中模拟人类神经元的一个飞跃。这可能也不会是最后一次飞跃。随着量子计算机的出现,我相信会有另一种突破性的算法产生。
所以…
什么是机器学习?
一种无需明确编程即可学习的算法。这可以通过模式识别或奖励系统来实现。我们将看到机器学习在医疗保健领域的巨大影响,从患者互动到药物发现。这不仅仅是炒作,这是改变生活,甚至可能改变物种。一旦量子计算到来,这个领域的进展很可能会有巨大的飞跃。
在我们重新学习之前,
什么是自然语言处理(NLP)?狭隘的解释
原文:https://towardsdatascience.com/what-is-natural-language-processing-nlp-a-bitesize-explanation-cb27ea446305?source=collection_archive---------28-----------------------
NLP 一直被认为是一种神奇的灵丹妙药或数字巴别塔,并且有许多相互矛盾的想法。我甚至看到数据科学家争论是否只有特定的机器学习算法才算 NLP,或者是否真的是方法使它成为 NLP。因此,我在这里简单解释一下它的含义。
Photo by Mark Rasmuson on Unsplash
那么什么是 NLP 呢?
自然语言处理(NLP)有着非常有趣的历史,它本身也是一门非常古老的学科,在更复杂的方法实现之前,一些最早的例子是手写的规则。我经常被问到的一个问题是“什么是 NLP?”我认为答案取决于你想让它做什么。NLP 通常被分解成不同的需求,我在这里找到了一个很好的列表七种不同的用途:
- 文本分类—例如垃圾邮件过滤
- 语言建模—例如拼写检查
- 语音识别——将我们的口头语音分解成文本格式,然后可以被其他算法接受
- 标题生成—描述图片的内容
- 机器翻译——将一种语言转换成另一种语言
- 文档汇总—文档的抽象创建
- 问答——理解一个问题,然后给出一个人类可读的答案
令人惊讶的是,你可以为这些的不同部分使用不同的模型。例如,传统的分类问题使用支持向量机或决策树来处理文本的单词包(单词包最简单的形式是单词在一段文本中出现的频率计数,因此失去了排序和语法),但被更复杂的算法(例如深度学习)慢慢取代, 但实际上这取决于手头的任务,对于简单的问题,一个单词包方法和一个 SVM 可以在更短的时间内比一个复杂的单词嵌入(每个单词的向量,包含上下文信息和与其他单词的关联)构建的数据集做得更好,这个数据集被输入到一个专门的神经网络中。
NLP 不是一项简单的任务,只是试图分解和理解人类语言的复杂性,而是关于理解我们如何说话,它可以完成任务,有时会给人留下它像人类一样理解你所说的话的印象。我这么说是因为机器永远不会像我们一样理解我们的语言,一个很好的例子是,当脸书试图让聊天机器人相互交流时,他们迅速将英语语言改变到人们不再理解的水*(但他们似乎理解)。
NLP 算法可能会遇到的另一个问题是多义性(同一个词有多种含义,英语中的 40% 估计就是这样)、同音异义词(听起来相同但拼写不同的词)、同形异义词(拼写相同但不同的词)等问题,这些问题导致模型为其特定的目标领域进行训练(尽管正在努力处理这个)。
这样的单词或句子的例子有(许多摘自这里是):
- 对于语义分析,在工程师报告中,单词“点火”在木材(坏)和锅炉行业(好)中有不同的含义
- 对于多义词来说,动词“get”可以表示根据上下文变成或理解
- 谐音:“爬下梯子”或者“买了羽绒被”。拼写和发音相同但不同的东西
- 同形词:“轴”。如果是砍木头的斧头的复数或者是一个图形的轴的复数
所以总的来说,NLP 是很难的,而且还涵盖了大量围绕使用人类语言的各种各样的问题。所以下次 Alexa 或 Siri 出错时,只要想想它试图做什么就行了。
一个轻松有趣的事实是,任何想要通过图灵测试的人工智能都需要 NLP(因为它需要产生与人类书面文本无法区分的对话文本)。
什么是 Neuralink:看看它是什么,它想要成为什么,以及它可能成为什么
原文:https://towardsdatascience.com/what-is-neuralink-a-look-at-what-it-is-what-it-wants-to-be-and-what-it-could-become-2acf32b51dc5?source=collection_archive---------1-----------------------
向你的第六感问好
Can’t read right now? You can listen to the podcast of this episode.
当我第一次在小学上科学课时,我们学习了五种感官。也许在不久的将来,这些信息可能会像太阳系九大行星(抱歉,是冥王星)一样过时。这可能要感谢 Neuralink 公司,该公司因其有争议的大脑芯片接口而成为头条新闻。2019 年 7 月 17 日,该公司终于在 YouTube 直播流中揭开了它的辛勤工作。
当你第一次听到它时,Neuralink 的追求听起来像是直接来自一个疯狂的天才的日记;当然,在埃隆·马斯克执掌公司的情况下,这一形象可能并不遥远。但是,如果你看起来超越了科幻恐怖电影,你可以瞥见一个完全不同的人类未来——一个拥有新的第六感:神经链接的未来。
Neuralink Prototypes: the company has gone through years of research prior to its public announcement (Source: Neuralink Launch Event on YouTube)
Neuralink 现在是什么?
Neuralink 是一种首先用于帮助截瘫患者完成简单任务的设备,如使用 iPhone 和在计算机上点击鼠标——无需身体运动。明确一点,人体试验还没有开始;Elon Musk 和他的团队对 2020 年底开始持乐观态度,但他们认为 FDA 的批准并不容易。据 Musk 称,迄今为止,Neuralink 原型已经在啮齿动物身上进行了测试,显然甚至在一只猴子身上进行了测试。
大脑中的那部分
Neuralink 确实包括通过手术将一些组件植入你的大脑表面。但是大脑植入并不新鲜——自从 20 世纪 70 年代以来,研究和开发一直在进行,测试和使用。只是以前,大脑植入不被认为是增强;毕竟,我们的大脑仍然是一个大谜团,我们只是最*才开始解码我们智力的遗传起源。
理想情况下,我们希望保持这个神圣房间的神圣性——我相信埃隆·马斯克(以及他的团队)也希望如此。不过,在这一点上,这是不可能的。他们通过使用电极进行测试来实现这一点,电极是用于检测电场的设备(在大脑中,当神经相互发送信息时就会产生电场——即 Neuralink 使用电极来检测神经何时相互发送信息)。
其中一个电极(我们称之为 1 号电极)被放置在神经元的正上方。因为它直接在神经元上,它将能够检测到由于神经元放电而产生的任何电场。然后,他们将另一个电极(我们称之为电极 2)放在更远的地方,看看它是否仍然可以检测到神经元放电产生的电场。如果可以,他们将它移动得越来越远,直到电极 2 不再能够检测到神经元的电信号——在这一点上,电极 1 将报告神经元正在放电,但电极 2 将无法确认它。换句话说,电极 2 离神经元太远了。这个距离是 60 纳米。不用深入研究,事实是 60 纳米意味着它必须在头骨内部,而不是外部。
至少,电极需要位于头骨下面。这正是他们要做的。电极和一个小接收器将被安装在头骨下面。不,你不会有一根天线从你的头上伸出来,不,杆子不会刺穿你的大脑。
N1 Sensor, the first version of the human-embedded chip (Source: Neuralink Launch Event on YouTube) without the outer mold. The mold is a cylindrical 8mm diameter, 4mm tall. Each has 1,204 electrodes.
伸出你的食指,试着想象芯片放在上面。现在你意识到它有多小了——它肯定比我现在耳朵里的 AirPods 小,后者在我的大脑陷入交叉火力的情况下来回发射信号。它将被放置的圆柱形外壳直径为 8 毫米,高 4 毫米。
从外壳中出来的将是 1024 个看起来像细丝的微小电极。当我说微小时,我们看到的是大约 6 纳米的直径。为了比较,想象一下你头发的直径,然后用这个直径除以 10。它是如此之小,以至于相对来说像人手那么大的东西都无法将其安装到大脑上。这就是为什么 Neuralink 也创造了一个机器人外科医生。
The robotic surgeon that places Neuralink N1 electrodes into the brain (Source: Neuralink Launch Event on YouTube)
这个机器人有能力做出必要的精确动作,将螺纹安装到你的大脑中。这听起来像是一个简单的任务,但在线程的小范围内,它变成了一个与太空火箭安全返回地球一样复杂的任务——马斯克太熟悉了。
这些东西真的非常非常小。你真的不能用手操纵它们。机器人一次剥下一根线,放入大脑…所以我们必须制造一个手术机器人…没有机器人手术是不可能的。
- Max Hodak,Neuralink 的总裁
这是因为,在那个尺度上,还有其他因素需要考虑;比如呼吸和心跳。两者都是非自愿的。当然,一个没有完全镇静的人可以在长达一小时的过程中屏住呼吸,但他或她能屏住心跳吗?我想没有人会推荐这个。
你可能想知道戳大脑是否会导致剧烈的头痛。答案是否定的,首先大脑没有任何痛觉感受器,所以你不会有任何的感觉。其次,电极这么细。如果头发的类比不够直观,可以这样想:这些电极比蚊子的长鼻(当它想吸你的血时伸出的长针)还要细——它嘴巴的内部,阴唇,直径约为 40 纳米(相比之下,电极的直径为 6 纳米)。你上一次感觉到蚊子咬你是什么时候?
Take a look at the Neuralink surgical robot in action (Source: Neuralink Launch Event on YouTube)
Neuralink 手术机器人在确定放置每个电极的正确区域时会考虑这些变量,从而将触及血管的可能性降至最低——这对大脑不好。在上图中(你可以点击 source 链接,直接进入直播流中播放该视频的位置),顶部的两段视频显示了一个模拟大脑的运动,其中有心跳和呼吸等变量,而左下角的一段视频显示了机器人在考虑这些变量后看到的东西——一个看似静止的大脑。
大脑之外的部分
将仿生超级大脑芯片自动植入你的大脑是我们大多数人都会认为一生只有一次的经历。马斯克和他的团队希望保持这种状态。软件更新已经很不方便了,总是在我们不希望的时候发生。每当软件想要运行更新时,都必须去一趟当地的神经外科医生那里,这种想法让我们对拥有超级大脑可能带来的吸引力有所了解。因此,一大块 Neuralink 驻留在头骨外部,作为耳朵后面的可穿戴设备。
The Neuralink wearable named the Link (source)
这款可穿戴设备名为 Link,内置软件和电池。这样,当你只有 5%的电池续航时间时,你可以直接移除设备进行充电。软件更新也是如此,处理发生在链路上。
Neuralink 想成为什么
它希望成为每个人大脑中的一台电脑——一台我们不必随身携带的电脑,并且在使用时不会被察觉的电脑。尽管埃隆·马斯克(Elon Musk)可能喜欢帮助截瘫患者的想法,但似乎没有什么比给我们未来的人工智能霸主腰带以下一脚更让他挠痒痒的了。他相信 Neuralink 会给你致命一击。
在[不可测量的]未来,他将 Neuralink 的大脑芯片视为选择性手术。这意味着它在美国不在保险范围内。抱歉,最后一句话是对美国医疗保健这个笑话的不着边际的讽刺挖苦。严肃地说,这意味着人们想要它,而不是需要它。它可能会比整形手术在世界范围内变得更加普遍(也许贝弗利山是个例外)。
【Neuralink】不是强制的东西。这是你想拥有就可以选择拥有的东西。我认为这在文明层面上非常重要。
-埃隆·马斯克
有趣的是,马斯克说 Neuralink 不会是强制性的,尽管如果你周围的每个人都有一个量子计算机速度的大脑,如果你想竞争那时人类可能仍然存在的任何工作,你自己可能也需要一个。在 Neuralink 的帮助下,约翰·康纳——呃,我是说,马斯克,相信我们有机会对抗不可避免的天网。
Neuralink 可以成为什么
嗯,从资本主义的角度来看,比苹果或任何其他现有的科技巨头都大(可能除了亚马逊,因为否则我们会用我们的思想去哪里购物?).当你脑子里已经有了这一切的时候,你为什么还需要 iPhone 或者 Apple Watch(实际上,你现在甚至还需要 Apple Watch…)!Neuralink 的成功将改变未来创新的轨迹。曾经看起来非常创新但仍然遥不可及的东西(例如,增强现实眼镜)现在在想象 Neuralink 的未来时似乎有点过时。
但是 Neuralink 可以远远超越增强现实的新奇事物太空入侵者。例如,心灵感应不再那么牵强。毕竟,电极接收的信号可以无线传输到电子设备,而 Link 耳机本身就是一个电子设备。将信息从一个链接设备传输到另一个链接设备类似于在 iPhones 之间空投图像。再加上一点量子纠缠,也许我们可以给我们的火星家庭打一些心灵感应电话。在这个时候,Neuralink 的技术可能无法从你的神经元中的小放电中创建完整的句子,但它可以被训练成将某些放电模式翻译成图像。或者单个单词。这种类型的功能可以随着时间的推移而改进。
交流的速度也会提高。现在,当我打字时,我交流的速度被限制在我的手指优雅地穿过 QWERTY 星球的速度之内。当我用手机的时候,我的拇指能织多快。即使我在说话,我也只能在舌头打结之前说得很快。但是思想是瞬间的。Neuralink 最终可能能够捕捉那些即时的想法,并将其转录为即时通信,速度比我说出的话还要快。
另一个更前卫的用途可能是作为药物的替代品——让我们从更容易接受的娱乐性药物开始吧。你不需要再喝咖啡、抽烟或喝酒来达到它们的效果。这些业务可能最终会成为行业的坟墓,被售价 0.99 美元(考虑到通货膨胀,可能为 50 美元)的应用程序版本所取代。其他的,更不合法的,也可能以数字方式被滥用。这种潜力确实引发了关于 Neuralink 打算如何监管其软件使用的问题,包括第三方开发。然而现在,政府似乎正忙着处理脸书的天秤座,所以这是一个他们不得不在晚些时候处理的问题。
未来的担忧
谈到担忧,也有一个清单。勒索病毒(Ransomware)是一种病毒,它会锁定你电脑中的文件,并一个接一个地删除它们,直到你支付赎金(通常是比特币),这是当今计算机网络的一个严重威胁。现在想象一下你的大脑。黑客、软件漏洞和硬件缺陷可能会威胁到你的日常生活。
在不久的将来,另一个问题是 Neuralink 不仅能够读取信号,还能发出自己的信号——它本质上能够代表你的神经元工作。但是大脑是非常敏感的——它会在一生中对不同的刺激做出反应,包括化学物质和神经元如何相互交流。在等式中加入 Neuralink 可以改变我们大脑的发展方式。
Neuralink 不可否认是一个创新项目——这是埃隆·马斯克(Elon Musk)的预期。他倾向于关注未来,而不是今天存在的可感知的局限性,这引导其他人看到这项技术或类似技术的强大潜力。我非常渴望想象它将为人类智能的未来带来更多的东西。我会尝试第一版吗?在这一点上,可能不会,但我不能代表未来的我。
什么是。npy 文件以及为什么应该使用它们…
原文:https://towardsdatascience.com/what-is-npy-files-and-why-you-should-use-them-603373c78883?source=collection_archive---------5-----------------------
为什么你应该总是保存你的数据。npy 而不是。战斗支援车
An accurate depiction of the feeling you get when loading data from .npy files.
介绍
首先,非常感谢我的粉丝们在过去的几个月里一直支持我,我一直非常忙,没有太多的时间来写文章。我决定对此的部分补救方法是做一些更短更容易消化的文章,这样更容易产生!因此,这是我第一次尝试写一篇简短扼要的文章。
希望你觉得有用!
如果你喜欢这篇文章并想看更多,请务必 关注我的简介 !
TL;博士:
从存储器中读取一千万个数据点文件:
The results speak for themselves.
🥇第一名:。npy 文件用时:0.13 秒
这是目前最快的数据加载方法。
🥈第二名:。csv 文件用时:2.66 秒
熊猫证明了这一点。csv 文件不是没用,但还是速度不够。
🥉第三名:。txt 文件用时:9.67 秒
和其他的相比,这个太慢了,很痛苦。
为什么。npy 和 Numpy?
如果你曾经用 Python 做过任何类型的数据处理,你肯定会遇到 Numpy 和 Pandas 。这些是 Python 中数据科学的巨人,是许多其他包的基础,也就是说 Numpy 提供了像 Scikit-Learn 和 Tensorflow 所使用的基本对象!
那么,为什么我要谈论这些包,为什么特别是 Numpy 呢?你可能知道,关于数据文件的行业标准是。csv 文件。现在,虽然很方便,但是与其他选择相比,这些文件已经高度优化了,比如 T31。npy 文件由 Numpy 提供。
“管他呢,让我们看看代码和证据!”
好吧,继续表演!
代码
首先,我们简单地创建 1000 万个随机数据点,并将其保存为逗号分隔值:
现在,让我们通过传统方式加载,并对数据进行简单的整形:
这是我得到的输出:
Almost 10 seconds to load!
现在,您可能会认为整形会阻止更快的加载,但即使我们不做任何整形,我们也会得到类似的时间!
现在我们有了 10000 乘 1000 的数组,让我们继续将它保存为。npy 文件:
np.save('data.npy', data_array)
对,那很简单,对吧?现在我们有了数组。npy 格式让我们看看我们能以多快的速度阅读它:
这给了我以下输出:
Wow! More than 70x faster!
快得多,还要注意,我们不需要重塑数据,因为该信息包含在。npy 文件。
使用的另一个“次要”特性。npy files 是文件占用的减少的存储空间。在这种情况下,它的大小减少了 50%以上。这可以警惕很多,但一般来说。npy 文件更易于存储。
“熊猫和它们的后代怎么样?csv 处理?”
让我们来了解一下!
首先让我们创建一个合适的。csv 文件供熊猫阅读,这将是最有可能的现实生活场景。
data = pd.DataFrame(data_array)
data.to_csv('data.csv', index = None)
这只是将我们之前创建的“data_array”保存为一个标准。没有索引的 csv 文件。
现在让我们加载它,看看我们得到了什么样的时间:
这给了我以下输出:
2.66 seconds.. Faster than the standard .txt read but still snails pace compared to the .npy file!
现在你可能会认为这是作弊,因为我们也在加载一个熊猫数据帧,但事实证明,如果我们像这样读取,时间损失可以忽略不计:
data_array = np.load('data.npy')
data = pd.DataFrame(data_array)
和时间,我们得到以下结果:
Almost no different from loading without a DataFrame.
外卖
您可能习惯于将数据加载和保存为。但是下次你做数据科学项目的时候,试着养成加载和保存的习惯。改为 npy 文件!当你等待内核加载你的文件的时候,它会帮你节省很多停机时间和烦恼!
结束语
我希望这篇短文对你有所帮助!
如果你想多看多学,一定要 跟着我上媒 🔍和 碎碎念 🐦
[## 彼得·尼斯特鲁普-中等
阅读彼得·尼斯特拉普在媒介上的作品。数据科学、统计和人工智能...推特:@PeterNistrup,LinkedIn…
medium.com](https://medium.com/@peter.nistrup)
什么是 OCR??
原文:https://towardsdatascience.com/what-is-ocr-7d46dc419eb9?source=collection_archive---------11-----------------------
光学字符识别系统工作的基本理论概述。
Source: investintech.com
在当今时代,数字化的必要性正在迅速增加。由于信息和通信技术(ICT)的发展以及手持设备的广泛使用,人们通常更喜欢数字化内容,而不是包括书籍和报纸在内的印刷材料。此外,利用许多先进的技术,如人工智能等,可以更容易地组织数字化数据,并出于各种目的对其进行分析。因此,为了跟上当前的技术发展,有必要将目前所有印刷格式的信息转换成数字格式。
OCR 来了…我们的救世主💪 💪这有助于我们完成单调乏味的信息数字化工作。OCR 代表 光学字符识别、,其主要工作是识别图像中的印刷文本。一旦我们在 OCR 的帮助下识别出印刷文本,我们就可以用各种类型的信息。
Recognizing the text on Number Plate. Source: scholorworks
你打算学什么?
这是一个由 3 部分组成的系列文章,解释了 OCR 系统的各种概念和阶段。让我们看看你将在每一部分学到什么
- 第一部分 (本文),OCR 系统工作的高级理论概述
- part-II:在 预处理阶段 执行的不同步骤以及代码示例
- part-III:不同类型的 分割 可以在一张 预处理过的图像上执行。
我们走吧…
下图显示了 OCR 系统工作流程的不同阶段。
Phases of OCR. Source: Reference [4]
让我们简要讨论一下上图中显示的每个阶段:-
A. 图像采集
这包括扫描文档并将其存储为图像,在该图像上必须执行识别。
B. 预处理
我们不能直接为 OCR 系统输入图像。必须对图像进行一些预处理,以便 OCR 能够比较容易地识别图像中的信息。这就像根据场合穿上衣服一样。
图像预处理包括:
- 倾斜校正:从上一阶段获得的图像可能没有正确定向,可能以任何角度对齐。因此,我们需要执行倾斜校正,以确保转发到后续
阶段的图像方向正确。
Skew Correction. Source: pyimagesearch.com by Adrian Rosebrock
2。二值化:将彩色图像转换为二值图像(仅包含黑色&白色)。通常,在实践中,这种从彩色图像到二值图像的转换是通过中间的灰度图像来完成的。
彩色图像→灰度图像→二值图像
这可以使用不同的方法完成,如
→自适应阈值处理
→ Otsu 的二值化
→局部最大值和最小值方法
我更喜欢自适应阈值,因为它用某个阈值对图像进行二值化,这个阈值是根据它在图像中的位置动态计算的。
3.去噪:在图像采集过程中,由于相机清晰度低、图像上有阴影等各种原因,扫描图像时容易引入噪声(小点或前景成分)。
这种噪声应该被去除,以便图像将是干净和均匀的。
4.细化和骨架化:不同图像的文字笔画宽度不同。在手写单词的情况下,这种可变性非常高。骨架化是一种技术,使用这种技术我们可以使所有的笔画有一个统一的宽度(可能 1 个像素宽或几个像素宽)
(a) Original Image. (b) Converted to Grayscale. ©Binarized image. (d) Thinning and Skeletonization are done. (e) Noise Removed. Source: Reference [3]
C. 分割
一旦一幅 干净的 图像被获得,在预处理阶段之后,下一个阶段就是 分割 。这是一种将整个图像分解成子部分以进一步处理它们的技术。
OCR 中可以做三种类型的 切分:-
→行级切分
→词级切分
→字符级切分
D. 特征提取
在这一阶段,我们从上一阶段获得的分段子组件中提取一些独特特征。有许多技术,我们可以通过它来提取特征,如形状,笔画等。
但是现在,对于特征提取,我们主要依赖于机器学习模型,该模型使用一堆 CNN、RNN(递归神经网络)、LSTM(长短期记忆)层。
E. 分类
这是 OCR 系统的决策阶段。分类使用在特征提取阶段提取的特征来识别文本片段。像 SVM 这样的算法可以用于分类。
除了这些阶段,为了提高 OCR 的性能,我们还可以在分类阶段之后执行可选的后处理步骤。
F. 后处理
OCR 系统中最有可能出现的错误是由于分类阶段的错误预测(这可能是由于较差的特征提取、图片中的大量噪声等)。在大多数情况下,这些预测错误会导致小的拼写错误,因为错误地预测了一个单词中的一个或两个字母(就像单词“ball”被预测为“boll”)。因此,这些类型的拼写错误可以使用语言模型、Word2Vec 模型(如 CBOW 和 skip-gram)等来纠正。
哇呜……现在你知道 OCR 系统的基本工作流程了。
进一步阅读
- 第二部分—OCR 预处理
- 第三部分—OCR 中的分割
快乐学习!!!!
欢迎任何质疑、建议、指正。😃
参考文献:
[1] P. Dhande 和 R. Kharat,“草书英文手写字符的识别”, 2017 年电子与信息学趋势国际会议(ICEI) ,Tirunelveli,2017 年,第 199–203 页,doi:10.1109/icoei . 2017.8300015 . 202005
[2]哈马德、卡雷兹和卡亚、穆罕默德。(2016).光学字符识别技术详细分析。国际应用数学、电子学和计算机杂志。4.244–244.10.18100
[3] Choudhary,Amit & Rishi,Rahul & Savita,Ahlawat。(2013).一种新的脱机手写草书字符分割方法。计算机科学。17.88–95.10.1016 年 5 月 13 日
[4]布里德、优素福和苏哈尔、阿卜杜勒哈尼和埃尔克塔尼、优素福。(2017).基于阿拉伯语的特异性和独特性的手写字符识别。国际交互式多媒体和人工智能杂志。4.45–53.10.9781/伊吉迈 2017.446
《随机森林》中的“出袋”(OOB)分数是多少?
原文:https://towardsdatascience.com/what-is-out-of-bag-oob-score-in-random-forest-a7fa23d710?source=collection_archive---------1-----------------------
本博客试图解释 oob_score 在“Scikit learn”框架中的“【RandomForestClassifier】”设置为 true 时的内部功能。这篇博客描述了随机森林中 OOB 分数背后的直觉,它是如何计算的,以及它在哪里有用。
在需要模型良好可解释性的应用中,DTs 工作得非常好,尤其是当它们深度很小时。但是,具有真实数据集的 DTs 可能有很大的深度。深度较高的 DTs 更容易过度拟合,从而导致模型中的方差较高。随机森林模型探讨了 DT 的这一缺点。在随机森林模型中,原始训练数据是随机替换采样生成的小数据子集(见下图)。这些子集也称为引导样本。然后,这些引导样本将作为训练数据提供给许多深度较大的 DTs。这些 DTs 中的每一个都在这些引导样本上被单独训练。这种 DTs 的集合称为随机森林集合。集合模型的结论结果是通过对来自所有 DTs 的多数投票进行计数来确定的。这个概念被称为 Bagging 或 Bootstrap 聚合。由于每个 DT 采用不同的训练数据集作为输入,因此原始训练数据集中的偏差不会影响从 DT 聚合中获得的最终结果。因此,bagging 作为一个概念减少了方差,而不改变整个系综的偏差。
Generation of bootstrap samples with replacement. “Sampling-with-replacement” here means that if a data point is chosen in the first random draw it still remains in the original sample for choosing in another random draw that may follow with an equal probability. This can be seen in the image above as “Dog” is chosen twice in the second bootstrap sample.
随机森林里的出袋分是多少?
袋外(OOB)评分是验证随机森林模型的一种方式。下面是一个简单的直觉,它是如何计算的,然后描述它如何不同于验证分数,以及它在哪里是有利的。
为了描述 OOB 分数计算,让我们假设在从 1 到 5 标记的随机森林集合中有五个 dt。为简单起见,假设我们有一个简单的原始训练数据集如下。
假设第一个引导样本由该数据集的前三行组成,如下图绿色框所示。该引导样本将被用作 DT“1”的训练数据。
然后,原始数据中“遗漏”的最后一行(见下图中的红框)被称为袋外样本。此行将不会用作 DT 1 的培训数据。请注意,实际上会有几行这样的行被遗漏,这里为了简单起见,只显示了一行。
在对 DTs 模型进行训练之后,这个剩余的行或 OOB 样本将作为看不见的数据提供给 DT 1。DT 1 将预测这一行的结果。设 DT 1 正确预测这一行为“是”。类似地,这一行将被传递给所有在其引导训练数据中不包含这一行的 DTs。让我们假设除了 DT 1 之外,DT 3 和 DT 5 在它们的引导训练数据中也没有这一行。下表总结了 DT 1,3,5 对此行的预测。
我们看到,通过 2“是”对 1“否”的多数票,这一行的预测是“是”。注意,通过多数投票,该行的最终预测是正确预测,因为该行的“打网球”栏中最初也是“是”。
类似地,OOB 样本行中的每一行都通过在其引导训练数据中不包含 OOB 样本行的每个 DT,并且为每一行记录多数预测。
最后,OOB 得分计算为,即袋外样本中正确预测的行数。
OOB 分数和验证分数有什么区别?
既然我们已经了解了 OOB 分数是如何估算的,让我们试着理解它与验证分数有什么不同。
与验证分数相比,OOB 分数是根据不一定用于模型分析的数据计算的。而对于计算验证分数,在训练模型之前,实际上留出了原始训练数据集的一部分。此外,仅使用不包含其引导训练数据集中的 OOB 样本的 dt 的子集来计算 OOB 分数。而验证分数是使用集合的所有 dt 来计算的。
OOB 评分能派上什么用场?
如上所述,只有 DTs 的子集用于确定 OOB 分数。这导致装袋中总聚集效应的降低。因此,总的来说,对一个完整的 DTs 集合进行验证比用一个 DT 子集来估计分数要好。然而,有时数据集不够大,因此留出一部分用于验证是负担不起的。因此,在我们没有大型数据集,并希望将其全部用作训练数据集的情况下,OOB 分数提供了一个很好的权衡。然而,应该注意的是,验证分数和 OOB 分数是不同的,以不同的方式计算,因此不应该进行比较。
在理想情况下,总训练数据的大约 36.8 %形成 OOB 样本。这可以显示如下。
如果训练数据集中有 N 行。那么,在随机抽取中没有选中一行的概率是
使用替换抽样,在随机抽取中不选取 N 行的概率为
其在大 N 的极限下变得等于
因此,总训练数据的大约 36.8 %可用作每个 DT 的 OOB 样本,因此它可用于评估或验证随机森林模型。
概率是什么?
原文:https://towardsdatascience.com/what-is-probability-175b189c0498?source=collection_archive---------10-----------------------
理解概率的解释
Photo by Jonathan Petersson on Unsplash
介绍
从很小的时候起,我们就被教导概率——通常是通过使用简单的例子,如掷硬币或掷骰子。
然而,概率的实际定义是什么?对于像上面这样的基本例子,这似乎是显而易见的;然而,对于许多其他情况,它是模糊的。
例如,我们如何确定只发生一次的事件的概率?或者,我们如何确定涉及一组(可能是无限的)考虑因素的事件的概率,例如一个给定的人发生车祸的概率?除此之外,我们的个人信仰和经历如何影响概率?
在概率哲学领域的历史上,已经产生了各种各样的解释。每种方法都以不同的方式解决上述问题。在本文中,我将讨论概率的四种常见解释:古典、频率主义者、主观、公理化。
经典的
经典解释是第一次严格定义概率的尝试。它是在简单的概率游戏的背景下发展起来的,比如掷硬币或掷骰子,它关注的是有着同样可能的、互斥的结果的事件。其主要思想是无差别原理,该原理指出,如果存在 N 个互斥且集体穷尽的可能结果,那么任何一个个体结果的概率都应该是 1 / N 。所以,对于一个事件 A 对应于可能结果的 N_A ,那么P(A)=****N _ A/N。
优势
这种方法在概念上很简单,对于简单的实际例子很有用。对于没有数学或统计学背景的人来说,这是迄今为止最容易理解并应用于基本现实世界示例的方法。
限制
这种解释的简单性在几个方面限制了它。它不能处理具有无限可能结果的事件。它也不能处理各种结果不尽相同的事件,比如投掷一个有重量的骰子。这些限制使它不适用于更复杂的任务。
频率论者
接下来是频率主义者的解释,这是目前统计学中最常用的解释。频率主义者的方法关注的是一个事件在大量试验后发生的频率。形式上,如果 N_A 是事件 A 在 N 试验中出现的次数,那么当 N 接*无穷大时,比率 N_A / N 等于 P(A) 。
https://lotharlorraine.wordpress.com/2014/01/10/knowledge-dependent-frequentist-probabilities/
优势
这种方法解决了传统方法的一些问题。频率主义方法能够处理结果不尽相同的情况,因为它只关注事件的发生。这种方法也能够处理不涉及单一结果的概率。例如,如果事件是“一个随机选择的正整数是偶数”,即使没有感兴趣的特定结果(因为有无穷多个整数),事件的概率仍然可以通过采样越来越多的整数来确定。随着我们采样越来越多的数字,概率会接* 1/2。
限制
尽管这种方法改进了传统方法,但它仍然有一些限制。
【无限次】重复 无限次重复一个实验的概念是一个思想实验,而不是实际可以做的事情。我们可以进行大量的试验,但是当然,永远不会有无限的试验。因此,当我们试图估计概率时,所获得的量不会收敛,而是围绕事件的“真实”概率振荡。如果不循环使用概率,很难量化这种程度的不确定性。
另外,频率主义者的方法没有明确的方法来处理只会发生一次的事件。并非所有概率都与可重复试验中发生的事件有关。例如,如果事件关系到一只股票明天的开盘价,就没有办法获得一个以上的样本。
主观的
主观解释采取了与前两种不同的方法。主观方法不是关注频率或计数,而是假设概率来源于一个人对特定事件将会发生的个人(主观)相信程度,基于他们可获得的所有相关信息。这种观点与贝叶斯统计一致,贝叶斯统计描述了随着信息的增多,人们如何调整自己的信念。
https://www.investopedia.com/terms/s/subjective_probability.asp
优势
这改进了先前的解释,因为它允许我们创建任何事件的概率。显然,一个人能够对任何事件有一定程度的信任,不管它发生的频率如何或者相关的结果是什么。在这种情况下,主观方法可以包括其他方法,因为在相关情况下,没有什么特别的原因可以解释为什么我们的个人信仰不能与频率主义者或古典方法保持一致。例如,即使在主观解释下,大多数人仍然相信掷硬币有 50%的机会正面朝上,因为没有证据表明硬币的任何一面更有可能。
限制
即使这种方法允许我们产生任何事件的概率,围绕这些概率的有效性和它们的有用性仍然存在问题。
参考类问题 由于概率是个人的相信程度,每个人对不同事件的概率可能不同。这可能是由于个人观点和/或不同信息的可用性。这个问题涉及到引用类问题,它指的是确定某个事件的相关在先事件是什么的任务。例如,如果我们想确定某个特定的人在 2019 年发生车祸的概率,我们需要从一些相关类别的人开始。不同的人会提出不同的引用类。你可以使用一个宽泛的词,比如“美国的所有司机”,或者你可以使用一个非常具体的词,比如“该州这个城市的所有司机在这个时间驾驶那种类型的车……”。基于您决定使用的引用类,您将有不同的概率。这与贝叶斯统计中选择先验概率的任务直接相关。
连贯性
接下来,为了让这些主观概率有用,它们必须是连贯的。为了一致,它们必须满足基本的概率定律。比如,即使在我们的主观信念中, P(A) 一定是 ≤ P(A 或 B) 。这可以通过荷兰书的论证来更好的理解。在赌博中,荷兰式赌注是一组赔率和潜在的结果,庄家保证从中获利。有人认为,为了不被赌注登记经纪人“荷兰预订”,一个理性的代理人的个人信仰程度必须是一致的。
https://en.wikipedia.org/wiki/Dutch_book
不管这个论点如何,已经有许多研究表明人们的个人信仰并不一致。比如合取谬误已经被多次实验观察到,其中人们认为 P(A) < P(A 和 B) 。在阿莫斯·特沃斯基和丹尼尔·卡内曼的作品《T4》中,他们创造了著名的琳达问题。
显然,基于概率的公理,答案是 a。然而,通过实验,大多数参与者选择了 B 。我们的大脑在决策过程中使用的各种启发式方法导致参与者犯了这个错误,因为他们将社会正义的描述与积极参与女权运动的属性联系起来。一般来说,人们往往很容易陷入这些谬误。因此,在许多情况下,主观概率可能实际上是不一致的,尽管荷兰书中的例子提出了这样的观点。
公理的
最终的“解释”是统一以上三者的要求。它将相干性的定义转化为明确的数学形式。由于主观概率需要一致性,并且主观概率可以包含频率主义者和经典解释,公理化方法是包罗万象的。
这种解释由 3 个概率公理组成:
- 对于任何事件 E,0 ≤ P(E) ≤ 1。
- “某个事件发生”的概率是 1。至少必须发生一个事件。
- 互斥事件联合的概率是单个事件概率的总和。
这些公理可以用来推导许多其他事实。通过这些公理,我们可以发展一种不受主观解释影响的概率理论。
什么是关键的证据和用心参与的 6 种方式
原文:https://towardsdatascience.com/what-is-proof-of-keys-and-6-ways-to-participate-mindfully-7687c4cd1888?source=collection_archive---------20-----------------------
区块链系列的未来
对区块链来说,密钥证明并不是一种新的共识算法;相反,这只是一个事件,人们同时将他们所有的加密货币从集中交易所中取出。该活动的主要目标之一是确保交易所拥有他们声称拥有的资金。毕竟,如果他们不这样做,那么就不能保证你真的拥有你在交易所购买的硬币。因此,如果这已经是一个问题,至少它迟早会被曝光。
听起来熟悉吗?因为它应该。本质上是银行挤兑。在我之前的文章货币的历史中,我描述了什么是银行挤兑——最著名的银行挤兑事件之一发生在大萧条时期,当时公民试图尽快从银行提款,因为他们担心银行没有足够的钱返还给每个人,尽管银行声称他们有。然后,好吧,大萧条发生了,所以…让我们希望历史不会重演(开玩笑,大萧条不仅仅是由银行挤兑引起的——相关性不等于因果关系!).
钥匙证据的核辐射
2019 年 1 月 3 日的密钥证明活动(该活动将于 1 月 3 日举行,以庆祝第一个被开采的比特币区块 10 周年)将是一次银行挤兑,除非是在集中式加密货币交易所而不是银行。我指定集中式是因为分散式交换不代表用户持有任何资产;相反,用户保持对其资金的控制。
关于 HitBTC 这样的交易所据称会在活动开始前冻结客户账户的传言已经风起云涌。这些传言未经证实,但当然像约翰·迈克菲(John McAfee)这样的名人,加密货币的唐纳德·特朗普(Donald Trump),喜欢引发阴谋,而不是要求事实,这导致真相和倾向之间的模糊。
尽管 McAfee 和我在思维方式上存在差异,但他认为交易所可能厌倦了密钥证明事件,这并没有错。交易所不喜欢它的原因显而易见。
首先,它可以显著减少交易的资产量。交易所想要交易量,因为它给了人们更多交易的机会——进行更多交易意味着从交易中赚取更多费用。例如,如果我想以 3700 美元的价格购买比特币,我去了一家交易所,但看到唯一的报价是 4000 美元,因为每个报价在 3700 美元到 4000 美元之间的人都撤回了他们的硬币,那么我可能不会交易。
此外,交易所可能不会再看到这些资金。毕竟,如果用户想再次交易,是什么迫使他们将资金移回同一个交易所?像币安这样的交易所拥有大多数交易者感兴趣的大部分硬币,所以用户可能看不出将它们移回一个较小的交易所有什么意义。因此,交易所的交易量将再次下降。如果你不认为低交易量是太大的问题,那么我会说你只是没有感受到为一笔交易等待两天的痛苦。这肯定会影响用户体验,促使人们转向其他交易所。
我如何参与(以一种聪明的方式)?
如果您想要提取您的加密货币并成为第一个密钥证明事件的一部分(目的是在未来拥有更多),您需要的只是您自己的钱包地址。这是您拥有私钥的钱包地址。但一定要采取一些预防措施,以便更有效地参与活动,而不损害您的身份或您的资金安全。以下是一些建议:
1.考虑使用临时地址
如果您打算在某个时候将它移回交易所,请考虑使用临时地址。交易所跟踪与账户相关联的地址;因此,通过将您的所有资金提取到一个个人地址,您可能会将该地址与您的身份相关联。如果你想保持你的地址匿名,那么就不要从交流中退出。
2.不要使用你认为有问题的钥匙
绝对确保您的私钥没有被泄露。例如,如果你把你的私钥保存在微软 Word 文档或谷歌文档中(不要这样做,这是一个不要用你的私钥做什么的例子),那么它很可能不是很安全,很容易被一个简单的病毒找到。钥匙证明是一个事件,将是一个有机会进入外国钱包的黑客的金矿,所以你要绝对肯定你的钱包的私钥没有被泄露。不幸的是,没有简单的方法可以知道。
3.确保使用正确的区块链地址
确保你输入了正确的钱包地址。这在比特币和以太坊之间不是什么问题,因为格式不同。但许多原本存在于以太坊上的替代硬币已经推出了自己的区块链,它们起源于以太坊的叉子;因此,它们具有相同的钱包地址格式。例如,VeChain 使用以太坊地址格式。如果你在提取 VeChain 时不小心粘贴了你的以太坊地址,那么就和你的 VeChain 令牌说再见吧,除非你在以太坊上拥有相同的地址。
4.区块链网络拥塞的因素
请记住网络拥塞。区块链在这一点上不完全是可扩展的,如果活动在参与方面是成功的,那么这也将是 altcoin 网络可扩展性的一个伟大实验。但话虽如此,有一种可能性是,你的资金甚至可能不会到达你的个人钱包,直到活动结束。在传输过程中,不要惊慌,只需使用交易 ID 进行检查,以确保它会到达正确的目的地址,即您的目的地址。
5.提款限额因素
还要记住交易所拥挤/取款限额。在很多交易所,如果你的账户没有经过验证(或者在某一级别的验证),你的提款可能会受到限制。设置这一路障是为了遵守某些监管法律,如反洗钱(AML)。此外,交易所本身可能无法一次处理大量的取款请求。就像网络拥塞预防措施(第 4 条)一样,当他们找到你时,事件可能已经结束了。
6.不要动你输不起的东西
考虑到第 4 点和第 5 点,你还应该考虑定价风险。例如,如果在你的资金在钱包地址之间转换时价格下跌,那么你将无法出售你的资产,直到你可以再次将它们放回交易所。如果你不能承担这个风险,那么你应该权衡它的可能性,决定这个事件是否适合你。
“钥匙证明”事件最终对用户来说是善意的,因为它意味着确保您真正能够访问所有承诺您可以访问的资产。如果用户开始发现他们没有,那么这将暴露出该领域一个更大的问题,并可能促使对集中交易所进行更多监管。如果你决定参加,请记住本文中提到的要点,以便从活动中获得更好的体验。
什么是二次投票?
原文:https://towardsdatascience.com/what-is-quadratic-voting-4f81805d5a06?source=collection_archive---------8-----------------------
二次投票是一种集体决策的方法,参与者不仅投票支持或反对某个问题,还表达他们对该问题的强烈感受。它有助于保护那些深切关注特定问题的选民小团体的利益。二次投票可用于民主制度、公司治理和区块链式的集体决策。
为什么是‘二次’?
在二次投票中,每个参与者都被给予一定数量的信用点数,这些信用点数可用于对某个问题进行投票。然而,为一个问题投一票以上的成本是二次的,而不是线性的。所以,每增加一票的边际成本都远远高于前一票。
下面是二次投票公式:投票人的成本=(votes)^2 的数量
想象一下,对一个问题的投票通常花费 1 美元,而你有 100 美元的投票信用。你想为保护濒危物种投票。投一票将花费你 1 美元。然而,为同一问题投两票将花费您 4 美元,为同一问题投三票将花费您 9 美元,为同一问题投 10 票将花费您全部 100 美元的信用。
因此,当你每多投一票就增加了你的议题获胜的机会时,投票的二次性质确保了只有那些深切关心议题的人才会多投他们一票。
在科罗拉多州使用
在民主党于 2018 年赢得科罗拉多州州长和该州两院后,他们使用二次投票来决定首先资助哪些拨款法案。由于立法者可能会提出自己的法案并投票支持,民主党核心小组寻求一种方法来衡量哪些法案得到了所有人的支持。
最初,科罗拉多州民主党人给每位议员分配了 15 个代币,用于他们喜欢的 15 张钞票上。在这种方法不奏效后,他们与微软经济学家 Glen Weyl 进行了交谈,他解释了二次投票如何提供一种解决方案。
Weyl 认为二次投票是解决“多数暴政”问题的一个办法。常规投票假设每个人都*等地关心一个问题,但事实很少如此。现实情况是,一些立法者不关心某些问题,适度关心其他问题,深切关心少数问题。
因此,每个立法者都得到了 100 枚代币。如果一个立法者对几个问题各投一票,那么他们每个人就要花费一个代币。然而,立法者可以对一个问题投一票以上,其代币费用如下:
科罗拉多州的二次投票实验基本上是成功的。
二次投票和传统的投票系统有什么不同?
:在大多数民主国家采用的“得票最多者当选”制度中,候选人不需要获得大多数人的选票就可以获胜。假设候选人 A 获得 35%的选票,B 获得 30%,C 获得 24%,D 获得 11%。a 赢了,但是我们知道大多数人投票给了 a 以外的人。
比例投票 : 为了解决这个问题,一些司法管辖区采用了比例投票制。在这里,如果 35%的选民投票给某个政党,那么立法机构中 35%的席位将给予该政党,以此类推。虽然这些系统可以被看作是“得票最多者当选”系统的“进化”版本,但当必须做出二元(是或否)决定时,它们就不起作用了。
排名选择投票 : 在排名选择投票(加州多个辖区都在使用)中,每个投票人都会对自己喜欢的候选人进行排名。每轮投票中得票最低的候选人将被淘汰,该候选人的选票将在下一轮投票之前重新分配给下一位候选人。尽管排序选择投票有其优势,但它是一个复杂且耗时的系统。
二次投票 : 尽管二次投票也很复杂,但它可以说更好地保护了那些深切关注特定问题的小投票群体的利益。通过增加每一张额外选票的成本,它抑制了那些不关心问题的选民投他们几票的积极性。它还允许选民通过投几票来显示他们对某个特定问题的支持程度——以牺牲他们对其他问题的投票能力为代价。
结论
现代民主国家在选举和立法过程中普遍实行一人一票。公司通常采用更复杂的投票机制(例如,允许股东指定其他人代表他们投票)。复杂但更民主的投票系统,如比例投票和排序选择投票,由于其复杂性,还没有被广泛接受。
现在,区块链支持的集体决策允许以透明、公开的方式跟踪投票,因此可以采用更复杂的投票系统。通过允许选民不仅表达他们的偏好,而且表达这些偏好的强度,二次投票保护了深深关心某些问题的小选民群体的利益。
—
陕雷
关注兰萨尔研究公司的媒体,了解最新的新兴技术和新的商业模式。
数据到底是关于什么的?
原文:https://towardsdatascience.com/what-is-really-data-about-a60a2af1cfaa?source=collection_archive---------21-----------------------
Photo by Helloquence on Unsplash
数据科学基本思想
现在大部分文章都倾向于表现出很多执行力,一点探索。就像 Conor Deway 在他的文章上写的:
与工程师、设计师和项目经理不同,数据科学家是探索优先,而不是执行优先。
此外,考虑到数据科学的历史,这是相当公*的。
一点数据科学历史
数据科学始于“从数据挖掘到数据库中的知识发现”的数据挖掘[1],用于发现数据中有用的知识。然后在 2001 年,威利安·s·克里夫兰试图将可用的计算能力与数据挖掘结合起来以改进统计分析,开始使用“数据科学”术语[2]。今天,数据科学涵盖了很多领域,包括数据工程师、数据分析、机器学习工程师等等。此外,最*数据科学被称为“21 世纪最性感的工作”。
数据科学家的主要工具当然是数据。然而,几乎每个人都从 Kaggle 获得一些数据,运行一个复杂的模型,如 CNN 和 BOOM。我们有了一位新的数据科学家。在不了解背景以及如何正确理解数据和模型的情况下使用所有这些花哨的工具是浪费时间,或者说对于学习如何使用这些技术来说是恰到好处的。
数据到底是关于什么的?
这打开了一个窗口,让我们在数据问题上更进一步。数据是什么?是关于制作复杂模型的吗?很酷的可视化?写代码?统计分析?特征工程?
数据不是关于机器学习、可视化、统计和争论的。
数据关乎理解。了解问题,以及如何使用数据和您选择的任何工具或技术来解决问题。
理解问题。了解数据。其余的将会流动。
数据科学家的目标不是制造一个好的模型
如果有问题,数据科学家会尝试用机器学习来解决。我们怎么知道他是否成功了?答案可能是使用正确的指标,对吗?然而,我们必须深入挖掘。真正的衡量标准不是精度、召回率和所有这些统计指标。
关键指标是影响力。
作为数据科学家,我们必须利用我们的数据对我们的公司产生尽可能大的影响。这种影响可以是多方面的。这两个是看到影响的一些基本形式。
- 洞察力:提取有用的知识来指导你的项目开发,提供方向。例如,通过对房地产市场数据的探索性分析,您发现大约 80%的买家是男性。然而,他们的妻子最终选择了房子里的大部分东西。该信息有利于将广告导向正确的人。
- 数据产品:开发利用数据提供某种回报(通常是金钱)的产品。例如,可以预测糖尿病人的葡萄糖水*的产品。有了它,这个人就可以利用这些知识在正确的时间进食和使用胰岛素。
我可以使用什么工具来产生影响?
任何,没人在乎。
确定使用哪种技术最重要的是理解数据。那就让数据来说说它是怎么运作的。数据科学家需要知道如何将数据拟合到模型中,而不是将模型拟合到数据中(效果更好的模型)。Rachel Tatman 有一个很好的关于“那么你应该使用什么方法呢?”,她用他的一句话结束了她的演讲:
如果它是愚蠢的,但它是有效的,它就不是愚蠢的。
这意味着,如果我们的模型是简单明了的(就像 90 年代手工建立的规则),并且仍然运行良好,那么它一点也不愚蠢。
然后,让我们想象我构建了一个可以产生巨大影响的应用程序。怎么卖?例如,您正在处理来自您公司的数据集,并且您发现了一个没有人看到的模式。如何呈现给你的团队?
数据叙事
作为数据、叙述和视觉的结合,数据叙事是每个数据科学家在不久的将来都需要的热门新技能之一。
对于需要向他人解释他或她的思路的数据科学家或数据分析师来说,数据故事是一项基本技术,无论他们是否具备技术知识。在那一刻,你的沟通技巧将非常重要。毕竟,没有人喜欢看到一个蹩脚的演示文稿或阅读一篇令人讨厌的文字,对吗?
简而言之,数据故事是解释你做了什么,你是如何做的,以及你为什么这样做的行为,这一切都是为了让你的读者或听众参与进来。
人们听到的是统计数据,感受的却是故事。( 【福布斯】 )
数据故事的目标是讲述你的数据的故事。它是人类对数据的理解。将数据拟人化为生活场景,让别人感同身受地理解数据,而不仅仅是统计。它可能涉及三个关键要素的组合:数据、视觉和叙事。
当叙述与数据相结合时,它有助于向你的观众解释数据中发生了什么,以及为什么某个特定的见解很重要。要深刻理解一部作品,通常需要大量的上下文和注释。当视觉应用于数据时,它们可以启发观众的洞察力,如果没有图表或图形他们是看不到的。如果没有数据可视化的帮助,数据中许多有趣的模式和异常值将隐藏在数据表的行和列中。
Source: Forbes
最后,当叙事和视觉融合时,它们可以吸引甚至娱乐观众。毫无疑问,我们每年在电影上花费数十亿美元,让自己沉浸在不同的生活、世界和冒险中。当您将正确的视觉效果和叙述与正确的数据相结合时,您就有了一个可以影响和推动变化的数据故事。
大多数情况下,你必须使用叙事、视觉和数据来简化复杂的事物。用它来让每个人理解一个模糊的观点,并思考,“我以前怎么没有看到这一点?”。
更好地讲述数据故事的技巧
已经有一些关于数据讲故事技巧的文章和故事。其中一些如下:
[## 带领你的老板踏上数据之旅的 10 种方式
“人们听到的是统计数据,感受的却是故事。”福布斯,2016 年 3 月
towardsdatascience.com](/10-ways-to-take-your-boss-on-a-journey-through-the-data-14a3fdbb3503) [## 掌握数据叙事:创建有说服力的图表的 5 个步骤
数据讲故事是那些“时髦词汇”中的一个,实际上并不是真正的时髦词汇——它反映了一种必要的…
www.crazyegg.com](https://www.crazyegg.com/blog/data-storytelling-5-steps-charts/) [## 更好地讲述数据的 10 个技巧
作者比尔·山德。
medium.com](https://medium.com/@Infogram/10-tips-for-better-data-storytelling-3808d823bde3) [## 来自数百年数据可视化的 7 个数据故事技巧
尽管信息图的复兴引发了它的复兴,但数据可视化并不是什么新鲜事。对于数百个…
www.columnfivemedia.com](https://www.columnfivemedia.com/7-data-storytelling-tips-from-centuries-old-data-visualization)
我想在这里补充最后一点。我相信是最重要的一条。
阅读,很多。
阅读对于理解我们社会的功能和历史至关重要。通过发现新事物来发展我们的思维是至关重要的。此外,当我们谈论想象力和好奇心时,阅读是一个至关重要的方面。
你读得越多,你就越能理解你所读的主题。现在将它与数据科学联系起来,数据就是一切。读者可以更快地学习他所阅读的任何东西的概念。这可以让数据有意义,让数字有必要的背景,这样数字就可以变成想法和见解。
你读得越多,你知道的东西就越多。你学得越多,你去的地方就越多。-苏斯博士
参考
[1]法耶兹,乌萨马,格雷戈里 Piatetsky-夏皮罗,和帕德拉克史密斯。"从数据挖掘到数据库中的知识发现."艾杂志 17,第 3 期(1996):37–37。
[2]William s . Cleveland,“数据科学:扩大统计领域技术领域的行动计划”《国际统计评论》 69,第 1 期(2001 年):第 21–26 页。
[## 数据科学家是思想家
执行与探索及其对您的意义
towardsdatascience.com](/data-scientists-are-thinkers-a36cc186d570)
什么是老师逼?
原文:https://towardsdatascience.com/what-is-teacher-forcing-3da6217fed1c?source=collection_archive---------5-----------------------
训练递归神经网络的常用技术
Photo by Jerry Wang on Unsplash
大量的递归神经网络在自然语言处理(例如在图像字幕、机器翻译中)在训练过程中使用教师强制。尽管老师逼盛行,但大部分文章只是简单描述了它是如何运作的。比如 TensorFlow 关于神经机器翻译的教程关注只说“老师强制是将目标词作为下一个输入传递给解码器的技术。”在这篇文章中,我们将回顾一下老师强迫的细节,并回答一些常见的问题。
教师强制是如何起作用的?
你是否遇到过由多个部分组成的数学考试题,其中(b)部分的计算需要(a)部分的答案,而(c)部分需要(b)部分的答案,等等?我总是格外关注这些问题,因为如果我们(a)部分出错,那么所有后续部分也很可能出错,即使公式和计算是正确的。老师强迫补救如下:在我们获得(a)部分的答案后,老师会将我们的答案与正确答案进行比较,记录(a)部分的分数,并告诉我们正确答案,以便我们可以用它来做(b)部分。
输出序列的递归神经网络的情况非常相似。假设我们想要训练一个图像标题模型,上面图像的真实标题是“两个人在看书”。我们的模型在预测第二个单词时出错,我们在第一个和第二个预测中分别有“Two”和“birds”。
- 如果没有老师的强迫,我们会把“鸟”送回我们的 RNN 去预测第三个单词。假设第三个预测是“飞行”。尽管我们的模型预测“飞行”是有意义的,因为输入是“鸟”,但这与地面事实不同。
- 另一方面,如果我们使用教师强制,我们将在计算并记录第二次预测的损失后,为第三次预测将“人”喂给我们的 RNN。
教师强制的利弊
优点:
用老师逼训练收敛更快。在训练的早期阶段,模型的预测非常糟糕。如果我们不使用老师强制,模型的隐藏状态会被一系列错误预测更新,误差会累积,模型很难从中学习。
缺点:
在推断过程中,由于通常没有实际情况可用,RNN 模型需要将自己之前的预测反馈给自己,以便进行下一次预测。因此,训练和推理之间存在差异,这可能导致模型性能差和不稳定。这在文献中被称为曝光偏差。
实现示例
- TensorFlow:注意看神经机器翻译的“训练”环节
- PyTorch:参见 NLP 的“训练模型”环节从无到有:从序列到序列网络的翻译和注意力
常见问题
问:既然我们通过 RNN 模型传递整个基本事实序列,那么该模型有可能通过简单地记忆基本事实来“作弊”吗?
答:没有。在时间步 t 时,模型的输入是时间步 t - 1 的地面真值,模型的隐藏状态已经被时间步 1 到 t - 2 的地面真值更新。模型永远无法窥视未来。
问:有必要在每个时间步更新损失吗?
答:不。另一种方法是将所有时间步长的预测存储在一个 Python 列表中,然后一次性计算所有损失。
问:老师强制是用在自然语言处理之外吗?
答:是的。它可以用于任何输出序列的模型,例如时间序列预测。
问:老师强制是在递归神经网络之外使用的吗?
答:是的。它用于其他自回归模型,如 Transformer。
进一步阅读
- 已经发明了许多算法来减轻曝光偏差,例如预定采样 [1】和并行预定采样 [3】,教授强制 [5】,以及光束搜索 [2],[6]。
- [4]的结果表明暴露偏差可能不像假设的那样显著。
参考
- 南本吉奥、o .维尼亚尔斯、n .贾伊特利和 n .沙泽尔。递归神经网络序列预测的预定采样 (2015),NeurIPS 2015。
- R.科洛伯特、a .汉南和 g .辛纳伊夫。一种全微分波束搜索解码器 (2019),ICML 2019。
- D.杜克沃斯,a .尼拉坎坦,b .古德里奇,l .凯泽和 s .本吉奥。*行预定抽样 (2019),arXiv。
- T.何,张军,周,格拉斯。量化神经语言生成的暴露偏差 (2019),arXiv。
- A.Lamb、A. Goyal、Y. Zhang、S. Zhang、和 Y. Bengio。强迫教授:训练递归网络的新算法 (2016),NeurIPS 2016。
- 南怀斯曼和拉什。作为波束搜索优化的序列间学习 (2016),EMNLP 2016。
什么是张量框架?TensorFlow + Apache Spark
原文:https://towardsdatascience.com/what-is-tensorframes-tensorflow-apache-spark-a385ec4bc1d5?source=collection_archive---------24-----------------------
首先,什么是张量框架?
TensorFrames 是由 Apache Spark 贡献者创建的开源软件。其函数和参数的命名与 TensorFlow 框架中的相同。它是 Apache Spark 数据帧的 Apache Spark DSL(特定领域语言)包装器。它允许我们用 TensorFlow 功能操作数据帧。而且不,它是而不是 熊猫数据帧,它是基于阿帕奇 Spark 数据帧。
..但是等等,TensorFlow (TF)是什么?
TensorFlow 是一个开源软件库,用于数据流和跨一系列任务的差异化编程。它是一个符号数学库,也用于机器学习应用,如神经网络。
..还有阿帕奇 Spark?
Apache Spark 是一个开源的分布式通用集群计算框架。
关于规模的一句话
今天当我们提到规模时,我们通常会谈到两种选择;水*缩放和垂直缩放。
- 水*刻度 —添加额外的具有大致相同计算能力的机器
- 垂直比例 —为我们目前使用的机器增加更多资源。它可以是从 CPU 升级到 GPU 的处理器、更多内存(RAM)等等。
有了 TensorFrames,我们可以两者兼得,更多的处理器计算能力,更多的机器。在只有 TensorFlow 的情况下,我们通常专注于通过垂直扩展来增加更多功能,现在有了 Apache Spark 支持,我们可以同时进行垂直和水*扩展。但是,我们怎么知道我们实际上需要多少呢?要回答这个问题,我们需要了解应用程序的全部使用情况,并相应地进行规划。
对于每个变化,比如增加一台机器或从 CPU 升级到 GPU,我们都有停机时间。在云中,调整集群大小或增加更多计算能力只需几分钟,而在本地,我们需要添加新机器和升级机器处理器,这可能需要几天,有时甚至几个月。
因此,更灵活的解决方案是公共云。
在下图中,水*缩放是 X 轴,垂直缩放是 Y 轴。
-
- Apache Spark conf 上蒂姆·亨特演示的幻灯片
在开始函数之前,让我们了解一些重要的张量流词汇:
张量
一个静态类型的多维数组,其元素属于泛型类型。
GraphDef
Graph
或Computional Graph
是 TensorFlow 呈现计算的核心概念。当我们使用 TensorFlow 时,我们首先创建自己的Computation Graph
,并将Graph
传递给 TensorFlow。GraphDf
是Graph
的连载版。
操作
对张量执行计算的图形节点。操作是Graph
中的一个节点,它将零个或多个Tensors
(由图中的其他操作产生)作为输入,并产生零个或多个Tensor
作为输出。
身份
当我们想要在设备之间显式传输张量时(例如,从 GPU 到 CPU),使用tf.identity
。该操作将节点添加到图中,当输入和输出的设备不同时,该操作会生成一个副本。
常数
常量有以下参数,可以根据需要调整这些参数以获得所需的函数。它和变量一样,但是它的值不能改变。常数可以是:
value
:输出类型dtype
的常量值(或列表)。dtype
:结果张量的元素类型。shape
:结果张量的可选维度。name
:张量的可选名称。verify_shape
:允许验证值的形状的布尔值。
占位符
为数据分配存储空间(例如,在输入期间为图像像素数据分配存储空间)。初始值不是必需的(但可以设置,见tf.placeholder_with_default
)。相对于变量,你需要声明初始值。\
一些 Apache Spark 词汇
数据帧
这是一个分布式的数据集合,这些数据被组织成命名的列,这些列提供过滤、分组或计算集合的操作。Dataframe 数据通常分布在多台机器上。它可以在内存数据中,也可以在磁盘上。
RelationalGroupedDataset
由 groupBy 、 cube 或 rollup 创建的一组在DataFrame
上聚合的方法。
主要方法是agg
函数,它有多个变量。为了方便起见,该类还包含一些一阶统计量,如mean
、sum
。
现在我们更好地理解了术语,让我们看看功能。
功能— TensorFlow 版本 0.6.0
众所周知,Apache Spark 是一个大规模数据分析*台,与 TensorFlow 一起,我们得到了 TensorFrames,其中包含三类数据操作:
让我们来了解一下每个功能。
-1- Mapping
映射操作将列转换和/或添加到给定的数据帧中。
每个功能都通过两个 API 来访问,一个接收 Operation,另一个接收 DataFrame、GraphDef 和 ShapeDescription。
公开的 API:
映射行
def mapRows(o0: Operation, os: Operation*): DataFrame
对于用户来说,这是更常用的函数,因为没有创建 GraphDef 和 ShapeDescription 对象的直接请求。对于有经验的 TensorFlow 开发人员来说,这种方式更具可读性:
mapRows 接收两个参数 operation 和 operation*,这意味着第二个操作可以是操作的集合。随后,它将它们转换成一个序列,并将其转换成一个图形,它从图形中创建 ShapeDiscription,并将其与数据帧一起发送给一个内部函数。其中它根据图中给出的变换逐行变换分布式数据。图中的所有输入都应该用给定数据帧或常数中的一些数据填充。意思是,我们不能用 null。最后,该函数返回一个带有新模式的新数据帧,该模式将包含原始模式以及与图形输出相对应的新列。ShapeDiscription 提供了输出的形状,它在幕后用于优化和绕过内核的限制。
地图块
执行与MapRows
类似的任务,但是,因为它是针对压缩优化的,所以它在数据块中应用图形转换器,而不是逐行应用。
def mapBlocks(o0: Operation, os: Operation*): DataFrame
经常使用的函数是:
代码示例:我们创建类型为 DataFrame 的 val df ,有两行,一行包含值 1.0,第二行包含值 2.0。列名是 x。
val x 是输出占位符的声明, y 是从 CPU 到 GPU 或从机器到机器传输张量的标识,它接收 val x 作为它的值。
z 是计算函数本身。这里,df.MapBlock
functions 得到两个操作, y 和 z ,并返回一个名为 df2 的新数据帧,多了一列 z 。 z 列是输出中的 x+x. 之和,列 x 是原始值,列 y 是相同值,列 z 是图形的输出。
地图区块规划
这与MapBlock
相同,但是,它从结果数据帧中删除了原始数据帧列。这意味着输出数据帧将只包含计算出的列。
def mapBlocksTrimmed(o0: Operation, os: Operation*): DataFrame
让我们来看看:
代码示例:我们创建一个名为 df 的 DataFrame,其中两行的值分别为 3.0 和 4.0。注意我们创建了一个名为 out 的常数,值为 1.0 和 2.0,这个常数是 TensorFrame dsl 功能,模拟 TensorFlow 功能。然后我们叫df.MapBlocksTrimmed
。输出模式将只包含名为“out”的结果列,在我们的例子中,它只包含常量值 1.0 和 2.0。
重要提示在第一行代码中,我们导入 TesnorFrames dsl,并将其命名为 tf,代表 TensorFlow,我们这样做是因为这是 TesnorFlow 用户过去使用它的方式,并且我们坚持 TensorFlow 的最佳实践。
-2- Reducing
归约操作合并一对或一组行,并将它们转换成一行,然后重复相同的操作,直到剩下一行。在幕后,TensorFrames 通过首先减少每台计算机上的所有行,然后通过网络发送剩余的行来执行最后的减少,从而最大限度地减少了计算机之间的数据传输。
f(f(a, b), c) == f(a, f(b, c))
transforms 函数必须被归类为态射:它们完成的顺序并不重要。在数学术语中,给定一些函数f
和一些函数输入a
、b
、c
,以下必须成立:
通过 Christopher Scherb 映射 reduce 模式
reduce 功能 API,和其他的一样,我们每个功能有 2 个 API,接收操作的那个更直观,但是在 TensorFlow 中没有直接的 reduce rows 操作,而是有很多 reduce 操作,比如tf.math.reduce_sum
和tf.reduce_sum
。
减少行数
该功能使用 TensorFlow 操作将两行合并在一起,直到剩下一行。它接收数据图表、图形和形状描述。
def reduceRows(o0: Operation, os: Operation*): Row
用户界面:
在下一个代码示例中。我们创建一个 DataFrame,在中有一个名为的列和两行。dtype 和 x 的占位符 x1 和 x2——这是 x1 和 x2 的加法运算。reduceRows,返回一个值为 3 的行,该值为 1.0 和 2.0 之和。
减少块
与ReduceRows
的工作原理相同,但是,它是在行的向量上工作,而不是逐行工作。
def reduceBlocks(o0: Operation, os: Operation*): Row
更多使用的功能:
代码示例:这里我们创建一个包含两列的 data frame—key 2和 x 。一个占位符名为 x1 ,一个 reduce_sum 张量流操作名为 x 。reduce 功能根据 reduce_sum 以其命名的所需列返回 DataFrame 中各行的总和,即 x 。
-3- Aggregation
def aggregate(data: RelationalGroupedDataset, graph: GraphDef, shapeHints: ShapeDescription): DataFrame
聚合是 Apache Spark 和 TensorFlow 的额外操作。它不同于 TensorFlow 中的聚合功能,使用 RelationalGroupedDataset。API 功能:
Aggregate 接收一个 RelationalGroupedDataset,这是一个 Apache Spark 对象,它包装数据帧并添加聚合功能、一系列表达式和一个组类型。
聚合函数接收图形和 ShareDescriptiom。它使用分组数据的归约变换将行聚合在一起。当数据已经按键分组时,这很有用。目前,只支持数字数据。
代码示例:在这个示例中,我们有一个包含两列的 DataFrame, key 和 x 。 x1 作为占位符, x 作为名为 x 的 reduce_sum 功能。
使用 groupby 功能,我们按键对行进行分组,之后,我们用操作调用 aggregate 。我们可以在输出中看到,聚合是根据键计算的,对于值为 1 的键,我们接收 2.1 作为列 x 的值,对于值为 2 的键,我们接收 2.0 作为列 x 的值。
张量框架基本过程
在所有 TensorFrames 功能中,数据帧与计算图一起发送。DataFrame 表示分布式数据,这意味着在每台机器上都有一大块数据要经过图形操作/转换。这将发生在每台有相关数据的机器上。钨二进制格式是经过转换的实际二进制内存数据,首先转换到 Apache Spark Java 对象,然后从那里发送到 TensorFlow Jave API 进行图形计算。这都发生在 Spark worker 进程中,Spark Worker 进程可以旋转许多任务,这意味着在内存数据上同时进行各种计算。
值得注意的
- scala 的 DataFrames 目前是 T21 的一个实验版本。
- Scala DSL 只有张量流变换的一个子集。
- TensorFrames 是开源的,可以支持这里。
- Python 是 TensorFlow 支持的第一种客户端语言,目前支持大多数特性。越来越多的功能被转移到 TensorFlow 的核心(用 C++实现),并通过 C API 公开。后来通过其他语言 API,如 Java 和 JavaScript 公开。
- 有兴趣与 Keras 合作吗?查看 Elephas:使用 Keras & Spark 的分布式深度学习。
- 对公共云上的 TensorFrames 项目感兴趣?检查这个和这个。
现在你对 TensorFrames 有了更多的了解,你将如何推进它?
在 Twitter 上关注我,很乐意接受您的话题建议。
ITP 2.1 和 2.2 对你的谷歌分析数据有什么实际影响?(+免费工具)
原文:https://towardsdatascience.com/what-is-the-actual-impact-of-itp-2-1-and-2-2-on-your-google-analytics-data-free-tool-99e42c5978a6?source=collection_archive---------12-----------------------
关于 ITP 2.1 和 2.2 对谷歌分析数据的影响,已经有很多文章发表。这些文章往往停留在理论层面,解释什么是可能是的影响。今天就来点实际的吧。随着 ITP 2.1 和 2.2 的发布,你的谷歌分析数据真正发生了什么变化?让我们找出答案。
理论
谷歌分析依赖于一个 cookie,它是在你第一次访问一个网站时设置的。如果你几天后再次访问同一个网站,同一个 cookie 将确保你被识别为回头客,你的完整旅程开始绘制地图。至少只要你不删除你的 cookies,每两年留在同一个设备上至少访问一次网站。随着 ITP 2.1 的发布,最后一个条件发生了巨大的变化。
当苹果在 2019 年 3 月底发布 Safari 12.1 和 iOS 12.2 时,ITP 2.1 进入了画面。几周后,ITP 2.2 在 iOS 用户中发布。这从两个方面影响了 Google Analytics cookie:
- 谷歌分析 cookie 将在 7 天不活动后被删除(ITP 2.1)。
- 如果访问者来自跨域链接(ITP 2.2),并且只访问一个页面,谷歌分析 cookie 将在 1 天不活动后被删除。
因此,我们现在面临的 cookie 过期时间是 1 到 7 天,而不是两年!这意味着,如果回访者在过去 1 或 7 天内没有访问过您的网站,他/她将不会被识别为回访者。理论上的影响是:新用户的会话增加了,每个用户的旅程缩短了,你的收入来源渠道减少了。
当涉及到你的数据时,让我们来看看这个理论是否正确。
工具:ITP 影响计算器
不要犹豫,使用 ITP 影响计算器 来找出 ITP 2.1 和 2.2 如何影响你的谷歌分析数据。下面你会发现这个工具的输出解释。当然,你也可以不使用工具继续阅读。
您的访问者中有多少人实际上使用了 ITP 2.1 和 2.2 版本的浏览器?
首先,了解实际使用 ITP 2.1 或 2.2 浏览器的访问者数量是很重要的。只有 Safari 12.1 或更高版本具有 ITP 2.1 或 2.2。通过创建这个浏览器和版本的一个片段,你会发现你的访问者何时采用了这个新的浏览器,以及它在你的访问者中的总份额是多少。使用这种浏览器的人越多,ITP 2.1 在你的数据上留下的印记就越多。
The graph on the left shows a timeline of when your visitors have adopted Safari 12.1 (or higher). The scorecards on the right provide insight in the total share of Safari 12.1 (or higher) sessions in the past 30 days.
ITP 如何影响回头客的数量?
新访客还是回头客?这就是问题所在!在 ITP 2.1 中,新用户可能会将更多的会话归类为一个会话。这是因为在过去的 1 或 7 天内没有访问过您的网站的访问者将不再被识别。
要找出您的数据中是否存在这种情况,您可以查看“用户类型”维度,并将其分为两个部分:一部分用于 Safari 12.1 或更高版本的用户,另一部分用于使用任何其他浏览器的访问者。通常,你会发现 Safari 12.1 或更高版本的用户中新访客的数量要高得多。这两者之间的差异有助于了解 ITP 2.1 对数据集中数据的影响。
The pie charts indicate how the amount of new and returning users may have changed. In this example: with ITP 2.1, only 30% can be recognized as a returning user. Among other users, 48% can be recognized as a returning user. This is a difference of no less than 18%
你的访客的旅程长度发生了什么变化?
Google Analytics 用“会话计数”这个维度来跟踪某人访问你的网站的次数。在 ITP 2.1 和 2.2 中,预计无法识别返回用户。结果:它们的会话计数将被重置。换句话说:我们希望会话数只有一个的用户比例更高。通过在谷歌分析或 ITP 影响力计算器中查看这个维度,你会发现与其他浏览器相比,这个差异有多大。
如果你想知道为什么 ITP 影响计算器中提供的百分比加起来不是 100%——我必须称赞你的警觉性!这有两个原因。首先,这是因为“会话计数”维度看起来比计算器中的 30 天更久远。这意味着某人在此期间可能只去过第二次。第二个原因是,这个维度是递增的:在过去的 30 天里,某人可能会有第一次、第二次和第三次访问。因此,百分比显示了在过去 30 天内,有多少用户进行了第一、第二、第三、第四或第五次会话。
The graph shows the percentage of users who with their 1st, 2nd, 3rd, 4th and/or 5th session count. With ITP 90% of the users had their first session in the last 30 days. This is was only 58% among other browsers.
这对您的营销渠道归属意味着什么?
ITP 2.1 和 2.2 对评估不同营销渠道的价值的影响可能是最大的挑战。由于可以识别的用户越少,他们的客户旅程中可以链接的接触点就越少。想象一下这个场景:有人在点击了一个脸书的广告后,第一次用最新版本的 Safari 访问你的网站;8 天后,这个人通过谷歌搜索你的品牌并下订单。在这种情况下,这种交易将只归因于(有机或付费)搜索。引发第一次接触的脸书广告的巨大作用被忽略了。
ITP 影响计算器提供了受 ITP 2.1 和 2.2 影响的收入百分比,这些收入可能归因于错误的渠道和/或不完整的客户旅程。这一估计基于(但略有不同)Paul Koks 的一篇早期文章。
救命!ITP 在很大程度上影响了我的数据,现在呢?
到目前为止,已经提出了一些(技术上具有挑战性且耗时的)解决方法。但是,正如西蒙·阿哈瓦正确指出的那样:“随着 ITP 的变通办法被发明出来,ITP 的新迭代将被引入”。已经成了猫捉老鼠的游戏。在这场游戏中,特别有趣的是,谷歌将来可能会也可能不会为 ITP 找到变通办法。
就目前而言,我认为在 ITP 问题上有两件事很重要:
- 作为分析师、在线营销人员或营销经理:要意识到 ITP 2.1 和 2.2 可能对你的数据产生的影响,以及你能从这些数据中得出什么结论。 ITP 影响计算器让您初步了解您的数据受到了多大的影响。
- 如果可能,尝试在会话范围而不是用户范围内进行分析。在谷歌分析中分析会话仍然是完全可靠的。如果你仍然想在用户层面上进行分析,考虑把 ITP 2.1 和 2.2 浏览器从你的数据集中去掉。
表数据 ML 中最好的入门模型是什么?——从一位高层卡格勒的新书中得到的教训
原文:https://towardsdatascience.com/what-is-the-best-starter-model-in-table-data-ml-lessons-from-a-high-rank-kagglers-new-book-f08b821db797?source=collection_archive---------30-----------------------
《赢得 KAGGLE 的数据分析技术》一书
在 Kaggle 或业务建模中开始建模的提示
Photo by Jon Tyson on Unsplash
这是另一篇文章,介绍了新书“赢得 Kaggle 的数据分析技术”,中介绍的技巧,作者是三位高级 kaggler(不包括我自己,因此这不是个人提升!😃 )
这本书本身的完整目录,见我的其他帖子。
在这篇文章中,我将谈论哪个模型是围绕特性和参数的首选,以及模型集成的其他选项。
拿到数据了😚!我要去做模特😄!但是等等,我能从哪里开始🙄??
在你把你的最终 ML 结果发给你的老板或 Kaggle 的排行榜或其他地方之前,你应该把这些模型和最终分数并排比较,用:
- 他们的超参数完全调整好了,
- 它们的功能被完全设计和利用,和/或
- 这些模型是成套的。
然而,在第一步, 你的问题可能是“好吧,我知道要去哪里,但是我能从哪里开始呢?🤔“玩意儿。
通过建模,普遍的看法是"特征工程最重要。“模型的改变可能也很重要,但不像特征工程那样重要;同样,超参数调整可能会影响模型性能,但对分数影响不大。
所以,我们想决定什么样的特征工程最适合我们的建模,但我们至少需要一些模型来尝试,看看我们制作的特征是否适合进一步发展。那么,这里我们说“从哪里开始呢??😟"
Illustration of modeling cycle
顶级卡格勒人的选择👈🏻是…
首先讲结论,在表格数据分析(记住本书的主要主题是关于表格数据 ML)中,本书建议:
- 从 GBDT 开始 (本文稍后讨论) 、
- 花费最多的时间进行特征工程(主要作者称占总时间的 80%)来查看对 GBDT 预测的影响,
- 不时检查超参数变化的影响,但还没有剧烈调整,
- 根据任务和模型的多样性,考虑神经网络和/或线性模型 (本文稍后讨论)
- 做 ensemble 时,考虑 Kaggle 常用的模型多样性的其他类型模型;kNN,随机森林,极度随机化树(ERT),正则化贪婪森林(RGF),场感知因式分解机(FFM) (本文稍后讨论) ,
- 如果新方法更适合数据和/或任务,可能会改变验证策略。
GBDT 是许多卡格勒人的首选。
对于第一个模型,我们希望它能够快速正确地运行,并成为一个基线模型。
我们不喜欢它需要太多的数据转换、功能工程或超参数调整。
我们也希望它不要花太多时间运行,因为我们将尝试许多不同的输入选项一个接一个。
GBDT 可以跳过其中的任何一个。
我们将在下一节看到更多的细节。
GBDT 是受爱戴的💖这么多,但是为什么呢?
GBDT 是基于决策树的模型。因此,模型训练中的核心行为是将节点分成两个分支。这使得 GBDT:
- ****不需要可变缩放,
- ****不需要缺失值插补(如果变量缺失,分割规则也决定了记录转到哪个节点)。
- 能够通过 标签编码 来处理分类变量(尽管因为 sklearn lightgbm 和 catboost APIs 及其原始包会在发现分类变量是分类变量时自动对其进行编码,但这种优势在实践中可能并不明显)
- ****能够在没有明确交互变量的情况下反映变量交互(这是通过多个不同的具有交互的变量的重复分割来实现的)。
此外,这本书还提到了 GBDT 的好处:
- 良好的预测性能,
- 倾向于提供足够高的性能,而无需强烈的超参数调整,
- 拥有不必要的变量不会对模型性能造成太大的损害,并且
- 能够默认处理稀疏矩阵对象,例如
scipy.sparse
中的csr_matrix
或csc_matrix
。
使用 GBDT,我们可以设置一些默认参数,并可以围绕特征工程进行操作,直到找出下降变量,以及一些并行的超参数调整。
下表显示了书中介绍的 xgboost 的默认超级参数集。
xgboost hyper-parameter defaults introduced in the book.
调优时,一般max_depth
和min_child_weight
是最先照顾的,比如max_depth
= 3~9,min_child_weigh
= 1~5。
接下来,subsamle
,colsample_bytree(_bylevel)
,alpha
,lambda
,gamma
,像subsample
= 0.6~1.0,colsample_bytree
= 0.6~1.0,alpha
= 1e-5,1e-2,0.1,1,100,gamma
= 0.0~0.4。
有三个常用的 GBDT 图书馆:
- xgboost
- lightgbm
- catboost
在这篇文章中,我不会深究每个模型本身。我建议查看一下 t 的牛逼对比帖。
神经网络是🖖的第二选择🏻
在表数据中,广泛使用的神经网络是相当浅的,如 2 至 4 层,也是完全连接的;又名多层感知器(MLP)** 。**
NN 的属性是:
- 需要估算缺失值,
- 更好的模型训练需要缩放,
- 对超参数选择敏感,
- 非线性和可变的相互作用可以在一定程度上得到反映,
- 擅长多类分类,并且
- 使用 GPU 加速。
神经网络不像 GBDT 那样方便,它没有激烈的调整和变量转换,但仍然取决于任务,它比 GBDT 工作得更好。
有针对 MLP 的 sklearn 包装器,但是使用特定的框架在神经网络建模中也很常见。
- 克拉斯
- pytorch
- 张量流
其他型号💮
其他模型可能无法单独击败 GBDT 和 NN 的性能,但可以用于在集合中获得多样性。
线性模型
- 性能较低,但在数据量不足或数据有噪声时可能比其他产品更好,
- 缺少的值需要被估算,
- 需要仔细的变量变换(最小值、最大值、宁滨)和缩放,
- 需要明确地嵌入术语来表示非线性和相互作用,
kNN
随机森林
极度随机化的树【ERT】****
- 类似于随机森林,除了分裂规则的改变。
- 比随机森林更不容易过度适应。
【正规化的贪婪森林】【RGF】****
- 接* GBDT,但使用不同的方法来制作新树和调整现有的树。
(FFM)
- 与推荐任务非常匹配。
- 用于“展示广告挑战赛等 Kaggle 比赛
结论👏
由于其易于处理模型设置和下降精度,GBDT 是在表数据 ML 中开始建模的第一选择。
使用 GBDT,我们可以在特征工程周围玩耍,直到找到运行良好的变量。
神经网络或线性模型可能是一种选择,取决于任务的类型,也将为集合中的模型多样性工作。
kNN,随机森林,ETR,RGF,FFM 也可以考虑模型多样性来集成。
数据工程师和数据科学家的区别是什么
原文:https://towardsdatascience.com/what-is-the-difference-between-a-data-engineer-and-a-data-scientist-a25a10b91d66?source=collection_archive---------6-----------------------
由本·罗戈扬
我们最*在 Reddit 上做了一个 AMA。最常见的问题是数据科学家和数据工程师之间的区别。所以我们想就这个主题发表一篇更深入的文章。
有许多数据专家职位听起来相似,使用相似的工具,因此很难知道每个角色应该做什么。此外,较小的公司可能会限制他们可以雇用多少数据工程师或数据科学家。这意味着很多时候,特定的任务和目标可能会混合在一起。
这使得明确区分这两种角色变得更加困难。因此,我们希望通过讨论数据工程师和数据科学家的不同目标、思维模式、工具和背景来了解这两个职位的不同之处。
在我们讨论这种差异之前,我们想先简单介绍一下。事实是,许多数据科学家和数据工程师将执行其他技术角色的任务。一个数据科学家可能需要开发一个 ET L,一个数据工程师可能需要开发一个 API 和前端。因此,我们在下面指出的区别只是为了明确技术差异在哪里。
by DataCamp
目标
数据工程师的目标更侧重于任务和开发。数据工程师构建自动化系统和模型数据结构,以便有效地处理数据。这意味着数据工程师的目标是创建和开发表格和数据管道以支持分析仪表板和其他数据客户(如数据科学家、分析师和其他工程师)。和大部分工程师差不多。为了能够完成最终任务,需要进行大量的设计、假设、限制和开发。每种设计和解决方案都有自己的局限性,即使它们都能完成最终任务。
相比之下,数据科学家倾向于关注问题。从某种意义上说,他们正在寻找降低成本/增加利润、改善客户体验或提高业务效率的方法。这意味着他们需要问问题,然后回答问题(问一个问题,假设,然后得出结论)。因此,他们需要问这样的问题,什么会影响患者的再入院,如果向客户展示类似于 A vs. B 的 add,客户是否会花费更多,是否有更快的路线来递送包裹?跳过剩余的过程。我们的目标是找到任何问题的答案。这可能是一个最终的结论或更多的问题。在整个过程中,数据科学家分析、收集支持,并得出问题的结论。
工具
这就是事情变得令人困惑的地方。数据科学家和数据工程师通常都依赖 python 和 SQL。然而,这两个技术角色使用这些技能的方式各不相同。这又回到了思维模式的差异。Python 是一种非常健壮的语言,它的库可以帮助管理操作任务和分析任务。
数据科学家将使用像 Pandas 和 Scikit Learn 这样的库,而数据工程师将使用 python 来管理管道。这就是像 Airflow 和 Luigi 这样的库派上用场的地方。
类似地,数据科学家的查询将特别关注(例如,关注问题)。而数据工程师的查询将集中在清理和转换数据上。
现在,两位数据专家都可以使用其他工具。这包括 Tableau 、 Jupyter 笔记本和其他一些。归根结底,是他们如何使用它们造成了这种区别。
背景
现在,当谈到数据工程师和数据科学家的区别时,另一个常见的问题是需要什么背景。
数据工程和数据科学都需要对数据和编程有所了解。即使是有限的范围。然而,有一些超越编程的区别。专门针对数据科学家。由于数据科学家更像是一名研究人员,因此拥有基于研究的背景是一项优势。
这可能是在经济学、心理学、流行病学等领域。将研究背景与 SQL、Python 和良好的商业意识结合起来,你就有了一个数据科学家。现在,这些都不是固定的。事实上,我们遇到过各种学位的数据科学家。大多数雇主更愿意雇佣至少拥有硕士学位的数据科学家,这些数据科学家具有某种技术或数学方面的重点。
数据工程职位通常不需要硕士学位。数据工程更多的是作为一个开发者。这需要更多的实践经验,而不是理论知识。所以获得硕士学位并不能提供相同的价值。
一个例子
假设一家医疗保健公司的主管决定,他们想知道如何减少患者在初次就诊后 30 天内再次入院的数量。从数据的角度来看,有几件事情需要发生。
数据科学家需要弄清楚是什么推动了患者的再次入院。这是他们将试图回答的问题。根据他们得出的结论,他们将与企业合作制定指标和政策,以帮助提高患者的再入院率。
数据工程师将开发表格来帮助数据科学家回答问题,同时开发分析表格来帮助跟踪过去和未来的患者再入院指标。如何创建这些指标将取决于数据科学家得到的答案。
数据科学家和数据工程师有很多不同之处。他们有不同的目标和背景,但这就是同时利用两者的价值所在。事实上,数据工程师更专注于设计健壮的系统,这使得数据科学家可以轻松地查询数据并有效地分析数据。他们的合作伙伴关系为公司带来了数据价值。
我们希望这篇文章是有帮助的!如果您有任何问题,请随时联系我们。
优化和深度学习的区别是什么,为什么要关注
原文:https://towardsdatascience.com/what-is-the-difference-between-optimization-and-deep-learning-and-why-should-you-care-e4dc7c2494fe?source=collection_archive---------7-----------------------
如今,训练神经网络最常见的方法是使用梯度下降或 Adam 之类的变体。梯度下降是一种迭代优化算法,用于寻找函数的最小值。简而言之,在优化问题中,我们对一些度量 P 感兴趣,我们希望找到一个函数(或函数的参数),它可以在一些数据(或分布)d 上最大化(或最小化)这个度量。这听起来就像机器(或深度)学习。我们有一些指标,如准确性,甚至更好的精确度/召回率或 F1 分数,我们有一个可学习参数的模型(我们的网络),我们有我们的数据(训练和测试集)。使用梯度下降,我们正在“搜索”或“优化”我们模型的参数,最终将最大化我们数据的度量(准确性),包括训练集和测试集。
From The general inefficiency of batch training for gradient descent learning
优化和深度学习之间(至少)有两个主要差异,这些差异对于在深度学习中实现更好的结果很重要。
第一个区别是度量函数。在优化中,我们有一个明确定义的指标,我们希望最小化(或最大化)。不幸的是,在深度学习中,我们经常使用不可能或很难优化的指标。例如,在分类问题中,我们可能对模型的“准确性”或“F1 分数”感兴趣。准确性和 f1 分数的问题是,它们不是可微函数,我们不能使用梯度下降法,因为我们不能计算梯度。出于这个原因,我们使用像负对数似然(或交叉熵)这样的代理指标,希望最小化代理函数将最大化我们的原始指标。那些代理指标并不总是坏的,可能有一些优点,但是我们需要记住我们关心的真正价值,而不是代理指标。
确保我们关心原始度量的方法之一是使用提前停止。每一个时期,我们都使用一些验证集上的原始 metic(精确度或 f1 分数)来评估我们的模型,一旦我们开始过度拟合,就停止训练。为了更好地理解我们模型的性能,打印每个时期的精度(或任何其他度量)也是一个好的实践。
第二个重要的区别是数据。在优化中,我们只关心手头的数据。我们知道找到最大值将是我们问题的最佳解决方案。在深度学习中,我们最关心的是泛化,即我们没有的数据。这意味着,即使我们找到了我们拥有的数据(训练集)的最大(或最小)值,我们仍然可能在我们没有的数据上得到糟糕的结果。把我们的数据拆分成不同的部分,把测试集当成“我们没有的数据”,这一点非常重要。我们不能根据测试集做出任何决定。为了做出关于超参数、模型架构或早期停止标准的决策,我们可以使用验证集,但不能使用测试集。
这还没有结束。我们通过将参数推向“正确”的方向,使用梯度下降来训练我们的模型。但是什么是“对”呢?它是适用于所有数据还是仅适用于我们的训练集?例如,当我们选择批量时,这是相关的。有些人可能会声称,通过使用整个训练数据(所谓的批量梯度下降),我们将获得“真正的”梯度。但这只适用于我们现有的数据。为了将我们的模型推向“正确”的方向,我们需要*似我们没有的数据的梯度。这可以通过使用更小的批量来实现(所谓的小批量或随机梯度下降)。这篇论文表明,只使用一个批量就可以达到最好的结果(有时称为在线培训)。通过使用较小的批量,我们在梯度中引入了噪声,并可以提高泛化能力和减少过拟合。下表显示了在 20 多个数据集上“批处理”与“在线”训练的性能。我们可以看到,*均而言,“在线”更好。
From The general inefficiency of batch training for gradient descent learning
机器学习问题有时被称为优化问题。了解差异并解决它们是很重要的。
参考资料:伊恩·古德菲勒和约舒阿·本吉奥的《深度学习书》
2020 年 AI 对 SEO 有什么影响
原文:https://towardsdatascience.com/what-is-the-impact-of-ai-on-seo-in-2020-10e20a68cb90?source=collection_archive---------38-----------------------
从简单的桌面网站优化到复杂且不断发展的内容增强过程,搜索引擎优化在过去十年中经历了各种变化。虽然有些方面从未改变,如关键字和元标签优化和链接建设,但 SEO 在移动优化、用户体验和社交媒体营销方面发展得更快。
但当谷歌在 2016 年推出 RankBrain 时,一个巨大的变化引起了人们的注意。RankBrain 使用机器学习算法来识别模式和桶数据,这个过程导致揭示了一个分析新的谷歌搜索的新系统。
从那以后,随着人工智能和机器学习算法在提高搜索内容的相关性方面取得了巨大的进步,SEO 发生了很大的变化。在即将到来的 2020 年,人工智能很有可能通过视频、图像、语音搜索和预先训练的模型来影响 SEO 的未来。
人工智能的影响[专家意见]
让我们再听听专家们的看法-
Signity Solutions
1.拉里·金—手机钥匙的创始人兼首席执行官
随着 AI 的必然推进,将 AI 纳入营销策略的改革已经成为每一个营销者的必然。
人工智能工具,如人工智能聊天工具(https://mobilemonkey.com/chatbots)及其执行多种功能和分析大量数据的能力,一直在塑造 SEO 景观,并正在进入主流营销。
最重要的是,人工智能工具还将有助于改善关键词研究方法,以实现更好的内容策略,为 SEO 团队提供更强大的分析和报告系统,以及更智能的个性化。
早期采用者肯定会收获人工智能的好处。
2.道恩·安德森——贝蒂公司的总经理
接下来,我们有请 Bertey 董事总经理 Dawn Anderso,他是国际 SEO 和数字战略顾问、演讲者、培训师和讲师。
2020 年,人工智能对 SEO 的影响远没有你想象的那么大。人工智能和机器学习在实践中的应用比理论上少得多。虽然在搜索排名和分类领域会有人工智能和机器学习的元素,例如,在 Google BERT、Elmo 和 BERT 的各种后代中,在遗留系统中实施巨大变化的实践是很成问题的,需要时间。虽然发展速度在加快,但机器学习面临的挑战并不小,仍有许多未解决的问题。我们可以把它比作这个。如果我们制造了一架超音速飞机,这并不意味着我们放弃所有其他的飞机,这些飞机在停产后仍然运行良好。
3.伊莱贾·马塞克-凯利——强大外联的创始人
它在这里。这一刻我们都在等待 5d 的到来…奇点。当人工智能成为我们的霸主的时候!
哦,等等。现在才 2020 年。而我们说的只是 SEO!
总的来说,我不认为人工智能会对 2020 年的行业产生巨大影响。不管我们使用什么样的搜索引擎优化工具,谷歌仍然会优先为搜索者提供优秀的内容和无缝的 UX。
也就是说,我确实认为在 2020 年,我们将经历人工智能技术的出现和普及,最终将对我们的工作产生巨大影响。即使在 2019 年,我认为至少有三个领域的人工智能技术正在改变我们处理 SEO 的方式:
- 人工智能搜索
- 人工智能内容写作
- 人工智能技术页面分析
有很多有趣的公司在这些领域开展工作。作为一名作家/内容创作者,我怀疑人工智能能否在 2020 年前创造出任何有实质内容的东西。然而,作为一名数字营销人员,我对这里的潜力感到兴奋。
可能变得真正奇怪的是这些不同的元素是如何相互作用和协同工作的。如果我们有人工智能创造的内容,这些内容通过人工智能的页面分析进行优化,并通过人工智能支持的搜索发现——我想知道,我们人类会留下什么样的体验?
无论如何,2020 年仍然需要人类的投入。理想情况下,这意味着我们可以更快、更有效地完成工作。
现实将会如何,还有待观察…
4.山姆·赫利——OPTIM-EYEZD 董事总经理
我不相信这是 2020 年 AI 影响的问题;我们已经置身于它全能的力量和荣耀之中了!
这项技术只会继续扰乱搜索引擎优化的方方面面:
从谷歌不断发展的算法(RankBrain 是三大排名因素之一),到语音搜索(目前约占所有搜索的 20%),到视觉搜索(Pinterest 首席执行官本·希伯尔曼表示,视觉搜索将完全取代关键词),到今天我们可用的一系列人工智能驱动的搜索引擎优化工具(WordLift 和 Acrolinx,仅举几个例子)——这是绝对不可否认的。
未来就是现在。
山姆·赫尔利是一位横向思维、以人为本的数字营销人员,在代理和客户方面都有丰富的经验。他现在经营着自己的全球个人品牌和影响力营销公司:OPTIM-EYEZ。
在 Twitter 和 LinkedIn 上找到大量关于创业和营销的有用资料!
5.奥米西多——佳能欧洲公司高级技术 SEO
随着网络上的竞争对手越来越多,影响搜索算法的因素变得越来越复杂。
因此,一方面,谷歌正在使用人工智能(准确地说,我们称之为机器学习的人工智能的一部分)通过模仿人类行为来更好地理解“搜索意图”。因此,人工智能将改变 2020 年及以后的 SEO 格局,将重点转移到用户行为上。
另一方面,SEO(数字营销人员)已经在使用人工智能(数据挖掘、机器学习)来分析历史数据,以预测未来趋势。再次强调,焦点是人类行为,所以我想我们都在朝着“人类行为优先”的方向前进。
6.Amit Dua—Signity Solutions 的首席执行官
到 2020 年,人工智能将使数字营销变得更加强大和有效。它将改变目标营销的说服因素,从而导致基于转换的营销。十年来,有人分析说,为数字广告收集的数据不准确,也不狭窄。自从数字营销进入该行业以来,据监测,100 个用户中有 80 个因为任何原因被错误地锁定,无论是细分还是人口统计。在这 20 个国家中,这种转变根本没有获利。
这就是人工智能将改变事情的地方——人工智能支持的数据分析有能力向用户正确地提出产品建议。因为所有被选择的用户将根据他们先前的基于决策的数据被过滤,使得信息更加真实和准确。人工智能的另一个好处是,人工智能显示的所有见解都是易于理解的形式。
7.马尔哈尔·巴莱——全球科技巨头的营销主管
我相信在搜索引擎优化中总是有一定程度的人工智能。谷歌一直表示,他们的算法足够智能,可以识别垃圾邮件活动,并将继续改进这一点。像往常一样,在 2020 年,谷歌会希望你继续在他们的*台上搜索,并希望你在这个*台上花更多的时间。它会找到像移动优先索引、特色片段、本地列表、个性化等方式。以确保您在*台上停留更长时间,并将利用人工智能来实现其目标。
鉴于人工智能的能力,我们将看到更多个性化的结果,取决于设备、位置、时间等。2020 年谷歌快乐!!
8.Nathan Gotch —创始人— Gotch SEO,LLC
人工智能会抢走我们所有的工作。开个玩笑,但是真的有机会和它一起工作并取得更好的结果。
我们将从人工智能中看到的最大“影响”将在谷歌这边。谷歌的最终目标完全依赖人工智能来确定他们的 SERPs。这是很远的路。但是,如果他们的 Rankbrain 算法(AI)在挑选 serp 方面比人类更好,他们就可以更有利可图,这主要是因为他们只需要从事 AI 工作的人,而不是从事 serp 工作的人。
我在这里有点超前,但我确实相信这是他们的长期目标。
从 SEO 专家的角度来看,开发带有人工智能层的软件可以提高效率。例如,如果人工智能可以完成一些更*凡的搜索引擎优化任务,如关键词研究,这将是巨大的。这将允许更多的搜索引擎优化(内容,外联等)的创造性方面的重点。),这会产生更好的结果。也就是说,人工智能不会对 2020 年的 SEO 产生巨大影响,因为还有很多工作要做。但是它正在到达那里。
9.塞缪尔·施密特——数字解决方案专家和 thruuu 的创始人
人工智能每年都越来越多地出现在数字营销领域,并帮助营销专业人士从数据中获得洞察力。
通过 CRM 或营销自动化等关键营销技术,人工智能、机器学习或其他预测分析功能已经可供营销人员使用。
SEO 不会落后,人工智能提供的高级分析能力将有助于获得客户和提高漏斗顶端的努力。
SEO 过程中涉及到几个活动。它从分析用户的意图和竞争策略开始,产生相关的内容。那么 SEO 的一个重要部分就是监控结果,测试新方法,学习和重复。
在人工智能和机器学习模型的支持下,大多数这些活动都可以自动化和规模化。
人工智能可以帮助 SEO 日常工作的一些场景:
客户意图和竞争分析:自动分析有机搜索和竞争执行内容,以确定差距和关键词机会
SERP 分析:监控目标关键字的 SERP,以确定趋势并洞察要采取的行动
自动化搜索引擎优化实验和网站性能:人工智能模型可以在网站的各个页面上自动应用更改,以增加有机覆盖范围和网站流量。
10.查德·m·克拉布特里——主编——卡瑞尔·卡尔玛
人工智能在 2020 年对 SEO 的影响肯定会与它迄今为止的影响类似——只是更加显著和重要。人工智能已经是谷歌算法的一个主要部分,它有能力识别黑帽 SEO 和其他过时的技术,如关键词填充。事实是,人工智能将继续成为搜索引擎优化的主要因素。幸运的是,SEMrush、Ahrefs 和 Moz 等工具走在了人工智能游戏的前面,已经提供了许多有助于在人工智能和机器学习时代优化 SEO 的功能。
11.库尔旺特·凪良—公司创始人兼首席执行官
回到 2015 年,当 RankBrain 推出时,SEO 行业受到了震动。每个论坛和网站都在谈论它。虽然早在 2015 年,我们还无法消化 SEO 中的 AI,但现在它已经成为主流。谷歌正在使其知识图和排名算法变得如此强大,以至于它都是关于人工智能的。
从我的角度来看,人工智能将为 SEO 专家带来更多令人敬畏的想法,而不是将它们向后推。
我相信互联网一定是一个很棒的地方,在那里我的祖父和我的孩子们可以获得正确的信息。
毫无疑问,谷歌搜索引擎优化人工智能的这一重大变化将会扰乱搜索引擎优化从业者,因为在 2012 年曾经奏效的反向链接或关键字填充正在慢慢消亡。但另一方面,对每个人来说,谷歌将是一个比以往任何时候都更好的地方。
我个人认为 SEO AI 是一个积极的信号,它将激励内容创作者创造更多令人敬畏的内容,为人们的生活增添价值。
12.肖恩·斯—SEO 黑客创始人兼 CEO
“从历史上来说,谷歌一直在进行不同的实验,将人工智能应用于他们的搜索算法。去年 2015 年,他们发布了“Rankbrain”,这是一种帮助他们处理数百万搜索结果的算法。甚至谷歌的联合创始人之一谢尔盖·布林(Sergey Brin)也表达了对人工智能的希望和兴趣。
这意味着,作为 SEO,我们需要熟悉或者至少理解谷歌如何在搜索过程中使用人工智能。我相信 Rankbrain 只是一个开始,随着时间的推移,他们也在慢慢改进他们的 AI 应用。所以,当他们在搜索过程中慢慢推出人工智能,影响我们努力工作的结果时,我们需要做好准备。2020 年与 2019 年不会有太大不同,因为人工智能的使用不会在一年内发生。会有一些小的算法更新,但完全由人工智能驱动的搜索还不太可行。我很兴奋地看到谷歌将如何利用人工智能来改善搜索行业——如果他们能够改善它,那么搜索将获得突飞猛进的进步。"
13.OnCrawl 的内容经理 Rebecca Berbel
“2020 年的人工智能看起来会像 2019 年的人工智能……打了类固醇。搜索引擎已经开始使用人工智能来确定用户的意思和需求。我们将继续看到更频繁,更不透明的核心算法更新,而没有真正的最佳实践来维护网站排名。这些更新将帮助搜索引擎人工智能处理抽象概念,如“质量”,纠正偏见,并解决非英语市场。2020 年,人工智能还将带来更多个性化的搜索,使不同用户的 SERPs 看起来越来越不同。
由于 SEO 看不到排名算法是如何工作的,也看不到每个用户是如何看到 SERPs 的,2020 年很可能是未来许多年中的第一个“数据年”。数据将帮助我们超越页面排名因素的列表,进入搜索引擎人工智能的思维。SEO 将需要使用商业智能*台来组合来自许多来源的数据——从 Power BI 等广泛的解决方案到 OnCrawl 等面向 SEO 的解决方案——因为 SEO 在不同的可测量数据之间运行自己的相关性研究。2020 年大概会是技术 SEO 的好年景!"
14.Jean-Christophe choui nard—魁北克数字营销专家| jcchouinard
“机器学习和人工智能已经塑造了 SEO 的日常工作。谷歌的排名已经被反复测试,试图模拟用户的决策过程。典型的 SEO 策略开始变得不那么可靠,我们全球 SEO 知识的基础变得越来越模糊。我不是 AI 专家,但我会这么说。机器学习将帮助 SEO 摆脱重复性任务,如关键词研究,因此他们可以专注于更具战略性的任务。2020 年似乎还为时过早,人工智能将成为主要的内容创造者,但我们应该开始看到人工智能驱动的内容排名为低研究内容,如每日体育新闻。
15.蒂姆·休斯 —首席执行官&数字领导协会的联合创始人
SEO 将在未来几年经历巨大的变化,因为 Goggle 正面临巨大的竞争压力。
首先,我们使用搜索的成熟度在不断变化和提高。例如,研究表明,我们不会点击链接,并倾向于在搜索中忽略任何付费媒体。这意味着公司必须咬紧牙关,走出一条赚取媒体的道路。
第二个影响是,谷歌必须改变技术,努力确保搜索者获得最佳的客户体验;此外,谷歌将努力让搜索者在*台上停留更长时间。
虽然我们曾经说过每个公司都会有一个网站,但我不认为可以说每个公司都会有人工智能。谷歌必须从搜索中去掉一些重担,让搜索变得更容易,为搜索者提供他们想要的答案和他们想要的预测。
16.贾尼斯·沃尔德,博客作者,博客蔻驰,自由撰稿人
谷歌的算法总是在变。SEO 也会随之改变。人工智能从何而来?谷歌的人工智能试图确定用户搜索查询的含义,以快速提供准确的答案。
因此,搜索引擎营销人员需要改变他们的做法,这样他们的网页内容就会出现在谷歌的 SERPs 中。
几年前,人们可以输入很多关键词,然后期待大量的搜索流量。
现在,网站创建者需要输入他们的关键词,所以他们会出现在查询中。当然,这就是语音搜索的用武之地。
随着语音搜索的兴起,人们在手机上口述他们的查询;关键字将变得更长,并以“如何”开始,因为这是用户如何表达他们的查询…“我如何…”
17.UX 长尾公司的市场总监杰夫·多伊奇
人工智能将帮助公司在 2020 年为他们的网站带来更多的长尾 SEO 流量。在今天的 SEO 中,最容易挂掉的果实是那些在本地每月搜索中不到 250 个精确匹配的关键字,并且是 4+个单词。这些搜索有更高的购买意向,因此有转化的潜力。AI 可以在你的 feed 中匹配这些关键字的产品,并构建无头商业页面,只显示与搜索相关的确切产品。AI 还可以在内部页面之间做更好的上下文链接,可以在 Google 的第 1 页对那些长尾登陆页面进行排名,而不需要建立外部的入站反向链接。长尾 UX 已经提出了一个解决这个问题的方法,并且正在寻找对这个领域感兴趣的 SEO 和 SEM 专业人士的反馈。
18.Juan Merodio 博客作者,演讲者,营销顾问
“如果我们考虑 2020 年的搜索引擎优化会是什么样子,我会说更个性化,像播客一样有新元素。零点击现象正在谷歌上发生,因为在谷歌上发生的大约 50%的搜索停留在谷歌上,而不是将用户导向外部网络。
总而言之,如果你想在 2020 年成为谷歌的优秀排名者,就应该制作一个视频,录制一个播客,并根据你的买家角色需求制定一个强大的内容策略。"
19.Jitendra vas Wani的数字营销顾问 BloggerIdeas
人工智能对搜索引擎优化的影响已经动摇了许多营销人员,现在谷歌每天都在发布更新,谷歌现在越来越难获得排名。数字营销人员现在必须从基于关键词的内容转向与概念相关的内容。因为谷歌试图更好地理解用户意图,他们想给用户最好的体验。随着人工智能的减少,blackhat SEO 将会起作用,PBN 的可能会起作用,这完全取决于个人经验水*,但肯定的是,许多营销人员受到了谷歌 PBN 更新的严重打击。聊天机器人将被许多电子商务企业使用,因为它可以很好地处理支持查询,帮助用户获得最佳结果。谷歌人工智能现在能够智能地理解图像和视频等视觉内容的价值。现在他们想要更多的视觉内容,因为用户对视觉内容的关注度非常高。不要忘记通过关注主要关键词来优化你的视频和图片。这是 2019 年 AI 冲击搜索最简单有效的策略。
20.Dan Willis 关系营销顾问,千禧一代主题演讲人
随着人工智能改善“欺骗”,一种算法将被证明几乎是不可能的。停止尝试。事实是,这对于内容营销和 SEO 整体来说是个好消息。你将不再被玩算法游戏所困扰,相反,你现在将只专注于创建教育和通知你的观众的内容,而人工智能将完成剩下的工作,以确保内容出现在想要和需要看到它的人面前!
21.Level343.com 管理合伙人加布里埃拉·桑尼诺
作为一名语言学家和一名在国际市场工作的 SEO,我只能看到人工智能的积极影响。我能看到的最大影响是我们处理数据的方式。如你所知,营销工作的成功需要良好的数据,而人工智能可以帮助我们实现这一目标。
我们处理多种语言和地点。尤其是现在,这已经超越了搜索引擎优化,成为了政府问题。想想 GDPR、英国和欧盟的广告法规等。随着人工智能变得更好,我们将能够使用它更容易地弥合特定国家的法规、目标语言、目标术语等之间的差距。
我们肯定可以使用人工智能来收集数据,并推断出关于我们受众的信息,帮助我们建立买家角色。虽然现在这是可能的,但我认为目前这是一项更加手工的活动。聚合和外推的数据可以帮助我们获得更好的营销数据,人工智能可以帮助进行更强有力的活动。我希望看到一个我们可以使用动态信息的人工智能*台——插入我们的活动数据,并估计它将在流量、排名和收入方面带来的变化。我们现在可以用 SEMrush 和其他工具做一些事情,但是潜力要大得多。
我仍然认为我们离取代营销人员还很远。我不认为营销活动应该完全委托给一台机器,不管这台机器有多复杂。然而,我确实预见到人工智能将成为一只更坚定的援助之手,帮助我们找出我们应该在哪些方面努力,以获得更好、更有针对性的结果。
22.Lisa——社交媒体营销人员、顾问、博客作者
我相信 AI 在 2020 年将会有一些 SEO 的显著形象。关键字填充和黑帽 SEO 的旧时代已经过去了。搜索引擎现在知道我们在做什么以及做了多久。他们知道我们在他们的引擎和社交媒体网站上搜索什么。他们可以利用这一点,每天实时向我们投放广告。使得营销更有针对性。人工智能将真正接管搜索引擎优化和数字营销世界。它已经在 2019 年开始了。
Lisa 喜欢通过社交媒体、博客和 SEO 的内容营销来帮助他人在网上发展。如果你不能与他人分享,知识有什么用?她在营销/广告方面有 30 多年的经验,在内容营销、社交媒体、博客和 SEO 方面有 8 年的经验。看看她最新的电子书,“如何在推特上发微博和发展”,现在在亚马逊上。
23.Tadeusz Szewczyk—on react的博客作者、社交媒体经理
我们至少从 2015 年就知道谷歌名为 RankBrain 的人工智能用于独特的搜索查询,即以前从未在谷歌上问过或搜索过的问题或关键短语。
随着语音搜索在手机助手和智能音箱上的使用越来越多,我们可以有把握地假设这些独特问题的数量将保持高水*,甚至会增长。
谷歌越适应这种晦涩难懂的搜索,用户就会越期待它们得到回答,这样的查询也会变得越独特。
因此,简单的一个词搜索的时代可能已经结束。人们将越来越多地要求复杂问题的正确答案。我准备为内容的广度进行优化,而不仅仅是关注流行或金钱关键词的几个页面。
此外,谷歌似乎也使用人工智能来完善所有其他搜索,所以即使你更喜欢关注宽泛的术语,你也必须确保你的内容反映了用户的意图,并且是高质量的。
为什么?谷歌的人工智能可以根据参与度指标注意到你的内容没有兑现承诺,因此在未来类似的查询中,它的排名会更低。
24.温斯顿·伯顿 —缩写为 SEO 的副总裁
从数据角度来看,人工智能将通过分析和谷歌搜索控制台对 SEO 产生最大的影响,在 2020 年看到最大的变化。基于几个不同的因素,谷歌知道哪些页面应该得到奖励(第一页排名),但最终的决定将来自最终用户数据,你根本无法自动化,因为这些信息来自人类,如果人类喜欢这些内容,消费它,并发现它有用,这是谷歌提供基于查询的最佳结果的关键。
温斯顿伯顿是一个搜索引擎优化和数字营销专家,有超过 12 年的经验。Winston 目前是 Acronym 的副总裁兼 SEO,Acronym 是一家基于意图的数字营销机构。之前,Winston 是 Havas Media 的 SEO 副总裁,建立了 SEO 实践。他的经验包括企业品牌,包括马克·雅可布,富达,SAP,Scotts,Dish 和许多其他品牌。
25.丹尼尔·肯普——Quuu.co 联合创始人&首席执行官
人工智能将在 2020 年及其后几年对 SEO 产生巨大影响。通过使用包含人工智能的*台和应用程序,我们将能够精确定位和识别特定的搜索词,这将增加我们的流量并提高参与度。通过利用人工智能,我们将能够向用户提供有针对性的个性化内容;这将允许公司创建包含动态内容的动态登录页面,更有效地抓住用户的注意力。
在 Quuu,我们使用一个名为 Alli AI 的应用程序;这个应用程序帮助我们预测趋势,并向我们展示我们网站上的最佳优化关键词。该应用程序为我们设定了目标和指标,让我们能够简化我们的搜索引擎优化策略;在过去的几个月里,拥有这个人工智能应用程序帮助我们提高了搜索引擎优化。我很高兴看到更多像这样的应用程序出现,并在 2020 年成为 SEO 市场的自然组成部分。
26.安基塔·戈海因·达尔米亚 —数字营销策略师
人工智能已经对 SEO 产生了相当大的影响,特别是聊天机器人和工具,如 Grammarly,CoSchedule,Answer Public,Ubersuggest 等。还有像 IBM Watson Analytics for Social Media 这样的工具,可以帮助你了解你的受众在社交媒体上谈论什么,从而让你了解如何更好地迎合你的受众。利用这些见解,建立买家角色以及设计一个具有智能登录页面的更好的网站变得非常容易。随着我们迈向 2020 年,所有这些只会变得更好,特别是语音搜索、具有更强大情感分析的数据分析、为客户提供更好智能个性化的预测分析等功能。就个人而言,我对 IBM 下一步将推出什么来帮助像我这样的数字营销人员感到兴奋。
希望你喜欢它🙂
安基塔是 AnksImage.comT2 的数字营销人员、作家、培训师和品牌顾问。她的使命是帮助品牌提供高质量的无摩擦客户体验,以便在数字世界中赢得业务。她提供网页设计、内容写作、搜索引擎优化和品牌服务。她已经为 RT Media(中国)杂志和网站撰写数字营销文章超过 4 年。请联系 agd@anksimage.com 的她,了解更多关于 Ankitaa 如何发展您的业务的信息。
27.菲利普·威吉斯——作家、博客写手、编辑
刚刚过去的一年,甚至今年和明年无疑是移动世界的一年!
是的,大部分搜索是通过手机完成的。正如谷歌所坚持的,移动友好的网页将会有巨大的增长,在未来的一年,毫无疑问将会是移动网页的一年。因为这个行业的技术也在快速发展,人工智能在移动语音搜索中发挥着重要作用。最*的一项调查表明,50+的搜索是通过语音搜索完成的。
像谷歌这样的搜索引擎现在非常重视语音搜索优化。有趣的是,老式的文本输入搜索方式将会过时,因为语音搜索会在第一次搜索中给出准确的答案,换句话说,你不需要在第一、第二或第三页滚动列表。相反,你会在最上面的第一页得到准确的搜索结果。这是因为人工智能的影响或魔法。简而言之,AI 在 2020 年及以后的 SEO 中扮演着至关重要的角色。
28.Ashok Sharma —数字战略家
人工智能(AI)正在成为当今和 2020 年数字营销的最大趋势之一。
人工智能——特别是机器学习——已经成为搜索引擎如何对页面进行排名的关键组成部分。这意味着在优化搜索时理解人工智能很重要。
随着搜索引擎在为用户识别关键词填充、无关的反向链接和优质内容方面变得越来越好,营销人员不得不使用人工智能来满足搜索引擎的要求。
然而,虽然按照 SEO 规则进行游戏是必要的,但使用人工智能来成功进行 SEO 不仅会给你更大的机会来提高你的页面排名,而且还会让你开发出更有凝聚力的策略和更好的内容。
像谷歌这样的搜索引擎正在更多地利用机器学习和人工智能来提供更清晰的结果。
例如,到 2020 年,估计 50%的搜索将是基于语音的。谷歌理解语音搜索的兴起,并配备了谷歌助手,以更好地理解自然对话。
在许多方面,像谷歌这样的搜索引擎正在更多地利用机器学习和人工智能来提供更清晰的结果。他们为消费者提供各种渠道来寻找他们需要的东西。
29. Salil Attri —数字营销经理
随着技术的不断发展,人工智能将在未来一年在搜索结果方面取得更多成果。综合来看,iOS、Android 和 Windows 三大*台上的语音助手;通过机器学习来处理对局部以及全局结果的搜索查询。我们甚至在谷歌和许多其他搜索引擎上看到一个语音搜索选项。自从谷歌推出名为“Rankbrain”的人工智能算法以来,随着它学习用户行为模式,它精确地提供 SERPs 和丰富结果的方式有了巨大的改进。
谈到搜索引擎优化监控中使用的工具,它们肯定有助于企业提高网站性能。怎么会?嗯,他们的爬虫使用一组可编程的机器代码来检测谷歌搜索参数的变化、算法更新、索引变化、服务器响应等。一旦他们获取并验证了记录中的数据,就会向用户提供建议,创建一个充满优化想法的房间,并对其进行处理,以提高他们的可见性得分。人工智能为大量资源开辟了一条道路,从创建内容到获得特定业务的投资回报,人工智能的用途非常广泛。
与谷歌上搜索的每个关键词相关的常见问题是人工智能帮助用户获得关于查询和相关术语的每一个可能信息的明显例子。
30.吉姆·斯图亚特首席执行官斯图尔特媒体
随着谷歌增加对人工智能的使用,它对优质数据的依赖也在增加。SEO 可以对许多渠道产生影响,而不仅仅是有机渠道,因为它在技术 SEO 上加倍努力。大家都知道丰富的片段对有机搜索流量的帮助有多大。很多网站所有者不明白的是,改进结构化数据可以极大地改善动态搜索广告活动。类似地,通过从索引中删除内部重复项,可以提高购物活动的性能。人工智能正在渗透整个谷歌,随着最*推出的“从谷歌购买”零售商可以通过关注技术搜索引擎优化获得很多。
31.乔希·斯皮克——搜索引擎优化内容策略师
我会寻找更多的网站,根据你以前的搜索历史或与网站的互动来提供定制的内容。内容管理者将不必为读者手动计算“下一步是什么”;人工智能将提供这些内容。
32.杰卡拉姆——数字营销策略师
SEO 中的人工智能将成为未来几年的必然趋势。目前,几家公司正在使用人工智能为他们的客户提供个性化和独特的体验。通过这种方式,谷歌利用人工智能为其用户提供卓越的搜索引擎结果。语音搜索引擎、聊天机器人和关键词是人工智能在搜索引擎优化领域使用的技术。因此,随着人工智能趋势的兴起,专家可以很容易地预测人工智能在搜索引擎优化中的作用,以对网页进行分类并确定它们的位置。此外,在搜索引擎优化中使用 AI 不仅可以提供更好的方法来提高您的搜索引擎的可见性,还可以创建更一致的策略和更优秀的内容。基于人工智能的当前部署和未来预测,对搜索引擎优化的影响预计会影响:
- 洞察力和技巧
- 自动化工作流工具
- 个性化
最后的想法
正如你所读到的,人工智能对 SEO 的影响将会发生很多变化,除非你了解人工智能的基本概念,否则你无法继续进行网站优化。此外,这是一个正确的时间来刷你的数字营销策略,以满足新的需求。
所以,这就是我们的总结,我们希望你从这里得到一些好的东西。
原载于 2019 年 12 月 16 日 重大解决方案 。
NLP 的下一个范例是什么?
原文:https://towardsdatascience.com/what-is-the-next-paradigm-in-nlp-9df7fcd2919a?source=collection_archive---------25-----------------------
A Tunnel of Countless Books. If we can train a machine learning model on these books, could we one day hope it could create just as many?
看诗歌和散文的内容创作
如果你曾经与 Alexa、Cortana、谷歌或 Siri 等用户助手互动过,你可能会对对话留下深刻印象。这些助手可以做很多令人惊讶的事情,并推断出你的语音输入。每个助手都有其优点和缺点,但所有助手,以及其他类型的基于文本的 NLP 人工智能,如聊天机器人和客户服务机器人,往往会随着对话的继续而分崩离析。
当前的 NLP 机器学习在一些事情上很棒,在其他事情上很好,在扩展的上下文交换的情况下很差。机器逻辑非常擅长检测关键词和词性,因此可以识别垃圾邮件和一般情绪。机器不擅长长时间的交流,因为推断单词之间的意义和关系,从而推断想法,对于当前的机器学习模型来说,成为越来越难以解决的问题。但是为什么这个问题对于机器逻辑来说这么难呢?
首先,给定内容创建的预期应用,无论是在长的复杂对话中还是在创造性写作中,当前的机器学习工具是什么?我想特别关注后一种应用,即机器学习在诗歌和散文形式的创造性写作中的应用。
我们的模范诗人
一个机器学习模型可以在样本诗歌的数据集上训练,以创建自己的新诗歌。根据模型和诗歌数据的数量,结果并不总是很有意义或发人深省。然而,诗歌的媒介可能非常抽象,因此,我们的模型可能产生的一些不自然的句子在某种程度上被掩盖了。
一种称为 Seq2Seq 或 Sequence to Sequence 的方法通常用于会话建模。我们可以按顺序输入样本诗歌中的单词,以训练机器选择“最佳”的、最有可能出现的下一个单词。该链继续进行,当前输出的单词成为确定下一个单词的输入,依此类推。
Example of Question and Answer Seq2Seq method. (Source: M.Chablani on Towards Data Science)
这个 Seq2Seq 模型可以通过包含来自训练数据的偏移并可能将我们的诗行限制到某个长度来适应诗歌。在下表中,我们的数据集是输入,我们的预期输出是目标。
我使用诗人 Nayyirah Waheed 的几段引文(400 行)作为数据集来训练模型。经过训练的模型诗歌的结果包括大量的逐字复制和不完整的句子。这可以通过更大的数据集来改善,但我怀疑这些数据集也会观察到同样的现象。
_________________________________________Click Image to Enlarge ________________________________ Left: Model Trained on 400 lines of Nayyirah Waheed Right: Sample Poems from Nayyirah Waheed.
正如所料,使用更多行(约 1600 行)的罗伯特·弗罗斯特诗歌作为训练集产生了类似的结果。仍然有一些片段是从数据集中一字不差地摘录下来的,还有一些句子和整首诗虽然语法正确,但毫无意义。
Machine Learning Model trained on ~1600 lines of Robert Frost’s poems. (Source: LazyProgrammer at Github)
改善这些结果的答案可能是更多的数据。来自诗人的更多数据,或者另外组合来自多个诗人的数据。作为一个思考练习,我们可以想象给它每个诗人的所有数据。理论上,添加越来越多数据的前景非常诱人。这实际上消除了我们的模型公然重复整行的情况,因为它在 Seq2Seq 方法中对任何其他后续单词没有足够的经验。如果更大的数据缓解了我们的模仿问题,它也加剧了不完整思想和冲突风格的发生率。
为了提高我们的成绩,我们必须认识到我们给定的训练模式的局限性。简单来说,我们不能指望用目前形式的基本 Seq2Seq 方法看到有意义的诗歌。期望从这种模式中产生优秀的散文更是不可能。散文有人物、地点和动机,随着故事的展开,它们必须被保留、重温、改变和贯彻。在我们的基本模型中,没有任何东西可以确保这些考虑得到支持。
我们能教得更好吗?
我不太想给出一个显而易见的答案——如果我们想让我们的机器像人类一样生产东西,我们需要像教自己一样教它们。计算机逻辑与我们自己的逻辑有很大的不同,试图用这种逻辑给单词赋予意义实际上是不可能的。我断言我们不能在这个问题上扔更多的数据。无论数据大小如何,任何依赖于下一个最佳单词方法的模型都无法长期保持一致性——这是数学中固有的。
我们不能给一个机器模型一本书读,然后要求一份有深度分析的读书报告。我们也不应该期望以理解为目的的阅读行为会通过这种模式提高未来的写作水*。
机器阅读理解的当前状态使用记忆网络模型的一种形式。模型可以被训练成接收一个故事作为输入,然后回答关于该故事的基本问题。这个故事是一组包含专有名词、动词和指代前面名词的代词的句子。每个句子都被标记化,然后矢量化成一个单词包模型——这是一个向量,将每个单词表示为“1 ”(如果它在句子中)或“0 ”(如果它没有出现)。
一旦数据被清理和矢量化,模型就可以被训练来回答类似于下面的问题模块中的问题。经过训练的模型可以考虑操作的顺序,并对代词和其他词类做出正确的假设。
Memory Network (Towards AI-Complete Question Answering: A Set of Prerequisite Toy Tasks, Weston et al., 2015)
最好的模型也不要求故事以被回答的形式明确陈述事实。例如,“猫很开心。它有 20 磅重”,“问题:这只猫有多重”可以被正确回答,但是像“已经 11 点半了,Stacie 在给她的猫称重的时候不高兴看到秤上的数字 20”这样的段落也可以被正确回答。
这是一个令人印象深刻的壮举,因为你可以想象输入可能是巨大的,答案可以很快得到,比人类快得多。然而,这仍然是一个记忆的游戏,答案并没有上升到一篇文章的水*。
OpenAI GPT-2 Reading Comprehension Results (Source: OpenAI blog)
还有进一步的应用正在研究中,其中一个值得注意的是来自脸书研究的 bAbI 数据集。bAbI 展示了记忆网络的几种应用,例如推断儿童书籍中说话的人是谁,或者回答一般的琐事。有许多伟大的工作正在进行,这些数据集旨在激励开发社区达到更高的水*。这项研究正在进行中,我希望无论是在公共部门还是私营部门,我们都将继续看到这些信息发表在论文中,并尽可能公开地向公众发布。
然而,我们似乎很难迈出下一步,也很难期待这个模型在给出一个故事的时候做出更深层次的联系和联想。正如来自 bAbI 的一般琐事数据集和我们智能设备中流行的个人语音助手一样,当给定足够大的数据库时,许多类型的问题都可以成功回答。我们仍然缺少的是从数据中进行推断,以及利用所述数据获得某种类型的“创造性”许可的能力。
尖端模型
一个能够创造大量有意义且引人注目的内容的模式需要非常定制的逻辑。也许是如此之多,以至于它的创作者最好自己写这部小说。然而,如果这项工作完成了,回报将是非常值得的。反过来,这种“尖端”模式将能够更轻松地创造出更多的产品。与我们自己的作品相比,机器学习的诗歌和小说在质量上不会很快匹配,但对于这种内容创作来说,有很多有益的用例。
它可以改善自动化客户服务互动,个人助理人工智能将更加强大,语言翻译将受益匪浅。由这种模型创建的实际内容对于消费来说可能足够好,至少在人类作者没有时间或没有意愿手工制作内容的情况下是如此。
与此同时,不良演员使用如此强大的内容创作工具的可能性是一个非常现实的危险。创建经过篡改和编辑的音频和视频以及可信的自动生成内容的能力可能会带来灾难性的后果。它呼吁政府和组织制定使用这些内容创建工具的指导原则,这让社区有些犹豫。
OpenAI 有一个模型,GPT-2,它是在 800 万个网页的数据集上使用 15 亿个参数通过无监督训练创建的。然而,在撰写本文时,由于担心整个模型可能被滥用,只有 3 . 45 亿参数模型可供公众使用。
OpenAI GPT-2 Story Prompt and Model Completion (Source: OpenAI Blog Post)
GPT-2 的功能之一的目标是使用文本故事提示,在此基础上,它将以相同的风格和贯穿的线条添加几个段落到最初建立的想法中。结果可能令人印象深刻,我会敦促任何人参考 OpenAI 博客帖子来全面了解所有示例。
结论
T 他对我们问题的回答便是不要更多的数据,或者教机器更好。除非计算机操作方式发生巨大转变,否则我们将继续不得不将单词和符号翻译成数学,以便它们可以被机器计算建模。我们所知道的意义在翻译中丢失了。当前研究的目标之一是找回这种意义,或者以某种方式用数学方法模拟其效果,以创建更多样的反应,以及更大、更有趣的故事。
有些模型建立在基本 Seq2Seq 模型的基础上,并添加了额外的层,如注意力层(参见 K.Loginova, NLP 注意力理论,2018)。其他模型放弃 Seq2Seq 并使用不同的范例,例如最大互信息(MMI) 模型。
我们最好的模型可能在几行诗或几个段落中非常有说服力,但在更大的内容块中事情会分崩离析。艰难的工作仍在继续,我们试图将我们最大的天赋传授给我们最强大的工具之一。
什么是右翼媒体?
原文:https://towardsdatascience.com/what-is-the-right-wing-press-c3e7d21789ab?source=collection_archive---------20-----------------------
评论员和普通民众对右翼媒体的定义如此宽泛——从《太阳报》,到《每日星报》、《每日邮报》、《每日快报》、《每日电讯报》,再到《泰晤士报》——这几乎是一个毫无意义的概念/屁声。有意义的分解会是什么样的?
很可能会涉及某种极其耗时的文本分析项目。但是你知道什么更容易/更快/更自由吗?查看英国人口的大样本,其中已经包含了他们政治价值观的标准化衡量标准,并按照他们最喜欢的报纸进行分组:
这个图是什么?这是一个等高线图,其中“高度”代表英国(投票年龄)人口的集中程度——蓝色越深,人口越多;浅蓝色,人少。红色的“x”代表该支线剧情中所有人的*均位置。我增加了 8 个“指南针”来帮助眼睛。每份报纸下面的(N=X)副标题显示了原始样本量——样本量越小,你就越不应该去解读这个分布。
这些轴是政治指南针。每个人都知道——或者认为他们知道——经济左/右意味着什么。但是社会自由主义者/保守主义者(又名自由主义者/威权主义者)又如何呢?这很复杂——与这些术语相关的常识既不是完全错误的,也不是完全正确的。以下是将人们放在这些尺度上的“标准”政治学问题2:
将问卷数据转化为经济左-右/社会自由主义-保守主义量表的标准方法是将个人得分相加[3]。这对于大多数政治科学的需求来说很好,但是产生的分布既不是很好的高斯分布(钟形曲线),也不是很好的分布,这使得可视化— 特别是比较不同的分布 —变得很麻烦。
我所做的[4]是沿着每个轴*均分配——例如,图表最右边的 1/200 包含样本最右边的 1/200——图表的每个*垂直和水*切片包含英国选举研究中所有参与者的相应 1/200 切片[5]。如果两个坐标轴是完全独立的——这些坐标轴最初是由政治科学家创建的,以反映两个独立的政治因素——那么在一个图中绘制所有参与者的结果将是美丽而乏味的单色,因为图表上的每个位置都包含完全相同的人数:
很明显,这是一个技术上的失败(尽管从密集畸形的斑点向前迈进了一大步)。问题是这些轴大部分是独立的,但不是完全独立的。这既反映了问题[6]的某些方面,也反映了价值的实际分布。经济左派确实在社会层面比经济右派更加两极分化。
对于经济左翼人士来说,这是一个现实世界的问题。但是——更重要的是——这对我来说是一个可视化的问题,所以我将继续研究我是否可以通过从混合中添加/删除问题和/或直接最小化分布变形(自动面板跳动)的方法来合成性能更好的轴。
在那之前,恐怕你必须查看所有这些图表,同时努力记住基线分布有这三个集群——例如,《太阳报》读者群的*均位置正好在经济轴的中间——欧共体。左倾社会保守 blob 之所以被称为左倾社会保守 blob,是因为该象限中的人们聚集在左上角。《镜报》明显偏向《太阳报》的经济左派……但这只是因为较少的经济右派-社会保守派/较多的经济左派-社会自由派阅读它。
现在你知道所有这些了,下面是图表——作为一个动画幻灯片,分解为特定的“波”(投票进行的日期)。据我所知,没有真正有意义的趋势——但有一个非常便宜、简单的方法来了解这种方法有多稳定/要寻找什么:
那么,关于方法论主导的博客文章的开放式问题/脆弱的诱饵和开关?
你可以用这种方法将“右翼媒体”定义为经济权利(根据读者群)。但这使得太阳/恒星既不是 RWP(也不是 RWP)。
或者你可以用它来定义“右翼媒体”是社会保守派(根据读者数量)——但这意味着《镜报》变成了 RWP,《每日电讯报》变成了“两者都不是”,就像上面的《太阳报/星报》和《泰晤士报/金融时报》最终变成了“不是 RWP”。
我提议一个新的客观分类:
- 左图:每日镜报/记录
- 中天:太阳/恒星
- 《特快/每日邮报》
- 左图:卫报/独立报
- 右页:泰晤士报/金融时报
- 右-宽带:电报
显然,命名方案无疑是完美的,但是方法论呢?人们选择报纸不是出于个人政治以外的原因吗(例如电视版面)?当报纸改变立场时,那些坚持使用报纸的人呢?是啊,好吧…让我们看看你做得更好!
接下来:大报/小报分裂是怎么回事?
推荐:如果你喜欢这个,你可能会更加喜欢宝拉·苏瑞吉的博客
代码:泛数据集值笔记本(警告:这个笔记本目前只是一个由黑客、死胡同和随机方法组成的巨大的未加注释的大杂烩——将尝试重构一些更干净的东西——而且我还没有集成进行多重插补的 R 代码)
数据:pan _ dataset _ allr _ values . CSV(包括均匀分布和高斯分布版本以及所有 14 个波的 id 列
[1]使用学术标签显然是标签而不是描述(或者是明显过时的描述——你会坐在法国国王的哪一边?)有很多可说的。—它们已经成为标签)。
[2]有不同的说法,但它们不会“变化很大”,而且它们“倾向于”给出相同的答案。
[3]"强烈不同意"->0 …"强烈同意"-> 4,dk 由整个样本的*均值代替,al_scale=al1+al2+al3+al4+al5,lr _ scale = 20-(lr1+lr2+lr3+lr4+lr5)
[4]数据处理:用 nans 代替 DKs,对所有波的所有 BES al/lr 变量进行 Hmisc (R package)多重插补(一次一个),然后进行 sparsePCA (python 模块 Sklearn ),得出将所有这些变量混合在一起的两个正交分量。然后我对它进行 box-cox (python Scipy stats)处理,得到高斯分布/使用 pandas qcut (python 模块)转换成离散的均匀分布。可视化是 Seaborn(基于 Matlplotlib 构建的 python 模块)使用 FacetGrid 和 kde 绘图。
[5]健康警告:我没有应用英国选举研究的人口统计权重,部分原因是“profile_newspaper”是跨所有波的变量,我知道他们将推出一些代码来生成适当的跨波权重。但主要是因为我使用的 python 模块,用它来构建这些图表很麻烦。这是可行的,但这是任务清单上的最后一项,从过去的经验来看,我知道它不能解决块状分布的问题/产生巨大的视觉差异。
[6]lr1——再分配——与教育/社会自由主义密切相关——这就是为什么大多数政治罗盘风格的分析给人的印象是没有经济右翼社会自由主义者,因为他们对再分配的支持使他们自动转变为经济中心社会自由主义者。随着供给的扩大,看起来这已经成为这种分析的一个问题——所以从经济左派的定义中去掉“支持再分配”有一个奇怪但合理的理由!
[7]如果你知道一个好的、正式的方法来做到这一点,请联系我——出于某种原因,我总是找不到正确的谷歌关键词——最好是一个功能性的 python 模块!
中断时间序列实践指南
原文:https://towardsdatascience.com/what-is-the-strongest-quasi-experimental-method-interrupted-time-series-period-f59fe5b00b31?source=collection_archive---------5-----------------------
实验和因果推理
基础、假设、优点、限制和应用
Photo by ahmadreza sajadi on Unsplash
背景
在因果推断的世界里,随机对照试验(RCT)被认为是黄金标准,因为它在干预前排除了任何协变量差异。然而,由于多种原因(例如,太昂贵、无效假设、太长、不道德等),运行 RCT 不是一个选项。).
在这种情况下,间断时间序列(ITS)的设计就派上了用场(参见网飞)。作为一种准实验方法,它具有很强的推理能力,在流行病学、药物研究和项目评估中有广泛的应用。
可以说,ITS 是因果推理中最强的准实验方法(【彭福】和张,2013 )。
在这篇文章中,我们将学习这种方法的基础,以及如何在现实生活中应用它。
什么是 ITS?
作为一种准实验设计,ITS 是对干预前后单个时间序列数据的分析( Bernal,et al. 2017 )。从研究设计的角度来看,它建立在一个相当简单的设计理念上:如果没有干预,结果变量不会改变。
然而,棘手的是:
我们如何从单一时间序列数据中推导出因果论证?
怎样才能消除混杂因素?
换句话说,创建作为基线点的“反事实”至关重要。我们可以把“改变的”轨迹归因于干预的存在。
幸运的是,正如它的名字所暗示的,有一个时间成分,允许我们假设如果没有干预,结果变量不会改变。
此外,如果有多个数据条目(参见网飞的示例),我们可以检查去除治疗条件后,结果变量是否回到基线。
此外,我们必须控制随时间变化的混杂因素,包括可能干扰结果的季节性趋势和并发事件。
例如,研究人员质疑并否定了之前的发现,即 2008 年的大衰退导致了美国更多的自杀事件,认为之前的研究没有考虑季节性和社会群体(哈珀和布鲁克纳)。
它的优点和局限性
【彭福和张(2013 )已经提供了一个完整的优势和局限性列表,我将在下面总结其中的要点。
强项
- 以控制数据的长期时间趋势。它提供了一个更长时期的长期分析框架,可以更好地解释任何数据趋势。
- 解释个体水*的偏倚并评估人群水*的结果变量。个体水*的数据可能会引入偏倚,但群体数据不会。老实说,这既是福也是祸。我们将在接下来的部分详细阐述后一个方面。
- 评估干预的预期和非预期后果。我们可以很容易地扩大分析和纳入更多的结果变量与最低限度或没有适应。
- 对个体亚群进行分层分析,并得出不同的因果关系。这很关键。我们可以根据不同的标准将总人口分成不同的子群体,并检查每个子群体的不同表现。社会群体是不同的,将他们归类在一起可能会稀释或隐藏关键信息,因为积极和消极的影响混合在一起并相互抵消(参见哈珀和布鲁克纳的例子)。
- 以提供清晰可辨的视觉效果。目视检查总是受欢迎的,应该认真对待(更多解释见我的另一篇文章)。
限制
- 多轮数据录入。干预前和干预后至少 8 个周期,以评估变化。因此,我们总共需要 16 个数据条目,这可能并不总是可行的。我认为彭福和张(2013 )对数据条目的数量持谨慎态度。仍然可以通过几轮数据输入来应用 ITS。只是因果力量可能没有多回合的强大。
- 时间滞后。程序需要一些未知的时间来达到预期的结果,这使得很难确定几个同时发生的事件的因果关系。假设美国交通部在两年时间内采取了三项政策来遏制高速公路超速。扮演上帝的角色,我们不知何故知道政策 A 需要 1 年的时间才会有效果,政策 B 需要 1.5 年,政策 c 需要 3 年。
- 推理水*。这是总体水*的数据,所以我们不能对每个个体进行推断。
应用
它使用分段回归来检验干预的效果。它需要两个部分:干预前的部分和干预后的部分。每一段都有自己的斜率和截距,我们比较这两个分段回归模型得出的影响。
我们将这两个分段回归模型之间的方向(例如,从正到负)和/或程度(从大影响到小影响)的任何变化归因于干预变量。
实际上,这就是它如何克服只有一个案例的限制,仍然具有强大的推理能力。
这是一个使用模拟数据进行分析的例子。
# simulated data # data preparation
set.seed(1)
CaseID = rep(1:100,6)# intervention
Intervention = c(rep(0,300), rep(1,300))
Outcome_Variable = c(rnorm(300), abs(rnorm(300)*4))
mydata = cbind(CaseID, Intervention, Outcome_Variable)
mydata = as.data.frame(mydata)#construct a simple OLS model
model = lm(Outcome_Variable ~ Intervention, data = mydata)
summary(model)Call:
lm(formula = Outcome_Variable ~ Intervention, data = mydata)Residuals:
Min 1Q Median 3Q Max
-3.3050 -1.2315 -0.1734 0.8691 11.9185Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.03358 0.11021 0.305 0.761
Intervention 3.28903 0.15586 21.103 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 1.909 on 598 degrees of freedom
Multiple R-squared: 0.4268, Adjusted R-squared: 0.4259
F-statistic: 445.3 on 1 and 598 DF, p-value: < 2.2e-16
可以看出,干预变量的回归结果具有统计学意义。
这是一个使用模拟数据的快速入门课程。事实上,它在因果推理方面可以做得更多,我将在后续文章中详细阐述。希望如此~~
Medium 最*进化出了它的 作家伙伴计划 ,支持像我这样的普通作家。如果你还不是订户,通过下面的链接注册,我会收到一部分会员费。
[## 阅读叶雷华博士研究员(以及其他成千上万的媒体作家)的每一个故事
作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…
leihua-ye.medium.com](https://leihua-ye.medium.com/membership)
喜欢读这本书吗?
请在 LinkedIn 和 Youtube 找到我。
还有,看看我其他关于人工智能和机器学习的帖子。
DeepScale 背后的技术是什么?
原文:https://towardsdatascience.com/what-is-the-technology-behind-deepscale-b40f05fe7423?source=collection_archive---------25-----------------------
特斯拉最新收购的公司拥有设计 DNNs 的最佳技术
问题是
深度学习正在接管世界,但最具性能的模型正在变得越来越大。这些大型网络需要大量的资源,不仅在电力和使用方面,而且它们需要大量的能量和时间来产生我们想要的结果。
对于处于边缘并产生巨大结果的计算,需要更小的网络。网络越小,获得结果的速度越快,所需的资源也就越少(GPU 数量也就越少)。
为了产生更好的结果,已经开发了一些用较小的网络产生更好结果的技术。他们中的一些人在拥抱脸的博客文章中描述,在那里他们描述了他们如何提取最新版本的 Bert,这是 NLP 任务中表现最好的神经网络。
DeepScale 使用另一种技术来寻找小型但仍能产生良好结果的神经网络。DeepScale 执行神经架构搜索。神经架构搜索有望显著减少开发全新神经网络所需的工程时间和计算时间,该网络针对特定计算要求和错误率(或精度要求)进行了优化。
解决方法
- 该问题被定义为在某些搜索空间中找到计算和准确性的最佳折衷的网络
- 您可以改变层数、通道数、内核大小、连接数等..
如果你要搜索每一个神经网络,那么搜索空间变得难以训练在这个搜索空间中创建的每一个神经网络,如果每个神经网络都有几个选项的话。
为了找到正确的神经网络,研究人员尝试了一些不同的技巧来实现正确的神经网络架构。研究人员用一些不同的策略优化了搜索过程,这些策略有不同的选项:
- 随机搜索
- 遗传搜索
- 强化学习
- 差分搜索(基于梯度)
在这篇文章中,我们将回顾最后两种搜索方法,强化学习和差异搜索,因为它们目前是在有限的计算资源下提供最佳结果的方法。
强化学习
开创该领域的第一批工作之一是谷歌大脑的一篇论文,名为“具有强化学习的神经架构搜索”。这里可以找到。
The left image shows the controller that will update the network parameters
其背后的思想是,通过使用强化学习循环来发现网络,以提升具有最佳准确性且使用最少计算量的网络。通过使用控制器找到网络,该控制器是基于 RNN 的网络。
通过改变过滤器的数量、高度、宽度、步幅等来生成网络。该过程通过生成神经网络、训练它、获得它的准确性并将其用作控制器的反馈来生成更好的候选。
使用这种技术,谷歌团队取得了比当时最先进的技术(SOTA)稍好的结果,但它使用的计算量非常大。它使用了 800 个 Nvidia K40 GPUs 天,或 50 万个 GPU 小时。该搜索是在一个小数据集上执行的,因此很难看出它在更大的数据集上会如何执行。
限制搜索
同一个小组没有在所有可能的网络中进行搜索,而是决定将搜索限制在每个小区上,即他们固定了网络拓扑并对每个小区进行搜索。结果要好得多。在 ImageNet1000 上,最终网络的准确性提高了 20%,速度提高了 28%。
为了搜索神经网络,这个小组使用了更少的资源。他们使用了大约 5 万个 GPU 小时。在此设置中,所有单元格都是相同的。这仍然计算量太大,不切实际。
差异搜索
在准确性和计算资源方面的最佳结果是由脸书的一个小组发现的,该小组使用差分搜索来找到正确的架构。他们的把戏背后的想法是使用一个非常大的网络,其中包含许多更小的实验(内部),而不是让一个控制器产生小实验来学习。
该小组使用了基于梯度的随机超网,双重优化网络的卷积权重以及选择单个单元的参数。它使用 Gumbel-Softmax 从分类分布中采样,该分类分布由架构参数的学习参数加权。Gumbel-Softmax 技巧是一种寻找神经网络参数的方法,其中我们有一组离散的值,并且您想要执行反向传播。要了解它是如何工作的,我推荐阅读以下内容
[## 疯狂的神经网络!他们现在可以从离散分布中取样了!
训练深度神经网络通常归结为定义你的模型的架构和损失函数,并且…
anotherdatum.com](http://anotherdatum.com/gumbel-gan.html)
脸书团队在一个超级网络上进行训练,以找到网络的权重,并在 ImageNet 或 ImageNet1000 的 10%子集上进行训练。
结果令人印象深刻。他们在 ImageNet 分类上实现了 MobileNetV2 的准确性,同时延迟降低了 1.5 倍。搜索成本仅为 216 GPU (P100)小时。
深度扩展解决方案
DeepScale 采用了类似的方法来应用 NAS(神经架构搜索)来设计用于语义分割的 DNNs。语义细分被自动驾驶汽车公司广泛使用。
图像分割比图像分类难多了。它需要更多的竞争资源。对于图像分类,最先进的神经网络的计算资源范围约为 10 GFLOPs,而对于图像分割,SOTA 网络约为 1 TFLOPs。
DeepScale 使用与 FBNet 相同的技术创建了一个用于图像分割的神经网络,它达到了 SOTA 精度,并且性能更好。他们对网络的编码器进行了神经架构搜索。
下面是 DeepScale 的实现细节
SqueezeNAS 实施细则:
- 22 层每单元 13 个候选(10 个⁴可能网络)
- 随机初始化超级网络,仅训练卷积权重,然后切换到交替模式。
超级网络收敛后:
- 通过 Gumbel-Softmax 技巧对候选网络进行采样
- 在城市景观验证集上运行每个采样候选网络
- 让最优秀的候选人接受全面培训
在所有这些之后,DeepScale 选择了给定网络精度和计算资源的最佳网络。DeepScale 发现网络具有最佳性能,并且需要较少的计算资源来实现这些结果,例如,与 MobileNetV2[40]分段网络相比,他们的 SqueezeNAS-MAC-Large 网络实现了超过 2.5%的绝对 mIOU,而 mobilenetv 2[40]分段网络的 MAC 是其网络的两倍以上。
每个网络的 DeepScale 搜索在不到 15 GPU-day 的时间内被找到,这比一些强化学习和遗传搜索方法少 100 多倍。
结论
总而言之,对于希望实现 SOTA 结果并且同时需要很少计算资源的神经网络来说,神经架构搜索似乎导致了最好的结果。我们可能会在这个领域看到越来越多的创新,从而产生更好的网络。
你的数据有什么价值?
原文:https://towardsdatascience.com/what-is-the-value-of-your-data-9341cd019b4d?source=collection_archive---------20-----------------------
以下是最新的研究表明了我们对个人数据价值的看法。
如今,数据被称为石油、血管或商业基石。有人还形容数据是我们时代的钻石。然而,这是一种分布极不均衡的资产。一些科技巨头,如脸书、谷歌和亚马逊,被认为是数据巨兽,知道我们每个人的一切。他们的整个商业模式是基于他们产品的个人用户的数据:身份,位置数据,在线购买,交易历史,甚至个人偏好。
你的数据对公司的价值
数据市场的规模很难量化。一些主要的在线服务*台每年花费数十亿美元从第三方获取客户数据。在线服务公司之间数据交换的价值取决于各种参数,如人口统计数据、个人身份信息、家庭状况、财务信息和个人活动。
关于个人的基本数据(例如,年龄、性别和位置)仅值每人 0.0005 美元(即每千人 0.50 美元)。个人的财务信息(如最*的支付历史或健康信息)更有价值。以脸书为例,一个活跃用户的数据对脸书的*均价值约为每月 2 美元。
从 FTC 和 Equifax 之间的和解中可以找到用户数据对公司价值的另一个标志。2019 年 7 月,Equifax 同意为 2017 年数据泄露支付 5.25 亿美元的赔偿,该数据泄露了个人信息(姓名、生日、地址、社保号码等。)的 1.47 亿个人。这一结算金额意味着每个人将有权获得最低 125 美元的支出。
英国《金融时报》准备了一个交互式计算器,帮助计算个人数据对营销人员的价值。这个计算器提供了一个机会,可以更深入地了解营销人员收集的信息:人口统计、家庭背景、资产净值、健康状况、网上购物以及活动。然而,它并不包含营销人员收集的数以千计的更具体的个人资料。(当你发现你的私人数据可能不值一美元时,不要感到惊讶)。
© Paulius Jurcys & Daniel Ali
如何评估个人物品的价值?
即使一个人的数据对公司来说没有什么价值,你可能对你的个人信息对你的价值有一个稍微不同的看法。当涉及到个人详细信息、出生日期、社会安全号码等关键数据时尤其如此,更不用说个人财务信息和健康记录了。
然而,如何估计个人数据对每个人的实际价值呢?一些有用的方法可以在研究人类行为和决策的经济学家进行的文献和实证研究中找到。估算某样东西对你来说值多少钱最常用的方法之一是问两个问题:
- 你愿意支付多少钱来获得该物品? (支付意愿,WTP),以及
- 你想用多少钱来换取你拥有的物品 (接受意愿,WTA)?
示例 1:咖啡杯。支付意愿和接受意愿的“简单”例证可以是咖啡杯。在一个实验中,参与者得到一个 6 美元的杯子,然后给他们一个机会卖掉它或者换一个同等价值的东西(钢笔)。事实证明,一旦实验参与者确定他们拥有这个杯子,他们出售这个杯子的意愿大约是他们愿意支付的两倍。(换句话说,接受意愿和支付意愿的比例是 2:1。)
例 2:门票。另一个“更难”的例子与门票售罄有关。假设你花 200 美元买了一张 NCAA 四强赛的门票,门票已经售罄。你是其中一个球队的狂热球迷,你愿意支付高达 500 美元的门票。现在你在网上了解到,更富裕或更绝望的粉丝出价 3000 美元。你会卖吗?如果你是大多数持有门票售罄的球迷之一,你不会出售。行为经济学家进行的一项实证研究表明,参与者的假设售价(接受意愿,WTA)比他们的假设买价(接受意愿,WTA)高 14 倍。
前景理论及其含义
这两个例子提供了关于人们赋予不同商品多少价值的有用教训。首先,买卖意愿取决于一个简单的事实:个人是否拥有该物品。如果一个人拥有这张票,他的决定会受到放弃这张票的痛苦的影响。如果这个人没有票,那么他/她会考虑得到票的满足感。这也被称为“前景理论”前景理论还声称,个人更喜欢保持现状——我们认为不放弃我们拥有的东西会让我们过得更好。这种对现状的偏好是厌恶损失的结果。
第二,愿意为获得一个杯子或一张你最喜欢的比赛门票而付费,这两者之间的价值差异,与你可能希望通过赠送你已经拥有的物品而获得的价值不同。这是因为厌恶损失:放弃一张票比得到一张同样好的票更痛苦。
第三,支付意愿和接受意愿突出了不同类别商品之间的对比:即,为交换而持有的商品(例如,你购买鞋子的预算)和为使用而持有的商品(例如,门票)。此外,WTP 和 WTA 表明,不同的个人往往倾向于赋予相同的商品不同的价值。
重视个人数据:最新研究
有可能应用相同的 WTP-WTA 方法来确定人们对他们的私人数据赋予多少价值。7 月,两位哈佛学者安吉拉·温格尔和卡斯·桑斯坦发表了他们的研究结果,其中 2416 人被问及一系列关于他们有多重视个人数据隐私的问题。
主要发现很简单:普通参与者愿意为隐私支付相对较少的费用(每月 5 美元),但要求放弃隐私的费用要高得多(每月 80 美元)。更具体地说,参与者被问及他们愿意支付多少钱来保护他们的一般数据隐私以及他们的人口统计、身份和健康数据(支付意愿,WTP)。他们还被问及愿意为泄露自己的数据隐私得到多少补偿(愿意接受,WTA)。以下是他们的发现:
应该注意的是,在 Winegar/Sunstein 的研究中,63 名受访者对他们的数据隐私给出了极高的估价(每月超过 25,000 美元)。28 人表示他们的 WTA 为每月 100 万美元或以上,3 人表示他们的 WTP 为每月 100 万美元或以上。上表中的数字是基于 Winegar/Sunstein 通过将 WTP 和 WTA 超过 25,000 美元的响应限制在 25,000 美元来标准化响应所做的调整,因为作者认为参与者实际上不太可能愿意和能够支付该金额。
最*在 2022 年夏天进行的一项研究表明,个人消费者给他们的数据贴上了异常高的价格标签。在美国的这五个州,个人数据被赋予了最大的价值:
1.科罗拉多州:2820 美元。内布拉斯加州:2784 美元
3。怀俄明州:2347 美元
。明尼苏达州:2202 美元
5。俄克拉荷马州:2016 美元
资效数据隐私
在行为经济学文献中,人们更有可能保留他们拥有的物品,而不是获得他们不拥有的物品,这一发现被称为“禀赋效应”。这个概念术语是由诺贝尔奖获得者理查德·塞勒在 1980 年创造的,他注意到当人们面临维持现状和接受替代方案之间的选择时,他们会倾向于选择风险较小的保持现状。咖啡杯和活动门票的例子是捐赠效应的经典例证。
在 Winegar/Sunstein 识别的个人数据的情况下,16:1 的比率非常高。事实上,这是文献中已知的最高 TWP-WTA 比率之一。在支付意愿和接受意愿之间存在明显差异的其他例子在环境商品的情况下已经被注意到,如保护濒危物种(10:1)或清洁空气。
诺贝尔奖经济学家丹尼尔·卡内曼曾经指出,“当你‘出售’重要的捐赠基金可能会让你为糟糕的结果负责时,你的不情愿就会急剧增加”。对于数据隐私来说,这似乎尤其正确。Winegar/Sunstein 认为 16:1 的比率表明了数据隐私的“超禀赋效应”。
Winegar/Sunstein 研究中的受访者愿意只支付 5 美元来获取隐私的一个可能原因是,他们认为自己已经拥有了自己的数据。提供数据访问权限的价格(愿意接受的程度)要高出数倍的原因是,人们认为他们的个人数据具有巨大的价值。此外,仅仅是有人可以访问他们的私人数据的想法似乎就令人愤慨——因此,非常多的人愿意接受。
另一个需要考虑的因素是,人们是否真正理解网上收集的个人数据。不了解第三方收集了哪些数据,就不容易确定个人数据的实际价值。因此,人们可能想知道 WTP-WTA 分析是否恰当。
这也经常表明,人们并不真正关心他们的私人数据和数据隐私。Winegar/Sunstein 的 5 美元支付意愿调查结果支持了这一假设。然而,从行为经济学的角度来看,另外两点可能有助于更好地理解这一范式。首先,人们可能会过于乐观,希望自己的个人数据不会被滥用。其次,关于是否放弃数据隐私的选择,消费者可能会低估长期风险,而强调短期收益,包括访问社交媒体*台和网站(“当前偏见”)。
这就是我们现在的处境。最*通过的法规,如欧洲的 GDPR 或加利福尼亚州的 CCPA,为关于个人数据的价值以及如何公*使用个人数据的讨论增添了动力。
构建新的数据经济
GAFA(谷歌、苹果、脸书和亚马逊)目前在消费市场的主导地位带来的一个不幸后果是,个人对这些*台运营商如何访问和使用数据几乎没有控制权。理论上,我们有权知道*台运营商和应用开发者访问和收集了哪些数据,他们如何使用这些数据,以及他们是否与其他任何人分享这些数据。我们也可以要求他们停止跟踪我们,甚至删除所有关于我们的数据。
一些公司帮助消费者行使他们的数据隐私权。自从采用 GDPR 以来,我们已经看到了帮助消费者管理其同意的各种服务的增长。这种服务将显示有多少公司和数据经纪人在跟踪你并收集你的数据(对于普通消费者来说,这种公司的数量通常超过数百家。例如,下面是 SayMine 的截图,它是可以帮助我“控制”我的数据的公司之一。可以看到截止到今天,517(!)服务提供商和数据经纪人跟踪我的在线活动:
© Paul Jurcys
从上面的截图中,您还可以注意到,我没有使用这项服务提供的任何工具(部分原因是我已经调整了我的手机和笔记本电脑跟踪设置,以便暴露我的最小信息)。
但真正的问题是,我们如何用消费者的数据赋予他们权力?有没有一种方法可以超越用户生成数据的短期和事务性方法,并创建一种环境,使您的数据成为一种资产,为您带来长期价值?
当我们思考数据经济的未来时,我们不应该试图重新发明轮子。事实上,在互联网的早期,一个主要的想法是,它是由不同用户操作的计算机的去中心化网络。这是史蒂夫·乔布斯和苹果公司的早期愿景:
“苹果公司成立时,主张‘这是个人电脑。这是你自己的数据。…随着世界的发展,[我们]一直认为…您创建的数据,您用计算机做的事情,都是您的,应该在您的控制之下。您应该知道您的数据发生了什么。"—克雷格·费德里基(苹果)
因此,当我们考虑互联网的下一次迭代(如果你愿意,可以称之为 Web 3.0)时,我们应该回到起点,重新想象如何在用户端捕捉数据的价值。一种可能的实际实施是以用户为中心的用户持有数据方法,用户可以在他们的个人数据云中收集数据,并从他们自己的数据中获取日常价值:
© Paulius Jurcys
在以用户为中心、用户持有的数据环境,个人可以从不同的数据源收集数据——不仅是你的在线账户(如网飞或谷歌的活动历史),还可以从你的可穿戴设备上收集实时数据。在新兴的用户持有数据生态系统中,您将能够下载在您的数据之上运行的应用程序(即,在您的个人数据云中,而不是在某个集中式服务器中)。
最有趣的发展发生在从你的可穿戴设备中产生价值的领域:如果你可以结合来自不同设备的数据,获得关于你的健康和趋势的独特见解,并改善你的习惯,过上更健康和快乐的生活,会怎么样?
你可以在这里阅读更多关于这个的。
与我联系并保持联系
我是数据技术公司 Prifina 的联合创始人。你可以在 Twitter 、 LinkedIn 上关注我,或者加入我们的脸书群。你也可以探索我们的 Github:“Liberty。*等。数据。
XLNet 中的双流自我关注是什么
原文:https://towardsdatascience.com/what-is-two-stream-self-attention-in-xlnet-ebfe013a0cf3?source=collection_archive---------6-----------------------
直观理解 XLNet 中的双流自我关注
Photo by Hendrik Cornelissen on Unsplash
在我之前的帖子什么是 XLNet,为什么它优于 BERT 中,我主要讲了XLNet(AR 语言模型)和 BERT (AE 语言模型)的区别和置换语言建模。
我相信对 XLNet 有一个直观的理解远比实现细节重要,所以我只解释了置换语言建模而没有提到另一个重要的部分双流自关注架构。但是正如陈家明在评论、中提到的,双流自我关注是 XLNet 论文中的另一个亮点,所以我写了这篇文章来尽可能清晰地解释双流自我关注。
内容结构如下。
- 置换语言建模快速回顾
- 排列带来了哪些问题?
- 伯特有这样的问题吗?
- XLNet 如何解决这个问题?
- 注意屏蔽:XLNet 如何实现置换?
快速回顾置换语言建模
特殊术语:
- AR 语言模型:自回归语言模型
- AE 语言模型:自动编码器语言模型
为了让本帖更加独立,这里我简单总结一下什么是 XLNet,为什么它的表现优于 BERT 。
XLNet 提出使用置换语言建模到使 AR 语言模型从双向上下文中学习。通过这种方式,可以避免 AE 语言模型中 MASK 方法带来的弊端。
排列方法是得到一个序列的排列,并使用前面的t-1
记号作为上下文来预测第 t 个位置记号。例如,我们有一个句子[x1, x2, x3, x4]
,x3
是我们想要预测的第 t 个位置标记。首先,我们得到句子的排列。
[('x1', 'x2', 'x3', 'x4'),
('x1', 'x2', 'x4', 'x3'),
('x1', 'x3', 'x2', 'x4'),
('x1', 'x3', 'x4', 'x2'),
('x1', 'x4', 'x2', 'x3'),
('x1', 'x4', 'x3', 'x2'),
('x2', 'x1', 'x3', 'x4'),
('x2', 'x1', 'x4', 'x3'),
('x2', 'x3', 'x1', 'x4'),
('x2', 'x3', 'x4', 'x1'),
('x2', 'x4', 'x1', 'x3'),
('x2', 'x4', 'x3', 'x1'),
('x3', 'x1', 'x2', 'x4'),
('x3', 'x1', 'x4', 'x2'),
('x3', 'x2', 'x1', 'x4'),
('x3', 'x2', 'x4', 'x1'),
('x3', 'x4', 'x1', 'x2'),
('x3', 'x4', 'x2', 'x1'),
('x4', 'x1', 'x2', 'x3'),
('x4', 'x1', 'x3', 'x2'),
('x4', 'x2', 'x1', 'x3'),
('x4', 'x2', 'x3', 'x1'),
('x4', 'x3', 'x1', 'x2'),
('x4', 'x3', 'x2', 'x1')]
然后我们选择一些样本作为训练数据。(在论文中,它从排列中随机选择样本)
('x1', 'x2', 'x4', 'x3'),
('x1', 'x4', 'x3', 'x2'),
('x2', 'x3', 'x4', 'x1'),
('x4', 'x2', 'x3', 'x1'),
('x3', 'x2', 'x4', 'x1'),
我们可以看到每一个令牌都有机会出现在 x3 之前。因此 AR 模型可以从这些上下文标记中学习双向信息。如果你仍然不清楚排列,你可以阅读以前的帖子。
排列带来了哪些问题?
排列可以让 AR 模型从两个方向看到上下文,但也带来了原 transformer 无法解决的问题。
permutation language modeling objective
- Z :因式分解顺序
- p_θ:似然函数
- x_zt:因子分解顺序中的第 t 个记号
- x_t 的 x_z
This is the objective function for permutation language modeling, which means takes t-1 tokens as the context and to predict the t-th token.
There are two requirements that a standard Transformer cannot do:
- to predict the token x_t, the model should only see the 位置,而不是 x_t 的内容(我会在下一节解释什么是内容)
- 为了预测标记 x_t,模型应该将 x_t 之前的所有标记编码为内容
graph from Illustrated Transformer
尤其是第一个要求,transformer 将位置编码合并到令牌嵌入中。因此它不能将位置信息从令牌嵌入中分离出来。
伯特有这样的问题吗?
BERT 是一个 AE 语言模型,它不像 AR 语言模型那样需要单独的位置信息。与 XLNet 需要位置信息来预测第 t 个令牌不同,BERT 使用[MASK]来表示要预测哪个令牌(我们可以认为[MASK]只是一个占位符)。例如,如果 BERT 使用 x2,x1 和 x4 来预测 x3,则 x2,x1,x4 的嵌入包含位置信息和其他与[MASK]相关的信息。所以模型有很大几率预测到[MASK]是 x3。
这里我将对信息进行更详细的解释。BERT 嵌入(BERT 学习的信息)包含两种信息,位置信息,和内容信息(我只是为了简单起见把它分成两部分)。
位置信息很容易理解,它告诉模型当前令牌的位置。内容信息(语义和语法)包含当前令牌的“含义”。你见过的一个直观的例子是kind — man + woman = queen
。
XLNet 如何解决这个问题?
XLNet 提出双流自关注解决问题。
顾名思义,包含两种自我关注。一个是内容流关注,也就是《变形金刚》里的标准自关注。另一个是查询流关注。XLNet 引入它来代替 BERT 中的[MASK]标记。
例如,如果 BERT 想用上下文单词 x1 和 x2 的知识来预测 x3,它可以使用[MASK]来表示 x3 标记。[掩码]只是一个占位符。而 x1 和 x2 的嵌入包含了帮助模型“知道”[MASK]是 x3 的位置信息。
来 XLNet 事情就不一样了。一个令牌 x3 将服务于两种角色。当它被用作内容来预测其他令牌时,我们可以使用内容表示(通过内容流注意力学习)来表示 x3。但如果要预测 x3,应该只知道它的位置,不知道它的内容。这就是为什么 XLNet 使用查询表示(通过查询流注意学习到的)来保留 x3 之前的上下文信息,只保留 x3 的位置信息。
为了直观地理解双流自我关注,我们可以只认为 XLNet 用查询表示代替了 BERT 中的【MASK】。他们只是选择不同的方法来做同一件事。
注意屏蔽:XLNet 如何实现置换?
当我第一次读到这篇论文时,我无法停止对训练中排列的实现细节的好奇。所以如果你感兴趣的话,我会说一点。
在第一部分“排列语言建模的快速回顾”中,我给出了一个例子,一个句子[x1, x2, x3, x4]
的排列如下所示。
[('x1', 'x2', 'x3', 'x4'),
('x1', 'x2', 'x4', 'x3'),
('x1', 'x3', 'x2', 'x4'),
('x1', 'x3', 'x4', 'x2'),
('x1', 'x4', 'x2', 'x3'),
('x1', 'x4', 'x3', 'x2'),
('x2', 'x1', 'x3', 'x4'),
('x2', 'x1', 'x4', 'x3'),
('x2', 'x3', 'x1', 'x4'),
('x2', 'x3', 'x4', 'x1'),
('x2', 'x4', 'x1', 'x3'),
('x2', 'x4', 'x3', 'x1'),
('x3', 'x1', 'x2', 'x4'),
('x3', 'x1', 'x4', 'x2'),
('x3', 'x2', 'x1', 'x4'),
('x3', 'x2', 'x4', 'x1'),
('x3', 'x4', 'x1', 'x2'),
('x3', 'x4', 'x2', 'x1'),
('x4', 'x1', 'x2', 'x3'),
('x4', 'x1', 'x3', 'x2'),
('x4', 'x2', 'x1', 'x3'),
('x4', 'x2', 'x3', 'x1'),
('x4', 'x3', 'x1', 'x2'),
('x4', 'x3', 'x2', 'x1')]
非常容易让人误解我们需要获取一个句子的随机顺序,并输入到模型中。但这不是真的。输入句子的顺序是[x1, x2, x3, x4]
,而 XLNet 使用注意掩码来置换因式分解的顺序。
句子的原顺序是[x1, x2, x3, x4]
。并且我们随机得到一个因式分解顺序为[x3, x2, x4, x1]
。
左上角是内容表示的计算。如果我们想要预测 x1 的内容表示,我们应该拥有所有 4 个令牌内容信息。KV = [h1, h2, h3, h4]
和Q = h1
。
左下角是查询表示的计算。如果我们想预测 x1 的查询表示,我们无法看到 x1 本身的内容表示。KV = [h2, h3, h4]
和Q = g1
。
右角是整个计算过程。我自下而上解释。首先将h
和g
初始化为e(xi)
和w
。并且在内容屏蔽和查询屏蔽之后,双流关注会输出第一层输出h^(1)
和g^(1)
然后计算第二层。
注意右边的内容掩码和查询掩码。两者都是矩阵。在内容蒙版中,第一行有 4 个红点。这意味着第一个令牌(x1)可以看到(注意到)所有其他令牌,包括它自己(x3- > x2- > x4- > x1)。第二排有 2 个红点。意味着第二个令牌(x2)可以看到(注意到)两个令牌(x3- > x2)。其他行依此类推。
内容掩码和查询掩码的唯一区别是查询掩码中的那些对角线元素为 0,这意味着令牌看不到它们自己。
我们总结一下。输入的句子只有一个顺序。但是我们可以使用不同注意力掩模来实现不同的分解顺序。
摘要
在这篇文章中,我主要解释了 XLNet 面临的问题是什么,以及如何使用双流自我关注来解决它。我还提到了一些关于置换的注意屏蔽的实现细节。至于结果对比,可以找 XLNet 团队的最新帖子,比论文做了更公正的对比。
查看我的其他帖子 中等 同 一个分类查看 !
GitHub:bramble Xu LinkedIn:徐亮 博客:bramble Xu
参考
- 论文:https://arxiv.org/abs/1906.08237
- 实现:py torch _ transformers/modeling _ xlnet . py
- 什么是 XLNet,为什么它的表现优于 BERT
- 论文解析:【XLNet:面向语言理解的广义自回归预训练】讲解,这主要讲的是 transformer-xl。
- XLNet 和 BERT 与大型模型的公*比较研究
- XLNet:运行机制及和 Bert 的异同比较
- XLNet 原理
什么是小波,我们如何在数据科学中使用它
原文:https://towardsdatascience.com/what-is-wavelet-and-how-we-use-it-for-data-science-d19427699cef?source=collection_archive---------2-----------------------
source: https://ak6.picdn.net/shutterstock/videos/28682146/thumb/1.jpg
你好,这是我关于信号处理主题的第二篇文章。目前,我有兴趣学习更多关于信号处理的知识,以理解某篇论文。而且老实说对我来说,这个小波的东西比傅里叶变换更难理解。当我对这个话题有所了解后,我意识到了一些事情。如果我用正确的循序渐进的学习过程来学习这个题目,我理解这个会更快。所以,这里的正确的一步一步在我看来。
小波的概念
所以首先我们需要理解为什么我们需要小波。小波解决了傅立叶变换的不足。这就是为什么在理解小波之前,最好先理解傅立叶变换。但是总结一下,傅立叶变换是实信号和各种频率的正弦波之间的点积。
source: https://towardsdatascience.com/insight-to-the-fourier-transform-and-the-simple-implementation-of-it-eee293317efd
通过傅立叶变换,我们得到了真实信号的频谱。我们获得了频率统计,但是我们不知道“频率”何时发生,我们失去了真实信号的时间分辨率。
为了获得频率和时间分辨率,我们可以将原始信号分成几个部分,并对每个部分应用傅立叶变换。这种技术被称为短时傅立叶变换。但是这种方法带来了新的问题。当在部分信号中应用短时 FFT 时,它可以捕捉的频率仅为 n/2,其中 n 是部分信号的长度,假设部分信号的持续时间为 1 秒。
The minimum frequency we can catch with such a window, 1 Hz
因此,你无法捕捉到频率低于 1 赫兹的信号的信息(假设信号的总持续时间超过 1 秒,但请记住,当你使用 python 中的某个模块(即 numpy)进行 FFT 时,无论原始信号的持续时间是多长,它总是假设信号的持续时间是 1 秒)。
We can't catch a wave with a frequency below 1 Hz (in the picture, a 0.5 Hz wave)
To catch such a wave, we need a bigger window
总之,我们需要一个更大的时间窗口来捕捉低频,而更小的窗口来捕捉高频,这就是小波的概念。
小波公式的一般形式
小波的基本公式是
Actually, this is similar to the formula of the Fourier Transform. You can think of the integral as a sigma.
其中 X 是实信号,ψ是任意母小波,a 是尺度,b 是*移(X 当然是处理后的信号)。比例与窗口大小相同。这里的插图使用了 Morlet 小波。
Illustration of how the mother wavelet expand when the scale gets bigger and bigger
“窗户”在哪里?母小波的非零幅度是我们正在寻找的“窗口”。任何乘以零的数字都等于零,因此“窗外”的真实信号将被抵消。尺度与母小波(窗口)的频率成反比。记住,较大窗口的目标是较低的频率。这类似于傅立叶变换,因为我们在实信号和某个波(任意母小波)之间做点积。
翻译过来就是我们从起点开始“滑动”窗口多远。
Illustration of how the mother wavelet slide when the translation value increase
因此,我们可以将上面的公式改写为
总之,Morlet 小波的方程是
或者我们可以把这个等式改写成
这里的另一个新名词是任意母小波?等等,什么?武断?是的,小波有很多种母小波,你可以定义一个新的(当然需要满足几个条件)!这就是傅立叶变换和小波变换的巨大区别,傅立叶变换只有一种变换,而小波变换可以有多种变换(变换种类的可能性是无限的)。
小波变换的种类
一般来说,基于小波变换如何处理缩放和*移,小波变换的类型被分成两类:
连续小波变换
CWT 是一种小波变换,其中我们可以任意设置尺度和*移。属于连续小波变换的一些常用母小波是:
- Morlet 小波
- 迈耶小波
- 墨西哥帽小波
连续小波变换通常用于产生标度图。
离散小波变换
DWT 是一种小波,限制尺度和*移的值。这种限制就像比例是以 2 的幂递增的(a = 1,2,4,8,…),*移是整数(b = 1,2,3,4,…)。小波变换的母小波类型不同于连续小波变换。DWT 上常用的母小波如下。
- 哈尔小波
- Daubechies 小波
Daubechies 小波具有独特的缩放限制。它有一个称为父小波的尺度函数来确定正确的尺度。
小波变换通常用于对真实信号进行去噪。我们可以用 DWT 来分解实信号,去掉噪声部分,重新组合。如何才能知道噪音部分?经常在测量中(测风用风速计,测地震用地震仪),测量中的噪声是快速变化的。快速变化意味着高频率这就是它的工作原理。我们可以使用 DWT 对计算机中的数据进行压缩,就像图像一样。它是如何工作的?以图像为例,去噪的情况也差不多。我们去除图像中在 x 轴或 y 轴上颜色快速变化的部分。
这就是小波及其应用的解释。每个母小波都有自己的应用。你不需要学习所有的母小波。用就用,学你需要的,实用主义!
参考资料:
https://www.mathworks.com/help/wavelet/ref/morlet.html2019 年 5 月 19 日进入
https://en.wikipedia.org/wiki/Wavelet2019 年 5 月 19 日接入
https://en.wikipedia.org/wiki/Scaleogram2019 年 5 月 19 日进入
https://en.wikipedia.org/wiki/Haar_wavelet2019 年 5 月 31 日进入
为什么谨慎初始化深度神经网络很重要?
原文:https://towardsdatascience.com/what-is-weight-initialization-in-neural-nets-and-why-it-matters-ec45398f99fa?source=collection_archive---------7-----------------------
明凯初始化背后的数学。
Careful weight initialization expedites the convergence of neural nets. (photo by @kimzy on unsplash)
介绍
深度学习最*的成功很大一部分归功于 ReLU 激活功能。它在图像分类问题的深度细胞神经网络方面取得了最新的成果。在这篇博客中,我们将讨论一种鲁棒的权重初始化方法,它有助于更快地收敛更深层次的神经模型。何等在 深入钻研整流器 论文(2015)中提出了这种方法。
这篇博客的灵感来自于 Fast.ai 的《程序员深度学习》课程,第二部分,由杰瑞米·霍华德在 USF 教授。
神经网络中的参数
神经网络的参数包括权重和偏差。这些数字首先被随机初始化。然后我们的模型学习它们,这意味着我们在反向过程中使用梯度来逐渐更新它们。
初始化参数最普遍的方法是使用高斯分布。该分布的*均值为 0,标准差为 1。
Bell Curve
如果 m 是输入尺寸并且 nh 是隐藏单元的数量,那么权重可以被初始化为:
random weight initialization in PyTorch
为什么准确的初始化很重要?
深度神经网络很难训练。随机初始化参数,太小或太大都会有问题,而反向传播梯度一直到初始层。
当我们初始化权重过小时会发生什么(<1)? Their gradient tends to get smaller as we move backward through the hidden layers, which means that neurons in the earlier layers learn much more slowly than neurons in later layers. This causes minor weight updates. This phenomenon is called 消失渐变问题,其中权重消失为 0 )。
如果我们初始化的权重太大(> 1)怎么办?梯度在较早的层中变得更大,这导致超过最小值的极高权重更新。这就是 爆炸梯度问题,权重爆炸到无穷大( NaN ) )。这两种情况都使得神经网络难以收敛。
下面是 Gloriot 等人在论文中进行的实验的图像,理解训练深度前馈神经网络的困难。作者考虑了具有标准初始化的 5 层深度的神经网络。他们从正态分布初始化随机权重(0 均值和 1 方差)。
0 peak increases for higher layers (layer 4 and 5).
上图描述了随着训练的进行(从第 1 层到第 5 层的正向传递),所有激活值的*均值在最后一层变得更小(消失到 0)。在第 5 层,它们几乎为 0。
0 peak decreases towards the end.
我们反向计算梯度,从第 5 层到第 1 层。对于第一层,所有的梯度几乎消失了。
不好的初始化真的会阻碍高度非线性系统的学习。由于随机初始化,第一层丢弃了关于输入图像的大部分信息。因此,即使我们广泛地训练后面的层,它们也没有足够的信息从输入图像中学习。
仔细的权重初始化防止了这两种情况的发生,并导致深度神经网络的更快收敛。
输入数据的预处理
当输入数据居中(*均值为 0,标准差为 1)时,神经网络工作得最好。因此,当输入值乘以权重值时,它们的激活程度保持在 1 级。它是做什么的?它有助于神经网络的优化。因为隐藏的激活功能不会那么快饱和。因此在学习早期不会给出接*零的梯度。
ReLU —整流器线性单元
ReLu Function Graph
ReLU 是一个非线性 激活 功能。ReLU 的定义是,
source
ReLU in PyTorch
使用 ReLU 激活的优势-
- ReLU 解决了爆炸和消失渐变问题,因为它为所有大于 0 的输入输出 1 的恒定渐变
a derivative of ReLU(source)
2.这使得神经网络学习速度更快。并且还加快了训练过程的收敛。
3.ReLU 比传统的 sigmoid 单元更快地给出更好的解决方案。
明凯等人(1)通过谨慎地对 ReLUs 的非线性进行建模,导出了一种合理的初始化方法,这种方法使得非常深的模型(> 30 层)收敛。
正向传播
正向传递由来自与 ReLU 非线性耦合的顺序矩阵乘法(在层的输入和权重之间)的激活组成。其输出被传递到执行类似操作的连续层。
对于每个卷积层 l,响应在等式(1)之下,
linear equation for convolutional layer l
in python
在哪里
- x_l = x_l 是 n 乘-l 向量。( _l 到此表示下标 l 起。)
x 是 k x k(长、宽)和 c 输入通道的一个输入图像。
我们假设图像是正方形(l=b)。
n 是输出中激活的次数。 n= k c
如果 f 是前一层(l-1)的激活函数,我们有
- W_l = d 乘 n 个权重矩阵,其中 d 是滤波器的个数。n 是 x 的长度,即 n = kc。当前层 l 的通道与前一层(l-1)的滤波器相同。
- b_l =偏置的矢量(初始化为 0)
- y_l =权重和输入矩阵相乘并加上偏差后的结果向量。
假设
- W_l 和 x_l 中的元素相互独立,共享同一分布。
- x_l 和 w_l 相互独立。
卷积层为什么执行线性运算?
另外,如果您想知道卷积层如何像线性层一样执行线性方程。Conv 层做卷积。但是如果你关注马修·克莱恩史密斯的博客。你会明白卷积只是矩阵乘法,如下所示。
Convolutions are simply matrix multiplications.
现在回到我们的方程,如果我们求线性方程(1)的方差,我们得到方程(2)
a variance of linear Eqn. (1)
其中 y_l,w_l,x_l 分别是 y_l,W_l,x_l 中每个元素的随机变量。我们假设 w_l 零均值。代入方程。(2)我们将自变量乘积的方差作为等式。(3)
但是我们是如何做到这一点的呢?对于相互独立的随机变量 x_l 和 W_l 。我们可以用期望的性质来证明这一点
source
由于 w_l 的*均值为 0,即 E[w_l]=[E[w_l]] =0
这意味着在上述等式中。(A),★评估为零。然后我们只剩下
使用方差公式
以及 E[w_l]=0 的事实我们可以得出 Var[w_l]=E[w _l]。 有了这个结论,我们就可以替换方程中的 E[w _l]了。(B)用 Var[w _ l]得到,
抓住你了。通过替换等式。转换成等式。(2)我们得到方程式。(3)
让我们把重点放在 E[x _l]项上。这里 E()代表给定变量的期望值,也就是它的均值。但是低于等式。不成立
除非 x_l 的均值为零。x_l 不能有 0 均值,因为它是前一层(l-1)的 ReLU 激活函数。
如果我们进一步假设 w(L1)在 0 附*具有对称分布,并且 b(L1)= 0。那么 y(L1)具有零均值,并且在零附*具有对称分布。所以现在我们有下面的等式。(4)当 f 为 ReLU 时。
为什么 ReLU 在输出中加入标量 1/2?
对于 ReLUs 家族,我们有通用的激活函数,
其中,
- y_i 是第 I 个通道上非线性激活 f 的输入,
- a_i 是控制负部分斜率的系数。
ReLu 是 a_i=0 时得到的。合成激活函数的形式为 f(y_i)=max(0,y_i)。
ReLU 激活是一个零阈值,它使网络具有稀疏表示。例如,在权重的统一初始化之后,大约 50%的隐藏单元连续输出值是实零。
Relu 丢失了大量信息(被零值替换),这影响了积极的数据压缩。要保留数据,您可以使用 PRelu 或 LRelu,它们将 a_i 的斜率添加到轴的负侧,
ReLu 激活函数只保留正半轴值,所以我们有
将其代入等式(3),我们得到等式。(5)作为
现在我们有了一个等式。具有层 l 的激活和层(l -1)的激活。将 L 层放在一起,从最后一层 L ,开始,我们得到下面的乘积作为等式。(5)
注 : x_l 是网络的输入,这就是为什么上面的等式。从 l = 2 开始。这个产品是初始化设计的关键。适当的初始化方法应该避免指数地减小或放大输入信号的幅度。因此,我们希望我们的产品采取适当的标量(如 1)。
正向传递的充分条件(1) 为
这导致零均值高斯分布,其标准偏差为
我们也初始化 bias,b = 0。
对于第一层(l = 1),我们应该只有 n_1Var[w_1] = 1,因为没有对输入应用 ReLU,所以我们不需要将输入减半。小因子 1/2,如果只是存在于一层也无所谓。
反向传播
反向过程是从最后一层到第一层反向计算的梯度。
对于反向传播,卷积层 l 的梯度由等式 1 给出。(6)
the gradient of convolutional layer l
在哪里,
- Ŵ是一个 c_l-by- n̂_l 矩阵,其中滤波器以反向传播的方式重新排列。请注意,W_l 和 Ŵ可以互相改造。
- x 是 c_l 乘 1 的向量,表示层 l 的像素处的梯度。
【x = ∂e/∂x】 - y 表示 d 通道中 k 乘 k 的协同定位像素(长 x 宽),并被整形为 k 乘 1 的向量。∮y = ∂e/∂y.
我们用以下等式表示响应中的连接数
no. of activations
在反向投影过程中,我们在网络中反向移动,所以下面的等式不成立。
假设
- w_l 和 y_l 相互独立,包含正态分布的随机数。
- 当 w_l 由围绕零的对称分布初始化时,x_l 对所有 l 的均值为零。
在反向传播中,
其中 f′是激活函数 f.
的导数对于 ReLU 的情况,f′(y _ l)是零或一,它们的概率相等。Pr(0)=1/2,Pr(1)=1/2
a derivative of ReLU
我们再次假设 f′(y _ l)和 x_(l+1)是相互独立的。
正如我们在等式中看到的。(4) ReLU 将标量 1/2 加到其输出上。因此,我们有
还有,因为δy _ l 有一个零均值,f′(y _ l)= f′(y _ l)。通过取方程*方的期望值
我们得到下面的等式。在这里,标量 1/2 是 ReLU 的结果。
然后我们计算方程中梯度的方差。(6):
将 L 层放在一起,方差(⇼x _ L)为等式。(7)
我们必须定义一个充分条件(2) 来确保梯度不是指数地大/小。
注意,反向传播和正向传递的唯一区别是我们有 n̂_l 而不是 n_l 。
k 为图像尺寸,d 为输入通道。
当前层 c_l 的通道与前一层 d_(l-1)的滤波器相同。
此外,该条件满足零均值高斯分布,其标准偏差为,
对于第一层(l = 1),我们不需要计算 x1,因为它代表图像。单个层的因素不会使整个产品呈指数级变大/变小。
使用条件(1)或(2)来使神经模型收敛而没有爆炸/消失梯度是安全的。
假设我们替换等式(2)中的条件。(7)我们得到
然后在方程中。(5)
要寻找的常数不是标量 1,而是 c2/dL。即网络开始和结束时的信道数量。这不是一个使神经网络面临爆炸或消失梯度问题的递减数字。根据作者,该方程适当地缩放向前和向后通道,使得神经网络有效地收敛。
Xavier 初始化
Xavier 和 Bengio 早些时候提出了“Xavier”初始化,这种方法的推导是基于激活是线性的假设。这个假设对于 relu 是无效的。明凯和 Xavier 初始化之间的主要区别在于明凯处理 ReLU 非线性。Xavier 方法使用下面的条件,该条件从标准分布初始化权重
这里,I 只不过是我们的层索引 l。当根据 Xavier 的归一化初始化在网络中上下移动时,保持激活和反向传播梯度稳定的归一化因子是
Xavier’s Normalized Initialization
我们可以使用 PyTorch 中的 Xavier 公式
结论
下图比较了泽维尔和明凯初始化方法与 ReLU 非线性的收敛性。在 22 和 30(27 conv,3 fc)层深度神经网络。
no.of epochs vs error rate in 22 layers deep neural model with ReLU (source)
正如我们所看到的,两种 init 方法都有助于 22 层深度神经网络的收敛,而使用 ReLU。但是明凯比泽维尔更早开始降低错误率。
no.of epochs vs error rate in 30 layers deep neural model with ReLU activation
正如我们所看到的,只有明凯初始化方法能够使深度模型收敛。Xavier 的方法完全停止了学习,梯度逐渐减小,导致完全没有收敛。
下面是如何使用明凯初始化策略初始化权重
torch.nn 使用下面的公式来演示明凯初始化
用-
1 初始化有两种模式。扇入(缺省)-在正向传递中保持权重的大小。
2。扇出 —保留后向通道中权重的大小。
我们使用扇出,因为我们需要反向传播梯度是稳定的。明凯初始化对于更深层次的校正神经网络是必须的。
希望你喜欢。
参考
- 深入研究整流器:在 ImageNet 分类上超越人类水*的性能,明凯等人,微软,2015 年
- 理解训练深度前馈神经网络的困难,Glorot 等人,蒙特利尔大学,2010 年
- Pierre Ouannes,深度神经网络如何初始化?泽维尔和明凯初始化,2019 年 3 月 22 日
- 詹姆斯·德林杰,神经网络中的权重初始化:从基础到明凯的旅程
- Jefkine,深网初始化 整流器案例,2016 年 8 月 8 日
什么是 XLNet,为什么它的性能优于 BERT
原文:https://towardsdatascience.com/what-is-xlnet-and-why-it-outperforms-bert-8d8fce710335?source=collection_archive---------1-----------------------
XLNet 基础知识直观了解 XLNet 和 BERT 的区别
Photo by Richard Cohen on Unsplash
发布后不到一周,似乎我周围 NLP 领域的每个人都在谈论 XLNet。
是的,“在 20 个任务上改进了伯特”确实吸引了我们的目光。但更重要的是理解它是如何工作的,以及它为什么优于 BERT。所以我写这篇博客来分享我读后的想法。
内容结构如下。
- XLNet 是什么?
- XLNet 和 BERT 有什么区别?
- XLNet 如何工作?
如果你对 XLNet 中的双流自我关注感兴趣,可以查阅我的另一篇帖子,什么是 XLNet 中的双流自我关注。
什么是 XLNet ?
首先,XLNet 是一个类似 BERT 的模型,而不是一个完全不同的模型。但这是一个非常有前途和潜力的机会。总之, XLNet 是一种广义自回归预训练方法。
那么什么是自回归(AR)语言模型?
AR 语言模型是一种利用上下文单词预测下一个单词的模型。但是这里上下文词被限制在两个方向,或者向前或者向后。
GPT 和 GPT-2 都是 AR 语言模型。
AR 语言模型的优势在于 擅长 生成性 NLP 任务。因为在生成上下文时,通常是正向的。AR 语言模型在这样的 NLP 任务上自然很好用。
但是 AR 语言模型有一些缺点,它只能使用前向上下文或者后向上下文,也就是说不能同时使用前向和后向上下文。
【XLNet 和 BERT 有什么区别?
与 AR 语言模型不同,BERT 被归类为自动编码器(AE)语言模型。
AE 语言模型旨在从损坏的输入中重建原始数据。
被破坏的输入意味着我们在预训练阶段使用[MASK]
替换原始令牌into
。而目标是预测into
得到原来的判决。
AE 语言模型的优势在于可以看到上 前后两个方向的上下文。
但是 AE 语言模型也有它的缺点。在预训练中使用[MASK]
,但是在微调时实际数据中没有这种人为符号,导致预训练-微调不一致。【屏蔽】的另一个缺点是它假定预测(屏蔽)的记号是相互独立的,给定未屏蔽的记号。例如,我们有一句话“它表明,住房危机变成了银行危机”。我们掩盖了“银行业”和“危机”。注意这里,我们知道被掩盖的“银行业”和“危机”彼此包含着隐含的关系。但是 AE 模型试图在给定非屏蔽令牌的情况下预测“银行业”,并在给定非屏蔽令牌的情况下单独预测“危机”。它忽略了“银行业”和“危机”之间的关系。换句话说,它假设预测的(屏蔽的)令牌是相互独立的。但是我们知道模型应该学习预测的(屏蔽的)记号之间的这种相关性,以预测记号之一。
作者想强调的是,XLNet 提出了一种新的方法让 AR 语言模型从双向语境中学习以避免 AE 语言模型中 MASK 方法带来的弊端。
XLNet 如何工作?
AR 语言模型只能向前或向后使用上下文,那么如何让它从双向上下文中学习呢?
语言模型由两个阶段组成,训练前阶段和微调阶段。XLNet 专注于训练前阶段。在预训练阶段,它提出了一个新的目标叫做置换语言建模。从这个名字我们可以知道基本的想法,它使用排列。
Illustration from paper
这里我们举一个例子来说明。序列顺序是[x1, x2, x3, x4]
。这种序列的所有排列如下。
所以对于这个 4 个记号(N)的句子,有 24 个(N!)排列。
场景是我们想要预测x3
。所以 24 种排列中有 4 种模式,x3
在第 1 位,第 2 位,第 3 位,第 4 位。
[x3, xx, xx, xx]
[xx, x3, xx, xx]
[xx, xx, x3, xx]
[xx, xx, xx, x3]
four patterns
这里我们将x3
的位置设为t-th
位置,**t-1**
记号为预测 **x3**
的上下文词。
x3
之前的单词在序列中有每一个可能的单词和长度。直觉上,模型将学习从两边的所有位置收集信息。
实现远比上面的解释复杂,这里就不说了。但是你应该得到关于 XLNet 最基本最重要的想法。如果对 XLNet 中的双流自我关注感兴趣,可以查阅我的另一篇帖子,什么是 XLNet 中的双流自我关注。
来自 XLNet 的启示
就像 BERT 将掩码方法公之于众一样,XLNet 表明置换方法作为语言模型目标是一个很好的选择。可以预见,未来将会有更多的工作来探索语言模型目标。
查看我的其他帖子 中等 同 一个分类查看 !
GitHub:bramble Xu LinkedIn:徐亮 博客:bramble Xu
参考
- 论文:https://arxiv.org/abs/1906.08237
- 代码:py torch _ transformers/modeling _ xlnet . py
- XLNet 中的双流自我关注是什么
6 年来,我在 8 家不同的公司和 4 份工作中从事数据科学和分析,学到了什么
原文:https://towardsdatascience.com/what-ive-learned-doing-data-science-and-analytics-at-8-different-companies-and-4-jobs-in-6-years-f745a2c63976?source=collection_archive---------1-----------------------
在过去的 6 年里,我在 Adobe、USAA 银行、如新、紫色床垫、Franklin Sports 等公司做过数据科学和分析项目。我还做过 4 份不同的分析工作,一份在中型 IT 咨询公司,一份在大公司,一份在初创公司,还有一份在电子商务公司。
大约在“数据科学家”被命名为“21 世纪最性感的工作的时候,我开始了我的数据职业生涯在这段时间里,我学会了不同的公司如何构建、参与和执行数据项目。我还采访了 9 家不同公司的数据科学家和其他分析角色,深入了解了公司如何组建数据团队,以及他们如何聘用和聘用谁来填补职位空缺。此外,我完全通过导师、自学、MOOC 课程或在职经历获得了分析专业知识。
如果以上还不够独特的话,我的正式学位是拉丁美洲(BA)和国际研究(MA),很少甚至没有受过正式的技术培训。
鉴于我独特的视角,我想分享我所学到的关于数据科学和分析的最重要的事情:
企业数据科学和分析团队的存在只是为了解决业务问题。
这似乎应该是不言自明的,但不知何故,它不是。我无法告诉你我有多经常看到数据项目失败,因为数据团队在过程中的某个地方看不到自己存在的理由。不管你喜不喜欢,数据团队是一种支持功能,旨在解决合法的业务问题,即要么为公司创造收入,要么为公司节省资金的问题,仅此而已。
曾经有一位数据科学家告诉我,他花了 3 个整天为一个预测模型开发一个新功能,结果他所支持的企业告诉他,他正在开发的功能是不必要的,有问题的预测模型对于他们的需求来说已经足够了。技术型的 DS 和 DE 喜欢修补和埋头写代码。完善一个预测模型并找出最后 2%或 5%的准确性是令人满意的。不幸的是,AUC 从 80%上升到 85%所花的时间可能与上升到 80%所花的时间一样多。作为数据专家,你的价值取决于你的模型、管道或数据产品节省或产生的金钱,仅此而已。为了让数据科学家花 3 天时间来修改一个新功能,损失了多少美元?现在,我并不是说数据科学家进行实验不重要,事实上,这对于优秀的数据科学家的工作至关重要,但是,保持专注于提供 ROI 是至关重要的。为了生产力和效用,开发牺牲复杂性和不必要的优化的能力。你会发现你做得更多,提供的价值更大。
有几种不同类型的“数据科学家”
数据科学家既是 21 世纪最性感的工作,也是最复杂的工作。即使他们认为他们有,也没有两家公司愿意雇用同一个数据科学家。正如我在早先的一篇文章中解释的那样,数据科学是一个广阔的领域,而不是一个职位头衔——具有三维的技能组合。我厌倦了关于什么是或不是“真正的”数据科学家的争论。这种说法是一个人力资源问题,并不适用于公司实际需要的东西。针对数据科学连续体的所有维度执行的技能组合不仅极其罕见,而且对一个人来说可能没有必要。事实是,大多数组织真正需要的是能够将一系列数据源整合在一起,创建一些简单的模型,并实现自动化的人。这套技能不需要博士或高级技术学位,但仍然可以为许多公司提供难以置信的价值。话虽如此,高度专业化、受过高等教育的统计学家或研究人员肯定有重要的位置,但这种需求是由每个公司的独特挑战产生的,而不是对“数据科学家”角色的普遍要求
数据工程比数据科学更重要。
与开发和调整预测模型的能力相比,人们更需要缝合和组织来自非交互数据源的不同数据集的能力。除非公司面临难以置信的明确挑战,规则集和业务场景有限,否则对复杂预测模型的需求将会受到限制。刚刚开始从事数据科学,希望在竞争中占得先机?先学一个数据工程师的技能,再弄清楚建模和预测。你不仅对几乎所有愿意雇用你的公司来说都更有价值,而且当你决定走预测这条路时,你还会创造出比你的同事更好的模型。从长远来看,高级 SQL、web 抓取、API 开发和数据清理技能将比预测性建模和调优带来更好的收益。
数据科学领导者倾向于雇佣像他们一样的人。
许多数据科学领导者(以及一般的领导者)坚持认为,要解决复杂的挑战,他们应该尽可能雇佣最专业的人(在许多情况下,雇佣的人应该有尽可能接*自己的经验,而不是更有成就)。就数据科学而言,这种想法通常是这样的:我雇佣的认证数据科学家越多,我能够解决的复杂数据挑战就越多。不幸的是,事实远非如此。
这种想法的一个迭代被称为“局部搜索”,也就是说,尽可能多地使用来自一个领域的专家,并尝试以前有效的解决方案来解决你的问题。虽然这种想法看起来是正确的,但它缺少关键的“由外而内”的思维——即把远在集中培训之外的经验和想法联系起来,应用于手头问题的能力。大卫·爱泼斯坦的《范围》一书提供了几个“由外向内”或“横向”思维的例子。在一个例子中,礼来公司的研究副总裁 Alph Bingham 向高管们争辩说,他们向公众公布了 21 个公司的研究挑战,这些挑战难倒了礼来公司的科学家。起初,高管们拒绝了这一提议,指出“如果世界上教育程度最高、专业程度最高、资源最丰富的化学家都无法解决技术问题,为什么其他人能够提供帮助?”(范围,第 173 页)。最终,他们在不会有伤害的基础上达成一致。结果令人震惊:超过 1/3 的挑战被完全解决了——包括一名完全没有科学经验的律师,但世卫组织的知识来自化学专利工作。
为了建立一个解决真正复杂、重要问题的团队,数据科学领导者需要雇佣一批来自不同背景和专业知识的个人。他们应该抵制从相同的背景甚至相同的技术能力中建立团队的冲动。博士和证书的数量不应该超过你团队的经验和成就的多样性。
我从与 12 家机器学习初创公司的合作中学到了什么
原文:https://towardsdatascience.com/what-ive-learned-working-with-12-machine-learning-startups-a9a3026d2419?source=collection_archive---------2-----------------------
关于产品、数据和人员的 8 堂课
我和 12 家创业公司合作过。它们跨越了从金融科技和医疗保健到教育科技和生物科技的垂直领域,从种子期前到收购后都有涉及。我的角色也各不相同,从最基层的员工到数据科学主管和战略顾问。在所有这些项目中,我都致力于有趣的机器学习和数据科学问题。所有人都试图打造伟大的产品。许多人成功了。
以下是我学到的东西。
这是关于构建产品,而不是人工智能
作为一名持证数学家,我最初最感兴趣的是机器学习科学和提出创造性新算法和方法的挑战。
但我很快意识到,即使是最准确的机器学习模型也不会自己创造价值。机器学习和人工智能的价值是在它们驱动的产品背景下衡量的。弄清楚如何有效地做到这一点是构建 ML 驱动的产品的真正目的。
Lewis Carroll, the author of Alice’s Adventures in Wonderland, was also a mathematician. He invented many enticing products, though some of them didn’t quite work as anticipated. All illustrations by John Tenniel.
这是问题,而不是方法
如果目标是打造产品,那么机器学习和 AI 就是达到目的的手段。重要的是他们如何解决你的产品问题,而不是你用什么方法。大多数时候,快速而肮脏的解决方法会让你走得很远。当一个简单的回归就足够好的时候,不要训练一个深度神经网络。
当你专注于问题时,你有时可能会发现机器学习并不是解决问题的正确工具。事实证明,许多问题主要与过程有关。即使在这些情况下,数据科学家也可以贡献很多价值,因为他们自然倾向于采取严格的数据驱动的方法。但这并不意味着用人工智能来修复一个糟糕的流程是一个好主意。请改为修复流程。
寻找数据和产品之间的协同作用
机器学习的真正价值很少来自于将现有产品与机器学习模型的预测相结合。当然,这将增加一些增值。但在强 AI 产品中,机器学习不仅仅是一个附加。它是一个创造价值的引擎,而产品是在这个引擎的基础上构建的:产品和数据必须协同运作。
做得好的话,就会产生一个强大的良性循环,我称之为“产品/数据契合”:产品高效地实现了数据的潜在价值,同时继续生成必要的数据来进一步改进产品。
A suboptimal strategy for introducing machine learning into a product
特别是,人工智能不能只停留在数据科学和工程团队中。组织的其他部分,从产品到管理层,都需要参与到对话中来,以加速价值创造过程。这需要大量的教育和参与,超出了工程师通常习惯于构建软件的范围,即使是在初创公司。
先有数据,后有 AI
机器学习和人工智能需要大量的数据,更重要的是高质量的数据。如果你正在从头开始构建一个产品,考虑从第一天开始的数据收集。如果你正在将人工智能技术引入一个现有的产品,在你进入人工智能部分之前,准备好在数据工程和重新架构方面投资很多。
这并不意味着你必须在实现任何价值之前预先装载所有的工作。更好的数据运营意味着更好的分析,这对于任何组织来说都是学习和改进的关键。利用这些成功来展示价值并产生组织认同。当你的分析坚如磐石时,你就准备好开始真正考虑机器学习了。
投资于有效的沟通
打造优秀的产品需要优秀的产品经理和高管的支持。虽然许多人被人工智能和深度学习的力量所吸引,但很少有非技术人员真正理解这些技术。对机器学习和人工智能的有效讨论需要对统计学有深刻的理解,这就产生了一种沟通差距,这种差距往往会导致不切实际的期望。
A discussion of machine learning and AI, apparently not entirely grounded in business metrics
一个关键因素是保持关于业务度量以及它们如何转化为建模度量的持续对话。这给产品经理带来了很大的责任,但同样也给数据科学家带来了很大的责任,他们必须发展领域专业知识,并对业务考虑事项有深刻的理解,才能真正有效。
又快又脏其实没那么脏
正如我上面提到的,快速和肮脏的方法会让你走得很远。部分原因是因为今天的快速和肮脏是昨天的缓慢和精确。像 word2vec 这样的工具已经变得几乎和回归一样容易使用,而且强大的新工具也在不断地被引入。对于任何数据科学家来说,深刻理解各种构建模块以及它们之间的结合都是至关重要的。
开源工具爆炸的一个后果是,在大多数情况下,开发专有的 ML *台不是一个好主意。当然,你应该有专有的算法,这些算法采用众所周知的构建模块,并使它们适应你的问题和领域。但是把深度学习研究留给谷歌的人——专注于业务问题,记得吗?
如有疑问,请出示数据
Showing data to users can be very powerful, but not all methods of presentation are equally compelling
早期产品开发中最重要的活动是获得市场反馈。但是机器学习需要大量数据,这需要很长时间才能获得。这就提出了一个问题:在没有太多数据的情况下,如何获得关于一个数据产品的市场洞察力?
最好的解决方案通常是简单地向你的用户展示数据。人类一次只能处理少量的数据,所以你没有多少也没关系。你的用户如何处理你展示给他们的数据?他们在哪里粉饰,又想在哪里深挖?公开以前无法访问的信息可能会非常强大,并且会就数据的潜在商业价值为您提供有力的指导。
建立信任
信任是大多数技术成功的主要因素。归根结底,每一项技术都是人类使用的,必须得到人类的信任。在机器学习应用的背景下,其中一些人可能会担心他们的工作被自动化。其他人依靠你的技术提供的信息来做出重要的决定。
一个加剧了这些担忧的人工智能产品,例如试图为人类做决定,而不是授权人类决策,将导致信任的快速侵蚀。
信任很容易失去,也很难重新获得。打造人们信任的产品。
The Cheshire cat demonstrating a dubious method to gain users’ trust
我学到了用机器学习预测足球比赛
原文:https://towardsdatascience.com/what-ive-learnt-predicting-soccer-matches-with-machine-learning-b3f8b445149d?source=collection_archive---------7-----------------------
我总是对市场着迷。也许这是从我十几岁的时候开始的,当时我的朋友告诉我这种“稳赢”的下注策略,包括赌足球比赛是*局,并加倍下注,直到我赢了——从技术上讲,他没有错,但从技术上讲,我也没有无限的资金,所以非常感谢 ZJ。
当我第一次听说机器学习时,我认为它比使用传统统计数据建立足球模型要好得多,部分原因是这些模型的限制性假设,部分原因是我当时非常懒得学习 R。
那是 1.5 年前的事了,从那以后我就拿起了 Python(比 R 容易多了!)并阅读/应用了我能找到的所有关于机器学习的东西,最终创建了一个比鞅策略略好的模型。还有很多事情要做,但这篇文章旨在巩固我到目前为止学到的东西,并与任何刚开始学习的人分享。
1.博彩公司非常擅长他们的工作,也就是说,市场是非常有效的
“我会把选股者比作占星家,但我不想说占星家的坏话”——尤金·法玛
在史蒂芬·列维特关于博彩市场的论文中,他认为博彩市场的做市商的运作与金融市场非常不同,因为他们比大众更擅长预测比赛。因此,他们可以设定价格(赔率),而不需要匹配买家和卖家。
事实上,博彩公司在预测足球结果方面非常准确。如果我们画出隐含的赔率概率与实际比赛结果的概率,我们会得到一条非常直的线,这意味着高度的正相关。
Source: Beating the bookies with their own numbers — and how the online sports betting market is rigged [2]
有趣的是,你甚至可以用他们自己的赔率【2】击败他们,但这只是以一种有限的方式起作用(本质上是在不同的博彩公司之间套利)。
因此,如果市场是有效的,为什么还要费神去尝试呢?嗯,这是因为就像金融中的有效市场假说一样,它并不总是正确的。就在比赛开始之前,赔率的隐含概率反映了结果概率。但在比赛开始前和开始后的几天和几个小时,情绪会进入人群,如果我们能快速捕捉到它并根据真实的概率采取行动,这可能会使胜算对我们有利。这就是使用机器学习可以(有希望地)让我们超越非计算型下注者的地方。
2.集合是非常好的开始和结束算法
我希望我可以说我使用了性感的深度神经网络来预测足球比赛,但事实是,最有效的模型是一个精心调整的随机森林分类器,我第一次试验是因为它的简单性。我几乎试过了 sklearn 、 xgboost 和神经网络中的每一种算法,但随机森林仍然是所有算法中最稳定的。
3.移除特征有助于提高可预测性
“知道的越多,需要的越少。”―芮伟航·舒伊纳德
当我第一次开始这个项目时,我只是把所有的东西都扔在墙上,看看有什么东西卡住了,然后不断地想出更多的功能来改进我的结果。但是当我通过 fastai 的机器学习课程时,我了解到去除多余的特征实际上提高了我的准确性,主要是因为它们是噪音,使我的模型的工作更加困难。鉴于我们能够看到哪些特征在驱动我们的预测,机器学习真的不是一个不可信任的神秘黑匣子。
4.测试一切,尤其是你固有的假设
“一切可以测试的东西都必须被测试”——维克多·尼德霍夫
在特征工程和建模中有太多的东西可以调整,我尝试测试所有可以测试的东西,以便更好地预测和概括。给定一系列可供选择的特性/指标,有时当某些特性足够好时,尝试其他特性会很有诱惑力。
我记得在过去的 n 场比赛中尝试用*均进球数作为衡量标准,得到了不错的结果。我已经准备好继续前进,但后来我看到了一个类似的指标,指数加权*均值。在我的脑海中,我认为可预测性的提高,如果有的话,将是微不足道的,所以我想尝试一些更令人兴奋的东西。但由于多疑,我决定快速测试一下,你知道吗,这实际上是一个比*均指标更强的预测指标。你永远不知道什么会起作用,直到你去尝试。
5。预测只是等式的一部分。
在你预测了结果之后,工作还没有完成。关键是要智胜庄家,这意味着我们必须从长远来看真正赚钱。
因为我们的目标是赚钱,所以使用像准确性/验证损失这样的标准评估指标并不能很好地衡量我们的目标是否达到。因此,我用博彩公司的赔率乘以每个正确结果的预测概率,来看看这个模型有多有利可图。
6.Jupyter 笔记本改变了游戏规则
在我学会 Python/机器学习并开始应用我所知甚少的知识后,我继续使用推荐的文本编辑器编写我的所有代码,然后在终端中运行代码。文本编辑器很棒,我仍然在学校和阅读我下载的脚本时使用它。但是朱庇特改变了我的实验方式。
我可以在单元格中交互地运行更改,而不是等待运行整个 python 脚本来查看我的编辑产生了什么。我花了一段时间来适应工作流程和键盘快捷键,但是一旦我习惯了,我的迭代周期就大大缩短了,而且我再也没有回头看。
7.它永远不会结束。
这是我在 2018 年为自己决定的一次为期 10 年的旅程,并将在未来几年继续努力,并将我在其他市场学到的东西应用到其中。随着新指标/研究的出现,这是一个不断学习和测试的持续旅程——好在我喜欢这个过程。
参考
[1]市场如何运作?对国家足球联盟赌博的实证分析
[2]用自己的数字击败博彩公司——以及在线体育博彩市场是如何被操纵的,利桑德罗·,·钟,哈维尔·克莱纳
关于数据产品经理,招聘启事能告诉我们什么
原文:https://towardsdatascience.com/what-job-postings-can-tell-us-about-data-product-managers-cc8cf9774e6e?source=collection_archive---------19-----------------------
如今,数据产品经理是就业市场上的抢手货。越来越多的公司意识到数据对其业务的重要性,以及围绕数据制定战略和清晰路线图的必要性。产品经理自然是这项工作的一部分,因此对数据产品经理的需求正在上升。
最*,我碰巧参与了一些讨论,这些讨论让我更多地思考数据 PM 与任何其他 PM 的实际区别。仅仅是关于他们的产品领域吗?有没有具体的新技能?也许是正在使用的工具?甚至他们的学术背景?
作为一名数据爱好者,只有转向实际数据来回答这些问题才有意义。于是旅程开始了…
Photo by marcus_jb1973 on Flickr, available under a CC By-NC-ND license
数据
首先是数据。起初,我考虑使用实际数据 PMs 的 LinkedIn 个人资料作为数据集。通过比较数据 PMs 和非数据 PMs 的曲线,可以看出主要的区别。然而,即使抛开刮痧和隐私方面,LinkedIn 上的自写角色描述也过于个性化,不容易比较。
所以我转向工作描述。这些都是根据角色的要求而写的,结构更好,也更容易获得。仍然没有可用的数据集,但这似乎是一个更容易解决的问题。Indeed.com 的提供了一个很好的招聘信息链接的集合,我可以跟踪并抓取内容。我也可以很容易地选择提供数据 PM 和非数据 PM 职位的公司,希望有更好的信噪比,尽管不可否认这可能会对大公司造成轻微的偏见(有两个或更多的 PM 职位)。
产生的数据集包括 50 家不同公司最*发布的 100 份招聘信息,其中每家公司的一个职位是数据 PM,另一个职位是非数据 PM。为此,我将“数据 PM”定义为标题中有“数据”一词;这似乎是一个合理的起点,但我欢迎任何关于这种定义在更大的画面中可能遗漏了什么的反馈。
数据处理
开始时,我们可以采取一个有趣的探索步骤,看看我们在这个示例中实际得到的角色头衔。获取 50 个数据 PM 帖子,并删除所有标准 PM 标题关键字(包括“高级”、“助理”、“产品经理”、“产品管理”等)。),提供标题片段的分布,表明这些数据产品似乎是关于什么的。如下图所示,大约三分之二的帖子集中在一个简短的通用名称列表上:数据科学、数据*台、数据产品或简单的数据。“其他”三分之一是由整个数据管道中的一长串更具体的术语组成的——数据集成、摄取、建模、基础、分析、策略等等。因此,似乎可以安全地假设,在大多数情况下,数据 pm 拥有其组织中的整个数据域,端到端。
接下来,我们将处理职位发布文本本身。我采用的一般方法是将两组 50 个数据帖子与 50 个非数据帖子进行比较,并寻找最能区分这两个类别的特征。我们将从标记化、删除停用词和词干化(都使用 nltk)开始,然后解析结果文本以提取 n 元语法及其在每个类中的频率。对于每个 n-gram,我们将记录它在其中被发现的帖子的数量,数据与非数据计数的比率,以及使用该 n-gram 来区分两个类时的信息增益度量。我们还将删除低计数 n 元文法(匹配率低于 5%),以及零信息增益或极低信息增益的 n 元文法。
分析和调查结果
现在我们终于准备好看到实际的结果了…那么区分数据 PM 和其他 PM 的关键词和关键短语是什么呢?
上表显示了前 10 个 n-grams 的信息增益,或者它们将两个组分开的程度。检查顶部项目表明,组织将数据项目经理视为专业人员,他们构建数据*台,与数据科学家和数据工程师团队合作,并衍生或使用数据模型。值得注意的是,术语数据本身不再是数据项目经理所独有的,实际上在非数据项目经理的职位描述中也有很高的频率(因此“数据比率”值较低),而其他热门术语和短语出现在少量帖子中,但当它们出现时,它们具有很高的信息量。
当我们在列表中查找数据工具的名称时,我们会发现很少几个在列表中名列前茅。 SQL 是一个突出的工具,在 16 个数据帖子和 3 个非数据帖子中被提及, Tableau 出现在 9 个数据帖子和 1 个非数据帖子中,而 Python 只出现在 6 个帖子中,但都是针对数据 pm 的。所有这些术语加起来涵盖了大约 40%的数据发布,说明了许多数据项目经理希望能够访问和操作数据,从基本的 SQL 到实际的编码。
将列表翻转到非数据与数据发布的高比率,我们可以了解哪些术语高度预测非数据发布。毫不奇怪,我们会发现面向用户的关键词,如 engage、delight 和 experience,但更有趣的是,还有相当多的经典产品技能和术语,如产品积压、产品定义、产品组合和发布。这可以解释为表明数据项目经理被认为是已经掌握了产品管理基础知识的有经验的项目经理,因此该帖子侧重于数据特定方面。
学位要求呢?总的来说,学历要求,无论是本科还是研究生(还有 MBA ,对于数据 PMs 似乎都没有什么特别的意义,表现为零信息增益。另一方面, 统计,无论是学位还是仅仅有背景,都是数据发布的一个明显属性,有 30%的人提到它,而在非数据发布中只有 2%。
虽然这个小数据集可能不够大,不足以成为真正的样本,但它确实为就业市场如何看待数据 PM 的角色提供了一个有趣的快照。如果你有任何进一步的见解或评论,我很乐意在评论中听到你的想法!
原载于 2019 年 4 月 28 日http://alteregozi.com。
关于人工智能,记者需要知道什么
原文:https://towardsdatascience.com/what-journalists-need-to-know-about-artificial-intelligence-ebc8f08b1b78?source=collection_archive---------16-----------------------
专业人员指南
Photo by Andrew Neel on Unsplash
为什么是这篇文章?
一名记者最*让我评论一个涉及脸书人工智能算法的阴谋论的可行性。他想知道脸书是否有可能使用其现有的自杀视频检测算法来筛选和审查保守的媒体来源。为了有意义地回答这个问题,我发现我需要花一个小时来教育这位记者关于人工智能的一般知识,只是为了给他足够的背景信息来理解我对阴谋论的评估。在这样做的过程中,我让他有能力处理未来与人工智能相关的调查,随着人工智能扩大与我们日常生活的互动,他和他的同事在未来肯定会越来越频繁地遇到这些调查。
从上面描述的遭遇中,我意识到记者们将很快面临越来越多的解释和评论与人工智能相关的各种社会问题的需求。我的结论是,目前大多数记者都不具备完成这项任务的条件。为了补救这种情况,我撰写了这本初级读本,以帮助记者获得足够的相关知识,帮助他们做他们最擅长的事情:引导公众讨论当天的相关问题。
我不是唯一一个说记者需要人工智能技术状态以及它如何与日常生活互动的信息的人;著名的人工智能先驱费最*向《连线》杂志提供了以下引文:
“我也非常希望人工智能扫盲更加普遍——从 记者 开始,但也包括政策制定者、教师和公民社会。这不是一个教授想要每个人都知道如何编码;而是让更多的人参与到 AI 的引导中”1。
事实是,作为公民和全球北方的经济参与者,我们现在每天都在消耗人工智能算法的产出。虽然(非人工智能)算法和计算机调节的体验已经存在了相当长一段时间,但人工智能在今天规模上的实际商业应用是非常新的——只是在最*七八年才出现。为了控制由此产生的社会后果,我们需要足够了解人工智能的外行人来做出明智的决定。记者们发现自己处在一个就这些问题接触普通人的位置上,我希望这篇文章能帮助他们完成这项任务。
关键要点
以下是这篇文章中需要记住的关键事项,每一个都在下面的文本中有更详细的描述:
- 我们进入全面的人工智能革命只有大约十年,人工智能的广泛使用使商业和政府决策影响了大量的个人。因此,我们需要伟大的记者来引导我们完成这一转变!
- AI 的使用导致了不良的社会后果,包括死亡和不适当的长期监禁。
- 人工智能和机器学习技术努力模仿智能,无论是人类智能还是一种与人类非常不同的智能。
- 一个人工智能过程只是创建一个它试图做出决策的真实世界问题域的*似模型。因此,*似值的限制削弱了它的准确性。
- 一个人工智能解决方案可能在一个非常具体的问题上表现良好——它被训练来解决的问题。然而,它不会有效地推广到其他任务。
- 用于训练人工智能算法的数据集的偏差导致其输出的偏差。
- 人工智能算法被证明很难审计。
- 我们不知道人工智能的使用可能给社会带来的后果,例如,可能的技术失业。
人工智能失败比比皆是
对记者来说,眼前的问题是人工智能的应用有时会产生实质性的问题,记者会向公众传播这些故事,并发表社论。几个例子:
- 当基于人工智能的面部识别技术被用于控制犯罪时,错误的身份会导致逮捕和/或公开羞辱无辜者[18,19]。
- 最*,一辆优步无人驾驶汽车撞死了一名行人。
- 最*人工智能驱动的亚马逊员工招聘算法产生了可测量的性别偏见[18,21]。
当然,一个人也可能犯这样的错误,但是大多数社会已经建立了处理人为错误的协议。我们没有为人工智能相关的错误建立这样的协议——关于这个问题需要一个全球性的对话。事实将证明,记者对这场对话至关重要。
什么是人工智能和机器学习?
人工智能(AI)泛指让计算机模仿智能的研究和工程实践。在这里,我给“智力”下了一个松散的定义;它可以意味着模仿人类的信息和决策能力[2],也可以指与人类思维高度不同的智力发展[3]。但是这些定义都是基于计算机本身并不智能的假设。我的意思是,要使它们有用,它们必须被“编程”,即由人类以某种方式指导。
深入挖掘指令的问题:在计算历史的大部分时间里,人类编写“程序”来指导计算机的数据处理和决策。软件工程师应用 C++或 Python 等编程语言来详述运行给定程序的计算机会做出的每一个动作。这些详细的指令被证明是非常明确的(例如,如果用户键入“Hello”然后按回车键,那么打印“Hello back to you!”在屏幕上)。
然而,这种活动没有很好地扩展。编写明确的指令来解释每一个可能的输入和每一个可能的决策是困难的,即使对于最好的软件工程团队也是如此。因此,人工智能研究人员设计了两个基本框架作为回应:“专家系统”和“机器学习”(ML)。两者几乎同时出现在学术界,但后者只是在最*几年才开始商业化。本文将主要关注机器学习,但在这里,我将简要解释专家系统作为起点:
专家系统试图解决这样一个挑战,即从给定的程序输入中显式地编写每个决策的脚本。它们在 20 世纪 80 年代激增[5],但现在大部分已经半途而废。一个“知识工程师”会在采访一个专家,比如一个高度专业化的医生之后,将数据输入到专家系统中。大量事实将被手动收集——因此考虑每个可能的输入的问题仍然存在——然后“推理引擎”(本身是一种算法)将处理这些事实以得出结论,而不需要对每个数据影响的特定推理步骤进行编码。以这种方式,他们被认为是模仿专家的智力。专家系统仍在使用——仅在去年一年,我就创建了两个,一个用于医疗推理,一个用于时尚推荐——但人工智能的研究和实践在很大程度上已经转向第二个框架:机器学习。
机器学习试图解决每个可能的输入或输入组合的问题,这样软件工程师就不必再这样做了。本质上,工程师“训练”一种算法,以从大量已知输入中产生所需输出,其中已知输出通常伴随着每个提供的已知输入,以帮助训练。例如,旨在检测视频中滑板存在的 ML 算法将显示数万到数十万个视频,有些有滑板,有些没有。在最常见的情况下,这些视频中的每一个都将被“标记”为要么有滑板,要么没有滑板。ML 训练程序将处理这些输入,并“学习”如何在未来看不见的视频中检测滑板。在这种情况下,工程师变得更像“老师”,而不是显式规则的设计者(稍后将详细介绍)。
委婉地说,机器学习已经迅速席卷了全世界。ML 算法驱动着谷歌的搜索结果[10]、网飞的电影推荐[9]和脸书的过滤器[8]。大公司使用 ML 来过滤简历和监控员工[11]。一些司法管辖区在刑事判决程序中使用 ML[7]。中国应用基于最大似然的面部识别来压迫维吾尔少数民族[6]。就我而言,我已经将 ML 用于分子设计[12],货币交易[13],政治偏见检测[14],并向音乐家提供关于观众热情的实时反馈[15]。
本文的其余部分将特别关注机器学习,并与人工智能互换使用该术语,这是当今的常见做法。
什么是“模型”?
AI 从业者经常把自己创造的算法称为“模型”。原因如下:
模型是对真实世界对象的*似,用于帮助对该对象的研究或决策。建模的对象可以是物理的,例如在风洞中测试的模型飞机,过程,例如供应链的动态图,或者甚至是想法,例如在商务午餐期间在餐巾纸上绘制的商业模型的“信封背面”。模型也可以是数学的,如一组一个或多个方程。比如“E = mc”就是描述能量和质量之间物理关系的数学模型。
更重要的是,机器学习算法是数学模型——一个方程(或一组方程),*似于算法训练所依据的输入和输出之间的真实世界关系。训练过程“发现”这些关系,并将它们编码到方程的参数中。然后,在新的输入上运行经过训练的 ML 模型,辅助甚至取代人类在现实世界中的决策。
这里我们遇到了第一个问题…
我在最后一段故意用了“*似”这个词。模型只是它们所反映的对象的*似值,而不是真实的东西。因此,丢失了一些细节,基于模型得出的结论可能不能充分反映现实。例如,风洞中的模型飞机可能没有真实飞机的每一个铆钉和接缝。因此,这些未建模的铆钉和接缝的微流体效应(在现实生活中可能会增加明显的阻力)仍未被发现。
同样,我的货币兑换市场 ML 模型没有考虑到影响价格波动的每一个可能的因素。举例来说,我(还)没有包括央行声明的影响。我也不能包括政治事件;在最*美国和中国之间的贸易战中,我的模型损失了钱。预测的结果是,当现实转向另一个方向时,算法有时会预测一个价格方向。
好吧,我损失了一些钱。没什么大不了的。但是考虑到类似的模型决定了社会重要的事情,比如一个给定的罪犯的刑期有多长。或者你(以及一整群人——在某些方面与你相似,你可能知道也可能不知道)是否得到了一份你胜任的工作。或者评估你母亲的癌症状况。使用这些“*似”模型可以做出严肃的决策。
接下来,记者、政策制定者和哲学家面临的一个关于人工智能使用的迫切问题是“多长时间犯一次错误是可以接受的?”。当然,这取决于应用:如果我的货币预测只有 60%的正确率,我仍然在大量交易中赚钱。但是,对于自动驾驶汽车的行人检测算法来说,社会可以容忍的准确度是多少呢?99.9%?99.99999%?在基于人工智能的癌症诊断中,你可以获得第二种意见。但是自动驾驶汽车可能会撞死人!
即使自动驾驶汽车偶尔会碾过行人,人们也必须评估它们在避免行人方面的表现与人类驾驶员相比如何,着眼于决定人类驾驶员还是人工驾驶员总体上更好。诸如此类的问题及其政策后果需要社会讨论。记者在这些讨论中发挥着重要作用。
假阳性和假阴性
更正式地说,在两种可能性(例如,有罪与无罪、感染与未感染、视频中存在滑板与视频中不存在滑板)之间进行选择的任何类型的程序(无论是法庭案件、医学测试还是机器学习算法)被称为“分类器”。从技术上讲,分类器可以涉及两个以上的结果,但是为了定义以下关键术语,我们将把对话限制在双向分类器上:
当一个分类器说一个情况是真的(有罪、被感染、滑板存在),而那个情况实际上是假的,我们就把这个结论叫做“假阳性”。类似地,被声明为假的真实情况被表示为“假阴性”。基于人工智能的分类算法的设计者寻求减少这些假阳性和假阴性的数量,就像刑事司法系统寻求减少不准确判决的数量一样。但是,如上所述,不准确的结论仍然存在,我们作为一个社会必须决定对于给定的应用,我们可以接受什么样的错误结论率。
为了说明在现实世界中的社会后果,2015 年谷歌图像分类器设计用于识别照片中的大猩猩,产生了误报,宣布图像中的黑人是大猩猩[4]。在另一个众所周知的情况下[5],人工智能在一些司法管辖区被用来预测一个被定罪的罪犯是否会再次犯罪。这种算法产生的假阳性可能会导致更长的刑期。在我介绍这篇文章的案例中,为了回应一个阴谋论,即脸书正在使用其自杀视频检测算法审查右翼视频,我得出的结论是,最有可能的情况是,自杀视频检测算法对特定的审查右翼视频产生了误报,从而催生了阴谋。
人工智能很“脆弱”
继续讨论脸书的自杀视频检测算法;
AI 的能力远不如公众普遍认为的那样。最令人困惑的是人工智能的可归纳性。换句话说,人们倾向于认为被训练来执行任务的人工智能算法可以很容易地适应执行相关的任务。事实并非如此,因此我们称人工智能算法为“脆弱的”,意思是它们不能适应不断变化的条件。(提高人工智能的可推广性是一个积极研究的领域)。
关于脸书的自杀视频检测算法,由于该技术缺乏可推广性,它根本无法准确判断视频是否显示极右翼极端主义内容。如果脸书想要这样的算法,他们很可能已经有了,他们必须使用一套完全不同的训练视频从头开始训练它。然后,这种算法一旦被训练,就不能用于检测 ISIS 的宣传——他们需要再次从头开始。
你只能根据你之前看到的来预测
当我第一次申请学分时,远在现代人工智能出现之前,我只是因为事先没有任何学分而被拒绝。发卡方的算法——可能基于传统的统计方法——只知道如何处理以前有信用记录的申请人,因为这很可能是程序员在创建它时考虑的。
同样的问题仍然存在于今天更加有效的机器学习技术中:它们只能根据在训练过程中看到的输入来*似数据和结果之间的关系。当给定的输入数据场景位于训练域之外足够远时,该算法是无助的。易碎。
这里我们遇到了第二个主要问题:训练偏差
当讨论机器学习模型仅在它们被训练的数据范围内是好的这一事实时(例如,我上面描述的信用模型不知道如何处理零信用历史的申请人),我们意识到在选择所使用的数据时可能存在偏差。例如,对于错误地将黑人归类为大猩猩的谷歌算法,很可能在训练过程中很少使用黑人(相对于白人)的照片作为输入。由此产生的影响让我想起了“所有黑人看起来都一样”的态度,这种态度仍然让许多无辜的人被送进监狱,只是在潜在的不准确性上更加“精确”。
上面我把 ML 算法的训练者称为“老师”。所有的老师都会把他们的偏见传递给学生,不管他们喜不喜欢。甚至已经证明,软件工程师在他们所谓的中性代码中传播他们的社会偏见[17]。
不透明盒子
大多数机器学习技术中涉及的数学通常是高维的,这意味着一个训练好的模型可能有成千上万个与之相关的数字。因此,对于一个人来说,审核模型是很困难的;来确定 it 中的哪些关系驱动了哪些行为。这在自动驾驶汽车等情况下是一个问题,假设这样一辆汽车撞到了行人,我们会希望当局以调查飞机失事的同样方式调查碰撞的原因。然而,飞机中的机械关系虽然复杂,但在大多数情况下可以清晰地追溯到一连串的因果关系。然而,由于大多数 ML 模型的不透明性质,在自动驾驶汽车的行人检测算法的情况下,这种评估将被证明是不可实现的。
提高机器学习技术的可问责性和可审计性仍然是一个活跃的学术研究领域。
社会必须尽快解决的未知问题
两个与人工智能相关的大未知数即将出现:技术失业和 ML 算法“串扰”的影响。随着这些情况成为焦点,记者们会发现自己在描述这种情况。
自工业革命以来,技术失业的幽灵,即由于自动化而大规模快速解雇人类工人(及其社会后果),一直困扰着西方。然而,今天工业社会发展的每一个转折点都创造了足够多的新工作来取代那些失去的工作。这种趋势是否会在人工智能驱动的自动化中保持,还有待观察。在过去,自动化取代了需要很少人类脑力来执行的简单任务,让人类执行更复杂的推理和创造性活动。现在,需要更多训练和智力的职业面临风险;假设受过高等教育的中产阶级,而不仅仅是无产阶级,发现自己大量失业?在这种情况下,我们的政治、经济和社会稳定会发生什么变化?
第二个未知可能被认为是“人工智能生态”[16]。随着成千上万的 ML 算法调整我们的日常经验,算法之间的串扰必然会发生,并且以不可能预测的方式发生。举个简单的例子,当我从历史价格数据中训练我的货币交易算法时,我间接地包括了所有其他 ML 算法对历史价格数据的净影响(其他交易者拥有的算法)。当我的算法执行交易时,他们的算法会响应我的信号。这种影响可能是缓和的,也可能滚雪球般变成灾难性的事情。我们根本不知道。
因此,我将整个生产 AI 操作空间视为一个生态:算法以类似于生态概念的方式直接并通过我们相互交互。真正的力量不在于谁能做出“最好”或“正确”的算法(尽管这很有帮助),而在于谁能更好地将这个复杂的交互生态“偏向”他们的目标。
这场革命仅仅进行了十年
我们(社会)在这场革命中只有大约十年的时间;在那之前,人工智能所需的计算需求超过了现成的硅片所能推动的,因此人工智能仍停留在实验室中。现在我们生活在这样一个世界里,人工智能可以被新手工程师经济地部署到生产环境中,以产生显著的商业收益。其结果可能会像互联网的引入一样,被证明是一场彻底的社会变革。
伟大的记者才能带领我们度过这场剧变。
Photo by Andrew Neel on Unsplash
参考
- https://www . wired . com/story/飞飞-李-艾-关心-更多-关于-人类/
- https://www . Forbes . com/sites/Bernard marr/2018/02/14/the-key-definitions-of-artificial-intelligence-ai-that-explain-its-importance/# 4e1a 52774 f5d
- https://www . fast company . com/40459339/Google-perspective-fighting-hate-and-trolls-a-mind-ai
- https://www . USA today . com/story/tech/2015/07/01/Google-道歉-拍照后-识别-黑人-大猩猩/29567465/
- https://en.wikipedia.org/wiki/Expert_system
- https://www . the guardian . com/news/2019/apr/11/China-high-tech-war-on-Muslim-minority-新疆-维吾尔-监控-人脸识别
- https://www . technology review . com/s/612775/algorithms-criminal-justice-ai/
- https://edition . CNN . com/2019/05/01/tech/Facebook-ai-F8/index . html
- https://becoming human . ai/how-网飞-uses-ai-and-machine-learning-a 087614630 Fe
- https://www . wired . com/2016/02/ai-is-changing-the-technology-behind-Google-searches/
- https://www . HR technologist . com/articles/digital-transformation/the-初学者指南-ai-in-hr/
- https://badassdatasscience . com/2018/01/07/rapid-identifying-potential-crispr cas 9-off-target-sites-part-one/
- https://badassdatasscience . com/2017/08/16/pseudo-harmonic-forex-prediction-with-machine-learning-part-one/
- 罗伯特·爱泼斯坦和艾米丽·威廉姆斯。2019.2018 年美国中期选举前 10 天在线搜索结果中系统性政治偏见的证据。西方心理学协会第 99 届年会,加利福尼亚州帕萨迪纳,2019 年 4 月 26 日。
- https://badassdatasscience . com/2018/05/12/using-ai-to-measure-fan-sizes-at-music-festivals-and-discoques/
- https://badassdatasscience . com/2012/03/10/ai _ and _ algorithm-ecologists/
- https://blogs . scientific American . com/root-of-unity/even-kids-can-understand-that-algorithms-can-be-biased/
- https://medium . com/synced review/2018-in-review-10-ai-failures-C18 faadf 5983
- https://www . telegraph . co . uk/technology/2018/11/25/Chinese-business woman-被告-乱穿马路-ai-camera-spots-face/
- https://www . nytimes . com/2018/03/19/technology/Uber-driver less-deadline . html
- https://www . Reuters . com/article/us-Amazon-com-jobs-automation-insight/Amazon-scraps-secret-ai-recruiting-tool-show-bias-against-women-iduskcn 1 MK 08g
你从事哪种数据科学?
原文:https://towardsdatascience.com/what-kind-of-data-science-do-you-practice-5b2188a68c56?source=collection_archive---------16-----------------------
超越工具和技能到专业领域
Photo by Philip Swinburn on Unsplash
对数据科学的描述通常集中在数据科学家使用的工具以及他们为工作带来的技能上。但是,如果我们将注意力转移到数据科学中相对较少受到关注的部分会怎么样呢?如果我们开始用我们处理的数据类型来丰富我们的对话,会怎么样?这样做可以解决许多关于数据科学的模糊之处,同时将数据科学职业的讨论置于背景中。
数据科学通常通过它所使用的工具来描述
数据科学家的工作无疑是热门的。但也许由于数据科学家从事的活动多种多样,每个人似乎都有不同的定义。许多描述都涉及数据科学家拥有的技能集——数学、编程、可视化——或他们使用的工具——机器学习、统计学、大数据生态系统。一些人关注于科学方法:提出一个问题,形成假设,测试,评估,重复。其他人将数据科学的巨大影响与洞察力、发现和数据挖掘等术语联系起来。
通过技能和工具的使用来描述数据科学是有帮助的,但还不够
关注工具、方法和影响有助于为数据科学家提供一幅图景。事实上,技能集的描述在形成我们目前对数据科学的看法方面发挥了重要作用。数据科学维恩图的早期设计者认识到了在有定量思维的个体中发生的一场运动,以及他们正在产生的巨大影响,将几个已经很好定义的核心学科置于重叠的安排中。这些定义新兴数据科学的早期尝试帮助它走上了正轨。然而,数据科学不仅仅是算法、深思熟虑的可视化和编程技巧。它还需要对数据有深入的了解,这也可能被称为领域专长。
定义科学家(即领域专家)的是观察,而不是工具
如果你把对一个数据科学家的描述归因于一个原型科学家,一个普通的非数据科学家(如果有这种东西的话),它们会是一致的,也许是准确的,但最终相对来说没有什么信息。这些描述与其说是这份工作的亮点,不如说是日复一日的科学工作。相反,非数据科学家的好奇问题是他们研究什么?事实上,科学家观察到的数据类型是从广义和狭义上将一门科学与另一门科学区分开来的东西。比较科学的主要分支,他们的专业兴趣的目标在不同的数据领域,在不同的观察领域。我们能以类似的思路谈论数据科学吗?
通过数据描述 DS
大多数公司都有商业模式,包括雇佣数据科学家的公司。这些模型产生其业务特有的数据。金融、自动驾驶车辆、路线优化、制药工程、流式音频和视频的订阅服务、个人级别的推荐引擎;这些领域产生各种数据,导致不同的数据科学活动。你的工作重点是视觉物体跟踪的方法吗?预测?推荐?多模态预测?你在做什么样的数据科学?
找到一个开始的地方
初露头角的数据科学家最常见的问题之一是如何开始。虽然大学项目和数据科学训练营已经开始为未来的数据科学家整合课程,但仍有许多问题需要解决。学习一些编程语言和机器学习的基础知识是一个良好的开端,但并没有为帮助新人获得职位的额外知识提供多少方向。根据数据科学家处理的数据类型来定义他们,可以帮助个人确定专业目标,缩小需要重点发展的技能集,从另一方面来说,可以鼓励工作描述中出现的语言标准化。申请数据科学工作时,能够谈论你申请工作的数据类型会有所帮助。
技能的跨领域转移
类似地,将数据科学家处理的数据类型描述作为其头衔的一部分,将赋予数据科学家这个普通标签更大的意义。有了这些信息,共享数据类型但生活在不同行业的企业将能够更快地评估求职者的适合度。同样,这将有助于让数据科学家了解他们自身经验之外的领域,他们的技能可以在这些领域得到有效应用。数据科学家的价值在于他们所产生的影响,他们对某个领域的知识或直觉越多,这种影响就越大。
既不新也不全
关于数据科学的思考方式并不新颖。之前的作者讨论了数据科学与 science⁴的比较,而其他人则建议根据其用途来定义什么是“数据科学——例如,数据科学家向 do,"⁵支付什么报酬,或者他们 create⁶.的产出是什么这些都与借用已建立的科学分类法并沿着观察轴线寻找相似线的想法产生了共鸣。沿着这些轴,仍然需要额外的描绘特征,这可能是根据 performed⁷的工作类型或所需的职责。
随着数据科学领域和数据科学家从事的领域的发展,我们用来描述数据科学家工作的语言也需要发展。这里提出的建议是开始包括反映数据类型、观察或目的的术语,这些术语与正在进行的工作类型最相关。
[1]http://drew Conway . com/Zia/2013/3/26/the-data-science-Venn-diagram
[2]https://www . kdnugges . com/2016/10/battle-data-science-Venn-diagrams . html/2
[3]https://towards data science . com/why-you-should-not-a-data-science-通才-f69ea37cdd2c
[3]https://towardsdatascience . com/is-data-science-a-real-science-2920 bb 2529 aa
[5]舒特,雷切尔和奥尼尔,凯茜(2014)。做数据科学。加利福尼亚州塞瓦斯托波尔奥莱利媒体公司
[6] Garten,Yael (2018)数据科学的种类。哈佛商业评论https://hbr.org/2018/11/the-kinds-of-data-scientist
【7】https://www . LinkedIn . com/pulse/one-data-science-job-donts-fit-all-Elena-GRE wal/
最大似然背景下的高斯过程是什么样的东西
原文:https://towardsdatascience.com/what-kind-of-thing-is-gaussian-process-in-ml-context-explaining-through-ml-analogy-488b261b1717?source=collection_archive---------31-----------------------
机器学习(ML)学生通过 ML 类比对 ML 人的解释
认知状态:在我开始写这篇文章之前不到 50 个小时,我开始学习高斯过程。所以很明显我在写这篇文章的时候不够资格,而且过于固执己见。与其说这是什么,不如说这是给我自己的一个提示。
TLDR :一个函数生成器生成无限多个函数。一个函数生成器生成无穷多个函数生成器。这就是高斯过程。它还附带许多便利的额外津贴。
Photo by Barna Bartis on Unsplash
为什么我要写这个(你可以跳过这个)
Photo by Rezel Apacionado on Unsplash
我喜欢维基百科,因为我是一个整体思考者。这意味着,为了学习一些东西,我需要完全了解上下文,而维基百科总是给我这一点。至少大部分时间是这样。
例如,维基百科会告诉我番茄是一种浆果。现在,在点击了浆果上的链接后,我知道番茄是一种什么东西了。以此类推,它与葡萄、醋栗、黄瓜、茄子(茄子)和香蕉同属一类;但不是草莓和覆盆子。
不幸的是,高斯过程本身就是一个巨大的话题。所以维基百科页面并没有对我熟悉的任何东西做任何引用(这只在机器学习中)。这意味着我必须浏览 YouTube 视频和博客文章,试图理解这个东西是什么(查看列表末尾)
信号发生器
今天,我们将以不同的方式来看待回归任务。我们将围绕一个叫做“函数发生器”的东西进行讨论。
A function generator can generate infinitely many functions.
在大多数有监督的 ML 回归任务中,我们需要类似函数生成器的东西,尽管我们通常不会这样做。函数生成器可以生成无限多的函数。我们需要它,因为通常,任务是找到数据集背后的潜在功能。因此,希望由我们的函数生成器生成的函数中有一个与我们试图寻找的函数足够相似。
Examples of function generators.
例如,在 2D,线性回归是一个函数生成器。它可以生成无限多的线性函数。回归的目标是找到一个最适合我们数据集的单一线性函数。另一个例子是神经网络。神经网络结构可以生成无限多的网络,这些网络基本上是函数,由偏差和权重决定。同样,我们的目标是找到一个最适合我们数据集的网络。
通常,在这一点上,我们谈论参数。参数如何准确地告诉函数生成器要生成哪个函数。通常我们会把整个问题归结为寻找最佳参数,而不是寻找最佳函数。然而,GP 是众所周知的非参数的,尽管有些人认为它有无限的参数。所以我们不会讨论参数,至少不是以我们通常理解的方式。
函数发生器
Function-generator generator and 2 examples.
现在我们知道了什么是函数生成器,我想引入一个新的概念:“函数生成器”。例如,我们可以将线性回归函数生成器视为多项式函数生成器的乘积,其阶数设置为 1。类似地,我们可以想到一个神经网络函数生成器,它可以生成任何类型的神经网络,它所需要的只是架构的描述。
通常,用这些术语来思考有点可笑。但是现在,我们确切地知道高斯过程是什么,它是一个函数生成器。它可以生成无限多的函数生成器。它所需要的只是一个叫做协方差矩阵的特定矩阵,它可以由一个叫做核函数的函数生成。
Gaussian Process as a function-generator generator
6 specific functions that could be possibly generated from a function generator that is generated from Gaussian process using a periodic kernel function https://peterroelants.github.io/posts/gaussian-process-kernels/
我在这里做了很大的简化,但是内核函数,基本上是接受两个数字作为输入,输出一个数字的函数。但是,在这里,我们可以把它看作一个超参数。选择使用哪个核函数就像选择神经网络架构一样。下面是一些内核函数的例子(更多https://peterroelants . github . io/posts/Gaussian-process-kernels/请查看此页面)。此外,查看这两个链接以获得更多示例:【https://youtu.be/clMbOOz6yR0T2https://youtu.be/e7as_wY0hUI
3 specific functions that could be possibly generated from a function generator that is generated from Gaussian process using an exponentiated quadratic kernel function https://peterroelants.github.io/posts/gaussian-process-kernels/
Different kernel functions on the same datapoints, leading to different predictions. http://krasserm.github.io/2018/03/19/gaussian-processes/
根据选择的内核函数,推断的预测可能会有所不同,如下所示(查看本页了解更多解释http://krasserm.github.io/2018/03/19/gaussian-processes/):
这是高斯过程最有趣的一点。一旦我们有了函数生成器,我们不需要使用任何梯度下降来确定一组参数,最终得到一个函数。相反,我们使用数据集来排除所有不符合数据集的函数。我们剩下的,是所有的函数,仍然无限多,适合我们的数据集。接下来,对于特征空间 x 中的每个点,我们可以取无穷多个函数的*均值,并将其用作我们的预测。此外,我们还可以看到这些函数的分布。
(不幸的是,由于我们没有减少参数,所以每当我们想要进行预测时,我们都需要计算整个数据集。这个问题已经引起了高斯过程的许多变种。)
高斯过程附带了许多附加功能。如果我们考虑到我们的数据集中存在一定程度的噪声,而不是简单地给我们一个无限的函数集,高斯过程可以在每个函数上附加一个概率值。这就是为什么最标准的定义是:
高斯过程是拟合一组点的可能函数的概率分布。
到目前为止,您应该对高斯过程是什么样的东西,以及它如何与典型的 ML 框架相关联有所了解。现在,你已经准备好进入高斯过程实际工作的细节。下面是让你更进一步的资源。
资源
- https://youtu.be/4vGiHC35j9s这是 2013 年南多·德·弗雷塔斯在 UBC 教授的一门课。对那些数学爱好者来说非常好。可惜不是我。
- https://youtu.be/92-98SYOdlY理查德·特纳教授的教程,他是这方面的专家。它对高斯过程是如何工作的提供了极好的直观见解。这正是我在了解高斯过程是什么样的东西之后所需要的。这里的基本上是教程上的一个注释。
- https://youtu.be/vU6AiEYED9E这个系列是一个极好的资源!它给了我一个很好的上下文,更高层次,从数学角度鸟瞰高斯过程。正是我所需要的,前提是我有良好的数学背景。对我来说(开始)最有用的部分是第三个视频https://youtu.be/clMbOOz6yR0,因为它就像高斯过程的 Hello World。整个交易只用了 25 行 MATLAB 代码。
- https://kat Bailey . github . io/post/Gaussian-processes-for-dummies/只是另一种视角。
- https://towards data science . com/an-intuitive-guide-to-Gaussian-processes-EC 2 f 0 b 45 c 71d又一个视角。这确实证明了高斯过程的威力,它可以用许多不同的方式来探索。
确认
所有图片属于我,除非标题中另有说明。
Python 中有哪些库可以加载图像,它们有什么区别?
原文:https://towardsdatascience.com/what-library-can-load-image-in-python-and-what-are-their-difference-d1628c6623ad?source=collection_archive---------2-----------------------
总结和比较。 imread()
Waiting for your polaroid to develop is like loading images via libraries — Photo credit: Markus Spiske
当我们面对计算机视觉项目时,首先需要在任何预处理之前加载图像。
有各种各样的库可以执行imread()
。在这里,我想巩固加载图像的流行库和它们的区别。这篇文章将介绍:
- 用于加载图像的库
- 彩色通道
- 效率
- Cheatsheet!
用于加载图像的库
有四个库通常用于加载图像。
- Matplotlib —
plt.imread()
- OpenCV —
cv2.imread()
- 枕头—
Image.open()
- scikit-image —
io.imread()
import matplotlib.pyplot as pltimg = plt.imread(img_dir)
import cv2img = cv2.imread(img_dir)
from PIL import Imageimg = Image.open(img_dir)
from skimage import ioimg = io.imread(img_dir)
彩色通道
加载图像后,通常会使用plt.imshow(img)
来绘制图像。让我们来策划一些 doge !
您可能会发现上面的 OpenCV 图像看起来很奇怪。是因为 matplotlib、PIL 和 skimage 是按照 RGB (红、绿、蓝)顺序表示图像的,而 OpenCV 是相反的顺序!( BGR —蓝色、绿色、红色)
容易解决
在使用plt.imshow()
绘图之前,只需使用cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
将图像从 BGR 转换成 RGB。
From blue to yellow doge
new_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)plt.imshow(new_img)
效率
所以,你可能会问哪一个是加载图像最有效的库。这里定义了一个函数来跟踪时间:
**import** **time**
**def** test_read_image(imgfile, func):
t0 = time.time()
img = func(imgfile)
**return** img, time.time() - t0
结果如下:
+------------+--------------+---------+
| Library | Function | Time |
+------------+--------------+---------+
| matplotlib | plt.imread() | 0.02254 |
| OpenCV | cv2.imread() | 0.01096 |
| Pillow | Image.Open() | 0.00166 |
| Skimage | io.imread() | 0.01463 |
+------------+--------------+---------+
枕头— Image.Open()
根据结果,似乎是最有效的。为了更深入的研究,我们可能会回到源代码中找出更多的不同之处!
备忘单
我已将以上信息组合成一个 Jupyter 笔记本。请随意下载 cheatsheet 和快乐编码!
来源:
https://blog.csdn.net/renelian1572/article/details/78761278
https://github . com/Zhang xinnan/learn practice/blob/master/cv/opencv/test _ cvlib . py
是什么让我意识到 UBI 是一个好主意
原文:https://towardsdatascience.com/what-made-me-realize-ubi-is-a-good-idea-cf785683c235?source=collection_archive---------43-----------------------
为什么 UBI 是每个社会的未来
UBI = Universal Basic Income = a policy where everyone gets a certain amount of money every month
几周前,我在考虑 UBI,当时我不确定这是不是一个好主意。但是现在我知道了,它确实是。
我通过反思自己的经历认识到了这一点。
所以,大约两年半前,我开始全职做优步。那时候,就在我离开前一份工作后,压力真的很大。
我每个月挣 500-600 美元,这肯定比我的花费要少。每个月,我银行账户里的钱都会变少。那是相当伤脑筋的。
但是过了一段时间,我开始每个月都能赚很多钱,而且每个月也能存一点。
当这种情况发生时,我有了更多的精神空间来关注其他事情——我的人际关系、旅行、听音乐,以及探索我的不同兴趣。
我最*开始主持一个播客,我开始从我的常规视频制作不同种类的视频,我甚至开始考虑制作音乐。
基本上,我变得更有创造力,因为我不再需要太担心我的收入了。
I’m thinking of learning to play guitar, too
然后我想,如果每个人都有一样的东西呢?
如果每个人都得到保证,比如说每月 3000 美元,会怎么样?
然后,我认为我们都能够花更多的时间做我们喜欢的事情——比如花更多的时间与朋友和家人在一起,看电影,听音乐,等等。我相信这不仅会带来更健康的生活方式,还会带来更多的创造力。
在那样的社会里,没有人会被困在自己讨厌的工作中。
没有人会为了收支*衡而被迫每周工作 80 小时。
现在一个月 3000 美元可能太贵了,但最终不会贵的。
这是因为随着人工智能和自动化变得越来越先进,每个选择工作的人将能够用更少的时间生产更多的东西。
经过足够的技术发展后,每个人每月 3000 美元应该是任何发达国家都能负担得起的。
正如我之前所说的,现在每月 3000 美元可能太贵了,但我认为即使每月 500 美元或 1000 美元也能帮助很多人。
Do you think most people struggle financially just because they are lazy? I don’t think so.
当然,仍然有这样的问题:
- UBI 是否优于类似的建议,如负所得税?
- 最好的资助方式是什么?
- UBI 应该优先于其他社会项目吗?
但是,我相信 UBI 将是未来显而易见的发展方向。
让人们摆脱贫困,让人们拥有更健康的生活方式,创造一个更具创造力的社会。谁不想这样呢?
是什么让一部电影一炮而红?用多元线性回归从数据中学习
原文:https://towardsdatascience.com/what-makes-a-movie-hit-a-jackpot-learning-from-data-with-multiple-linear-regression-339f6c1a7022?source=collection_archive---------14-----------------------
Photo by Denise Jans on Unsplash
我必须提到的第一件也是最重要的事情是——这篇文章是为那些愿意踏上数据分析之路并想知道为什么终极指南不能以正确的方式工作的完全初学者写的。通过一些小的调整,我将展示如何创建具有大量独立变量的多重线性模型,并指出您可能会遇到的一系列错误。
这是我们的计划——如果你觉得熟悉,你可以跳过:
- 多元线性回归的一些背景;
- 阅读。RData 文件并将其转换为 DataFrame
- 快速解释性数据分析;
- 寻找缺失的价值;
- 处理分类变量;
- 建立回归模型;
- 可能影响模型预测的因素;
- 可能有用的 r 代码。
一些背景
在开始之前,我想回顾一下关于多元线性回归概念的重要细节。我们使用多个独立预测器(表示为 x1、x2、x3、…)来预测因变量 y 的值。通过分析,MLR 找到了最“符合”数据的直线。残差是观测值和预测值之间的差值,因此残差*方和越小,模型就越精确。
为什么我们要考虑残差*方和?答案很简单:通过*方剩余值,我们以同样的方式处理正负差异。
有两件重要的事情你必须牢记在心:
- 共线性:当两个预测变量彼此相关时,称它们共线。记住,预测器也叫自变量,所以应该是相互独立的。包含共线预测因子使模型估计变得复杂。记住:独立很重要!
- 简约:避免添加相互关联的预测值,因为添加此类变量通常不会给表格带来新内容。简单地记住奥卡姆剃刀原理:在同样好的模型中,我们想要选择具有更少变量的模型。
关于数据集
对于这个 MLR,我将使用数据集,其中包括 2016 年之前制作和发行的 651 部随机抽样电影的信息,这些信息取自烂番茄和 IMDB 。我的数据集进来了。RData 文件格式—要打开数据,我们首先需要将其转换成 Pandas 数据帧。为此,“pyreadr”库就派上了用场。
提示 :当“将 stats models.api 导入为 sm”时,您可能会遇到“导入错误:无法导入带有 pip 安装包的名称‘factorial’”的问题。它必须对最新版本的统计模型做一些事情——要解决这个问题,您需要将当前版本的 scipy 降级。
可以通过键入: python3.6 -m pip 安装 scipy==1.2 —在您的终端中升级 或者如果您使用的是 Jupiter 笔记本,请将“conda”而不是 pip。
解释性数据分析:特征选择
显然,我们不必为您的模型考虑 32 个变量中的每个变量——将它们包括在统计分析中没有任何意义,因为它们是出于信息目的而给出的。正确的问题是:我的模型应该考虑哪些变量?
首先,让我们看看我们的数据集。
Codebook for Movies dataset
乍一看,数据似乎包含许多高度相关的因变量。如果我们看到变量之间高度相关,我们就选择一个,舍弃其他的。为了找到相关性,我们使用皮尔逊相关:
从上面的热图中,我们看到有两组变量彼此高度相关:
- ['imdb_rating'],['critics_score'],['audience_score']
- ['dvd_rel_year'],['thtr_rel_year']
请记住,MLR 声明我们确实需要独立变量,因此我们需要保留每个组中的一个变量,去掉其他变量。
从我个人的观点来看,我会继续留在['imdb_rating']。我们会放弃什么?
注意,我必须删除所有三个时间序列变量(['thtr_rel_year ',' thtr_rel_month ',' thtr_rel_day']),因为这违反了误差相互独立的经典假设。换句话说,年、月和日是高度共线的——这将导致不好的影响。请记住,我们需要注意,我们所有的变量都是独立的,而不是高度相关的!这些是连续变量,在这个问题上,我们应该用更先进的统计方法来处理它们。你可以在我在 StackExchange 上创建的标签中详细了解这一点。
鉴于这种假设,我将提出几个变量,并放弃其他变量。对于我未来的模型,我选择了:
特征矩阵:
- title_type —(作为影片的 id);
- 流派;
- 运行时;
- best_pic_nom(作为优秀的资源它可以带来新的观众);
- top200 _ box
- 导演;
- actor1
因变量:['imdb_rating']。
对于这一步,我为两者——特征矩阵和因变量——创建一个数据框架,除非我处理缺失值。原因是,在处理缺失值时,我们必须删除每个列的中的所有行,以保持我们未来的两个数据帧(特征矩阵和因变量)具有相同的形状。
因此,当我们开始处理数据框架并删除那些我们在模型中不会考虑的变量时,我们就到了这一点。
从熊猫库中选择特征有两种方法:
- Data.iloc[
,
] —如果您知道变量的索引(注意。当选择一行时,iloc 返回 Pandas 系列,当选择多行时,或者如果选择任何完整的列,则返回 Pandas 数据帧。) - Data.loc[
,
]-使用按行/列名称标记的数据
寻找缺失值
因为如果我们要求基于包含 nan 的数据构建回归模型,回归函数将简单地引发 MissingValueError,所以我们必须提前关注它们。
从给定的结果中,我们看到(总计)我们有 5 个缺失值,分布如下:一个在['运行时'],两个分别在['导演']和['演员']。
正如算法所建议的,我们简单地用下面的函数删除它们。关键是:由于我们有足够多的观察值,丢失的值不会对整个范围产生太大影响,因此我们可以删除它们。
注意,指定 ' inplace=True '参数非常重要,如果不这样做,什么都不会发生,您将会得到与之前相同数量的缺失值。
将分类变量视为虚拟变量
现在是时候把我们的数据集一分为二了:特征矩阵和因变量。特征矩阵仅包含用于建模的变量,而因变量是我们试图预测的变量。
有两种方法可以执行从分类变量到哑变量的转换。一种是使用 pandas.get_dummies()函数——但是,它增加了数据的可变性,并且纯粹通过 scikit-learn 执行(注意,我并不是说我不工作,您只是最终得到了更高的均方误差)。为此,我使用了 scikit-learn 库中提供的另外两种方法。
第一步。标签编码
第一步是标记 1 分类变量的所有级别—labelencorder()用 0 和 n_classes-1 之间的值对标签进行编码。这仅仅意味着:具有 10 个级别的分类变量(“戏剧”、“喜剧”等)。)将被标记为从 0 到 9。
提示,你可以用这个方法一次迭代一列!
开始吧,我们不再有任何词语,只有数字。你可能会问:“为什么我们不继续使用标签编码变量呢?”
答案是,对于任何统计测量,那些具有更高标签(比如 9 代表悲剧)的变量将会有更高的结果——这对你的回归分析来说将是一场灾难。
第二步。一键编码
作为推论,下一步是使用一个热编码器来执行类别的“二进制化”,并将其作为训练模型的特征。使用这段代码,您最终会得到一个包含 0 和 1 值的列的花名册。
第三步。标准化
最后,我们完成了分类特征。现在,在我们将所有东西插入模型之前,还有最后一步。来处理一个连续变量(['runtime'])。为了使它标准化,我们将使用 StandardScaler()方法。
换句话说,标准化以标准差的形式告诉我们每个值离*均值有多远。
这里有一个重要的提示:**如果你用结束你的最后一行代码。fit_transform(这里什么都没有)。您会得到一个错误—所有的值现在都变成了零!直观上,这没有错,但背后有一个问题——对于从数组中减去的每个数字,都是这个数字的*均值,它等于数字并除以这个数字的标准偏差。为了克服这一点,你需要把它从(1,n)转换成(n,1)。
毕竟,您需要将所有特性连接在一起(就像在 SQL 中一样):
最后,你的回归模型来了:
****提示:当使用 pandas 编码时,有一个经验法则删除一个变量——很简单,因为你的一个变量变成了一个参考级别。在跟随过程中,您可能会注意到我们没有这样做,因此我们将 fit_intercept 设置为 False。如果是熊猫编码,你应该把它改成“真”。更多详情在此。
为了测试我们的模型的性能,我们将预测值与观察值进行比较:
在我们的例子中,MSE = 1.20 。一种可能的解释是,我用≈ 1 的误差来估计电影的 imdb 评级。Mhh,有意思!我们该如何解释呢?换句话说,正如我们从 basis STAT-101 课程中所知,均值对异常值过于敏感。这意味着在我们的例子中,观众评分较低的电影在数据上有更多的可变性,导致纯粹的预测值。为此,我们计算中值*方误差。正如您可能检查的那样,在我们的例子中,它小于 0.4。这意味着我们的模型表现很好,可以随着更多的数据进入模型而得到改进。
可能导致模型不准确的因素
****需要更多的数据:我们需要包括更多的变量,以获得最佳的预测(例如,我们可以包括时间序列变量,但是——我们知道相关性很低——它不会对我们的模型产生太大影响)。
****糟糕的假设:为了检查我们所有的变量是否不共线,我们可以执行 MLR 诊断(有一个强烈推荐的视频将引导你通过)&去掉那些没有给模型带来新东西的变量
****缺少特征:我们使用的特征与因变量的相关性不是最高的。有两种可能的解决方案:我们可以在网上寻找更全面的数据集,或者我们可以建立一个 web scraper:)
对于那些更熟悉 R 编码的人,我使用 R studio 做了更详细的分析。你可以点击链接查看。
数据集可以在这里找到。
什么构成了一个活跃的时间银行?
原文:https://towardsdatascience.com/what-makes-an-active-timebank-49a98eba8502?source=collection_archive---------21-----------------------
使用线性回归识别活动时间库的预测值
(Source: DC TimeBank Facebook page)
在这篇文章中,我解释了我收集数据的过程,特征工程,以及使用线性回归来识别活动时间银行的预测器。但是首先…
什么是时间银行?
毫无疑问,当我说我正在做一个关于时间银行的项目时,有人问的第一个问题是,“什么是时间银行?”
如美国时间银行网站所述:
“时间银行是一种基于时间的货币。给别人一个小时的服务,得到一次积分。”
你以前可能听说过时间银行或类似的系统,与互助网络、技能共享、本地交换交易系统(let)或共享经济等术语相关联。
辛辛那提时间商店是一家从 1827 年到 1830 年经营的实验性零售店。它使用“劳动纸币”作为货币,被认为是其他 let 的前身,包括时间银行和现代加密货币。
(Source: “Cincinnati Time Store”, Wikipedia)
20 世纪 90 年代,Edgar Cahn 注册了“时间银行”一词,并成立了美国时间银行,推动了美国的这一运动。他在人们修复世界播客的“按时运行而不是按钱运行的银行”一集中解释了他的动机。在经历了一次限制他工作能力的心脏病发作后,他反思了资本主义:“一种珍视稀缺资源、贬低更丰富资源、将真正丰富的资源视为一文不值的货币体系。我突然意识到,这意味着它贬低了作为一个人的价值,因为我们并不稀缺。也许我们需要一种重视作为一个人意味着什么的钱。”
Cahn 确定了时间银行的五大核心价值:
- 资产:我们每个人都有一些有价值的东西可以与他人分享。
- 重新定义工作:有些形式的工作是不容易用金钱来支付的,比如建立强大的家庭、振兴邻里关系、让民主发挥作用、推进社会公正。时间积分是用来奖励、认可和表彰这项工作的。
- 互惠:问题:“我能为你做些什么?”需要改变,所以我们问:“你也会帮助别人吗?”向前付出可以确保我们共同帮助彼此建设我们共同生活的世界。
- 社区/社交网络:互相帮助,我们重新编织支持、力量和信任的社区。社区是通过扎根、建立信任、创建网络来建立的。
- 尊重:民主的核心和灵魂在于尊重他人。我们努力尊重人们此刻所处的位置,而不是我们希望他们在未来某个时刻所处的位置。
我们为什么要关心?
目前在美国,许多人担心社会和政治分化似乎在加剧。与此同时,人们仍在应对美国历史上时间最长的政府关闭的影响,未来还有另一次可能的关闭。时间银行提供了在社区内加强联系,(重新)建立信任和关系,以及创建支持系统来帮助满足日常需求和从危机(政治、自然或其他)中恢复的可能性——而不依赖于金钱、市场或国家。
1995 年芝加哥热浪夺去了数百人的生命,随后,埃里克·克兰伯格研究了 T2 不同社区之间的死亡率差异。Little Village 是该市死亡率最低的城市之一,每 10 万居民中有 4 人死于高温。与此同时,紧邻的北劳恩代尔区是死亡率最高的地区之一,每 10 万居民中有 40 人死亡。
克兰伯格将这种差异归因于社会和空间环境的差异:
*几十年来,大多数热浪死亡率高的非裔美国人社区都被雇主、商店和居民抛弃了。抛弃、分散和衰退的社会生态使得社会支持系统极难维持。
自然的力量当然发挥了主要作用。但是这些死亡不是上帝的行为。数百名芝加哥居民孤独地死去,躲在锁着的门和密封的窗户后面,与朋友、家人和邻居失去联系,没有公共机构或社区团体的帮助。这一点都不自然。
时间银行的核心是建立强大的支持系统。在 2010 年和 2011 年坎特伯雷地震之前,利特尔顿时间银行已经组织了该镇 10%的居民和 18 个组织。由于已经开发的网络,时间银行能够在地震发生时迅速动员社区成员。他们已经知道该检查谁,以及如何最好地利用人们的技能。值得注意的是,时间银行还在急救人员离开后很长一段时间内实现了持续的支持和恢复。
Community members organize using resources provided by the Lyttelton Time Bank after the Canterbury earthquakes in New Zealand (Source: Developing Local Partners in Emergency Planning and Management)
虽然我们不知道芝加哥热浪在时间银行或类似系统存在的情况下会有不同的结果,但利特尔顿的例子表明时间银行可以成为社区安全、弹性和恢复的强大贡献者。
Cahn 分享了时间银行的其他成功案例:
在芝加哥,127 所学校让五年级学生帮助三年级学生学习字母表,几乎消除了特殊教育。
在华盛顿特区青少年法庭陪审团任职的青少年有助于减少累犯。该计划将再次逮捕率从 34%降至 6%。
美国时间银行最*也与 Seva Exchange 正式建立了合作关系,“这是一个利用人工智能和区块链技术的*台,通过为现代数字经济重塑时间银行服务来激励全球志愿服务。”Seva Exchange 正在研究基于时间的加密货币如何提供一种普遍的基本收入形式,与国家福利体系分开运营。
是什么造就了一个活跃的时间银行?
现在我们已经了解了一些背景信息,让我们开始研究我的项目吧。
数据收集
这个项目主要关注美国时间银行的数据。虽然有其他*台列出了更多的时间银行(如 hOurworld 和 Community Exchange System ),但它们没有那么多关于单个时间银行的集中和公开信息。
我首先翻阅了 TimeBanks.org 目录的所有页面,得到了*台上所有时间银行的初始列表。然后,我创建了一个每日刮刀,在每天开始时获取以下内容的更新:
- 交易数量、时间、会员、报价、请求、最后一次交易
- 按类别列出的聘用、请求和人才
- 所有出价和请求列表
我手动收集了时间银行页面上脸书和推特账户的数据。这一决定最初是由脸书对自动数据收集的限制促成的。然而,这成为了一个了解更多不同时间银行的机会,考虑到拥有社交媒体账户的时间银行数量相对较少,这是可行的。
美国时间银行的地理定位和人口普查数据是使用geo codeo编制的。我从新西兰统计局收集了新西兰的人口估计。这些将用于项目的未来开发。
Map of timebanks on TimeBanks USA (Source: TimeBanks USA Directory)
加工和特征工程
详见清洁&特征工程笔记本。在这个笔记本中,我生成新的特征并将收集的数据合并到一个文件中用于建模。
我得到了复合情绪得分(使用 VADER 的SentimentIntensityAnalyzer
)和每个 timebank 的使命陈述和笔记的字数。虚拟变量表示每个时间银行是否列出了电话号码、赞助商、二级网站、脸书账户或 Twitter 账户。我还计算了每日交流次数的*均值、每天交流的小时数、每次交流的小时数、出价数、请求数、出价与请求的比率以及每天新会员的数量。其他功能包括每个 timebank 的父类别数、总类别数(父类别和子类别)、包含聘用和请求的类别百分比,以及每个成员每个父类别的总人才数。
探索性数据分析
这个项目的工作是一个高度迭代的过程。我在数据收集、处理、特征工程等过程中使用了探索性数据分析。 EDA 笔记本包含将用于建模的组合数据的分析和可视化。这包括将所有时间库的数据与非活动和活动时间库进行比较。由此,我预计为所有时间银行和活动时间银行创建单独的模型将提供有用的见解。
A comparison of some features for ALL timebanks (left) vs ACTIVE timebanks only (right). Note the difference in scale between the bottom boxplots.
建模
我为所有时间银行和活动时间银行创建了单独的模型。使用GridSearchCV
找到最佳参数,我尝试了使用LinearRegression
、RidgeCV
、LassoCV
、ElasticNetCV
和DecisionTreeRegressor
的模型。最终,我选择了向后特征选择的线性回归作为两者的最佳模型。
相对于没有预测因素的模型,所有时间库的最佳模型解释了数据中 54.3%的可变性。该模型预测*均每日交易次数将随着以下因素而增加:
- 更多请求
- 报价减少
- 每次交换的时间更长
- 一个被列出的电话号码
- 笔记字数更多
相对于没有预测器的模型,活动时间库的最佳模型解释了数据中 39.8%的可变性。该模型预测*均每日交易次数将随着以下因素而增加:
- 脸书喜欢的人更少
- 更多的脸书追随者
- 更多请求
- 报价减少
- 被列名的赞助商
摘要
考虑到这个数据集中相对较少的时间库(总共 156 个,48 个活动的)以及它们彼此之间的差异,我并不期望得到非常健壮的模型。然而,它们仍然为活跃和不活跃时间库之间的差异提供了有用的见解,以及活跃时间库之间更多交换的潜在预测因素。我希望,增加时间银行所在社区的数据将会加强模型,并为活跃的时间银行的构成提供更多的见解。
查看流程日志,了解我的流程、挑战、问题、想法和参考资料的其他文档。
未来发展
这个项目在很大程度上是一项正在进行的工作。未来的发展包括:
- 定期收集更新的目录信息以收集新的 timebank 信息。
- 一旦收集了更长时间内的更多数据,就对列表进行时间序列分析。
- 使用自然语言处理来深入了解交换了哪些请求和提议,哪些没有得到满足,以及其他模式。
- 深入研究任务陈述和其他时间银行信息中的语言使用、框架、描述性和主动/被动语态。
- 调查附*有更多时间库的区域是否也有更多活动。
- 查看与时间银行位置相关的人口统计信息,包括人口规模和密度、失业率、房屋所有权等。
- 设置每日刮刀通过 AWS 自动运行。
邀请
我正在积极参与这个项目,并希望随着它的进展在这里提供更新。张开双臂欢迎建设性的批评、建议和思想伙伴。请随时联系。在 dawngraham.github.io 获取最新联系方式。你也可以查看这个项目的 GitHub repo。
感谢阅读!想法、问题和反馈总是很受欢迎。
什么是新闻?
原文:https://towardsdatascience.com/what-makes-the-news-6b05507724f2?source=collection_archive---------21-----------------------
Photo by AbsolutVision on Unsplash
随着智能手机和社交媒体的兴起,几乎可以在任何*台和设备上即时获得新闻。大量的新信息来源对传统新闻媒体造成了重大的负面影响;皮尤研究中心指出,自 2008 年以来,新闻编辑室的工作岗位减少了 25%。考虑到这一点,我想了解一下主要新闻媒体都写了些什么。他们写的都是同一个话题吗?如果是的话,他们是用同样的方式写的吗?如果没有,也许他们有机会扩展到新的写作主题或风格。
数据
我从 Kaggle 上的All News dataset中获得了这个项目的数据,其中包含了来自 15 个主要出版物的超过 14 万篇文章的全文。这些文章主要写于 2016 年和 2017 年,来源于各自出版物网站上的在线文章。文章分发的摘要可以在下面看到:
虽然从文章的最初部分来看,文本相当清晰,但我仍然需要解决几个在使用 unigrams 和 bigrams 进行 LDA 主题建模时可能导致潜在问题的特性。我删除了非 ASCII 字符和标点符号,以确保在后续步骤中只包含有效的单词:
主题建模
在尝试建模之前,我使用 NLTK 的 WordNet Lemmatizer 对数据进行了预处理,将单词简化为它们的基本形式。然后,我使用 scikit-learn 的 CountVectorizer 对数据进行了标记,该工具以单词袋方法生成文本中的基本单词数。这种方法创建了大约 4600 个一元和二元模型的稀疏矩阵。
我修改的一些关键参数包括 min_df、max_df 和停用词列表。我将 min_df 设置为 0.01,max_df 设置为 0.99,分别排除不到 1%和超过 99%的文档中的术语。这有助于通过消除过于具体或过于宽泛的术语(导致相同的通用术语出现在几乎每个主题中)来防止在建模中添加噪声。我进一步修改了英语停用词的基本列表,以包括媒体中常用的词,如出版物本身的名称。请参见下面的相关代码:
完成上面的预处理后,我使用了多种方法来确定哪种建模方法会产生最易解释的主题以供进一步分析。我从潜在语义分析(LSA)建模开始(参见本文对 LSA 方法的概述),它要求用户输入固定数量的主题。虽然实现起来很简单,但我发现来自 LSA 的主题不容易区分,因为相同的关键字出现在多个主题中。
然后,我尝试了一个分级狄利克雷过程(HDP)模型,看看我是否能获得更好的结果。HDP 是潜在狄利克雷分配(LDA)的扩展,旨在解决主题数量未知的情况(参见本文档了解更多信息)。它推断数据中的主题数量,而不是要求预先输入,并返回每个主题的概率。通过绘制 HDP 模型的累积结果,它返回每个主题的概率,我可以观察额外的主题是否潜在地提供了价值:
根据上面的图表,每个主题的附加值在 20 个主题后急剧下降,这似乎是一个值得研究的主题数量。然而,通读了生成的主题后,我遇到了与 LSA 相同的问题;这些话题不容易解释,而且似乎相互交融。
我通过流行的 gensim Python 包转向了 LDA 建模。根据上面的分析,我将最初的主题数量设置为 20 个,在多次调整我定制的停用词后,结果看起来很有希望。我重新运行了这个模型,增加了主题的数量,直到达到 40 个,然后检查结果,看看什么最有意义。我确定了 24 个最合理的主题,并使用 pyLDAvis 模块将它们可视化:
上面的可视化显示了每个主题的距离图,理想情况下,圆圈应该很大,并且重叠最小,以便区分。由于这些主题既有意义,又从视觉上看起来很强大,我继续解释和测试我的结果。
主题可视化
为了使解释和分析更加简单,我将上面的 24 个主题分成了 8 个主要类别(具体请参见我的 Github )。下面是每个出版物的每个类别中的文章分布图:
仅从视觉上看分布,我们可以看到出版物可能侧重于不同的类别。例如,路透社关于市场的文章比例似乎最高,而福克斯新闻频道倾向于支持选举政治。
虽然看图表足以进行粗略的分析,但我想通过多重假设 A/B 测试对出版物之间的差异进行更技术性的分析。
多重假设 A/B 检验
A/B 测试最基本的场景是在两个变量(A 和 B)之间进行随机实验,并确定它们之间的差异是否具有统计学意义。在我的例子中,我想比较来自多个出版物的每个类别的文章比率,并假设所有出版物都有相同的分布。因此,我需要同时进行多重比较,对每份出版物中足够数量的文章进行检查。
为此,我决定只测试文章数量排名前 6 位的出版物(布莱巴特、CNN、NPR、纽约邮报、路透社和华盛顿邮报)。我用 Python 创建了几个自定义函数来计算每次比较的 p 值:
然而,为了确定这些 p 值是否具有统计学意义,我需要解决多重比较产生的多重性问题。如本文的中所述,如果不正确调整所需的显著性α,A/B 测试中的每一次额外比较都会增加 I 型错误的几率。我将自定义函数与 statsmodels 的 multitest 模块相结合,对我的 alpha 进行了 Holm-Bonferroni 校正,以便进行分析:
测试结果确定了 6 种出版物之间日常生活文章比率的统计差异;没有发现任何其他类别的显著差异。日常生活用品的不同费率如下所示:
区别很明显,路透社很少报道日常生活,而《纽约邮报》和《NPR》则重点报道日常生活。
可读性级别
作为检查各种出版物的最后一步,我决定看看每种出版物的可读性水*。使用 SpaCy-readability 模块,我确定了基于出版物的 3 个指标的*均可读性:
Flesch-Kincaid 等级级别是一种常用的度量标准,通过每句话的字数和每个单词的音节数来确定可读性;更多的单词和音节意味着需要更高的教育水*。按照这个标准,路透社是最难阅读的,需要十年级以上的教育,而商业内幕是最容易的。
戴尔-查尔可读性指标也使用每句话的字数,但将这个比率乘以“难词”的比率(基于美国四年级学生容易理解的 3000 个单词的列表)。路透社仍然是最难的,而商业内幕现在排名第二。《NPR》现在是最容易阅读的,可能是因为单词的用法。
烟雾可读性指标提供了一种替代 Flesch-Kincaid 的测量方法,使用了一种基于文本中句子样本内多音节的公式。SMOG 通常更严格,可能会在某些类型的文本中提供更高的难度,如医疗保健材料。在这种标准下,《国家评论》变得最难阅读,而《谈话要点备忘录》的短文被认为非常直截了当。
这项研究的目的是看一看一组出版物的主题和可读性,并注意它们之间的差异。这为媒体公司或其他感兴趣的研究人员提供了一个机会,来研究这些趋势,看看这些出版物在未来是否有扩展的领域(例如,路透社可以考虑以更简单的格式提供日常生活文章的独立出版物或博客,这不会与主要出版物直接竞争)。有了更多的时间,我想扩大出版物的数量,并获得更多的文章,看看这些结果是否随着时间的推移在更大的媒体景观中成立。
对基础代码感兴趣的,请看我的 Github 。
是什么推动了比特币?
原文:https://towardsdatascience.com/what-moves-bitcoin-c06f7b46d2e4?source=collection_archive---------15-----------------------
通过新闻头条预测比特币。
由 巴勃罗 和 杰罗姆 。
- 替代数据探索( NLP )
- 预测模型
- 投资组合模拟( 30%收益率
- 结论
- 端的 Jupyter 笔记本代码参考
介绍
比特币是一种去中心化的加密货币,没有管理人或央行。它是由一个名叫“”的不知名用户在 2008 年创建的。比特币可以通过挖掘或通过用户之间的直接出售获得,但价格并不取决于一个潜在的或某种内在的价值,价格由供给和需求决定。
挖掘一枚比特币的过程需要两步:
- 验证 1 MB 事务的信息是否有效,这可以是一个事务或数千个事务,取决于每个事务的信息。这部分相对较快,一旦步骤二完成,这个 1 MB 的块将被添加到事务的公共信息中。
- 一旦交易信息得到验证,挖掘比特币的用户就有资格赢得比特币,但为了保持添加到“区块链”的区块数量随着时间的推移保持恒定,需要执行一个名为“工作证明的过程。在这个过程中,试图挖掘的用户需要找到一个“哈希”,一个满足程序建立的要求的 64 位六进制数。找到这个数的概率是 13 万亿分之一,所以要找到它需要很大的计算能力和资源。一旦找到“目标哈希”,新的块将被接受,找到哈希的用户将获得比特币奖励。
通过这种方式,挖掘比特币的用户保持交易有效,因此,由于能够比其他人更快地找到目标哈希所需的资源量和计算能力,欺诈变得不可行。
开采获得的奖金,每增加 21 万块就*分一半,大概需要 4 年时间。这样做的目的是比特币因其短缺而增值,在某种程度上,有限数量的比特币将存在,而不可能开采更多的*,但为了保持对矿工的激励和保持交易过程的安全,矿工将获得佣金,佣金随着开采奖金的减少而增加。*
Figure 0. Bitcoin price through time.
另一方面,随着时间的推移,比特币的走势一直非常波动。不到三年前,比特币的价格约为1000 美元,而截至 2019 年 12 月 1 日的价格约为7400 美元,升值 640%,但不仅如此,价格在不到 2 天内下跌 25%之前达到了* 19000 美元的水*。因此,比特币一直受到价格大幅变化的影响,这种波动性使得投资这种加密货币风险非常大,对寻求风险可控回报更适中的投资者来说没有吸引力。
这就是我们如何得出我们的工作假设的:
有没有可能通过新闻分析预测比特币的走势?
这篇文章的目的是通过统计模型实现不同的预测,尝试看看新闻中出现的词语与比特币走势之间是否存在联系。此外,我们试图看看它是否能帮助我们预测加密货币的未来走势,并通过投资组合将这些预测货币化。利用市场的流动性,我们将观察一笔100,000 美元的资本在比特币动态头寸中的演变。
探索性数据分析
需要特别提到的是,比特币不是在受监管的交易所进行交易,而是直接在用户之间进行交易,“点对点”,其中绝大多数是钱包用户。由于这个原因,比特币总是可以在一天的任何时间进行交易,为了衡量每日变化,采用了传统市场的开盘(开盘)和收盘价(价格)方法。
请记住,我们的目标变量是开仓对价格的变化,是分类变量。伴随这一变量的,还有其他定义每天比特币市场的变量。其中有高、 低等。然而,这些变量并不真正与我们的目标变量相关,显然时间序列模型可以更好地解释这些变量,然而,这不是本项目的重点。
自然语言处理( NLP )的概念就是在这里产生的。我们的模型将用于预测我们的开盘价对价格目标变量的信息来自引言中提到的报纸标题。谨慎的做法是在这里提出两个新概念。文本矢量器和 N 元语法。
文本矢量化工具只不过是一种矢量化文本的方法,值得冗余,也就是说,在某个空间中给每个单词或文本分配一个矢量。有很多方法可以做到这一点,一些技术为你的词汇表中的每个单词分配一个独一无二的向量,为你的语料库中的所有单词分配一个有趣的名字。这是一个由 0 和一个 1 组成的向量,位于你的词汇表中单词索引的相应位置。
对文本进行矢量化的一些其他方式为每个单词分配一个向量,该向量在多维空间的特定几何结构中对上下文进行编码,例如 Word2Vec 空间。在我们的特定案例中,在比特币市场开盘之前,使用了一个矢量器来计算新闻中每个词和每两个词在一天 12 个小时中的出现次数。
为了更好地理解一个单词和两个单词,我们可以检查一下 N-grams 的概念。让我们看一个下一句的例子:
“比特币是一个非常不稳定但非常有效的市场,比特币万岁”
在前一句话中,所有的 1-grams 将组成列表:
- 比特币
- 是
- a
- 很
- 有效的
- 等等。
每个单词一个条目。两个单词的列表或我们提到的两个单词将是:
- 比特币是
- 是一个
- 非常...的
- 非常不稳定
- 等等。
这些双词用于从经常出现的成对单词中提取信息,例如 New York。现在我们明白了,假设之前写的句子是 12 小时内唯一的标题。到此观察连同的价格打开,的价格和的价格成为我们的客观变量。将添加一个向量,其中计数每个 1 字和 2 字的出现。也就是说,在列mercado
的相应单元格中,它的值为 1,因为它只被提及一次,而在bitcoin
和very
列中,它的值为 2,因为它们被提及两次,因此对于词汇表中的所有 n 元文法计数都是如此。
为了更好地理解我们的数据,让我们来看看下面的 2 轴曲线图:
Figure 1. Interesting words, open, price and our target variable.
如图 1 所示,在对比特币市场价值进行观察的每一天,也会出现像 elon 等词的数量。换句话说,这个词在观察每个打开值之前的 12 小时的标题中出现了多少次。除了我们的数据集出现了 2960 个单词和 2 个单词之外,很难仅从该图中提取信息!
值得一提的是,提取这样一个干净的数据集所做的预处理并不简单,幸运的是有像open blender这样的工具来促进所有这些工作。通过对其 API 的一次调用,可以从其他新闻来源获得一组标题数据,这些数据与来自更多市场的数值混合,并具有 12 小时窗口或其他配置,该调用旨在用于 R 和 Python 用户,以便他们能够以非常流畅的方式训练 NLP 模型或其他机器学习者。
数据和目标变量直接到你的DataFrame
本例中融合了 BTC 到美元和消息。**
让我们看看 API 调用:
***import **OpenBlender**
import pandas as pd
import json
action = 'API_createTextVectorizer'vectorizer_parameters = {
'token' : 'your_token',
'id_user' : 'your_id_user',
'name' : 'News Headlines',
'**anchor**':{'id_dataset' : '5d571f9e9516293a12ad4f6d', 'include_features' : ['title']},
'**ngram_range**' : {'min' : 1, 'max' : 2},
'language' : 'en',
'**remove_stop_words**' : 'on',
'min_count_limit' : 2
}
res = OpenBlender.call(action, vectorizer_parameters)***
这个调用从新闻标题创建了文本矢量器,稍后将与比特币市场数据混合,让我们看看它最重要的参数:**
- 锚:新闻数据集的 id 和要作为源包含的特征的名称(在本例中只有' title 【T7 ')
- ngram_range :将被标记的单词集的最小和最大长度
- remove_stop_words :这样就从源头上消除了停用词
接下来, API 调用用**pullObservationsToDF()**
函数将融入比特币行情的头条信息直接带入DataFrame
:
***parameters = {
‘token’:’your_token’,
‘id_user’:’your_user_id',
‘id_dataset’:’5d4c3af79516290b01c83f51',
‘**target_threshold**’ : {‘feature’:’change’,’success_thr_over’:0},
‘**lag_target_feature**’ : {‘feature’:’change_over_0', ‘periods’:1},
‘blends’:[{‘id_blend’:’5de020789516293a833f5818',
‘**blend_type**’ : ‘text_ts’,
‘restriction’ : ‘predictive’,
‘blend_class’ : ‘closest_observation’,
‘specifications’:{‘time_interval_size’ : 3600*12 }}],
‘date_filter’:{‘start_date’:’2019–08–20T16:59:35.825Z’,
‘end_date’:’2019–11–04T17:59:35.825Z’},
‘drop_non_numeric’ : 1
}
def **pullObservationsToDF**(parameters):
action = 'API_getObservationsFromDataset'
df = pd.read_json(json.dumps(OpenBlender.call(action,parameters)['sample']) ,convert_dates=False,convert_axes=False).sort_values('timestamp', ascending=False)
df.reset_index(drop=True, inplace=True)
return df
df = pullObservationsToDF(parameters)***
这个神奇的调用正在准备 target_threshold 字典键中的目标变量,而 lag_target_feature 比它滞后了一天,让我们看看其他有趣的参数:
- id _ blend:text vector 的 id,它是第一个 API 调用的输出。
- blend _ type:‘text _ ts’所以它知道这是文本和时间戳的混合。
- *规格:过去的最大时间,以秒为单位,在本例中为 12 小时(360012)。这只意味着每一次比特币价格观察都会用过去 12 小时的新闻来预测。
OpenBlender 的灵活性允许你从大量的报纸、股票市场以及其他空间或时间序列数据集中进行这种混合。**
为了继续探索我们的数据,让我们通过显示在我们所有的 68 观察中出现更多的词语来看看我们的标题在谈论什么:**
Figure 2. Most mentioned words and 2-words throughout our sample.
很明显,我们的数据集在谈论trump
、china
和其他当前的热门问题,然而,这并不能很好地说明它们如何影响比特币市场。为了获得更好的洞察力,让我们看看 n 元图与我们的目标变量最相关和最不相关的。****
Figure 3. N-grams most and least correlated with the positive change between the opening and closing of bitcoin.
- 弹劾能否影响美元价格从而鼓励购买比特币?
- 埃隆·马斯克在比特币上有大笔投资,他的项目的成败会影响比特币吗?**
这些和其他叙述可以从更深入的 NLP 分析中产生,超出了本文的范围,我们将继续通过主成分分析( PCA) 来改善我们对数据的理解,主成分分析将我们观察到的 2900 多个变量的维度减少到 2,将它们投影到可能是我们观察到的最佳照片中。或者用另一种方式解释,最大化数据总方差的 2 个正交轴:**
Figure 4. Our database in its first 2 main components.
在这个预测中,找到一些允许我们分割我们的观测值以生成我们的目标变量的适当预测的截点似乎很复杂,但是,这两个主要成分甚至不能解释我们观测值总方差的 10% ,特别是因为每个观测值的高维度。幸运的是,我们在图 3 中的相关性让我们充满热情,我们将能够从标题中提取信息,以开发一个良好的预测。**
预测模型
请记住,我们有兴趣预测的变量是正变化(开盘价与价格),即 2 类:**
- 1 如果价格和开盘价之差为正值。****
- 0 如果是阴性。****
这个二元分类问题是用以下模型解决的:
- LDA
- QDA
- 逻辑回归
- 随机森林
这些模型使用第一个 70% 的数据进行训练,最后一个 30% 的数据按日期顺序进行测试。
上述模型中, LDA 和 Logistic 回归是线性模型,而 QDA 和随机森林不是。 LDA 和 QDA 分别指线性和二次判别分析。这两个模型试图找到一个线性或二次函数,使目标变量生成的组之间的距离最大化,同时使每个组中的密度最小化。**
其中一些模型的问题是在解释它们生成的结果时存在困难,特别是在逻辑回归和随机森林的情况下。例如,随机森林是一种生成随机决策树的模型,这些决策树以这样一种方式进行调整,即它们最大化预测结果。**
评估了所有这些模型,令人惊讶的是,所有模型中最简单的模型 LDA、被证明是预测我们的目标变量的最佳模型,准确率为 63% 。值得一提的是,其余的模型生成的精度较低,但都比随机要好。足够的证据支持我们的工作假说。现在让我们看看线性判别函数的投影观测值和 n 元图之间最重要的相关性:**
Figure 5. Correlations between n-grams and the projected observations in the discriminant function.
这些相关性可以解释如下,高相关性增加判别函数中的值,低*相关性减少该值。*******
该判别函数旨在将目标变量给定的标签用一个切割点分开,也就是说,如果 12 小时的新闻落在判别函数的顶部,我们预测价格和开盘价之间的变化将为正,而如果该值比切割点小,我们将预测变化为负。****
为了更好地理解这一预测,让我们来看看下面的区域地图,在这里我们可以直观地看到这一行为:
Figure 6. Territorial map generated from the fitted LDA model.
每个观察值,即在 12 小时的航向中出现的 N 元图被投影到在垂直轴上定义的判别函数。划分区域的切割点允许我们生成预测,即底部区域将预测变化为负,而顶部则相反。 100% 精度是所有蓝色和黑色的观察值落在较低的区域,橙色和红色的观察值落在较高的区域。尽管我们的预测有误差,但它仍然比掷硬币给出的结果好得多,参见我们的模型输出的混淆矩阵:**
Figure 7. Confusion matrix generated from the predictions obtained by the LDA model.
该图显示了我们的模型在预测中的成功和错误,在 4 种情况下该模型预测上升,事实上,它没有发生,在 3 种情况下我们未能预测下降。8 次 8 次有人预测价格会下跌,事实上它下跌了,而 4 次有人预测价格会上涨,而且上涨了。这 12 次成功,与矩阵的轨迹重合,给出了 63% 的准确度。**
投资组合模拟
作为第一步,我们观察比特币的价格是否会在第二天上涨和下跌,此外,我们还观察初始资本为100,000 美元的投资组合的演变。为了确定这种演变,我们依赖于一个动态投资组合,也就是说,这个投资组合每天都在改变头寸,因为在开市前对比特币走势的预测会更新。**
我们的动态投资组合工作如下。位置长或短定义如下:**
其中 1 的仓位代表比特币的多头仓位,也就是我们买入比特币是为了以收盘价卖出。如果我们的预测是正确的,比特币的价格上涨,这对投资者来说意味着收益,因为它将以高于购买价格的价格出售。另一方面,头寸-1 代表比特币的空头头寸,即我们借入比特币并在此刻卖出,这是我们欠另一个投资者的比特币。在一天结束时,在传统市场收盘时,我们必须购买比特币,以将它们归还给原始所有者,因此,如果我们的预测是正确的,那么这代表着一种收益,因为我们以高于回购价格的价格出售。**
让我们也看到,对于资本的演变来说,重要的是预测是正确的,并且在第一类和第二类错误之间没有区别,比如假阳性和假阴性,因为在这两种情况下,我们都会损失金钱,并且在问题的背景下,没有一个比另一个更糟。**
现在,资本的演变将发生如下变化:**
如果收益为负,并且我们的预测是正确的,那么我们在行动中持有空头头寸,这代表资本收益。让我们看到,我们资本损失的唯一方式是我们的预测是不正确的,因为这样,收益和位置相乘具有相反的符号,因此我们有完全负的表现。这里我们看到产量是分析的主要部分。如果我们正确地预测了价格低波动的日子,即低收益的日子,而错误地预测了价格高波动的日子,即收益绝对值高的日子,即使模型的精度水*大于 50%,我们也会遭受巨大的损失。**
此外,重要的是要看到我们采取什么样的假设才能模拟投资组合。回想一下,该模型是用 70 %的数据来训练的,并且该相同的模型在 30 %的剩余数据中预测每个观察值。这些假设如下:**
- 完美市场:市场反映的价格拥有所有的公开信息,也就是说,没有投资者拥有可以代表非正常利润的特权信息。此外,由于总是有供应商和索赔者,市场具有流动性。这一假设很重要,因为模拟考虑到在市场开放时,总有人想要卖出和买入,我们每天都会改变我们的头寸。**
- 空头头寸可以不受限制:空头头寸受到两个因素的限制,首先是能否找到拥有比特币并愿意借给投资者的人。
- 零交易成本:在现实生活中,如上所述,当兑换比特币时,投资者必须支付交易佣金。**
- 两个头寸的杠杆率均为 1:为了能够进行空头交易,投资者需要一定的杠杆率,这被定义为其拥有的每单位资本中以比特币借出的美元数量。对于这个模型,我们认为杠杆水*为 1,这不是对空头头寸的限制,补充了假设 2。
在下图中想象我们投资组合的表现:**
Figure 8. Evolution of our portfolio together with the bitcoin market and our predictions.
我们看到资本的演变是增加,尽管我们对资本流失的节点有不正确的预测。在代表几乎一个日历月的 18 预测观察之后,投资组合的年化收益率约为 30 % 。我们之前看到,就预测而言,最好的模型是 LDA ,其准确度为 63 %。先前的模型预测了超过 50%的测试观测值,然而,这并不意味着我们可以确保的正回报。请记住,资本的演变取决于正确的预测和每日收益率,如果预测数量增加,但在收益率绝对值更大时产生误差,那么资本的演变可能会变得递减,也就是说,具有负的月度和年度回报。**
后续步骤
我们认为,试图衡量这种高波动性加密货币的走势与媒体公开信息之间的关系是可以改进的。因此,我们建议遵循的这些可能步骤:**
- 通过添加其他媒体如、等来包含更多的信息。这样做的目的是包括不一定是商业的手段,并获得具有更多更好信息的预测模型,以更好地拟合预测模型。**
- 通过使用时间序列来微调模型。时间序列对于预测不同金融资产的收益有很大的帮助,例如, ARMA 模型可以提高精度水*。**
- 动态算法,每天用更多信息重新训练,可以实时做出投资决策。随着新信息的出现,对模型进行重新训练是很重要的,这样预测模型就可以每天提高其准确性。此外,实时决策可以帮助该模型在投资组合收益率方面变得更好,因为如果在某个时候发布了一个包含与比特币价格相关的词语的故事,就可以立即建仓。****
- ****带风险分析的动态投资组合。最后,为了降低动态投资组合的风险,考虑预测的风险是很重要的。为此,有必要继续研究一个概率函数,以了解我们的预测有多安全,实施资本的动态分配涵盖了投资者的巨大的不利回报。
结论
让我们回顾一下我们之前通过研究看到的内容。首先,我们得出结论,我们的工作假设得到了证实,因为在标题和比特币运动中出现的词语之间存在联系。这种关系存在并允许预测具有有限的确定性。我们还注意到,有一些词与比特币的走势更相关,在某些情况下,它们有一个金融解释,关于为什么它们的相关性有一个*特定的符号。*******
最佳模型是线性判别分析或 LDA 模型,其准确度水*为 63 % 。此外,我们尝试了其他预测模型,其中第一个是通过使用主成分分析或 PCA ,但团队认为该模型的结果并不重要,因为前两个主成分几乎不能解释数据可变性的 10.5 % 。
最后,我们看到,使用这些预测,我们可以看到资本为100,000 美元的投资组合的演变,并且在预测的日历月中其收益率为 30 % 。以上谈到了预测模型在金融中的可能应用,以及这些变量之间的关系可以货币化。****
来自《走向数据科学》编辑的提示: 虽然我们允许独立作者根据我们的 规则和指导方针 发表文章,但我们并不认可每个作者的贡献。你不应该在没有寻求专业建议的情况下依赖一个作者的作品。详见我们的 读者术语 。
感谢费德里科·里弗罗尔,因为这项研究是基于他的教程中的想法,在这里找到代码为的 Jupyter 笔记本。
我的数据科学学位没有教会我什么—第 1 部分
原文:https://towardsdatascience.com/what-my-data-science-degree-did-not-teach-me-part-1-3d7ff23875e5?source=collection_archive---------5-----------------------
&在开始我的数据科学职业生涯之前,我想知道些什么。
Photo by Nathan Dumlao on Unsplash
T 三年前,我从数据科学硕士毕业,满脑子都是 AI 梦想和疯狂的野心。这个学位给了我进入这个领域的知识、信心和动力,我坚信如果没有这个学位,我永远不会成为一名数据科学家。我最*写了一篇文章,讲述了我从销售工作到成为一名数据科学家的不寻常的道路,其中我也提到了我的学位以及在此期间我所面临的挣扎。
当我回首往事时,我当然看到我的主人给了我巨大的帮助,让我有了一个开始。然而,有许多相关的要点,我的学术训练并没有解决。不要误解我,我不怪大学也不怪学术团队。数据科学和人工智能领域目前的扩张速度仍然太高,学术机构无法以同样的速度适应。此外,硕士学位的时间和资源限制限制了可以教授的内容。然而,当我进入这个领域时,这份工作的许多困难或基本方面我都不知道。本文涵盖了我在数据科学领域 3 年职业生涯中发现的第一部分。
编者按:这些发现大部分是由我自己的专业经验决定的,部分来自我以前和现在的同事的经验。其他数据科学家可能经历了完全不同的问题。
访问数据有时感觉像是不可能完成的任务
访问数据是我在作为数据科学家的职业生涯中遇到的最大挑战之一,这是我在接受学术培训后从未想到的。这听起来可能有点荒谬和天真,但我相信我的利益相关者会准备好建立数据连接,让我这个数据科学家分析他们的数据集。我很快意识到我错了。关于数据可访问性或数据提取的问题通常发生在充满复杂流程和法规遵从性的大公司中。然而,不可否认的是,较小的组织也会遇到类似的问题。
The Data Scientist Utopia where Data connections are ready and data is easily accessible.
在大多数情况下,利益相关者确实希望他们的数据科学家来分析数据。他们经常 根本不知道它在哪个系统中,也不知道谁有提取和共享数据的权限。一些过时的系统可能没有可用的直接连接,因此您无法从您的脚本中查询它,必须有人手动下载 Excel 格式的数据。有时,您可能需要依赖另一个团队来为您建立数据连接。如果数据必须来自三个不同的部门,而数据库不能在部门之外访问,该怎么办?此外,出于安全目的或出于没有人愿意参与的政治事务,一个数据所有者可能不希望这些数据库被部门外的人访问。
最终,您可能会意识到,获取数据集的唯一选择是等待市场部的 Angela 通过电子邮件将数据以. csv 格式发送给您。不幸的是,安吉拉可能会休假三周,像安吉拉这样的人似乎总是很忙。过一会儿,发送礼貌的提醒可能会成为你最有价值的技能!
版本控制的重要性
Gif from Tenor.com
我毕业时对 Git 和版本控制了解不多。当我回顾我是如何处理论文版本的时候,我甚至感到有点惭愧。公*地说,有一次,一些客座讲师确实试图在那场似乎是有史以来最糟糕的讲座中教我们一些东西。这是我们第一次听说,没有人主要解释版本控制的重要性。后来我被告知,这位曾经的讲师承认了他的失败,并且那天实际上有很大的宿醉(作为学生,如果他诚实的话,我们可能会同情),这部分证明了他所做的超级混乱的讲座。
正如我在关于 PyCharm ,的文章中所说,理解版本控制伴随着使用版本控制!在我的第一个人工智能项目中,我在一个小组中学习了如何正确处理版本控制。我向更资深的队友承认,我不知道 Git 的细节,我在第一次提交和第一次合并冲突时得到了帮助。
任何学习或开始学习数据科学的人都可以从 Git 和版本控制中受益,即使是对于个别项目。如果你有机会在一个小组工作,吞下你的骄傲,寻求帮助!
拥有数据工程知识至关重要。
从来没有人提出如果我想让我的项目顺利进行,我需要做多少工程。没有人提到 Linux ,也没有人提到如何查询一个 API 。数据科学家在云*台(如微软 Azure、AWS)上工作并使用 Apache Spark 等工具也很常见。我最*写了一篇关于数据科学家需要知道的数据工程技能的文章,因为完全诚实地说,我非常惊讶于我需要多少工程技术以及这些技能在日常生活中的帮助。
[## 一个数据科学家需要了解多少数据工程?
&他/她不需要知道多少。
towardsdatascience.com](/how-much-data-engineering-does-a-data-scientist-need-to-know-93afe7fab40c)
你的团队是你成长的最佳工具!
对我来说,数据科学是一项团队事业。我在以前的文章中已经提到,我非常重视数据科学的不同背景以及集体寻找解决方案所涉及的创造力。
这是一个极其广阔的领域,不断在运动,没有一个数据科学家能够知道一切。许多专业人士甚至建议专攻一个数据科学领域(例如 NLP、深度学习),因为这将极大地帮助你在该领域脱颖而出。拥有一个在几个领域都有专业知识的多元化团队比拥有一个什么都能做的聪明人能带来更好的结果。
雇佣一名数据科学家本身并不能带来团队的力量。头脑风暴可以带来黄金。
数据科学部分是编程,部分是讲故事
Photo by Thomas Kelley on Unsplash
虽然我不得不在毕业典礼上讲故事来解释我的硕士论文,但我没有想到这种类型的故事会如此复杂、频繁和严肃。我没有意识到可能要由我来说服销售专家,让他们相信我的项目值得他们和他们客户的时间。我也没有预料到可视化在某些数据科学项目中会有多大的分量,即使你的 Powerpoint 演示非常糟糕,你的模型结果也无关紧要。我也明白了,它不再是最低生存产品,它是最低可爱产品。
我的一个同事总是说“在开始造飞机之前,让我们先造一个可以工作的滑板吧”。然而,滑板应该非常闪亮,并有一个选项,说明“我可以在某些条件下飞行”,即使它还不能。这是概念原理的证明。它需要展示目前还没有的潜在功能。
代码效率在数据科学中也很重要!
关于代码效率,我刚毕业时的知识仅限于“因为循环是不可避免的罪恶”。我知道训练神经网络和某些机器学习模型可能需要一段时间,但除了选择功能、减少数据量和要求更好的笔记本电脑,我唯一的武器是耐心。
首先,在我攻读学位期间分析的大多数数据集并不能代表大多数行业中杂乱数据集的准确情况。它们通常最多来自一两个来源,不需要大量的准备和清洗。在商业案例中,数据通常分散在各处,需要多次合并、查找、过滤、清理、特征工程。
特别是在大型复杂的项目中,如果代码没有被有效地编写,数据准备有时会花费与预测一样长的时间。
虽然我已经知道 for 循环有多邪恶,但我也学到了几个基本的 Python“技巧”,我认为这些技巧应该在任何面向数据科学的编程课程中分享。例如,使用列表理解代替普通的 For 循环,使用集合代替查找列表,可以显著减少代码的计算时间!Python 也有很棒的包,可以让你找到代码中的瓶颈(例如 cProfile)或者简单地计时你的不同解决方案,找到更快的解决方案(例如 Timeit)。
我可能只在这个领域工作了几年,但我有太多的东西要写,无法在一篇文章中收集所有内容。本文第二部分将于下周发布!
在 中 或 推特 上关注我,以便在第二部分发布时获得通知!
2019 年 10 月 17 日更新:第 2 部分现已推出!
[## 我的数据科学硕士没有教给我的东西—第 2 部分
&在我的数据科学职业生涯之初,我本可以做些什么不同的事情。
towardsdatascience.com](/what-my-data-science-master-did-not-teach-me-part-2-ce56791fe2e9)
我的数据科学学位没有教会我什么—第 2 部分
原文:https://towardsdatascience.com/what-my-data-science-master-did-not-teach-me-part-2-ce56791fe2e9?source=collection_archive---------15-----------------------
&在我的数据科学职业生涯之初,我本可以做些什么不同的事情。
Photo by Isaac Smith on Unsplash
重要:本文是 我的数据科学硕士没有教给我的东西—第一部分 的续篇!感谢每一个阅读第一部分并为之鼓掌的人!
投资领域知识
作为一名数据科学家,我多少知道我必须投资领域知识。然而,在我攻读学位期间,没有人足够强调为了理解数据,应该花多少时间去理解数据之外的东西。数据集并不总是附带扩展文档,并且通常没有明确的列名,也没有预先选择的标签列。每个行业都有自己的首字母缩写词和简称,对于一个“局外人”来说基本上是不可读的。我最*才意识到,需要花费大量的时间与我的利益相关者和领域专家保持持续的沟通。
从学术角度来看,似乎“数据就是数据”,机器学习或数据分析在所有行业中都可以采用相同的方式。然而,现实要复杂得多。例如,数据相关性可能因字段而异。例如,如果您使用的是交易数据,那么 3 个月前的数据集就已经是“旧的”了,需要与最*的数据相结合才能生成准确的建议。然而,如果您正在为一年到头以相同频率使用的机器进行预测性维护,3 个月的旧数据集是完全相关的,并且对于准确的预测模型来说可能是足够的。类似地,虽然实时预测可以成为在线零售等特定行业的巨大游戏规则改变者,但它们也可能是其他行业的资源浪费。
不要认为计算资源是理所当然的。
借助 Azure、谷歌云和亚马逊网络服务等云*台,计算资源变得相当容易获得。他们甚至有一个免费层供你试验。然而,大多数大公司在如何获得或证明计算资源方面都有严格的流程,并且通常只支持有限范围的选项。使用云*台、虚拟机或服务器可能会带来法律后果,尤其是当高度敏感的数据必须在外部托管的云上共享时。作为一名处理敏感数据的数据科学家,我必须考虑到,由于数据保护要求,我对共享数据或上传数据的位置有非常严格的限制。
此外,强大的计算资源可能会变得非常昂贵,利益相关者需要确信您的模型的价值值得投资。这代表了另一种需要讲故事的情况,正如我在本文的第一部分中已经提到的。
这些管理限制有时意味着我只能在本地使用笔记本电脑工作。因为我不知道有多少计算能力可供我使用,也不知道我还要在我的笔记本电脑上开发多长时间,代码效率(也在第一部分中讨论)仍然至关重要。即使在拥有大量财务资源的大公司中,将计算资源视为理所当然也可能不是正确的方法,尤其是在模型的价值可能不值得强大虚拟机的成本的情况下。尽管可能会令人沮丧,但我已经学会了努力充分利用我已经拥有的计算资源。
部署模型
这听起来可能非常愚蠢和天真,但在我攻读硕士学位期间,没有人告诉我,在任何东西投入生产之前,我需要一个开发环境,或者测试环境或验收环境。他们也从来没有告诉我,将模型投入生产的道路可能充满障碍、过程、政治问题和沮丧的人。我也完全不知道开发和生产环境之间到底有什么区别。
由于我不是来自 ICT 背景,我从未听说过分离环境和过程来将软件从开发带到“外面”可用。后来,我在 AWS 的一个项目中意识到,一个好的 CI/CD 管道是多么重要、有用和省时。我鼓励任何在该领域起步的数据科学家阅读它,并可能使用其中一个云*台的免费层来探索 CI/CD 管道的组件(例如 AWS CodeBuild、CodePipeline 或 CodeDeploy)。
你选择的应用领域真的很重要。
作为一名数据科学家、数据分析师或任何数据人员,我的工作职位和描述已经变得非常不同,这取决于我工作的领域。虽然公司的规模也是另一个需要考虑的变量,但我认为这并不比考虑你将从事的领域的目的更重要。记住,数据几乎就是你每天、每天都要处理的所有东西。我曾经不得不在很短的时间内处理涉及动物试验的临床试验数据。我对此深恶痛绝,并认定临床试验数据不是我想要定期处理的数据的一部分。
我所在公司的真正目标、道德或客户价值极大地影响了我对自己日常工作的感受。我知道大多数模型都包含某种商业优势或利润。然而,与建立物体检测系统以改善道路安全相比,建立推荐系统以增加销售收入的感觉是不同的。我努力寻找最能激励我的东西,或者让我深深感兴趣的东西。许多新手只是想“我会去有大量数据要分析的地方”,但是丰富并不总是意味着有趣!
正如我在本文开头提到的,数据科学家必须花很多时间去理解他们工作的领域,所以我建议找一个你喜欢的领域。询问和联系已经在你考虑的领域或公司工作的数据科学家总是值得的。
关于我自己的数据科学职业生涯开始的一些最终想法
我的数据科学硕士给了我一个很好的开端,但我应该在跳入水中之前更多地关注领域知识,以填补空白。
这绝对是我在完成学位后失败的事情。我完成了毕业实习,觉得自己懂得够多了,或者说懂得更多了。我没有真正尝试与其他数据科学家或数据分析师(除了我的同学)联系,以了解他们工作的领域和他们面临的日常挑战。我通过艰难的方式学到了很多东西,而一次简单的谈话可以教会我同样的东西。
我注意到我在毕业实习期间学到了很多有价值的行业知识,因为我有机会与大学的外部合作伙伴一起做这件事。我也相信实习和培训有助于填补空白,并对某个领域有所了解。
然而,如果你对这个领域或公司有疑问,我建议在签署一份 1/2/3 年的实习合同之前仔细考虑你的选择。职业生涯的最初几年会带来大量知识,并帮助你确定自己在数据世界中的发展方向。记得我毕业后,在商业智能和纯数据科学之间犹豫了很多。我现在非常清楚地知道,我不太喜欢将 BI 作为日常任务,但我喜欢我项目的 Python 开发部分。在我看来,将职业生涯推向错误的方向比花时间找出正确的道路更糟糕。
正如我在最*的几篇文章中所说,数据科学家永远不会停止学习,这也包括我。尽管这篇由 2 部分组成的文章已经完成,但我还有很多内容要写,包括数据科学领域目前教给我的东西,以及如何应对数据科学家可能面临的日常挑战。在 中 上关注我,获取我未来文章的通知!也可以在Twitter或者LinkedIn上找到我。
[## 向你的祖母解释数据科学
或者如何向你的家人或任何与技术世界脱节的人解释数据科学。
towardsdatascience.com](/explaining-data-science-to-your-grandma-f8345621483d)
关于文本分类和 Kaggle,我的第一枚银牌教会了我什么?
原文:https://towardsdatascience.com/what-my-first-silver-medal-taught-me-about-text-classification-and-kaggle-in-general-ebae0df16278?source=collection_archive---------11-----------------------
穿越卡格尔的世界
卡格尔是一个学习的好地方。我从最*结束的关于 Quora 不真诚问题分类的比赛中学到了很多东西,在这篇文章中,我得到了一个**182/4037**
的排名,我将尝试提供一个我尝试过的事情的总结。我还会试着总结一下我错过的但却是其他成功解决方案的一部分的想法。
作为旁注:如果你想了解更多关于 NLP 的知识,我想推荐高级机器学习专精中关于自然语言处理的这门优秀课程。您可以免费开始 7 天的免费试用。本课程涵盖了自然语言处理中从基础到高级的各种任务:情感分析、摘要、对话状态跟踪等等。您可以免费开始 7 天的免费试用。
所以首先给外行人一点关于竞争的总结。在这场比赛中,我们必须开发出识别和标记虚假问题的模型。这个挑战不仅是对性能的测试,也是对高效代码编写技巧的测试。 由于这是一场外部数据选项有限的核心竞赛,参赛者只能使用竞赛组织者提供的单词 embeddings。这意味着我们不允许使用像伯特这样的艺术模型。我们也受到限制,我们所有的模型都应该在 2 小时内运行。因此,对堆栈和怪物集合说再见吧,尽管一些解决方案通过使它们的代码超高效来做到这一点。稍后将详细介绍。
一些小知识:
在开始讨论我的最终解决方案之前,我想分享一下关于 kaggle 的一些经验:
1.永远相信你的简历
这场竞赛中真正让许多人困惑的一件事是,好的简历分数不一定能转化为好的 LB 分数。其主要原因是第一阶段的小测试数据集(只有 65k 行)(大约占总测试数据的 15%)。
论坛上的一个常见主题是关注我们应该选择哪些提交内容作为最终提交内容:
- 本地履历最好的那个?或者
- 磅数最高的那个?
虽然说信任你的简历似乎很简单,但当你看到你的 LB 分数下降或保持不变时,无论你当地的 CV 分数何时增加,常识都会发生变化。
幸运的是,我没有犯下不信任我的简历分数的错误。由于 Kaggle 讨论板上有很多优秀的帖子, 我选择了一个公开 LB 分数为 0.697,本地 CV 为 0.701 的内核,截至最终提交时,它在公开 LB 上的排名大约为> 1200。它取得了 0.702 的分数,在私人 LB 排名 182。
虽然这看起来像是一个简单的事后选择,但当您拥有一些公共 LB 分数> = 0.70 的公共内核时,这是一个很难做出的决定
2.使用来自公共内核的代码,但是检查错误
Benjamin Minixhofer 的这个 Pytorch 内核太棒了。它是我为这次比赛提交的许多作品的基础。但是这个内核有一个错误。它没有以正确的方式实现空间丢失。你可以在我的帖子这里或者在我的内核上找到空间丢失的正确实现。以正确的方式实现空间下降使局部 CV 增加了大约 0.004。
尽管如此,我还是用这个内核学会了 pytorch,我也同样感谢他。
3.不要相信论坛上的一切
我将在这里谈两件事:
- 种子调整:在比赛进行到一半的时候,每个人都试图在公众 LB 上获得尽可能好的排名。这只是人的本性。很多讨论都是围绕神经网络初始化的好种子和坏种子。虽然第一眼看上去没什么问题,但是对话更进一步,人们开始在内核中调整种子作为一个超级参数。一些讨论甚至继续说这是一个有效的策略。这就是大量过度适应公共 LB 开始发生的地方。仅仅通过改变种子,相同的提交将从 0.699 得到 0.704。作为参考,这意味着你可以从接* 400-500 的排名上升到前 50 名,只要在一个公共内核中改变种子。这意味着灾难。有些人就是这样做的。他们上了公共图书馆。在私人舞台上爆发了。
- 在论坛上公开简历分数:我们总是试图用他人来衡量自己的表现。在许多讨论中,人们提供了他们的简历分数和相应的公开 LB 分数。由于不同的 CV 方案、CV 中的折叠数、报告的度量、过度拟合或交叉验证的简单错误实施,分数到处都是,没有可比性。但是他们最终影响了很多新手和新人。
4.在这一点上,活跃在论坛上,并定期检查公共内核
你可以通过参与论坛和关注公共内核学到很多东西。本次大赛有很多优秀的公有内核,分别是 SRK 的嵌入、舒剑的模型、西奥维尔的预处理,给了大家一个先机。随着比赛的进行,讨论也在发展。有关于加速代码、工作方法、F1 阈值查找器和其他令人兴奋的主题的讨论,让我忙于新的想法和改进。
即使在结束后,在阅读关于解决方案概述的讨论时,我也学到了很多。我要说的是,找出获胜的解决方案是非常重要的。
分享是 Kaggle 的一切。人们在比赛时以及比赛结束后分享他们的代码和想法。只有团结一致,我们才能前进。我喜欢写博客,所以我通过一系列关于文本分类的博客帖子来分享这方面的知识。第一篇帖子谈到了不同的预处理技术,用于深度学习模型和增加嵌入覆盖。在第二篇中,我讲述了一些基本的常规模型,如 TFIDF、计数矢量器、哈希等。已经被用于文本分类并试图评估它们的性能来创建基线。在第三篇文章中,我将深入研究深度学习模型和我们可以用来解决文本分类问题的各种架构。为了使这个帖子*台通用,我将尝试用 Keras 和 Pytorch 编写代码。我们将尝试使用我们在本次比赛中未能使用的各种其他模型,如本系列第四篇文章中的 ULMFit 迁移学习方法。
我可能需要一点时间来写完整个系列。在此之前,你也可以看看我的其他帖子:kaggler 正在使用什么进行文本分类,其中讨论了 NLP 中使用的各种深度学习模型以及如何从 Keras 切换到 Pytorch 。
6.小心巨魔:)
离比赛结束还有两周的时候,我们正愉快地进行着。分数增长缓慢。顶尖选手有些停滞不前。 然后是公开 LB 分 0.782 的帕维尔和团队。下一组的 LB 分数是 0.713。如此巨大的差异。我确信数据中有一些漏洞,除了帕维尔,还没有人发现。我花了将*半天的时间又做了一遍 EDA。
最后发现他们做的是刮——打得好!
他们也有一些非常棒的想法,包括额外的数据,这些本来可以在这次比赛中发挥作用,但没有发挥作用。
我的最终解决方案:
我的主要关注点是元特征工程和增加嵌入覆盖率和质量。这意味着我没有怎么接触过各种神经网络架构。以下是我在最终提交的材料中包含的内容:
- 我注意到手套嵌入在局部 CV 上表现良好,但在 LB 上表现不佳,而元嵌入(手套和 paragram 的*均值)在 LB 上表现良好,但在 CV 上表现不佳。我采用了一种混合的方法,所以我的一些模型只训练了手套嵌入,一些模型训练了元嵌入。
- 在嵌入中增加了四个特性。因此我的嵌入是一个 304 维的向量。这四个新值对应于标题大小写标志、大写标志、文本点单词极性、文本点单词主观性
- 使用 spacy 从整个训练和测试数据中找出 NER 代币,并将代币和实体保存在字典中。我用这个字典来创建额外的特性,比如
GPE
、PERSON
、ORG
、NORP
、WORK_OF_ART
的计数。增加了一些价值,并且与目标高度相关。 - 我使用的其他功能包括
total_length
、capitals
、words_vs_unique
以及一些工程化的功能,如sum_feat
(脏话的总和)、question_start_with_why
、question_start_with_how_or_what
、question_start_with_do_or_are
。可能没有增加多少价值,但仍然保留它们。 - 我最终的解决方案是由四个型号的堆叠组合而成。我使用逻辑回归(具有正权重和 0 截距)堆叠了四个模型,并在最终的内核中给出了权重列表。
你可以在这里找到我最终提交的内核。
其他解决方案中使用的提示和技巧:
1.增加嵌入覆盖范围:
在第三个解决方案内核中,wowfattie 使用词干化、词汇化、大写、小写、大写,以及使用拼写检查器嵌入最*的单词,以获得其 vocab 中所有单词的嵌入。真是个好主意。我最喜欢这个解决方案,因为它能做我想做的事情,而且完成得很好。还有,代码非常干净。
2.检查点集合:
免费获得大量模型。大多数成功的解决方案都有某种版本的检查点集成。对于第三位解决方案,预测是第 4 个时段之后的预测和第 5 个时段之后的预测的加权*均。我得到了这个想法,但是忘了在我的基于系综的内核提交中实现它。
3.元嵌入:
许多获胜的解决方案最终都使用了加权元嵌入,它们为手套嵌入提供了更高的权重。一些解决方案也使用了级联嵌入。
4.模型架构:
我看到人们做的一件令人惊讶的事情是在双向层之后使用了 1Dconv 层。例如,这是比赛中排名第一的团队使用的架构。
5.分桶/可变序列长度和增加的隐藏单元:
我注意到的另一件事是,与许多公共内核相比,隐藏单元的数量增加了。由于时间限制,大多数公共内核使用 60 的隐藏单元大小。我用了 80 个单位,代价是少训练一个网络。由于可变序列长度思想或分桶,许多高分内核能够使用更多的隐藏单元。从第一位内核讨论:
我们不会基于整个数据将序列填充到相同的长度,而只是在批处理级别。也就是说,我们在数据生成器级别对每一批分别进行 填充和截断 ,这样一批中的句子长度就可以有所不同。此外,我们进一步改进了这一点,不是根据批次中最长序列的长度进行截断,而是根据序列中 95%的长度进行截断。这极大地改进了运行时间,并在单个模型水*上保持了相当稳健的准确性,并通过能够*均更多的模型来改进它。
也从第 7 名讨论:
分桶是将具有相似长度的实例制成一个小批量,以减少填充成本。这使得训练速度比 快了 3 倍,因此我可以为每一次 5 折的分割运行 9 个纪元。
因此,这种技术的使用也允许一些竞争者在更短的时间内适应更多的时代,同时运行更多的模型。相当整洁!
6.对于那些没有使用 bucketing 的赢家,Maxlen = 72 太大了:
我们大多数人看到了问题长度的分布,并将完全覆盖最多问题的长度作为 maxlen 参数。我从来没有试图调整它,但它似乎可以调整。其中一个技巧是使用 35 到 60 的 maxlen。这使得内核运行得更快了。
7.耗时模型/复杂架构(如 Capsule)大多未被使用:
大多数获胜的解决方案没有使用胶囊网络,因为它们需要大量的时间来训练。
8.最*几个时期嵌入权重的反向投影误差:
我看到的另一件事是在使用单一模型的第 18 位内核
if epoch >= 3:
model.embedding.embeddings.weight.requires_grad = True
结论:
这是一场精彩而漫长的 2 个月的比赛,在这段时间里,我学到了很多关于文本和 NLP 的知识。我想在这里强调的是在达成我的最终解决方案之前,我最终尝试了很多没有成功的东西。有时这有点令人沮丧,但最终,我很高兴我最终获得了最佳数据科学实践。
我还要感谢 Kaggle 大师 Kazanova,他和他的一些朋友一起发布了“如何赢得数据科学竞赛” Coursera 课程。我从这门课中学到了很多。
如果你认为有什么遗漏/错误,或者我可以为这个比赛添加更多的提示/技巧,请在评论中告诉我。或者也许你有什么想法,你会怎么做。
请随时在 LinkedIn 上与我联系,在Twitter/Medium上关注我,或给我发消息征求意见。继续收听,继续学习。
原载于 2019 年 2 月 19 日mlwhiz.com。
关于数据科学工作申请,没人会告诉你什么
原文:https://towardsdatascience.com/what-no-one-will-tell-you-about-data-science-job-applications-bff2d4b5e983?source=collection_archive---------5-----------------------
我是一名物理学家,在 YC 的一家初创公司工作。由于我们公司的工作,我收到了许多电子邮件,询问我关于数据科学职业的建议。
许多电子邮件问我非常相似的问题。随着时间的推移,我对自己经常遇到的问题有了一些常见的回答。
几天前,我收到了一封电子邮件,其中问了我通常在一封邮件中会遇到的大多数问题。我写了一个答案,并将其寄回,但后来我意识到这是一个扩展我的答案的好机会,并将其公布于众,供那些在寻找数据科学工作方面有困难,但不知道为什么的人使用。
每有一个人有一个问题,并问它,就有十个人有同样的问题,但不要问它。如果你是这十个人中的一个,那么这篇文章就适合你。希望你会觉得有帮助。
以下是我收到的电子邮件,根据长度进行了编辑:
电子邮件
出发地:朗尼[姓名已更改]
主题:试图在数据科学领域找到一份工作
我是一名大学辍学生(我这样说是因为很明显,如果你出生时没有理论物理学博士学位和 15 年的数据科学经验,那一定是出生时出了什么问题)。[……]当我在市场营销中漫游时,我发现我最喜欢数据部分。我最初熟练掌握了 A/B 测试,并在谷歌分析中获得了认证&通过优化他们的测试*台。然后从那里我进入了 Python,SQL 等等。我刚刚从[知名数据科学训练营]毕业,我甚至在努力争取面试机会。我已经发出了 100 多份申请(甚至在其他城市),却很少有面试。
为了继续“提高技能”,我正在攻读 Udacity 纳米学位& Dataquest.io
这是我的 LinkedIn,如果你想看的话。这不是真正的技能(虽然他们真的需要大量的工作,我正在做)。我甚至没有得到展示我技能的面试机会,所以我才这么说。
我和【BigCo】进行了一次面对面的交流,这是我第一次面对面地写代码或写白板,所以进行得并不顺利。
我有一份来自[大型创业公司]的生存分析报告,但我从未研究过,所以进展不顺利
我有一份来自[BigCo]的报告,它让我获得了面试机会,他们通过了,因为我的学历(这很愚蠢,因为他们已经有了我的简历)。除此之外:一无所获
[1]
我的回答
你好,朗尼——谢谢你伸出援手。
事实是:根据你提交工作申请的地点,2-3%的面试率可能是正常的。有两个原因,但你都不知道。
迷失在人群中
第一个原因是大多数招聘团队使用一种叫做申请人跟踪系统的东西来告诉他们最好的候选人来自哪里。如果你通过一个过去给他们不好的结果的渠道申请,他们会花更少的时间看你。[2]
Your job application will most likely be processed by an applicant tracking system like this.
例如,如果你申请一份技术工作,你不太可能有任何进展。事实上每个人都知道,并且很容易应用。这意味着申请工作的普通人实际上很可能是个普通人。因此,招聘经理会花更少的时间看一份来自“真实”的简历,因为她认为它很一般。
你可以通过在大多数人还不知道的网站上申请来解决这个问题。关键值和 Y Combinator 的在创业公司的工作工作页面是很好的起点。[3]通过使用大多数人还不知道的网站,你将自己标记为一个有意寻找机会的人。在这些网站上申请工作的普通人很有可能超过*均水*。这就是为什么公司更关注通过不太为人知的渠道申请的申请者。
办公室政治
申请普通职位不太管用还有第二个原因。你可能很难相信这一点,但是很多公司(尤其是大公司)在招聘栏上发布招聘信息并不是为了找到他们想要雇佣的人。[4]
If you’re searching for a technical position on Indeed, you’re doing it wrong. Sorry, Indeed.
这听起来很疯狂:那么,他们到底为什么要在招聘栏上发帖呢?你需要明白的是,在大多数大公司,人力资源团队(HR)和工程师之间有着明显的区别。事实上,人力资源团队通常是发布工作的团队。
不幸的是,人力资源部没有工程师,所以他们不能真正区分哪些候选人是真正有才华的,哪些不是。HR 只知道如何筛选证书,这意味着检查你是否去了一个好学校(斯坦福认为你足够好可以进去吗?)或者在一家不错的公司工作过(谷歌认为你足够优秀到可以在那里工作吗?).
所以这就是为什么你的命中率只有 2-3%的黑暗真相:HR 无法区分好的训练营和差的训练营。所以他们不得不默认说“不”,因为他们不想浪费工程团队的时间去关注那些可能并不优秀的新兵训练营毕业生。这种情况我见过几百次了。
幸运的是,有好消息:大多数工程团队明白他们的人力资源不能筛选人才。因此,最好的工程团队通过网络和后台渠道招聘,而不是通过招聘广告。因此,我给你的最好建议是:开始把自己嵌入到工程师驱动的机器学习聚会中。这里没有魔法:只要去 meetup.com 的,找到看起来相关的聚会,然后开始去参加。
你会很快发现哪些是有价值的,哪些是没有价值的。人际关系网有很多好处,所以问一些聪明的问题,尝试进行有益的对话,当人们自我介绍时,倾听不可避免的“我们正在招聘”的公告。
面试
简单说一下:工作面试是一种黑暗、神秘的仪式。每个公司的流程都是不同的,每个公司都认为自己的面试是真正的面试。
提高面试水*有很多方法,但最好的方法是多做。所以我关于参加聚会的建议在这里也会对你有所帮助:你面试得越多,你就越擅长。即使你搞砸了你的第一次,这也是一项技能,就像其他任何事情一样,你会在进行中学会它。
最后,我很抱歉这个系统被严重破坏了。我知道这对初学者来说特别难。这不公*,但隧道的尽头有光明:在你有了 1-2 年的经验后,公司会开始追逐你。回报是值得努力的。
如果你有问题没有看到我在这里回答,你可以在推特上问: @_edouardharris 。我的 DMs 是开放的——不要害羞!
[1]在随后的一封电子邮件中,朗尼告诉我,他并不认为他的训练营是他遇到麻烦的原因,而是问题在于他没有受过多少正规教育。
[2]求职者跟踪系统还可以根据关键词自动筛选出简历。但是我发现大多数人已经知道在简历中包含正确的关键词,所以我不会在这里详述。
[3]我知道,通过在这里张贴这些求职公告板的链接,我保证会有更多的人知道它们。但在不久的将来,这两者都不太可能像现在这样大。
[4]当然,有些人会这样做,当然,即使那些不这样做的人有时也会意外地找到好的候选人。但是如果你正在找工作,就把这些公司当成一个惊喜吧。
在技术面试中不要做什么
原文:https://towardsdatascience.com/what-not-to-do-during-a-technical-interview-b2f35d62b963?source=collection_archive---------24-----------------------
面试中需要注意的 6 个危险信号
今天我们将关注招聘过程中最重要的部分之一,也可能是最令人害怕的部分:技术面试。你的第一次面试(除了与招聘人员的筛选电话)通常是技术性面试,有时会通过电话进行,并有屏幕截图。如果你在那里做得很好,那么你经常会被邀请参加第二轮,这可能包括多次技术筛选。面试过程中有很多成功的小技巧,其实我们之前也写过面试准备指南。在此查看一个。也就是说,你经常紧张,流汗,思维混乱。
重要的是,不仅要知道该做什么,还要知道不该做什么(有点像你在车管所参加驾照考试——你可以做好每件事,但有些事情会让你自动失败,比如撞到路边)。
在这里,我们会给你六个技巧,告诉你在技术面试中不要做什么。我们开始吧!
1.不要立即开始编码
需要马上注意的一件大事是,分析性面试不仅仅是寻找正确的答案。面试官在测试你解决问题的能力,包括你提问和运用解决问题的技巧来理解问题或问题背后的问题的能力。为了展示这种技能,你不能在面试中一收到问题或编码挑战就开始编码。首先,你应该问一些澄清性的问题并陈述假设,以证明你完全理解如何解决这个问题。面试官希望看到你的过程,以确保你理解处理问题的最佳方式。
即使你对这个问题很有信心,没有任何问题,你也应该和面试官交流。他们希望在开始编码之前,有人对他们对问题的理解有信心。
所以,不要马上开始编码——停下来,问问题,展示你的理解。
2.不要无视面试官的暗示
通常,面试官会轻轻地把你推向正确的方向。最终,他们希望你成功,所以他们可能会给你暗示或问一些问题来引导你找到解决方案。这就是为什么考虑面试官在面试中说的每一句话,而不是忽视或掩饰他们的评论是如此重要。
如果他们问“比率中的分母是多少?”或者“你看了这个指标吗?”,那么你需要思考并应用它。可能在所有情况下,如果不相关,他们都不会说。
3.不要太固执己见
面试官想要的最高技能之一是适应能力。不要做一个固执己见又不愿让步的人。当出现新信息时,你应该表现出考虑不同选择和调整方法的能力。
要知道,工作面试的问题可能就是为了测试这一点而设计的。通过提供新的信息,面试官会检查你是否能反思你所做的事情,认识到任何错误,并适应。通常,这项技能与找到正确答案同样重要,因为它代表了你不断努力达到正确答案的能力。
不要太固执己见。带着灵活开放的心态去参加面试。
4.不要接受最明显的答案
分析工作面试应该淘汰一定比例的面试官。如果他们把事情做得太简单,他们就不会找到最合适的人来做这项工作。这通常意味着技术问题的答案不会是最直接、最明显的。毕竟这些题是来考验你的技术的。
面试官在寻找的是一个能够仔细检查问题,考虑所有可能的选择,并且懂得取舍的人。
这对你意味着什么?你应该让他们了解你的决策过程。告诉他们你正在考虑每一个选项,并考虑每个变量会如何影响你的答案。这样,即使你没有得出正确的答案,他们也能看到你的决策过程是合理的。
不接受最明显的答案。通常,答案看起来很明显是为了欺骗你。如果你没有适当考虑每个选项,面试官不会满意的。
5.不要谈论你如何不合格,因为你没有在技术领域受过正规教育
事实是,并非所有从事分析工作的人都有技术背景。有许多不需要正规教育就可以学习分析技能的方法。许多从事分析工作的人没有技术背景,但通过努力工作和奉献,他们已经获得了做好这些工作所必需的技能。
也就是说,如果这适用于你,你不应该注意这个事实——它是不相关的。你在那里,你有做这份工作所需要的技能,所以让别人注意到你可能不如受过正规教育的人这一事实不会帮助你得到这份工作。
在面试中,你只需要提出一些与你胜任该职位的能力相关的问题。
如果你被问到你的正规教育,不要隐瞒细节,但是如果你没有被要求,也没有必要说出来。
6.不要谈论你如何合格,因为你确实在技术领域受过正规教育
另一方面,不要谈论你有多么合格,因为你受过正规的分析教育。很可能,面试官已经从你的简历中知道了这一点,一次又一次地提到它,会让人觉得你在吹牛。说到底,面试官并不关心你的正规教育,他们只是想看看你是否有做好工作所必需的技能。
毕竟,这次面试是为了测试你的技能,而不是检查你的正规教育。专注于向他们展示你的能力,而不是谈论你的学位。
结论
做好准备总是一个好主意,但知道在某些情况下什么不该做同样重要。我们希望我们的建议对你准备技术面试有所帮助。
如果你从这个列表中选择一样东西,记住这些面试是关于过程和方法的。
即使你认为你不能得到正确的答案,也要让他们了解你的决策过程,向他们表明你愿意接受所有的选择。一个这样对待工作的人,最终一定会得到正确的答案,这是他们真正想看到的。
如果你对实践技术问题感兴趣,并想看看其他人是如何解决这些问题的,可以看看这个*台,在 Strata Scratch 。
最初发表于T5【https://www.stratascratch.com】。
张量核到底是什么?
原文:https://towardsdatascience.com/what-on-earth-is-a-tensorcore-bad6208a3c62?source=collection_archive---------1-----------------------
除了对数据和机器学习的痴迷,我还对计算机硬件有一种不健康的痴迷。有了像“这样的精彩宝石,强大的图形对数据科学有多重要?很明显,基于图形的机器学习是我最感兴趣的。每当数据科学和计算机硬件以惊人的方式重叠时,它真的让我兴奋。
随着 Nvidia 架构 VOLTA 的发布,这些已知的东西被 Nvidia 称为“张量核心”但是究竟什么是“张量核”,一个张量核真的值得仅仅为了一个显卡而花费一千美元吗?
如果你对基于图形的机器学习感兴趣,很可能你熟悉 CUDA 技术和 CUDA 内核。CUDA 是一个并行计算*台,允许图形卡加速中央处理器的性能,创建一个 GPU 加速计算,比在 CPU 上进行传统处理运行得更快。
不用说,
CUDA 太牛了
远远超过像 OpenCL 这样的公司。考虑到这一点,CUDA 内核和张量内核之间到底有什么区别呢?
CUDA 内核以每次计算为基础运行,每个单独的 CUDA 内核可以在 GPU 每次旋转时执行一次精确的计算。因此,时钟速度以及卡上可用的 CUDA 内核数量对 CUDA 的性能起着重要作用。另一方面,张量核可以通过每个时钟计算整个 4×4 矩阵运算来进行计算。
张量核能够将两个 fp16 矩阵 4x4 相乘,并将乘积 fp32 矩阵(大小:4x4)添加到累加器(也是 fp32 4x4 矩阵)。这又是一个混合累加过程,因为累加器取 fp16 并返回 fp32。
通常,CUDA 内核速度较慢,但精度更高。而张量核的速度快如闪电,但是会损失一些精度。
然而,我没有提到的是图灵张量核。图灵张量核明显更令人兴奋,因为虽然它们拥有与典型的 VOLTA 张量核相同的属性,但它们也有显著的改进,相比之下,CUDA 就像风中的灰尘一样。
图灵张量核心设计增加了 INT8 和 INT4 精确模式,用于支持量化的推理工作负载。FP16 也完全支持要求更高精度的工作负载。在基于图灵的 GeForce 游戏 GPU 中引入张量核,使得首次将实时深度学习引入游戏应用成为可能。图灵张量内核加速了 NVIDIA NGX 神经服务基于人工智能的功能,这些功能增强了图形、渲染和其他类型的客户端应用程序。不需要使用许多 CUDA 核心和更多时钟来完成相同的任务,它可以在单个时钟周期内完成,从而大大加快了机器学习应用的速度。不用说,数据科学家非常欣赏 Volta 所提供的一切。
根据 Nvidia 的说法,VOLTA 张量核心计算大约是以前架构 Pascal CUDA 计算的 12 倍。所以对于深度学习来说,这个速度当然不是空穴来风,张量核当然是英伟达做出的惊人壮举。
他们值得吗?
随着 AMD 大幅削减同等 GPU 的价格,这些 GPU 是…嗯,没有所有花哨的光线跟踪和张量核心的普通 GPU,对于某个品牌的人来说,红色团队肯定有购买力。记住这一点,有不同类型的买家,不同类型的买家有不同的需求。如果你想在你的 GPU 上玩游戏,你不介意没有所有的光线跟踪,并希望坚持常规照明,AMD 肯定是一条路要走。对于纯帧到美元的性能,AMD 几乎在现代 GPU 的每个方面都独占鳌头。
但如果你追求的是使用你的 GPU 进行机器学习和矩阵运算,Nvidia 基本上是你在 2019 年唯一的选择。这个故事也不是什么新鲜事,因为 AMD 在为开发人员开发 GPU 技术方面一直落后于潮流。如果 AMD 用户想用 GPU 进行任何计算,他们仍然依赖 OpenCL,我将让图表来说明这一点!
至于最高线,RTX 肯定是 2019 年最有效的选择。Nvidia 目前处于领先地位,但 AMD 也承诺在未来的 GPU 上进行坚定的构建,类似于他们给锐龙的待遇。我们只能希望他们尽早决定迎合图形加速编程。
我仍然记得我第一次安装 CUDA 驱动程序时,在一个绝对不可思议的时间内,对超过 50 个模型进行了拟合和预测。我对基于张量核的计算以及其他利用显卡的技术的未来感到非常兴奋。像 GPU 这样的东西上的统计计算确实是令人敬畏的。Nvidia 在这方面肯定领先于 AMD,这让我真的很感激他们在帮助开发者方面的投资。基于 GPU 的机器学习有很大的潜力来驱动我们的世界,数据科学的未来很有可能由英伟达的张量核心来驱动。我只能希望红队会拿出一些有说服力的东西来骗过 Nvidia 的眼睛,并像他们通常做的那样降低一些价格。
关于人工智能,在线扑克玩家可以教给我们什么
原文:https://towardsdatascience.com/what-online-poker-players-can-teach-us-about-ai-22e164535339?source=collection_archive---------20-----------------------
事物中人性的一面
Successful Poker Player (Background) and Me (Foreground)
扑克的两个组成部分
扑克被认为是对人工智能的一个很好的挑战,因为它被视为数学/战略游戏和人类直觉的结合,特别是关于他人的策略。我认为这个游戏是技术和人类技能两个极端的结合:国际象棋和石头剪刀布。
象棋
在国际象棋比赛中,技术出众的玩家几乎总是会赢,而业余玩家则会输给顶尖的国际象棋人工智能。
石头剪刀布
在石头剪子布游戏中,如果顶尖的人工智能在三分之一的时间里采取完美的策略,它将是不可战胜的,但根据定义,它也不可能打败任何人。要了解原因,让我们分析一下它如何与巴特·辛普森策略对抗:如果你的对手总是玩石头,你将在 1/3 的时间里玩石头,1/3 的时间里玩布,1/3 的时间里玩剪刀,这意味着你将*手 1/3,赢 1/3,输 1/3。相对于最糟糕的策略,这不是一个好结果。因此,在石头剪子布游戏中,要打败糟糕的游戏,我们自己需要通过了解对手来远离“完美”的游戏。
为什么学习扑克很有好处
大量数据
我玩过 500 多万手扑克,很多人玩的都比我多。汇集几十个在线扑克玩家的数据,将为我们提供数亿手牌的样本。
自然目标函数/激励
机器学习一般需要一个目标函数来决定哪些决策是好的,哪些决策是坏的。扑克可以使用赢得的金钱的目标函数,从长远来看,这是一种决定好/坏决策的好方法。除此之外,扑克玩家总是“言出必行”,这意味着他们受到强烈的激励,尽可能出色地完成任务。这意味着我们确实看到了他们在各种情况下决策的巅峰,这在其他比较中未必如此。
我们也许可以利用这一点来比较人工智能的决策和人类的决策,以找出人类的优势所在,并进一步改进人工智能。
各种情况
一手扑克可以玩出的方式的数量比宇宙中的原子数量还要多,并且与象棋游戏不同,由于玩家拿到不同的开始手牌,开始位置总是不同的。这意味着人工智能需要快速学习归纳,这是“真正”智能的一个重要特征。
最*的人工智能成功:人类还有用吗?
最*在扑克人工智能方面取得了成功,其中一个人工智能在 1 对 1 扑克和 6 人扑克中击败了顶级玩家(结果更加可疑)。这是一个非常令人印象深刻的结果,可能会让你相信我们没有什么要向扑克玩家学习的,因为 AI 已经可以做得和他们一样好/比他们更好。
有两个原因让我觉得这还没有完全确定:
- 特别是对于 6 人扑克机器人来说,有一些在现实世界中并不总是存在的限制。然而,这不是我这里争论的关键。
- 据我所知,这些人工智能的成功与高超的技术理解有关,类似于国际象棋,而不是像石头剪子布那样需要对对手有高超的理解。这是本文其余部分将要讨论的内容。
人工智能还不具备的技能
当谈到理解扑克时,最重要的“人类”技能是理解他人。我们有内省的好处,这是人工智能没有的,也永远不会有(除非它们模拟人脑)。
理解情感
我们非常了解情绪通常会如何影响一个人的情绪或策略。例如,业余玩家可能害怕在某些情况下变得好斗,或者愤怒的玩家可能变得过于好斗。
玩家类型
许多职业选手非常擅长将对手分成不同的类型,并针对每种“类型”使用不同的策略。如前所述,计算机试图用一种策略来对付所有人,这对于盈利能力最大化来说是次优的。
理解启发式
类似于玩家类型,我们可以看到其他玩家使用某些经验法则。比如“总是用一对 a 下注”。当前设计的人工智能可能需要更大的样本来找出这些启发,因为这些简化对计算机来说似乎是任意的——而作为人类,我们理解其他人可能会做出的简化。
结论
我认为研究扑克玩家真的可以改善人工智能的发展,因为他们技术的一个关键部分是了解对手的想法,通常是在非常有限的数据上。特别是在线扑克,这几乎纯粹是基于游戏模式,所以没有理论上的理由为什么人工智能最终不能在这方面超越人类,我们可以很容易地从专业人士那里获得数亿手数据来尝试模仿它。我怀疑它可以成为一个非常有趣的人工智能研究项目。
机器学习中的什么或为什么
原文:https://towardsdatascience.com/what-or-why-in-machine-learning-e2a73da528c8?source=collection_archive---------30-----------------------
使用 Python 解释模型的综合指南
使用大数据的机器学习在商界风靡一时。这些短语给了“协同办公室用语”一个机会。在这些流行语的背后,过去十年来机器学习技术和实现这些技术的机器的发展确实令人瞩目。模型越来越复杂,使得机器能够更好地分类、标注和预测连续值。然而,随着模型变得越来越复杂,我们如何确定模型没有利用训练偏差或预测背景噪声的细微变化。机器犯错误的方式与人类不同。(参见示例这里、这里和这里 ) 使用 python 库 ELI5 、 PDPbox 、 Lime 和 SHAP ,我们可以直观地看到一个模型如何预测一个结果、衡量特征的重要性,或者区分图像中的边界。事不宜迟,让我们透过黑盒模型的帷幕来看看我们的模型表现如何。代码和图像可在 GitHub 上找到。
点击这里帮助设置环境
当训练分类模型时,我们试图最小化单独测试集的错误分类。使用威斯康星乳腺癌数据集,我们试图根据肿瘤特征对肿瘤进行恶性或良性分类。为了训练我们的模型,我们将使用一个随机森林,并按 85/15 的比例分割数据。根据我们的测试集预测,我们会得到以下混淆矩阵:
Code for confusion matrix is adapted from Calvin Duy Canh Tran
误差分析
探索模型中的错误是了解某些要素是否驱动模型预测的好方法。我们开发了一种方法来输出测试集中的假阳性(FP)和假阴性(FN)观察值的指数。我们使用 ELI5 研究特性对错误(本文中的 FP)的影响。
Contribution to probability of class by features. A negative value indicates a weight on the support for a malignant tumor in this example.
我们也可以用石灰来探索这个棘手的问题。
Lime output displays the value of the top feature contributors to a particular class.
或者 SHAP。
SHAP values also explain the contributions to a particular class.
上面的图片都探索了单一测试用例的完整特性集的贡献。SHAP、ELI5 和 PDPbox 可以解释所有测试数据中最重要的特性。这对于减少特征的数量和为将来的数据收集协议获取知识是有用的。
特征选择
由于我们使用的是随机森林模型,我们可以直接从 sklearn 收集特性重要性。
ELI5 的排列重要性函数测量移除一个特征时精度的下降。这种去除是通过打乱特征值从而产生噪声来实现的。
The permutation importance is weighting some features higher than the standard feature importance.
在探索特性重要性方面,我个人最喜欢 SHAP。汇总图如下所示。
我们可以看到最差半径和最差周长的值是非常重要的特征。他们主要测量肿瘤的大小。最差凹点是另一个很有分量的特征,与前两个不同。最差凹点和最差周长是如何关联的?我们可以使用 PDP 独立探索功能:
或者我们可以一起探索它们:
SHAP 也可以对由 SHAP 值着色的 PDP 执行类似的分析。
此外,我们还可以使用 sklearn 进行特征选择。
映象分析
对于这一部分,我们正在使用深度学习进行图像识别。传统上被认为是一个黑箱,我们使用石灰来掩盖图像分类中的重要特征。我使用的是来自 Marcotcr 的预建神经网络。网络偏向狗分类,有一些贬低的方法。随意选择自己的图像分类网络。给定一只鹅和一只边境牧羊犬的图像,模型的性能如下:
The scores are printed in reverse order with the highest confidences printed last
我们的模型正确地识别了边境牧羊犬和鹅。柯利牧羊犬和 whippet 是相似类型的狗。我们来看看网络是怎么做这些鉴定的。
Border collie label is called using the information from the locations in green. The areas in red is identified as not a border collie by the neural network.
除了正确地呼叫一只鹅和各种狗之外,我们的算法认为在这个图像中有一个橄榄球。我想知道为什么?
I can kinda see it
你有它!python 中异常值的要素贡献、要素重要性可视化和图像识别要素的概述。为这篇文章鼓掌,关注我,一定要看看我的个人 LinkedIn 。本文的所有代码和数据都可以在 Github 上找到。使用这些工具来解释模型将允许您检测偏差、调试、指导未来的数据收集,并以更高的透明度建立信任。
数据科学项目使用什么项目管理工具
原文:https://towardsdatascience.com/what-project-management-tools-to-use-for-data-science-projects-49c17c719cfe?source=collection_archive---------10-----------------------
在数据科学中,传统的项目管理方法不能作为独立的方法。了解每种方法在特定情况下的优势是一个强有力的解决方法。
Source: unsplash.com
如果您从未考虑过这个问题,那么现在是时候面对项目和项目管理的真相了。这是我们每天都要处理的事情。项目管理作为一个专业领域正在蓬勃发展,专业项目经理和需要项目导向技能的工作急剧增加。
全球领先的项目管理组织项目管理协会指出,到 2027 年,雇主将需要*8800 万员工直接参与项目管理和项目管理导向的角色——这是一个令人震惊的数字。
如果你从事数据科学,机器学习等。,你知道组织信息、安排和计划步骤和阶段是多么重要。根据 Jeffery Leek 的说法,Jeffery Leek 是约翰·霍普金斯大学彭博公共卫生学院的教授,同时也是 Simply Statistics 和 Biostatistics 的联合编辑和 JHU 数据科学实验室的联合主任数据科学项目中几乎 20%的时间都花在了组织和记录所有的工作上。差不多吧,不是吗?
数据科学项目中的项目管理方法
就其本质而言,数据科学项目管理依赖于常见的项目管理方法,但并不是所有的方法都能得到最充分的成功应用。由于这是一个相对较新的领域,数据科学可能需要一些新的东西,或者至少是标准方法的组合。
然而,由于数据科学仍在发展,还没有直接成型,对于什么方法在这些项目中最有效的问题,不可能有唯一的答案。
一般来说,可以区分以下方法:
CRISP-DM 作为数据科学项目管理的传统方法。
瀑布作为一种传统的方法。
作为敏捷方法的 Scrum。
看板作为一种敏捷方法。
这不是数据科学项目中使用的方法的完整列表。但是你一定会找到基于上述方法的应用程序。这就是为什么我将描述纯粹基于它们的工具。它们将有助于确定每种方法的关键点,从而帮助开发一个特别适合您的模型。
数据科学项目的项目管理工具
CRISP-DM
当我们处理数据科学时,数据挖掘是工作过程中最关键的步骤之一。当我们谈到挖掘标准时,CRISP-DM 代表数据挖掘的跨行业标准流程会立即浮现在脑海中,因为这可能是最广为人知的标准。
根据 CRISP-DM,数据科学项目管理中有六个迭代阶段。
理解一个你必须问很多问题的商业问题。
从 Web 服务器、日志、数据库、在线存储库等多个来源了解和获取数据。
数据准备,包括数据清理和数据转换。通常,这个阶段是最耗时的。
构建和评估模型时的数据建模。这是核心活动。
评估包括可视化和交流。
部署和维护以及最终报告和项目评审。
方法论的优点:灵活性和循环性;以任务为中心的方法;容易实现。
方法论的缺点:对团队不起作用;不包括沟通问题。
在 CRISP-DM 中使用什么工具?
RapidMiner
RapidMiner 被公认为 2019 年 Gartner 数据科学和机器学习*台魔力象限的领导者。所以,如果你认真从事数据科学,需要对大型模型和数据进行预测分析,这个工具是你完美的选择。
软件的优点:一个严肃的工具,提供你处理数据所需的一切;直观的界面;解释分析结果的可视化。
软件的缺点:对于没有准备的用户来说,价格可能太高;缺乏教程。
备选:橙色。
瀑布
这种方法给出了从项目一开始就定义的所有任务的清晰的结果图。一个项目或它的某些阶段被分解成更小的部分,并用依赖关系连接起来。当你分块的时候,计划管理起来更加容易和有效。这里不认为会发生变化,但是它们可能会发生。
这种方法不适用于数据发现过程。然而,如果过程可以被看作是有形的阶段,它可能对计划有用。
这里成功使用的最广泛的工具是甘特图。
方法论的优点:需求、任务、日期、受托人从一开始就是已知的;包括大量清晰的视觉细节;容易跟随;非常适合团队沟通。
方法的缺点:不包括变更管理,尽管尖端的甘特图应用程序允许这样做。
在瀑布中使用什么工具?
GanttPRO
GanttPRO 是一个强大的甘特图软件,具有许多附加功能。它还有助于管理资源、团队和成本,这也使它成为项目沟通和协作的有效解决方案。如果您需要将您的项目分成具有相关日期、里程碑、严格期限和进度的较小部分,请选择此甘特图制作工具。
软件的优点:简单易懂;较短的学习曲线;直观的界面;14 天免费试用。
软件的缺点:对长期项目来说不是一个完美的选择。
备选方案: Wrike 。
Scrum
这是世界上最广泛的敏捷方法之一,在各种行业都有应用。
根据这种方法,大型项目被分成更小的阶段,称为 sprints,持续 1-2 周到 1-3 个月。每个 sprint 都有固定的时间框架,并且应该实现在动员会上设定的交付成果。
Scrum 非常依赖客户反馈。
方法论的优点:关注客户;适应性强且灵活,有很大程度的自主权;就数据科学而言,它允许优化可预测性。
方法学的缺点:时间限制的性质可能会在评估阶段造成麻烦,因为有许多未知的问题;不适用于长期项目。
在 Scrum 中使用什么工具?
JIRA
这个工具不需要介绍。任何处理积压工作、冲刺和燃尽图的人都知道 JIRA。高效、可定制、视觉上吸引人——这一切使 JIRA 成为世界上最受欢迎的项目管理工具之一。
软件的优点:数百个集成;适用于小型和大型项目,适用于小型和大型团队;视觉报告。
软件的缺点:学习它需要时间。
备选方案: Clarizen 。
看板
看板是一种方法,它使用一块板作为项目,卡片作为任务。传统的看板包括三栏——已完成、进行中和待完成。在数据科学项目方面,可以增加额外的专栏:在开发、编码、测试等方面。
这是一种更受欢迎的方法,证明了它的有效性。看板也指敏捷方法,和 Scrum 有很多共同之处。
同时,这种方法更加强调工作的进展,而不涉及日期和角色。
方法论的优点:强调正在进行的工作;它灵活易用;工作被极大地可视化了。
方法论的缺点:不强调日期和截止日期(相反,对于数据科学项目来说是加分的)。
看板中使用哪些工具?
特雷罗
Trello 是看板工具中的明星。这是非常简单的使用和非常容易理解。对于个人和团队项目来说,这是非常高效的。它的免费版本可以很好地满足大多数需求。
软件的优点:坚实的免费版本;手机版;使用简单;视觉上吸引人。
软件的缺点:它只适用于正在进行的工作;没有日历。
备选:佩莫。
混淆方法和工具
在数据科学管理的项目生命周期中,很难找到一个完美的工具。有些阶段会有严格的截止日期,有些则没有;有些需要数据挖掘,有些不需要管理。数据科学项目存在于几个阶段,这是绝对自然的。
通过清楚地表明每个阶段的期望和目标,你将认识到如何更有效地使用正确的工具。
关于数据科学,在 Instagram 上放图表教会了我什么
原文:https://towardsdatascience.com/what-putting-graphs-on-instagram-has-taught-me-about-data-science-1cb5d7145606?source=collection_archive---------9-----------------------
Some recent content @the.wine.nerd
今年早些时候,我创建了一个关于葡萄酒数据的 Instagram。
我很快意识到人们不会真的那样做。我的意思是,如果你快速浏览 Instagram 上的标签#数据科学,你会看到很多教育数据科学的内容,一些人在做分析,一些人在做讲座等等。有一些很棒的账号(我现在已经和他们建立了联系并定期给他们发消息)是非常有趣的事情: @datavizzy , @basic_muse , @thedatavizwiz 。但总的来说,Instagram 不是 Medium 那样的数据科学世界。
@ the . wine . nerd开始是作为我新兴的葡萄酒知识的一个创造性的出口,真的只是包括关于葡萄酒的照片和有趣的事实。2019 年 2 月,我开始向我的一些朋友提出做“葡萄酒数据分析”的想法,并在 2019 年 3 月发表了决定性的第一篇帖子(见下文)。
现在,在过去的几个月里,我和这位葡萄酒爱好者一起走过了漫长的道路,我对成为一名高效的数据科学家意味着什么有了惊人的了解。这篇文章的其余部分将重点分享一些经验。
有时,在你的视觉化图像中设置背景会有所帮助,就像你不在那里解释它一样。
我的意思是,我的博客就是这种情况——在 Instagram 帖子的评论中,你只能强调和回复这么多。相反,我学会了设置背景,将注意力吸引到故事的重要部分,并使用视觉线索来帮助读者理解我的观点。这方面的一些技术包括:
- 标题作为结论,而不是标题作为图表的主题。
- 注释和比较线来设置基线。
- 颜色来区分和建立微妙(甚至不那么微妙)的背景。
其他时候,玛丽·*藤那张图表。
我在最*参加的一次会议上听到了这个短语;我都笑了,非常同意。不需要复杂的就不要复杂。简单,挑选一个关键的要点,不强调其余的数据,这样人们就能很快理解你想表达的意思。如果人们想花更多的时间看图表,更好地理解数据,他们会的。
这里有一个葡萄酒爱好者的帖子,展示了加州每个葡萄酒产区的*均品酒费。我想传达的关键信息是,纳帕的品尝费高得离谱。为此,我只保留了顶部区域,并且只保留了一个关键点。然而,通过将其余地区分离出来(而不是将数据分为“纳帕”和“非纳帕”),人们还可以对他们感兴趣的特定地区的品尝费用进行评论,如下所示。
为最小公分母而创造和交流。
我认为对数据科学家来说,最好的面试问题之一是以“把我当成五年级学生来解释”开始。作为数据科学家,我们应该能够清楚地表达我们的分析和使用的技术。
一个例子是,我在分析中大量使用箱线图,因为我认为它们是可视化不同类别分布的非常有效的方法。当有人问你如何解读你的情节时,你能解释清楚吗?更好的是,你能帮忙添加上下文吗,这样他们就不用问了?现在我试着在评论和标题中这样做——记住,每一个大胆的人问,10 个可能没有。
但是不要忘记房间里的技术人员的细节。
另一方面,作为数据科学家的一些最佳时刻是当人们挖掘你的结论或方法背后的基本原理时。我们终究是这样变好的!例如,上次有人质疑你在散点图中使用最佳拟合线是什么时候?
yes, I did respond to him with the r squared and slopes
现在,每当我分享图表时,我都会后退一步,思考“我遗漏了什么信息”,并确保我手头有这些信息,或者我将它们包含在图表的脚注中。下面是我下周分享的一个例子,包括相关系数:)
在格式化上花时间会增加可信度。
如果你习惯于向普通观众展示可视化效果,那么你通常不会在美化可视化效果的过程中投入太多时间。如果你看看那些利用数据的流行博客,比如 FiveThirtyEight 或纽约时报,你会注意到它们看起来很专业,而且整合得很好。基本的东西,如字体大小,删除框,样式颜色,添加图例,标签轴等。帮助你的观众不仅理解而且信任你的数据。
对一个问题的清晰阐述确实能引发讨论。
迄今为止,我发现的最令人惊讶的见解之一是我的葡萄酒混合分析。这里真正的发现是,大多数葡萄酒并不是 100%像它们所标注的那样,其中一些勉强符合葡萄酒的法律要求(如果你想了解更多关于分析本身的信息,请阅读我链接的帖子)。
但在试图传达这一发现时,我想要一个引人入胜的可视化效果,并真正触及这一点。我觉得关键是我想让人们清楚地了解两件事:百分比因酿酒商而异,其中一些非常低,接*法律要求。说实话,我觉得“大多数我们喜欢的出租车都不是 100%的出租车”确实引起了人们的注意,人们可以立即理解我在说什么。
有时候数据实际上并不需要图表。
作为一个明显喜欢可视化数据的人,这可能是最难承认的事情之一,但有时你真的不需要那些花哨的分布、绘图和图表。你真正需要的是给别人一种视觉上有趣的方式来消化你试图分享的信息。下面是一个例子,是我在迭代了大概 5 种其他方法后创建的,用来可视化每种葡萄酒在加州的生长地点和数量。最后,我决定将这些信息分开:一个地图显示地点的上下文,一个列表显示葡萄的百分比。
归根结底,学习是一个终生的过程。
你在做什么来获得你的 10,000 小时?作为一名数据科学家,创办 Wine Nerd 是提高我技能的最好方式之一。
p.s .不要脸的塞在 Instagram 上关注我 @the.wine.nerd 还有我很想在评论里听听你们是怎么练技术的!
优秀的数据科学家和伟大的数据科学家之间的区别是什么?
原文:https://towardsdatascience.com/what-separates-good-from-great-data-scientists-2906431455fd?source=collection_archive---------4-----------------------
不断发展的领域中最有价值的技能
数据科学就业市场正在快速变化。能够建立机器学习模型曾经是只有少数杰出科学家拥有的精英技能。但是现在,任何有基本编码经验的人都可以按照步骤训练一个简单的 scikit-learn 或 keras 模型。招聘人员收到了大量的申请,因为在工具变得更容易使用的同时,围绕“世纪最性感工作”的宣传几乎没有放缓。对数据科学家应该带来什么的期望已经改变,公司开始理解训练机器学习模型只是在数据科学中取得成功的一小部分。
以下是将最优秀的数据科学家区分开来的四个最有价值的品质。
1.强烈关注业务影响
对数据科学家来说,最常见的激励因素之一是寻找数据模式的天然好奇心。深入探索数据集、试验该领域的最新技术、系统地测试其效果并发现新东西的探测工作可能会令人兴奋。这种类型的科学动机是数据科学家应该具备的。但是如果这是 T4 唯一的动力,那就成问题了。在这种情况下,它会导致人们在孤立的泡沫中思考,迷失在统计细节中,而不考虑他们工作的具体应用和公司的大环境。
最优秀的数据科学家了解他们的工作如何融入公司整体,并有交付商业价值的内在动力。当简单的解决方案足够好的时候,他们不会在复杂的技术上浪费时间。他们询问项目的更大目标,并在找到解决方案之前挑战核心假设。他们关注整个团队的影响,并主动与利益相关者沟通。他们对新项目充满了想法,并且不怕跳出框框思考。他们引以为豪的是他们帮助了多少人,而不是他们使用的技术有多先进。
数据科学在很大程度上仍然是一个未标准化的领域,数据科学训练营教授的内容与企业实际需要的内容之间存在巨大差距。最优秀的数据科学家不怕走出他们的舒适区,去解决紧迫的问题,并最大限度地发挥他们的影响。
2.扎实的软件工程技能
当人们想到理想的数据科学家时,他们脑海中通常会出现来自名牌大学的知名人工智能教授。当公司在竞争中建立尽可能精确的机器学习模型时,为这样的档案招聘人才是有意义的。当必须通过任何必要的手段挤出最后的准确度百分比时,那么您需要关注数学细节,测试最复杂的方法,甚至发明专门针对特定用例优化的新统计技术。
但这在现实世界中很少是必要的。对于大多数公司来说,精确度不错的标准模型已经足够好了,不值得投入时间和资源来将不错的模型变成世界上最好的模型。更重要的是快速建立具有可接受精度的模型,并尽早建立反馈周期,这样您就可以开始迭代并加速识别最有价值用例的过程。准确性的微小差异通常不是数据科学项目成功或失败的原因,这就是为什么软件工程技能在商业世界中胜过科学技能。
数据团队的典型工作流程通常是这样的:数据科学家用试错法和意大利面条式代码构建一些解决方案的原型。一旦结果开始看起来有希望,他们就把它们交给软件工程师,然后他们必须从头重写一切,以使解决方案可伸缩、高效和可维护。不能期望数据科学家交付全职软件工程师级别的产品代码,但是如果数据科学家更熟悉软件工程原则,并且对可能发生的架构问题有所认识,那么整个过程会更加顺利和快速。
随着越来越多的数据科学工作流程被新的软件框架所取代,扎实的工程技能是数据科学家最重要的技能之一。
3.谨慎的期望管理
从外部来看,数据科学可能是一个非常模糊和令人困惑的领域。这只是一场炒作还是这个世界真的正在经历一场革命性的转变?是不是每个数据科学项目都是机器学习项目?这些人是科学家、工程师还是统计学家?他们的主要输出是软件还是仪表盘和可视化?为什么这个模型向我显示了一个错误的预测,有人可以修复这个错误吗?如果他们现在只有这几行代码,那么过去一个月他们在做什么呢?
有很多事情可能是不清楚的,对数据科学家应该做什么的期望在公司的不同人之间可能有很大差异。
对于数据科学家来说,主动、持续地与利益相关方沟通以设定明确的预期、尽早发现误解并让所有人达成共识至关重要。
最好的数据科学家了解其他团队的不同背景和议程如何影响他们的期望,并仔细调整他们的沟通方式。他们能够以简单的方式解释复杂的方法,让非技术涉众更好地理解目标。他们知道何时抑制过于乐观的期望,何时说服过于悲观的同事。最重要的是,他们强调数据科学固有的实验性质,并且不会在项目成功与否尚不明朗时做出过度承诺。
4.适应云服务
云计算是数据科学工具包的核心部分。在本地机器上摆弄 Jupyter 笔记本达到极限,不足以完成工作的情况太多了。例如,当您需要在强大的 GPU 上训练机器学习模型、在分布式集群上并行化数据预处理、部署 REST APIs 以公开机器学习模型、管理和共享数据集或查询数据库以进行可扩展分析时,云服务尤其有用。
最大的提供商是亚马逊网络服务(AWS)微软 Azure 和谷歌云*台 (GCP) 。
考虑到大量的服务和*台之间的差异,几乎不可能胜任云提供商提供的所有服务。但是,对云计算有一个基本的了解是很重要的,这样才能浏览文档,并在需要时了解这些特性是如何工作的。至少,这允许您向友好的邻居数据工程师提出更好的问题和更具体的要求。
所以你有它。对于希望从零开始组建数据科学团队的公司,我建议寻找务实的问题解决者,他们拥有强大的工程技能和对商业价值的敏锐感知。卓越的统计可以带来很多价值,但是对于大多数用例来说,它变得不那么重要了,尤其是在早期团队中。
到目前为止,大多数公司都倾向于雇佣具有强大学术背景的数据科学家,比如数学或物理博士。鉴于该行业*年来的发展,看看未来是否会有更大比例的软件工程师或技术产品经理转变为数据科学角色将是一件有趣的事情。
接下来该看哪本书?
原文:https://towardsdatascience.com/what-should-i-read-next-68be827960bf?source=collection_archive---------17-----------------------
Back Bay, Boston
我喜欢阅读,但每次读完一本书,我都会遇到同样的问题:接下来读什么?我使用的*台应该有大量的数据来帮助我解决这个问题。
然而,Libby——通过波士顿公共图书馆——没有提供任何推荐,亚马逊公司 Goodreads 的推荐也不是很好,我在那里存储了我的阅读历史。
我想要一个算法,为我提供有针对性和相关的选项,由于我没有通过我目前的图书供应商获得它,我想我会尝试自己构建它。
关于 Python 的完整项目代码, 请点击这里 。
数据
我能够找到的最佳数据集包含来自 Goodreads 的前 10,000 本书,以及用户评级、用户想要阅读的书,以及读者与该书相关联的任何标签。
这些数据有其局限性。我们只能访问 10,000 本最受欢迎的书籍,不能添加额外的信息,如流派或书籍描述。数据截至 2017 年,因此我们错过了新出版的书籍。也就是说,肯定有足够的东西来构建算法的框架。
我还能够导出我自己的 Goodreads 数据,虽然我读过的每本书都排在前 10,000 名,但在只考虑了我希望在算法中考虑的书籍后,有大约 60 本匹配。
方法和批判性思维
根据我们现有的信息,我觉得最好的方法是找到与我“最相似”的用户,然后寻找他们读过而我没有读过的最受欢迎的书(根据*均评分或阅读次数)。这种方法——在用户中寻找模式,并应用这些模式进行推荐——被称为协同过滤。
当你在一个产品下看到“购买了这个商品的顾客也购买了”的推荐集时,它实际上是亚马逊使用的一个简化版本。
Example product recommendations when searching for a cold brew pitcher.
我最初构思这篇文章的目的是关注协同过滤的步骤,但是在我完成第一组代码并查看结果之后,我意识到除了简单的过滤和编码之外,还有很多东西需要考虑。相反,下面将着重于如何使用直觉和批判性思维来提高最初的结果。
投入的加权和标准化
我意识到,需要有一种方法来标准化一本书在总体上以及在相似读者的相关样本中的受欢迎程度。否则,相似用户阅读最多的书可能会受到该书总体受欢迎程度的过度影响。这不一定不好,但是我想要一种方法来调整样本与总体。
为了克服这一点,我选择使用一种标准化结果的方法,将一本书被评分(阅读)并标记为“值得阅读”的次数除以该书的总评论数。除了帮助我们排序结果和抵消一本书的总受欢迎程度之外,这个比率在任何方面都不一定有意义。
那么,在选择读哪本书的时候,我是想要最受欢迎的书(按这个比例)还是收视率最高的书呢?我应该更看重我已经读过并喜欢的作者的书吗?或者说,应该优先选择 5 星评分最多的那家?简而言之,我选择创建一个与我的偏好相匹配的变量权重。如果我的偏好改变,这些可以在函数调用中改变:
rec_weight_avg_rating = 0.5,
rec_weight_read_ratio = 0.4,
rec_weight_perc_4_5 = 0.1,
rec_weight_perc_1_2 = -0.1,
rec_weight_author_previous = 0.1
系列、新作者和我的评分
当我运行这个算法时,我注意到,即使我在输入数据时,属于一个系列的书籍主导了结果。这是合乎逻辑的——当有人阅读并喜欢某个系列的第一本书时,他们很可能会去读第二本。如果我也读过第一本书,那些用户更有可能和我匹配。
我注意到一个丛书的模式,其格式通常是:标题,(丛书名,#[1,2,3,等等。]).因此,通过在标题中搜索“#”信号,可以很容易地识别系列中的一本书。它并不完美,但它抓住了大部分。因此,在对该函数的调用中,我添加了一个“Series”选项,如果 toggle 设置为“No ”,该选项会过滤掉所有系列。
同样,早期的推荐大部分来自我已经读过的同一作者——同样,考虑到权重,这是可以理解的。但是,如果我想读一个新的作者呢?这是一个简单的修复方法——在函数调用中加入了一个“仅新作者”开关,这样我就可以控制是否只看到新作者。
最后,在应用了其中一些因素后,我注意到我最推荐的是一个我已经读过但不一定喜欢的系列——我给大多数书打了 3/5 分。因此,为了弥补这一点,我采用了用于推荐的数据,在我自己的书中搜索了每个系列,如果*均评分低于 4,我就从数据集中删除所有实例。
我想看的书
我阅读各种类型的书籍——小说、非小说、商业等。—但不代表我评价高的东西都要推荐给我。如果我们有可用的流派信息,我可以指定我想要的推荐的流派类型,但是我们没有,所以我必须做一个变通办法。
出于本练习的目的,我决定创建一个新的专栏,并标记我希望被纳入推荐范围的书籍。只有这些书用于匹配,然后对我读过但不想推荐的其他书进行结果调整。
定义“相似的”
我必须和一个用户有多少本相同的书才能被认为是相似的?五个?十个?20?应该包括多少读者?算法的结果根据我们如何定义相似而变化。我选择使用相似读者的第 99 个百分位数,因为数据集是 600+人,他们共同评价了* 75,000 本书。同样,这个百分比可以在函数调用中更改。
推荐输出
对以上内容进行分层后,结果是什么?让我们试着调用几个函数:
# Default call to the functionbook_recommendation_system(my_books = my_books, all_books =
all_books, ratings = ratings, to_read = to_read,
series = 'Yes', new_author_only = 'No',
number_of_similar_quantile = 0.99,
english_only = 'Yes', rec_weight_avg_rating =
0.5, rec_weight_read_ratio = 0.4,
rec_weight_perc_4_5 = 0.1,
rec_weight_perc_1_2 = -0.1,
rec_weight_author_previous = 0.1,
return_dataset = 'No', num_similar_ratings = 50)
Basic call to the function
Test the algorithm for new authors only
Widen the bucket of similar users
Change the weights and widen the audience plus new authors only
结论
我从这个项目中最大的收获是:
- 协同过滤——或者任何推荐系统——都不能放在盒子里看。在之上分层的必然是计算机无法理解的思维和直觉。系统和算法的灵活性远比简单地执行代码以实现程序功能的能力更有价值。我以为这个项目会以协同过滤代码开始和结束。相反,我花了更多的时间来完善这个系统,而不是一开始就创建它。
推荐是推动销售和满意度的一种强有力的方式。也就是说,必须小心谨慎地对待这个话题,因为糟糕的推荐可能会令人沮丧,并阻碍未来的销售。最终,帮助某人发现他们正在寻找或甚至不知道他们可能想要的产品或服务,对所有相关人员来说都是一种胜利,对于数据爱好者来说,这是一个有趣的挑战。
“接下来该看什么?”—探索电影推荐系统,第 1 部分:受欢迎程度
原文:https://towardsdatascience.com/what-should-i-watch-next-exploring-movie-recommender-systems-part-1-popularity-48a5e3c7d8e1?source=collection_archive---------36-----------------------
推荐系统。它们是什么,你为什么要关心?
事实证明,如今到处都在使用推荐系统。《纽约时报》、Reddit、YouTube 和亚马逊(仅举几个例子)都以各种方式利用这些系统来推动流量和销售,并为用户带来你正在寻找的东西。
当人们想到电影推荐者时,他们最经常想到的是网飞,他的算法是让用户一次又一次地回来观看新的和令人兴奋的东西。
我决定自己做一个推荐系统,这样我就可以给自己推荐新电影看了。我创建了四个不同的系统,从简单到复杂:流行度过滤器、基于内容的推荐器、使用 SVD 矩阵分解的协同推荐器以及协同和基于内容的混合推荐器。
在本系列的第一篇文章中,我将讨论数据处理过程,并探索我是如何制作流行度过滤器的。
决定数据
有几个现成的电影数据集。最著名的可能是 MovieLens 数据集。如果你有一个像网飞一样的自己的网站,你可以使用来自用户的内部明确数据来帮助推荐电影。例如,Youtube 在其算法中使用*均观看时长(你的视频*均被观看了多少分钟)。Reddit 使用加权用户投票将热门帖子放在他们的“首页”。Instagram 会查看你点击了哪些广告,以及你如何在整个万维网上导航(显然这与你是否登录了你的脸书账户有关,因为脸书拥有 Instagram)。如果你已经找到了自己的路,你可能已经知道:数据是有价值的。
当然,我无法访问内部指标,如收视率、人口统计或其他任何东西,因为我没有实际推荐电影的应用程序或网站。因此,对于我的推荐系统的这一部分,我决定使用 GroupLens 的 MovieLens 20M 数据集。这给了我 138,000 个用户对 27,000 部电影的 2,000 万个评分(138,001,因为我添加了自己的评分)。一个很好的开始,当然!
然而,它缺少了一些关键的特性,而这些特性正是我真正想在基于内容的推荐系统中使用的。第一,我不想只用 27000 部电影。我想要一个电影推荐者,他可以深入电影记录的深渊,找出电影中一些尘封的钻石,甚至可以安抚最挑剔的批评家(想想皮克斯 2007 年电影《料理鼠王》中的柯博先生)。因此,为了我的受欢迎程度和基于内容的推荐者,我使用 IMDB 的可用数据集从 IMDB 收集我自己的数据来收集电影 id,然后使用 OMDBAPI 从 265,000 部电影中收集元数据。
在推荐系统方面,我想关注四个指标:多样性、覆盖面、意外收获、和新奇度。虽然我不会在这篇文章中谈论如何从数学上探索这些指标,但我会在下面快速定义它们。
多样性衡量推荐项目之间的不同程度。我是放钢铁侠回来钢铁侠 2,钢铁侠 3,复仇者联盟,复仇者联盟:奥创时代,复仇者联盟 3:无限战争等等?或者我会得到一些奇怪的,主题相关的电影,关于一个古怪的富有单身汉陷入困境,就像海底两万里?
不过,也考虑一下,100%的多样性可能看起来就像随机挑选电影,然后把它们扔回去。这不是一个很好的推荐系统。
C 超龄说明你的目录有多少被实际使用和推荐。例如,一般来说,大多数人的行为都遵循长尾帕累托分布,也就是 20-80 法则。MovieLens 20M 米评分数据集遵循这种长尾分布,我收集的数据也是如此。然而,对于我收集的电影数据集,包含 265,417 部电影,总投票数为 733,228,772,所有投票的 79.57%仅由列表中 1.5%的电影占据。当我们的投票数达到数据集的前 20%时,我们已经占了总投票数的 99.16%。
The KDE of movie votes from IMDB that shows the majority of the votes going to a few of the movies. This kind of distribution is widely explanatory of human behavior and aspects of societal life like wealth
Serendipity 是衡量返回的推荐有多令人惊讶和相关的指标。
新奇度决定了推荐的商品对一个用户来说有多不知名。这是没有严格“相关性”的“惊喜”,很难定量评估。
建议。系统 1:受欢迎程度
Image from Pexels
如果我创建一个理论上的网站来推荐电影,当我收集内部用户数据时,无论是显性的(投票/评级)还是隐性的(链接点击、观看时间、购买等),我都必须有一个开始的地方。
从流行度过滤器开始。这将返回“热门话题”。在 Reddit 上,这是他们的首页。《纽约时报》包括人气过滤器,比如他们的、【最受欢迎电子邮件】和(滚动到底部)。IMDB 有他们的“前 250 部电影”。
简单地说,流行度过滤器是这样工作的:你决定一个阈值。什么对你来说是“流行”的?前 5%?前 1%?如果您有可用的信息,您可以使用评级或投票的数量(IMDB 是如何做到的,以及我是如何做到的)来过滤这些信息。如果你是从零开始,你可以使用总销售额或票房这样的指标。一旦设置了阈值,就可以决定如何返回结果。
在我收集的数据(265,000 部)电影中,我可以看到一部电影获得了多少投票,以及这部电影在 IMDB 上的*均评分。简单来说,投票结果如下:
Votes a movie had received on IMDB. The average number of votes was 4,049. The fewest votes an individual movie had received was 5, the most votes an individual movie had received was 2,084,570
我决定看 95%以上的电影。这给了我 7691 票的初始门槛。我还决定看看那些在 IMDB 上的*均未加权评分在*均值或以上的电影。在这种情况下,未加权评分等于或高于 6.14。
但是,我们如何决定放映哪部电影呢?一般来说,这些电影会有相当稳定的*均收视率。但另一种方法是创建一个加权评级,考虑到这样一个事实,即如果我们在某个时候决定对我们的前 250 张排行榜使用评级,我们不会希望一部 5 票 10 分的电影战胜一部 100 万票*均 8.9 分的电影。稳定在人气图表中很重要。因此,我们可以使用真实的贝叶斯估计公式将原始*均评级转换为加权评级:
(𝑊𝑅)=(𝑣÷(𝑣+𝑚))×𝑅+(𝑚÷(𝑣+𝑚))×𝐶
其中:
R =电影
的*均评分 v =电影
的投票数 m =所需的最低投票阈值
C =数据集中所有电影的*均评分
如果这没有多大意义,下面是正在发生的事情:我们决定一个阈值(在我的第一个例子中是 7691 票)。对于票数超过这个门槛的电影,变化不大。然而,对于具有少得多的投票数 x 的电影,电影的*均评级随后被填充以剩余的阈值- x 投票,其中这些剩余投票中的每一个都是 C,即整个数据集的*均评级。这增加了评级的稳定性,从而增加了图表的稳定性。
我们稍后还将在基于内容的推荐器和我们的混合推荐器中使用加权评级。
The transformation of ratings on movies in my dataset with the most votes on IMDB vs the least votes. It’s clearly seen that the weighted rating of movies with many more votes than our threshold barely changes, whereas movies with very few votes move toward the mean of the dataset as a whole
根据我们的阈值(和*均未加权评分,如果你愿意的话)过滤电影后,我们剩下的是一个更小的合格电影列表。在那里,我们只需根据我们的偏好对推荐进行排序并返回。例如,以下是通过使用 265,000 部电影的整个数据集收集的合格列表中的前 20 部,按加权评分返回:
Popular movies returned
关于这第一个受欢迎度结果,有几件事:它包括全球所有的电影,包括 1891 年至 2019 年之间制作的电影。一个有用的列表,但是这是一个人们一进入网站就希望看到的受欢迎列表吗?大概不会。例如,许多美国用户在想到电影时可能会想到好莱坞,不想回到外国电影(《混乱阶级》是一部土耳其喜剧),如果在或狮子王之后推荐一部 1891 年的无声电影,他们可能会感到困惑。**
幸运的是,通过进一步过滤,这个问题很容易解决。例如,这是另一张流行度图表,只统计了 1990 年或以后发行的电影。请注意,因为我正在改变我的初始设置的形状,我的合格电影的阈值将会改变。在这种情况下,我的总票数门槛从 7691 票变成了 11707 票,看的是未加权*均评分 6.13 以上的电影。
Top 12 ‘popular’ movies from 1990 on
我们还可以选择进一步过滤,为独特的国家、导演、演员、流派、语言等创建流行度列表,确保每次都相应地更改阈值。
对于这些过滤器,在 python 中,由于通常你的数据帧中每个特征会有几个条目(例如:黑暗骑士把动作、犯罪、戏剧和惊悚都归为类型),一个解决方案是使用熊猫。DataFrame.stack ,这将允许您包含所有电影,仅通过您的目标功能的一个子集进行过滤。
Top 10 movies for Japanese language and top 10 movies for Comedy
总的来说,人气或前 N 名名单是推荐系统的一个很好的起点,无论你是为了个人博客还是电影推荐而编辑它们,有一些要点要记住:
默认情况下,前 N 名列表可能不会返回您想要的指标。对于寻找下一颗未加工钻石的电影爱好者或评论家来说,人气排行榜是不够的。它返回流行的和已知的。还记得上面有长尾的核密度估计图吗?
考虑到我们总共 7691 张投票的门槛和 6.14 的*均未加权评分,最初的合格名单包含 6532 部电影。回想一下,整个数据集有 265,000 部电影(更准确地说,是 265,417 部)。这意味着只有 2.46%的电影甚至被认为是这些前 N 名排行榜的(记住,在我整个刮出的数据集中,1.5%的电影占了总票数的* 80%)。这不是我们希望的覆盖率指标。在这种情况下,其他指标看起来有点棘手:我们有多样性,因为我们寻找它。我们的第一张图表有不同的国家,年代,流派,演员。过滤掉“日本喜剧”可能会减少我们的多样性,同时也注意到这正是用户正在寻找的。
新鲜感,在流行图表中,也可能是缺乏的。有人可能会看着 250 部顶级电影排行榜,然后想,“哦,对了,我忘了那部电影。”但他们可能不会对看到泰坦尼克号或低俗小说感到惊讶。**
关于人气排行榜要考虑的第二件事是,它们是 100%非个人化的。如果你在你的博客或网站上实现了一个流行度过滤器或图表,每个访问该网站的人都会看到相同的结果。看看 Reddit,网站历史上的热门帖子都是多年前的,这就是为什么当你访问他们的“热门”页面时,你不会看到那些多年前的帖子,其算法根据帖子的年龄进行计算和加权,通常只显示不到 6 小时的帖子。
关于人气排行榜,我们要考虑的最后一件事是,我们在假设人们喜欢什么。流行推荐背后的整个想法是,因为很多人喜欢它,一个随机的人也会喜欢它。显然,情况并不总是如此。仅仅因为 100 万人对魔戒:指环王联盟赞不绝口,并不能让一个不喜欢该系列的人突然喜欢上它。我不喜欢恐怖电影,任何受欢迎程度都不会让我改变主意。此外,虽然进一步过滤的图表确实解决了这个问题,但我非常怀疑一个五岁孩子的父母会看我们的第一张图表,并找到任何适合他们孩子观看的东西。**
总的来说,流行度图表简单,易于实现,是向用户推荐产品、页面或其他服务的良好开端。人气排行榜不是:个性化的,深度潜水的,或者会向你推荐你从来不知道你需要的电影(除非那部电影是阿凡达)。**
感谢阅读!在下面的评论中留下任何问题,如果你愿意,可以查看我的 python 笔记本或我的 github repo for this project 。
我的下一篇文章将讨论基于内容的推荐器:使用电影元数据和标签,如流派、美国电影协会评级、情节关键词、演员和工作人员、语言等,使用 NLP 矢量化和距离函数推荐电影,同时考虑可扩展性。准备好读了吗?点击这里。
数据科学家的入职应该是什么样的?
原文:https://towardsdatascience.com/what-should-onboarding-look-like-for-data-scientists-9d723c15908d?source=collection_archive---------11-----------------------
让新员工快速上手的最佳实践
Kickstarting a new journey (source)
很有可能,你以前去过那里。众所周知,入职是公司招聘流程的重要组成部分。它始终影响着新员工和团队成员,但出于某种原因,它经常被忽视。
入职不仅仅是公司给人的第一印象;它为新员工在那里的体验定下了基调。尽管在线数据科学社区产生了越来越多的内容,但与入职相关的最佳实践信息却少得惊人。
在这篇文章中,我将通过分享我的经验来解决这一需求,这些经验告诉我如何在行业中聘用新的数据科学家。
数据科学家需要自己的系统
我们知道数据科学本质上是一个多学科领域,需要多样化的技能组合。作为多面手,我们需要涵盖工程、产品、报告、分析等所有领域。
然而,这也意味着新员工需要在这些领域中的每一个领域中进行适当的入职培训。这就是为什么入职数据科学家的任务比大多数人更棘手。你必须走得更远。这意味着建立几个不同领域的知识基础,而不是专注于一两个专业。
虽然不可避免,但这并不是一个巨大的障碍。这仅仅意味着我们需要以不同的方式思考数据科学家的入职问题。不是一个全面的改革,但是我们需要一个个性化的系统来适应我们将要做的工作。
Everyone’s favorite Venn diagram (source)
设定期望
一旦所有人力资源方面的事情都解决了,新员工也熟悉了公司范围内的信息和流程,就该设定期望值了。
这通常采取与他们的经理进行初次会面的形式,在会面中,他们可以分享一些信息,并进一步深入角色。在您进一步进入入职培训之前,讨论应包括以下内容:
- 职位概述
- 随之而来的期望
- 需要考虑的*期项目
- 路线图下可能的项目
- 你想制定什么政策
- 他们会经常与谁互动
- 问题的联系方式
了解团队
接下来,是时候见见其他队员了。这一步骤因公司而异,取决于您的数据科学团队的规模和组织结构。这里最重要的是让新员工感到舒适,并让他们了解彼此。这可以是绕着办公室跑一圈去见见每个人,或者是和团队一起坐下来吃午饭这样简单的事情。
一旦介绍完成,他们应该更好地了解每个人,并开始更多地了解团队。我最喜欢的方法是在前几个月使用脸书的职业冷启动算法。这种算法的前提是从你的经理那里得到一份你应该与之交谈的人员名单,询问他们每个人 30 分钟的时间,然后做以下事情:
前 25 分钟:让他们告诉你他们认为你应该知道的一切。做大量笔记。只有阻止他们问你不懂的事情。总是阻止他们问你不明白的事情。
接下来的 3 分钟:询问团队目前面临的最大挑战。
在最后 2 分钟:询问你还应该和谁交谈。写下他们给你的每个名字。
对给定的每个名字重复上述过程。没有新名字之前不要停。
设置工具
这一点更简单,但是您的新数据科学家需要一些时间来设置他们的环境和工具。这通常意味着要跨越许多障碍,或者请求访问各种帐户和软件应用程序。
在这个过程中你能做的任何消除摩擦的事情都应该去做。我们都曾在运行某些软件或软件包时遇到过问题。我们知道这有多令人沮丧。共享适当的文档,缩短员工和服务台之间的反馈循环,以及指定团队成员联系问题,这些都是很好的举措。
了解客户
无论你在与什么行业和商业模式合作,数据科学家都需要了解他们的客户。领域知识对于持续推动影响力是绝对必要的。发展这种领域知识的一个强有力的初始方法是了解你的客户群和他们所属的人口统计数据。
“我们认为数据是大规模用户的声音。”—埃琳娜·格雷瓦尔
更好的是,如果可能的话,新员工应该尝试使用该产品。你会发现,成为自己的客户这一简单的行为可以打开你在以后产生假设和从数据中获得洞察力时不知道存在的大门。
快速历史课
我们知道历史注定会重演,有时我们不愿承认。这就是为什么了解团队和公司内部过去的项目、计划和见解可以让数据科学家的生活更轻松。
他们应该花时间回顾与团队相关的任何过去的分析或项目。即使浏览一些材料也会让新员工对以前做过的事情有所了解,如果他们在做类似的项目,可以让他们继续跟进。他们不应该陷入困境或浪费时间重新发明轮子。
也许更重要的是,确保清楚了解公司的愿景和路线图,以及他们正在做的事情的原因。
数据科学家是思想家。与项目经理或工程师相比,我们有更多的时间思考问题,所以在产生影响时,对全局的深刻理解会有很大的帮助。
Double underlined for extra emphasis (source)
第一个项目
一旦您的数据科学家设置好他们的环境,就让他们开始一个初始项目。理想情况下,你已经减少了技术和公司范围内的入职培训,足以让这个项目在一两周内开始。
这可以是一些小而具体的事情,如后续分析或利益相关者的一次性询问。如果没有产生惊天动地的结果也没关系。这个项目的目标是让员工参与进来,让他们开始做更有影响力的工作。
一旦他们在这方面取得了一些进展,给他们一些更具探索性的东西也是一个好主意。让他们稍微活动一下自己的创造性肌肉,探索数据,尝试解决一个模糊的问题。这种灵活性将大大提高他们对数据和新工作流程的适应能力。
准时与以防万一
现实是,没有人能马上完全跟上速度。这将是一个过程,其中优先考虑最重要的领域是关键。因此,重要的是要强调,新数据科学家在入职期间将他们的宝贵时间集中在及时技能和工具上,而不是在以防万一事情上分散精力。
更具体地说,及时学习的一个例子是熟悉你公司选择的数据仓库,这是他们需要尽早知道的。另一方面,学习生存分析,因为它可能是适用的,并不是入职过程中的优先事项,因此符合以防万一分组。
情况并不总是这样,应该有一个*衡。但这是一个更快启动事情的好方法。
文档和反馈
文档在这个过程中的重要性怎么强调都不为过。拥有一个集中位置的入门知识可以让入职工作更加顺利。以正确的方式构建它可能需要一些前期时间,但从长远来看,它会得到回报。
Your manuals probably shouldn’t make things harder (source)
最后,收集对流程的反馈,并为团队的下一个成员进行改进。很难站在一个刚刚起步的人的角度考虑问题,所以不要依赖它。收集反馈,找出过程中的一些潜在弱点,这样你就可以集思广益,最终实现潜在的解决方案。你未来的雇员会感谢你的。
感谢阅读!请随意查看下面我的一些类似的文章,并订阅我的简讯以接收任何新内容。
- 为新的和有抱负的数据科学家汇编建议
- A 型数据科学家的颂歌
- MVA:最低可行分析
你可以在 Medium 上关注我更多类似的帖子,也可以在 Twitter 上找到我。想了解更多关于我和我在做什么,请查看我的网站。
2019 年你应该追踪什么?
原文:https://towardsdatascience.com/what-should-you-be-tracking-in-2019-a9415a700897?source=collection_archive---------13-----------------------
衡量生活,了解进展,检查目标
跟踪和个人数据可以也应该成为你追求目标、发展更好的自我理解和优化自我提升的一部分。
随着新的一年的到来,我们许多人经常会设定新的目标和决心。在像生日、新的一个月或新的一年这样的时间触发事件中,我们宣布我们想要改变什么,并试图建立一个新的习惯或达到一个渴望已久的目标。其中很多都会失败。据估计,超过 90%的新年决心都失败了。
我们想了很多关于我们想要达到的目标。但是我们有多少次想到了 过程 底层 我们如何实现 甚至 如何衡量我们朝着那些目标前进 ?
虽然有很多术语被抛来抛去,但本质上自我追踪、量化自我、个人信息学或任何你称之为的东西都可以被定义为测量或记录关于你自己的某些事情的活动。反过来,我发现最好把这种跟踪框定在更好的自我理解或优化的自我提高上。因此,当谈到目标时,跟踪数据可以作为一种反馈机制,用于了解健康或生产力等特定领域,或者作为一种衡量你朝着客观目标前进的尺度。
在这篇文章中,我想分享我将在未来一年中跟踪的东西,但我也想讨论为什么我认为跟踪在今天是一项有用和有意义的活动。
在第一部分,我将分享一些为什么许多人跟踪和为什么个人数据收集在今天是如此有价值的追求的原因。言归正传,我发现跟踪有益的主要原因是,它是更好的自我理解和自我提升的促成因素。但是,如果我们不仅仅是跟踪和收集数据,而是开始处理我们的数据,跟踪才能成为一个推动者。这就是我认为数据参与如此重要的原因。你不需要成为数据科学家来使用你的数据。
在第二部分,也是最长的一部分,我会列出我在 2019 年要跟踪的内容,包括具体的领域和我使用的技术。我还将通过每周回顾、个人数据仪表板和目标检查来分享我处理跟踪数据的三种方式。
最后,我将简要分享我认为每个人都应该跟踪的四个方面,以及跟踪和个人数据如何与您的目标保持一致。
让我们开始看看你在未来的一年里可以跟踪什么!
为什么要追踪:追踪生活的价值
几年前,我第一次写了一篇关于我计划追踪一整年的文章。我最初的观点是,追踪生活比以往任何时候都容易,我分享了一个大清单,上面列有我在未来一年要追踪的事情。跟踪的简易性在今天依然如此。只需一部智能手机,几个应用程序,最好是一个可穿戴设备,你就可以生成和收集大量关于你自己的数据。
改变的是我如何定位目标跟踪。我不再只是为了追踪而追踪,而是为了让数据驱动的生活能够自我理解和自我提升。
我逐渐意识到,自我跟踪最好被认为是目标的支持结构。我们使用数据对我们的生活和追求进行一些客观的测量。然后,我们使用这些数据来了解正在发生的事情,并可视化我们的状态和进展。追踪不是重点;跟踪是一些其他追求或目标的推动者,比如了解我们的健康状况或改善我们的思考或写作方式。
我发现跟踪有益的人类活动和追求的主要原因是,跟踪数据可以成为更好的自我理解和自我改善的强大推动力。数据帮助我们回答问题,并追求数据驱动的目标。但是,数据和跟踪成为推动者的唯一方式是我们参与并使用这些数据。我们需要超越跟踪和数据收集,开始使用我们的数据进行反馈、自我反思和数据可视化。
简而言之,追踪可以是授权和有益的,但只有当我们使用我们的追踪数据时。这让我意识到自我跟踪应该分为两个部分:数据收集和数据参与。
- 数据收集:获取我生活各方面数据的标准流程,包括健康、时间、财务、生产力、目标等。
- 数据参与:从数据中学习,检查进度,获得反馈,并考虑你的方法。
让我们看看我将跟踪什么,以及我计划如何在 2019 年处理我的数据。
我将在 2019 年追踪什么
说到要追踪什么,最好的办法是想一两个你想要实现的目标,然后找到追踪它的方法。如果你想跑得更多,记录你的跑步。如果你有几个想养成或改掉的习惯,记录下你的习惯。如果你想更好地管理你的时间(或减少电脑或屏幕时间),跟踪这些。
如果跟踪与你已经有的目标一致,你会取得更大的成功。反过来,通过跟踪你的目标和使用你的跟踪数据,你将能够更加专注于你试图理解或实现的任何事情。
如果你不打算使用这些东西,那么跟踪它们就没有什么意义,而且我跟踪的绝大多数东西都是为了实现我自己的目标。正如我在上一节提到的,我现在把我的跟踪工作分成两部分:1。我的实际跟踪或数据收集和 2。我的数据业务。让我们先看看我追踪的是什么。
我的数据收集
在过去的几年里,我已经慢慢地建立了很多跟踪自己生活的方法。我不建议刚刚开始自我跟踪的人去尝试和实施所有这些方法。
尽管有这个关于限制跟踪量的警告,我现在跟踪的大部分数据都是被动跟踪的。所以真的不需要那么多时间去做。
- 可穿戴 : 采集睡眠、步数、心率。拥有一个可穿戴设备是一种收集各种健康和运动数据的简单方法。我主要使用 Apple Watch,但最*我也在测试一款 MiBand3。我发现睡眠是这里最有用的数据,因为我们睡眠的多少对我们的健康、学习和创造力有很大的影响。与此同时,了解我的运动量和心率也被证明是非常有用的。
- 健身/锻炼 : 集跑步、力量训练和机动性(在较小程度上,还包括游泳和骑自行车)。几年前,我超重而且不爱运动。从那以后,我跑了多次全程和半程马拉松,感觉更好,也更有活力和创造力。我在 Apple Watch 上用 Strava 跟踪跑步,通过快速手动方法记录运动训练,并使用 Fitbod 等应用程序管理我的力量训练。
- 健康 : 收集补充剂、HRV、疾病状态、血液测试生物标记、血压、体重、脂肪/身体成分。既然我已经恢复了相对较好的健康和体能,我就不会过多地关注我的健康状况。虽然我真的只服用维生素 D 和其他一些,但我确实使用药丸提醒(Round Health)来跟踪我的补充量。我喜欢用 HRV 4 训练来记录我的心脏状况、疾病、感觉等。我通过定期验血和血压检查来确保我的整体健康状况。此外,我记录我的体重,最*做了身体成分扫描,因为它可以帮助我评估我的力量和肌肉变化。
- 时间 : 收集花在电脑和手机上的时间以及项目时间和日历。我一直是时间追踪的粉丝。没有比追踪时间更好的方法来了解你的时间去了哪里。我用 RescueTime 知道我在电脑上花了多少时间,我用 Toggl 跟踪我的项目时间,包括客户工作、学习和写作。去年我主动减少了我的屏幕时间,并计划继续关注苹果的屏幕时间。虽然它可能不被认为是正式的跟踪,但我发现管理你的日历提供了许多相同的好处,以及一种快速可视化一周时间块的方法。
- 生产力 : 收集完成的任务、习惯、目标。我主要是“跟踪”我的任务和习惯,以获得更好的责任感,并专注于做对我来说重要的事情。与其说是跟踪,不如说是做重要的事情。我用 Todoist 来跟踪我的任务(和偶尔重复的习惯),用 Habitica 来跟踪我的习惯。我越来越相信目标跟踪的潜力,我已经建立了一个 AirTable 目标跟踪器来处理目标设定、目标跟踪和目标管理。所有这些都为我实现目标提供了巨大的支持和力量。
- 财务/金钱 : 收集数字交易和每月财务状况。我现在已经在很大程度上实现了财务系统的自动化。我使用 Mint 对我的数字交易进行分类,每个月我都会做一次财务检查,记录我在不同账户中的金额。
- 写作 : 收集打字字数,写笔记、草稿、发表博文的字数。关于我如何跟踪我的写作的完整解释超出了这篇文章,但总结一下,我跟踪:我现在用纯文本文件写作,所以我得到了关于我的笔记和草稿的每日变化的统计数据,我在某些应用程序中打字的字数,以及我如何创建我发布的博客。我结合使用了 Mac 版的 WordCounter 和我创建的 git 笔记和写作跟踪器。这加起来就是跟踪习惯行为(写作打字和时间)、过程(草稿和笔记)和结果(最终手稿)。我计划在接下来的一年里为更正式的数据分析和跟踪我的作品创建一些代码。
- 知识 : 收集智能笔记、阅读的书籍和文章、播客和研究。智能笔记是我新的个人知识管理系统的一部分。除了做更好的阅读笔记的目标之外,我的目标是记录我最终做了多少笔记。此外,我会继续我的传统,用 Goodreads 和 Kindle Highlights 记录我读了多少书,用 Instapaper 或 Pocket 记录我读的文章。对于播客跟踪,我继续使用 PodcastTracker.com,这是我几年前创建的。如果我有足够的时间和用户的兴趣,我计划在未来的一年里试着找时间完全重写 PodcastTracker。我也使用 Anki 进行抽认卡研究,那里有一些数据,但是还没有研究如何收集和分析。
- 媒体消费和其他随机跟踪 : C 收集设备拍摄的照片、音乐、电视/电影、YouTube(时间和喜欢的视频)。我追踪的其他几个领域并不一定服务于某个特定的目的(至少现在还没有),但是因为它们很简单,给我的生活提供了更多的背景,我喜欢它们,所以我做了它们。
- PhotoStats.io:例如,我在 2017 年末创建了一个名为 PhotoStats.io 的照片跟踪应用程序,开发仍在继续。PhotoStats 应用程序继续作为一种方式来了解你拍了多少照片,拍了什么。
- Last.fm:我被动地使用这项服务来跟踪我在 Spotify 上听的歌曲。
- Trakt.tv:我尝试手动将我观看的每个节目和电影登录到这个电视和电影服务中。
- YouTube:虽然我过去曾试图完全跟踪我在 YouTube 上观看的视频,但这太费力气了。所以我选择了一个更简单的方法来跟踪我的 YouTube 使用情况。我使用 IFTTT 集成来收集喜欢的视频,每周一次记录我在 YouTube 上的观看时间,以了解我在这项服务上花了多少时间。
今年,我跟踪了大约 20-25 个领域或指标。其中一些主要集中在确保我的健康、时间和生产力的背景统计上,而另一些则与我在写作、学习和科技产品方面试图实现的目标密切相关。我在反馈循环中使用这些重点领域来培养习惯并达到我的预期结果。
我的数据参与:每周回顾+个人数据仪表板
虽然很多关注点倾向于放在我们跟踪的东西上,包括可穿戴设备、验血、应用程序等,但我发现这种对个人数据收集的单一关注忽略了一个重要组成部分,即数据参与。基本上,如果你不定期处理你的跟踪数据,或者让你的数据提供反馈,那么它就不是很有用。因此,如果我必须给那些开始追踪自己生活的人提供一个建议的话:利用你的数据!
你不需要成为数据科学家来使用你的数据。你只需要一个活跃的好奇心和一些熟悉一些简单的工具。通常,查看电子表格应用程序中的数据就足够了。Python 的数据科学工具包、Google Data Studio 或 Tableau 等其他工具可以帮助您更进一步。
就我个人而言,我遵循几个习惯来确保我使用我跟踪的东西来更好地了解自己,并朝着我的目标做出改进。以下是我的数据参与的三个例子:
1.每周(或每月)做一次回顾
我坚信每周评论的力量。不管是每周一次还是每月一次,基本的想法是每周做一点组织清理和反思。想想过去的一周,计划下一周。对我来说,这是一段时间,你去“元”,并考虑什么工作和不工作在你的过程中。随着时间的推移,重复这个过程将帮助你更好地理解你的工作和生活系统,并实施改变来改善你的生活和工作。
就我个人而言,几年前我开始做每周回顾,它仍然是我最有用的生产或目标驱动的习惯之一。每周一次,我会留出大约 30 分钟来回顾过去的一周,检查关键领域,并为未来一周制定计划和目标。虽然这种形式已经经历了几次不同的迭代,但我坚持每周日都这样做,保持在 30 分钟以内,并确保至少有 10 分钟用于个人反思写作。
最初的灵感来自于把事情做好,现在我用一种数据驱动的方法来做我的每周回顾。首先,我使用 Google Form 聚集和记录几个数据点,并将其存储到 Google Sheet 中。我还收集了一些跟踪区域的截图。其次,我做了一些小的清理,并在电子表格中运行了一些简单的比较公式。第三,我用填充的数据点生成一个模板。第四,也是最后一点,我用这个模板写下我自己的想法,反思过去的一周和未来的一周。
如果我只能推荐一个每周一次的改变给某人尝试,那就是每周评论。入门很简单,但却能产生深远的影响。
2.创建个人数据仪表板
无论是在公司还是仅仅为了个人需求,处理数据的最佳方式之一就是创建一个数据仪表板。
这是我的“生产力”仪表板的一个例子:
有很多工具可以用来创建个人数据仪表板。它看起来如何并不重要,因为它的主要目的是帮助您比较一段时间内的数据,并可视化各种趋势。像 Google Sheets 或 excel 这样的电子表格应用程序也可以用来可视化您的跟踪数据,而 Tableau 或 Google Data Studio 则是稍微专业一些的选项,它们可以提供一种与存储数据同步的方式。
我越来越喜欢使用 IFTTT 或 Zapier 将我的数据自动收集到 Google Sheets 中。然后,我使用一些简单的公式函数将数据处理成额外的时间维度,如日期、月、周和年,并处理成有用的指标。最后,我将这些数据链接到 Google Data Studio 来创建交互式数据可视化。
我花了几个小时构建我当前的仪表板,并随着我的目标和重点的变化,在这里和那里添加了一些调整。不可否认,使用 Google Data Studio 有一个轻微的学习曲线,但是它不应该花费超过一两个下午的时间来启动和运行。
如果你有兴趣学习如何创建你的个人数据仪表板,我目前正在准备一门关于谷歌数据工作室个人数据分析和量化自我的课程,将于 2019 年初发布。注册我的时事通讯以获得早期访问和其他好处。
3.研究、关键项目和实验的目标检查
Goal Tracker, built with AirTable
目标是一个复杂的主题。思考目标和目标的内容比思考能积极支持(或消极破坏)我们实现目标的系统有趣得多。我最*开始更有意识地设定和跟踪我的目标,尤其是在对目标科学做了更多研究之后。
最终,使用目标跟踪的关键是在评估目标时使用数据和数据分析。我在一个名为 AirTable 的电子表格应用程序中保存了一个很大的目标列表。然后,我对这些目标进行分类、排序和安排。
例如,我遵循了巴菲特关于目标优先化的建议,并制定了 5 个长期目标。我额外的子目标或激励是短期目标,旨在实现那些大目标,比如财务自由或跑一场 4 小时以内的马拉松。鉴于同时致力于多个目标有多难,我按月或季度安排这些子目标。我发现这是一个很好的*衡,它帮助我将目标视为一个过程,而不是一个目标。具体来说,我能够在一个地方完成目标设定、目标跟踪和目标管理。
这被证明是相对可持续的,我使用我现有的跟踪数据和一点反思来看看我做得如何,并找出需要修复或优化的地方。目标是一个过程,跟踪帮助我优化这个过程。
结论:2019 年你应该跟踪什么
追踪和个人数据仍然是一个复杂和有争议的话题,我预计在未来几年内仍将如此。它仍然是一个如此热门的话题的一个重要原因是,所有这些数据的大部分利益都流向了少数几家技术公司。通过收集用户数据,谷歌、亚马逊、脸书等公司能够高度准确地知道他们的用户是谁,以及如何操纵他们。这对于数据的使用来说是不公*的,因为作为数据的创造者和所有者,我们也应该从中受益。
我的个人使命之一是帮助人们更好地理解、收集和使用他们的个人数据。在这篇文章中,我分享了为什么我认为跟踪数据是有益的,以及它如何能够促进更好的自我理解和改进我们如何改进。我还分享了一份相当长的清单,上面列有我在未来一年要追踪的事情。我不期望也不建议大多数人跟踪所有这些领域。一个原因是,设置需要一些时间,但主要是因为你跟踪的内容应该与你想做的事情一致。
2019 年你应该追踪什么?
我认为每个人都应该跟踪四个关键领域:健康、金钱、时间和项目(例如,任务、习惯和目标)。
1。你的钱或财务
除非你有幸生来富有,否则我相信大多数人都会从某种程度的财务知识、计划和设定目标中受益。金钱是最容易也是最简单的追踪方式之一。大多数银行和货币交易都是数字化的,这意味着很容易获得你的数据。财富跟踪也是一个领域,你可以很容易地自动化许多过程,从交易分类到投资扣除。像 Mint、个人资本、Spendee 或者你需要一个预算这样的工具都是很好的开始方式。就跟踪什么和如何跟踪而言,我建议跟踪三个方面:你的交易、你的财务检查(定期账户余额)和你的财务目标。
2。你的时间(或生产力)
时间也相对容易追踪。您可以使用被动方法或手动记录来记录您的时间使用情况。手动和被动时间跟踪以及我个人使用的混合方法都有优点,在混合方法中,你被动跟踪设备使用情况,手动跟踪项目时间。为了开始追踪时间,checkout RescueTime 可以让你追踪你的电脑时间,并分类哪些网站或应用程序是有效率的,哪些是令人分心的。在记录你的电脑使用情况一段时间后,检查你的总体数字,决定你的分配是否是你想要的,并实施改变以减少或增加某些领域的时间。
如果你更关心手机的使用,安卓和苹果都提供了应用程序来记录你的屏幕时间,并知道你在设备上花了多少时间。两者都允许你设置通知和限制。
可以说最难也是最强大的时间追踪方法是手动追踪。就我个人而言,我使用 Toggl 来记录我的时间,但大多数计时器工具也能工作。从追踪一个单一的关键领域开始,比如写作或学习,然后考虑从那里扩展。如果你想确保你为一个目标投入了时间,那就记录下来。
3。你的生产活动=项目、任务、习惯和目标
任何超过一步的都是项目。在“生产活动”的总称下,我包括项目、目标、习惯和任务。这是我提供一个关于跟踪和更好地管理任何多步骤计划或活动的总括短语的方式。关于生产力以及如何最好地管理生产力的书籍和文章不计其数。我在这里的主要观点是,通过跟踪,你可以创建一个“记分卡”,允许你跟踪你完成的常规步骤和总体成就。例如,你可以使用像 Todoist 这样的任务追踪器来了解你多久完成一次某个项目的任务,或者你可以使用像 Habitica 这样的习惯追踪器来了解你多久完成一个新习惯以及你目前的情况。一旦你开始记录你完成的任务,你就可以开始游戏化,确保你一天完成这么多,多少高优先级和低优先级的任务。
4。您的健康
在这四个项目中,健康是最难确定如何最好地衡量和量化的项目之一。在跟踪健康状况时,一个可能有用的关键区别是您是否正在测量您的健康状况(如验血、心率等)。)或跟踪某些健康承诺(如跑步、喝水、服用维生素等)。你应该致力于跟踪你的健康状况和你的健康习惯。
说到健康状况,我建议定期检测你的血液生物标志物,如果你已经超过 35 岁,并且从未定期检查过,那就检测你的血压。两者都将提供一个良好的基线。如果你超重了,你应该去称一称体重并记录下来。就我个人而言,我是 HRV 的粉丝,这是一种测量你长期压力和自动神经系统的方法。我习惯于查看自己是否训练过度、压力过大、过度旅行等,并定期调整以获得更多休息。
要记住的是,“健康”甚至“生病”都不是简单的二进制。事实上,有许多参数(如血液生物标志物)可以对从患病到正常到最佳的范围和尺度进行评分,甚至这些范围也有些主观。也就是说,虽然你可能决定自己的健康数据,但当谈到健康和健康时,我推荐并使用一些公认的健康指标。关键是要持续跟踪他们,并使用健康数据作为反馈环,以了解生活方式的改变是否改善了你的健康。
说到跟踪你的健康承诺,有几乎无数种方法可以做到这一点。如果你只是需要多运动,穿戴式或计步器计步器就可以了。用几天时间来获得一个基线,然后看到一个需要改进的目标。如果跑步、游泳或其他活动是你的事情,用 Strava 或其他应用程序跟踪它。最终,你用什么并不重要,只是试着找到一种简单的方法来了解你运动的频率和你在做什么。就我个人而言,我发现最简单的方法是使用可穿戴设备。我使用苹果手表,但我也是 Fitbit、MiBand、Garmin 和 Oura Ring 的粉丝。
最后,如果你有兴趣收集你的跟踪数据,并做一些数据分析来处理这些数据,请查看我在 github.com 的开源项目 QS 账本。这是一个 Python Jupyter 笔记本的集合,引导您收集数据和数据处理,进行全面的数据分析,并创建您自己的数据可视化。
2019 年你会追踪什么?我错过了什么,你认为我应该在来年尝试?
【www.markwk.com】最初发表于。
数据科学需要哪些技能?
原文:https://towardsdatascience.com/what-skills-you-need-for-data-science-d1963064397d?source=collection_archive---------31-----------------------
通过编码成为数据科学家
成为一名数据科学家的很大一部分是知道如何为编码建立一个良好的环境,当你刚刚开始使用一种新的编程语言时,这可能是一个挑战。
Become a great Data Scientist
初始相位
以下是你在这个初始阶段想要学习的一些东西:
Python 编码能力。在大多数数据科学环境中,编码经验将是一项基本技能。很好地理解编程需要使用什么工具和库。这里有一些你可能会用到的东西:
让我们来分解一下:
工具—您需要目前在数据科学中常用的好的 Python 工具。这些工具包括 pandas、matplotlib、numpy、Scipy、SQLite 和 r。如果您想做数据科学看起来很酷的事情,您需要熟练使用大多数 Python 工具。
库——随着您开始擅长 Python 编程,您最终也需要知道如何使用一些开源 Python 工具。这些包括那些与 NumPy 和 SciPy 相关的,需要 NumPy 和 SciPy 支持的内置 Python 库,等等。您需要知道如何快速轻松地安装这些库,以及它们与机器和网络堆栈交互的选项。
网络堆栈—需要这些工具中的一些来与机器和网络堆栈进行通信。这里有一些你想了解的话题:SSH 和 FTPS,MySQL。
这只是简单概述了开始学习 Python 和数据科学需要了解的内容。
即使在您精通 Python 并适应使用所有计算工具之后,如果您打算在工作站上运行代码,您仍然希望密切关注自己工作站的硬件。如果硬件不提供这些组件,其中一些组件将会损坏。如果您当前的计算机出现故障,其他人可能会要求您购买新的计算机,并且由于计算机的年龄,其他组件也会有特殊的要求。这将是你需要学习和跟上潮流的另一个领域,在这个过程中你会有一些有趣的项目。
职业道路
自从“量化自我”出现以来,我们看到许多人希望他们拥有那些“生活方式”的计算机科学技能。进入应用计算机科学领域的最佳途径是什么?
根据我的经验,从一个数据科学爱好者这样的初学者成为一名数据科学家是非常困难的。这份工作可能是数据分析师,但数据仍然需要大量的软件和分析。我也看到了许多伟大的硕士学位。帮助你进入数据科学领域的一些特征是什么?
狭窄的技能组合
数据科学家的技能非常专业。数据科学家需要:
- 分析数据
- 将其分解成组件(或数据集)
- 理解它们所代表的数据系列
- 建立工具来做到这一点
- 计算统计模型
- 分析并构建算法来分析结果
我不想在这篇博文中有点跑题。我认为这是最重要的第一步,但如果不认真对待,人们通常会脱轨进入其他领域。
一个很好的第一步是阅读博士和硕士水*的教程。了解每个步骤和涉及的工具。然后多看例子,自己尝试一下。
保持相关性!
这是最关键的属性。如果你的技能不符合你所进入的行业的要求,你将只是一个没有前途的“数据分析师”。这意味着学习能为你的下一份工作、人际交往技能或一次经历增加价值的东西。
另一方面,如果你真的不在乎,你就什么也学不到。
祝你好运!
Data Science Job
最后,如果你想了解成为一名数据科学家意味着什么,那么看看我的书数据科学工作:如何成为一名数据科学家,它将指导你完成这个过程。
如果你在找一份书单,看看下面这些文字:
- 2020 年你应该读的数据科学书籍
- 2020 年你应该读的人工智能书籍
- 2020 年你应该读的创业书籍
什么是单词嵌入
原文:https://towardsdatascience.com/what-the-heck-is-word-embedding-b30f67f01c81?source=collection_archive---------8-----------------------
透过神经网络的透镜看文本数据
Photo by Dmitry Ratushny on Unsplash
Word Embedding = >学习将词汇表中的一组单词或短语映射到数值向量的模型的统称。
神经网络被设计成从数字数据中学习。
单词嵌入实际上就是提高网络从文本数据中学习的能力。通过将数据表示为低维向量。这些向量被称为嵌入。
这种技术用于降低文本数据的维度,但这些模型也可以了解词汇表中单词的一些有趣特征。
这是怎么做到的!
处理文本数据中单词的一般方法是对文本进行一次性编码。你的文本词汇中会有成千上万个独特的单词。用这样的一次性编码向量来计算这些单词将是非常低效的,因为一次性编码向量中的大多数值将是 0。因此,将在一个热点矢量和第一个隐藏层之间发生的矩阵计算将导致具有大部分 0 值的输出
我们使用嵌入来解决这个问题,大大提高了我们网络的效率。嵌入就像一个完全连接的层。我们将这一层称为嵌入层,将权重称为嵌入权重。
现在,我们直接从嵌入权重矩阵中获取值,而不是在输入和隐藏层之间进行矩阵乘法。我们可以这样做,因为独热向量与权重矩阵的乘法返回对应于“1”输入单元的索引的矩阵行
因此,我们使用这个权重矩阵作为查找表。我们将单词编码为整数,例如,“酷”编码为 512,“热”编码为 764。然后,为了得到“酷”的隐藏层输出值,我们只需要在权重矩阵中查找第 512 行。这个过程被称为嵌入查找。隐藏层输出的维数就是嵌入维数
重申:-
a)嵌入层只是一个隐藏层
b)查找表只是一个嵌入权重矩阵
c)查找只是矩阵乘法的捷径
d)查找表就像任何权重矩阵一样被训练
目前使用的流行的现成单词嵌入模型:
- Word2Vec(谷歌)
- 手套(斯坦福)
- 快速文本(脸书)
Word2Vec :
该模型由谷歌提供,并在谷歌新闻数据上进行训练。该模型有 300 个维度,并根据谷歌新闻数据中的 300 万个词进行训练。
团队使用跳格法和负抽样来建立这个模型。2013 年上映。
手套 :
单词表示的全局向量(GloVe)由斯坦福大学提供。他们基于 2642840 亿个令牌提供了从 25、50、100、200 到 300 个维度的各种模型
团队使用词到词共现来建立这个模型。换句话说,如果两个词多次共同出现,这意味着它们在语言或语义上有一些相似之处。
fast text:
这个模型是由脸书开发的。他们提供了 3 个模型,每个模型有 300 个维度。
fastText 能够实现单词表示和句子分类的良好性能,因为它们利用了字符级表示。
除了单词本身之外,每个单词都被表示为一包 n 元字符。例如,对于单词partial
,当 n=3 时,字符 n-grams 的快速文本表示是<pa, art, rti, tia, ial, al>
。添加了<
和>
作为边界符号,将 n-grams 与单词本身分开。
感谢阅读!
- 如果你喜欢这个,请在 medium 上关注我。
- 你的掌声对你写更多、写得更好是一个巨大的鼓励和动力。
- 有兴趣合作吗?我们在 Linkedin 上连线吧。
- 请随意写下您的想法/建议/反馈。
这些数字告诉我们什么是“科怀效应”
原文:https://towardsdatascience.com/what-the-numbers-tell-us-about-a-kawhi-effect-2f48fbdb7a1?source=collection_archive---------20-----------------------
首先他拿下了国王,结束了迈阿密热火王朝。然后他在海湾结束了金州勇士王朝。我们通过数字来解释弑君者和王朝征服者科怀·伦纳德的伟大。
7 月 5 日,洛杉矶市遭到地震袭击。然而,地震的余震可能会造成比地震本身更大的震动。全联盟的篮球迷们热切期待的答案终于来了。真正值得一年的等待归结为媒体周期中一周的猜测。"科怀会在世界上的哪个地方演出?"主宰了体育新闻圈。所有其他主要的自由球员都选择了他们想要的比赛目的地。7 月 5 日,科怀·伦纳德给洛杉机带来了一场地震——只不过他要加盟的是快船,而不是湖人。伴随科怀地震而来的是余震。
“2 号”,斯基普·贝勒斯讨厌地称呼科怀——用他的球衣号码称呼他,因为科怀离开斯基普的圣安东尼奥马刺队后留下了酸味——采取了行动。他不仅震惊了篮球世界,选择了湖人的同城对手,洛杉矶快船的“小弟”,他还成功地将快船交易到保罗·乔治。
对于 7 月初的自由球员事件,不能低估经营者科怀的精明程度。体育界确信他会去湖人…然后是猛龙…然后又是湖人…“96.5%的可能性他会来这里…预定吧!”香农·夏普在体育辩论节目上说的是无可争议的,试图将他的愿望变成现实,以便科怀可以与勒布朗·詹姆斯和安东尼·戴维斯合作。科怀·伦纳德以我们从未见过的方式驾驭了体育媒体世界。他不仅让每个人都相信他会和湖人签约,他还成功地让快船管理层交易了一个即将结束 MVP 赛季的保罗·乔治,他去年刚刚和俄克拉荷马雷霆队签订了一份最大合同。
《科怀效应》
讲故事讲够了。让我们直接进入数字。科怀和保罗·乔治都是联盟中的超级巨星。你可以对勇士受伤说任何你想说的话,但科怀带领多伦多猛龙队获得了他们的第一个 NBA 总冠军。尽管达米恩·利拉德向雷霆和他们的球队挥手告别,但保罗·乔治在 NBA 常规赛 MVP 投票中排名第三。我们将分析这两个玩家的价值观以及它对未来的意义。不过,首先,让我们想想“科怀效应”是否存在,以及迄今为止他的影响有多大。
没有关于科怀价值的讨论就没有德玛尔·德罗赞,这个被猛龙交易到马刺的球员最终被租借给科怀·伦纳德一年。奥格·阿努诺比—德玛尔·德罗赞—赛尔吉·伊巴卡—凯尔·洛瑞—约纳斯·瓦兰丘纳斯的首发阵容一起打了 52 场比赛,是猛龙队 2017-18 赛季所有首发阵容中最多的,36-16,赢得了 69.2%的比赛。事实证明,凯尔·洛瑞的 VORP 几乎是德玛尔·德罗赞的两倍,分别是 5.0 和 2.6。像科怀这种水*的超级巨星对整个 VORP 的贡献要大得多,对吗?不完全是。
丹尼·格伦-赛尔吉·伊巴卡-科怀·伦纳德-凯尔·洛瑞-帕斯卡尔·西亚卡姆的首发阵容一起打了 26 场比赛,是 2018-19 赛季猛龙队首发阵容中最多的。科怀·伦纳德贡献了总 VORP 的 25.9%,仅仅比一个赛季前德罗赞贡献的总 VORP 多 2.3%。虽然凯尔·洛瑞在 VORP 方面后退了一步,但这可以归因于几件事情。1)弗雷德·范弗利特有一个职业赛季,所以凯尔·洛瑞的价值没有他的替代者高是有道理的。2)帕斯卡尔·西亚卡姆职业生涯的一年,赢得了进步最多的球员。科怀的 VORP 为 3.6,西亚卡姆的 VORP 为 3.5。哦,对了,我没有提到这个首发阵容的记录,对吗?18 比 8,胜率——你猜对了——69.2%。和上个赛季打得最多的猛龙阵容一样的胜率。
到现在为止,我肯定你已经厌倦了我一遍又一遍地谈论同样的事情。我总是“VORP 这个,VORP 那个”,不是吗?在有人直截了当地对我说之前,我会给你们一些新的统计数据和指标,供我们评估科怀的效果时考虑。真正伟大的球员是那些在季后赛中完成任务的球员——把硬件带回家。科怀·伦纳德做了德玛尔·德罗赞不幸从未能为多伦多做的事——赢得冠军。科怀总是被吹捧为他的防守能力,所以这绝对是我们在思考“科怀效应”时应该指出的事情。
为了描绘出基本统计数据如何成为一个球员价值和效果的糟糕指标,让我们先来看看基本统计数据的直接比较。
三个主要统计类别的视力测试无疑对科怀有利。科怀在季后赛(超过 24 场)的 30.5 PPG 远胜德罗赞的 22.7 PPG。*均助攻数也差不多。科怀场均篮板数是德罗赞场均 3.6 个篮板的两倍,场均 9.1 个篮板。就像科怀说的“董事会成员得到了报酬”,这个夏天他确实得到了报酬。
由于视力测试有利于基本统计,让我们快速地将这个概念翻倍。德罗赞的投篮命中率为 43.7%,科怀的投篮命中率为 49%。用 3 分镜头可以看到更大的画面。德罗赞的三分球命中率只有 28.6%,而科怀的三分球命中率接* 38%。很明显,科怀拥有强大的进攻能力,带领猛龙队通过季后赛,获得了他们的第一个也是唯一一个 NBA 总冠军。
在查看这些高级指标之前,先快速概括一下它们的含义:
超过替补球员的价值(VORP)——某个球员给一个假设的替补球员带来的估计价值。所述替补球员通常不是常规轮换球员。计算 VORP 的数学方程式是[(方框加/减)-(-2.0)](上场时间的百分比)(团队比赛/82)。返回的值是在整个赛季中,玩家在替换过程中每 100 个团队财产所产生的点数。
进攻获胜份额(OWS)——一名球员通过进攻贡献的估计获胜次数。
防守获胜份额(DWS)——一名球员通过防守贡献的估计获胜次数。
获胜份额(WS)——玩家贡献的估计获胜次数,是 OWS 和 DWS 的总和。
(来自 Basketball-Reference.com 的高级指标解释)
现在是有趣的部分:高级指标。毫无疑问,德罗赞的先进指标显示他在季后赛中表现糟糕。我知道我说过我不会谈论 VORP,但我没有选择把它包括在内。说真的,我别无选择。如果我把战争(胜于替补,用 VORP * 2.7 计算)算进去,德罗赞的情况会更糟。德马尔的 VORP 为-0.2。其他的统计,OWS(进攻赢球份额)、DWS(防守赢球份额)和 WS(赢球份额)都支持科怀在季后赛的伟大。科怀作为防守猛兽的名声再次保持,DWS 1.7,相比之下德罗赞的 -0.2。总体而言,与德罗赞的 0.2 Win 股份相比,科怀贡献了 4.9 Win 股份。简单地说,与德罗赞相比,科怀在季后赛中一直表现出色,而德罗赞在季后赛中就是做不到这一点——科怀比德罗赞多打了 14 场比赛。
所以很明显,在季后赛到来的时候,绝对有一个“科怀效应”,马萨伊·乌吉里(猛龙队总经理)最终做出了一个正确的决定,租借科怀·伦纳德一年。尽管德玛尔,我们仍然爱你。
洛杉矶快船预测
从统计的角度来看,预测洛杉矶快船队在即将到来的 2019-2020 赛季的成功有点模糊。他们打了 23 场比赛的首发阵容是艾弗里·布拉德利-达尼罗·加里纳利-沙伊-吉尔吉斯-亚历山大(Shai 马辛·戈塔特-托拜厄斯·哈里斯。该阵容以 39.1%的胜率取得了 9 胜 14 负的战绩。更重要的统计数据?这些球员都不在快船的名单上了。
在 17 场比赛中出场次数第二多的首发阵容是帕特里克·贝弗利-达尼罗·加里纳利-SGA-兰德里·沙梅特-伊维察·祖巴茨。这个首发阵容是绝对的热,烧焦他们的对手,去 15-2,在一个高达 88.2%的胜率。现在,这是一个我们实际上可以做一些分析的阵容。
如前所述,达尼罗·加里纳利和 SGA 已经不在队中了,因为他们是保罗·乔治大交易的一部分。让我们将 George 和 Leonard 分别插入他们的位置,并比较一下这对高级度量意味着什么。
这张图表没有留下多少解释的余地。新的快船将会是致命的。2018-19 年版本的 Clips 是一支有趣的球队,超出了预期,并从金州勇士队(当时在甲骨文球馆)赢了两场比赛,预计 2019-20 年的快船看起来准备好将其他球队赶出体育馆。
哦,对了,我有没有提到谁是快船的替补?卢·威廉姆斯和蒙特雷兹·哈雷尔。特雷兹场均 16.6 PPG 和 6.5 RPG,同时带来了很多勇气和强度,而斯威特·卢将他一如既往的圆滑带到了场均 20 PPG 和 5.4 APG 的比赛中——在需要的时候也充当了夹子的终结者。只是为了好玩,让我们看看与前面提到的首发阵容相比,关键时刻的阵容可能会是什么样子。
好了,你有它的乡亲。它是一个包裹。快船在 sev-开玩笑的。也许我们可以说,如果不是一个乐高 at 詹姆斯在同一栋楼里为对手球队打球。为了更深入地了解这一点,请继续关注我的下一个故事,“湖畔秀”。
代码实现的高级概述
我想我会为那些对理解代码实现感兴趣的人提供这一部分。对于那些不感兴趣的人,恭喜你,你可以停止阅读了!
所有代码都是用 Python 写的。我上次提到过,我想从 Basketball-Reference.com 下载 CSV(逗号分隔值)形式的统计数据,并使用 Pandas 模块将 CSV 的内容存储在 Pandas Dataframe 对象中。我就是这么做的。实际上,做起来真的很容易。大部分值的解析和提取都可以在这么多代码中完成:
旁注—“#”是在 Python 中开始注释的方式。我在代码中添加了一些注释来解释部分代码。
*import* pandas *as* pd*class* TeamStats(): *def* *getDataFrame*(filename):
data *=* pd.read_csv(filename)
*return* data
#stores the CSV contents as a DataFrame object and returns *def* *getStat*(data, row, column):
stat *=* data.at[row,column]
*return* stat
#retrieves the statistic from the desired cell (ex. season, PPG)
说真的,就是这样。我肯定还有其他人可以做得更好,但这对我很有效。在这之后,我只是在另一个 python 文件中引用了这两个函数,我的图形就是在这个文件中生成的。我想知道科怀每场比赛得分的一个例子:
*import* TeamStats *as* tsdata_playoffs_1819 *=* ts.getDataFrame(“201819RaptorsPlayoffsPerGame.csv”)
#store CSV contents in DataFrame Objectdata_playoffs_1819.set_index(“Player”,inplace*=*True)
#Set the index (column of table) we want (ex. Player)Kawhi_PTS *=* ts.getStat(data_playoffs_1819, ‘Kawhi Leonard’, ‘PTS/G’)
#Retrieves and stores Kawhi's PTS/G in a variable
一旦我得到了我想要的统计数据,我就把它们包装在一个列表中,作为参数传递给另一个函数,并使用 numpy 和 matplotlib 模块相应地绘制图表。这里有一个例子,我用来比较德马尔·德罗赞和科怀·伦纳德的数据:
*import* matplotlib.pyplot *as* plt
*import* numpy as *np**# This function will graph DeMar and Kawhi's stat's side by side**def* *graphDeMarKawhiAdvanced*(demar_stats, kawhi_stats):
stats *=* [“VORP”, “OWS”, “DWS”, “WS”]
ind *=* np.arange(len(stats))
# Creates a numpy Array in the range of the number of elements in the list
width *=* .35 plt.bar(ind, demar_stats, label *=* ‘DeMar DeRozan’, color *=* ‘red’, width *=* width, zorder *=* 2) plt.bar(ind *+* width, kawhi_stats, label *=* ‘Kawhi Leonard’, color *=* ‘blue’, width *=* width, zorder *=* 2)
#both of those lines will plot both of the player's stats plt.xticks(ind*+*(width*/*2), stats)
# Gives each stat a label on the x-axis
plt.title(‘DeMar Derozan 2018 Playoffs v. Kawhi Leonard 2019 Playoffs (Advanced)’)
# Gives the graph a title
plt.xlabel(‘Advanced Stats')
# Label of the x-axis
plt.legend()
# displays a legend for the graph
很容易编写代码,并且摆脱了在我们寻找的值中进行硬编码的工作。
希望有所帮助!
下一次,我将尝试使用 plotly 模块代替 matplotlib 进行数据可视化。生成的图形更清晰、更全面,总体来说,plotly 带来了更多的功能。
感谢阅读!
来源
图像:
- https://www . Reddit . com/r/LAClippers/comments/ca 8 xrp/made _ a _ kaw hi _ pg _ jersey swap _ and _ I _ thought _ you _ guys/
- 【https://www.youtube.com/watch?v=-X7ozPnYlcg
统计数据:
Basketball-Reference.com
避免什么:数据科学应用中的常见错误
原文:https://towardsdatascience.com/what-to-avoid-common-mistakes-on-data-science-applications-a19696752890?source=collection_archive---------23-----------------------
或者说,如果你想在竞争激烈的数据科学领域获得关注,哪些事情不应该做。
Photo by Clem Onojeghuo on Unsplash
数据科学和机器学习职业仍然相对较新,我之前写过一篇关于数据科学家在工作中经常遇到的问题的文章,因为一些公司不知道如何最大限度地利用它们。
有趣的是,在接受了许多技术采访后,我发现许多潜在的数据科学家不知道如何很好地展示自己。对于那些几乎没有行业经验的人来说尤其如此(数据科学硕士毕业生等)。).
这是一个巨大的耻辱,因为我(个人)真诚地希望每个人都尽最大努力,得到他们想要的工作,但当我找不到强有力的理由让他们进入招聘流程的下一个阶段时,我确实感觉很糟糕。我想这也适用于许多处于我这种位置的人。他们希望你成功,但在我们投入时间进行面试之前,我们需要知道你能成功。奇怪的是,他们对企业来说并不是免费的,如果你考虑到你将会见 2-3 个人,每个人一个小时,这可能会很快增加生产力的损失。
为了准确指出这个成本,我们可以做一个数量级的估计。高级数据科学家的年薪为 60,805(31/小时),而数据科学家的年薪一般为 46,820(24/小时)。如果你认为高级数据科学家可能会与你进行总计一个小时的电话交谈(或向招聘人员介绍你),如果你通过了,那么你将与两个人进行一个小时的面试(一名团队数据科学家进行技术面试,高级数据科学家进行一些软技能和适应性面试),然后是 30 分钟的关于面试结果的私人小组讨论。然后他们在你身上投资了 4 个小时或大约 114 英镑的工资成本。然而,这是最低成本,因为你需要考虑额外的时间或其他因素,如人力资源人员等。
所以,面试是衡量你的一项昂贵的投资,让每个人都尽自己最大的努力是很重要的。
根据我自己关于生存偏差的经验,我没有列出一个成功的申请人做对了什么,而是列出了那些在这个过程中从未走得很远的人的错误。我希望这能帮助你避免我在办公桌上收到的一半以上的申请中常见的错误。
我将详细阐述每一个,但总的清单是:
- 不要说谎
- 保持它的相关性&切题
- 只写下可辩护的材料
Photo by Joao Tzanno on Unsplash
注:这些都是我自己的亲身经历和看法结合和别人聊自己的面试经历。不同的人和/或公司可能有不同的经历/观点。
1.不要说谎
这似乎是显而易见的,但我确实看到了这一点,这是一个瞬间的“不不”。幸运的是,我很少看到公然撒谎,但我见过这样的情况,有人声称自己是一个小组的负责人,却发现面试官实际上认识这个小组的负责人,并在这次中期面试中与他们对质。
信任是一种很好的商品,因为在代表公司时,你会被期望传达一种正直和专业的形象。因此,你不想做任何让他们怀疑你能做到的事情。所以,我在这里所说的“不要撒谎”是指试图扭曲或掩饰你对自己的介绍,以至于你被认为是不可信的。
这种“真理延伸”包括以下内容:
- 把别人的功劳据为己有
- 暗示你参加的 Kaggle / MOOC 是一份真正的工作
- 放下不可能发生的事情
在 MOOC 或其他课程被冒充为原创作品的地方,人们常常会认为这是一个真正的行业数据科学项目。与顶点课程(也就是说,你只获得数据和很少的解决方案指导)不同,这些课程是你按照结构化的课程材料学习的,解决方案是现成的。
以这种方式呈现它们的缺陷是,任何合理规模的数据科学团队都可能有人已经采用了它,因此会注意到您所谈论的内容的相似性。他们通常可以剔除这些,虽然不是完全的不,但这可能会被模糊地看待,这取决于失礼的程度。对于较小的团队来说也是如此,因为他们通常仍然拥有经验丰富的数据科学家的核心(其中一些人可能已经编写了您引用的课程)。
Photo by Austin Distel on Unsplash
不要误解我的意思,我希望任何人都能够展示出自己最好的、最令人印象深刻的一面(例如抬高自己),展示自信是好的,但你也可能做得太过了。
如果你在“工作/行业/职业经历”一栏中列出 Kaggle、Coursera 或 edX 课程,你会感到惊讶。虽然所有这些都是很好的继续教育和职业发展,但它们很少能与付费客户或老板给你一个真正的问题来解决的独特挑战相比。后者的作品更令人印象深刻,但前者也不错。把它放在正确的地方。
第三点中最常见的地方(不可能发生的事情)是缺乏基本事实核查的断言。也就是说,如果你声称拥有 10 年的 TensorFlow 经验(2015 年发布的),不要指望它会被接受。此外,如果你说你非常注意细节,确保你没有明显的格式错误。
任何这些说法都可能被指出来,你会感到尴尬。或者你可以争辩说你是对的(正如已经发生的那样),但是如果你不能证明这一点,那么这将对你不利(见下面第三点)。
Photo by You X Ventures on Unsplash
2.保持相关和切题
想象一下,你刚刚读了一本书,尽管你是在书店的那一区买的,但它从来没有提到过与科幻小说有关的任何事情。你一直读到最后,希望它会突然出现。
现在想象一下,从后往前看一份简历,读到最后发现它一次都没有提到数据科学或机器学习。你怎么判断他们的技术?
如果你想要一份数据科学的工作,你需要提到它并详述细节。我见过很多简历上写了很多他们做过的事情,但是没有提到机器学习算法、统计学甚至 python/R 等等。
要被录用,面试官需要看到你对主题领域有所了解,他们需要足够的细节来了解你的经验水*,这样你才能得到合适的面试。例如,如果您从未使用过 SQL,就没有必要对您进行测试。相反,他们可能会在你提到的一个更强的领域测试你(建立良好的数据科学能力需要很多种方法)。
如果你说“我用了机器学习”告诉我更多。让它成为一个简短但有趣的故事。例如:
“我们利用机器学习解决方案来检测排水管泄漏,首先对傅立叶变换的声音轮廓应用 PCA。使用 K-最*邻进行最终分类
听起来比:
“我们遇到了下水道漏水的问题。使用机器学习,我们能够检测到它们。”
上面的解决方案有点长,但是你提到的两件事会引起我的兴趣,那就是“你是如何做到的”和“领域知识”。它有助于将你与使用现成程序的人区分开来,前者知道它是如何工作的,可以设计定制的解决方案,而后者只需点击一下就忘记了(例如,它运行多个模型,并在没有专家监督的情况下选择最佳方案)。
关于相关性,确保与数据科学家不相关的领域在你的简历中更靠后。我经常被教导为我申请的每一份工作量身定制我的简历,这将需要把更相关的部分上移,这样它们会被首先看到。如果一个潜在的老板一天看很多简历,他们会缺乏注意力,你需要尽早抓住他们。这也表明你拥有数据科学的一项关键技能,即清晰快速地传达你的发现的关键点。
如果你有一封求职信或声明,让它相关。他们可能只需要知道你有 12 个阿姨,并且已经两年没吃肉了,这是你面对面面试开始时破冰对话的一部分。
Photo by The New York Public Library on Unsplash
3.只写下可辩护的材料
随着数据科学的巨大爆炸,人们很容易记下所有你能记住的流行语,并希望它们能抓住某人的眼球。
由于这是一个如此多样化的领域,放下很多东西会撒下一张大网,但会引起人们的惊讶,你是否真的是数据科学的神奇独角兽。如果你不是,那么当被问到时你可能会挣扎,可能会疏远面试官(还记得夸大事实吗?).
这是因为面试官有一个习惯,一旦他们发现你知识上的一个漏洞,他们就会咬破它,看看这个漏洞有多深。这意味着你可能会在面试中花 15-20 分钟被问到你所知甚少的问题,变得非常沮丧,感到尴尬,而你非常擅长的领域永远也不会出现。
避免这种情况的方法是,只在你的简历上写一些你觉得如果被问到你可以为自己辩护的东西。
我确实遇到过这样的情况,在一次技术面试中,有人很难回答我设置的一个 SQL 问题。然而,当他们说这不是他们通常做的事情时,我已经指出了他们写的应用程序的一部分。这对每个人来说都很尴尬,而且会让人对你简历中其他可能很可靠的地方产生怀疑。
拿走
面试是可怕的,信不信由你,面试官也担心事情会如何发展(至少我是这样)。他们希望你成功,尽你所能成为最好的数据科学家,因为没有人愿意为那些显然不能胜任工作的人参加面试。
如果你得到了一个你明确展示过的面试机会,你就有足够的承诺来承担安排面试的成本。
为了帮助你做到最好,这些建议可以帮助你:
- 只写下你能在面试中辩护的内容
- 确保你的简历没有语法和格式错误
- 提及数据科学,并提供足够的细节,让人们知道你做了什么
- 不要写战争与和*。你希望最好的部分清晰且容易找到,而不是被淹没
- 把相关的部分移到简历的顶部,这样它会首先被看到,并在招聘人员阅读其他部分时记住
- 一定要包括关于你自己的细节,但要放在正确的部分(例如,知道你划船是好的,会让你更有个性,但如果你申请的不是与船相关的工作,也许应该放在最后)
总之,如果你能以一种易于理解的形式写下你有多了不起,你在这个领域有什么经验,那么你就证明了你能很好地传达关键信息!
另外,不要害怕寻求反馈。你可能收不到任何东西,也不要因此而沮丧,但你得到的任何东西都是宝贵的,可以帮助你找出薄弱环节。
“模型不行了”怎么办?
原文:https://towardsdatascience.com/what-to-do-when-the-model-doesnt-work-5ea09ad6d423?source=collection_archive---------22-----------------------
Photo by JESHOOTS.COM on Unsplash
你的团队已经工作了几个月来收集数据,建立预测模型,创建用户界面,并与一些早期客户一起部署新的机器学习产品。但是,你现在听到的不是庆祝胜利,而是客户经理对那些早期采用者客户的抱怨,他们对他们看到的预测准确性不满意,并开始认为“模型不起作用”。你现在做什么?
这是我们在 Pattern Labs 与在新产品中实现机器学习的组织合作时经常看到的情况。这不是一个容易迅速解决的问题。现实世界的机器学习模型的性能受大量因素的影响,其中一些因素可能在您的控制之下,而另一些因素可能不在您的控制之下。最重要的是,当试图对现实世界的现象进行建模时,每个建模问题都有内在的噪声/随机性混入信号中,这使得人们很难理解预测模型真正能够达到的准确度。再加上客户对模型准确性的期望,突然之间,您的数据科学团队陷入了一个棘手的境地,甚至想不出从哪里开始解决问题。
1)理解要解决的问题
首先要确保团队对他们试图用模型解决的客户问题有很好的理解。令人惊讶的是,数据科学团队对成功定义的理解经常与客户的标准不同。我们最*与一家公司合作,该公司试图预测恶劣天气对公共事业运营的影响。技术团队正绞尽脑汁试图提高他们模型的 MAPE 分数。当我们深入研究时,发现 MAPE 根本不是正确的衡量标准,他们努力追求的目标是他们自己设定的(相对于倾听客户的声音)。客户实际上最关心的是我们将风暴按照他们为其操作程序定义的 1-5 级影响严重性范围进行分类的能力。
确保数据科学团队对问题有透彻的了解,最好是从客户那里听到第一手信息,这对于新计划的成功至关重要。如果您的团队陷入上述模型“不起作用”的情况,第一步是返回并确保您已经正确定义了问题,并了解您的客户如何衡量成功。
2)数据是否正确、完整?
下一步是回去查看您的团队收集的输入数据。在处理复杂的现实世界模型时,模型性能不足的主要原因通常是由于输入数据集和要素的问题,而不是模型本身的问题。特别是如果您正在运行多种类型的模型(我们建议您尽可能这样做)并获得相似的结果,这通常表明您的输入数据集正在阻碍您的发展。
这一步的关键部分是确保你尽可能多地收集相关数据。现实世界中的模式往往有一些并不总是直观或明显的促成因素,因此您可以收集的数据和特征越多越好。有许多技术可供您选择来缩减特征数据,以在最相关的特征上构建模型,我们将在下一步中对此进行讨论。但对于这一步,重点是重新审视你的假设,即哪些输入驱动你试图建模的输出,并在需要时回头获取额外的数据。例如,在尝试对现实世界的现象进行建模时,通常需要考虑一些不明显的因素,因为它们会影响趋势,尤其是异常情况,如季节性、天气、日历事件,甚至地缘政治事件。
其次,应该进行一些简单的 QA 检查,以确保输入数据得到正确的映射和处理。我们最*与一位在模型性能方面遇到困难的客户合作,最终发现问题根本不在模型上-该客户错误地处理了一些地理定位的要素数据,这使得他们运行的模型无法识别正确的模式。
CRISP-DM Process. Source: https://en.wikipedia.org/wiki/Cross-industry_standard_process_for_data_mining#/media/File:CRISP-DM_Process_Diagram.png
CRISP-DM 流程是许多数据科学团队管理项目时最常用的框架之一。我们喜欢它,因为它专注于在开始建模之前确保对业务和数据的理解。CRISP-DM 流程中的两个关键步骤是“数据理解”和“数据准备”。正确地遵循这些步骤需要深入研究输入数据以真正理解它,通常借助于数据中分布、趋势和关系的可视化。“数据准备”通常包括预处理、数据扩充和/或标准化,以便为建模做准备。如果处理得当,这两个步骤可以帮助数据科学家确保输入数据中的错误不会导致他/她后来遇到的任何模型性能问题。
3)模型调整以调节性能
既然已经验证了输入数据的正确性和完整性,那么是时候关注有趣的东西了,建模本身。此步骤中影响最大的部分之一是要素选择-向下选择对输出影响最大的关键要素,并根据这些要素训练您的模型,消除冗余或高度相关的要素以加快速度并提高模型精度。有几篇关于特征选择技术的博文,包括单变量选择、递归特征消除和随机森林特征重要性。这里有一个供参考:https://machinelingmastery . com/feature-selection-machine-learning-python/。无论您采用哪种技术,或者它们的组合,请确保在这一步花费时间,以便为您的模型获得最佳的功能组合。
这一步的另一个重要部分是重新考虑您选择的模型,或者考虑添加额外的模型类型或者集合多个模型。同样,也有许多比较不同模型优缺点的好文章,但是我们建议尽可能运行至少两种模型类型(最好是神经网络)来比较结果。
最后,一旦您有了您的功能和您的模型选择,重新运行您的超参数调整,确保您已经正确地定义了您的训练、验证和测试集,在调整您的模型时,您没有“作弊”,以便它可以很好地推广到新数据,而不是在训练集上调整得太紧,以至于在新数据的实践中过度拟合和表现不佳。
4)最后,也是最重要的一点,管理客户的期望
这是许多数据科学家忽略的另一个关键步骤,他们认为这“不是他们的工作”。当推出一款全新的机器学习产品时,该模型在野外的表现存在相当大的不确定性。此外,如上所述,现实世界中围绕您正在解决的问题出现的大量噪声可能会限制您的模型的性能,尽管您尽了最大努力来最大限度地提高准确性。数据科学团队的部分职责是与产品经理、销售人员和 customer success 携手合作,向客户传达他们期望从模型中看到的性能信息,同时教育他们模型将如何随着时间的推移而改进,并提供更多数据进行培训。
因此,下次您的团队在发布新模型时遇到性能挑战时,不要玩责备游戏或直接调整模型超参数来优化拟合,而是后退一步,按照这个简单、结构化的过程一步一步地解决问题,并最大化新模型的成功概率。
当您的分类数据不*衡时该怎么办
原文:https://towardsdatascience.com/what-to-do-when-your-classification-dataset-is-imbalanced-6af031b12a36?source=collection_archive---------8-----------------------
在这篇文章中,我们将看看不同的方法和工具,可以用来解决机器学习中出现的一个常见问题,即倾斜数据集的问题。
建立一个好的机器学习模型的关键是它被训练的数据。因此,训练数据必须是干净和*衡的。在完善训练数据上花费的时间越多,在模型上花费的精力就越少。因此,让我们看看如何着手获得一个*衡的数据集。在本文中,我们将讨论,
- 不*衡的数据集意味着什么?
- 为什么数据集不*衡很重要?
- 处理不*衡数据集的不同方法。
- 处理不*衡数据集的不同工具。
不*衡的数据集意味着什么?
让我们看看当试图解决一个分类问题时,偏斜意味着什么。当数据集中的大多数数据项表示属于一个类的项目时,我们说数据集是偏斜的或不*衡的。为了更好地理解,让我们考虑一个二元分类问题,癌症检测。假设我们的数据集中有 5000 个实例,但只有 500 个阳性实例,即实际存在癌症的实例。然后我们有一个不*衡的数据集。这种情况在现实生活中的数据集上更常见,因为在所有发生的检查中发现癌症或在所有每天发生的交易中发现欺诈交易的几率相对较低。
In this cancer dataset, there are only 57 positive instances whereas there are 212 negative instances, making it a perfect example of class imbalance.
为什么数据集有偏差很重要?
当您的数据集没有*等地表示所有数据类时,模型可能会过度适应在您的数据集中表示更多的类,从而忽略了少数类的存在。它甚至可能给你一个很好的准确性,但在现实生活中却悲惨地失败了。在我们的示例中,一个每次都持续预测没有癌症的模型也将具有良好的准确性,因为癌症本身的发生在输入中是罕见的。但是,当一个实际的癌症病例被分类时,它就会失败,达不到它最初的目的。
处理不*衡数据集的不同方法
一种广泛采用的处理高度不*衡数据集的技术称为重采样。重采样是在数据被分成训练集、测试集和验证集之后进行的。仅在训练集上进行重采样,否则性能度量可能会出现偏差。重采样有两种类型:过采样和欠采样。
欠采样包括从多数类中移除样本,过采样包括从少数类中添加更多样本。过采样的最简单实现是从少数类中复制随机记录,这可能会导致过拟合。在欠采样中,最简单的技术是从多数类中移除随机记录,这会导致信息丢失。
Under- and Over-Sampling
另一种类似于上采样的技术是创建合成样本。将合成样本添加到训练数据中也仅在训练测试拆分之后完成。
处理不*衡数据集的不同工具
Scikit Learn 的 sklearn.utils.resample 包允许您对数据进行重采样。它将数组作为输入,并以一致的方式对它们进行重新采样。
首先,让我们尝试对这个数据集进行过采样。
X = df.drop(‘diagnosis’,axis=1)
y = df[‘diagnosis’]from sklearn.model_selection import train_test_split
from sklearn.utils import resample#split data into test and training sets
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.33, random_state=42)#combine them back for resampling
train_data = pd.concat([X_train, y_train], axis=1)# separate minority and majority classes
negative = train_data[train_data.diagnosis==0]
positive = train_data[train_data.diagnosis==1]# upsample minority
pos_upsampled = resample(positive,
replace=True, # sample with replacement
n_samples=len(negative), # match number in majority class
random_state=27) # reproducible results# combine majority and upsampled minority
upsampled = pd.concat([negative, pos_upsampled])# check new class counts
upsampled.diagnosis.value_counts()1 139
0 139
Name: diagnosis, dtype: int64
现在,在我们的训练数据中,这两个类的实例数量相同。
接下来让我们看看欠采样。
# downsample majority
neg_downsampled = resample(negative,
replace=True, # sample with replacement
n_samples=len(positive), # match number in minority class
random_state=27) # reproducible results# combine minority and downsampled majority
downsampled = pd.concat([positive, neg_downsampled])# check new class counts
downsampled.diagnosis.value_counts()1 41
0 41
Name: diagnosis, dtype: int64
两个类都有 41 个实例。
imblearn 库有一个名为 imblearn.over_sampling 的类。使用 SMOTE 执行过采样的 SMOTE。这是 SMOTE 或合成少数过采样技术的实现。让我们看看下面的实现。
from imblearn.over_sampling import SMOTE# Separate input features and target
X = df.drop(‘diagnosis’,axis=1)
y = df[‘diagnosis’]# setting up testing and training sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=27)sm = SMOTE(random_state=27, ratio=1.0)
X_train, y_train = sm.fit_sample(X_train, y_train)X_train.shape, y_train.shape((314, 5), (314,)) #We now have 314 data items in our training set
y_train = pd.DataFrame(y_train, columns = ['diagnosis'])
y_train.diagnosis.value_counts()
1 157
0 157
Name: diagnosis, dtype: int64
SMOTE 为这两个类创建了足够的合成数据,每个类有 157 个数据项。
我们刚刚讨论了最流行的重采样方法。Imblearn 在 imblearn.under_sampling 和 imblearn.over_sampling 类下定义了许多其他欠采样和过采样方法,以及在 imblearn.combine 类下组合这两种方法的方法。
你可以在 https://unbalanced-learn . readthedocs . io/en/stable/API . html # module-imb learn . over _ sampling 上了解更多信息
从因果推理商业项目中期待什么:管理人员指南 I
原文:https://towardsdatascience.com/what-to-expect-from-a-causal-inference-business-project-an-executives-guide-i-7c5a35c03147?source=collection_archive---------18-----------------------
偶然的因果推断
第一部分:什么时候需要随意推断?
这是因果推理和数据科学系列文章的第五篇。前一个是《解决辛普森悖论》。你会在这里找到这篇文章的第二部分。
因果推理是一种新的语言,用于模拟因果关系,以帮助理解更好的原因和影响,以便我们可以做出更好的决定。在这里,我们将解释它如何帮助一个公司或组织从他们的数据中获得洞察力。这篇文章是为那些在数据驱动的公司工作的人写的,不一定是技术人员,他们想了解因果推理项目中哪些是关键点。
注意:有两个因果推理的框架,潜在的结果和 DAG(有向无环图)方法。虽然两者在数学上是等价的,但我们将把重点放在基于图(Dag)的方法上。
我什么时候需要因果推理?
假设你的公司开发了一个新网站。它已经部署,你想知道它是否有积极的影响。为此,您需要测量用户数量,并比较新旧网页,得到以下图表:
Number of web users
现在你问,新网页成功吗?显然,你有很好的结果,但如果你仔细想想,你会发现它不是那么清楚。有一些可能的解释:这个月传统上有更多的活动,你的竞争对手做了一些错误的事情,你周围的一些条件发生了变化,…事实上,有无数种可能的原因。
我们如何解决这个问题?运行 A/B 测试。在部署你的网站之前,你将你的用户随机分成两组,并分配给他们两个版本中的一个。有些人会进入新的,有些人会进入旧的。这里的要点是它们都受相同的上下文影响,确保它们之间的比较是可比较的。
然而,A/B 测试并不总是可行的。有些情况下,它太贵了,不道德(想象一下你想看看吸烟是否会导致儿童患癌症)或者不可行(你的竞争对手推出了一种新产品——你不能要求他们为你进行 A/B 测试来衡量它对你的产品的影响!).尽管如此,你可能有一些你认为可能在某些方面对你有帮助的历史数据。嗯… 那么你需要的是因果推断! 你可能会认为这是大多数情况?!答案是肯定的,是大多数情况。
我有数据,解释起来很简单,我看不出有什么问题!
通过实验(有 A/B 测试)获得的数据和观察数据(没有 A/B 测试)之间存在巨大差异。看看下面这个来自的例子,每个群体都会比*均水*差吗?是的,在分析 2000 年至 2013 年的工资变化时,你会得到这个结果
2000-2013 年实际周工资的中位数变化
合计:+0.9%
高中辍学:-7.9%
高中毕业生,无大专:-4.7%
部分大专:-7.6%
本科以上:-1.2%
全球工资增长 (+0.9%) ,而每个分组的工资都在下降。什么?!想象一下,你必须在这种情况下做出决定:事情是变好了还是变坏了?这不是一个微不足道的答案。看似计算错误,其实不然。当总和及其子群方向相反时,我们称之为辛普森悖论。如果你想要一个更详细的例子,看看“解决辛普森悖论”中的肾结石案例。同样的原始数据同时支持两个完全相反的结论!
辛普森悖论只发生在观测数据中,这只是你在分析观测数据时可能会发现的一个特殊问题。虽然这看起来很罕见,但发生的频率比你想象的要高。总的来说,你必须意识到你可能在分析中引入的许多不同的偏见:它们种类繁多!
结论是,处理观察数据可能非常棘手,很容易导致错误的结论。
让我们看一个例子
想象一下你在一家名为 CausalNews 的报社工作。为了获得更广泛的受众,您使用两个不同的社交媒体*台来发布新闻,Media4You 和 MediaForU。既然你在他们身上花了很多钱,你想知道哪一个对你的公司更有效率。
您的数据可能如下所示
Example data set
现在 MediaForU 给你的是每条新闻(10+5+1)/3 = 5.3k 的访客,而 Media4You 给你的只是 3k。原来如此,MediaForU 更好!
嗯……正如你可能想象的那样,事情没那么简单。你有两种不同类型的新闻:文化和体育。
Introducing news topics
通常体育比文化拥有更多的读者。Media4You 只获得了文化新闻,这是一个不太受欢迎的话题,所以没有在相同的情况下进行比较。事实上,Media4You 在文化板块工作得更好。我们可以用下图来描述这种情况。
Advertising example
出于许多不同的原因,你以不均衡的方式尝试了两个*台(发行策略)。于是,新闻属于哪个话题,就影响了使用哪个*台。同时,主题本身有不同类型的读者,两个*台可能有不同的表现水*。
在我们的直接计算中(5.3k 对 3k),我们混合了两种效果:主题的效果和*台的效果。如果我们想衡量*台的有效性,这个话题就像一个混杂因素,因为这个话题同时影响着两者。我们不确定看到的是*台的有效性还是话题的有效性。
这时,我们自然会想估计:
- *台有效性:如果两个*台获得相同的话题分布,哪一个会创造更多的访问量?
- 主题效果:不管我们的营销政策如何,读者对每个主题的内在兴趣是什么?
这加起来估计了图中用相对箭头表示的因果关系。在接下来的文章中,我们将更详细地描述因果推理如何成为一种逐步估计这些影响的方法,明确我们在分析中采取的假设和风险。
这里可以继续看。
致谢:
我要感谢 Nicole Thompson 在一起工作时给我的所有建议,告诉我如何更容易地交流困难的想法。谢谢妮可。
参考资料:
- 朱迪亚·珀尔和达纳·麦肯齐的《为什么之书》
- Miguel Hernán 课程"因果图:在得出结论之前先得出假设
- Michael D. Ryall,Aaron L. Bramson " 推理和干预:商业分析的因果模型
从因果推理商业项目中期待什么:管理人员指南 2
原文:https://towardsdatascience.com/what-to-expect-from-a-causal-inference-business-project-an-executives-guide-ii-10e521115cb0?source=collection_archive---------26-----------------------
偶然的因果推断
第二部分:你需要知道哪些项目要点
这是文章的第二部分“从一个因果推理商业项目中期待什么:一个管理者的指南”。你会在这里找到第三部。
因果建模
偶然推理模型变量如何相互影响。基于这些信息,我使用一些计算工具来回答这样的问题:如果我没有做这件事,而是做了那件事,会发生什么?我能估计一个变量对另一个变量的影响吗?
因果推断提供了一种粗略的方法来获得因果效应的初步估计。如果你想得到更明确的结论,你应该尽可能用 A/B 测试进行更精确和清晰的测量。这些不会受到混淆的影响,除了统计计算之外,你不需要任何建模。
对于与变量的建模关系,你使用一个图(参见"使用因果图!》。这将是你分析的基础。这样的图表将基于你的人类领域知识。您正在对创建数据的过程以及变量之间的相互影响进行建模。在《推理和干预:业务分析的因果模型》一书中,你可以找到如何用许多业务示例来详细构建这个图。
添加更多变量
上一篇文章中的广告例子是一个非常简单的例子。我们应该期待有更多的相关变量。例如,在大多数情况下,我们将包括季节性。文化和体育新闻通常有不同的活动月份。很有可能你在不同的时间使用了不同的*台。
重要的是,你要把你认为可能与你的分析相关的所有 变量都包括进去,并论证为什么会这样。这是一个需要一些时间的练习。以下是您可能需要考虑的变量类型列表:
- 影响你的因果变量
- 影响你的效应变量
- 上下文的
- 那些你可以干预或影响的
- 那些你没有数据但很重要、未被观察到、缺失或类似的。
主要险别
如果我们知道这个主题是相关的,但出于某种原因,我们没有这些信息,会发生什么?在这种情况下,主题是一个未观察到的变量,如下图所示。
Unobserved topic
因果推断告诉我们,在这种情况下,不可能给出媒体*台有效性的精确估计。事实上,混杂因素的影响越小,我们的估计就越准确。所以我们不应该就此止步。我们应该寻找与主题密切相关的、足以进行分析的其他变量。事实上,我们正在接*现实,就像物理学家会做的那样。建模过程越好,我们得到的结果就越真实。
因果推断的主要风险是在我们的分析中遗漏了相关的混杂因素。
因果估计
最后一部分是考虑图中表示的所有信息,以计算我们感兴趣的每个箭头的因果估计。我们不打算解释这一部分,因为我们需要进入技术考虑。如果你有兴趣了解更多,你可以从“为什么我们需要数据科学中的因果关系”开始阅读这个博客以前的帖子。
你能从因果推理分析中得到什么?
从这个例子中,我们可以知道因果推理的重点是什么。
- 评估混淆。
- 分离和估计因果关系,将因果关系归因于每个原因。
- 决定我们是否能用我们的数据给出一个答案,我们需要在我们的分析中包括更多的变量,或者说我们不能给出一个合适的估计。
- 使用图表作为沟通工具来明确你的目标、风险和假设。
- 因果效应的定量估计。
还有一个附带的好处。创建描述您的业务流程的图表的练习使您提出了许多关于您的业务的有趣问题,并澄清了一些您以前不知道的概念。
不使用因果推断有什么风险?因果推理降低了你的分析完全错误的可能性。错了多少?正如我们在辛普森悖论中看到的,你可以很容易地从现实中得出完全相反的结论。
因果推断能保证我的分析是对的吗?不,正如我们所看到的,你仍然可能遗漏混杂因素,或者错误地建立因果关系模型,从而得出错误的结论!如果你能进行 A/B 测试,你应该从中得出明确的结论。如果您想要执行许多测试,您仍然可以使用因果推断来对您的测试进行优先级排序!然而,如果你不能进行这样的测试,因果推断是目前估计因果影响的最佳工具。
你可以继续第三部这里。
从因果推理商业项目中期待什么:管理人员指南 III
原文:https://towardsdatascience.com/what-to-expect-from-a-causal-inference-business-project-an-executives-guide-iii-53ba7d34a6cc?source=collection_archive---------20-----------------------
偶然的因果推断
第三部分:因果推理在当前的人工智能、大数据、数据科学、统计学和机器学习场景中处于什么位置?
这是这篇文章的第三部分“从一个因果推理商业项目中期待什么:一个执行者的指南”。你会在这里找到第二个。
这些词大多含义模糊,至少在通俗层面是这样。让我先定义一下他们在这篇文章中的意思。
大数据:所有致力于为查询、预处理数据或用大型数据集训练模型提供访问和计算的计算基础设施(它们不适合你的笔记本电脑)。
大数据技术的一个主要观点是,数据越多越好。先验地,那是一个公*的假设。然而,在某些情况下,它会错误地导致这样的想法
- 如果你有一个非常大的数据集,数据自己说话,你甚至不需要建模。
- 细节或粒度越多越好。例如,如果您想知道人们去过哪里,并且您每秒或毫秒跟踪他们的位置,而实际上只有每小时的数据是相关的(当然取决于应用程序)
机器学习:这是致力于预测系统的专业技术领域。它是统计、计算和优化的结合。你在媒体上看到的大多数应用都是在监督学习领域。在监督学习中,您有一个包含许多观察值的历史数据库,其中每个观察值都有一个上下文描述和一个您想要预测的响应变量。例如,如果您想要自动读取汽车牌照的号码,您将拥有一个包含汽车牌照图像(上下文描述)和每个汽车牌照的实际号码(响应变量)的数据库。这个数据集通常是由人来标记的(你需要一个人来阅读每幅图像并标注它的编号)。目标是建立一个算法或系统,对于每一个新的汽车牌照图像(不在您的历史数据库中),它能够自动告诉您哪个是其中的号码。监督学习的本质是通过尝试复制过去来学习。
source: smbc-comics
目前,人们对强化学习越来越感兴趣。强化学习关注的不是重现过去,而是学习如何最佳地采取行动。广泛应用于训练机器打游戏。一个非常流行的案例是 DeepMind 用强化学习训练一台机器,以便在围棋比赛中获胜。甚至还有一部关于此事的纪录片!
当前的强化学习依赖于机器学习技术。此外,它主要用于你有一个你想学做的任务的模拟器的任务中。比如在学习玩游戏中,你有一台可以模拟游戏的电脑。
AI: 这可能是其中最模糊的一个词了。我们将把人工智能视为机器学习、机器人技术和试图复制人类行为的类似技术的结合。你可以看到很多公司都在谈论 AI。事实上,他们正在将机器学习应用于与图像、声音或文本相关的任务。
数据科学:这是一项专注于应用的活动,主要是在商业领域,与预测分析和从数据中获取洞察力相关。核心知识是统计学和机器学习的结合,有大量的编程(和大数据的密切关系)。
机器学习和传统统计学有什么区别?
机器学习和统计学在目的和用途上是不同的。让我通过一个例子来说明。再次想象你在《因果新闻》报社工作。您拥有按月付费的用户,并希望提高您的保留率。每个客户选择一个内容类型(主题)和一个价格。你也从她那里知道,她的年龄和最*的活动(多久在她手机上看一次你的新闻,她是否联系你抱怨访问你的网站的问题,…)。您有兴趣了解每个客户在下一阶段停留的概率。
机器学习从业者和统计学家都将建立一个模型(公式、算法等),将客户信息和停留概率联系起来
停留概率= f (年龄、活动、内容类型、价格)
虽然机器学习和统计有不同类型的验证他们的模型,甚至有可能两者都建立了相同的模型!机器学习从业者和统计学家打算如何使用模型?
机器学习从业者:把你所有的客户都给我。我会评估下一期入住的概率。你可以开始联系那些更有可能停止订阅的人。
统计学家:年轻人有更多的活动,但愿意付更少的钱。也许你想改变一下你的内容来迎合老年人。更重要的是,价格对你的保留率没有太大影响,所以看起来你可以稍微提高它。
从这个例子中你可以看到机器学习通常更具操作性,而统计更具战略性。机器学习的重点是致力于下一个时期(短期)。统计致力于了解影响客户保留率的主要因素,以便您可以制定中长期政策来改善这些因素。
机器学习更具操作性,而因果推理更具战略性
因果关系在这个游戏中有什么作用?
在这个例子中,因果关系和统计学有着同样的意义。帮助你了解影响你业务的关键因素是什么。这就是我们所说的从数据中获得洞察力。
几十年来,统计一直在成功地做这项工作。但是,它也有一些局限性。因果关系没有明确的形式:因果关系具有内在的方向性,这在相关性中没有反映出来,没有干预的定义,……统计学的主要关注之一是解决不确定性(一个非常困难的问题)。因果关系使用来自统计学的知识,并更进一步完全专注于因果关系。
机器学习与因果文化
这两个学科都有一些不同的关键点。而在机器学习中,就像在大数据中一样,数据越多越好。在因果关系上,这远远不够。有更多的数据只是有助于得到更精确的估计,对有正确的(无偏的)估计没有帮助!你可以有无限的数据,但却遗漏了产生完全错误结果的主要混杂因素。
要么是因果推理,要么是机器学习依赖于模型,所以都认为数据很难自己说话。然而,在机器学习中通常你不需要任何领域知识,而在因果推理中领域知识是必不可少的。人际交往是必须的。这可能会使自动化机器学习任务比因果推理任务快得多。
每个模型的模型验证本质上是不同的。大多数机器学习应用程序的 oracle 是交叉验证(在一个看不见的数据子集中评估你的模型,以估计模型的预测准确性)。在因果关系中,交叉验证是不够的。你需要用 A/B 测试来检验你的假设。
除此之外,因果关系开始有助于改善机器学习。例如在推荐系统或强化学习领域。然而,这是一个更加技术性的和完全不同的故事,所以我们不会在这里谈论它。
为什么是现在?
这个问题很难回答。朱迪亚·珀尔和他的同事们已经做了很多努力,通过写书让更多的读者更容易理解因果推理。与此同时,使用潜在结果框架(以及处理因果推断的替代但等效的方法)的流行病学研究也取得了许多进展。
另一方面,除了深度学习(目前最流行的机器学习技术)令人印象深刻的结果之外,我们还发现了典型的监督学习方法的一些局限性。深度学习的先驱之一 Yoshua Bengio 因其在该领域的工作获得了图灵奖,他在的这次采访中警告说,有必要将因果关系纳入当前的机器学习观点中:“我并不是说我想忘记深度学习……但我们需要能够扩展它来做推理、学习因果关系和探索世界等事情,以便学习和获取信息。”
加里·马库斯最*在《T4 时报》上写了一篇文章,也谈到了类似的必需品。
诚然,从研究到应用的过程需要一些时间。现在机器学习中最流行的技术开始于 80 年代和 90 年代。所有的研究加上计算机的巨大进步使它们今天很受欢迎。从这个意义上说,对因果推理的研究已经进行了几十年,现在看来它正在蓬勃发展。
我们已经根据观察数据做出了大部分决定。让我们用更强的基础来做吧!
继续阅读因果推理
如果你想了解更多,你可以阅读这篇博客的其他帖子和其中的参考资料(https://towards data science . com/why-do-we-need-causality-in-data-science-AEC 710 da 021 e)。优步还有一个非常好的博客,我推荐“使用因果推理改善优步用户体验”以及相关书籍和课程:
- 朱迪亚·珀尔和达纳·麦肯齐的《为什么之书》
- Miguel Hernán 课程"因果图:在得出结论之前先得出假设
- 推理和干预:商业分析的因果模型
强化学习能带来什么?
原文:https://towardsdatascience.com/what-to-expect-from-reinforcement-learning-a22e8c16f40c?source=collection_archive---------8-----------------------
内部 AI
还有什么是超越模仿学习的?
The Lunar Lander
Geoffrey Hinton 曾经举了一个例子“奖杯放不进行李箱,因为它太大/太小了”,这显然取决于我们对“它”指的是什么的先验知识。我们相当确信一个手提箱通常比一个奖杯大,所以要么是“太大的奖杯”,要么是“太小的手提箱”。
也就是说,通过自然地优化每一个句子甚至每一个文档,使其分别达到预期的翻译,不仅会受到缺乏真实世界语境的影响,而且由于语言是一个模糊系统,这种优化还具有相当的随机性。在这种情况下,虽然不可能确定完美的翻译,但是有多个有效的翻译。
尽管如此,对于给定的情况,应该有最佳的翻译,如目标群体的可读性、说服力或信息密度等指标。通过优化这些指标,例如强化学习,而不是简单地模仿监督学习中的人类行为,我们正在遵循一种更端到端的方法,从而大大提高我们系统的能力。
在这个故事中,我们将首先介绍一点背景,并首次尝试利用人工智能来自动化复杂的任务,如自动驾驶汽车、智能分拣机器人等。通过模仿学习。然后,我们将更深入地探讨为什么强化学习可能是一个更有能力的选择,何时值得考虑,以及它在原则上是如何工作的,但也会抽象地勾勒出两个流行的算法。代表我对寻找这种强大技术的实际用例进行总结,确实有助于将 RL 更多地传播到那些算法支持寻找更有益的解决方案的行业中。或者书呆子更喜欢说:
从 _ 未来 _ 导入终极解决方案
模仿学习
DAVE-2 by NVIDIA on End to End Learning for Self-Driving Cars
早在 2016 年,英伟达就实现了地面真相创新:而不是对自动驾驶汽车目标的显式分解(例如,车道标志检测、路径规划等。)在手工制作的内部表示中,他们的系统自动抽象和优化所有必要的处理步骤,包括内部表示。在 NVIDIA 的方法中,汽车的反应给出了其传感器的某些反馈(例如,转向角度、速度、前方图像等。),当然可以通过先进的深度学习技术进行预处理,但不是显式编程,或者他们遵循模仿学习的概念。
想象一下,你现在正在驾驶一辆汽车,你会把你的驾驶决策过程分解成小的标准,每个小的标准自己组合起来,最后在一个大宣言的帮助下进行评估吗?
NVIDIA’s imitation learning pipeline at DAVE-2
永远不要。我们作为人类曾经通过一个未知的学习函数学会了如何驾驶,这个函数是无法提取的。然而,可以记录学习驾驶功能的结果(即转向角、速度等。),以便神经网络可以学习如何从正面图像序列映射到那些期望的动作。这种行为克隆是由 NVIDIA 的 DAVE-2 系统完成的,被称为模仿学习,根据定义,它通过对最终动作本身的端到端训练,而不是最终动作的一小部分,来模仿已经功能化的系统的行为。
尽管如此,模仿学习遭受各种问题,这些问题实际上可以通过变通办法来减轻,以便变得有效,然而,它仍然保持在其可能的能力之下:
- 分布不匹配:模仿学习的初步尝试可能是收集大量人类司机的游戏时间,然后训练系统,并抱最大希望。在神经网络不犯任何错误的约束下,这可以很好地工作。
让我们想象一下,在这种情况下会发生什么,比如汽车偏离了轨道?它会随机运行,因为我们既没有编程任何纠正措施,甚至也没有收集数据。我们自己的先验不仅知道如何处理这些罕见的情况,而且还知道有更糟糕的事故存在,这显然应该避免!所以我们从来没有试图开车撞树,也从来没有能够收集这些数据。
简而言之:收集到的数据分布不仅是所有可能情况的极小子集,而且在我们能够从整个分布中收集的情况下,它将遭受太多的数据!
更一致的方法是收集网络实际需要的数据,以便进行最佳探索(例如,通过关注新状态或通过那些能够最大化所获得信息的状态)。
实际上,一个可以想象的解决方案是在车前放置三个大约 30°旋转的摄像头,就像 NVIDIA 练习的那样,而左边的一个一直向右转向,右边的一个坚持向左转向。有了这个技巧,那些纠正措施就能真正实施,然而,这只是沧海一粟。 - 容易出错的人类行为:直觉上,我们的系统应该比我们自己的驾驶行为更好,例如更节省燃料、时间和损耗。特别是针对某些人类偏好的优化也可能是可取的,比如驾驶舒适性与省时性。总而言之,这并不意味着我们不能彻底驾驶,这更多的是关于相关的微优化。正如李&所概述的那样,即使是像移动手臂这样的自然任务也可能导致每个轨迹上的巨大运动变化。
如果我们能够建立一个系统,不仅能够复制人类的力量,而且能够建立新的力量,特别是在那些计算能力更强的领域,那将会更有希望。 - 没有似曾相识的抗拒:观察同一个事物两次并不意味着也处于同样的情境。
模仿学习只是在没有先前数据的情况下对当前进行优化,即满足马尔可夫性质并且没有任何远见:它生活和行动于当前。前者实际上可以通过使用 LSTM 中的序列数据来缓解,例如,相反,后者无法实现,尽管这可能是合理的:对可想象的未来结果的预计算不仅可以通过记住各种解决方案而不是最受欢迎的解决方案来加强某种创造性,而且还可以缓解存在两个有效解决方案轨迹(例如,向左或向右驾驶一棵树)的问题,但它们的*均值将导致悲剧。
强化学习能够缓解这三个问题吗?
是的,除了在实践中不可能真正实现的马尔可夫性质。
强化学习的理念本质上是直接优化人类也会使用的更高目标,而不仅仅是模仿其成果。使用这种方法,我们不会指定系统我们认为什么是相关的,相反,它会自己找出答案。
强化学习目标
Reinforcement Learning is end-to-end
你还记得模仿学习的三个主要问题吗?
第一个问题实际上可以通过让您的系统有机会自己决定需要采取什么行动来取得进展来解决。与此同时,第二个问题也消失了,因为它不再模仿,而是根据更高的奖励目标进行自我学习(第三个预见问题)。
强调一下:它学习起来就像人类最初学习任务一样,但是是从最开始开始。最初几个小时的训练实际上意味着通过采取随机行动来收集数据,希望我们能做一些伟大的事情(由奖励函数决定),这样我们就能学会加强这种行为,这在未来的迭代中更有可能。
这可以与新生婴儿的试错学习行为相比,他们并不真正了解自己的能力。他处理那种情况的方法是通过爬行和哭泣来探索它的环境,这对他来说是目前最好的选择。
请注意,随着我们变得更好,我们不仅要继续采取那些在过去的迭代中有希望的行动,还要考虑新的不寻常的行动。这被称为开发-探索权衡,在像ε-greedy 这样的算法中,一小部分被分配给随机动作。在这一点上,大多数人会停下来,声称“这样做很好,为什么要改变呢?”。总有更好的解决方案,只是需要时间、成本和努力去探索它…
定义
Reinforcement Learning loop, slightly enhanced from DeepRL Course by Sergey Levine
我不想让你感到困惑,所以我将在这里快速浏览一下最基本的技术术语,并简要阐明强化学习的整个循环过程。
基本上只有两方参与其中:环境(T0)和代理(T2)。环境为代理提供当前状态的适当观察(例如,图像、视频、感觉数据等。)由代理通过策略(例如卷积神经网络)进行处理,输出当前状态下最可能的动作,然后由代理在其环境中执行。环境现在用一个奖励信号来评估该步骤的质量。这可能是一个积极的奖励信号,以加强某些行为,也可能是一个消极的信号,以惩罚错误的决定。当然,整个过程是重复的,直到或者集因达到目标而终止,或者我们达到一个上限。有些算法像政策梯度依赖于这一整集收集的数据,有些算法只需要一批{ 状态、动作、奖励、下一状态 }就能学会。
优化标准是什么?
简单来说就是在给定的一集里最大化所有预期未来回报的总和。
One data batch {s, a, r, s’}. Scenery images from NVIDIA
在这里,这个数据批次是图形可视化。值得注意的是,我们现在需要持续的数据流。因此,像在 Imagenet 中进行的一次性标记数据过程不再有价值。这是因为我们甚至需要在这些区域收集数据,算法甚至不知道在开始时,这样一个区域可能存在。就像一个婴儿,他不知道玩玩具有多有趣,直到他最终找到一个。或者一辆汽车在下雪时不知道它应该意识到打滑的危险,直到它进入这种情况。
这就是为什么环境是算法设计的重要部分,不能像监督学习那样预先计算。
q 学习
q 学习是强化学习中最著名的具体算法之一。它是以 Q 函数命名的,该函数通过在给定状态下采取某种行动来估计所有未来奖励的总和。注意,它不仅仅使得有机会学习任何{ 状态,动作,奖励,下一个 状态}-批次是足够的,而不是包含多个这些批次的整个情节,此外,它还减少了方差:通过 Q 函数计算,算法不仅仅依赖于一个情节的信息。相反,它更喜欢那些在多次类似情况下证明是好的步骤。一集本身总是以某种方式不寻常和有缺陷,但总结起来,他们的基本共同模式是强调。
你如何训练这个 Q 函数呢?
The Bellman equation: Q(s,a) = r + γ*max Q(s’, a’)
输出所有未来奖励的 Q 函数可以用一个巨大的表格来表示,其中状态为行,行为为列,或者用一个神经网络来表示。
抽象地说,训练可以像上面的图片中表达的那样简单:将下一个状态的 Q 值添加到你的数据批次的当前奖励中(假设你总是根据 Q 值采取最佳行动),这是根据定义的当前 Q 值。现在试着最大化这个奖励。
代表他的折扣因子 γ 确保算法更喜欢在两个或更多时间步中实现某个奖励而不是相同的奖励,因此它不会在无限地*线的某个点确定地达到目标,而是尽可能快地达到目标。将贴现因子乘以每一个计算出的 Q 值往往会让未来的回报更少。
一个列表式 Q-Learning 的例子:FrozenLake
FrozenLake: Example code
FrozenLake: Starting at plate 1, an agent has to find its path to plate 16 which is rewarded by one while avoiding the deadly holes.
在 FrozenLake 的例子中,一个代理通过接收一个状态(1 到 16:当前盘子)和发送期望的动作(用 Q 函数计算)与他的环境进行交互,产生一定的奖励。
在这种情况下,删除折扣因子将导致一个表格,其中包含洞的 0.00 或剩余湖的 1.00 :它确实知道如何在不出错的情况下解决任务,但不会尽快解决,因为这对我们人类来说是合乎逻辑的。
此外,在更现实的场景中,即使将图像视为输入状态甚至连续状态,也不能只使用表格。这就是神经网络发挥作用的地方。遗憾的是,在这种情况下,并不能保证它会收敛。然而,在实践中,情况往往如此。
比我们的玩具例子更有用的是名为 Breakout 的游戏:
Q-learning on Breakout: 1st vs. 7000th[~4h] vs. 9000th[~10h] episode
四十年前,史蒂夫·乔布斯和沃兹只用了 42 个 TTL 芯片就在 Atari 设计了 4 个晚上的越狱。他们当时有没有想过,现在可以通过强化学习来学习一种先进的策略,能够自己观察如何玩得最好?一个没有被特别编程到一个游戏中的人工智能,并且显然没有访问内部状态表示的权限?这不仅仅是熟悉可用的动作和保持球的活力,而是关于比赛的策略:避免击中橙色方块(增加速度)和比赛顶部(缩短桨)的处罚似乎效果很好。至少在以后的迭代中…
基于模型的 RL
最后但并非最不重要的一门最高学科——精英中的精英仍然缺失:元学习。卓越的学习算法!哦不,不是那个奶油。目前,我们将坚持基于模型的强化学习与元学习一样有远见,但使用起来更简单。
与其像基于模型的 RL 中的 Q-learning 那样学习奖励函数,不如考虑一种更为端到端的方法:梦想环境可能是什么样的,然后尽可能按照你的梦想行动。
The model-based RL cycle
本质上,你从相同类型的数据开始,但继续学习一个叫做动力学模型的神经网络,想象下一个状态可能是如何给出当前状态以及在该状态下将要执行的动作。有了它,实际上就有可能在算法的头脑中预测未来的多个步骤,而不需要在更深思熟虑的行为之后执行那个动作。
在下一步中,通过使用蒙特卡罗树搜索考虑预定义范围(例如,15 个时间步长)内的每个可达状态及其相应的回报来规划整个生成树被证明是合适的。
我们执行了多少动作?
就第一个!为什么?这是因为在高回报轨迹的路径上执行生成树的第一个动作与现实相比非常准确,而整个路径特别容易出错,因为学习的动态模型不是 100%准确。在这种情况下,误差会在每个时间步中累积,我们的模型也无法预测无法预料的环境变化。
例如,考虑自动驾驶汽车中的导航系统的情况:当然,它可以预测采取什么特定的行动序列来到达驾驶员的目的地,但是,整个驾驶过程还取决于其他汽车和行人、交通灯电路,甚至风等。一旦遇到这种意想不到的行为,它应该能够采取正确的行动,以其最佳的导航。因此,在用从环境接收的真实新状态重新计划之前,只执行一个动作。
当然可以。大概就是基于模型的 RL 的直觉吧。但是为什么它在某种意义上是有远见的呢?
因为它有做梦的能力。例如,假设下图中的视觉预见技术。正如人们可能认为的那样,那些图像是真实的图像,但矛盾的是真实的!它们是从动力学模型预测出来的。
Visual Planning by Ebert et al.
这个系统自己计算出,在玩具旁边移动机器人手臂很可能也会导致玩具的移动行为。并且如预期的那样,随着机器人臂的正在进行的运动,玩具从其原始位置消失,如在下面一行中另外可视化的,具有关于绿色玩具的外观的可能性图。
很公*。但是与 Q-Learning 相比,它有什么实际的用途吗?
当然啦!事实上,通过如下所示的计划过程,它在样本效率(即所需剧集)方面具有巨大优势。
Model-based RL vs. model-free (e.g. Q-learning) performance. More details here.
然而,正是这种规划强度也是它的主要缺点:它非常容易受到动力学模型的过拟合,这通常在实践中通过较浅的神经网络来减轻,其本质上不能像在 Q 学习情况下那样有效地对目标建模。
到目前为止我们讲了些什么?
- 模仿学习是迈向全自动和自学习算法的第一步,因为它模仿人的行为。
- 在强化学习中,一个代理能够通过在它的环境中执行需要的动作,观察输出的状态,并最大化返回的回报,通过试错找到它自己的安全最优解。
- 与手工制作标签和一次性数据集的监督学习相比,在处理 RL 时需要连续的数据流。
- RL 主要有三种算法:策略梯度、 Q-Learning 和基于模型的 RL 。这些算法的不同之处在于它们的计算性能、在给定任务中可实现的性能和样本效率:它们的样本效率和并行化能力以升序提高,而可实现的性能降低。
我很高兴你能坚持到现在,并鼓励你永远不要说
自学算法是未来的事情
因为现在,尤其是在完成了加州大学伯克利分校的 DeepRL 课程后,你可以让它成为今天的话题!这也是为什么我上个月在 meetup.ai Hamburg 做了一个关于完全相同内容的演讲。
走出去,找到不仅仅是明确的回报函数(利润、CTR、每英里事故数、叠罗汉塔稳定性等)的用例。)是可用的,但是也可以提供安全的环境,使得错误不会造成伤害。
自我学习并不意味着它会像 2016 年微软在 Twitter 上的 Tay 机器人那样继续在野外学习。你不仅会遇到巨大的麻烦,你也无法证明你的软件已经可以生产了,因为最终的软件还没有出来。
作为起点,RL 也可以在较小的意义上操作:
在安全的环境中自学,例如,可以获得观察到的和希望看不到的结果(在线商店中的项目订单、通过网站的用户体验、GO中的新策略),然后在真实环境中静态地实现这些结果,导致系统能力的显著增加。
还有其他想法吗?请随意留言。😉
优化什么?损失函数备忘单
原文:https://towardsdatascience.com/what-to-optimize-for-loss-function-cheat-sheet-5fc8b1339939?source=collection_archive---------17-----------------------
寻找合适的优化目标的一些技巧,以及如何为您的用例找到合适的目标
在他的一本书里,艾萨克·阿西莫夫设想了一个未来,计算机变得如此智能和强大,以至于它们能够回答任何问题。阿西莫夫认为,在未来,科学家不会变得多余。相反,留给他们的是一项艰巨的任务:弄清楚如何向计算机提出正确的问题:那些能产生深刻、有用答案的问题。
我们还没有到那一步,但从某种意义上说,我们已经到了。
在过去,机器学习的很多努力都花在了其机制的实现上。随着 Tensorflow、Pytorch 等流行的机器学习框架的出现,我们可以愉快地摆脱这一负担。通过调整模型的权重来实现某个目标的机制被抽象掉了。定义一个定制的优化目标就像写下来一样简单,你最喜欢的深度学习框架会相应地减少错误(或损失)。但是这种自由带来了一个非常重要的问题:
你应该为什么目标进行优化?
两种类型的损失(哪个更重要)
我们经常发现自己在衡量两种类型的损失:
- 培训损失,对此我们积极优化模型。在每次迭代中,我们的模型对所有自由度的训练损失进行求导,并试图直接降低训练损失。
- 验证损失,我们通过它来衡量模型的性能。在这里,我们对模型没有训练的一些维持集进行了一系列预测,并对我们对结果的满意程度进行评分——不涉及导数或优化。
当我们尝试不同的模型架构、数据扩充或对我们的模型进行任何其他更改时— 验证损失最终决定我们是否对更改感到满意或重新开始。
Most of us have been subject to “validation loss” for a good chunk of our life. But I would argue the education system is very susceptible to reward hacking
如果幸运的话,1 和 2 可能是一样的。很多时候,他们不是。以二进制分类为例:测量验证集的准确性非常容易:您预测所有项目的概率,设定所有通过 50%概率(例如)的预测的阈值,并测量您正确的频率。这是一个很大的、定义明确的验证损失,但它不满足我们在培训中的要求,即损失应该是可导的。换句话说,如果你稍微改变模型的权重,精确度将保持不变,这意味着你不能直接优化精确度,即使这可能是你真正关心的。
那么,在这两个损失中,哪个更重要呢?我认为验证损失是最重要的。验证损失是我们如何决定“模型 A 优于模型 B”的。这是我们的指导方针,它将指导我们做出的每一个建模决策。培训损失是一种工具,是降低验证损失的战术需要。
所以我们最好选择正确的目标,对吗?
分类损失— 3 个常见问题
现在让我们坚持二进制分类,只是为了有一个积极的讨论。你决定尝试向人们推荐中型职位。你只需要向用户展示一个推荐,他们要么接受,要么忽略你,转到下一个网站。
为此,您正在构建一个分类器:
Classifier(person, article)-> click probability
你应该优化什么?
原木损失
分类之王。这是我们通常在分类模型训练中优化的损失。作为一种性能指标,对数损失是对你在预测一个类别的概率时的校准程度的一种度量。在我们的示例中,该指标衡量我们在预测点击可能性方面做得有多好。如果你说某件事发生的几率是 0%,而它确实发生了,那么你在估计概率方面做得很糟糕——对数损失将是无穷大。
直觉:衡量您预测概率的能力
边缘情况:如果模型预测概率为 0.0,标签为 1,则损失趋于无穷大(反之亦然)
理解数字的意义:在具有 50–50 先验和一个无线索分类器的二元预测中,您应该看到loss = ln(0.5) = 0.693
。有了 N 个类和*坦的先验,你应该看到loss=ln(1/N)=-ln(N).
对数损失并不难得到一个直觉。二元分类的一个有用技巧是取e^(loss)
。你得到的数字大约是你预测正确类别的概率。
定义: **loss=-sum(log(p_i) * y_i)**
其中p_i
是你对某类i
的预测概率,y_i
是该类的标签。
对于一个推荐引擎来说,这是一个好的衡量标准吗?
不完全是。我们并不关心用户点击我们返回结果的可能性有多大。我们想把最有可能的文章放在顶部。预测点击概率是一个相关的问题,但不是同一个问题。举个例子,也许我们有信号表明某个用户是个点击狂,与其他用户相比,她点击任何东西的可能性要高 10 倍。这些信息对于为该用户返回最佳结果是无用的——将我们对所有推荐项目的预测提高 10 倍不会改变它们的顺序,但会降低我们的日志损失,因为它会大大影响我们的点击概率。
什么时候这是一个有用的指标?
当你关心一个事件发生的概率时,而不是当你订购推荐时。举个例子,假设我试图预测 下雨 的可能性,对数损失将是一个非常有用的度量,因为它量化了我们在预测下雨概率方面做得有多好。
准确(性)
这个挺直观的。我们以我们打算使用模型的方式设定结果的阈值(例如,在我们的例子中,我们将在所有候选人中选择得分最高的中等文章,而不是阈值),并询问最高结果是否被点击。对于我们在这种情况下所做的事情,更准确的名称应该是将这个指标称为 top1 点击率,因为这为重新访问我们的产品和推荐前 K 名结果(而不仅仅是 1)奠定了基础。
直觉:这是对“你做出正确猜测的频率”的直接测量。
理解数字的含义:99%的准确率听起来可能是惊人的表现,除非你考虑到“用户不会点击这篇文章”的*面预测已经在 99.9%的时间里是正确的。准确性的基线模型是最常见类的出现频率。在 50-50 的二进制问题中,这个数字是 50%。但是在猜测今天是否会有飓风时,99.99%绝对是你能做的最坏的情况,所以这个数字必须总是与基线相比较。
对于一个推荐引擎来说,这是一个好的衡量标准吗?
是的,这种损失衡量的是确切的用例——顶部的推荐是否被选中。
但是请注意这个指标的弱点。这个度量标准是量化的,这意味着即使模型在工作中变得更好,准确性也可能根本不会改变。假设我们的模型提高了对文章推荐的排名,但是完全正确的几率和从数百万候选文章中猜出用户最终点击的文章的几率非常接*于 0。在这种情况下,即使我们改进了我们的模型并提出了更好的建议,准确性作为一个度量标准也不会发生任何变化。这就引出了下一个损失定义。
罗马纪元
我不明白为什么人们用一种对任何人来说都难以理解的方式来定义 AUC。但是为了完整起见,我们将从干定义开始。AUC 被定义为曲线下面积,它是您在真阳性率对假阳性率曲线上绘制的曲线的积分。这是一个典型的可视化
If you ever want a confuse someone, go for the classic AUC definition.
我相信上面的定义是没用的,因为它没有让你明白 0.9 的 AUC 是什么意思。所以让我们试试另一个定义,它在数学上是等价的,但我觉得更贴切:
在二元分类中,AUC 为 0.9 意味着给定一个阴性样本和一个阳性样本,您的分类器在 90%的情况下会预测阳性样本的得分高于阴性样本的得分。
直觉:衡量你有多优秀排序正类高于负类
理解数字: AUC 是你的分类器对随机正样本高于随机负样本给出更高预测的可能性。0.5 已经够糟了!
定义:此处为
对于一个推荐引擎来说,这是一个好的衡量标准吗?
是啊,但让我们想想这少了什么。我们在一开始就说过,我们只向用户展示最上面的文章。所以真的,这并没有抓住我们的模型在这种情况下被使用的方式。另一方面,与顶级准确性不同,这个度量标准对模型中的微小改进很敏感,并且不会受到与准确性度量标准相同的病理的困扰。
还有更多
对于推荐问题的具体情况,有一个专门为这种情况设计的大量指标列表: NDCG 、 GMAP 、 MRR 等等。但是本文的目的不是深入研究推荐引擎指标的细节,而是讨论最常用的全面有用的指标——并希望在如何解决我们测量的问题上给出一点直觉。
最后,关于衡量进展和结果的个人观察。
作为科学家,我们讨厌改变目标。有一个单一的测试集,有一个单一的度量标准,并且逐渐变得更好,这要干净得多。那很少发生。
现实比这更有趣。期望改变你的测试集,重新定义你的验证标准,排除异常值,并给你的测试集增加新的观察值。期望改变你的目标,直到它们真正反映出你想要完成的目标。
原贴霍斯科技的机器学习博客(那是我的机器学习咨询公司)。
是什么引发了纽约公园的犯罪?
原文:https://towardsdatascience.com/what-triggers-crime-in-nyc-parks-3953c5df2be2?source=collection_archive---------17-----------------------
Photo Credit: Pixabay, licensed by Creative Commons Images
在城市的某个公园遛狗可能是你每天的例行公事,或者你偶尔会去公园呼吸一下新鲜空气。不管你来的目的是什么,安全是最重要的。谈到安全,我想起罗马律师和哲学家马库斯·图留斯·西塞罗的一句名言,内容如下:
"人民的安全应是最高法律."
在这个故事中,以下关于纽约公园犯罪的问题将基于数据分析得到解答。此分析是使用来自两个不同来源的数据集完成的:
- 纽约市公园犯罪统计(NYCPCS)
- 纽约开放数据(NYCOD)
报告从 2014 年第三季度到 2019 年第二季度,共从 NYCPCS 网站下载了 20 个数据集。NYCPCS 网站上的所有数据集都可以在。xlsx 和 pdf 格式。删除不必要的标题和文件转换。xsl 到。csv 发生在上传到 Jupyter 笔记本之前。
另一方面,一个包含公园地理信息(即邮政编码、坐标)的数据集是从。csv 格式。最后,所有数据集合并成一个最终数据集,这增加了分析所需的数据。以下库用于完成该分析:
Numpy,Pandas,Matplotlib,Seaborn,Plotly 和 leav
这个分析是为了让我接触 Python。本分析的目的是回答以下关于纽约公园犯罪的问题。
- 过去几年纽约公园的犯罪率是多少?
- 一年中的季度和总犯罪率有什么关系?
- 哪个区的公园犯罪风险更高?
- 哪些公园不太安全?
- 公园的大小和犯罪率有关系吗?
- 公园的风险是如何在纽约扩散的?
导入库
下面的代码片段显示了各种库的导入。 Pandas 和 numpy 分别是数据分析和数值库。这两个库对于现代数据分析至关重要。此外,本次分析还使用了 matplotlib 、 seaborn、和大部分 plotly 来创建交互式图表,并使用leaf进行地图可视化。
#numpy provides math functions
import numpy as np#pandas provides data manipulation and analysis
import pandas as pd#following libraries for data visualization
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.plotly as py#folium provides map visualization
import folium%matplotlib inline
init_notebook_mode(connected=True)
读取和清除数据
由于不同的表结构(例如,各种标题、不同长度的列名),阅读所有内容是一项挑战。csv 文件转换成熊猫数据帧。在连接成数据帧之前,表被读取并转换成标准格式。
#Read all datasets containing data of different years and quarter
df1 = pd.read_csv('2019Q2.csv')
df2 = pd.read_csv('2019Q1.csv')
df3 = pd.read_csv('2018Q1.csv')
df4 = pd.read_csv('2018Q2.csv')
df5= pd.read_csv('2018Q3.csv')
df6= pd.read_csv('2018Q4.csv')
df7= pd.read_csv('2017Q1.csv')
df8= pd.read_csv('2017Q2.csv')
df9= pd.read_csv('2017Q3.csv')
df10 = pd.read_csv('2017Q4.csv')
df11= pd.read_csv('2016Q1.csv')
df12= pd.read_csv('2016Q2.csv')
df13= pd.read_csv('2016Q3.csv')
df14 = pd.read_csv('2016Q4.csv')
df15 = pd.read_csv('2015Q1.csv')
df16 = pd.read_csv('2015Q2.csv')
df17 = pd.read_csv('2015Q3.csv')
df18 = pd.read_csv('2015Q4.csv')
df19 = pd.read_csv('2014Q3.csv')
df20 = pd.read_csv('2014Q4.csv')#Read dataset containing geographical information of parks
df21 = pd.read_csv('OpenData_ParksProperties.csv')
下面的代码片段用于清理所有数据集并使其成为标准格式。
#Cleansing of messy column headers and bring headers of all tables into standard format
df1.columns = df1.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df2.columns = df2.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df3.columns = df3.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df4.columns = df4.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df5.columns = df5.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df6.columns = df6.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df7.columns = df7.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df8.columns = df8.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df9.columns = df9.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df10.columns = df10.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df11.columns = df11.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df12.columns = df12.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df13.columns = df13.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df14.columns = df14.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df15.columns = df15.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df16.columns = df16.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df17.columns = df17.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df18.columns = df18.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df19.columns = df19.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df20.columns = df20.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
df21.columns = df21.columns.str.strip().str.upper().str.replace(' ', '_').str.replace('(', '').str.replace(')', '')
以下代码片段用于将所有数据集追加到一个数据集中。
#Append all dataframes into one dataframe
df = df1.append([df2, df3, df4, df5, df6, df7, df8, df9, df10, df11, df12, df13, df14, df15, df16, df17, df18, df19,df20], sort = False)#Display df dataframe
df.head()
最后,我处理了下面的数据集。这个数据集还有一个名为 TOTAL、的列,记录了每个公园每年每季度的犯罪总数。
另一个包含纽约公园地理信息的数据集如下。在这个分析中,_ GEOM(公园的几何图形)和 SIGNNAME (公园的名称)列被用来绘制公园的地图。
分析
过去几年纽约公园的犯罪率是多少?
分析从寻找问题的答案开始,“过去几年纽约公园的犯罪率是多少?”。2015 年至 2018 年的完整数据可用。2014 年和 2019 年的数据从数据集中删除,以消除代码修改后的结果偏差,并创建到新的数据框架中,以便按年份进行分析。
为了更好地了解和可视化上面的数据集,生成了以下图表。以下图表的代码如下。
#For Scatter Chart
by_year.iplot(kind='scatter',xTitle='Year',yTitle='No of Crimes',title='Crimes in NYC Parks by Year')#For Bar Chart
by_year.iplot(kind='bar', xTitle='Year',yTitle='No of Crimes',title='Crimes in NYC Parks by Year')#For Stacked Bar Chart
by_year.iplot(kind='bar', barmode = 'stack', bargap = .40, xanchor = 'center', nticks = 8, xTitle='Year',yTitle='No of Crimes',title='Crimes in NYC Parks by Year')
Scatter Chart
Bar Chart
Stacked Bar Chart
从上面的三张图表中,我们可以观察到重大盗窃、抢劫和重罪袭击是纽约公园里最常发生的犯罪。犯罪率从 2015 年到 2017 年有所上升,但在 2018 年略有下降,但这是基于仅四年的数据;很难预测趋势。有趣的是,在这四年中,重大盗窃罪和抢劫罪遵循着类似的起伏模式。
一年中的季度和总犯罪率有什么关系?
这一分析有助于找到前面提到的其他问题的答案。下面的代码片段计算出了该季度的犯罪率之间的关系。
上面的数据集可以更好地理解数据。之前运行的类似代码生成了下图。
Scatter Chart
Bar Chart
Stacked Bar Chart
从图表中可以明显看出,纽约市的公园犯罪率在今年第一季度最低,但在今年第三季度最高。好像很有意思。绘制回归图以查看一年中该季度与总犯罪率之间的统计关系。
回归图描绘了两个变量之间的正关系。然而,皮尔逊相关(0.41)的结果证明这是一种适度的正相关。无论如何,它猜测公园犯罪的选择可能是天气的因变量,因为一年的第三季度是从 7 月到 9 月的几个月,这是纽约的夏天。
哪个区的公园犯罪风险更高?
分析进一步发现了纽约市各区和公园犯罪率之间的关系。顺便说一句,谁不知道,纽约有五个区:曼哈顿、皇后区、布鲁克林、布朗克斯和斯塔滕岛。执行下面的代码片段来查找犯罪率和行政区之间的关系。
之前运行的类似代码从上面的数据集生成图形,以便从数据中获得更好的直觉。
一张图胜过千言万语,上面的图说明了一切。曼哈顿是最危险的区,而斯塔滕岛在公园犯罪方面是最安全的。布鲁克林是曼哈顿最*的邻居。另一方面,皇后区和布朗克斯区正在相互竞争。
哪些公园不太安全?
我们说的是公园,到目前为止,其他一些与公园犯罪相关的变量已经讨论过了。我们现在来列举几个公园,在公园犯罪方面是排在前列的。为了找到这些公园,执行了下面的代码片段。犯罪率最高的十大公园如下所示:
在这里我们可以看到,法拉盛梅多斯科罗纳公园在列表的顶部,其次是兰德尔岛公园,科尼岛海滩和木板路,等等。布鲁克林大桥公园排在第十位。好了,我们视觉上来看看这张公园多的表。
Stacked Bar Chart
上图显示了犯罪率最高的 50 个公园。图表不能很好地容纳所有 50 个名字。如果你有兴趣去看那些公园,请随意访问下面提供的 GitHub 链接。
公园的大小和犯罪率有关系吗?
好奇的头脑想知道公园的大小和与之相关的犯罪率之间的关系?在分析完成之前是未知的,并且结果是不可见的—通过运行以下代码来回答第五个问题而得到的修改后的数据帧。
如果没有统计测试,回答这个问题会很有挑战性。因此,这种关系通过 Pearson 相关性进行了测试,并显示在如下回归图中。
从回归图来看,公园规模与犯罪率之间存在微弱或中度的正相关关系。然而,皮尔逊相关系数(0.34)证实了这是一种中度的正相关。让我们也来看看这种关系。
Scatter Plot
正如皮尔森相关所表明的,从上面的散点图来看,公园的大小和犯罪率之间存在适度的正相关关系。
公园的风险如何在纽约扩散?
绘制了一张热图来回答最后一个问题。热点图显示了纽约市公园犯罪的风险区和安全区(用不同的颜色表示)。创建了一个修改的数据框架,将包含犯罪数据和公园地理数据的两个表结合起来绘制热图。为开发新的 dataframe 而执行的以下代码片段。
执行以下代码片段,使用上述数据框架绘制热图。
上面两张热图分别用红色和绿色显示了从高风险到安全的区域。不难发现纽约最危险公园的位置。读者可以知道他们的生活区有多不安全。请采取必要的措施,在纽约保持安全。
让我们来欣赏
感谢您花时间和耐心阅读本文。随时问我任何问题。如有错别字或错误,请评论。如果你能帮我学习更好的分析方法,我将不胜感激。你可以联系我:
Email: kunduishere@gmail.com
LinkedIn: [https://www.linkedin.com/in/shuvokundu/](https://www.linkedin.com/in/shuvokundu/)
Github: [https://github.com/ShuvoKKundu](https://github.com/ShuvoKKundu)
Medium: [https://medium.com/@kunduishere](https://medium.com/@kunduishere)
完整的代码可以在 https://github.com/ShuvoKKundu/NYC-Park-Crime-Data-Analysis 找到
哪个电视节目有关于 IMDb 的最佳剧集?
原文:https://towardsdatascience.com/what-tv-show-has-the-best-of-the-best-episodes-on-imdb-5ee5338d8e80?source=collection_archive---------9-----------------------
《绝命毒师》还是《权力的游戏》
“下一集开始于…”
你的大脑还没有处理所有疯狂的情节转折、新披露的信息和人物提升的意义。你刚刚在网飞看了一集令人瞠目结舌的你最喜欢的节目,你被告知下一集几秒钟后开始。
在你知道之前,你已经在推特上说为什么这个节目是世界上最好的东西了。接下来,你在谷歌上搜索那一集来阅读关于它的文章。最后,你去 IMDb,给它打 10 分。
《IMDb 日报》对剧集进行了评级,一些剧集的评级非常突出,因为这些剧集让观众不知所措。对 IMDb 收视率最高的 200 集电视剧进行了分析,以找出在这些令人难以置信的剧集中哪个电视剧制作的剧集最好。
IMDb 收视率最高的 200 集
信息是从 IMDb 手动收集的,并填入谷歌表格的六个栏目下:电视节目、剧集、流派、评分、年份和投票。这个数据集后来被转换成 csv 文件,用于数据分析。
A snapshot of the google sheet file containing the top 200 rated episodes on IMDb
数据可视化用于基于 csv 文件创建多个图形,以显示各列之间的关系。
哪一年人们投票最多?
我们制作了一个线形图来显示 IMDb 每年优秀剧集的投票总数。
Total Number of Votes vs Year
原来是 2015 年到 2020 年这个时间段得票数最多。该图还推断了人们开始大量使用 IMDb 评分功能的时间段,即 2013 年。下面是对图表的深入分析,它向我们展示了哪一年的投票数最多。
Total Number of Votes vs Year from 2015 to 2020
A tabular dataset of the top five years with the most votes.
发现 2016 年录得优秀剧集约 456505 票。据透露,《权力的游戏》制作了两集,促成了这个巨大的数字。《混蛋之战》获得了 181164 张选票,《冬天的风》获得了 125599 张选票。《权力的游戏》第六季一定制作了令人生畏的剧集。
Top five episodes with the most votes.
戏剧是评分最高的类型
数据集中有很多类型,比如冒险、动作、犯罪等。大多数电视节目最多有三种类型。
A horizontal bar chart showing the frequencies of each genre
戏剧是出现频率最高的类型。它在数据集中出现了 143 次。与戏剧相关的电视节目的评级概率为 0.283,高于任何其他类型的概率。
收视率最高的一集
进行的另一项分析是为了找出哪一集在《IMDb》中收视率最高。
Top five episodes based on rating
事实证明,《袭神记》第三季第 17 集 Hero 以 10/10 的评分成为无可争议的冠军。作为一个攻击泰坦的粉丝,我是高度知足的。
最常见的电视节目
一些电视节目在榜单上出现了多次,而另一些则出现了一两次。电视节目被认为是产生最佳剧集中的最佳剧集的标准之一是在数据集中有多个剧集。因此,数据集被缩短为主要包括出现次数超过三次的电视节目。
A horizontal bar chart showing the most frequent TV shows
《对泰坦的攻击》以 16 次出现在数据集上的次数再次获得冠军。《权力的游戏》以 14 次出场位居第二。第三个是黑色代码,出现了 9 次。《疑犯追踪》和《绝命毒师》分别排在第四和第五位。
新形成的数据集被进一步分析,以找出电视节目每集的*均投票数和电视节目每集的*均收视率。
A horizontal bar chart showing the most frequent TV shows’ average votes per episode
A horizontal bar chart showing the most frequent TV shows’ average rating per episode
在优秀剧集中,《权力的游戏》以每集 65673 票的成绩获得了每集最多的投票。《绝命毒师》*均收视率最高,每集 9.7800。
《权力的游戏》vs《绝命毒师》
根据上一节图形可视化中的数字和排名,可以说赢家将在《权力的游戏》和《绝命毒师》之间。
Top five episodes based on frequency
根据截断的表格,《对泰坦的攻击》在五大剧集中出现频率最高,但*均有 5154 票。这个数字远远落后于《权力的游戏》和《绝命毒师》,这两部电影的*均票数分别为 65673 票和 53357 票。
此外,在*均评分方面,它也落后于《权力的游戏》和《绝命毒师》,得分约为 9.73。《绝命毒师》和《权力的游戏》分别有 9.78 和 9.74。
《对泰坦的攻击》排在第三是准确的,因为它在数据集中有最多的剧集。这使得《权力的游戏》和《绝命毒师》成为 IMDb 最佳剧集中的两部。
当谈到《权力的游戏》和《绝命毒师》时,《权力的游戏》每集的*均票数比《绝命毒师》多,但《绝命毒师》的*均收视率比《权力的游戏》高。
决定性的因素是他们看到《权力的游戏》以压倒性优势获胜的频率。《权力的游戏》在 IMDb 收视率最高的 200 集中有 14 集,《绝命毒师》有 5 集。
总之,《权力的游戏》拥有 IMDb 最好的剧集。
用于进行这项研究的完整版本代码可以在这里 看到。
你是哪种类型的数据科学家?
原文:https://towardsdatascience.com/what-type-of-data-scientist-are-you-84c3c2b9fc16?source=collection_archive---------11-----------------------
当我第一次进入数据科学领域时,我在保险行业工作,那里大多数从事分析工作的人都有统计学或精算背景。
我所做的数据科学工作集中在使用统计和机器学习技术从数据中获得洞察力,例如,这些数据可以用于降低索赔成本或改善保费定价,这是我认识的其他数据科学家所做的典型工作,他们也在该行业工作。
由于这些经历,我开始将数据科学视为统计学的一种高级形式,带有编程成分。
从那以后,我换了工作,现在在一个团队中工作,其他分析角色由计算机科学或编程背景的人担任。我现在所做的工作专注于建立机器学习模型,这些模型可以部署到生产系统中,以自动化和增强手动流程。
如果我只知道第二份工作,那么我会把数据科学视为一门类似于计算机科学和软件开发的学科,以统计学为基础。
尽管数据科学的这两种定义截然不同,但它们都同样有效。
数据科学连续体
数据科学是一个新兴领域,数据科学家的角色尚未完全定义。但是,即使数据科学已经存在了几个世纪,事实仍然是,很少有职业的定义如此狭窄,以至于从事该职业的每个人都执行完全相同的任务。
数据科学可以被视为统计学和计算机科学的结合,因此,可以预期,数据科学的角色将根据这些学科对特定职位的相对重要性而有所不同。我将“数据科学家”头衔下的各种不同工作称为数据科学连续体。
在我上面描述的两个数据科学工作中,两个都是数据科学家工作的有效例子,但是第一个工作更接*数据科学连续体的统计端,而第二个工作更接*计算机科学端。
更复杂的是,不同的数据科学角色也需要不同水*的技术技能。例如,专注于特定领域的高级数据科学角色可能比入门级通才角色需要更高的技能和资格。
此外,自从数据科学家被命名为“21 世纪最性感的工作”以来,已经有很多人将自己的角色重新命名为数据科学家(例如,在 LinkedIn 上),即使他们不是;还有一些组织对他们广告的职位也是如此,要么是出于无知,要么是为了吸引更多的求职者。
例如,在我上一次找工作时,我遇到了几个我会归类为高级数据分析师的职位,它们的广告标题是“数据科学家”。我还遇到了几个明显是数据科学家角色的职位,它们以“数据分析师”的头衔出现
结果是,如果你正在寻找一个数据科学的职位,那么你需要超越职称,看看这个职位实际上涉及到什么,以及你在这个职位上需要达到的水*。
也就是说,如果你看到足够多的数据相关职位的招聘广告,某些模式就会开始出现,这使得识别各种类型的数据职位成为可能,而与职位无关。
七种类型的数据角色
在 2019 年 4 月 22 日至 2019 年 5 月 5 日期间,我从 LinkedIn 收集了 200 个数据相关角色的招聘广告(即,标题为数据科学家(100 个广告)、数据分析师(40 个广告)、商业智能分析师(20 个广告)、机器学习工程师(20 个广告)和数据工程师(20 个广告)的角色),横跨四个英语国家(澳大利亚、加拿大、英国和美国)。
我超越了“数据科学家”这个头衔的工作,考虑到了潜在的命名错误,以及不同雇主对一份工作具体要求的差异。
通过将 k-means 聚类应用于这些广告,使用选择标准作为特征,我能够将招聘广告分组为七个聚类或角色类型。
这些角色的特征如下所述,从最常见到最不常见排列如下:
角色类型#1:报告和 ETL 分析师
(24%的招聘广告被考虑,包括 10%的“数据科学家”职位)
报告和 ETL 分析师专注于提取数据,并从中生成报告和/或仪表板,但通常也负责数据库/数据仓库管理任务,如开发和维护 ETL(提取、转换、加载)管道。
典型职位:数据分析师或商业智能(BI)分析师。
使用的关键技术: SQL 和 Excel。
典型的学位要求:最好是计算机科学学士学位。
角色类型 2:数据科学通才
(23%的招聘广告被考虑,包括 39%的“数据科学家”职位)
数据科学通才专注于应用机器学习和统计技术来开发模型,解决业务问题并提供见解。这些角色通常在中级职位上招聘,对专业技能没有明确要求,如深度学习或自然语言处理。
典型职位名称:数据科学家。
使用的关键技术: Python,R 和 SQL。
典型的学位要求:统计学、数学或计算机科学学位,最好是研究生水*。
角色类型 3:洞察分析师
(15.5%的招聘广告被考虑,包括所有“数据科学家”角色的 10%)
与报告和 ETL 分析师类似,Insights 分析师专注于提取、争论和分析数据,以便提供见解并生成报告和/或仪表板。但是,他们通常不负责数据仓库或数据库的管理。
典型职位:数据分析师或数据科学家。
使用的关键技术: SQL,Python,Tableau,R 和 Excel。
典型的学位要求:数学或统计学学士学位是理想的。
角色类型# 4:ML 研究数据科学家
(13%的招聘广告被考虑,包括 25%的“数据科学家”职位)
ML 研究数据科学家专注于使用机器学习技术来开发和部署模型,重点是研究和开发,而不是软件工程。
典型职位名称:数据科学家。
使用的关键技术: Python,R,Spark。
典型学位要求:统计学、数学或计算机科学学位,最好是研究生水*。
角色类型# 5:ML 软件工程师
(11%的招聘广告被考虑,包括 6%的“数据科学家”职位)
像 ML 研究数据科学家一样,ML 软件工程师使用机器学习技术来开发和部署模型,但在 ML 软件工程师的情况下,重点是工作的软件工程方面。例如,一个 ML 软件工程师可能部署一个由 ML 研究数据科学家开发的模型。
典型职位名称:机器学习工程师。
使用的关键技术: Python 和 Tensorflow。
典型学位要求:计算机科学学位,最好是研究生水*。
角色类型#6:*台和仓库工程师
(9%的招聘广告被考虑,包括 1%的“数据科学家”职位)
*台和仓库工程师专注于构建数据管道,并与数据库、数据仓库和数据*台合作。他们很少参与模型开发或数据洞察的生成。
典型职位名称:数据工程师。
使用的关键技术: Python,云计算,SQL,Spark。
典型的学位要求:最好是计算机科学或工程学士学位。
角色类型#7:数据科学专家
(4.5%的招聘广告被考虑,包括 9%的“数据科学家”职位)
数据科学专家与数据科学通才非常相似,只是数据科学专家的重点是将机器学习和统计技术应用于人工智能/数据科学的专业领域,以开发模型等。这些角色需要自然语言处理、大数据、深度学习或计算机视觉等领域的高级技能。
典型职位名称:数据科学家。
使用的关键技术: Python,SQL,R,Spark,云计算。
典型学位要求:统计学、数学或计算机科学学位,最好是研究生水*。
这七种角色类型为第一次尝试进入数据科学或从当前数据角色中找出下一步该做什么的人提供了很好的指导。
通过将你的资质、技术技能和兴趣与每种角色类型所列的进行比较,你可以很容易地确定你目前的技能和经验最适合哪种角色类型,以及为了转换到不同的角色类型,你需要获得什么技能和资质。
针对特定类型的角色为求职提供了一个更有效的框架。这增加了你成功申请的可能性,也意味着你更有可能得到一份符合你期望的工作。
你想成为哪种类型的数据科学家?
Genevieve Hayes 博士是数据科学家、教育家、人工智能和分析专家,供职于Genevieve Hayes Consulting。你可以在LinkedIn或者Twitter上关注她。她还是 价值驱动数据科学 的主持人,这是一个每月两次的播客,面向寻求最大化其数据和数据团队价值的企业。
想要发掘企业数据的价值,但不知道从哪里开始?**下载免费的数据科学项目发现指南。
贝叶斯神经网络告诉你什么不确定性
原文:https://towardsdatascience.com/what-uncertainties-tell-you-in-bayesian-neural-networks-6fbd5f85648e?source=collection_archive---------8-----------------------
这一次,我们将检验同方差、异方差、认知和随机不确定性实际上告诉了你什么。在我看来,这是贝叶斯深度学习中一个即将到来的研究领域,并且已经受到了亚林·戈尔贡献的极大影响。这里的大多数插图取自他的出版物。但也可以看到该领域的最新贡献之一,我们提出了一种新的、可靠的和简单的方法来计算不确定性。
作为背景,在贝叶斯深度学习中,我们有权重的概率分布。因为大多数时候我们假设这些概率分布是高斯分布,所以我们有一个均值 μ 和一个方差 σ 。*均值 μ 是我们对重量进行采样的最有可能的值。
方差可以被看作是不确定性的一种度量——但是什么样的不确定性呢?我的神经网络不确定在哪里或者我的神经网络不确定什么?
基本上,有两组不确定性,方差 σ 是两者之和。我们称它们为任意和认知不确定性。正如我们在以前的帖子中提到的,我们对预测后验概率分布 p(y|x) 感兴趣。但是,不幸的是,这种预测分布是难以处理的。我们需要做的是用拉普拉斯*似法对其进行*似(具体做法见本帖)并计算出期望值,即均值 μ ,及其方差 σ 。
Mean of predictive posterior probability distribution
Variance of predictive posterior probability distribution is the sum of aleatoric and epistemic uncertainty
现在让我们详细看看这两种不确定性估计。
任意不确定性
你可能已经看到了很多类似下图的图表。我们有一个观察样本,在随后的图中的黑点,我们假设有一些噪声。如果你在高中化学、生物或物理课上做过实验,你就会知道没有一系列测量是完美的。尤其是你在同一点 x 多次测量一个 y 值的时候,很少会得到完全相同的 y 不是吗?这就是我们所说的随机不确定性。噪声数据集 {x,y} 引起的观测值 y 的不确定性。
异方差随机不确定性
举例来说,将x-轴视为从早上 8 点到晚上 10 点的时间刻度,我们测量一周内的心率。我们首先在早上 8 点起床后进行测量,在你骑车 20 分钟到达办公室后的 10 点进行测量,在晚上 6 点离开办公室前进行测量。你早上 8 点的心率在一周内可能相当稳定,约为每分钟 80 次,可能在每分钟 75 到 85 次之间。但是,上午 10 点的测量值可能从 120 到 160 次/分不等,这取决于你骑自行车的速度,你每天早上的体型等等。然后,在你坐了一整天的晚上,你的心率将再次稳定在每分钟 90 次左右,也许在每分钟 85 到 95 次之间。
我刚才描述的是异方差随机不确定性的真实例子。对于每个观察值(x,y),我们都有不同程度的噪声。
让我们更进一步,用数学术语来定义它。我们可以说,我们的深度学习模型的输出 y 是从具有均值 μ、和方差 σ 的高斯分布采样的,其中均值μ、是依赖于权重 w 的神经网络的确定性输出 f(x) ,方差σ也依赖于权重 w 和输入 x 。提醒自己, x 不是整个数据集的输入向量, x 只是一个数据点。我们通常将整个数据集称为 X 。因此,对于每个数据点 x,我们可能会有不同的方差,当我们对 y 进行多次采样时,我们会识别出这些方差,范围很广。
同方差随机不确定性
另一方面,同方差回归假设每个输入点 x 的观测噪声相同。我们必须确定一个所谓的模型精度 τ 并将其乘以单位矩阵 I ,而不是使方差依赖于输入 x ,以使所有输出 y 具有相同的方差,并且它们之间不存在共方差。这个模型精度 τ 就是逆观测标准差。
认知不确定性
除了由我们有些嘈杂的数据引起的不确定性之外,我们还可能有其他不确定性,当我们建立模型时,我们实际上能够最小化这些不确定性。认知的不确定性抓住了我们对最适合解释我们数据的模型的无知。换句话说,如果我们预测分布的方差有很高的认知不确定性,作为建模者,你知道你可以做得更好。
现在让我们在这个层次上理解,并探索如何计算这些估计值。
计算任意和认知不确定性的方法
在我看来,如何计算这两种类型的不确定性是一个即将到来的研究领域。在这里,我想讨论一个由 Kwon 等人(2018) 提出的特别有前途的方法。虽然它使这两个不确定性的估计变得容易得多,但在我看来,它仍有其不足之处。
让我们回顾一下方差的基本代数公式:
方差是任何给定输出 y 和任何给定输入 y 的期望值之间的期望*方差。
这个量可以分解为任意的和认知的不确定性:
这个方程是由总方差定律的一个变种得到的。这是一个很大的进步,这里需要进行大量的数学重构。知道富比尼定理已经很有帮助了,但是完整的证明可以在 Kwon 论文的附录 A 中看到。我建议你浏览一遍,但是如果你不能遵循所有的步骤,不要太麻烦。
让我们慢慢地通过这个等式来理解它实际上代表什么。首先,让我们检查一下包含的所有参数和术语:
- ω是我们的权重 w 的所有可能值的空间,表示为w∈ω。
- diag 是对角矩阵。对角矩阵的对角线上有元素,其他地方都是零。如果这个对角矩阵是权重的方差-协方差矩阵,我们将没有协方差,只有方差。
- E[ y* ]是输入 x的期望输出。仔细考虑其不同的指标:我们可以基于难以处理的预测后验分布 p(y|x,w),或基于之前已经针对参数 θ 优化的变分预测后验分布 q(y|x,w)* 得到 y* 。
- q(w) 是逼*难处理后验分布 p(w|D)的变分后验分布。
任意不确定性
变分后验分布预测方差的第一项
是任意的不确定性。我们首先有期望输出的对角矩阵 y* ,基于棘手的预测后验分布 p(y|x,w)。我们从中减去一个矩阵,该矩阵是基于棘手的预测后验分布 p(y|x,w) 及其转置的期望输出 y* 的乘积。然后,将该整个构造乘以变分后验分布,并在权重空间ω中对权重 w 进行积分。
之前,我们区分了异方差(每个输入不同)和同方差(每个输入相同)随机不确定性。我们在这里使用的术语可以针对每个输入进行计算(以获得异方差不确定性)或作为所有输入的*均值(以获得同方差不确定性)。
正如你可能已经猜到的,由于积分的原因,这一项很难精确估计。现在最有趣的部分来了:我们如何估计它? Kendall & Gal (2017) 提出了一种简化方法,但是 Kwon 等人(2018)讨论了这种方法用于分类的缺陷,并提出了另一种方法:
让我们跟随他们的思维过程来理解他们是如何想出这样一个估计量的。
核心变化是取代
随着
我们可以这样做,因为 Softmax 生成的向量将概率作为元素,因此通过重复此计算 T 次来计算预测分布的可变性。对角矩阵减去另一个矩阵,该矩阵是 Softmax 生成的向量乘以其转置。
此外,我们用一个和而不是一个积分来使它易于处理,并且不用和乘以变分后验分布,我们通过将它除以 T. 来计算*均值
这为我们提供了来自数据集的输出可变性的*均值。因此,它可以被视为从数据集的可变性演变而来的不确定性。
认知不确定性
变分后验分布预测方差的第二项
是认知的不确定性。我们有和任意不确定项完全相同的替换,但是增加了一个。
这里,我们基于具有参数 θ 的变分分布 q(y|x) ,用 T 个样本的 Softmax 生成向量的*均值来替换预期结果 y* 。然后,我们用这个*均值减去 Softmax 生成的向量,并通过用这个减法乘以它的转置来构造一个矩阵。
当然,为了便于处理,我们还是用和来代替积分。
这给了我们来自模型的输出的可变性的*均值,并且与验证准确性成反比。
可视化结果
这些技术实现起来相当简单,特别是对于计算机视觉设置中的二进制分类任务。让我们来看一个生物医学图像的例子,准确地说是人脑的核磁共振成像记录。
我们在这里计算了异方差的任意性和认知不确定性。回想一下,异方差意味着每个输入都有不同的不确定性。在图像分析中,输入是像素。下图对 Kwon 等人(2018 年)的方法和 Kendall & Gal (2017 年)的方法进行了对比。
P is the method by Kwon et al (2018), K is the method by Kendall & Gal (2017)
我们还可以比较一些数据点的同方差随机不确定性和认知不确定性:
The brighter the area, the more data points are accumulated in this area.
我们还可以计算*均同方差随机不确定性和认知不确定性,但这些数字并没有给我们太多的洞察力:
For the data sets SISS and SPES
Softplus 标准化
我和几个同事对这些不确定性的估计也有了新的进展:https://arxiv.org/abs/1806.05978
这里,我们通过用 Softplus 函数替换 Softmax 函数并使其输出正常化,绕过了在输出层实现附加 soft max 函数的瓶颈。我们可以将这种不确定性估计写成:
这样做的可怕后果是,不管模型如何,我们每个数据集都有恒定的随机不确定性,因为随机不确定性完全取决于数据集。尽管如此,这是以前发表的方法无法实现的。
另一个有趣的结果是验证准确性和认知不确定性之间的相关性:
随着验证准确性的提高,认知不确定性降低。这是合乎逻辑的:我们的模型预测的标签越正确,它就越确定。
要了解我们是如何实现的,请查看我们的 GitHub repo 。
结束语
如前所述,对预测方差实际上告诉我们什么的整个探索是一个非常先进的研究领域,并将给我们很多关于我们的深度学习模型如何变得越来越好的见解。让自己了解该领域的最新研究,这些方法可能对你的应用非常有帮助,因为不确定性的测量和不确定性来源的测量在任何方面都与决策有关。
这些不确定性有助于神经空间做出决定。看看它们是如何在其演示中实现的,并看看 NeuralSpace 还在做些什么。
我们能从美国 400 年的处决中学到什么
原文:https://towardsdatascience.com/what-we-can-learn-from-400-years-of-us-executions-a6a8f522dba?source=collection_archive---------30-----------------------
重磅内容警告:我讲的几乎都是令人不安的。
—
乔治·肯德尔站在一群男人面前,他们拿着长长的德国式手枪指着他的胸口。他可能穿着一件白色亚麻长衬衫,塞在他的马裤里,用一条精致的蕾丝领带装饰他的脖子。一听到信号,他的刽子手们就会将灼热的金属丝塞入他们 16 英寸的铁桶,从而释放出他们重型武器内部的火药。肯德尔,一个在新殖民地弗吉尼亚富有且有影响力的人,犯了叛变罪和为西班牙皇室做间谍。他将是第一个在现在的美国使用西方处决方式被处决的人。
尽管各州的大量研究表明执行死刑比“终身不得假释”更昂贵,汉谟拉比式的复仇仍然在这个北美超级大国盛行。我想知道我们是如何走到今天这一步的,我们从哪里开始的,以及今天的死刑是什么样子的。
请注意我的局限性和盲点:我不是死刑专家,也根本没有资格在我出生的国家写这个主题的种族色彩。作为一名数据科学家和训练有素的硕士级经济学家,我有研究经验。我有资格查看数据并得出见解。我使用公开的数据集开始了我的研究(见参考文献)。从这些资料中挖掘见解后,我寻找其他历史和新闻来源来理解我所看到的模式。我学到了一些东西。
处决时尚,死刑时尚
自 1608 年新生的英国殖民政府弗吉尼亚用行刑队枪决乔治·肯德尔以来,该州“执行”死刑的方法并没有太多变化,而是受制于每次持续几十年或几个世纪的时尚潮流。
Data sources: [1] and [2]
伴随着英国的惩罚而来的是方法。其中一些方法实际上是中世纪的。从英国传入的最早的殖民处决方法之一是“绞刑”,或“用锁链绞死”,一个人被穿上某种定制的金属衣服,有时还活着,然后展示给每个人看和闻。英国人认为这太可怕了,所以必须阻止犯罪(没有!).
The Gibbet. You get the idea.
最严重的判决没有得到公*的处理。即使是乔治·肯德尔,第一个被处决的弗吉尼亚州人,也因为他的社会地位(绞刑是为更“卑微”的人准备的)而免于被套索套在他的领带上。众所周知,绞刑令人毛骨悚然——如果处理不当(这种情况经常发生),一个人可能会被吊死几十分钟。那么,在这片他们被视为不如人的土地上,来自非洲的侨民能期望得到什么样的待遇呢?
现在美国所在的地区是除英国以外的欧洲国家的殖民地。法国在今天的路易斯安那州的密西西比河上有一个殖民地。法国人带来了一种叫做“车轮上的断裂”的处决方法,这是一种绝对可怕的死法,我甚至不会描述它。法国路易斯安那州政府这样做了 11 次,相当于当今美国车轮断裂死刑的 92%(纽约在 1712 年处决了一名开车的白人)。
Source [5]
更糟糕的是,从 1730 年到 1748 年,路易斯安那州 100%的可怕的车轮断裂处决都是在被奴役的非洲移民身上进行的,尽管被奴役的人可能只占当时人口的 65%,而且在同一时期同一地区完全没有白人被处决。很明显,处决,更确切地说,打破车轮的方法,是一个残酷的社会“威慑”有关其“财产”的犯罪的特殊方式。
1754 年,在法国和印第安人战争开始时,打破轮子的方法有了短暂而最终的复兴,当时三个不知名的白人被判死刑。他们一定是做了什么坏事才在路易斯安那州使用那种方法。
Data source [2]
不幸的是,这并不是唯一对非裔美国人特别的方法。29 个人,有些在记录中没有名字,有些只有一个名字(比如杰克,1825 年,在 1825 年一个炎热的八月的一天被处决,或者蒙克,他在 1791 年 2 月 9 日被政府处死),被“烧死”,这不需要更多的细节,因为这个词本身就说明了一切。这似乎为现在美国的死刑定下了基调。
这些方法即使以现代的标准来看似乎也有点可怕,而且随着新美国的建立,它们基本上已经过时了。今天我们更熟悉的其他方法有更强的持久力。数百年来,绞刑一直是最受欢迎的方法,直到另一种看起来更“无痛”的方法出现。
据说,索思威克博士在看到一个无家可归的人触摸发电机时,萌生了用电刑执行死刑的想法。索思威克看着那个人倒在地上。这位医生凭借其对第三方疼痛观察的高超能力,认为这是一次“无痛”死亡,因此,美国最新形式的死刑诞生于纽约布法罗的一名闲逛的牙医(是的,索思威克医生是一种牙科医生)。
电椅并不是托马斯·爱迪生吹捧的人道处决奇迹。他在美国巡回演出时,在来看他的人群面前电击流浪动物致死,以此来推广这一理念(是的,他做了这个)。这种惩罚听起来像是来自 1975 年的一部糟糕的恐怖电影——众所周知,不幸被判死刑的罪犯会着火,死时会散发出烧焦的肉味,而且通常比本应迅速杀死他们的“简单的两次摇晃”要多。
The electric chair that Ted Bundy was executed in in the state of Florida.
最后一种也是最常见的死刑方式是注射死刑,1977 年在俄克拉荷马州首次使用。一系列的化学物质被注射到死刑犯体内,直到他们死去,理论上,这应该在五分钟内无痛杀死他们。不幸的是,一些拙劣的处决 花费了长达两个小时,混淆药物顺序导致一些死刑犯感到极度痛苦,但却瘫痪了,因此他们无法表达出哪里出错了(这听起来像是 2018 年的恐怖电影)。更糟糕的是,进行这些注射的人没有经过医学训练,因此更容易犯这样的错误。医生不能执行死刑——以这种方式伤害一个人将违背医生的希波克拉底誓言。
从《美国旁观者》的镜头来看,致命注射看似愚蠢的本质,与它的痛苦和残酷的可怕现实相提并论,可能给了索尼娅·索托马约尔存在主义的停顿。正如她在《T4》阿瑟·v·邓恩的《致命注射》中所写的:
“各州已经设计了注射死刑的方案,目的是保护他们自己的尊严,但是他们不应该被允许在官方和公众面前掩盖死刑的真正恐怖。”
尽管注射死刑似乎是唯一一种死刑,只要死刑还在继续,这种死刑就会持续下去,但是执行死刑所必需的药物却很难得到。这导致弗吉尼亚、阿拉巴马和田纳西等州通过法律,允许因注射致命药物的问题而执行电椅死刑。
然后是屡试不爽的行刑队,这是美国殖民地第一次执行死刑的方法,也是今天仍在使用的唯一方法(罗尼·李·加德纳是最*的一个,2010 年)。行刑队的方法与第一次弗吉尼亚处决相同,可能有一种古老的感觉。但是正如我们从拙劣的恐怖和致命注射的一般管理中了解到的那样,我们必须问自己:在第 14 修正案中,我们关心的是对死刑犯的残酷惩罚还是对旁观者的残酷惩罚?正如大法官索尼娅·索托马约尔在亚瑟诉邓恩一案中所说,
“除了几乎瞬间死亡之外,开枪致死也可能相对没有痛苦。……从历史上看,行刑队执行拙劣的死刑要少得多。”
五点三十八好像同意了。
死亡的高峰和低谷
美国死刑的故事是一个衰落、流动、解散和重新建立的故事。尽管死刑是从英国引进的,但它的应用和终结并没有随之而来。在 20 世纪上半叶(1900 年至 1949 年),英国执行死刑的人数比美国少 89%,当时两国都有死刑。更重要的是,英国在 20 世纪 60 年代废除了死刑并且一直有效。现代美国废除死刑只持续了十年。
在美国,死刑执行在 1935 年达到顶峰,有 197 起州政府批准的死刑。如果没有第二次世界大战和可怕的大屠杀的发现,1935 年可能只是另一个较小的高峰,在不断增长的人口中,国家批准的死亡越来越多。1948 年,联合国走到一起,打造了一种新的道德——一种“生命权”虽然世界上大多数国家并没有实现这项法令(在世界范围内废除死刑)的厚望,但它确实成为了美国的一个转折点。第二次世界大战后,死刑数量急剧下降,标志着人们对杀人作为一种可接受的惩罚形式的看法发生了道德转变。
Data: [1] and [2]
这种关于死刑的观点的下降与 1967 年最高法院对弗曼诉佐治亚州案的判决5-4 的意识形态转变相一致。这一裁决后,美国不再通过死刑判决。
在弗曼中,威廉·亨利·弗曼,一个的黑人在试图破门进入一户人家时开枪打死了他的受害者。大法官在该案中的意见强调了处决种族和经济上受压迫的个人是如何违反宪法的——第 14 修正案保护公民免受“残酷和不寻常的惩罚”道格拉斯法官解释道:
“……我们知道,法官和陪审团在判处死刑时的酌处权使得死刑能够有选择地适用,如果被告贫穷、被人鄙视、缺乏政治影响力,或者如果他是嫌疑人或不受欢迎的少数群体的成员,就会助长对被告的偏见,而那些由于社会地位而可能处于更受保护地位的人除外。”
William Henry Furman
弗曼和他衣服上所有不太出名的人都是黑人,这是很恰当的;正是由于意识到死刑在种族上的不*等,死刑的执行受到了公*的审视。从广义上讲,现代的死刑问题是一个种族问题。1986 年,一位名叫麦克莱斯基的起诉人向最高法院展示了在一项名为巴尔杜斯研究的实证研究中,佐治亚州的非裔美国人是如何被不成比例地判处死刑的。在对佐治亚州的 2000 多起凶杀案进行分析后控制了 200 多个变量,该研究报告称,杀害白人的黑人中有 11%被判死刑,而杀害黑人的白人中只有 1%被判死刑。最高法院的大多数意见并不完全反对这项研究,他们只是发现
“……巴尔杜斯的研究“未能对麦克莱斯基的主张做出任何有价值的贡献。”
5 比 4 的决定不是在指定的政党路线中做出的。三名民主任命的法官中有两名(白人)同意多数人的意见。四个反对意见中的三个是由共和党总统任命的。
Sources for data: [1] (top) and [4] (bottom)
在 1977 年死刑再次活跃起来后,它的攀升又开始了,死刑的支持率也是如此,在 1994 年达到了 80%的历史最高水*。但是在世纪之交,发生了一些事情,使它再次下降。在 20 世纪 80 年代末和 90 年代初,DNA 证据成为了全国法庭上客观性的革命性工具。随着 CODIS(联合 DNA 索引系统)的出现,该国第一个拥有 DNA 信息的国家数据库,被错误定罪的重罪犯第一次有了真正的机会获释并被免除罪行。这再加上不断变化的舆论潮流和不断变化的法律,使得无辜的人从死囚区被释放出来。从 1973 年开始,一系列的免罪证明开始了,到今天将会增长到 166 个,许多都是在 DNA 技术的帮助下。
1998 年,在越来越多的对处决无辜者的关注中,第一次在芝加哥附*举行了全国错判会议。一年后,处决人数达到了现代史上的最后一次高峰。
南方是执行死刑的地方,德克萨斯州走在了前面
自 1608 年以来,南方一直是死刑的发源地。当英国殖民者开始占领并扩张到我们现在称之为北美的土地上时,他们首先在我们称之为弗吉尼亚(以英格兰的“处女女王”伊丽莎白一世的名字恰当地命名)的地区取代土著人。弗吉尼亚是一个南方的州,因此可以推断,殖民时代的死刑主要发生在南方,直到 18 世纪。同样,南方将领导我们现在称之为“西部”和“中西部”的地区,这些地区直到 19 世纪还没有被占领、被窃取、被殖民、被购买、或所有这些的混合。
Data: [2]
然而,这种模式一直延续到现代。在过去 20 年里,处决人数最多的 10 个州中有 7 个位于南方。这可能有很多原因。从严格的统计角度来看,南部仍然是最常见的执行死刑的地方,因为截至 2019 年,南部每个州仍在执行死刑,而许多北部和西部的州要么宣布死刑违宪,要么州长下令暂停执行死刑。至于为什么韩国没有宣布死刑为非法,我的猜测是围绕死刑的价值观和信仰是基于地区的。
Data: [1]
如果我们必须孤立一个州,那么自 1977 年恢复死刑直到 2004 年左右,德克萨斯州显然是整个国家死刑执行率的驱动力。他们不仅处决的人比其他任何州都多,而且处决罪犯的速度也很快。
得克萨斯州在死刑方面领先有几个原因。首先,他们没有公设辩护人制度。这意味着请不起律师的人可以得到法院指定的律师,而这些律师可能对这类案件没有经验。其次,德克萨斯州在 1995 年通过了一项法律,加速了定罪和执行之间的过程。第三,德克萨斯州的上诉法官是选举产生的官员,他们更密切地关注该地区的政治,这意味着他们可能会更经常地开展“严厉打击犯罪”的运动,并且必须以一种被任命的法官所不具备的方式来兑现这些承诺。
Data: [1] and [2]
也有人猜测,德州的死刑制度在某种程度上是高效的,其他州将来也可以实现。这种观点认为,这并不是因为德州做出了更多的死刑判决,而是因为他们更擅长执行死刑。
总而言之
理论上,我们在改变以人道方式处决人的方式方面已经取得了很大进展,但是普通的方法并不是最人道的。目前实际上最“人道”的方法(如果可能的话)可能是第一种:行刑队。我绝不是第一个这么说的人,最高法院已经公开讨论过这个问题。
在过去的一个世纪里,美国被执行死刑的人数大大减少了,但是我们仍然生活在一个自殖民时代以来就不公*对待死刑的体系中。尽管各州花费更多的钱来杀死罪犯而不是让他们活着,死刑仍然存在,而且在一个特定的地方(主要是南方,甚至更多的是德克萨斯州)被处决的人数似乎是由文化驱动的。死刑问题在很大程度上似乎是一个种族问题。
鉴于我们对即使是现代的死刑执行方法会有多么痛苦有着丰富的知识,执行死刑要花费大量纳税人的钱,而且进步国家没有死刑,我觉得美国处决罪犯是令人惊讶的。
参考资料:
- 【1】死刑信息中心(通过 Kaggle
- [2]来自 ICPSR 的 Espy 文件:
Espy,M. Watt,和约翰·奥提兹·斯迈克拉。美国的死刑执行,1608-2002:ESPY 文件。ICPSR08451-v5。密歇根州安阿伯市(Ann Arbor):大学间政治和社会研究联合会(Inter-university Consortium for Political and Social Research)[分销商],2016–07–20。http://doi.org/10.3886/ICPSR08451.v5 - [3]来自时间分析的 Dict 助手和 Git 上的源代码
- [4]盖洛普死刑支持率
- [5] 美国的地*线:全球背景下的美国历史
ROS 的内容、原因和方式
原文:https://towardsdatascience.com/what-why-and-how-of-ros-b2f5ea8be0f3?source=collection_archive---------3-----------------------
人类一直对机器人着迷,无论是雷奥纳多的机械狮子 还是 特克 。我们总是试图建造与我们或我们周围的自然生物相似的东西。
The Turk
机器人是能够感知环境(即其周围环境)(使用传感器)、基于环境状态做出决策(使用计算和算法)并能够执行生成的指令(使用致动器)的任何系统。
这些传感器和执行器并不理想,因此会给系统带来很大的不确定性。因此,我们永远无法知道系统的实际状态是什么,因此我们永远无法知道机器人的确切位置,或者使用致动器施加相同的力是否会导致相同的运动。这将随机性引入到系统中,使得与现实生活中的机器人一起工作变得极其困难。再加上环境中其他因素(如人类和动物)看似不可预测的运动,你就有了一个非常棘手的问题。
Robotic System
我们如何解决这些问题,更不用说开始解决它们了?我们需要一些系统作为传感器和执行器之间的桥梁。这是一个决策过程或一系列步骤,系统必须遵循这些步骤来实现预期的结果。这些步骤被称为算法,可以被认为是机器人的大脑。
为了建造一个复杂的机器人,我们需要各种各样的传感器,例如,为了建造一辆自动驾驶汽车,我们需要激光雷达、相机、惯性测量单元、全球定位系统等。这些系统可以由不同的公司制造,并且可能遵循非常不同的方法。因此,缺乏统一性。此外,一些算法在机器人系统中非常常用,如卡尔曼滤波器、PID 控制等。如果每个人都重写相同的算法,可能会导致不必要的时间和精力浪费。更别说这些程序的质量(就软件工程实践和计算效率而言)不会很好。
来自描述 ROS 的论文的作者[2]:
为了应对这些挑战,包括我们在内的许多机器人研究人员之前已经创建了各种各样的框架来管理复杂性并促进实验软件的快速原型制作,从而产生了目前在学术界和工业界使用的许多机器人软件系统
。这些框架中的每一个都是为特定的目的而设计的,可能是为了应对其他可用框架的弱点,或者是为了强调设计过程中最重要的方面。[2]
因此,需要一种系统来消除这些不必要的开销,以便世界各地的研究人员能够更好地做出贡献,解决机器人系统带来的难题。我们需要协议将数据从系统的一部分传输到另一部分,我们需要统一的实践和工具来构建我们的软件,我们需要预先编写的库来避免兼容性问题。ROS 就是这样一个系统,它为我们提供了规则和标准的方式来组织我们的东西,这样我们就可以大规模地合作,并在事物之间保持某种一致性。
ROS 是什么?
ROS 不是一个操作系统,而是一个元操作系统,这意味着它假设有一个底层操作系统来帮助它执行任务。但是什么是操作系统呢?操作系统没有明确的定义。通常,操作系统由操作系统提供商提供的所有东西组成。
Working of ROS
原论文中 ROS 的定义[2]:
开源机器人操作系统 ROS。ROS 不是传统意义上的进程管理和调度的操作系统
;相反,它在异构计算集群的主机操作系统之上提供了一个结构化的通信层。[2]
操作系统是在应用程序和硬件之间提供接口的软件。它处理诸如内存、处理器时间等资源的分配。通过使用调度算法并记录不同用户的权限,从而提供一个安全层。操作系统可以包括基本应用程序,例如网络浏览器、编辑器、系统监控应用程序等。它几乎总是有一个称为内核的低级程序,帮助与硬件接口,本质上是任何操作系统最重要的部分。操作系统可能提供也可能不提供图形用户界面。
在理解元操作系统之前,我们需要理解什么是库和框架。库本质上是在软件/程序中广泛使用的函数组,其流行程度足以证明将它们打包到单独的文件中是合理的。库也被用来使软件看起来更整洁,并建立在经过测试的软件之上,从而减少出错的机会。这并不意味着你不能建立自己的库,但这里我们指的是常用的库。框架本质上是可用于特定应用的库的集合。
API 是一个应用程序编程接口。如果你有一些代码,并且你想在不知道所有代码的情况下使用它,你可以使用 API。API 提供了一个抽象层,并提供了对底层代码的访问。这在处理项目时非常有用,因为我们可以很容易地使用同行评审过的、彻底测试过的代码(库、框架等)。)而不必担心它可能如何工作。
元操作系统具有大量的功能,以至于它不能被归类为一个框架或一组库,但也不能被归类为操作系统。它既提供操作系统的功能,也提供框架的功能,但并不全面。因此,它不能被归为任何一类。例如,它不提供操作系统应该提供的核心功能,但提供 API。
Linux 操作系统
ROS 依赖于底层操作系统。ROS 要求操作系统具备很多功能。此外,ROS 必须对大量用户免费开放,否则大量用户可能无法访问它。ROS 的流行很大程度上是由于它的开放性和对大众的易获得性。它还需要一个开放源代码的操作系统,这样操作系统和操作系统就可以根据应用程序的要求进行修改。
Windows 10 和 Mac OS X 等专有操作系统可能会限制我们使用它们的方式。这可能会导致开发过程中的僵化,这对于 ROS 这样的行业标准来说并不理想。因此,大多数人更喜欢在 Linux 上运行 ROS,特别是 Debian 和 Ubuntu,因为 ROS 对基于 Debian 的操作系统,特别是 Ubuntu 有很好的支持。这并不意味着 ROS 不能在 Mac OS X 或 Windows 10 上运行。但是支持是有限的,人们可能会发现自己处境艰难,几乎得不到社区的帮助。
操作系统和操作系统之间有着紧密的联系,以至于为了使用操作系统,有必要了解更多的操作系统知识。作为一个新手使用 Linux 可能是一个挑战,一个人肯定会遇到 Linux 的问题,尤其是在使用 ROS 时,对 Linux 的良好了解将有助于避免/修复这些问题。
由于某些驱动程序不匹配(看着你 NVIDIA ),我个人不得不多次重新安装我的操作系统,依赖性破坏的问题已经导致我陷入严重的生存危机。为了避免这种情况,我整理了一个在关键时刻拯救生命的链接列表。
如上所述, NVIDIA 驱动程序与 Linux 不太匹配。英伟达没有为 Linux 提供官方驱动程序,所以人们黑掉了英伟达的卡,对驱动程序进行了逆向工程,建立了一个叫做的东西。但是 NVIDIA 知道这些,长话短说,这些和 NVIDIA 显卡不太搭。但是 NVIDIA 确实提供了一些你可以使用的驱动,它们很可能会工作(一切顺利!).
使用 ROS 还有许多其他常见错误。但是要理解这些,我们必须理解软件包在 Linux 中是如何安装的。这是一个有趣的话题,值得多篇博客来讨论,但是我们在这篇博客中只是简单地介绍一下。
要在 Linux 中安装任何软件或库,我们需要一种叫做 repos(仓库的缩写)的东西。这些是由组织提供的官方服务器,用于促进软件的分发。这些包存储在它们的服务器上,您可以通过使用包管理器或手动过程来获得它们。默认情况下,只有一定数量的回购,由包管理器为所请求的包进行搜索。但是当然,我们不能在一次回购中拥有所有的产品包。因此,我们需要多个回购,因为每个人都不需要每个回购,所以只包括有限数量的回购是有意义的。
How package manager works
但是如果我们想从不同的仓库下载软件包呢?我们必须将它们添加到要搜索的回购列表中。这个系统保护 Linux 免受病毒的侵害,因为所有的软件都来自可靠的来源,其中一个是病毒的可能性很小。但是,如果你添加了自己的回购,那么你将对后果负责。因此,当你从 ROS 下载软件包时,你需要提供 GPG 密钥,以确认这个回购确实是安全的。下面是我们的第一个错误“ gpg 键错误”,这个博客可以帮助你更好的理解 gpg 键并解决这个错误。
一些软件包可能不适用于当前版本的操作系统,比如说 Ubuntu 16.04 可能有一些过时的软件包,或者你可能需要一些只在某些网站上可用的软件包。这可以通过 PPAs 或个人包存档来完成。这可能会导致很多错误,因此我们需要一个 ppa 管理器来帮助我们导入密钥,如果需要的话,这就是 Y-PPA 管理器的用武之地。
最常见的错误之一是 dpkg 错误。dpkg 或 debian package 是一个软件包管理器,位于 ubuntu 软件包管理器(如 apt)的后端。问题是,它一次只能安装一个包,因此锁定了它的使用。因此,如果你试图安装多个包,它可能会抛出 dpkg 错误。
尽管 Ubuntu 附带了许多预装软件,其中一些非常有用,但有时可能需要安装提供更好替代方案的软件。以下是我使用的一些软件。这是一个非常好看的包装器,让 bash 看起来更好,并提供了一些额外的功能。 Sublime 是我最喜欢的文本编辑器之一,它的界面和提供的快捷方式极其方便。你可能还想安装 chrome 。
积木
在 ROS 中,一切都以包的形式存在。这有助于以更易于维护的方式打包代码。ROS 提供了很多现成的包。ROS 包可以通过以下方式安装
**sudo apt install ros-<distro>-<package-name>**
例如,在 ROS kinetic 上,robot_localization 包将安装为:
**sudo apt install ros-kinetic-robot-localization**
关于包装的更多信息,请参见本页:
ROS 中的软件被组织在包中。一个包可能包含 ROS 节点,一个独立于 ROS 的库,一个数据集,配置文件,一个第三方软件,或者任何其他逻辑上构成一个有用模块的东西。这些包的目标是以一种易于使用的方式提供这种有用的功能,以便软件可以很容易地被重用。一般来说,ROS 包遵循一个“金发女孩”原则:足够的功能是有用的,但不要太多,以至于包太重,难以从其他软件中使用。
包中的一些重要文件/目录是:
1.节点:节点节点是执行计算的进程。
2。CMakeLists.txt :它是 CMake 构建系统的输入,用于构建软件包。
3。 Package.xml :它定义了关于包的属性,比如包名、版本号、作者、维护者以及对其他柳絮包的依赖。
4。。yaml 文件:运行 rosnode 可能需要很多参数,例如 PID 控制中的 Kp、Ki、Kd 参数。我们可以使用 YAML 文件来配置这些。
5。启动文件:为了在 ROS 中同时运行多个节点,我们使用启动文件。
任何将要编写的代码都应该是包的形式。并且包应该在工作空间内。更多信息请参见这一页。
**一个柳絮工作空间是一个文件夹,您可以在其中修改、构建和安装柳絮包。它可以包含多达四个不同的空间,每个空间在软件开发过程中扮演不同的角色。
1。源空间包含了柳絮包的源代码。在这里,您可以提取/检出/克隆您想要构建的包的源代码。源空间中的每个文件夹包含一个或多个柳絮包。**
2.构建空间是调用 CMake 来构建源空间中的柳絮包的地方。CMake 和柳絮在这里保存它们的缓存信息和其他中间文件。
3.开发空间(或开发空间)是在安装之前放置构建目标的地方。目标在开发空间中的组织方式与其安装时的布局相同。这提供了一个有用的测试和开发环境,不需要调用安装步骤。
4.一旦构建了目标,就可以通过调用安装目标(通常使用 make install)将它们安装到安装空间中。
当我们运行我们的 rosnodes 时,它们执行计算并获得结果。但是它们可能需要来自其他节点的结果,以便执行一些其他功能。因此,我们需要一种机制来帮助我们将数据从一个节点传输到另一个节点。我们需要做的第一件事就是设置一个 ROS 主机。
The ROS Master
ROS 主机为 ROS 系统中的其余节点提供命名和注册服务。它跟踪主题以及服务的出版商和订户。主节点的作用是使各个 ROS 节点能够相互定位。一旦这些节点相互定位,它们就相互进行对等通信。
数据的传输是通过主题进行的。如果你想发送你的数据,你可以将它发布到主题,任何需要的人都可以通过发布者订阅它。这有助于编写代码,甚至在我们使用 ROS 包时更有帮助。当我们想记录一些数据时,ROS 包很有帮助,所以我们可以稍后播放它,如果我们想复制一个行为。
Topics and services
主题是命名的总线,通过这些总线节点交换消息。主题具有匿名的发布/订阅语义,这将信息的产生和消费分离开来。一般来说,节点不知道它们在与谁通信。相反,对数据感兴趣的节点订阅相关主题;生成数据的节点发布到相关主题。一个主题可以有多个发布者和订阅者。
服务是另一种形式的交流。它们用于远程程序调用。即,一个程序可以从位于另一台计算机中的程序请求服务。传输的数据是以消息的形式,这是在 ROS 中使用的特别定义的数据类型。我们要看的最后一种沟通类型是行动,它们类似于服务,但长期目标可以被抢占,即可以被要求改变。
actionlib 包提供了创建服务器的工具,这些服务器执行可以被抢占的长期运行的目标。它还提供了一个客户端接口,以便向服务器发送请求。
工具
一旦我们准备好所有的代码并运行,我们需要测试我们的代码,这样我们就可以在必要的时候进行修改。在真实的机器人上这样做将会很昂贵,并且可能导致每次设置机器人时浪费时间。因此我们使用机器人模拟。与 ROS 一起工作的最流行的模拟器是 Gazebo 。它有很好的社区支持,它是开源的,在它上面部署机器人更容易。
NASA’s robot in gazebo
机器人将安装不同的传感器和致动器,幸运的是我们可以在凉亭找到许多这样的传感器和致动器,或者我们自己建造它们,这可能需要很长时间,但仍然不是很困难。在运行这些传感器时,我们可能需要可视化它们的数据。为此,我们使用了 RViz 。
moveit in rviz
RViz 是 ROS 的 3D 可视化工具。它是最流行的可视化工具之一。它接受一个主题作为输入,并基于要发布的消息类型将其可视化。它让我们从机器人的角度看环境。
其他资源和结论
ROS 极其复杂,因此对新手来说有些难以理解。让 ROS 对人们来说很难的是这个人需要具备的大量先决知识。由于大多数初学者没有这方面的知识,他们发现很难掌握 ROS。
这包括对 Linux 的良好了解和对计算机工程原理的良好理解,包括网络概念和软件工程哲学。ROS 主要基于广泛流行的、经过测试的工具和技术,例如 rqt 就是从 qt 派生出来的。Gazebo 和 stage 在与 ROS 和柳絮集成之前就已经很流行了,是基于 CMake 的。
让事情变得更复杂的是,只有几个好的在线资源。写了很多书,但对新来者几乎没有帮助。我发现《ROS 简介》这本书非常有用,因为它简明扼要,可以帮助我入门。《用 ROS 编程机器人:机器人操作系统实用介绍》这本书很好地概述了不同的东西在 Ros 中是如何工作的。人们还推荐“ ROS Robotics By Example ”。不同工具的很多用法可以在 wiki 上找到,如果你有困难,可以去论坛看看。
我希望这篇博客能帮助你更多地了解 ROS,现在你明白它的用处了。但是 ROS 是在 2007 年推出的,它是为特定的用例设计的。从那以后,发生了很多变化,我们看到了人工智能研究的复兴和用例数量的增加。机器人技术在大众中变得越来越受欢迎,尽管 ROS 很好地应对了这些挑战(尽管它不是特意设计的),但它需要大量的黑客。
因此,我们要求对 ROS 进行改革,使其能够应对这些新的挑战。ROS2 就是这样一个项目,它的开发是为了让 ROS 可以在其他操作系统上使用,比如 Windows,并且可以支持更多种类的硬件(比如嵌入式系统)。它还应该对强化学习和多机器人系统有更好的支持。
还提供了附带的演示文稿和 Youtube 视频:
[1] 克莱默、詹姆斯和马蒂亚斯·舍茨。"自主移动机器人的开发环境:综述."自主机器人 22.2(2007):101–132。 【2】奎格利、摩根等人《ROS:一个开源的机器人操作系统》。开放源码软件 ICRA 研讨会。第三卷。№3.2.2009.
什么,为什么,以及如何阅读经验 CDF
原文:https://towardsdatascience.com/what-why-and-how-to-read-empirical-cdf-123e2b922480?source=collection_archive---------6-----------------------
鼓励探索性数据分析(EDA)来获得数据的可消化的一瞥。这包括汇总统计的直方图:
和散点图来确定数据中特征的相关性。
Scatter plot comparing the Economic Summary Index of Countries with their Size of Government.
但是有一个汇总统计可视化,我是在探索了 Datacamp 的统计思维课程之后才知道的。它被称为经验累积分布函数(试着说快 10 倍…我们简称它为 ECDF)。
在本帖中,我们将探索什么是 ECDF,为什么要使用它,以及我们可以通过使用由#改头换面星期一的人们提供的世界经济自由数据集从中获得的见解。这些数据也被用来制作上面的图。用于这些图表的代码和 excel 文件的副本在这个 Github Repo 中。代码没有包含在这篇文章中,所以你可以把注意力放在视觉效果上并解释它们。
那么什么是经验积云呢?什么是 ECDF?
ECDF 是累积分布函数的估计量。实际上,ECDF 允许您按照从少到多的顺序绘制数据的要素,并查看整个要素,就像分布在整个数据集中一样。让我们看看帖子中上面的 ECDF 图表。
这里我们可以看到各国经济自由度综合指数的差异(2015 年)。这张图表可以为我们提供一些关于这些国家经济表现的统计摘要。一个快速的洞察是指数的范围从略低于 3 到 9(范围大约为 6)。所以没有一个国家有完全的经济自由。
听起来很棒!但是我如何阅读 ECDF 来获得这些汇总统计数据呢?
一开始我读起来也有困难,但它比你想象的要简单。我得到的解释对我来说还不够。然后我想一定有类似的东西我可以使用,类似于 ECDF,可以提高我的理解。让我通过高斯(正态)分布为你们提供这个支架,你们可能更熟悉。
Gaussian Distribution. Image from etfhq.com
如果你熟悉高斯分布,我来问你这个问题。数据点小于*均值的百分比是多少?如果你回答了 50%,那么你就对了!
ECDF 可以用类似的方式来阅读!例如,汇总指数低于 6 的国家比例是多少?在 x 轴上看向 6,然后垂直移动,直到碰到曲线。你得到了大约 20%。因此,大约 20%的国家的综合指数低于 6。所以他们有一些经济自由。
这是 2014 年的另一张 ECDF 图,数据相同。
ECDF of the Countries’ Economic Summary Index in 2014.
试着用上面的图表回答下列问题。我会把答案写在问题下面。
1.汇总指数低于 6 的国家百分比是多少?
2.综合指数低于 8 的国家的大约百分比是多少?
答案:
1.20%左右。
2.大约 97–98%。
厉害!同时绘制多个 ECDFs 怎么样?
我们可以绘制多个 ECDF 图!例如,让我们将 2014 年和 2015 年的两个 ECDFs 绘制到一个图表上。
现在,您可以确定两年的汇总统计数据并进行比较。您可以看到,在某些汇总指数范围内,例如从 7 到 8,这两年的汇总指数几乎相同。但在 6 到 7 的范围内,2015 年综合指数低于 7 的国家比例略高。
现在你可能想知道,你能在一张图上画出多少个 ECDFs?我看到最多的大概是 3 个。这个数据有 22 年的汇总指数价值。让我们看看 22 ECDFs 有多好(剧透:不会太好…)
ECDF plot with all 22 years worth of Country Summary Indexes. Nulls were dropped.
正如您可能很难看到的,由于同时绘制的 ECDFs 的数量,这不容易解释。即使有这个传说,也很难区分哪一年和其他年份。在这种情况下,展示得越少,揭示得越多。让我们画出 4 年的价值。具体来说,我们将从 1970 年到 2015 年绘制图表,在此期间每隔 15 年绘制一次。
ECDF plot of summary indexes for 1970, 1985, 2000, and 2015
清楚多了不是吗?此外,这让你可以看到在 15 年的跳跃中总结指数变化的区别。从这幅图中你能观察到什么?在下一段阅读它们之前,试着思考一下这个问题。
你可以直接观察到的是,1970 年和 1985 年的综合指数比后来的年份要低。因此,从 2000 年开始,经济自由度总体上有所提高,至少在 2015 年也是如此。1970 年和 1985 年还有一些有趣的观察结果。一是 1970 年的数据点似乎最少,这可能表明很少有国家拥有经济自由,或者有些数量没有记录。
第二个观察结果是,在 1985 年,尽管拥有一定经济自由度的国家数量有所增加(更多数据点),但由于 ECDF 曲线的变化,综合指数值的可变性较小。也就是说,1985 年综合指数低于 6 的国家的百分比高于 1970 年的百分比。
ECDF 的额外资源
感谢阅读这篇文章!如果你想了解更多关于 ECDF 的信息,请查看以下内容:
1.ECDF 的概念基础-展示 ECDF 背后的数学原理的伟大博客文章。
- ECDF 和 CDF 维基百科的附加阅读页面。
3.数据营统计思维 ECDF 视频——Justin Bois 的介绍视频,在那里我了解到 ecdf 的存在。对视觉学习者有好处,并能听到它相对于蜂群图的优势。他还展示了如何使用 Python 创建 ECDF 图。
4.下面是这篇文章的视频版本,带有鳄梨销售的数据集。我经历了与上面相同的解释。因此,如果你是一个视觉学习者,这将对你有所帮助。
希望你和我一样对 ECDF 感兴趣(上次我输入 ECDF 时,我保证…包括这个…)。我计划将它添加到我的 EDA 工具箱中,并尽可能地使用它。你也会这样做吗?你在数据中做了哪些我遗漏的观察?请在下面的评论中告诉我。
如果你喜欢阅读 Medium,并愿意进一步支持我,你可以使用我的推荐链接注册 Medium 会员。这样做可以用你的会费的一部分在经济上支持我,我将不胜感激。
如果你喜欢这篇文章,也可以看看我下面的其他一些数学相关的文章:
[## 与 Python 的点双列相关
线性回归是确定数据的两个或多个连续特征之间相关性的经典技术…
towardsdatascience.com](/point-biserial-correlation-with-python-f7cd591bd3b1) [## 用 Python 解释超几何分布
数学课上的概率问题,你需要的概率要么给你,要么相对容易…
towardsdatascience.com](/hypergeometric-distribution-explained-with-python-2c80bc613bf4) [## 使用混淆矩阵度量避免混淆
从混淆矩阵中理解 17 个指标
towardsdatascience.com](/avoiding-confusion-with-confusion-matrix-metrics-a8a3d0ead144)
直到下一次,
约翰·德杰苏斯
NHL 曲棍球 2 点线看起来像什么?
原文:https://towardsdatascience.com/what-would-a-hockey-2-point-line-look-like-bf6b3192226a?source=collection_archive---------19-----------------------
Photo by Braden Barwich on Unsplash
感谢 NHL stats API,我们可以找到答案!
这个想法
曲棍球中两点线的想法并不算是新的。曲棍球也没有什么独特的地方比足球更需要 2 分线。我选择研究曲棍球,因为 NHL 有最容易获得的数据。事实上,只需要几行代码和 30 分钟的下载时间,就可以下载过去 5 年的所有 685,000 个镜头和拍摄地点。按照惯例,我已经把我使用的 python 代码发布在了 Github 上。此外,提到最初激发这篇文章的第 538 篇 NBA 文章似乎很重要。正如 NBA 球迷所知,这项运动在过去几年里发生了巨大的变化,很大程度上是由于地图拍摄。每个 NBA 球队(希望如此)现在都非常清楚,三分球或多或少是比赛中仅次于上篮或扣篮的第二有价值的投篮。虽然这似乎是一个基本的概念,但直到统计学家开始绘制镜头,它才变得显而易见。让我们为曲棍球做同样的事情!
第一步:下载超过 685,000 张照片
我喜欢 API。我没有太多和他们一起工作的经验,但是我有过几次这样的经历,感觉很棒。据我所知,大多数体育数据都是从像 sports-reference.com 这样的网站上搜集来的。很多先进的运动数据你必须建立更先进的爬虫。如果你运气不好,高级统计数据会在付费墙后面(比如 PGA 巡回赛历史击球数)或者更糟…它实际上都在付费墙后面(赛马😡).这就是为什么它是如此令人耳目一新,找到非霍奇金淋巴瘤统计 API。我首先生成了所有的常规赛 API 游戏 URL。下面是这段代码的主要片段:
for gm in range(gms):
game_num = "0000" + str((gm+1))
game_num = game_num[-4:]
game_id = str(year)+"02"+game_num
url= "[https://statsapi.web.nhl.com/api/v1/game/](https://statsapi.web.nhl.com/api/v1/game/)"
+game_id+"/feed/live"
urls.append(url)
简单的东西!然后,API 端点提供了一个数据宝库。数据几乎太多了。在 python3 请求和 json 库的帮助下,我只需选择播放数据:
# Note: tqdm is a progress bar library.for ep in tqdm(urls):
response = requests.get(ep)
game_json = json.loads(response.text)
all_plays = game_json['liveData']['plays']['allPlays']
最后,我将比赛数据过滤为非空净的常规时间目标。我因为 3v3 的怪异排除了加班。在 json 数据内,有坐标!我的最终输出只是一个 3 列的表格:镜头类型、X 坐标和 Y 坐标。
第二步:绘制它们!
这是我们可以发挥创造力的地方。Matplotlib 和 Numpy 提供了许多表示数据的方法。下面,在左边,我有一个所有镜头的散点图。它们按照距离目标的远*来着色。在右边,我标出了所有的目标位置。根据频率不同,它们的颜色也不同。我们只是触及表面!
I’m aware that a handful of shots come from outside the rink. Rink dimensions I plotted are from Wikipedia so they have to be 100% accurate. Another possibility is that rinks are not uniform in size or that there is systematic error in plotting shot locations.
此外,我发现六角垃圾桶工作良好,视觉上很有吸引力:
It’s almost as if being close to the net helps. 🤔
我们在 2 点线上想要什么?
回到手头的问题。我们得到了拍摄数据。我们已经得到了目标数据。现在我们需要确定冰上不同点的投篮命中率。以篮球为例,很明显,在两分线后的理想投篮不会比高危险的一分机会得到更多的回报。这给了我们一个界限,界限可以有多*。如果最高危险的一分投篮在 25%的时间里进,那么你不希望两分投篮在高于 12.5%的时间里进。如果是的话,那就没有动力去投一分球了。
关于两点线应该有多远的另一个界限是完全可以讨论的。它应该如此遥远,以至于只能作为克服后期赤字的最后努力吗?还是应该这么高效,一个线上的投篮优先于很多一分投篮位置(类似篮球)?我可能会努力在一个快乐的中间状态下做出我最好的猜测。
映射效率
所有这些猜测都无关紧要,直到我们实际绘制出冰上的投篮命中率。我是怎么做到的?我用了一个数字面具🦸🏻♂️将从冰上的一个点设置一个最小的 8 杆阈值,以防止样本量过小。仍然有一两个高异常值。我通过反复试验将最大效率设定为 24%,尽管网前的一些点接* 30%。然后,我使用高斯滤波器*滑数据,并通过 Matplotlib 应用轮廓。我也通过 Matplotlib 画线。最后,我用了一个数字面具🦸🏻♂️将把两分线外的任何进球的价值加倍。
NHL shooting percentages are on the left. The result of doubling the value of points outside the two-point line is show on the right.
正如预期的那样,效率在接*目标时显著提高。我很震惊它是如何急剧增加的。事实上,在球门前有一个很小的区域有 30%的效率。我认为这种*网效率部分来自于幸运的篮板,这些篮板基本上是射进了一个空网。
另一个有趣的特征是,有一些线从效率提高的目标向外延伸大约 30 度。我认为这是一个甜蜜的地带,跨冰传球允许一次性击败守门员,但他们不是在一个如此尖锐的角度,这是一个艰难的射门。再说一次,我从来没有打过曲棍球,所以有很多人可以比我更好地诠释它。迎面是另一个有效的射击点,这很直观。
我的 2 点线
起初,我试图拥有和篮球完全一样的效率比,这条线似乎太接*了。我喜欢我画它的地方有几个原因。一,毫无疑问,在靠*球网的高危险区投篮还是比较有优势的。二,散开了!而之前在现行规则下,进攻区域可能只有 25%(我粗略的猜测)是有威胁的,这个数字接*两线制的两倍。看看冰球的移动和策略会如何变化会很有趣。第三,我喜欢红色的圆点就在它的外面。教练可以很容易地告诉球员最有效的射门地点在哪里。篮球也有类似的甜蜜点(角落三分和迎面投篮)。
当然,这只是一种看法。尝试不同的选择很有趣。我鼓励你玩代码。如果有什么不同的话,这是 Matplotlib 中很棒的一课。这里有一些其他的例子…是的,我已经有太多的乐趣了…
这是个好主意吗?
曲棍球中的 2 分线是个好主意吗?那是一个我没有资格回答的问题,也不是这篇帖子的目的。我从未打过曲棍球。我的大部分曲棍球知识来自于观看赛季后期的纳什维尔掠夺者队,以及播放被称为 NHL 伊茨 2002 的杰作。我不能排除这是个愚蠢的想法有明显的原因。我不认为 2 点线是荒谬的。篮球三分线好像成功了。这将使冰上出现不同的比赛风格和不同的冰球运动。这也将创造高度的游戏后期的戏剧性。然而,也有很多缺点。一条 2 点的线会打乱基本上所有的统计数据。格雷茨基记录将更难解读。你会把守门员的扑救和两分球的射门算作一分球吗?守门员救球百分比不会因为更多的低概率射门而上升吗?它会如何影响尝试给目标小费的常见策略?很容易被投机冲昏头脑。
盖帽
这个分析中的一个潜在问题是盖帽。盖帽占记录镜头的 25%。我的理解是,NHL API 给出的是盖帽的位置,而不是进攻球员投篮的位置。我映射了没有块的数据,变化不大:
移除遮挡镜头后,镜头热图没有太大差异。我最大的猜测是,大部分盖帽来自于远距,给出的坐标是中距离。我不认为这消极地影响了我的分析,本质上把被阻挡的投篮视为比实际稍微*一点的投篮。这就产生了一个小偏差,看起来中距离射击不如实际有效,而长距离射击比实际有效。更彻底的分析可以解释这一点。
你在数据科学训练营中学不到的东西
原文:https://towardsdatascience.com/what-you-dont-learn-in-data-science-bootcamps-abfd1af60a9e?source=collection_archive---------10-----------------------
之后要学习的五件事
作为大会数据科学沉浸式的前讲师,我教了一千多名学生如何用数据解决问题,并有幸从一开始就创作和策划了相当大一部分学校的课程。声明一下,目前我不支持任何可用的数据科学训练营或教育项目。然而,我对那些参加过数据科学训练营、不知道下一步该学什么的人(或者有抱负的数据科学家)有一些建议。
为什么是训练营?
让我们以一个受欢迎的大学项目为例,比如加州大学伯克利分校的信息和数据科学硕士。要获得 UCB 大学的数据科学硕士学位,需要超过 6 万美元,微积分、线性代数的先决条件,一张相关定量领域的学士学位证书,以及大学水*的基础工程课程的良好成绩。这是当今大多数大学课程的反映。如果你是自学的,或者没有更正规的数学、统计学和工程学背景,上大学就不那么容易了。
事实上,如果你想走大学路线(例如佐治亚理工学院的在线分析科学硕士),有更好的选择。
数据科学训练营通常分为两种类型:
- 兼职:10-12 周,每周晚上约 6 小时
- 全职:10–12 周,每周 40 小时,上午 9 点至下午 5 点
向潜在学生推销(有时是强烈暗示)的想法是,一个人可以在短期的专门学习中成为数据科学专家。你花 2-6 万美元参加一个业余班,或者花 16 万美元以上参加全日制班,但仍然要投入相当多的时间和资源,无论哪种情况,都比你花在全日制硕士项目上的钱要少。此外,许多数据科学训练营提供融资,因此参加训练营的先决条件较少;当你权衡这样一个机会的成本效益时,这些都是令人信服的理由。
数据科学训练营的软先决条件也是这条路线提供的一个方面,它既有优势,又保证了你潜在同学的知识和能力的差异。主要是,根据学校的不同,提供的是某种形式的评估,衡量先决知识和你的数学、统计和基本 Python 或 R 基础知识的能力。评估的结果对你需要学习的特定科目的材料清单和简短形式的课程是权威的。这种招生过程将学生引导到特定的学习领域,与传统的大学课程形成对比,训练营招生过程允许你根据自己的评估学习一组非常简明的主题,为第一天的课程做准备。归根结底,训练营是一所私立的营利性学校,对你的入学感兴趣。
通常,没有完成前提工作的学生,一旦他们意识到课程的节奏和广度比他们预期的更激烈,他们就会在两周后为了退款而退出训练营。在我看来,上课的节奏就像用消防水管喝水一样。然而,课程很简洁,重点是实践应用。概念非常快地建立在彼此之上;然而,它留下了很小的空间来放慢速度或错过任何课程。
未来的学生会问我的最普遍的问题是,在为期 12 周的紧张课程后,他们是否真的可以“受雇”成为分析师或数据科学家。我会说是的,但这取决于你以前的背景。没有任何编程、统计、数学或机器学习经验的人毕业后,如果简历上只有一个数据科学项目,而没有任何其他与数据科学相关的内容,将会很艰难。
完成毕业设计后找工作并不是一件不可能的事情,我见过很多学生在充满挑战的就业市场中找到工作的方法,但大多数都有成功的结果。学生接受像数据科学家、数据工程师、分析师和其他数据科学角色这样的工作。
你班上有谁?
你的同学是定量金融分析师、生物学家、精算师、以前的高中数学老师、风险投资家、会计师、工程师或任何与工程或数据无关的人。这些学生中的大多数要么有质量学位,要么有应用工程背景,与那些两者都没有的学生混在一起。
作为一名教师,最难解决的一个问题是给一个班的学生上课,他们在统计学、数学和工程学方面的能力各不相同。尽管我确实认为学生知识和编程能力的总体*均水*在一定程度上影响了教学质量,但如果你有成长意识,这也是向更博学的同学学习的绝佳机会。
由于每个群组都包含了各种各样的人,他们有着不同的背景、信仰和能力,每个人都面临着各种各样的挑战。一般来说,学生们要么更容易理解所介绍的理论概念,要么更容易理解编程方面。一些学生在两者都没有背景的情况下挣扎,但我倾向于相信这些学生接受了一种向未知学习的纪律,因此生存得很好。
一般来说,有定量背景的学生帮助更多有工程头脑的学生,反之亦然。在训练营式的项目中,每个人都有一个共同的经历,那就是在这一点或那一点上与一两个概念进行实质性的斗争。学生们苦苦挣扎的想法对每个人来说都是独特和不同的。
You will learn these concepts within the first few weeks in a data science bootcamp class.
刚学会线性回归?很好,现在让我们学习线性回归许多正则化形式,共线性如何影响模型的质量,以及您刚刚学习的建模领域中隐含的偏差-方差权衡的影响。我刚才提到的这些概念是在传统环境下几个月或几年的学习,但如果学生在训练营式的课堂上集中注意力,他们可以在大约一周内获得所有内容的“要点”。
你学到了什么?
您将获得经典机器学习算法的精彩概述,以及如何实现这些算法的基本理解。如果您参加兼职课程,您将学习如何:
- 导入库
- 用某种形式的数据框清理和转换数据
- 训练和评估模型
- 使用数据库(最低限度)
您还将学习如何应用最基本的 ML 领域,包括:
- 监督和非监督学习
- 回归
- 分类
- NLP 贝叶斯
- 时间序列
- 神经网络
- “注意”一些大数据工具集
全职“沉浸式”与兼职课程的最大区别是更多的从头开始编写 ML 模型,更多的动手项目,更多的讲座,以及更多的整体实践。如果你看一下每小时的成本,全日制课程会更有价值,但特别是因为你可以向导师要求一对一的时间和可能的工作安排(成果)支持,这取决于学校。
你会学习如何做机器学习吗?是的。你会学习如何更好地编码吗?是的。你对统计学的理解是否足够有用?很有可能。你能学到足够的知识来继续自学并跟上时代吗?绝对的。这也将是你一生中最艰难但最值得的教育经历之一。这只是众多途径中的一种,取决于你对压力和成长的承受能力,以及上大学的成本节约选择。
Salary.com report on data scientist salaries in the San Francisco Bay Area, Sept. 2019.
你会知道如何有效地面试吗?不太可能,因为大多数项目的这一领域不够严格。在 12 周结束时,现实生活中的数据科学工资和训练营后的候选人之间的差距将会小得多,但门控因素可能不仅仅是了解足够的统计学、数学或机器学习。你还必须能够编写一个中级工程师水*的代码(我的观点),但这在正确的专注和准备水*下是可以实现的。我相信大多数学生在参加了数据科学训练营后都在数据科学领域找到了工作。尽管如此,在你第一天上课之前,你还是要付出更多的努力,而这些努力通常是不会被宣传的。
我对这类项目最重要的评估是,教授的内容与你需要做的事情之间的差距。训练营试图教你如何使用数据科学过程,但更侧重于指导你如何进行适当的 ML 实验。数据科学不仅仅是了解机器学习。数据科学就业市场仍在定义自己,但现在已经越来越清楚存在什么样的角色以及市场在这一点上的期望。企业正在招聘的候选人不仅擅长工程、统计和 ML,而且能够在与业务需求相关的同时与非技术经理沟通。
你学不到的
我有太多东西想写,真实世界中的数据科学是多么有趣和令人兴奋。有很多很酷的工具可以用来做有价值的模型评估,比如 scikit-learn 或 R Studio 中没有提到的。你可能会认为,经过 12 周左右的数据科学就是关于建模的,但老实说,数据科学家不会整天训练模型,除非你在做研究。建模包括大多数项目范围的 10-20 %,其余的将是查看数据,清理数据,并无情地问问题以从一组难以置信的模糊假设中定义地狱。
机器学习只会变得越来越有趣,但这不是最初在数据科学领域获得大多数工作的原因,除非职位完全是研究。几乎所有的数据科学训练营项目都有明显的盲点,因为数据科学不仅仅是建模。
1.如何确定展示业务影响的项目范围
让面试数据科学家职位的候选人与众不同的最大技能是,能够清楚地定义一个存在许多模糊之处的问题,同时以联系实际商业价值的方式解释最终结果。数据科学是一个过程。它必须在每一步证明其方法的合理性,并倡导其在现实世界中的存在,这包括训练模型和优化超参数,以及如何检查数据并从中提出正确的问题。
在参加了为期 12 周的数据科学课程后,大多数学生认为建模是项目中最关键的一步。在现实世界中,我们必须证明数据和模型如何协同工作来可测量地解决问题。你的大部分时间应该花在查看数据、清理数据和衡量项目影响的确定性上,而不仅仅是修补机器学习模型。
当然,并不是每个人都可以将最新的集成方法或神经网络用于分类问题,并在验证时测量 80%的准确性,同时附带解释模型性能权衡的图。企业应该如何处理这些信息?假阳性在风险分类方面意味着什么?诚然,从以业务价值为中心的角度来定义数据科学问题并不容易,但考虑到潜在的错误和偏见,您必须证明您的工作是正确的,并准确报告存在的风险。
从技术上确定问题的范围,同时联系潜在的业务影响,这不是你在 12 周内就能学会的。有可能 12 个星期都没有提到通过沟通来定义非技术价值。
到目前为止,从零开始确定问题的范围是新数据科学家最难学习的技能。训练营在这方面做得不好。尽管如此,你还是可以帮自己一个忙,选择那些关注于清晰定义项目范围的最终项目,这些项目带有伴随的成功指标,同时也考虑到了业务成果。用数据讲故事,为什么重要。
企业渴望能够深入透彻地思考问题的数据科学家。企业希望有人能够解释什么是成功,证明模型选择的合理性,并向非技术观众断言确凿的事实,同时为他们的工作辩护,因为好的和坏的数据会影响它。做好这一点的唯一方法是问正确的问题,倾听关键利益相关者的意见,并向导师和更有经验的团队成员寻求帮助。
获得经验可能听起来像一个第 22 条军规,例如“我如何获得确定问题范围的经验?”。我的建议是做更多的项目,清楚地定义一个问题,设置关键指标,衡量影响,总结什么是可能的和建议的下一步行动。求助。寻求更有经验的人的智慧。
推荐阅读
- 数据科学生命周期 101,像我这样的傻瓜,作者 Sangeet Moy Das 。【Sangeet 提出的第一点是理解如何开始界定问题的良好开端。他的建议为" 1。业务理解有一些很好的出发点。也是同名的章节,“ 8。业务理解“以及在此之前发生的一切都是对数据科学团队成员整体重要性的极好介绍。
- 数据科学流程:数据科学家的日常工作,作者 Raj Bandyopadhyay 。
这个,1000%。这是一篇关于如何以一种非常相关的方式应用数据科学过程的非常棒的文章。我最喜欢的一段:
销售副总裁路过,注意到你的兴奋,问道:“那么,你有东西给我吗?”你突然说,“是的,我用逻辑回归创建的预测模型的 TPR 为 95%,FPR 为 0.5%!”
她看着你,好像你长了几个额外的脑袋,在用火星语和她说话。
- Matt Warcholinkski关于如何处理新数据科学问题
的 5 个步骤。马特说,“问题应该清晰、简洁、可衡量。很多公司在定义数据问题的时候太模糊了..”。我非常喜欢读这篇文章,非常同意 Matt 在这个话题上的观点。
2.了解足够的 SQL 以通过工作面试
SQL 是现代商业的标准交换。为了能够与在任何级别上与数据进行交互的团队一起工作,您迟早会将数据放入数据库或从中取出。虽然不是每个人都在其应用程序或业务的每个方面采用关系数据库,但您很可能会在编辑器中编写超过 2-3 个完整页面的 SQL 查询。当涉及到足够的 SQL 来自信地通过第一次面试时,大多数训练营的广度都很小。
就 SQL 技能而言,您需要熟悉以下主题:
- 聚合和分组
- “有”限定词
- 基本日期时间函数
- 分割
- 窗口功能
- 子查询
- 给定一个 ERD,甚至一个简单的基于文本的模式定义,派生 SQL 连接
一些值得自学的 SQL 资源:
- SQL 课程 2 —很好的资源,但更高级——初级或中级。
- Dataflair SQL 教程——这是一个很棒的资源,有很简单的例子。除了我上面提到的其他主题之外,请逐个查看存储过程、索引、规范化和范式、约束。当您处理现实世界中的问题时,理解关系数据库系统的这些概念是很重要的。
- 克里斯·文泽尔收集了大量的视频和 SQL 资源。
3.使用“大数据”
在现实世界中,数据是肮脏的,它的格式不符合你的需要,而且数据很多。我是说很多!你的笔记本电脑装不下这么多数据。大数据不仅与工具有关,还与支持它的基础设施和服务运营有关。对于大多数科技公司来说,至少知道如何在谷歌云或 AWS 生态系统中工作是最起码的期望,但对于任何拥有依赖于现代基础设施支持的数据的真实世界应用程序的公司来说也是如此。
期望新员工至少能够使用某种形式的大数据系统来采样自己的数据进行实验是足够普遍的。如今典型的是现代数据仓库系统,如 AWS 上的 Redshift 和 Google 上的 Bigquery ,或者 Apache 的众多可用工具之一,如 Hadoop 、 Spark 或 Hive 。许多大数据系统在其数据管理生命周期中都有一个仓库组件,了解它们之间的关系非常重要。
仅在过去的两年里,世界上 90%的数据都是由计算机生成的。— 伯纳德·马尔,2018 年福布斯
如今,大数据生态系统中存在许多可变性。尽管如此,几乎所有的训练营都很少触及这个话题,以至于让人有足够的信心独立地端到端解决大数据问题。好的数据科学想法通常以可扩展的解决方案告终,而这通常需要大量的 ETL 和预先清理数据。
公*地说,设置大数据课程有很多障碍,但有大数据工作背景的教师就更少了。也许并非所有训练营的讲师或课程开发人员都是如此,但根据我对前 3-4 名数据科学训练营的评估,大数据内容缺乏深度,教授大数据的人才也缺乏。
从事教育工作,报酬比从事工业工作少得多。专注于大数据的数据科学领域高薪专业人士非常稀缺。这个原因可以解释为什么这个专业在教育界很难招到人。
关于大数据,您可以在线了解到什么
至少对于主要概念来说,这个领域并不难学,但是,学习较低层次的细节需要时间。您需要学习的大部分内容应该强化这样一个事实,即大规模基础设施和编程框架是行业实现可伸缩数据应用的方式。
下面的第一个链接是全面了解大数据世界的绝佳资源。如果你懂 Python 或者 Scala,Spark 是一个值得学习的行业标准框架。Dask 是一种新兴技术,它提供分布式数据帧,如果你熟悉 Python 的话,这对 Pandas 来说是一个很好的补充(《Pandas》的作者是 Dask 的顾问)。
- Coursera 的大数据简介提供了一套不错的产品,可以在更深层次上对最基本的概念和工具有一个很好的概述。
- 牛逼 Spark ,“牛逼 Apache Spark 包和资源的精选列表。”
- Dask 文档,一个不错的 Dask 教程集合。
大数据超出了我能够充分传达的学习方式,但我觉得这些是很好的起点。关于如何开始使用大数据,我可能会写一篇更详细的后续文章。
4.通用工程和软件开发生命周期管理
冒着听起来像一个古怪的老人的风险,我发现在一些学术界对数据科学作为工程的一个功能或者至少是它的一个分支的实践有一种真正的厌恶。一些最好的工程师是最好的数据科学家。我们在 R 和 Python 中使用的模型和绘图框架是软件。将模型部署到生产系统中,使可消费应用程序中的数据预测成为可能,这就是软件。
软件开发的实践包括协作变更控制、设计模式、渐*分析、单元测试、部署、工作流、设计。能够配置和管理您的开发环境,然后在团队中有效地使用版本控制来发布代码应该是第二天性。了解大多数公司采用的版本控制的常见分支策略是什么,以及至少它们是如何和为什么被使用的,在大多数程序中甚至都没有涉及到。
- 4 git 的分支工作流程作者 Patrick Porto
这篇文章很好地解释了所有类型的开发团队都采用的分支策略。
就模型选择和任何数据管理管道而言,应该考虑的另一个重要方面是数据和处理数据所隐含的时间和空间效率。导入 sklearn 库太容易了,而忘记了模型在效率方面的权衡,这可能会在比笔记本电脑更大的范围内区分什么是可能的,什么是不可行的。例如,理论上看起来足够简单的 K-最*邻分类器,实际上在搜索测量距离的点时有很多复杂的优化。在课堂上,您学习了邻居搜索的强力方法,即 O[DN ] (D = dimension),但不理解为什么可以设置超参数来允许更像o[dnlog(n)】的替代搜索方法,但也知道为什么随着维度和数据的增加它们会更好。你不会知道为什么O(N)<O(log(N)】<O(N)是的,如果你想评估你的模型和管道的权衡和能力,这很重要。
上面提到的 O 指的是大 O 记数法。Youtube 上关于这个话题的一个很棒的简短介绍,来自 William Fiset :
- Big-O 简介
虽然在实践中精通编程效率需要几个月的时间,但是如果你足够自律,你仍然可以参加一些关于这个主题的课程或者自学。我最喜欢的关于编程效率的系列之一来自麻省理工学院的埃里克·格里姆森教授。Eric 关于这个主题的讲座很吸引人,也很容易观看。
我特别推荐这些讲座:
- #10。理解编程效率,第 1 部分
- #11。理解编程效率,第 2 部分
- #12。搜索和分类
5.ETL 和工作流自动化工具集
The data warehouse is the workhorse of most analytics and analysis projects. Knowing how to get your data, how to communicate within the construct of the data warehouse is an important skill to have.
在现实世界中,建模通常是拼图中简单但重要的一块。令人惊讶的是,花在项目上的大部分时间都不是用于训练模型。如前所述,数据是脏的,但它也不是您期望的形式,也不是您项目所需的新鲜程度。有点类似于一般工程,但是提取、转换和加载数据的过程是您在一定规模上花费大量时间的地方。
设计将数据格式化到一个一致性水*的过程,进而可以被建模,需要时间和思考。ETL 可能需要(但不限于)连接数据库表、合并不同格式的数据、聚合、特性工程,或者简单地为实验抽取适量的数据。当然,您可以用自己选择的语言(Python)来完成其中的大部分工作,但是考虑到 ETL 框架和工作流管理工具方面现成的选项太多,设计数据集成管道最好用专门构建的库和服务来完成。
您可能会熟悉一些在行业中使用的流行工具集,包括:
- 阿帕奇气流
- 阿帕奇 Spark
- 阿帕奇卡夫卡
- 阿帕奇尼菲
- Pentaho 水壶
- 达斯克
- 熊猫
- 路易吉
为了更好地了解现有的 ETL 工具,请查看 Github 上的这个方便的 repo:超棒的 ETL 。
你能做些什么来弥补知识差距
幸运的是,我们生活在一个有很多学习资源的时代。许多学校也意识到自己的不足,并提供额外的课程,如高级 SQL,甚至数据工程研讨会,所以如果你发现自己在众多数据科学训练营中的一个,请在之前和之后利用这些课程。Youtube 也非常适合学习如何建立任何大数据。如果你住在世界上的任何一个大都市,聚会提供了直接向业内名人学习的机会。通过帮助文档,主动提出参与一个开源项目,并利用这个机会向更有经验的贡献者寻求帮助。学习的方式比过去任何时候都多。别等了。
直到今天,我发现我对数据工作了解得越多,我就越觉得追求这一职业道路是正确的决定,因为这涉及到跨领域的不断学习。任何拥有正确心态的人都可以在数据科学领域就业。如果你的目标是成为一名数据科学家或相关角色,不要等待机会来找你。积极主动。不要害怕失败或展示你的局限性。当你从新的机会接触新的知识时,学习是“几乎”和“不完全”的结果。要谦虚。求助。帮助他人。别等了。
关于自然语言处理(NLP)的数据预处理和语言注释,您需要了解什么
原文:https://towardsdatascience.com/what-you-need-to-know-about-data-preprocessing-and-linguistic-annotations-for-natural-language-439d42f2f355?source=collection_archive---------23-----------------------
快速浏览自然语言处理数据预处理
读者注意:Python 代码在 GitHub 中共享
PC: Brett Jordan from Upsplash
机器学习的进步导致了自然语言处理(NLP) 的显著进步,这是一个赋予计算机理解人类语言能力的人工智能领域。自然语言是指人们说的和写的语言,NLP 使用算法从单词和句子中提取信息。NLP 扩展到自然语言生成(NLG),像人类一样表达短语的能力,以及自然语言理解(NLU),建立对短语理解的能力。通过使用机器学习算法来训练数千年的现有文献,我们能够比手动编程更有效地开发模式和规则。此外,机器学习对于人类语言应用特别有用,因为表达(书面或口头)并不总是遵循逻辑和一致的规则。
Machine Learning is used through out the different stages of the NLP pipeline
在本文中,我们将回顾 NLP 项目中数据争论过程中经常发生的一些步骤。目标是阐明文本数据是如何被计算机处理的,这样你就知道它们如何能够并将继续在数字世界中被使用。有许多开源库使得 NLP 非常容易实现,比如 NLTK、Genism、spaCy 等。我们将举例说明空间的使用,并提供一些熟悉。
让我们来看看这篇关于海洋清洁的文章的样本:
sample_text='A huge trash-collecting system designed to clean up plastic floating in the Pacific Ocean is finally picking up plastic, its inventor announced Wednesday.\'
1.将文本转换成小写的有助于减少文本数据的词汇大小。类似地,将重音符号如 café转换为 café,扩展收缩如 won't to will not,以及拼写检查也可以根据您的项目进行考虑
import unidecode
sample_text=sample_text.lower()
sample_text=unidecode.unidecode(sample_text)
2.如果数字和标点符号与分析无关,则将其删除
import re, string
sample_text=re.sub(r'\d+', '', sample_text)
sample_text=sample_text.translate(str.maketrans('', '', string.punctuation))
3.移除空格
sample_text=sample_text.strip()
4.分词是将连续文本分割成句子和单词的过程。虽然在像英语这样的语言中用空格分隔单词看起来很简单,但有时空格上的拆分可能会破坏应该被视为一个标记的内容,例如某些名称和带连字符的单词。还有一个选项是将标点符号视为单独的标记,因为标点符号也可以有意义,例如问号(?)和感叹号(!)
import spacy
nlp=spacy.load('en_core_web_sm')
doc=nlp(sample_text)
[token for token in doc]
- 注意了。load()函数用于加载用于预测语言特征的模型
5.去除停用词是去除诸如代词和介词之类的常用词的过程,因为它们广泛而频繁,因此不提供关于相应文本的太多信息。这通常通过在预定义的关键字列表中执行查找来完成,从而释放数据库空间并改善处理时间。在某些情况下,停用词列表可以定制为添加(对于“稀疏”术语)或删除
[token for token in tokens if not token.is_stop]
6.词干和词汇化是两种不同的方法,用于规范化文本数据并使单词相互匹配,即使它们不在相同的时态或形式下。一方面,词干化通过字符串操作去除单词开头(前缀)和结尾(后缀)的词缀。另一方面,词汇化通常通过查找单词的字典形式(称为词汇)来完成,并且可以进一步考虑词类以及单词的上下文。选择使用哪种方法将取决于速度和意图。词汇化需要更多的资源,可能不适合所有的 NLP 任务
[token.lemma_ for token in filtered_tokens]
7.词性( POS )标注是确定每个单词在句子中的作用的过程,这有助于我们理解文章在谈论什么。获取词性是通过一个预测模型来实现的,该模型已经通过足够数量的句子进行了训练,这些句子已经标记了每个单词的词性。我们通过将单词(作为输入)及其周围的单词传递给预测模型来获得单词的词性
[token.pos_ for token in filtered_tokens]
8.命名实体识别(NER) 指将文本中发现的命名实体分类到预定义的类别中,例如,人、日期、事件、地点、组织等。名词组块对于确定文本中的主语和宾语也很重要。使用统计模型比明确定义它们更有效
[(entity, entity.label_) for entity in doc.ents]
[noun.text for noun in doc.noun_chunks]
9.依存解析是给每个单词分配句法依存标签的过程。目标是为句子中的每个单词确定一个父单词,并预测父单词和单词之间的关系类型,如主语、定语、修饰语等。
[(token, token.dep_) for token in filtered_tokens]
spacy.displacy.render(list(doc.sents)[0], style**=**'dep')
Visualizing dependencies
Table of the preprocessed data
您还可以从文本中提取其他属性,比如共指消解和搭配提取。当构建特定应用程序的领域词汇表时,这些变得非常重要,因为上下文关系重大,例如医疗记录、系统日志、财务计划书等。这里有一个表格,包含了我们目前为止为第一句话中的每个单词定义的所有属性。
我们已经介绍了 NLP 项目的数据预处理步骤,下一步可能是对数据进行矢量化,以获得数字表示,然后是模型消费的特征提取。直到下一次…
Typical pipeline for an NLP project
你需要了解网飞的“朱庇特黑仔”:冰穴📖
原文:https://towardsdatascience.com/what-you-need-to-know-about-netflixs-jupyter-killer-polynote-dbe7106145f5?source=collection_archive---------1-----------------------
是时候让 Jupyter 笔记本有个有价值的竞争对手了
T 今天,网飞向公众开源了他们开发的内部笔记本 Polynote 。如今,大型科技公司开源他们的内部工具或服务,然后流行起来并被业界采用的情况并不少见。亚马逊 AWS,脸书的 React.js 等是其中的两个。有道理。这些大型科技公司拥有业内最优秀的工程师,他们通常面临着推动伟大工具开发的最大挑战。网飞的 Polynote 可能是这些伟大工具中的另一个,数据科学/机器学习行业在如何编写代码、实验算法和可视化数据方面确实需要更好的工具。关于这个新工具,您需要了解以下几点。我会尽量简明扼要,以便您可以快速通读,并了解我们开发/研究环境这一新选择的利弊。
Polynote 更像是 IDE 的简单版本,而不是 REPL 的更好版本
auto-completion, error indication, better text editor, LaTex support
Polynote 强调让笔记本工作起来更像 IDE 或者代码编辑器,比如 VS Code。它支持更好的自动完成、林挺、富文本编辑器和 LaTex。这可能有点言过其实,但这就是它的发展方向。你可以说更好的语法高亮和更好的自动完成是微不足道的,但是这些生活质量的小改进可以走很长的路,让你更专注于真正的任务。顺便说一句,大多数编辑功能由 Monaco 编辑器提供,该编辑器增强了 Visual Studio 代码的体验,显示出甚至更好的潜力。
多语言支持
目前,它只支持 Python、Scala 和 SQL。你可能会说 Jupyter Notebook 也支持 Python、R 和 Julia。但是他们如何支持多语言是不同的。对于 Jupyter 笔记本,您只能为一个笔记本选择一种语言。而 Polynote 可以在一个笔记本中无缝地支持所有这些语言。它通过在细胞间共享变量来实现这一点,因此不同的语言细胞可以在相同的环境下工作。不用说,这有可能非常强大。随着它支持更多的语言,一个熟练的数据科学家可以使用最好的语言来完成正确的任务。它增加了技能上限,同时也提高了性能标准。
数据可视化和数据感知
在 Polynote 中,数据可视化是内置的。这意味着开发人员不需要编写任何代码来可视化他们的数据,他们只需使用 GUI 界面,并以他们想要的方式查看数据。此外,开发人员不需要输入任何代码来查看变量的值,您可以只使用 GUI。当代码运行时,在屏幕的右侧还有一个进度窗口,所以你总是知道代码的哪一部分正在运行。
这些都将增加更好的数据直觉。
内置配置和依赖关系管理
又一次生活质量的提高。一去不复返的日子,你必须运行的事情,如:
! pip install packages
您可以简单地指定您的代码需要哪些依赖项才能顺利运行,Polynote 会为您设置好。这将减少代码中的混乱。那有多好!
可复制代码
简单地说,Polynote 没有使用传统的 REPL 模型来执行代码。它使用自己的代码解释器。最大的区别是:对于使用 REPL 的 Jupyter 笔记本,你可以安全地执行不按顺序书写的单元格。您可以执行单元格 3,然后单元格 2,然后单元格 1。一切都取决于你。这带来了灵活性,但降低了笔记本的可共享性。Polynote 以不同的方式处理单元执行:
通过跟踪每个单元格中定义的变量,Polynote 根据在它上面运行的单元格来构造给定单元格的输入状态。使单元格的位置在其执行语义中变得重要,这加强了最小惊奇原则,允许用户从上到下阅读笔记本。
看起来更像是你在写剧本而不是笔记本。当你写的时候,你会更加注意确保事情井然有序。但是您可以获得一致的代码结果和更好的共享性。请参见下面的动画:
结论
我们将会看到行业将会如何采用 Polynote,但毫无疑问,它显示出了潜力,并做出了一些合理的决定。一个问题是,像 GCP、AWS 或 Azure 这样的大型云*台是否会采用它。这一点非常重要,因为如果没有这些云*台的支持,依靠它们进行研究/实验的人们将无法访问 Polynote,因此也不会使用它。
觉得这篇文章有用?在 Medium 上关注我(李立伟)或者你可以在 Twitter @lymenlee 或者我的博客网站wayofnumbers.com上找到我。你也可以看看我下面最受欢迎的文章!
[## “这是 CS50”:开始数据科学教育的愉快方式
为什么 CS50 特别适合巩固你的软件工程基础
towardsdatascience.com](/this-is-cs50-a-pleasant-way-to-kick-off-your-data-science-education-d6075a6e761a) [## 一枚硬币的两面:杰瑞米·霍华德的 fast.ai vs 吴恩达的 deeplearning.ai
如何不通过同时参加 fast.ai 和 deeplearning.ai 课程来“过度适应”你的人工智能学习
towardsdatascience.com](/two-sides-of-the-same-coin-fast-ai-vs-deeplearning-ai-b67e9ec32133) [## 我完成了吴恩达的机器学习课程,感觉棒极了!
好的,坏的,美丽的
medium.com](https://medium.com/datadriveninvestor/thoughts-on-andrew-ngs-machine-learning-course-7724df76320f)
在雇用数据科学家之前,您应该知道什么
原文:https://towardsdatascience.com/what-you-should-know-before-you-hire-a-data-scientist-45d638a13cea?source=collection_archive---------25-----------------------
Photo by Markus Spiske temporausch.com from Pexels
你的 CEO 给你转发了一封来自流行的管理时事通讯的邮件。主题包含两个字母 A.I .你马上坐在座位上。
每个人都称赞人工智能和数据科学家是你们公司的救星。在你出去雇佣你的第一个数据科学家来运行你的人工智能项目之前,有一些事情你应该知道。
让我们后退一步。AI 到底是什么?人工智能是机器或计算机对人类智能的模拟。它是机器学习和数据科学的同义词,然而人工智能是当前的热门词汇。这些文章描述了机器人做人工任务,而实际上,它们是处理大量数据以做出自动决策的算法。
Google Search Trend: Artificial Intelligence News Articles
每个人都在谈论人工智能如何彻底改变你的公司,并声称人工智能是银弹。首席执行官们要求技术团队部署人工智能以增加销售额。首席财务官希望他们能够自动化手动任务。首席技术官希望使用最新的神经网络或深度学习。所以我们不能继续雇佣一个数据科学家吗?
缺失的基础
Photo by Francesco Ungaro from Pexels
大多数公司可能认为他们已经为人工智能做好了准备,但他们的数据将讲述一个不同的故事。机器学习需要大量干净的历史数据。在你雇佣数据科学家之前,建立一个数据仓库或者数据湖是有意义的。这意味着他们没有四处搜寻数据。拥有一套 KPI 也是有意义的——否则,将很难衡量你的 AI 项目的影响。
数据科学家是缺失的一环
如果你的数据放在一个好的地方,你认为数据科学家是你的拼图中缺少的一块也是情有可原的。虽然科学家是人工智能旅程中的关键角色,但如果没有利益相关者的支持,他或她的才能将被浪费。
最成功的人工智能项目都是从一个业务或客户问题中诞生的。数据科学家的角色是用数据科学和机器学习来缓解和解决这些问题。
然而,通常情况下,数据科学家可以做的不仅仅是解决你知道的问题——他们可以找到你甚至没有意识到的问题的解决方案。
创建积压
Photo by Startup Stock Photos from Pexels
撇开工作角色不谈,对于数据科学家来说,没有什么比工作无聊更令人沮丧的了。数据科学积压对于确保您的科学家有足够的工作要做非常重要。它允许你回顾和优先考虑什么是重要的。这将确定什么将推动最大的投资回报。
特征工程
Photo by rawpixel.com from Pexels
特征工程可能是数据科学中比较耗时的部分之一。不要陷入一个思维陷阱,认为一个数据科学家会立即开始构建算法。他们需要花时间询问和探索数据,以了解如何将数据输入正确的算法。这将帮助他们找到合适的要素来训练模型,他们甚至可以在数据集中构建新的要素。
再训练
Photo by Lukas from Pexels
一旦模型构建、测试并发布到生产环境,项目就不会结束。这种模型需要持续的护理和关注。随着更多数据的产生和流程的改变,它将需要重新培训、调整,有时甚至需要重建。数据科学家正在进行一场长期的游戏。
各种规模的公司都开始雇佣数据科学家或与代理机构合作来构建他们的第一个模型。在冲进去之前,
- 看看你的数据
- 让你的公司参与进来
- 创建积压
- 不要忘记考虑工程时间
- 最后——一旦你雇佣了一个——他们就永远在那里。
什么是 NLP & NLP 科学家做什么?
原文:https://towardsdatascience.com/whatnlpscientistsdo-905aa987c5c0?source=collection_archive---------4-----------------------
我最*开始在一家公司做 NLP 开发人员。很明显,我很高兴又能找到有收入的工作了。
但是自从我开始工作以来,我注意到的一件事是,包括我父亲在内的很多人都问过我,“什么是 NLP,你具体是做什么的?”
通常,我会让他们看看我的博客,但是我意识到我以前从来没有写过这个。我写过一些关于特定数据科学和机器学习概念的文章,但我从未亲自定义这个职业和行业对我意味着什么。所以让我们现在就纠正这一点。
自然语言处理(NLP)是人工智能的一个领域,它赋予机器阅读、理解和从人类语言中获取意义的能力。
什么是 NLP?
首先声明——我绝不是 NLP 专家。虽然我有相当多的统计和定量研究经验,但我认为自己在这个领域还是个新手。
让我们从全世界认为 NLP 是什么开始:
自然语言处理是用来帮助计算机理解人类自然语言的技术。教机器理解人类如何交流不是一件容易的事。
*年来,在让计算机像我们一样理解语言方面已经取得了重大突破。
事实上,使用自然语言处理的典型人机交互可以如下进行:
1.一个人对机器说话
2.机器捕捉音频
3.发生音频到文本的转换
4.文本数据的处理
5.发生数据到音频的转换
6.机器通过播放音频文件来回应人类
NLP 是用来做什么的?
自然语言处理是以下常见应用背后的驱动力:
- 语言翻译应用程序,如谷歌翻译。
- 诸如 Microsoft word Grammarly 之类的字处理器使用 NLP 来检查文本的语法准确性。
- 在呼叫中心使用的交互式语音应答(IVR)应用程序,用于响应某些用户的请求。
- 个人助理应用程序,如 OK Google。Hay siri、Cortana `和 Alexa。
帮助这个人赚更多的本杰明
因此,取决于你对资本主义社会的看法,你可能会也可能不会乐于听到 NLP 科学家都在推动增长或优化底线(利润)。
我的意思是,除非你是一名教师或消防员或社会工作者,那么你的角色很可能就是帮助你的老板赚更多的本杰明。不过我要说的是,在我看来,优秀的 NLP 科学家*均来说比其他许多工作职能更能影响他们工作的公司。让我解释一下为什么(也解释一下 NLP 科学家是做什么的)。
一个 NLP 科学家到底在做什么?
句法分析和语义分析是用来完成自然语言处理任务的主要技术。
以下是对它们使用方法的描述。
1.句法
句法是指句子中单词的排列,使它们符合语法意义。
在 NLP 中,句法分析用于评估自然语言如何与语法规则一致。
计算机算法被用来将语法规则应用于一组单词,并从中推导出含义。
以下是一些可以使用的语法技巧:
- 单词包:是一个常用的模型,可以让你统计一段文字中的所有单词。
文字像无尽的雨水一样流淌到纸杯里,
它们滑过,滑过宇宙
现在让我们数数单词:
这种方法可能反映了几个缺点,如缺乏语义和上下文,以及阻止单词(如“the”或“a”)的事实给分析增加了噪声,并且一些单词没有相应地加权(“universe”的权重小于单词“them”)。
- :把一个词的各种屈折形式简化成一种形式,以便于分析。
词汇化将单词解析为它们的字典形式(称为词汇),为此它需要详细的字典,在这些字典中,算法可以查看单词并将单词链接到它们相应的词汇。
比如“跑”、“跑”、“跑”这些词都是“跑”这些词的形式,所以“跑”是前面所有词的引理。
- 形态学 切分:它涉及到把词分成叫做语素的个体单位。
- ****分词:把一大段连续的文本分成不同的单元。
- 词性标注:它包括识别每个单词的词性。
- ****解析:它包括对提供的句子进行语法分析。
- ****断句:它涉及到在一大段文本上放置句子边界。
- 词干化:它包括将词形变化的单词切割成它们的词根形式。
附在单词开头的词缀称为前缀(如单词“astrobiology”中的“astro”),附在单词末尾的词缀称为后缀(如单词“helpful”中的“ful”)。
问题是词缀可以创造或扩展同一个词的新形式(称为屈折词缀),甚至可以自己创造新词(称为派生词缀)。在英语中,前缀总是派生的(词缀创造了一个新词,如单词“生态系统”中的前缀“生态”),但后缀可以是派生的(词缀创造了一个新词,如单词“吉他手”中的后缀“ist”)或屈折的(词缀创造了一个新的单词形式,如单词“faster”中的后缀“er”)。
好的,那么我们如何区分这两者的不同并切掉正确的部分呢?
- 求解复杂方程:数学是 NLP 任务的支柱。在完成所有的数据处理任务后,科学家坐在一起,解决复杂的方程,并调整特定任务的参数。
你能想象 NLP 科学家设计一个语言模型要确定多少参数吗?
2.语义学
语义是指文本所传达的意义。语义分析是自然语言处理中尚未完全解决的难点之一。
它包括应用计算机算法来理解单词的含义和解释以及句子的结构。
以下是语义分析的一些技巧:
- 命名实体识别(NER): 它涉及确定文本中可以被识别和归类到预设组中的部分。这种组的例子包括人名和地名。
- 词义消歧:它涉及到根据上下文给单词赋予意义。
- ****自然语言生成:它涉及使用数据库来推导语义意图,并将其转换为人类语言。
为什么 NLP 很难?
自然语言处理被认为是计算机科学中的一个难题。正是人类语言的本性使得自然语言处理变得困难。
使用自然语言规定信息传递的规则对计算机来说不容易理解。
这些规则中的一些可以是高级的和抽象的;例如,当有人用讽刺的话来传递信息时。
另一方面,这些规则中的一些可以是低级的;例如,使用字符“s”来表示多个项目。
全面理解人类语言需要理解单词和概念如何连接来传递预期的信息。
虽然人类可以很容易地掌握一门语言,但自然语言的模糊性和不精确性使得机器很难实现 NLP。
使用自然语言处理需要大量的处理能力来解决大量复杂的方程。GPT-2 8B 是有史以来最大的基于变压器的语言模型,是 BERT 的 24 倍,是 GPT-2 的 5.6 倍。
Guss 在你的 940mx GPU 上完成火车需要多少天?大约 5 年,在 MacBook 中训练一个像这样的大模型怎么样?但愿超过 100 年。
自然语言处理是如何工作的?
NLP 需要应用算法来识别和提取自然语言规则,以便将非结构化语言数据转换成计算机可以理解的形式。
当提供文本后,计算机将利用算法提取与每个句子相关的含义,并从中收集必要的数据。
有时,计算机可能不能很好地理解句子的意思,导致模糊的结果。
例如,在 20 世纪 50 年代,在英语和俄语之间翻译一些单词时发生了一个幽默事件。
以下是需要翻译的圣经句子:
心有余而力不足。
下面是这个句子被翻译成俄语,又被翻译回英语的结果:
“这roo-Afza不错,但是肉已经烂了。”**
未来是什么样子的?
目前,NLP 正在努力检测语言意义的细微差别,无论是由于缺乏上下文,拼写错误还是方言差异。
2016 年 3 月,微软推出了人工智能聊天机器人 Tay ,作为 NLP 实验在 Twitter 上发布。这个想法是,随着越来越多的用户与 Tay 对话,它会变得越来越聪明。结果是,16 个小时后,Tay 因其种族主义和辱骂性的评论而被删除:
****
微软从自己的经验中吸取了教训,几个月后发布了第二代英语聊天机器人 Zo ,它不会犯与上一代相同的错误。Zo 使用一系列创新方法来识别和产生对话,其他公司正在探索能够记住特定个人对话细节的机器人。
尽管 NLP 的未来看起来极具挑战性并且充满威胁,但该学科正在以非常快的速度发展(可能是前所未有的),并且我们很可能在未来几年内达到一定的发展水*,这将使复杂的应用成为可能。
这个帖子的灵感来自一些很棒的帖子,比如:
** [## 自然语言处理(NLP)指南
机器如何处理和理解人类语言
towardsdatascience.com](/your-guide-to-natural-language-processing-nlp-48ea2511f6e1) [## 数据科学家是做什么的?
试图阐明一个模糊的领域和职业
towardsdatascience.com](/what-do-data-scientists-do-13526f678129) [## 自然语言处理的简单介绍
自然语言处理是用来帮助计算机理解人类自然语言的技术。
becominghuman.ai](https://becominghuman.ai/a-simple-introduction-to-natural-language-processing-ea66a1747b32)**
名人堂四分卫值多少钱?
原文:https://towardsdatascience.com/whats-a-hall-of-fame-quarterback-worth-85e123a448bf?source=collection_archive---------7-----------------------
使用带或不带分析的来量化名人堂口径 QB 的真实场上价值
几乎由所有 账目来看,匹兹堡钢人队度过了一个可怕的、不好的、非常糟糕的休赛期。他们被迫交易安东尼奥·布朗——有史以来最伟大的外接球员之一——并且不得不袖手旁观,看着 Le ' veon Bell——一代天才——在一年的合同纠纷中成为局外人后成为自由球员。在球的进攻端损失了大量的产量。或者,换句话说,匹兹堡钢人队有麻烦了。
但是事情没有这么简单。让事情变得复杂的是,布朗和贝尔都有幸与名人堂四分卫 Ben Roethlisberger 一起打球,正如对足球的分析所显示的那样,QB 比任何其他位置都更有价值。那么,谁对所有这些华而不实的统计数据负责呢?更重要的是,这对布朗和贝尔来说意味着什么,他们明年都将和更糟糕的四分卫一起打球。
似乎相当违反直觉的是,我们不能通过检查特定的传球手来回答这些问题——相反,我们必须检查四分卫,特别是类似于 Roethlisberger 和的四分卫,那些更类似于 Brown 和 Bell 的新 QBs 的四分卫。最终,如果我们想将我们得出的任何结论推广到不仅仅是上述三个参与者,我们将最初的问题转换成这个推广的分析问题:用 HOF QB 替换非 HOF QB 的孤立影响是什么?通过正确提问这个问题,我们可以
- 确定进攻生产的更重要的驱动因素(四分卫与传球接球手)
- 量化名人堂 QB 的价值
- 为加入或离开名人堂四分卫球队的传球手创造一个期望
为了回答上面的问题,我再次求助于NFL scraper包来收集 2009 年至 2018 年的逐场比赛数据(你可以在这里找到这一分析的所有代码)。
一旦我清理并准备好数据,我就开始分析。虽然我们最初的问题似乎很容易回答——选择我感兴趣的 KPI,并检查这些 HOF QB 与那些非 HOF QB 的水*——但这将是错误的方法。通过这种方式来衡量产量,我们实际上不是在衡量 QB,而是 QB 的团队。这是所有体育分析的基本问题之一,可以说在足球中也是如此:体育是动态系统,因此会受到 纠缠 。换句话说,衡量四分卫的表现只是衡量外接球手表现和进攻线表现和对方防守表现的另一种方式,反之亦然。
这在量化事物的时候显然是个问题。对于爱国者的粉丝来说,是爱国者让汤姆·布拉迪变得优秀,还是汤姆·布拉迪让爱国者变得优秀(无论哪种方式,爱国者都是优秀的!)但当我们试图确定每一块馅饼的价值时,这很重要,这样我们就可以更好地决定如何支付球员,是否交易球员,以及我们应该如何谈论游戏本身。那么,我们如何才能解开这些纠结呢?我们怎么知道是安东尼奥·布朗还是本·罗特利斯伯格推动了钢人队的进攻?当我们把一个名人堂的 QB 换成一个…正常人的时候,我们怎么知道会发生什么?
有无分析
嗯,简单的回答是我们不能,至少不是真的不能。这个游戏太复杂了,有太多移动的部分,我们不能在联盟的范围内自由地运行一个实际的实验。但是我们可以用一个相对简单的分析方法来*似地分解传递者和接受者:有无(沃沃)分析。
那么什么是沃沃呢?这个名字相当具有描述性——在最基本的层面上,我们将检查本·罗斯利伯格(和我们其他霍夫 QB)扔给安东尼奥·布朗(或勒维恩·贝尔,或任何其他 WR / RB)的每一场比赛,以及每次别人扔给 AB 或贝尔或罗斯利伯格也扔给的任何其他 WR(即带罗斯利伯格对不带罗斯利伯格)。我们将对每个 WR-QB 组合重复这一过程,特别注意我们的 HOF QBs,从那里,我们可以开始概括名人堂对接收机性能的影响,因为我们在理论上控制了所有其他变量(最后这一部分不是很准确,事实上,我们做了很多假设,其中一些可能有缺陷,我会在我们进行的过程中指出)。
我的第一步是找到一组我认为合理地反映了“名人堂”级别的球员。考虑到这一点,我将 2009 年至 2018 年的所有过往剧目分离出来,用于以下 QB(尽管对我的选择吹毛求疵,但这是我们要做的):
- 本·罗特利斯伯格
- 汤姆·布拉迪
- 佩顿·曼宁
- 埃利·曼宁
- 亚伦·罗杰斯
- 菲利普·里弗斯
- 马特·莱恩
- 德鲁·布里斯
- 托尼·罗莫
- 拉塞尔·威尔逊
至少有七名入选名人堂,而罗莫、瑞安和威尔森要么有不错的投篮,要么在某种程度上被认为是精英。
当我们检查我们选择的 KPI 时,这些选择被证明是正确的:期望点增加,或者 EPA(参见链接以获得详细的解释——在这个分析中我使用了 Ron Yurko 的 EPA 模型版本)。在同一时间段内,我选择的名人堂成员*均每次尝试的 EPA 比非 HOF QBs 多 188%(就上下文而言,总体*均值为 0.14 EPA)。
所以我们已经确定名人堂成员比非 HOF 成员产生更多的 EPA,但是这并没有真正告诉我们 QB 的质量与团队的质量。例如,环境保护局名人堂 QBs 的水*甚至可以用总体环境保护局的更大趋势来解释。让我们检查一下。
好吧,所以随着时间的推移,这种趋势实际上有利于非 HOF,但直觉上这是有道理的——我们只能根据他们过去的表现来确定名人堂成员,这固有地意味着我们的样本有点年龄偏见。事实上,在我们的研究中,有两个被选中的 QB 在经历了至少一年的受伤后退休了。因此,HOF 性能的轻微下降并不令人惊讶,而非 HOF 性能的增长虽然很大,但相比之下仍然相形见绌。
也许我们的名人堂成员更高的 EPA 可以更多地通过他们如何玩游戏来解释——这可能是 HOF 或非 HOF 团体更繁荣或萧条,这可能人为地帮助或伤害 EPA(取决于你对该策略的看法)而不是更一致的方法。通过检查两组的密度图,我们可以很快看出这是否属实。
左边的图显示分布在形状上相当相似,这告诉我们总体风格不太可能有那么大的不同,但您会注意到黑线左边的峰值(零 EPA)对于红色组来说更高,而零右边的 EPA“架子”对于蓝色组来说稍高一些——我们的名人堂成员只是一直比他们的同行产生更高的 EPA。
最后,在我们开始全面分析之前,我想仔细检查一下我的选择——虽然总体上很强——在个人层面上也有意义(不要表现得好像你不好奇根据我们选择的 KPI,谁是我最好的 QB)。
所以这些人都很可靠。嘿,即使是伊莱,他的身价也是普通非霍弗人的*两倍(加上两次超级碗 MVP 几乎保证了名人堂的破灭)。
既然我们已经确定了我们的样本组是相当合理的,那么是时候开始我们的沃沃分析了,以分离出 HOF QB 在传球比赛中的预期影响。
第一步是分离出与我选择的名人堂成员之一和至少一个其他 QB 一起打球的合理 WRs。我做了一个任意的决定,将样本限制在被两个 QB 投掷了至少 20 次的接收器上,其中一个是在我们的 HOF 班。这使得我们每一次传球都要投给这个数量的接球手。
这里需要注意的一点是 QBs 和接收器之间有重叠。例如,布兰登·库克与布雷迪和布雷斯一起打球,伊曼纽尔·桑德斯与罗特利斯伯格和培顿·曼宁一起打球,以及数据集中的其他人。并且许多接收机使用多个非 HOF QBs。当我们将数据集扩展到这些接收器中的每一个时,我们剩下 44,013 次尝试,以及一些复制。例如,我们必须分析库克的接待四次:一次是“没有布雷迪”,一次是“没有布雷迪”,另外两次是“有”。
在我们开始对 HOF QBs 的影响建模之前,让我们先检查一下当我们的样本中的某个人和其他人接到传球时,接收者的*均 EPA。这些简单的结果非常有趣。
伊莱…汪汪。也许这家伙根本就不该出现在名人堂里!当接受者被伊莱瞄准时,他们的*均效率降低了 17%,与他们一起玩的其他 QB 相比。但是在曼宁之外,当与 HOF QB 一起玩时,接收者*均每个目标多 18%到 213%的 EPA,而不是与其他人一起玩——不算太差。
我在这些结果中注意到的一件事是,带有的和不带的都倾向于偏高——除了马特·莱恩和伊莱的带有接收器的都高于整个研究范围的*均 EPA。
这可能意味着一些不同的事情——最明显的是,玩 HOF 的接收者往往是伟大的,因此 HOF QB 的因果关系是接收者,而不是 QB。无 EPA 的均值高于总体 EPA 均值,表明这种解释并非没有价值。这可能是真的!但最终,我发现有足够的证据表明,在没有名人堂成员的情况下打球,总的来说,四分卫的得分会比接球手多。如果我们真的想弄清“信用”问题的真相,我们可以尝试通过运行——你猜对了——另一个方向的沃沃分析来回答前一个问题,并检查有和没有特定接收者的 QB。但那是为了另一个分析…
在这两种情况下,重要的不是观察的生产水*,而是观察生产的相对差异,不管接收器的质量如何,毫无疑问,当使用 HOF 口径 QB 时,他们的生产效率更高。这让我们进入了沃沃分析的最后一步——创建一个统计模型来量化和概括用名人堂成员取代普通 QB 的相对影响。
为了做到这一点,让我们使用一个简单的线性回归和一个独立变量:一个指示传球是否是由一个 HOF QB 抛出的指标。现在,请注意,这是一个非常简单的模型,它忽略了大量的潜在变量:接收者的年龄,QB 的年龄,防守,赛季,周,天气…我可以继续下去,但这不是重点。一些更聪明的读者(和统计学家)可能已经根据早期的图表得出了这个模型的结果,但对于其他人来说,这就是你要做的。
注意到点估计的位置了吗(线中间的点)?它们是之前柱形图中显示的精确*均值!因为线性回归是对我们的指标变量的均值效应进行建模,这与仅仅取简单*均值没有什么不同。但它确实给了我们两个重要的证据:(1)效应的显著性(p ~0)和(2)我们均值估计的置信区间(圆点周围的垂直线代表我们真实均值效应所在的 95%置信区间)。然后,我们可以将点估计值转换为相对比例,从而得出我们的沃沃结论:数据表明,在其他条件相同的情况下,HOF QBs 每次尝试产生的 EPA 比非 HOF QBs 高 92%。
这是一个相当明显的结论,也是一个看起来相当重要的结论……但是如果 HOF QBs 的价值几乎是非 HOF QBs 的两倍,为什么那么多明确的非 HOF QBs 像我们的样本组一样被支付?有一大堆原因可以解释为什么这个可能是的情况,我就不多说了,但是也许我们的相对估计在实际领域并没有那么有影响力。毕竟,在相对较低的 EPA 上提高 92%的效率看起来似乎很多,但我们仍然在谈论相当小的数字,至少是每次尝试。记住这一点,让我们将沃沃的结果转化为一个真正重要的 KPI:胜利。
通过 EPA 和获胜概率
将我们的相对数字转换成成功是相当简单的——我们只需要找出通过 EPA 是如何预测成功的。首先,我收集了 2009 年至 2018 年的所有游戏结果。然后,我必须决定用什么变量来构建我的获胜概率模型。由于我们一直专注于通过 EPA,从逻辑上讲,我们将此作为我们感兴趣的主要变量是有意义的——但我们一直从 EPA per attempt 开始工作,这是一个比率统计。虽然速率统计对于比较效率很有用;数量或计数统计对于预测一个队获胜的可能性也是极其重要的。
举个例子,假设我们有两个队在比赛:A 队和B 队。A 队每 5 分钟控球时间得一分,而B 队*均每 15 分钟控球时间得一分。如果我们假设两个团队都模仿他们的*均水*,你会正确地得出结论:团队 A 是一个更有效的得分团队。但是如果 A 队只控球 10 分钟,而 B 队控球 50 分钟,那么 B 队有望以 23 比 14 获胜。当游戏由统计数据(在这种情况下是点数)决定时,数量和效率都很重要。
因此,考虑到这一点,我决定计算每场比赛中每支球队的总及格分数,并以此作为我们获胜概率模型的基础。
一旦我计算了每个团队的总通过 EPA,并考虑了他们是否赢得了比赛,我就拟合了一个简单的 logit 模型,仅使用这两个变量来了解通过生产对胜利可能性的影响。随着模型的拟合,我可以应用 92%的总通过 EPA 的增加来模拟用 HOF QB 替换非 HOF QB 在获胜概率方面应该做的事情。
结果是惊人的。
所以*均来说,QBs 从传球游戏中产生了大约 4.8 个总期望分,这应该大致能赢 50%的时间。这是有意义的,因为根据定义,*均 QB 应该正好在中间。如果我们将 92%的提升应用于 QB 表现相同的所有其他情况,我们应该期望从过去的比赛中获得大约 9.3 分,这应该使团队在大约 62%的时间里获胜——高出 12%,或者相对增加 24%的获胜概率。这表明,用名人堂 QB 取代一个普通球队的*均 QB,在一个 16 场比赛的赛季中应该值大约 1.92 场胜利(. 62 * 16 - .5 * 16)。由于*均每支球队有望赢得 8 场比赛,这使得预期的记录达到 10-6 场。
SOURCE: FiveThirtyEight
这是不容忽视的——根据 FiveThirtyEight 的数据,8-8 支球队只有大约 10%的机会进入季后赛,而 10-6 支球队有 88%的机会进入季后赛。这是一个巨大的增长!所以名人堂 QBs,当他们理论上取代非 HOF QBs,其他一切都保持*等(不可能,但还是!)是否应该以惊人的 780% 增加一支球队进入季后赛的几率。当然,我们忽略了大量的其他变量,但这仍然是一个说明性的练习,至少对我来说,这是一个非常有说服力的论点,可以找到 HOF 人才,永远不要让他离开。****
最后,我想指出的是,所有的非 HOF 换 HOF QB 互换并不是生来*等的。如果一个糟糕的球队(比如比尔队)把他们的 QB(乔希·艾伦)换成一个像汤姆·布拉迪这样的空前伟大的球员,他们将会在传球制作方面得到一个巨大的相对提升。但是他们仍然是一支糟糕的球队,汤姆 T20 能做的也就这么多了。所以即使阿伦和布雷迪互换,我们也不应该期望比尔队能赢得更多的比赛。如果你把贾里德·戈夫换成德鲁·布里斯,情况也是如此——公羊队已经很棒了,所以尽管布里斯可以说是有史以来最伟大的传球手,但他能给一支 13 胜球队带来的胜利是有限的。获得名人堂 QB 的最佳时机是当你已经在中间的某个地方…
****
结论、警告以及 2019 年对 AB 和 Bell 的期待
有或没有分析的肯定是一种过于简单的技术,但这并不意味着它不是分析武库中的一个强大工具,特别是当我们处理纠缠问题时,比如我们在 NFL 逐场比赛数据中看到的。当然,我可以考虑很多变量——特别是使用其他指标控制 QBs 周围团队的人才,或者纳入关于接收者年龄的信息(也许没有的*统计数据是由已经离开的老接收者驱动的,而不是糟糕的 QB 比赛)。但最终,我对自己的假设没有任何强烈的异议,因为我的后验信念与我的前验信念并没有太大的不同。我相信拥有一个优秀的 QB 是获胜的秘诀,而不是相反。至少有一些合理的证据证明这是真的。*****
未来我可能会更新这一分析的一种方法是将它视为一项纵向或小组研究,并拟合一个混合效应模型,以更好地控制年龄、使用和赛季中期交易或受伤。但那是另一个时间,另一篇文章。
最后,利用我们从这一分析中得出的见解(并做出不太疯狂的预测德里克·卡尔和萨姆·达诺德不值得拥有),我们明年可以从布朗和贝尔那里期待什么?
从 2009 年到 2018 年,布朗在每个目标的 EPA 中排名第 39 位(同时积累了高达 1234 个目标,是迄今为止最总的 EPA),而贝尔的排名更低,为 166 位(在纯粹的及格 EPA 中,忽略拉什)。如果我们将离开 HOF caliber QB 的预期相对变化应用于每个球员的职业 EPA *均值,“新”EPA 在同一时期只会在 NFL 中分别排名 143 和 227 。
这是一个令人震惊的结果,也是一个可能让变得不可预测的结果。准备好你的爆米花——这将是一个疯狂的季节。我等不及了。
喜欢你读的书吗?请评论考虑 在推特上关注我
蜜蜂在嗡嗡叫什么?
原文:https://towardsdatascience.com/whats-buzzing-with-the-bees-99f9be0bc4c6?source=collection_archive---------11-----------------------
一个探索性的数据分析项目,调查美国的蜜蜂种群
随着时间的推移,蜜蜂的数量发生了怎样的变化?
“拯救蜜蜂”运动已经流行了* 15 年,我们经常听到“蜜蜂正在死去!”,但这有多真实呢?
大约从 1992 年开始,蜜蜂数量急剧减少,这种趋势一直持续到 2005 年左右,但从那以后,蜜蜂数量相对稳定。
自 2005 年以来,美国的蜂箱数量一直相对稳定(甚至在增加)。
蜜蜂到处都在死亡吗?
有趣的是,没有!蜜蜂实际上在一些州有所增加。
下图显示了美国蜜蜂数量最多的 5 个州。虽然加利福尼亚的蜜蜂数量在过去几十年里一直在减少,但北达科他州的蜂群实际上有所增加,而佛罗里达州、南达科他州和明尼苏达州相对来说没有变化。
蜜蜂的生存能力和茁壮成长能力取决于各种因素,包括地理和各州的情况。
各州的殖民地损失有何不同?
仅仅从地图上看,很明显 2011 年和 2013 年的冬天并不太糟糕,但是 2012 年和 2014-2016 年对蜜蜂来说更致命。
从地理上看,中西部和大西洋中部的州经历了蜜蜂死亡最严重的情况。
哪些州对蜜蜂来说最好和最差?
在冬季,蜂巢损失百分比最高的州往往位于大西洋中部和中西部,而蜂巢损失百分比最低的州往往位于美国西部。********
States with the Highest Hive Loss %
States with the Lowest Hive Loss %
菌落是怎么死的?
群体损失的两个主要原因是死亡和群体崩溃失调。
死亡是指一个蜂群中的蜜蜂全部死亡时的。蜜蜂的免疫系统在冬天变弱,它们更容易感染和感染寄生虫(如瓦螨)。
蜂群衰竭失调或 CCD,是指一个蜂群中的大多数蜜蜂永久性地飞离蜂巢,只剩下蜂王和少数工蜂。CCD 仍在研究中,以确定是什么因素造成的。
不幸的是,美国农业部只授权从 2015 年开始收集 CCD 和 Deadout 损失的数据,所以没有太多数据。根据图表,我们可以看到死亡更为常见;此外,两种类型的群体损失都有季节性趋势。
在冬天死亡的蜂巢几乎是蜂群衰竭失调的 4 倍。
低温和蜂群衰竭有相关性吗?
为了回答这个问题,我使用了一个按年份划分的温度异常数据集(可以追溯到 19 世纪晚期)。然后我用每年的最低温度异常值,想看看这个值是否与蜂箱每年的百分比变化有任何关联。
********
首先,我想看看数据,看看是否有一个总体趋势。左边是逐年的最低温度异常,下面是逐年的菌落百分比变化。数据中似乎没有任何共享模式。
为了量化这种关系,我发现了菌落百分比变化和温度异常之间的相关性。我期待发现一个高度正相关的现象——我的直觉是越多的负温度越多的负百分比变化。
我发现相关性是0.23
最低温度异常与前一年的菌落百分比变化之间存在轻微的正相关
菌落与消费品价格有什么关联?
我从弗雷德(圣路易斯的美联储银行)那里搜集了不同消费价格指数的 CSV 文件,用于各种食品。
我假设 **melons**
、 **fruits**
、 **almonds**
会和 **colonies**
有很强的负相关。因为甜瓜、水果和杏仁主要由蜜蜂授粉,我假设随着蜂群数量的减少,这些商品的价格会上升,而其余商品的相关性为 0。
我观察了各种消费品的菌落变化百分比与价格指数变化百分比之间的关系(相对于绝对数字)。
*Correlation Table between % Change in Colonies and % Change in Price Indices of Various Consumer Goods. Last row is the most important
我还尝试将群体百分比变化数据延迟 1 年,以观察价格是否会在事后受到影响,实际上相关度非常接* 0。
虽然商品价格与蜜蜂数量相关,但可能还有无数其他因素影响它们。**
我们能预测蜂蜜价格吗?
*均蜂蜜价格与蜂蜜产量[-0.8]
密切相关,与每个蜂群的蜂蜜磅数[-0.59]
和蜂群数量[-0.45]
适度相关。
我建立了一个线性模型,试图根据其他三个变量来预测蜂蜜的价格。尽管总体模型在统计上是显著的(p-value = 3.972e-07)
并且 r *方是中等的(0.6818)
,但是没有一个变量是统计上显著的预测因子——我对模型的质量没有太大的信心,但是,我认为看起来还是很有趣的。
**Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1474.2895 524.7439 2.810 0.00895 **
`Colonies (Thousands)` -0.3806 0.1895 -2.008 0.05435 .
`Yield (lbs per colony)` -15.9264 8.1140 -1.963 0.05967 .
`Production (Millions)` 4.0934 2.9445 1.390 0.17542
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 36.04 on 28 degrees of freedom
Multiple R-squared: 0.6818, Adjusted R-squared: 0.6477
F-statistic: 19.99 on 3 and 28 DF, p-value: 3.972e-07**
我使用的数据集没有足够的数据来预测蜂蜜的价格。
数据
Kaggle:蜂群统计
弗雷德:CPI 数据
美国宇航局:1880 年至今气温异常
今年数据世界将会发生什么。
原文:https://towardsdatascience.com/whats-going-to-happen-this-year-in-the-data-world-9fc065ac3870?source=collection_archive---------15-----------------------
如果我们希望预见数学的未来,我们应该研究这门科学的历史和现状。亨利·庞卡雷。
介绍
如果你沉浸在数据世界中,很可能你已经看到了一堆关于今年和未来几年将要发生的事情、趋势和期望的文章、博客帖子和新闻。
我读了很多,如果你想读,可以去文章的结尾,你会在那里找到。但是在这里,我想快速概述一下现在正在发生的事情,并分析人们正在谈论的不同趋势,看看更有可能发生什么。
最常见的趋势
如果你搜索“数据科学”这个词,你会找到大约 5400 万个结果,这是一个很大的数字。多年来,人们对这一领域的兴趣一直在增长:
但是数据科学现在很重要,它对不同的人有不同的意义。如果你看一看文章和新闻,最大的趋势是:
还有更多,但这些是最大的。关于它们中的每一个都有很多要说的,但是我现在想集中讨论其中的两个。自动化和图表。
自动化和图表(数据结构)
https://towardsdatascience.com/the-data-fabric-for-machine-learning-part-1-2c558b7035d7
如果您一直在关注我的研究,我现在最感兴趣的事情之一就是数据结构。请记住,我对数据结构的定义是:
数据结构是支持公司所有数据的*台。它是如何被管理、描述、组合和普遍访问的。该*台由企业知识图构成,以创建统一的数据环境。
这里我想强调两点,数据结构是由企业知识图构成的,应该尽可能自动化。
Gartner 的一篇文章非常清楚地提到了这一点:
[## Gartner 确定了 2019 年十大数据和分析技术趋势
增强分析、持续智能和可解释的人工智能(AI)是……
www.gartner.com](https://www.gartner.com/en/newsroom/press-releases/2019-02-18-gartner-identifies-top-10-data-and-analytics-technolo)
他们说:
到 2022 年,图形处理和图形数据库管理系统的应用将以每年 100%的速度增长,以不断加快数据准备,实现更复杂和适应性更强的数据科学。
此外:
到 2022 年,定制数据结构设计将主要作为静态基础设施进行部署,迫使组织投入新一轮成本来彻底重新设计更动态的数据网格方法。
很明显,对于数据公司来说,图表概念和数据结构将会越来越普遍。但是自动化呢?
在机器学习、深度学习和部署方面,自动化有很多进步。但正如我之前所说,数据是公司目前的重要资产(可能是最重要的资产)。所以在你可以应用机器学习或深度学习之前,你需要拥有它,知道你拥有什么,理解它,治理它,清理它,分析它,标准化它(也许更多),然后你才能想到使用它。
我们需要数据存储、数据管理、数据探索、数据清理以及所有我们实际上花费大量时间做的事情的自动化。你可以说像 DataRobot 这样的工具可以给你提供这些东西,但是根据我的经验,在这个领域还有很多事情要做。
这就是为什么我打赌语义技术是发展的方向。有了它们(像 Anzo )你可以自动生成查询(是的,这是一件事),用它们来处理复杂的图形使提取特征变得容易,并最终完全自动化。
在我关于这个主题的第一篇文章中,我也提出了这个架构:
https://towardsdatascience.com/deep-learning-for-the-masses-and-the-semantic-layer-f1db5e3ab94b
到处都有自动化。而且很容易在旅途中添加更多功能,如可解释的人工智能、持续智能等等。在同一篇文章中,Gartner 的人员提到:
持续智能是一种设计模式,其中实时分析被集成到业务运营中,处理当前和历史数据以规定响应事件的操作。它提供决策自动化或决策支持。
如果我们考虑流分析,这不是一个新术语,但我喜欢这个名字。实际上,正在发生的事情可以分为两件:语义技术和自动化。
这是语义技术在过去 5 年中引起的兴趣:
正如我们所看到的,数据结构并没有那么高,但我认为这种情况很快就会改变。
结论
因此,如果您想要跟上时代,您最好开始考虑如何将您的数据湖改进为智能数据湖,您还希望自动化您的流程,从数据摄取到模型部署和监控,并利用图表技术。
同样,正如我之前提到的,在以下情况下,您应该使用图形数据库而不是其他数据库:
- 你有高度相关的数据。
- 你需要一个灵活的模式。
- 您希望有一个结构并构建更接*人们思维方式的查询。
相反,如果您有一个高度结构化的数据,您希望进行大量的分组计算,并且您的表之间没有太多的关系,那么您可能更适合使用关系数据库。
剑桥语义公司的人创建了这个伟大的信息图,让你了解更多关于数据结构世界的信息:
感谢您阅读本文,希望这篇文章能让您了解作为数据科学家在个人业务和生活中应该做些什么。
参考资料:
[## Gartner 确定了 2019 年十大数据和分析技术趋势
增强分析、持续智能和可解释的人工智能(AI)是……
www.gartner.com](https://www.gartner.com/en/newsroom/press-releases/2019-02-18-gartner-identifies-top-10-data-and-analytics-technolo) [## 2019 年数据科学趋势
今年可以被认为是人工智能(AI)的蓬勃发展。只要看看有多少创业公司拥有…
towardsdatascience.com](/data-science-trends-for-2019-11b2397bd16b) [## 2019 年数据科学趋势-数据大学
谈到 2019 年值得关注的主要数据科学趋势,去年的主要趋势从 2017 年开始延续,因为增长…
www.dataversity.net](https://www.dataversity.net/data-science-trends-in-2019/#) [## 人工智能,数据科学,分析 2018 年的主要发展和 2019 年的主要趋势
和过去一样,我们为您带来专家的预测和分析综述。我们问了主要的是什么…
www.kdnuggets.com](https://www.kdnuggets.com/2018/12/predictions-data-science-analytics-2019.html) [## 2019 年值得关注的 10 大数据趋势
我们寻找更多的数据有一个很好的理由:它是推动数字创新的商品。然而,把那些巨大的…
www.datanami.com](https://www.datanami.com/2019/01/21/10-big-data-trends-to-watch-in-2019/) [## 5 2019 年数据和人工智能趋势-信息周刊
新的一年,新的一页。如果 2019 年看起来像 2018 年,你可以打赌,数据、分析、机器学习…
www.informationweek.com](https://www.informationweek.com/strategic-cio/5-data-and-ai-trends-for-2019/d/d-id/1333581) [## 图形数据库。有什么大不了的?
继续分析语义和数据科学,是时候讨论图形数据库以及它们必须…
towardsdatascience.com](/graph-databases-whats-the-big-deal-ec310b1bc0ed) [## 安佐
到目前为止,还没有任何技术能够在企业范围内提供语义层——包括安全性、治理和…
www.cambridgesemantics.com](https://www.cambridgesemantics.com/product/)
那里在生长什么?
原文:https://towardsdatascience.com/whats-growing-there-a5618a2e6933?source=collection_archive---------8-----------------------
利用 eo-learn 和 fastai 从多光谱遥感数据中识别作物
A section of the Orange River, South Africa: colour imagery and NDVI from Sentinel 2 and target masks from Zindi’s Farm Pin Crop Detection Challenge
介绍
这篇文章描述了我如何使用 eo-learn 和 fastai 库来创建机器学习数据管道,该管道可以从卫星图像中对作物类型进行分类。我用这个管道进入了 Zindi 的农场 Pin 作物检测挑战赛。我可能没有赢得比赛,但我学到了一些处理遥感数据的伟大技术,我在这篇文章中详细介绍了这些技术。
以下是我遵循的预处理步骤:
- 将感兴趣的区域划分成“小块”网格,
- 从磁盘加载图像,
- 遮住了云层,
- 增加了 NDVI 和欧几里德范数特性,
- 按照固定的时间间隔对图像进行重新采样,
- 添加了具有目标和标识符的栅格图层。
我将作物类型分类的问题重新定义为一项语义分割任务,并使用图像增强和混合对多时相多光谱数据训练了一个带有 ResNet50 编码器的 U-Net,以防止过度拟合。
我的解决方案在很大程度上借鉴了 Matic Lubej 在他的三篇 优秀 帖子中概述的关于土地覆盖分类与 eo-learn 的方法。
我创建的 python 笔记本可以在这个 github 资源库中找到:https://github . com/Simon grest/farm-pin-crop-detection-challenge
挑战
Zindi 是一个非洲竞争性数据科学*台,致力于利用数据科学造福社会。在 Zindi 的 2019 年农场 Pin 作物检测挑战赛中,的参与者使用sentinel 2图像训练机器学习模型,以便对南非奥兰治河沿岸的农田中种植的作物进行分类。
提供给参赛者的数据由两个形状文件组成,其中包含训练集和测试集的场边界,以及 2017 年 1 月至 8 月期间 11 个不同时间点的感兴趣区域的 Sentinel2 影像。
The section of the Orange River — grey test set fields interspersed amongst green training set fields
训练集和测试集分别由 2497 个字段和 1074 个字段组成。训练集中的每个田地都标有九个标签中的一个,指示该田地在 2017 年期间种植的作物。
作物类型有:
Cotton
Dates
Grass
Lucern
Maize
Pecan
Vacant
Vineyard
Vineyard & Pecan (“Intercrop”)
参赛者只能使用提供的数据,并且(由于在比赛期间发现数据泄露)禁止使用 Field_Id 作为训练功能。
使用 eo-learn ( 笔记本)进行数据预处理
eo-learn 库允许用户将感兴趣的区域划分为补丁,定义工作流,然后在补丁上并行执行工作流。
1.分割感兴趣的区域
使用sentinelhub
库中的BBoxSplitter
,我将河流分成了 12 块:
The area of interest partitioned into a grid of ‘patches’
2.从磁盘加载图像数据
比赛图像数据以 JPEG2000 格式在标准 Sentinel2 文件夹结构中提供,如下图所示:
Sentinel2 folder structure
eo-learn 库提供了许多有用的预定义任务,用于从 Sentinel Hub 加载影像、处理影像和生成要素。在撰写本文时,它还没有以上述格式从磁盘加载图像的任务。然而,定义我自己的EOTask
类来做这件事被证明足够简单。EOTask
类需要一个execute()
方法,该方法可以选择接受一个EOPatch
对象作为参数。
EOPatch
对象本质上只是numpy
数组和元数据的集合。我自己定制的EOTask
加载的EOPatch
对象看起来是这样的:
data: {
BANDS: numpy.ndarray(shape=(11, 1345, 1329, 13), dtype=float64)
}
mask: {}
mask_timeless: {}
scalar_timeless: {}
label_timeless: {}
vector_timeless: {}
meta_info: {
service_type: 'wcs'
size_x: '10m'
size_y: '10m'
}
bbox: BBox(((535329.7703788084, 6846758.109461494), (548617.0052632861, 6860214.913734847)), crs=EPSG:32734)
timestamp: [datetime.datetime(2017, 1, 1, 8, 23, 32), ..., datetime.datetime(2017, 8, 19, 8, 20, 11)], length=11
)
我们可以通过使用波段 4、3 和 2(红色、绿色和蓝色)为每个斑块生成彩色图像来可视化斑块:
Colour images of the 12 patches made with the red, green and blue bands
3.遮蔽云层
在上面图像的右下角有一些云层。eo-learn 库提供了一个预训练的像素级云探测器模型。此功能可通过S2PixelCloudDetector
和AddCloudMaskTask
类获得。
S2PixelCloudDetector
来自一个单独的库sentinel2-云探测器,使用 sentinel 2 图像的所有 13 个波段进行预测。通过设置概率阈值,可以将云概率预测转化为云掩膜。
Colour image with clouds, cloud probabilities and resulting cloud mask
我使用这个云检测功能向我的数据添加了一个云遮罩。
4.随时间重新采样
删除云会在每个时间片上有云覆盖的区域的数据中留下间隙。填充这些间隙的一种可能的方法是在前面和后面的时间片之间进行插值。
已经为此定义了一个LinearInterpolation
EOTask
。类要求您指定要插值的波段和重新采样的间隔。我决定将我的数据*均到大约每月一个时间片,这将我的时间维度从 11 个时间点减少到 8 个。
此外,为了处理时间段开始或结束时的任何间隙,我使用了一个ValueFilloutTask
进行简单的外推,即根据需要从之前或之后的时间点复制值。
5.添加 NDVI
归一化差异植被指数 (NDVI)是卫星图像中植物生命存在的简单指标。该指数是使用红色和*红外(NIR)波段计算的。
NDVI =(*红外光谱-红色)/(*红外光谱+红色)
维基百科上关于 NDVI 的文章对这个指标背后的基本原理有一个很好的解释。基本的想法是,植物物质吸收大部分可见的红色光谱光,而它反射*红外光,这不能用于光合作用,NDVI 在比率中捕捉这种反射率的差异。
方便的是,eo-learn 提供了一个NormalizedDifferenceIndex
任务,允许我轻松地计算和添加每个补丁的 NDVI。
对于不同的作物,NDVI 随着时间的推移会有不同的演变。不同的作物在不同的时间种植和收获,生长速度也不同。下面的动画展示了 NDVI 在邻*油田的不同发展。
NDVI through time (in March you can see artefacts that result from the cloud masking and interpolation)
6.添加目标遮罩
为了将作物识别挑战视为语义分割任务,我需要为我们的图像创建目标遮罩。eo-learn 中的VectorToRaster
任务获取矢量几何图形并创建光栅化图层。我使用此任务来添加指示作物类型的栅格图层。我还添加了一个带有字段标识符的层,用于推理。
Crop type raster layer for patch number 6
创建工作流并执行它
为了运行上述每个预处理步骤,我将所有任务放入一个工作流中。一般来说,eo-learn 工作流可以是任何在每个节点都有EOTask
对象的无环有向图。我只是使用了一个线性工作流程,看起来像这样:
*LinearWorkflow(
add_data, # load the data
add_clm, # create cloud mask
ndvi, # compute ndvi
norm, # compute the euclidean norm of the bands
concatenate # add the ndvi and norm to the bands
linear_interp, # linear interpolation
fill_extrapolate, # extrapolation
target_raster, # add target masks
field_id_raster, # add field identifiers
save # save the data back to disk
)*
为了执行这个工作流,我为每个补丁创建了执行参数,然后使用一个EOExecutor
以分布式方式在所有补丁上运行整个工作流。
*execution_args = []
for patch_idx in range(12):
execution_args.append({
load: {'eopatch_folder': f'eopatch_{patch_idx}'},
save: {'eopatch_folder': f'eopatch_{patch_idx}'}
})
executor = EOExecutor(workflow, execution_args, save_logs=True)
executor.run(workers=6, multiprocess=False)*
构建预测模型
语义分割
语义分割是给图像的每个像素分配类别标签的过程。通过将这次挑战中的作物识别问题重新构建为语义分割任务,我可以利用每个领域的局部空间上下文中的信息,如下所示,这还允许我通过重复采样生成更多的训练数据。
1.生成训练集(笔记本)
从我的 12 个小块中,我随机抽取了 64 x 64 像素的小块来训练我的模型。我保持小块的大小,因为这些区域本身相对较小,并且提供的 Sentinel2 影像的最大空间分辨率为 10 米。这意味着一个 1 公顷大小(10,000 *方米)的正方形区域在影像中显示为 32 x 32 像素的面积。
我以确保每个小块至少包含一部分训练字段的方式对小块进行了采样。对于每个 patchlet,我保存了两个 pickle 文件,一个包含输入影像,另一个包含作物类型的栅格图层。
对于输入图像,我选择包括六个通道,三个可见波段(红色、绿色和蓝色),*红外和计算的 NDVI 和欧几里德范数。当我通过时间插值对图像进行重新采样时,我得到了八个不同的时间点。为了得到一个秩为 3 的张量,我简单地在八个时间点的每一个点上叠加六个通道,得到一个 48 通道的图像。
NDVI and visible images at a single time point along with the corresponding target crop types for nine randomly sampled 64x64 training ‘patchlets’
2.数据扩充
竞争中可用的相对较小的数据集和我选择的网络架构中的大量参数意味着我需要特别小心过度拟合。为了避免这一点,我使用了图像放大和混合。
fastai 库提供了一系列图像增强技术。我使用了:
- 垂直翻转
- 水*翻转
- 旋转
- 嗡嗡声
- 翘曲
- 和剪切
A batch of training images with image augmentations applied
3.创建 fastai U-Net 模型(笔记本)
fastai 库通过允许用户从现有卷积网络编码器动态构建 U-Net 来提供语义分段。我选择了一个在 ImageNet 上预先训练的 ResNet50 作为我的编码器网络。为了处理我的输入张量的形状,我将 ResNet50 网络的第一个卷积层(采用 3 个通道)替换为采用 48 个通道的卷积层。
我不会试图在这里解释 U-网或残差神经网络,因为已经有很多很好的解释了。例如,这里有一个帖子解释 U-net,这里有另一个解释 ResNets。
我创建了SegmentationPklList
和类SegmentationPklLabelList
来实现加载 pickle 文件‘图像’的功能,这样我的数据就可以与 fastai 的数据块 API 一起工作。
fastai MixUpCallback
和MixUpLoss
也需要一些小的调整来处理语义分割。
4.损失函数
我用一个修改过的CrossEntropyFlat
损失函数来给我的模型打分。我将其实例化为:
CrossEntropyFlat(axis=1, weight=inv_prop, ignore_index=0)
不同作物类型在训练集中的出现是不*衡的,某些作物类型只出现少数几次。我通过使用损失构造函数的weight
参数,将我的损失函数与每种作物类型的逆频率成比例加权。
训练图像的大部分区域没有作物类型,或者该区域没有田地,或者如果有田地,它也不是训练集的一部分。通过使用 loss 构造函数的ignore_index
参数,我忽略了没有作物类型标签的预测。
5.培养
fastai 库提供的最大优势之一是灵活的训练循环,以及通过单周期训练策略等技术控制训练参数的强大开箱即用支持。我使用fit_one_cycle
函数训练我的 U-Net 五个时期,保持预训练的编码器参数不变,然后再训练十个时期,允许更新编码器权重。
在训练过程中,验证集的损失持续下降,而我的自定义像素精度度量稳步上升。
Training results from 5 frozen and 10 unfrozen epochs
对于验证集中的示例,将预测的像素掩膜与目标掩膜进行比较似乎表明网络工作正常,但是存在少数类和具有非标准形状的字段性能较差的示例。
**
More predictions on examples from the validation set
成果和有待改进的领域
为了对测试集进行推断,我将每个补丁分成一个 64x64 的“小补丁”网格,并保存每个小补丁的 pickle 文件。我对整个测试集进行了预测,并通过Field_Id
对结果进行了分组。对每个像素的预测由来自 U-Net 的十个最终激活组成。我取了每个类的中值激活值,然后应用一个 softmax 函数来得到测试集中每个Field_Id
的单个概率。
sample grid of ‘patchlets’ for inference — colouring by Field_Id clearly shows the data leak
利用时间模式
反思我的方法,我认为最可以改进的地方是对时间维度的处理。我在 48 个通道中堆叠所有时间点的天真方法不允许我的模型通过时间从图像中正确地学习模式。我很想探索使用循环网络来学习这些时间模式。
eo-learn 背后的团队自己提出了使用一个时间全卷积网络* (TFCN)来实现这个目的:https://sentinel-hub . com/sites/default/LPS _ 2019 _ eol learn _ tfcn . pdf。TFCNs 以秩为 4 的张量作为输入,并使用 3D 卷积来同时捕获空间和时间中的模式。*
使用无监督学习构建潜在表示
如果竞赛允许使用外部数据,那么探索本文【https://arxiv.org/abs/1805.02855中描述的 Tile2Vec 技术将会很有趣。这里的想法是通过使用三重损失设置无监督学习任务,从卫星图像生成区域的潜在向量表示。
我很想知道其他竞争对手采用了什么方法。
感谢
我要感谢 Zindi 的团队组织了如此有趣的挑战。我还要感谢 eo-learn 团队提供了如此有用的库,以及关于如何使用它的如此引人入胜的帖子。也感谢 fastai 社区为让深度学习变得更加*易*人和广泛可用所做的所有工作。最后,我要感谢Stefano Giomo*对这个项目的所有投入。*
班加罗尔道路上的交通是怎么回事?
原文:https://towardsdatascience.com/whats-happening-on-the-roads-of-bangalore-2fd5b7a6c54c?source=collection_archive---------12-----------------------
印度班加罗尔道路交通事故和其他事件的可视化分析。
Image: High speed traffic on NICE Road, Bangalore.
Copyrighted Source: https://500px.com/photo/12002497/speed-by-supratim-haldar
目标
我们花很多时间在路上,陷入交通堵塞,这通常是由一天中特定时间的车辆溢出或一天中任何随机时间的意外事件造成的。但是所有这些都有一个模式吗?在本文中,让我们深入研究班加罗尔的交通数据,目的是获得有助于我们更好地规划通勤的见解。
介绍
T 班加罗尔的道路交通状况在印度城市中并不算最好,Ola Cabs 最*的一项研究也证实了这一点——高峰时段的*均车速约为 15.5 公里/小时,在印度城市中排名倒数第三。但是也有交通高速行驶的区域,城市的某些地方事故或潜在事故的数量很高,而在其他地方事故或潜在事故的数量却很低。通过对这个公共数据集的探索性分析,让我们尝试解开一些关于班加罗尔道路和交通的有趣观察。
关于数据
这些数据(从 Kaggle 中的公共数据集下载)由安装在公交车上的防撞系统收集,并绘制了班加罗尔市内即将发生碰撞的数据。
数据集中可用的信息:
设备代码:安装在车辆上的 CAS 的唯一设备代码
纬度:产生碰撞警告的位置的纬度
经度:产生碰撞警告的位置的经度
病房名称:该位置(纬度,经度)所属的 BBMP 病房
报警类型:防撞系统产生的碰撞报警类型(详见下文)
记录的日期和时间:生成警报的日期和时间
速度:产生碰撞警报时的车速。所有的速度值都以千米/小时为单位
以下是分析所遵循的步骤:
- 读取数据。
- 数据的预处理和清理。
- 通过可视化进行数据分析。
完整的源代码在 这里 都有,万一你想看的话。请在下面的评论部分提供您的宝贵反馈和建议,或者通过最后提供的电子邮件地址给我写信。
放弃
对数据集的基本分析揭示了一些局限性,如下所示:
- 只有 2018 年的数据。
- 在 2018 年,仅提供 2 月、3 月、4 月、6 月和 7 月的数据。
- 在任何一天,只有早上 6 点到下午 6 点之间的数据可用。在像班加罗尔这样的城市的道路上,下午 6 点以后和深夜的数据是重要的,这是缺失的。
- 总之,这是一个很好的开始基本分析,并了解班加罗尔道路相关事件的高水*趋势。
背景资料
在进一步深入研究之前,了解 CDS 或 CAS 捕获的警报类型非常重要。更多详情请点击这里。
- 前方碰撞警告(FCW)
一辆 FCW 提醒司机即将与一辆汽车、卡车或摩托车追尾。 - 城市前方碰撞警告(UFCW)
UFCW 在与前方车辆可能发生低速碰撞之前发出警告,从而在交通密集拥挤的情况下以低速辅助驾驶员。这通常适用于车速低于约 30 公里/小时的情况。 - 车头时距监控警告(HMW)
车头时距监控警告(HMW)通过在距离变得不安全时提供视觉和听觉警告,帮助驾驶员与前方车辆保持安全的跟车距离。当车速超过 30 公里/小时时,该传感器发出警报,并以秒为单位显示距离前车的时间,当该时间变为 2.5 秒或更短时。 - 车道偏离警告(LDW)
当车辆在没有使用转向灯的情况下意外偏离车道时,LDW 会发出警报。如果变道时使用转向信号灯,则不会产生警报。LDW 通常在 55 公里/小时以上行驶,如果车道没有标志或标志不良,它可能无法正常行驶。
这进一步分为:(a) LDWL,用于向左车道偏离的车道,以及(b) LDWR,用于向右车道偏离的车道。 - 行人和骑自行车者检测和碰撞警告(PCW)
PCW 通知司机危险区域内有行人或骑自行车者,并警告司机即将与行人或骑自行车者发生碰撞。当车速低于 50 公里/小时时,PCW 工作良好。 - 超速
探索性分析的观察和结果的可视化
通过大量的数据清理、处理和探索性分析,很少出现非常有趣的观察结果。这里有几个例子。
L 让我们从班加罗尔/孟加拉鲁鲁地图上的所有 CAS 警报数据开始,通过指定的坐标,生成警报生成时车辆位置和速度的热图。
在这张热图中,速度的大小由色温表示——较冷(带蓝色)的曲线表示速度较低,而较暖(带红色)的颜色表示速度较高。
An interactive accident heatmap of city of Bangalore. Hover on and zoom in the map for more details.
上面是一个交互式地图,所以悬停在上面可以看到病房,并放大以找出特定位置的车辆速度。
一些速度相对较高的领域:
- 旧马德拉斯路/班加罗尔-蒂鲁帕蒂公路
- 萨尔贾布尔路
- 外环线的部分路段
- Anekal 主干道等。
事故的区域分布
事故发生时的车速
数据集中可用的速度数据是警报生成时公共汽车记录的速度,而不是班加罗尔道路上车辆/公共汽车的总体速度。记录的最高速度是 83 公里每小时,然而*均速度只有 22 公里每小时。
日期和时间
在这个月的 19 号有一个高峰,但是可能那是一个噪音。
就一天中的时间而言,清晨(早上 7 点)和下午(下午 3 点)看起来不是旅行的最佳时间。
但是,需要记住的是,数据集只包含一天中 12 个小时的数据。因此,我们看不到傍晚繁忙时间的情况。
到目前为止,我们已经探索了一些单独的功能。现在,让我们通过将两个或更多特征结合在一起,来尝试解开一些有趣的观察结果。
(1)按警报类型划分的班加罗尔位置热图
注意,在这里,一天中的小时被表示为颜色图,使得早期的小时以冷色(浅蓝色)表示,并且随着一天的进行,暖色表示一天中的较晚部分。
观察:上面的热图清楚地表明,班加罗尔各地都发出了各种警报。因此,即使某些类型的事故在某些地区更频繁(例如,超速在高速公路上更普遍),事故在整个城市都有可能发生。
(2)每种事故/警报类型的速度分布
观察:
- 低速碰撞的*均速度为 11-12 公里/小时。
- 高速碰撞发生的*均速度约为 35 公里/小时,许多情况下速度更高。
- 超速被报告为*均 25 公里/小时的速度(这不是真正的超速)。这让人对超速报警器的质量产生了怀疑。
- 没有指示灯的车道偏离以及与行人和骑自行车者的碰撞的*均速度为 20 公里/小时。
(3)哪些地区因哪种事故而臭名昭著?
观察:
- 大多数高速和低速碰撞事件都发生在哈加杜尔。
- 超速在嘎鲁达查尔半岛最常见。
- Hagadur 因与行人和骑自行车的人相撞而臭名昭著,更不用说没有指示灯的变道了。
(4)了解班加罗尔地图上最危险的 10 个病房
摘要
上述分析为我们提供了不少关于班加罗尔道路交通的有趣观察。例如,每个病房有多安全或不安全,一天中什么时间最适合旅行,路上车辆的*均速度等等。最有趣的是,一个带有速度分布的交互式地图让我们可以找到事件发生的确切位置,以及 BBMP 区的名称和当时的车速。
感谢您的阅读!你同意这些观点吗?请在下面的评论区分享你的想法,或者给我发邮件。
对于我曾经做过或者目前正在做的其他项目,请到http://supra timh . github . io处停止。
是什么阻碍了人工智能在企业中的应用?
原文:https://towardsdatascience.com/whats-holding-back-ai-adoption-in-enterprises-62dbe3134158?source=collection_archive---------23-----------------------
Source: Strata album on Flickr
伦敦地层数据会议的 5 点启示
在技术会议中,O'Reilly 的 Strata Data 规模庞大,在数据社区中备受推崇。过去一周,我一直很关注这件事,很高兴被邀请在伦敦地层学院演讲。以下是这次活动的总结和一些重要的经验。
有了来自学术界、企业和研究人员的精心策划的内容,有很多东西值得期待。O'Reilly events 以其对多样性的特别关注而闻名,为期 4 天的活动汇集了来自世界各地的有趣的谈话和演讲者。
各种形式的会议都有:16 小时的培训、4 小时的研讨会、商业案例研究、管理层简报和技术深度探讨。会议用的椅子很有学问&很容易拿到,这让走廊聊天变得很愉快。
Source: Strata album on Flickr
关键主题
以下是会议中涉及的主要趋势的总结。我已经链接到最有趣的也有公共会议甲板。鉴于并行跟踪会议的数量惊人(我数了一下,有 13 个,下面会有更多),这个列表是基于我可以参加或跟踪的会议而有所偏差的。
1.是什么阻碍了人工智能在企业中的应用?
企业正在努力采用人工智能,这是一个反复出现的主题,包括本关于“在企业中维持机器学习”的主题演讲。根据最*的 O'Reilly 调查,以下是阻碍采用的主要瓶颈:
Results from the O’Reilly report on ‘AI Adoption in the Enterprise’
虽然公司文化可能是一个不成功的因素,但我在这个客户列表中看到了前 5 名。会议涵盖了所有这些挑战,包括一个关于企业案例研究的单独专题讲座。几个值得注意的会议:Pete Skomoroch的《为什么管理机器比你想象的难》和 Shingai Manjengwa 的《雇用独角兽数据科学家的次佳选择》。
Cait O'Riordan 关于《金融时报》如何采用数据科学提前一年达到 100 万付费用户的主题演讲非常出色。
2.数据治理:CDO 的鲨鱼池生活
“数据治理之于数据资产,正如人力资源之于人”这是 Paco Nathan 在他的会议上关于数据治理概述的一个很好的类比。从数据和企业架构的历史演变开始,它涵盖了当今不同领域的公司所面临的问题,并提供了未来展望。
CDO’s role today: a life in the shark tank (Slide: Session by Paco Nathan)
Sundeep Reddy 的会议通过观察印度蓬勃发展的数字经济和 10 亿人在印度 stack 公共展示中面临的困境,提供了公共治理和数据的对比视角。
3.为什么用 AI 做好事这么难?
题为“利用数据为恶”的会议吸引了大量观众,这是邓肯·罗斯系列的第五部分。作为对关于 AI for Good 的会议的补充,他分享了英国 DataKind 关于用数据做好事的例子。人工智能对假新闻的危险贡献在 Alex Adam 关于合成视频生成以及如何检测它的会议中有所涉及。
Spinoffs to the popular Quadrant of Magic! (left: Necromantic Quadrant by Duncan Ross; right: An inspiration from Paco Nathan)
我用 Gramener 与微软 AI for Earth 的合作案例讲述了人工智能如何拯救我们星球的生物多样性。这 4 个例子展示了非政府组织如何使用深度学习解决方案来检测、识别、统计&保护濒危物种。
4.自然语言处理的不合理有效性
谁能比 Mathew Honnibal 更好地谈论文本分析的最新进展呢,他是广受欢迎的 Python 开源 NLP 库的创建者。他分享了提高 NLP 项目成功率的技巧。仅利用《人民日报》的文本档案预测中国政策变化的会议因其简单但合理的方法而非常有趣。
Predicting policy change in China with machine learning (Session by Weifeng Zhong)
数据或标注语料库的匮乏是自然语言处理中的一个主要挑战,Yves Peirsman 在 T4 举办的关于处理自然语言处理中数据匮乏的会议提供了一些有用的技巧。
5.黑箱模型的可解释性和开放性
如果不谈论可解释性和可解释性,今天的人工智能对话就不完整。Eitan Anzenberg 的会议解释了对可解释性的需求,并涵盖了像 LIME 这样的框架。Yiannis Kanellopoulos 报道了关于金融科技模型问责制的案例研究。
Need for Explainability (Session by Eitan Anzenberg)
除了这些主题之外,还有一些技术会议,涵盖了流行*台/包(如 Spark 、 Tensorflow 、 AWS 、 Google Cloud 、Azure、r
如此多种多样的会议意味着一天要跑 13 条*行路线,打印出来的议程是一张笨重的超宽的风景纸!虽然这给出了一个有趣的主题组合,但选择一个却是一个很大的难题。这种数量过多的问题也对会议的参与度(和出席率)有负面影响。
这里是全部活动的议程和列表所有公开发布的幻灯片。
议程之外
有足够的机会与这些高度参与的从业人员建立联系。艾不仅仅是会议的一部分,他还出现在展厅里,由 Makr Shakr 的机器人酒保分发饮料。
Speed networking session; Data after dark party with scenic views of the city
希望在即将到来的奥赖利活动中发言?
如果你想知道从哪里开始邀请即将到来的奥赖利活动,这本电子书是一个有用的资源。由 Strata 背后的人 Alistair Croll 撰写,它讲述了活动管理的方式,如何选择会谈,以及是什么让组织者心痛。它提供了一个如何提交高质量的参赛作品并被选中的内幕。我推荐一本有用的快速读物。
语言中有什么
原文:https://towardsdatascience.com/whats-in-a-language-e0e964f64fd0?source=collection_archive---------15-----------------------
在自然语言处理中寻找意义
英国数学家和计算机科学家艾伦·图灵在 1950 年的一篇名为“模仿游戏”的论文中提出了一个简单的问题。仅仅通过让他们写下对询问者所提问题的回答,询问者能正确地确定一个男人和一个女人的性别吗?问题是,当男人试图帮助询问者正确识别性别时,女人的任务是欺骗你,让你认为她就是那个男人。
图灵继续这个问题说,如果机器是被询问的两个‘人’中的一个,而不是一个男人或女人,会怎么样?审讯者能正确地辨认出谁是人类吗?如果机器能够欺骗询问者回答问题,那么机器会像人一样思考吗?
简单来说——“机器会思考吗?”
今天,我们一天中的大部分时间都在网上与人交谈,通过文本、twitter DMs 和电子邮件。当我们交谈时,我们很少怀疑信息另一端的人理解我们。此外,如果我本周晚些时候打电话去理发,我不会怀疑电话那头的人是不是个人……直到现在。
如果那个人根本不是人,而是一个聊天机器人或谷歌助手,那该怎么办?如果聊天机器人智能地回应,那么他们也是智能的,而我也不会认为他们是人。谷歌助理理解我,我想在周四理发,但我周五也有空(因为我的谷歌日历上没有安排)。所以如果理发店在星期四被预订,星期五是一个不错的选择。
现在是 2019 年,有机器通过图灵测试了吗?
Google I/O 2018
是的——取决于你如何设计测试。
这个 55 秒的呼叫持续了 50 多年,从图灵的论文开始,继续到自然语言处理(NLP)程序,如 ELIZA 和 A.L.I.C.E .(罗布纳奖获得者)。通过图灵测试类似于回答图灵的问题“机器能思考吗?”回答是。但是,我们真的可以这么说吗?是不是所有的智能都在网上聊天或打电话时显得智能?A.L.I.C.E. 对我的问题的回答有什么想法或感受?
为了验证这一点,我们再举一个例子。
狭隘的争论与中国空间
想象一下,一个不懂中文的英语母语者被锁在一个房间里,房间里满是装有中文符号的盒子(一个数据库),还有一本操作这些符号的说明书(程序)。想象一下,房间外面的人输入其他的中文符号,房间里的人不知道,这些符号是中文的问题(输入)。通过遵循书中的指示,房间里的人能够分发中文符号(输出),这些符号是问题的正确答案。这个人在不懂一个中文单词的情况下通过了图灵测试。
换句话说,虽然谷歌助手可以给你正确的回应,但助手并不能以有意义的方式理解这些回应;这只是一个日历事件。
约翰·塞尔在 1980 年发表了这一论点,这使他能够区分出强和弱人工智能。强人工智能是指计算机具有心智能力,不仅能够理解国际象棋等游戏,还能理解自然语言。弱 AI** 是计算机模拟心智能力的说法,允许我们在心理学、语言学、象棋训练软件中使用它们,但是没有理解。狭义的论点如下**
- 如果强人工智能是真的,那么有一个中文程序,如果任何计算系统运行该程序,该系统就能理解中文。
- 我可以为中国人运行一个程序,而不会因此理解中国人
- 所以,强 AI 是假的。
不仅仅是发型预约
图灵在他 1950 年的论文中举了两个机器如何“学习”的例子。第一种:教一台机器下棋,这是一种抽象的活动,有明确的规则。第二:给机器提供金钱能买到的最好的感觉器官,它们教它理解和说英语,这更像是教一个孩子。
成交还是不成交?
脸书和佐治亚理工学院的研究人员将谷歌助手的日程安排能力更进一步,看看人工智能是否不仅能对话,还能谈判。他们从 5808 个半合作对话的数据集开始,训练一个模仿人类行为的递归神经网络。
From the paper “Deal or No Deal? End-to-End Learning for Negotiation Dialogues”
为了简洁起见,下面是这篇论文中值得考虑的一些要点
- 基于目标的模型更难谈判
- 模特学会骗人
- 模型产生有意义的新颖句子
- 保持多句子的连贯性是一项挑战
开放 AI
与自然语言处理中的统计模式不同,Open AI 研究了开发他们自己的语言进行交流的智能体。这有几个推动因素。
- 查看语言中的统计模式并不能告诉你为什么这种语言存在,只能告诉你在被分析的给定语言中通常会有什么。
- 为了让智能体(作为人工智能语音助手的我们更好理解)与人类进行智能交互,让他们不仅通过,而且超越图灵测试。
回到图灵测试,当“某人”理解语言时,当他们在对话的背景下做出适当的反应时。语言是我们使用的一种功能工具,增加了语义层。在开放人工智能的研究中,他们希望用基于基础的合成语言来实现理解。
什么是接地气的作曲语言?
“组合”语言是这样一种思想,即复杂表达的意义由其结构和组成部分的意义决定。“接地气”指的是基于经验的那种语言。没有亲身看到(体验)“红色”,一个人无法理解“红色”是什么。
那又怎样?
这如何适用于开放人工智能研究中的代理?代理人以二维空间为基础,构建不同长度的句子(取决于任务),以在小组或多代理人环境中执行任务。
From the OpenAI blog post “Learning to Communicate”
每个代理都有一个目标,无论是从位置 A 到 B,还是鼓励不同的代理移动到特定的位置。在开始任务之前,特工们使用的符号没有一个有意义。代理人根据任务和环境创造了符号的含义。此外,另一个关键因素是代理人的奖励是合作性的,而不是竞争性的。这就是我们看到抽象合成语言出现的地方,代理人与语言一起工作而没有任何人类语言的使用。
也就是说,有一天,为你预约理发的电脑可能会和你说话,并且理解你…
“我们只能看到前面不远的地方,但我们可以看到那里有许多需要做的事情”
—艾伦·图灵
参考
- 计算机械与智能艾伦·图灵
- 成交还是不成交?谈判对话的端到端学习迈克·刘易斯、丹尼斯·亚拉茨、扬·n·多芬、德维·帕里克和 Dhruv Batra
- 多主体群体中的基础合成语言的出现
黑盒子里有什么?
原文:https://towardsdatascience.com/whats-in-the-black-box-8f36b262362e?source=collection_archive---------26-----------------------
赵、著“黑箱模型的因果解释”精华。
Photo by Christian Fregnan on Unsplash
你可能熟悉《黑箱模型的因果解释》的作者——赵清源和特雷弗·哈斯蒂——特别是特雷弗·哈斯蒂。也许这个能让你想起什么?:
James, Gareth, et al. An Introduction to Statistical Learning: with Applications in R. Springer, 2017.
对我来说确实如此,因为这篇文章是我学习数据科学的第一个切入点。当你试图找出你的 R 代码到底出了什么问题时,你可能还会在阅读glmnet
包的文档时想起 Hastie 的名字。或者那可能只是我。
正因为如此,我很好奇的看了赵和哈斯蒂的论文。以下是我了解到的!
黑匣子
机器学习(ML)模型虽然在预测性能上已经超过了参数模型,但也有被非技术用户认为是黑箱的缺点;它们的相对不透明性使它们难以解读。考虑下图:
Zhao & Hastie. 2018. Causal Interpretations of Black-Box Models. http://web.stanford.edu/~hastie/Papers/pdp_zhao_final.pdf
模型的“本质”是“封闭的”,不为用户和客户所知。这很重要,因为一个核心问题是:什么样的特性对模型的输出很重要?当你不容易“看到”你的模型中发生的事情时,很难搞清楚这一点。
赵和 Hastie 谈论与特性重要性相关的三个想法:
- 我们可以将 ML 模型视为一个函数,并询问哪个特性对输出的影响最大。想想回归模型的β系数。
- 如果我们没有系数,那么也许我们可以通过对模型预测准确性的“贡献”来衡量一个特征的“重要性”。
- 第三个是赵和哈斯蒂关注的,他们称之为因果关系。他们是这样描述的:
如果我们能够对 Xj 进行干预(在其他变量不变的情况下,将 Xj 的值从 a 改为 b),Y 的值会改变多少?
他们论文的目标是:
…解释在拟合黑盒模型后,我们何时以及如何进行因果解释。
因果关系
赵和哈斯蒂用的成绩和的学习时间来论证因果关系的概念。让我们考虑一个公式,其中:
Grade = [Some Constant Factor]
+ (Some Multipicative Factor)x(Hours Studied)
+ (Random Error)
这对我们来说有直观的意义:一般来说,你学习的时间越多,成绩越好。换句话说,有人可能会说学习更多的时间 会导致 更高的分数。
反过来呢?如果我们只有学生得到的分数会怎么样?通过对上述内容进行一些处理,我们可以得出如下结论:
Hours Studied = [Some Other Constant Factor]
+ (Some Other Multipicative Factor)x(Grades)
+ (Random Error)
这是否意味着如果老师给学生一个 A 而不是 B,学生将学习更多的时间?当然不是!
例如,在上面的等级公式中,也许我们添加了另一个特征,工作时间(在校外工作)。如果我们广泛地假设工作时间对于财政支持是必要的,那么工作时间可能会对学习时间产生因果影响,而不是相反。因此,学习时间是工作时间的必然结果。
部分相关图
因果解释的一个有用工具是部分相关图 (PDP)。它们用于收集特性对模型预测结果的边际影响。为了大规模简化,我们可以认为它只是绘制一个特性的每个潜在值(横轴)的*均预测结果(纵轴)。为了使 PDP 对因果推理有用,所讨论的变量之间不能有任何其他变量,并且目标变量是因果后代。否则,与任何后代的互动都会影响解释。
例如,下面的 PDP 显示,*均预测自行车租金通常随着气温的升高而上升。
I too don’t like to bike when it’s humid, or windy. https://christophm.github.io/interpretable-ml-book/pdp.html
让我们用这个古老的例子来看另一个例子,波士顿房屋数据集。该数据集提供了波士顿(MEDV)中值住宅的目标和几个特征,如城镇人均犯罪率(CRIM)和氮氧化物浓度(NOX,以每 1000 万分率(pp10m 万)表示)。检查这些和剩余的可用特征并不需要太多领域的专业知识,就可以得出结论,没有一个可以合理地成为 NOX 的因果后代。更有可能的是氮氧化物受一个或多个其他特征的影响——比如“每个城镇非零售商业英亩数的比例”(INDUS)——而不是氮氧化物影响 INDUS。这个假设允许我们使用 PDP 进行因果推断:
When nitric oxide concentration increased past 0.67 pp10m, Bostonians said NO to higher house prices. Groan.
注意,该图以垂直轴为中心,表示=0。从上面我们可以推断出,中等住宅价格似乎对氮氧化物水*不敏感,直到大约 0.67 pp10m 万,中等住宅水*下降约 2000 美元。
个体条件期望图
但是如果我们不确定我们特征的因果方向呢?一个有用的工具是个人条件期望 (ICE)图。它不是根据某个特性的值绘制*均预测值,而是针对该特性的可能值为每个观察值绘制一条线。让我们通过重新查看我们的 NOX 示例来深入研究 ICE 图。
Nice ICE, baby. Please stop.
这个 ICE 图似乎支持我们在 PDP 中看到的情况:各个曲线在形状和方向上看起来都相似,并且像以前一样,在 NOX = 0.67 附*“水*”下降。
但是我们之前已经建立了理论,NOX 是数据集中一个或多个其他特征的因果衍生,因此 ICE 图仅用于确认 PDP 显示的内容。
如果我们探索一个不同的特性,“到五个波士顿就业中心的加权距离”(DIS)会怎么样?有人可能会争辩说,一个特征,如卷曲,可能是疾病的因果后代。如果我们看一个冰图:
我们发现了混合模式!在较高水*的 MEDV,随着 DIS 的增加有下降的趋势。然而!在较低水*的 MEDV,我们观察到一些曲线显示 DIS 对 MEDV 有短暂的正面影响,直到 DIS=2 左右,然后变成负面影响。
要点是,ICE 图帮助我们识别该特征可能间接影响目标,因为与一个或多个其他特征相互作用。
对于 ICE 图的另一个应用,让我们考虑一个使用无处不在的" auto mpg "数据集的例子。下面的图显示了加速度对 MPG 有一些因果影响,但很可能是通过与其他特征的相互作用。
请注意图中顶部(MPG 略微增加)、中间(减少)和下三分之一(再次增加)的线条的行为差异!
如果我们查看数据集中的其他要素,我们会发现其中一个要素对应于原点,即汽车的地理原点。这个特性可以说是所有特性的因果祖先——你需要有一个地方来建造汽车,然后你才能建造它!(我知道这过于简单化了,但仍然如此)。正因为如此,它很可能会与 MPG 产生因果关系。
冰图在这里仍然有用吗,即使这个特征是“远上游”?你打赌!让我们先来看一个可信的箱线图:
American cars guzzle gas. At least in this dataset.
该图显示了这三个地区的汽车在 MPG 方面的显著差异。但这能说明全部情况吗?
考虑下面两个冰图。第一个显示【美国(1)或欧洲(0)】对 MPG :
US (1) vs. Europe (0)
…第二个显示【日本(1)或欧洲(0)】对 MPG
Japan (1) vs. Europe (0)
起初,通过箱线图,似乎由于来源而在 MPG 中存在显著差异,ICE 图显示,当考虑到与其他特征的相互作用时,纯粹的影响可能会小一些:这些线中的大多数线的斜率比箱线图让我们想象的要*缓。
装箱
在处理所谓的黑盒算法时,我们需要使用聪明的方法来解释结果。一种观点是通过推断因果关系。一些工具可以对此有所帮助:
- 部分相关图
- 个体条件期望图(ICE 图)
- 您或您的团队自己的领域知识!虽然我们越来越多地以数据科学的名义使用许多花哨的工具,但它不能取代来之不易的领域知识和经过良好磨练的批判性思维技能。
感谢阅读!
工作文件此处。
请随意伸手!|LinkedIn|GitHub
来源:
布莱曼。统计建模:两种文化。统计科学,16(3):199–231,2001b。
统计学习导论:在 R 中的应用。斯普林格,2017。
莫尔纳尔。可解释的机器学习。https://christophm.github.io/interpretable-ml-book2019 年 6 月接入。
珍珠,1993 年。图形模型、因果关系和干预。统计科学,8(3):266–269。
赵&哈斯提。2018.黑盒模型的因果解释。http://web.stanford.edu/~hastie/Papers/pdp_zhao_final.pdf
盒子里有什么?在我们信任它之前,AI 需要解释它的决定。
原文:https://towardsdatascience.com/whats-in-the-box-ai-will-need-to-explain-its-decisions-before-we-can-trust-it-5c175224651f?source=collection_archive---------36-----------------------
XAI 可以允许人工智能技术在需要更大责任的领域扩散,但我们需要看到黑匣子的内部。
去年 12 月初,我发现自己回到了就业市场,在大学圣诞假期期间寻找一些临时的季节性工作。我对这个职位的要求并不苛刻:开始时间最好在早上 8 点以后(我刚刚结束了一项为期 5 年的轮班工作,我并不急于续约);薪酬不一定超过法律规定的最低水*,工作地点位于我所居住城市的地理范围内。除此之外,我什么都愿意做。我回复了一份网上的招聘启事,应聘一家知名高街时尚零售商的初级零售助理职位。没有任何不合理或不谦虚的期望,我真诚地开始了申请过程。
在提交任何求职信或简历之前,我需要完成一份简短的问卷。这很大程度上是由 50 个模糊不清、毫无意义的问题组成,显然是为了评估候选人的态度和对该角色的适合性。我被要求诚实地使用一个 5 分等级量表来同意或不同意一系列陈述,例如:
“有些人让我感到紧张”,
“我比大多数人获得更多的好运”。
“我倾向于假设更糟糕的事情可能会发生”。
我不知道这些分数是如何计算出来的,但我相信任何按照指示作答的候选人都不会准确描述他们的“态度”。当明确指出申请人不应该通过选择“既不同意也不反对”的选项来对冲他们的赌注时,任何明智的人如何能够回答像“当事情出错时,我总是看到光明的一面”这样的绝对主义问题?这个问题唯一合理的答案是“强烈反对”,因为即使是宇宙中最乐观的人也不可能“总是”看到光明的一面。就连基督本人在被流放到沙漠中时也感到绝望。然而,在这种情况下,“强烈反对”显然不是正确的答案,因为问一系列 50 个语义不明确的问题来评估某人是否适合一份主要职责是折叠运动衫的兼职工作是没有任何价值的。尽管这个问题的措辞很荒谬,但它显然是为了衡量候选人面对困境时的应变能力。那么申请人应该提交他们知道不正确的答案吗?
I was right.
我没有得到那份工作。我甚至没有机会提交我的简历,因为自动表格制表机立即认定我在气质上不适合折叠运动衫的角色。我抱怨选拔标准的不公*。我很愤怒,因为我没有得到任何关于我的答案的解释,也没有得到任何关于为什么我的答案不正确的解释。不公正令人愤怒。
对我来说,这是一个小挫折。不久之后,我找到了另一份(更好的)工作。我赚了足够的零花钱来确保圣诞节早上圣诞树下有礼物,还有足够的钱来买节日啤酒。圣诞节得救了。但对其他人来说,可能没有这么整齐的决议。越来越多关于就业、贷款申请、住房合适性以及其他方面的重大决策正由自动化系统做出,而这些决策无法提供解释或理由。在人工智能应用的背景下,这被称为‘黑盒’问题,并引发了严重的道德和法律问题。
Luckily for me, Christmas was saved
黑盒指的是在人工智能算法中发生的神秘、隐秘和不可知的过程。大多数人工智能系统遵循程序分析的输入层(可能是一系列数据点或图像)的一般路径,遵循由算法本身组成的中间层(这是进行分析的部分)。最后,我们有输出层——程序做出的决定。现代深度学习应用的中间层或“隐藏”层中的复杂机制本质上是不透明和不可理解的。它们可能由隐藏层中的许多子层组成,在它们之间来回传递信息,直到程序找出如何处理数据。因为算法随着每一次新的迭代或数据点“学习”,所以外部观察者无法跟踪隐藏层内发生的情况。
例如,你可以教机器学习算法识别猫的图片,方法是在不同的猫图像上训练它,直到它有足够的数据来正确分类新图像。然而,它不能告诉你新图片有什么特别像猫的地方。它可能是耳朵的形状,或者是皮毛,或者是胡须,这些都可以让算法识别出猫,或者是许多东西的组合。或者它可能是某种无形的“猫性”的例子,人眼察觉不到,算法已经发现了。如果是这样的话,我们将永远不会知道。人类能够毫无困难地解释为什么他们能够识别猫,但是机器却不能。
Cat or not-cat?
随着人工智能应用的使用变得越来越广泛,我们理解系统为什么在特定环境下做出决策变得越来越重要。如果一种算法在没有任何解释的情况下将一只猫误认为一条鱼,那么如果动物收容所决定自动执行收容程序,它可能会导致一只不开心的猫被关在鱼缸里。随着自动化系统进入医疗保健应用领域,机器可能会出现误诊的风险,这可能是由不完整的训练数据或其他故障造成的。如果不正确的人工智能决策无法解释,程序的人类设计者将无法理解为什么会做出不正确的决策或防止它再次发生。在这些情况下,人工智能决策过程的重要人类监督是必要的。
有人可能会认为,对于任何做出对人类有直接影响的决定的人工智能应用程序,都应该有合理的人类监督。事实上,今天有大量的自动化过程在运行,决策完全由无监督的算法做出,这些算法具有严重的现实世界影响。自动化程序用于计算罪犯重新犯罪的可能性,这可能会影响他们的判决或假释条件。大学正在使用预测算法来决定是否为潜在学生提供课程名额。当这些自动决定背后的原因无法得到充分解释时,人们就很难对他们认为不公*的决定提出上诉。
What is in the box?
如果算法使用的输入数据不完整,或者是劣质或不可靠的收集方法的结果(就像我写得很差的工作问卷一样),并且这导致了有争议的结果,那么决策主体必须有适当的上诉渠道。
诸如此类的担忧导致了欧盟复杂的 G.D.P.R .立法第 22 条的发布,该立法涉及自动决策:
“数据主体应有权不受制于仅基于自动处理(包括特征分析)的决定,该决定对其产生法律效力或对其产生类似的重大影响”。
这意味着,银行、政府或任何利用人类行为预测模型为决策提供信息的组织等机构,在个人是决策主体的情况下,不能仅仅依赖自动化流程。换句话说,每个人都有解释的权利。如果自动化过程是不透明和不可解释的,就像大多数传统的人工智能过程一样,那么在发生纠纷的情况下,机构就很难依靠强大而有用的工具。
例如,当一个人决定进行金融投资或终止雇佣合同时,他们在法律上和道德上都要对这个决定负责。自动化人工智能系统独立于建造它的人类设计师运行;一旦开始运行,它就自己做决定,没有任何责任或义务。当我们考虑更广泛的正义或民主问题时,这是一个非常有问题的概念。
What’s in the box?
这些考虑促成了最*人工智能的一个子类的发展,称为可解释的人工智能(或 XAI),它涉及开发允许机器学习过程变得更加透明的技术。这一概念仍处于相对初级阶段,但随着时间的推移,它可能允许在问责制和可解释性受到严重关注的领域更广泛地采用人工智能过程。
在我的下一篇文章中,我将关注一些 XAI 技术,这些技术可能会在未来几年内开始出现,它可能会特别有用的一些领域,以及一些推动该领域进步的推动者和震动者。我还将谈到这项技术的局限性及其面临的挑战。
所有观点都是我自己的观点,甲骨文公司不同意。 请随时在 LinkedIn 上联系我
对我来说 init 是什么?
原文:https://towardsdatascience.com/whats-init-for-me-d70a312da583?source=collection_archive---------2-----------------------
设计 Python 包导入模式
我最*有几次关于 Python 打包的谈话,特别是关于构造import
语句来访问包的各种模块。这是我在组织 [leiap](https://deppen8.github.io/posts/2018/09/python-packaging/)
包时不得不做的大量调查和实验。尽管如此,我还没有看到各种场景中最佳实践的好指南,所以我想在这里分享一下我的想法。
导入模式
Photo by Mick Haupt on Unsplash
设计用户如何与模块交互的关键是软件包的__init__.py
文件。这将定义用import
语句引入名称空间的内容。
模块
出于几个原因,将代码分成更小的模块通常是个好主意。主要地,模块可以包含与特定一致主题相关的所有代码(例如,所有 I/O 功能),而不会被与完全不同的东西(例如,绘图)相关的代码弄得混乱。由于这个原因,大班得到一个专用模块是很常见的(例如,geopandas
中的geodataframe.py
)。其次,将代码划分成适当的逻辑单元会使其更容易阅读和理解。
然而,对于开发者来说好的模块结构对于用户来说可能是也可能不是好的模块结构。在某些情况下,用户可能不需要知道包下面有各种模块。在其他情况下,可能有充分的理由让用户明确地只要求他们需要的模块。这就是我在这里想要探索的:不同的用例是什么,它们需要包开发人员采用什么方法。
一个示例包
Python 包有多种结构,但是让我们在这里创建一个简单的演示包,我们可以在所有的例子中使用它。
/src
/example_pkg
__init__.py
foo.py
bar.py
baz.py
setup.py
README.md
LICENSE
它由三个模块组成:foo.py
、bar.py
和baz.py
,每个模块都有一个单独的函数,打印该函数所在模块的名称。
foo.py
def foo_func():
print(‘this is a foo function’)
bar.py
def bar_func():
print(‘this is a bar function’)
baz.py
def baz_func():
print(‘this is a baz function’)
你的杂货店守则
现在是承认谈论import
语句和包结构可能很难理解的时候了,尤其是在文本中。为了让事情更清楚,让我们把 Python 包想象成一个杂货店,把用户想象成购物者。作为开发商,你是商店的所有者和管理者。你的工作是想出如何建立你的商店,让你为你的顾客提供最好的服务。您的__init__.py
文件的结构将决定设置。下面,我将介绍建立该文件的三种可选方法:普通商店、便利商店和在线商店。
综合商店
Photo by Mick Haupt on Unsplash
在这个场景中,用户可以在import example_pkg
上立即访问一切。在他们的代码中,他们只需要键入包名和他们想要的类、函数或其他对象,而不管它位于源代码的哪个模块中。
这个场景就像一个旧时代的普通商店。顾客一进门,就能看到所有商品毫不费力地摆放在商店里的箱子和货架上。
在幕后
# __init__.py
from .foo import *
from .bar import *
from .baz import *
用户实现
import example_pkgexample_pkg.foo_func()
example_pkg.bar_func()
example_pkg.baz_func()
优点
- 例如,用户不需要知道模块名或记住哪个功能在哪个模块中。他们只需要包名和函数名。在综合商店里,所有的产品都以最小的标识陈列着。顾客不需要知道去哪个通道。
- 导入顶级包后,用户可以访问任何功能。所有的东西都陈列出来了。
- Tab 补全只需
example_pkg.<TAB>
就能给你一切。制表就像杂货店的杂货商,他知道所有东西的确切位置,并且乐于提供帮助。 - 当新特性被添加到模块中时,你不需要更新任何
import
语句;它们将自动包含在内。在一般的商店里,没有花哨的招牌可以换。只要在架子上放一个新的项目。
缺点
- 要求所有函数和类必须唯一命名(即在
foo
和bar
模块中都没有名为save()
的函数)。你不想把苹果放在两个不同的箱子里,让你的顾客感到困惑。 - 如果包很大,它会给名称空间增加很多东西,并且(取决于很多因素)会减慢速度。一家普通商店可能有许多个人顾客可能不想要的小杂物。这可能会让您的客户不知所措。
- 需要更多的努力和警惕来让一些元素远离用户。例如,您可能需要使用下划线来防止函数导入(例如,
_function_name()
)。大多数普通商店没有一个大的储藏区来存放扫帚和拖把之类的东西;这些项目对客户是可见的。即使他们不太可能拿起扫帚开始扫你的地板,你也可能不希望他们这样做。在这种情况下,您必须采取额外的措施来隐藏这些供应品。
建议
- 当很难预测典型用户的工作流程时使用(例如像
pandas
或numpy
这样的通用包)。这是一般商店的“一般”部分。 - 当用户可能经常在不同模块之间来回切换时使用(例如,
leiap
包) - 当函数名和类名描述性很强且容易记忆,而指定模块名不会提高可读性时使用。如果你的产品是你熟悉的东西,比如水果和蔬菜,你就不需要很多标牌;顾客会很容易发现问题。
- 仅使用几个模块。如果有许多模块,新用户在文档中找到他们想要的功能会更加困难。如果你的综合商店太大,顾客将无法找到他们想要的东西。
- 在可能频繁添加或移除对象时使用。在普通商店添加和移除产品很容易,不会打扰顾客。
众所周知的例子
pandas
numpy
(增加了复杂性)seaborn
便利店
Photo by Caio Resende from Pexels
到目前为止,最容易阅读和理解的是一般商店场景的变体,我称之为便利店。代替from .module import *
,您可以在__init__.py
中用from .module import func
指定导入什么。
便利商店和普通商店有许多共同的特点。它的商品选择相对有限,可以随时更换,麻烦最小。顾客不需要很多标牌就能找到他们需要的东西,因为大多数商品都很容易看到。最大的区别是便利店的订单多一点。空盒子、扫帚和拖把都放在顾客看不见的地方,货架上只有待售的商品。
在幕后
# __init__.py
from .foo import foo_func
from .bar import bar_func
from .baz import baz_func
用户实现
import example_pkgexample_pkg.foo_func()
example_pkg.bar_func()
example_pkg.baz_func()
优点
分享普通商店的所有优势,并增加:
- 更容易控制哪些对象对用户可用
缺点
- 如果有许多功能多样的模块,结果会非常混乱。像普通商店一样,过于杂乱的便利店会让顾客难以浏览。
- 当新特性被添加到一个模块时(即新的类或函数),它们也必须被显式地添加到
__init__.py
文件中。现代 ide 可以帮助检测遗漏的导入,但是仍然很容易忘记。你的便利店有一些最小的标志和价格标签。当你改变书架上的东西时,你必须记得更新这些。
建议
我将在综合商店的建议中增加以下内容:
- 当您的模块或多或少由一个
Class
(例如from geopandas.geodataframe import GeoDataFrame
)组成时,这尤其有用 - 当有少量对象要导入时使用
- 当您的对象有明确的名称时使用
- 当您确切知道用户需要哪些对象,不需要哪些对象时,请使用
- 当您不希望频繁添加大量需要导入的新模块和对象时,请使用。
众所周知的例子
geopandas
网上购物
Photo by Pickawood on Unsplash
任何在网上买过杂货的人都知道,订购正确的产品可能需要顾客付出一些努力。你必须搜索产品、选择品牌、选择想要的尺寸等等。然而,所有这些步骤都可以让你从一个几乎无限的仓库里买到你想要的东西。
在 Python 包的情况下,在某些情况下,避免简单地导入整个包的便利性,而是迫使用户更清楚地知道导入的是什么部分,可能会更谨慎。这使得作为开发人员的您可以在不影响用户的情况下在包中包含更多的内容。
在幕后
# __init__.py
import example_pkg.foo
import example_pkg.bar
import example_pkg.baz
用户实现
在这种情况下,用户可以采用(至少)三种不同的方法。
import example_pkgexample_pkg.foo.foo_func()
example_pkg.bar.bar_func()
example_pkg.bar.baz_func()
或者
from example_pkg import foo, bar, bazfoo.foo_func()
bar.bar_func()
baz.baz_func()
或者
import example_pkg.foo as ex_foo
import example_pkg.bar as ex_bar
import example_pkg.baz as ex_bazex_foo.foo_func()
ex_bar.bar_func()
ex_baz.baz_func()
优点
- 简化了
__init__.py
文件。仅在添加新模块时需要更新。更新你的网上商店相对容易。您只需更改产品数据库中的设置。 - 它是灵活的。它可用于仅导入用户需要的内容或导入所有内容。网上商店的顾客可以只搜索他们想要或需要的东西。当你需要的只是一个苹果时,就没有必要再去翻“水果”箱了。但是如果他们真的想要“水果”箱里的所有东西,他们也可以得到。
- 别名可以清理长的 package.module 规范(如
import matplotlib.pyplot as plt
)。虽然网上购物一开始会很痛苦,但如果你把购物清单留到以后再用,购物会快很多。 - 可以有多个同名的对象(例如在
foo
和bar
模块中都被称为save()
的函数)
缺点
- 一些导入方法会使代码更难阅读。例如,
foo.foo_func()
并不表示foo
来自哪个包。 - 可读性最强的方法(
import example_pkg
,没有别名)可能会产生很长的代码块(例如example_pkg.foo.foo_func()
),使事情变得混乱。 - 用户可能很难找到所有可能的功能。在你的网上杂货店,购物者很难看到所有可能的商品。
建议
- 当您有一个复杂的模块系列时使用,其中的大部分任何一个用户都不会需要。
- 当
import example_pkg
导入大量对象并且可能很慢时使用。 - 当您可以为不同类型的用户定义非常清晰的工作流时使用。
- 当您希望用户能够很好地浏览您的文档时使用。
例题
matplotlib
*scikit-learn
*bokeh
*scipy
*
*这些包实际上在它们的__init__.py
文件中使用了不同方法的组合。我在这里包括它们是因为对于用户来说,它们通常是按菜单使用的(例如,import matplotlib.pyplot as plt
或import scipy.stats.kde
)。
结论
我概述的三个场景当然不是 Python 包的唯一可能的结构,但是我希望它们涵盖了任何从博客中了解到这一点的人可能会考虑的大多数情况。最后,我将回到我之前说过的一点:对于开发者来说好的模块结构对于用户来说可能是也可能不是好的模块结构。无论你做什么决定,不要忘记站在用户的角度考虑问题,因为那个用户很可能就是你。
逻辑回归的线性是什么
原文:https://towardsdatascience.com/whats-linear-about-logistic-regression-7c879eb806ad?source=collection_archive---------6-----------------------
在逻辑回归中,我们如何从决策边界到概率?
已经有很多关于逻辑回归的令人惊讶的文章和视频,但我很难理解概率和逻辑线性之间的联系,所以我想我应该在这里为自己和那些可能经历同样事情的人记录下来。
这也将揭示逻辑回归的“逻辑”部分来自哪里!
这篇博客的重点是对逻辑模型和线性模型之间的关系建立一个直观的理解,所以我只是做一个什么是逻辑回归的概述,并深入这种关系。为了更完整地解释这个令人敬畏的算法,这里有一些我最喜欢的资源:
- https://www.youtube.com/watch?v=-la3q9d7AKQ
- https://towards data science . com/logistic-regression-detailed-overview-46 C4 da 4303 BC
- https://ml-cheat sheet . readthedocs . io/en/latest/logistic _ regression . html
- https://christophm . github . io/interpretable-ml-book/logistic . html
现在让我们来看看逻辑回归的要点。
什么是逻辑回归?
与线性回归一样,逻辑回归用于建模一组自变量和因变量之间的关系。
与线性回归不同,因变量是分类变量,这就是它被视为分类算法的原因。
逻辑回归可用于预测:
- 电子邮件是垃圾邮件还是非垃圾邮件
- 肿瘤是不是恶性的
- 一个学生将通过或不通过考试
- 我会后悔在凌晨 12 点吃饼干
上面列出的应用是二项式/二元逻辑回归的例子,其中目标是二分的(2 个可能的值),但是你可以有 2 个以上的类(多项逻辑回归)。
这些分类是基于模型产生的概率和某个阈值(通常为 0.5)进行的。如果一个学生通过的概率大于 0.5,则她被预测为通过。
让我们开始探究这些概率是如何计算的。
乙状函数
如果我们可视化一个带有二进制目标变量的数据集,我们会得到这样的结果:
这里有几个原因可以解释为什么拟合直线可能不是一个好主意:
- 在线性回归中,因变量的范围可以从负 inf 到正 inf,但是我们试图预测应该在 0 和 1 之间的概率。
- 即使我们创建了一些规则来将这些越界值映射到标签,分类器也会对离群值非常敏感,这会对其性能产生不利影响。
因此,我们用在 0 和 1 附*变*的 S 形来代替直线:
source
这被称为 sigmoid 函数,其形式如下:
此函数根据某些因素的组合返回某个观察值属于某个类的概率。
如果我们求解线性函数,我们会得到几率的对数或者是 logit:
注意当 p(x) ≥0.5,βX ≥ 0 时。
但是等一下,这个神奇的函数是从哪里来的,线性模型是怎么进去的?为了回答这个问题,我们来看看逻辑回归是如何形成其决策边界的。
决定边界
每个伟大的逻辑回归模型背后都有一个不可观察的(潜在的)线性回归模型,因为它真正试图回答的问题是:
"给定一些特征 x,一个观察值属于第一类的概率是多少?"
让我们看一个例子。
假设我们想根据一个学生花了多少时间学习和睡觉来预测她是否能通过考试:
Source: scilab
让我们通过绘制针对 Slept 的 Studied 来更好地理解我们的数据,并对我们的类进行颜色编码以可视化这种分离:
import pandas as pd
import matplotlib
import matplotlib.pyplot as pltexams = pd.read_csv('data_classification.csv', names=['Studied','Slept','Passed'])fig = plt.figure()
ax = fig.add_subplot(111)colors = [‘red’, ’blue’]ax.scatter(exams.Studied, exams.Slept, s=25, marker=”o”, c=exams[‘Passed’], cmap=matplotlib.colors.ListedColormap(colors))
看着这个图,我们可以假设一些关系:
- 花足够的时间学习并且睡眠充足的学生很可能通过考试
- 睡眠少于 2 小时但花了 8 小时以上学习的学生可能仍然会通过(我肯定在这个组里)
- 偷懒不睡觉的学生可能已经接受了他们通不过的命运
这里的想法是,这两个类别之间有一条清晰的分界线,我们希望逻辑回归能为我们找到这一点。让我们拟合一个逻辑回归模型,并用模型的决策边界覆盖这个图。
from sklearn.linear_model import LogisticRegressionfeatures = exams.drop(['Passed'],axis=1)
target = exams['Passed']logmodel = LogisticRegression()
logmodel.fit(features, target)
predictions = logmodel.predict(features)
您可以打印出参数估计值:
利用这些估计,我们可以计算出边界。因为我们的阈值设置为 0.5,所以我将 logit 保持在 0。这也允许我们在 2d 中查看边界:
exams['boundary'] = (-logmodel.intercept_[0] - (logmodel.coef_[0][0] * features['Studied'])) / logmodel.coef_[0][1]
在我们的散点图上看起来是这样的:
plt.scatter(exams['Studied'],exams['Slept'], s=25, marker="o", c=exams['Passed'], cmap=matplotlib.colors.ListedColormap(colors))plt.plot(exams['Studied'], exams['boundary'])plt.show()
这看起来很合理!那么 Logistic 回归是如何利用这条线来分配类标签的呢?它着眼于每个单独的观察和线性模型之间的距离。它会将这条线以上的所有点标记为 1,下面的所有点标记为 0。这条线上的任何点都可能属于任何一类(概率为 0.5),所以为了将一个点分类为 1,我们感兴趣的是这条线和我们的观察之间的距离大于 0 的概率。
事实证明,在逻辑回归中,这个距离被假定为遵循逻辑分布。
换句话说,逻辑回归中潜在线性回归模型的误差项被假定为服从逻辑分布。
这意味着当我们问:
我们真的在问:
为了计算这种概率,我们对逻辑分布进行积分,以获得其累积分布函数:
哦嘿!是乙状结肠函数:)。
Tada!您现在应该能够更直观地在 sigmoid 函数和线性回归函数之间来回走动了。我希望理解这种联系能让你和我一样对逻辑回归有更高的评价。
TensorFlow 2.0 有什么新功能?
原文:https://towardsdatascience.com/whats-new-in-tensorflow-2-0-ce75cdd1a4d1?source=collection_archive---------5-----------------------
从 2015 年 11 月谷歌大脑团队的最初开源发布开始,机器学习库 TensorFlow 已经有了很长的发布历史。TensorFlow 最初在内部开发,名为dist faith,很快成为当今使用最广泛的机器学习库。不是没有原因的。
Number of repository stars over time for the most widely used machine learning libraries
张量流 1。XX —我们今天在哪里?
在我们讨论 TensorFlow 2.0 最重要的变化之前,让我们快速回顾一下 TensorFlow 1 的一些基本方面。XX:
语言支持
Python 是 TensorFlow 支持的第一种客户端语言,目前支持 TensorFlow 生态系统中的大多数功能。如今,TensorFlow 可以在多种编程语言中使用。TensorFlow 核心是用纯 C++编写的,以获得更好的性能,并通过 C API 公开。除了与 Python 2.7/3.4–3.7 的绑定,TensorFlow 还提供对 JavaScript(Tensorflow . js)、Rust 和 r 的支持。尤其是语法简单的 Python API,与 C/C++脆弱的显式性相比,tensor flow 迅速超越了早期的竞争对手 Caffe 机器学习库。
计算图
从一开始,TensorFlow 的核心就是所谓的计算图。在这个图模型中,每个操作(加、乘、减、取对数、矩阵向量代数、复函数、广播……)以及变量/常数都由有向图中的一个节点定义。图的有向边将节点相互连接,并定义信息/数据从一个节点流向下一个节点的方向。存在从外部将信息输入到计算图中的输入节点,以及输出经处理的数据的输出节点。
定义图表后,可以对输入图表的数据执行该图表。因此,数据' '流经图中的 ',改变其内容和形状,并转化为图的输出。数据通常可以表示为多维数组,或 张量 ,因而得名 TensorFlow 。
使用该模型,很容易使用这些节点来定义神经网络的架构。神经网络的每一层都可以理解为计算图中的一个特殊节点。TensorFlow API 中有许多预定义的操作,但用户当然可以定义自己的自定义操作。但是请记住,可以使用计算图来定义任意计算,而不仅仅是机器学习环境中的操作。
图形由 as TensorFlow 会话 : tf 调用。会话()。一个会话可以将运行选项作为参数,例如图形应该在多少个 GPU 上执行,GPU 上内存分配的细节等等。一旦必要的数据可用,就可以使用 tf 将其输入到计算图中。Session.run()方法,所有神奇的事情都发生在其中。
梯度
为了使用诸如随机梯度下降的优化算法来训练神经网络,我们需要网络中所有操作的梯度的定义。否则,不可能在网络上执行反向传播。幸运的是,TensorFlow 为我们提供了自动微分,因此我们只需定义信息通过网络的前向传递。自动推断误差通过所有层的反向传递。这个特性并不是 TensorFlow 独有的——所有当前的 ML 库都提供自动区分。
库达
从一开始,TensorFlow 的重点就是让计算图在 GPU 上执行。它们的高度并行架构为训练机器学习库所必需的过量矩阵向量算法提供了理想的性能。NVIDIA CUDA(CcomputerUnifiedDdeviceAarchitecture)API 允许 TensorFlow 在 NVIDIA GPU 上执行任意操作。
还有一些项目的目标是将 TensorFlow 暴露给任何兼容 OpenCL 的设备(即 AMD GPUs)。然而,英伟达仍然是深度学习 GPU 硬件的明确冠军,这不仅仅是因为 CUDA+TensorFlow 的成功。
在您的机器上获得 CUDA 的工作安装,包括 CuDNN 和适用于您的 GPU 的正确 NVIDIA 驱动程序可能是一种痛苦的体验(尤其是因为并非所有 TensorFlow 版本都与所有 CUDA/CuDNN/NVIDIA 驱动程序版本兼容,并且您懒得看一下版本兼容性页面),但是,一旦 TensorFlow 可以使用您的 GPU,您将会发现性能有了显著提升。
多 GPU 支持
大规模机器学习任务需要访问多个 GPU,以便快速产生结果。足够大的深度神经网络有太多的参数,无法将它们全部放入单个 GPU 中。TensorFlow 让用户可以轻松地声明应该在哪些设备(GPU 或 CPU)上执行计算图。
Multi-GPU computation model (source: https://www.tensorflow.org/tutorials/images/deep_cnn)
急切的执行
张量流计算图是处理信息的强大模型。然而,从一开始批评的一个要点就是调试这样的图形的困难。有这样的陈述
变量 c 的内容并不像预期的那样是 4.0,而是一个 TensorFlow 节点,还没有给它赋值。只有在调用图形并在图形上运行会话之后,才能测试这种语句的有效性(以及该语句可能引入的错误)。
于是,TensorFlow 发布了急切执行模式,为此每个节点在定义后立即执行。因此,使用 tf.placeholder 的语句不再有效。导入 TensorFlow 后,只需使用 tf.eager_execution() 调用急切执行模式。
TensorFlow 的急切执行是一个命令式编程环境,它立即计算操作,而不构建图形:操作返回具体值,而不是构建一个计算图形供以后运行。这种方法的优点是更容易调试所有计算,使用 Python 语句而不是图形控制流的自然控制流,以及直观的界面。渴望模式的缺点是性能降低,因为图形级优化(如公共子表达式删除和常量折叠)不再可用。
调试器
TensorFlow 调试器( tfdbg )允许您在训练和推理过程中查看运行 TensorFlow 图的内部结构和状态,这是使用 Python 的 dbg 到 TensorFlow 的计算图范式等通用调试器难以调试的。它被认为是对调试 TensorFlow 程序困难的批评的回答。TensorBoard 有一个命令行界面和一个调试插件(下面有更多信息),允许你检查调试的计算图。详细介绍请找https://www.tensorflow.org/guide/debugger。
张量板
您可以使用 TensorBoard 来可视化您的 TensorFlow 图形,绘制有关图形执行的量化指标,并显示其他数据,如在训练或推断过程中通过它的图像。如果您希望在计算图中可视化任何类型的可用数据,这绝对是一个不错的选择。虽然 TensorBoard 最初是作为 TensorFlow 的一部分引入的,但它现在位于自己的 GitHub 存储库中。但是在安装 TensorFlow 本身的时候会自动安装。
TensoBoard 不仅可用于可视化训练或评估数据,例如作为步数函数的损失/准确度,还可用于可视化图像数据或声音波形。了解 TensorBoard 的最佳方式是看一看 https://www.tensorflow.org/guide/summaries_and_tensorboard。
TPU 支持
TPU(张量处理单元)是高度并行的计算单元,专门设计用于高效处理多维数组(也称为张量),这在机器学习中特别有用。由于其专用集成电路 (ASIC)设计,它们是当今机器学习应用中速度最快的处理器。截至今天,谷歌的 TPU 是专有的,不为任何私人消费者或企业所用。它们是谷歌计算引擎的一部分,在那里你可以租用能够访问 TPU 的计算实例,以满足你的大规模机器学习需求。不用说,谷歌的目标是让每一个 TensorFlow 操作都可以在 TPU 设备上执行,以进一步加强其在不断增长的云计算市场的地位。
但是,您可以在 Google Colab 中亲自测试单个 TPU 的性能,这是一个可以托管和执行 Jupyter 笔记本的*台,可以免费访问 Google 计算引擎上的 CPU/GPU 或 TPU 实例!小介绍,点击这里。
滕索特
虽然神经网络训练通常发生在有时具有多个 GPU 的强大硬件上,但神经网络推理通常发生在本地消费设备上(除非原始数据被传输到另一个云服务,并且推理发生在那里),例如自动驾驶汽车的车载计算机甚至手机。NVIDIA 提供了一个名为tensort的模块,该模块采用 TensorFlow API 表示的训练过的神经网络的张量流图,并将其转换为专门针对推理优化的计算图。与 TensorFlow 本身的推理相比,这通常会带来显著的性能提升。关于 TensorRT 的介绍,点击这里。
tf .贡献
TensorFlow 在 GitHub 上有一个充满活力的社区,为 TensorFlow 的核心和外围设备添加了相当多的功能(显然是谷歌开源 TensorFlow 的一个有力论据)。这些模块大部分都收集在 tf.contrib 模块中。由于 TensorFlow 的高市场份额,在这里可以找到相当多的模块,否则您必须自己实现。
张量流集线器
TensorFlow Hub 是一个用于发布、发现和消费机器学习模型的可重用部分的库。一个模块是一个张量流图的独立部分,以及它的权重和资产,可以在一个称为迁移学习的过程中跨不同的任务重用。【0】
更多,更多,更多
有太多要谈的了。TensorFlow 生态系统的哪些组件至少应该提及?
- TensorFlow Docker 容器:包含预装 TensorFlow 的 Docker 容器,包括 Docker 容器内图形处理器上图形执行的 CUDA 兼容性
- tensor flow Lite:tensor flow Lite 是一个开源的深度学习框架,用于嵌入式系统和手机等设备上的设备上推理。
- TensorFlow Extended(TFX):TFX 是基于 tensor flow 的 Google 量产级机器学习*台。它提供了一个配置框架和共享库来集成定义、启动和监控机器学习系统所需的通用组件。【1】
什么糟透了?
TensorFlow 的优势之一,即计算图,可以说也是它的弱点之一。虽然静态计算图无疑提高了性能(因为图级优化可能发生在图构建之后和执行之前),但它也使调试图变得困难和繁琐——即使使用 TensorFlow 调试器这样的工具也是如此。此外,基准测试表明,其他几个框架可以与 TensorFlow 在同等条件下竞争,同时保持更简单的语法。此外,首先构建一个图,然后使用 tf 实例化它。Sessions 不是很直观,肯定会让一些没有经验的用户感到害怕或困惑。
TensorFlow API 可能也有弱点,即这里讨论的。一些用户抱怨使用 TensorFlow API 时的低级感,即使是在解决高级任务时。对于简单的任务,比如训练线性分类器,需要很多样板代码。
TensorFlow 2.0 —新增功能?
在深入研究了 TensorFlow 1 之后。XX,大 2 会有什么变化?TensorFlow 团队对过去的一些批评做出回应了吗?有什么理由称之为 2.0 版,而不是 1.14 版呢?
Image source: https://www.tensorflow.org/
在多个博客帖子和公告中,已经揭示了 TF2.0 的一些未来特性。此外,TF2.0 API 参考列表已经公开发布。虽然 TF2.0 仍处于 alpha 版本,但预计官方测试版、候选发布版和最终发布版将于今年晚些时候推出。
让我们仔细看看 TF2.0 的一些新奇之处:
- 再见 tf ,你好TF . keras
一段时间以来,TensorFlow 已经提供了 tf.keras API 作为 TensorFlow 模块的一部分,提供了与 keras 机器学习库相同的语法。Keras 因其用于定义网络架构和训练网络架构的简单而直观的 API 而广受好评。Keras 与 TensorFlow 的其余部分紧密集成,因此您可以随时访问 TensorFlow 的功能。Keras API 使 TensorFlow 易于上手。重要的是,Keras 提供了几个模型构建 API(顺序的、功能的和子类化的),因此您可以为您的项目选择正确的抽象级别。TensorFlow 的实现包含增强功能,包括用于即时迭代和直观调试的急切执行,以及用于构建可扩展输入管道的 tf.data。
- tf.data
训练数据通过使用 tf.data 创建的输入管道读取。这将是声明输入管道的首选方式。为会话使用 tf .占位符和 feed dicts 的管道仍将在 TensorFlow v1 兼容模式下工作,但将不再受益于后续 tf2.0 版本的性能改进。
- 急切执行默认
TensorFlow 2.0 默认以急切执行方式运行(前面讨论过),以便于使用和顺利调试。
- RIP tf.contrib
tf.contrib 中的大部分模块将在 tf2.0 中贬值,要么被移到核心 TensorFlow 中,要么被一起移除。
- tf.function 装饰师
tf.function 函数装饰器透明地将你的 Python 程序翻译成张量流图。这个过程保留了 1.x TensorFlow 基于图形的执行的所有优点:性能优化、远程执行以及序列化、导出和部署的能力,同时增加了用简单 Python 表达程序的灵活性和易用性。在我看来,这是 v1 最大的变化和范式转变。x 到 v2.0。
- 不再 tf。会话()
当急切地执行代码时,将不再需要会话实例化和运行计算图。这简化了许多 API 调用,并从代码库中删除了一些样板代码。
- 张量流 1。XX 遗留代码
仍然可以运行 tf1。tf2 中的 XX 代码没有任何修改,但这并不能让您利用 TensorFlow 2.0 中的许多改进。相反,您可以尝试运行一个自动转换旧 tf1 的转换脚本。XX 呼叫到 tf2 呼叫,如果可能的话。如果需要,从 tf1 到 tf2 的详细的迁移指南将为您提供更多信息。
我希望你喜欢这个小概述,下次再见!
快乐张量流!
进一步阅读
- 有效的 https://www.tensorflow.org/alpha/guide/effective_tf2:
- TF2 有什么新鲜事?:https://medium . com/tensor flow/whats-coming-in-tensor flow-2-0-d 3663832 e9 b 8
车床 0.0.3 有什么新看点?
原文:https://towardsdatascience.com/whats-new-to-see-in-lathe-0-0-3-78b2623bc135?source=collection_archive---------23-----------------------
这是官方的,车床 0.0.3 已经发布,是非常有用的一个非常基本的阿尔法建设。我想我会给出一个新功能的运行,并给出对未来的洞察力。我已经在几个 ML 项目中使用过 Lathe,目前我正在为用 Julia 构建的人工智能驱动的网络应用程序开发一个重要的 Genie 实现,这对任何想学习 Julia 的人来说都是令人兴奋的。
证明文件
软件文档是开发一个伟大产品最不可或缺的一部分,没有开发者债务。优秀的文档可以成就或毁灭一个模块、应用程序或网站。该文档仍处于早期阶段,但将来肯定会很快得到改进。包含并链接了信息文章和走查笔记本,以提供准确的实际使用和应用示例。
新执照
许可证对于软件的成功也非常关键,这就是为什么 Lathe 从 GNU 通用许可证转换到 MIT 许可证的原因。大部分的许可模型被保留,然而,MIT 许可允许更好的发布和合法使用车床。如果你想了解更多关于麻省理工学院许可证的信息,请点击维基百科上的。
更多预处理
这是官方的,车床比以往任何时候都更可用,提供了预测建模的基本要素,如 TrainTestSplit、和功能标量,以提高您的模型的性能。
using Lathe.preprocess: TrainTestSplit, StandardScalar
train,test = TrainTestSplit(data)
trainx = StandardScalar(train.Feature)
此外,现在已经实现了 SortSplit,以及一些不太突出的特性标量的一些错误。现在,要拆分数组,而不是数据帧,可以使用 Lathe.preprocess.ArraySplit。
更多统计数据
已经实现了一个更大的统计库,现在允许执行 f 检验和条件概率。相关系数(r)的基本数学也已经实现。此外,还概述了未来实施统计的路线图,如皮尔逊相关、符号检验、Wilcoxon 检验、方差分析、配对 T 检验以及最后但并非最不重要的;卡方检验。
更多验证
很明显,车床 Alpha 0 . 0 . 3–0 . 0 . 4 的主要目标是回归,简单的 MAE 并不能完全解决这个问题..结果,我们现在有了 r 分数。未来的实现旨在以广义准确度、二项式分布、ROC/AUC 和混淆矩阵的形式提供您可能想要的所有验证。
新型号
很少有什么能像新模型那样让我兴奋,我们将能够在 Julia 的车床内部使用这些新模型。
- 多数类基线
当然,这不一定是一个模型,但这可以作为一个单一的分类很快来到车床说明。多数类基线类似于分类数据的模式,是构建和验证模型之前的基线步骤。
- 四方形
四方形模型基于四分位数拟合您的数据,对于快速拟合包含多个部分的数据非常有用。虽然 Four-Square 已经享受了这个生态系统一段适中的时间,但是模型本身已经从简单的线性回归器变成了线性最小二乘回归器。
- 线性最小二乘法
线性最小二乘法是一种简单的线性模型,可通过以下任何类型参数进行更改:
- :注册
- :OLS
- :WLS
- :GLS
- :GRG
如果你想了解更多关于这些的意思,以及它们之间的区别,你可以查看维基百科对它们的描述。
- 指数标量
该模型使用值差异进行随机猜测。这个模型的用例当然是在业务分析中。
接下来会发生什么?
- 更多统计数据
- 更多验证
- 更多预处理包括:
- 单位 L 标度
- 任意重新标度
- 更多型号包括:
- 逻辑回归
- 里脊回归
- 回归树
总的来说,我对这个模块的未来感到非常兴奋。我预计,对于像我这样的数据科学家来说,这会让朱莉娅变得更加迷人。目前,这些包是无组织的,分散在 Github 中,通常都没有什么文档。我希望更多的人会考虑使用它,也许会尝试将它作为 Julia 1.2 的首选模块。
地图应用的下一步是什么?途中旅程规划。
原文:https://towardsdatascience.com/whats-next-for-mapping-apps-on-route-journey-planning-918763239f6f?source=collection_archive---------21-----------------------
Photo by Nic Y-C on Unsplash
想象一下。你在路上——你收到一条消息,你的会面地点改变了。但是你已经在火车上了——你需要找到去新地点的路线。但是问题出现了,应用程序没有意识到你已经在火车上了!建议的步骤 1——走回你刚来的车站…
Typical situation when setting a new destination whilst on route.
这个博客上的一些笔记
这篇博客的目的是概述这个问题,并通过数据科学的方法来解决它。
为了提高可访问性,这个博客的大部分内容将会考虑到普通读者;标有“向上”和斜体的部分将涉及更多的技术细节——所以如果你不喜欢,请跳过其余的部分,它们仍然有意义!理解博客的其余部分没有先决条件!
我们开始吧!
问题大纲;如果你现在改变你的目的地,起始位置将作为你当前的位置,因为你在火车上,应该在一条铁路线(希望)上,如果你还没有在火车上,这是一个非常奇怪的开始旅行的地方。您有用的地图应用程序将为您提供从最*的步行点出发的路线,但没有考虑到您可能在火车上,第一步很可能是步行/乘坐交通工具到最*的车站-尽管事实上您目前正在它提议的线路上的火车上。
我们要使用的示例是从阿克顿镇到国王十字车站的更新目的地的路线。
现在你的地图应用程序告诉你,你需要步行 11 分钟回到阿克顿镇,才能在你目前所在的线路上赶上火车!(反正你也不可能下火车去做这件事)。
所以你认为;啊,我会把我的位置设置到我的下一站(哈默史密斯),然后按照那里的指示走——首要建议:乘环线到国王十字车站。完美…或者不完全完美。
Circle Line from Hammersmith to King’s Cross
如果站在哈默史密斯,这个应用程序是绝对正确的,而不是现在在火车上,下一趟火车是环线,那么很可能最快的方式是这样。然而,你的情况并非如此。
从哈默史密斯到国王十字车站有两种直接选择,皮卡迪利线和环线——都需要 26 分钟。
Piccadilly Line from Hammersmith to King’s Cross
这里重要的是上下文;将你的位置设置为哈默史密斯,应用程序并不知道你实际上已经在开往国王十字车站的皮卡迪利线上。由于哈默史密斯站分为两个部分,在两个站台之间步行 4-5 分钟,您可能需要等待长达 5 分钟的环线列车。乘坐环线列车比留在皮卡迪利线列车上至少多花 5 分钟,可能多花 10 分钟——相当于多花 40%的时间!
能做些什么?
这似乎是一个极好的数据科学问题;我们需要使用可用的数据为最终用户提供洞察力!
这里提供了一个关于如何着手解决问题的可能解释;有许多挑战——这篇博客并没有暗示这个问题的解决方案是容易的!
为了构建思维过程,我们将遵循 OSEMN 数据科学结构(获取、筛选、探索、建模、解释)。
获得
这里需要两个关键信息流:
- 用户的位置
- 用户当前可能乘坐的潜在交通方式(火车线路、公共汽车线路、电车线路等)
问题的关键是能够将用户与该交通模式的特定实例(火车、公共汽车或电车)相匹配。
让我们先来看看关于每一项的可用信息:
用户:
- GPS 信息(将给出位置、时间)
传输实例:
- 途径
- 日程表/时间表
- 实际到达/离开时间是站/站
我们想要匹配什么:
- 位置
- 方向
- 时间
在本次讨论中,我们将采用一个简单的(通过比较)例子,我们将使用从南阿克顿到阿克顿中心的一段里士满/斯特拉特福德地上线路。
是什么让这个例子变得更简单?我们将在后面的探索阶段讨论是什么使这个例子变得更简单——现在我们只是直观地将其与国王十字车站及其众多的交通线路进行比较。
对于用户来说,主要信息将是 GPS 馈送;以下是用户的典型数据集,包括时间、纬度和经度。
对于地上列车,主要的数据馈送将是提供关于列车的实时信息的 TfL API。在列车双向通过的情况下,线路至少应具备以下条件。为了提高认识,需要考虑更大部分的生产线:
作为实时时刻表,不是所有的“实际”信息都是可用的,无论信息是从左到右还是从右到左填充,都指示列车的方向。
矮树
两个数据集都可能出现错误,我们将简要了解如何识别这些错误。
用户
对于用户提供的数据,使用标准异常值分析技术,例如分析点的分布,误差最有可能在 GPS 位置(而不是时间)。
升级
可以相当安全地假设 GPS 定位中的误差将遵循正态分布。值得注意的是,由于这两个分量是通过相同的机制(手机中的 GPS 芯片)生成的,因此误差相关的概率很高;即经度上的误差更有可能也看到纬度上的误差。因此,这应被视为多变量异常值检测,Z-Score 将是此问题的合适选择。
TfL — API
对于用户来说,应用程序接收的信息来自安装它的手机(即直接来自 GPS 芯片)——因此信息源可能非常稳定(如果不是可变的话)。TfL 数据的主要挑战之一是获取数据并确保获取的数据是预期的数据。
本例中的简单方法如下:
- 检查数据类型;它在应该在的地方是字符串还是整数
- 检查年表;所有数据点是否都按照适当的顺序排列
- 检查规律性;一个旅程的站与站之间的时间是否比其他所有旅程都要短
该数据集具有更高程度的稀疏性-对于用户 GPS 数据,站点之间可能有数百个数据点,而对于 TfL 数据,每个站点可能只有一个数据点。考虑这一点的一种机制是查看旅程之间的分布,而不是每个旅程。
映射数据
除了知道火车什么时候会在特定的点,我们还需要知道这些点在哪里,对用户来说也是一样;在这一点上,我们可能需要匹配不同的数据源,这可能是一个挑战。我们将在探索阶段更详细地讨论这一点。XX —可能更新
探索
在这个阶段,重要的是要记住,我们遵循这个过程是为了让我们能够建立一个模型;这不一定是建模过程中实际遵循的过程。因此,我们能够收集额外的数据,帮助我们了解正在发生的事情——这通常太具挑战性/劳动密集型,或者在实施模型时根本不可用。
因此,首先为了更好地理解,我们将在地图上绘制用户 GPS 数据。
这使我们能够识别出大致沿着铁路线的点,对于这种情况,在同一路线上没有可比较的其他交通模式路线,但是也显示出可能至少有一个异常值。
首先回顾一下我们试图确定的内容:
- 位置
- 方向
- 时间
如果我们可以为用户和列车识别这些,我们可以“匹配”它们,并且根据数据的变化和其他可能匹配的接*程度,说出用户在该列车上的可能性有多大。
通过本探索部分,我们将回顾如何为用户和培训实现这两个目标。
用户
位置——幸运的是,大部分预处理发生在芯片/手机中,以提供已经相对准确的点测量(我们不太可能提高点定位的准确性)。
等级上升
为什么我们使用位置而不是路线,这样会更准确?简单地说,是的——我们稍后将首先研究*似路线的好处。
方向——这个更复杂;然而,幸运的是,对于这个例子,我们不需要高水*的方向精度,简单地说,我们需要知道用户是向北还是向南行进..移动*均线可能会处理数据集中的任何自然变化,并在经度/纬度上提供足够准确的值变化,由此可以得到矢量(下面的红色部分),即方向。
严格地说,这也给出了一个指示或速度,但是我们不能从列车数据中获得足够的数据来利用速度作为预测。
时间——很简单,这是由电话提供的。
火车
位置-列车具有高度精确的路线,但是相对于时间数据具有稀疏的位置(即,相对于时间的位置仅在车站是已知的)。
在路线上的某些点(即车站),火车的位置是高度确定的。相对于火车的时间来*似位置的简单方法是假设时间和距离之间的线性关系。
Assuming travel from South Acton to Acton Central
等级上升
这是一个非常简单的假设;并且在很多情况下都不成立——我们将在后面研究其影响和可能的缓解措施。
模型
主要的建模限制之一是速度;用户期望非常高的响应水*,因此模型必须保持足够简单以快速运行(这也将降低处理成本)。当考虑更复杂的路线时,这将成为一个特别的挑战。
让我们快速回顾一下这两个数据集及其属性:
列车
- 高度精确的路线和车站位置数据
- 稀疏但相对精确的时间数据
用户
- 频繁、可变精度的位置数据和高精度的时间数据
该模型的目的是确定数据点属于哪一类,这可以在下图中看到。还包括另一种可能的运输方式,模型需要在这两种方式之间进行识别。
在这个简单的例子中,通过简单地将用户数据点序列与相似位置的交通模式进行比较,可以很容易地看出如何在不同的模式/路线之间进行识别。蓝框中的数据点很容易标记,但红框中的数据点更具挑战性,这就是模型调整变得非常重要的地方,尤其是在使用较小数据集的情况下。
向上-模型选择
可用于这种简单情况的简单但有效的模型是 k-最*邻分类模型——将数据点与其最*的数据点进行比较,并标记为数量较大的类别(更多信息 此处 )
向上级别—更高的维度
这是一种过度简化,因为为了能够获得实例(即特定列车)而不仅仅是模式(路线),实际模型上方显示的二维图将至少有 5 个维度(长、横、变长、变横、时间),这允许模型考虑到我们目前使用的三个预测特征;地点、方向&时间。
该模型可以在分类器 user - > transport instance 或 transport instance - > user 中配置;在这种情况下,传输实例是带标签的数据集,因此用户应该与传输实例匹配。
下面是一个示例数据集,它可能是这个简单模型的输入。
Example data input into model
升级—模型验证
改进该模型的挑战之一是缺乏标记的用户数据——该应用程序不一定会得到任何验证,即预测用户乘坐的火车实际上就是用户乘坐的火车;换句话说,数据集没有被“标记”。该模型为单个用户运行的时间越长,该模型可以确定其预测是否准确的概率水*越高-例如,如果用户乘坐 10 站,并且用户的轨迹与每一站的火车匹配,则用户更有可能乘坐该火车。这个提高的概率可以用来给出一个假定的标签。
口译
因此,我们已经成功地识别了用户是在哪个运输模式实例上(简单地说,在这种情况下,用户是在哪个列车上)——我们如何使用它呢?
用户可能对他们是在火车上而不是在公共汽车上不感兴趣(希望他们已经意识到这一点)——但是我们能做的是开始解决突出的问题;为已经在运动中的用户生成路线计划。通过使用我们已经收集、探索和建模的数据,我们能够指示用户已经在皮卡迪利线上,并且可以给出更有用的线“在哈默史密斯站继续在皮卡迪利线上”,而不是“在哈默史密斯站登上下一趟环线列车”;阻止比最佳时间长 40%的建议!
改进的关键机会
机会 1
预测车站间列车相对于时间的位置的过于简单的模型。实际上不太可能是线性的,因为火车的速度可能在站与站之间变化。
克服这一点的一种机制是相对于站之间的时间来改进位置模型;这可以在用户数据的帮助下(当然是在许可的情况下)完成,以提供额外的数据。也有可能从 TfL 获得额外的数据,即路段而不仅仅是车站的数据。
升级—机会 2
改进模型;虽然 k-最*邻对于简单的低维情况是一个很好的模型,例如对于更高级的高维模型(为了提高精度,可能需要至少首先增加信息量,从而增加维数)。逻辑回归是一个很好的举措,但是依赖于能够线性分离标签类-这不是不可能的,但是随着维度的增加可能意味着使用主成分分析(PCA)或另一种降维技术来减少维度的数量而不丢失其中包含的信息-我们毕竟增加了维度的数量是有充分理由的。
使用决策树(作为集成方法或梯度推进方法)具有明显的优势,因为它可以处理非线性可分类以及分类预测变量;适用于处理大型输入数据集和高维数据。然而,由于需要优化大量超参数,实施起来会变得更加困难。
准确度、精确度、召回率和 F1 有什么关系?
原文:https://towardsdatascience.com/whats-the-deal-with-accuracy-precision-recall-and-f1-f5d8b4db1021?source=collection_archive---------1-----------------------
它经常出现在数据科学职位的常见面试问题列表中。解释精确度和召回率之间的区别,解释什么是 F1 分数,精确度对分类模型有多重要?很容易混淆和混淆这些术语,所以我认为将每个术语分解并检查它们为什么重要是个好主意。
准确(性)
精确度的公式非常简单。
但是在处理分类问题时,我们试图预测二元结果。到底是不是诈骗?这个人会不会拖欠贷款?等等。因此,除了这个总体比率之外,我们关心的是被错误地归类为积极和消极的数字预测,特别是在我们试图预测的背景下。如果我们试图预测像信用卡欺诈这样的事情,99%的准确率可能是相当不错的,但是如果假阴性代表某人患有易于快速传播的严重病毒呢?还是一个得了癌症的人?这就是为什么我们必须进一步分解精度公式。
其中 TP =真阳性,TN =真阴性,FP =假阳性,FN =假阴性。
精确度和召回率
在讨论精度和召回之前,先简要说明一下第一类和第二类错误。这些术语并不是机器学习中分类问题所独有的,当涉及到统计假设检验时,它们也非常重要。
第一类错误 :假阳性(拒绝真零假设)
第二类错误 :假阴性(不拒绝假零假设)
记住这一点,我们可以将精确度定义为相关结果的百分比,而召回率的特征是被您正在运行的模型正确分类的相关结果的百分比。显然,这些定义并不那么直观,所以让我们来看看一些形象化的东西,看看我们是否能理解它。
好的,我想这开始有点道理了。当谈到精度时,我们谈论的是真阳性,而不是真阳性加上假阳性。与回忆相反,回忆是真阳性的数量超过真阳性和假阴性的数量。下面是公式,正如你所看到的,它们并不复杂。
我认为解释统计分类模型性能的最直观的可视化方法是混淆矩阵。这是一个 2 乘 2 的表,其中每行代表预测类中的一个实例,而列代表实际类的实例。
下面是一个实际的混淆矩阵,来自我做的一个项目,该项目是基于使用几种分类模型(包括逻辑回归、XGBoost 和随机森林)的调查数据来预测硬性毒品的使用。这是我的 GitHub 上那个项目的链接。
f1-分数
最后,我们有 F1 分数,它将精确度和召回率都考虑在内,以最终衡量模型的准确性。但是这个度量和准确性有什么区别呢?正如我们在开始时谈到的,假阳性和假阴性对研究来说绝对是至关重要的,而真阴性对于你试图解决的问题来说往往不那么重要,尤其是在商业环境中。F1 分数试图考虑这一点,给予假阴性和假阳性更多的权重,同时不让大量的真阴性影响你的分数。
希望这篇博客可以消除你在这四个指标上可能有的任何困惑,并且你会意识到准确性不一定是机器学习分类模型的最终衡量标准。这真的取决于你想解决什么样的问题。
AI、机器学习、深度学习有什么区别?
原文:https://towardsdatascience.com/whats-the-difference-between-ai-machine-learning-and-deep-learning-54d0528a8ed1?source=collection_archive---------21-----------------------
在许多流行的新闻文章中,“人工智能”、“机器学习”和“深度学习”等术语似乎可以互换使用。这些不同技术之间的区别是什么?
人工智能
维基百科将人工智能定义为
机器展示的智能,与人类和动物展示的自然智能形成对比
因此,“人工智能”是一把宽泛的伞,包含了所有让机器看起来聪明的计算技术。
“强 AI”和“弱 AI”还有进一步的区分:
- 强人工智能:具有感知、意识和/或思维的机器,例如来自星际旅行的数据。这仍然是科幻小说的领域——没有人构建过强大的人工智能系统。关于创造强大的人工智能是否可能(例如见中文房间争论)或者是否可取(例如人工智能接管世界)有很多争论。
- 弱人工智能(又名狭义人工智能):“无感知”人工智能专注于特定任务,例如医学应用,人脸识别,人工智能艺术。今天开发的所有人工智能都是“狭义人工智能”。
人工智能包括机器学习作为一个子领域。人工智能还包括非机器学习技术,如基于规则的算法。
用于检测鸟类的基于规则的算法可能如下所示:
当然,从这个伪代码示例中可以看出,基于规则的算法很难正确。在你真正确信你看到的是一只鸟之前,你需要具体说明鸟的多少特征?有多少种形状和颜色?(这也掩盖了让计算机识别特定形状和颜色的挑战。)你如何具体说明一根“羽毛”到底长什么样?您可能需要编写数百条不同的规则。因此,对于绝大多数人工智能任务来说,基于规则的方法已经失宠了。
机器学习
Arthur Samuel 是早期人工智能研究人员之一,他对机器学习的定义如下:
人工智能的一种应用,它赋予计算机无需显式编程就能学习的能力
机器学习算法旨在从数据中学习。例如,如果你想建立一个机器学习算法来识别鸟类,你不需要写下鸟类的任何特定特征,或任何规则。相反,你会收集成千上万张鸟类和非鸟类的照片,然后用“鸟”(1)和“非鸟”(0)的标签将它们输入到你的机器学习算法中。机器学习算法会自己找出哪些特征有助于区分鸟类和非鸟类。
最*的预印本《This Looks That:Deep Learning for Interpretable Image Recognition》给出了一个机器学习算法的例子,该算法解释了它正在查看鸟类照片的哪些部分,以确定鸟类物种。
深度学习
深度学习是指一种机器学习,在这种机器学习中,计算机学习将世界理解为一个概念层次。深度学习模型是一种特定的机器学习算法,称为神经网络,它被设计成具有许多层,即它是“深度的”较低层学习简单的概念如边,较高层学习复杂的概念如面。
这篇关于前馈神经网络的早期帖子定义了神经网络模型的“层”,而这张图片显示了一个具有许多层的神经网络的示意图。
深度学习是最*围绕人工智能的许多兴奋的原因。随着比以往任何时候都更大的数据集和更好的计算机,深度学习算法可以展示在现实世界中有用的令人印象深刻的性能。深度学习已经成功应用于语音识别、语音合成、语言翻译、图像字幕、人脸识别。
总结
正如你所看到的,神经网络模型是一种“机器学习”,但如果它们有许多层,它们也是“深度学习”。其他方法,如支持向量机,被认为是“机器学习”,但不是“深度学习”;基于规则的系统被认为是“人工智能”,但不是“机器学习”。
关于特色图片
专题图片是艺术家绘制的 6600 万年至 260 万年前的树木,“中第三纪欧洲的棕榈树和苏铁树”我认为它们看起来有点像向日葵,当然也不同于现代的树木。260 万年后人工智能会是什么样子(如果它还在的话)?
还有,有一种机器学习方法叫做“决策树”;如果你同时使用许多决策树,这是另一种叫做“随机森林的机器学习方法
原载于 2019 年 4 月 19 日http://glassboxmedicine.com。
分析和统计有什么区别?
原文:https://towardsdatascience.com/whats-the-difference-between-analytics-and-statistics-cd35d457e17?source=collection_archive---------2-----------------------
理解两种完全不同职业的价值
统计学和分析是数据科学的两个分支,它们分享了许多早期的英雄,所以偶尔的啤酒仍然致力于热烈讨论它们之间的界限在哪里。然而,实际上,带有这些名字的现代训练项目强调的是完全不同的追求。虽然分析师专门探究你的数据中有什么,但统计学家更专注于推断数据之外的东西。
免责声明: 这篇文章讲述的是典型的培训项目毕业生,他们只教授 的 的统计学或 的 的分析学,它丝毫没有贬低那些设法增肥了两套肌肉的人。事实上, 精英数据科学家 被期望成为分析和统计方面的完全专家(以及 机器学习)……奇迹般地,这些人确实存在,尽管他们很少。**
Image: SOURCE.
人肉搜索引擎
当你掌握了与你的努力相关的所有事实时,常识是你用数据提问和回答问题的唯一资格。简单地查找答案。
想现在就看基础分析在行动?试试谷歌一下天气。每当你使用搜索引擎时,你都在做基本的分析。你正在调出天气数据并观察它。**
即使是孩子也可以毫不费力地在网上查找事实。这就是数据科学的民主化。好奇想知道今天的纽约是不是比雷克雅未克还冷?你可以获得*乎即时的满足感。它太简单了,我们甚至不再称它为分析,尽管它确实如此。现在想象一下一个世纪前试图获取这些信息。(正是。)
当你使用搜索引擎时,你是在做基本的分析。
如果报道原始事实是你的工作,你就相当于在做一个人肉搜索引擎的工作。不幸的是,人肉搜索引擎的工作保障取决于你的老板永远不会发现他们可以自己查找答案,并省去中间人……特别是当闪亮的分析工具最终使查询你公司的内部信息像使用谷歌搜索一样容易的时候。
灵感勘探者
如果你认为这意味着所有的 分析师都失业了,那你还没见过专家那种。用数据回答一个特定的问题比首先启发哪些问题值得问要容易得多。
我已经写了一整篇关于专家分析师做什么的文章,但是简单地说,他们都是关于获取一个巨大的未被探索的数据集并从中挖掘灵感。
“这是整个互联网,去找点有用的吧。”
你需要快速的编码技能和敏锐的感觉,知道你的领导会发现什么是鼓舞人心的,以及在对地下有什么一无所知的情况下勘探新大陆的人的所有性格力量。数据集越大,你对它可能出现的事实类型了解得越少,就越难不浪费时间地在其中漫游。你需要不可动摇的好奇心和情绪弹性来处理在你想出某样东西之前发现的一大堆东西。说起来总是比做起来容易。
Here’s a bunch of data. Okay, analysts, where would you like to begin? Image: Source.
虽然分析培训项目通常用查看海量数据集的软件技能来武装他们的学生,但统计培训项目更有可能让这些技能成为可选的。
超越已知
当你必须处理不完整的信息时,障碍就提高了。当你有不确定性时,你所拥有的数据并没有涵盖你感兴趣的内容,所以你在得出结论时需要格外小心。这就是为什么优秀的分析师根本不会得出结论。
相反,如果他们发现自己超越了事实,他们试图成为思想开放的典范。保持开放的心态至关重要,否则你会陷入确认偏差——如果数据中有 20 个故事,你只会注意到支持你已经相信的那一个……而你会错过其他的。
初学者认为探索性分析的目的是回答问题,而实际上是提出问题。
这就是培训项目的重点所在:避免在不确定的情况下得出愚蠢的结论是每门统计学课程的内容,而分析项目几乎没有触及推理数学和认识论的细微差别。
Image: Source.
如果没有严格的统计数据,一个粗心的像伊卡洛斯一样的超越你的数据的跳跃很可能会以啪的一声结束。(给分析师的提示:如果你想完全避开统计数据领域,就抵制所有做出结论的诱惑。任务完成。)
分析帮助你形成假设。它提高了你的问题的质量。
统计学帮助你测试假设。它提高了你回答的质量。
一个常见的错误是认为探索性分析的目的是回答问题,而实际上是提出问题。分析师的数据探索是如何确保你提出更好的问题,但他们发现的模式不应该被认真对待,直到他们在新数据上进行统计测试。分析帮助你形成假设,而统计让你测试它们。
统计学家帮助你测试,如果分析师在当前数据集中发现的现象也适用于当前数据以外的情况,这种行为是否明智。
我观察到其他数据科学类型对分析师的欺负,他们似乎认为他们更合理,因为他们的方程更复杂。首先,专家分析师使用所有相同的等式(只是出于不同的目的),其次,如果你横向观察宽浅,它看起来就像窄深。
我见过很多由于对分析师功能的误解而导致的数据科学有用性失败。您的数据科学组织的有效性取决于强大的分析先锋,否则您将小心翼翼地挖掘错误的地方,因此投资于分析师并欣赏他们,然后转向统计学家,对您的分析师带给您的任何潜在见解进行严格的跟进。
你两者都需要!
在好问题和好答案之间做出选择是痛苦的(和通常的古旧用法),所以如果你能负担得起与这两种类型的数据专家一起工作,那么希望这是一件容易的事。可惜,代价不仅仅是人员。你还需要丰富的数据和数据分割的文化来利用他们的贡献。拥有(至少)两个数据集可以让你首先获得灵感,并基于想象之外的东西形成你的理论…然后检查它们是否成立。这就是数量的惊人优势。
对这种差异的误解导致了统计学家的大量不必要的欺侮和分析师作为成品出售的大量不规范的观点。
拥有大量数据的人不习惯拆分数据的唯一原因是,这种方法在上个世纪的数据饥荒中不可行。很难收集到足够的数据来进行拆分。漫长的历史使分析和统计之间的墙钙化,以至于今天两个阵营都不太喜欢对方。这是一种过时的观点,它一直伴随着我们,因为我们忘记了重新思考它。遗留问题滞后了,导致统计学家大量不必要的欺凌和分析师大量作为成品出售的散漫观点。如果你关心从数据中提取价值,并且你有足够的数据,你有什么借口而不是在需要的地方利用你的灵感和严谨?拆分你的数据!
如果你能和这两种类型的数据专家一起工作,那么希望这是一件容易的事。
一旦你意识到数据分割允许每个学科成为另一个学科的力量倍增器,你会发现自己想知道为什么有人会以其他方式处理数据。
感谢阅读!人工智能课程怎么样?
如果你在这里玩得开心,并且你正在寻找一个为初学者和专家设计的有趣的应用人工智能课程,这里有一个我为你制作的娱乐课程:
Enjoy the entire course playlist here: bit.ly/machinefriend
更喜欢书面媒体,想要我的另一篇文章?试试:
** [## 分析师和统计学家能相处吗?
数据科学专业之间微妙的战争
towardsdatascience.com](/can-analysts-and-statisticians-get-along-5c9a65c8d056)**
sklearn 中的线性回归、套索、山脊、ElasticNet 有什么区别?
原文:https://towardsdatascience.com/whats-the-difference-between-linear-regression-lasso-ridge-and-elasticnet-8f997c60cf29?source=collection_archive---------4-----------------------
Image by Free-Photos from Pixabay
它们有什么区别?
Lasso、Ridge 和 ElasticNet 都是线性回归系列的一部分,其中 x(输入)和 y(输出)假定具有线性关系。在 sklearn 中,LinearRegression 指的是最普通的不需要正则化(权重上的惩罚)的最小二乘线性回归方法。它们之间的主要区别在于模型是否因其权重而受到惩罚。在本文的其余部分,我将在 scikit-learn 库的背景下讨论它们。
线性回归(在 scikit-learn 中)是最基本的形式,其中模型根本不会因为其选择的权重而受到惩罚。这意味着,在训练阶段,如果模型觉得某个特定的特征特别重要,模型可能会对该特征赋予很大的权重。这有时会导致小数据集中的过度拟合。因此,发明了以下方法。
Lasso 是线性回归的一种修改,其中模型因权重绝对值的和而受到惩罚。因此,权重的绝对值将(通常)减少,并且许多将趋于零。在训练期间,目标函数变成:
如你所见,Lasso 引入了一个新的超参数, alpha ,这个系数用来惩罚权重。
Ridge 更进一步,针对权重的*方和惩罚模型。因此,权重不仅倾向于具有较小的绝对值,而且实际上倾向于惩罚权重的极值,从而产生一组分布更均匀的权重。目标函数变成:
ElasticNet 是 Lasso 和 Ridge 的混合,其中包括绝对值惩罚和*方惩罚,由另一个系数 l1_ratio 调整:
你的数据已经缩放了吗?
正如你在上面的等式中看到的,权重惩罚在损失函数中被加在一起。假设我们有一个特征 house_size 在 2000 的范围内,而另一个特征num _ believes在 3 的范围内,那么我们可以预期 house_size 的权重自然会小于num _ believes的权重。在这种情况下,以同样的方式惩罚每个特征的权重是不合适的。因此,在将数据输入模型之前,对其进行缩放或标准化是非常重要的。快速注意,sklearn 中这些模型的默认设置将“正常化”设置为 false。你要么将‘正常化’打开,要么使用 ScandardScaler 缩放数据。通常,使用 ScandardScaler 是一个很好的做法,因为您可能希望使用相同的比例来缩放测试数据。
什么时候用哪个?
有几件事需要记住:
(1) 当你的数据集小于 100k 行时,sklearn 的算法备忘单建议你尝试 Lasso、ElasticNet 或 Ridge。否则,试试 SGDRegressor。
(2) Lasso 和 ElasticNet 倾向于给出稀疏的权重(大部分为零),因为 l1 正则化同样关心将大权重驱动到小权重,或者将小权重驱动到零。如果你有很多预测器(特性),并且你怀疑不是所有的都那么重要,那么 Lasso 和 ElasticNet 可能是一个很好的开始。
(3) Ridge 倾向于给出小但分布良好的权重,因为 l2 正则化更关心将大权重驱动到小权重,而不是将小权重驱动到零。如果您只有几个预测值,并且您确信所有这些预测值都与预测真正相关,请尝试将岭作为一种很好的正则化线性回归方法。
(4) 在使用这些正则化线性回归方法之前,您需要调整您的数据。首先使用 StandardScaler,或将这些估算器中的“normalize”设置为“True”。
pd.merge 和 df.merge 有什么区别?
原文:https://towardsdatascience.com/whats-the-difference-between-pd-merge-and-df-merge-ab387bc20a2e?source=collection_archive---------35-----------------------
对源代码的深入探究,揭示导入的设计模式
Photo by Pascal Müller on Unsplash
在我为 www.dataquest.io 提供在线技术支持的志愿工作中,我遇到了许多问题,这些问题使我能够更深入地研究我通常浏览的有趣问题。
今天的问题是:
left _ df . merge(right_df)vs PD . merge(left _ df,right _ df)有什么区别?
简短的回答是left_df.merge()
呼叫pd.merge()
。
使用前者是因为它允许方法链接,类似于 R 中的%>%
管道操作符,允许你从左向右写和读数据处理代码,比如left_df.merge(right_df).merge(right_df2)
。如果你不得不做 pd.merge(),这不是链接的风格,而是包装的风格,如果你明白这是怎么回事,它会以一个丑陋的pd.merge(pd.merge(left_df,right_df),right_df2)
结束。
现在让我们到兔子洞里去看看发生了什么事。
第一,当你看到pd.merge
的时候,其实就是pandas.merge
的意思,也就是说你做了import pandas
。当你import
某个东西的时候,那个模块名的__init__.py
文件(本问题中的pandas
)就运行了。
所有这些__init__.py
文件的主要目的是组织 API,并允许用户通过为您导入中间包来键入更短的导入代码,因此您可以一次编写pandas.merge()
而不是在使用merge()
函数之前先要求from pandas.core.reshape.merge import merge
。
现在你打开https://github . com/pandas-dev/pandas/blob/v 0 . 25 . 1/pandas/_ _ init _ _,看看我说的“为你导入中间包”
是什么意思。py#L129-L143 ,你会看到它是如何导入很多东西的,其中一行是from pandas.core.reshape.api
(图 1),在那个块merge
是导入的。
Figure 1
这就是允许你直接调用pd.merge
的地方,但是让我们来深究一下。
走进pandas.core.reshape.api
https://github . com/pandas-dev/pandas/blob/v 0 . 25 . 1/pandas/core/reshape/API . py你看from pandas.core.reshape.merge import merge
。(图 2)
Figure 2
现在你明白了from pandas.core.reshape.api
之前的merge
是从哪里来的吧。
最后让我们来看一下来源,在进入pandas.core.reshape.merge
https://github . com/pandas-dev/pandas/blob/v 0 . 25 . 1/pandas/core/shape/merge . py # L53你看def merge
。(图 4)
Figure 4
现在让我们从https://pandas . py data . org/pandas-docs/stable/reference/API/pandas 来看看编码的链式风格left_df.merge
在做什么。DataFrame.merge.html,点击source
进入https://github . com/pandas-dev/pandas/blob/v 0 . 25 . 1/pandas/core/frame . py # l 7304-l 7335查看def merge(self
(图 5),这个self
告诉你这是一个类(在这个例子中是 DataFrame)方法,这个方法稍后会导入from pandas.core.reshape.merge import merge
,并将你的所有参数从pandas.core.reshape.merge
传递回merge
,只有
Figure 5
您可以将这里的left_df.merge
中的def merge
的两个函数签名与之前的pd.merge
讨论进行比较,以查看它们是否完全相同merge
。
我怎么知道要从关键词merge
开始搜索呢?实际上,我首先从left_df.merge
的源代码开始搜索,但我觉得最好先解释最底层的代码,然后引入用self
替换left
参数的想法,这样更复杂的想法就建立在更简单的想法上。
我希望这篇文章能激发其他人不要害怕源代码,而是激发他们的好奇心,去了解事情在幕后是如何工作的,API 是如何设计的,这样做可能会对熊猫的未来有所贡献。
英国大报/小报的分裂是怎么回事?
原文:https://towardsdatascience.com/whats-up-with-the-uk-broadsheet-tabloid-split-80c9426c19fa?source=collection_archive---------21-----------------------
在我的上一篇博文中,我介绍了一种区分英国报纸的方法,方法是绘制读者的政治罗盘值,并查看产生以下结果的分布:
人们在 twitter 上的回应是询问(为了方便起见,大量转述):
- 我们只看到了他们最常阅读的报纸(如果有的话)——人们经常阅读不止一份报纸——第二偏好是如何分解的?
- 主要的分歧似乎在大报和小报之间——是什么推动了这一点?
不久前, Yougov 公布了报纸网站(每日访问<报纸 X 网站>的百分比,同时也是<报纸 Y 网站>的每周访问者)之间的交叉分析。报纸网站的读者并不是报纸读者的完美代理…但是数据已经被收集和编辑,所以检查起来并不特别费时。
我不喜欢 Yougov 的图表——我对报纸网站的*均受欢迎程度不感兴趣,我想知道它们在哪个网站的读者中相对更受欢迎/不太受欢迎。所以我把*均人气分出来然后把结果变成网络图[1]:
箭头的宽度反映了相对偏好(如上所述,控制某些网站更受所有人的欢迎)。不出所料,每日“独立”网站的读者倾向于至少每周“我”的读者。“我”和“金融时报”之间的联系更令人惊讶。
这告诉了我们什么——除了“不要在蛋壳背景上使用黄色”?聚集成小报和大报的“新闻睾丸”与上面的政治罗盘值分布重叠是一致的,甚至到了《每日电讯报》与“小报新闻文章”有最强联系的程度。
但是是什么造成了这种分歧呢?最终的因果关系很难确定,所以我将把它改写为“什么能预测一个人最常阅读的报纸是大报还是小报?”。
为了回答这个问题,我将整个英国选举研究在线面板数据集——一个几乎包含数百个政治、人口统计、态度和个人变量的数据集——置于机器学习分类算法[2]中,以查看哪些问卷变量作为预测人们首选报纸[3]是大报(→)还是小报(←),如上图所示。基本上,炸丨药捕鱼。
下面是输出结果(通过一种算法,使机器学习结果不那么不透明[4]):
选择你自己的博客冒险:你想知道如何阅读上面的不透明图表(阅读下面)——或者你只是想跳到细目分类(向下滚动)?
确实想看图:顶部最重要,底部最不重要[5]。每行中的每个斑点都是一个人,由该变量的值着色,由该变量对拟合模型中最终预测的影响定位(结果证明 80–90%准确,对于真实世界的数据来说相当不错)。
乍一看,这些变量(大部分)是可以猜测的,但是这里是显示哪些变量与哪些问题相关的 pdf 的链接——我已经自动修改了变量名以(稍微)增强可读性【6】。我将以顶部变量为例:
还在上学/20+是鲜红色/红色(你参加过高等教育)。比这更蓝意味着你离开了 19-15。何参与= >更倾向于大报/没有何参与= >更倾向于小报。[7]
不想看图表:这是上述变量的大致分组/有序分类
- 高等教育→
- 年龄↓
- 社会保守主义(又名威权主义)——尤其是死刑/更严厉的判决,
- 阶级自我认同 WC ← → MC [8]
- 无神论→
- 政治知识/注意力变量→
- 移民/黑人和女性*等→
- 住在伦敦/家庭收入高→
- 2005 年 GE 工党选民,
- 能源价格上限(问题文本不在 pdf 中,但可以合理假设为*)\
- 在 2016 年活动期间从广播中听到有关 euRef 的信息→
这里没有太多令人惊讶的东西——年龄、教育、社会保守主义、移民/*等情绪——都被认为是密切相关的(尽管上面我们看到了它们各自的影响,有效地控制了彼此)。
这里没有任何东西能自动告诉你因果关系的走向(好吧,我假设拿起一份《卫报》不会把你传送到伦敦或阅读《太阳报》,因为你会回到 2005 年投票给工党)。
“2005 年 GE 工党投票”与小报读者的联系可能与当代关于工党何时开始失去其社会保守派投票的辩论间接相关(在下一篇博客中有更多内容)——但请注意,2005 年 GE 是数据中“最早”的一年(例如,重要的分裂点很可能更早)。
接下来:英国政党在政治罗盘上的支持度——在哪里匹配,在哪里不匹配
推荐:如果你喜欢这个,你可能会更加喜欢克里斯·汉莱蒂的博客
代码(&Data):
- Yougov 数据/网络图(漂亮的人类可读笔记本)
- 机器学习数据集挖掘代码(一堆可怕的中间重构的未注释代码——为了准备 BES 数据,你必须运行其他笔记本)
[1]我可能也一直在寻找一个试验网络图表软件的借口——在这个例子中,是 Gephi
[2] Xgboost 分类
[3]限于拥有首选报纸且其首选报纸在新闻文章图表中的人-其首选报纸是地区性/无/其他报纸的人不在考虑范围内
[4] 斯科特·伦德伯格的 SHAP python 模块
[5]我们只看前 30 名,因为越往下看,你可能看到的只是统计上的噪音。这只是严肃分析的探索阶段
[6]在处理过程中,我已经自动将文本添加到变量的末尾:
- 序数变量“blah”变成“blah__bleh”,其中“bleh”是最高类别,例如“lrUKIPW2__Right”意味着高值意味着回答者认为 UKIP 是右翼政党
- 分类变量“blah”变成了“blah_bleh ”,这意味着该变量有 3 个以上的无序类别,每个类别都变成了独立的二元变量,例如“subjClassW2 _ W4W7W9 _ Yes,working class”意味着受访者被问及他们是否认为自己属于某个特定的阶层,“是的,working class”是选项之一,高值表示他们选择了该选项,低值表示他们没有
- 已经是数字的变量——比如年龄——就保持原样(年龄增长的惯例广为人知)
- WXWY_WZ 指的是这些变量被采样的波形(也就是说,你可以忽略它)
- 变量末尾前使用的下划线来自原始变量,例如“profile_past_vote_2005 _ Labour Party”来自名为“profile _ past _ vote _ 2005”的分类变量
[7]“不记得”我已经归类为“不知道”的回答(我有一个很大的“黄鼠狼答案”列表,自动将所有不知道/不知道相似的答案替换为“没有回答”的代码),所以它显示为灰色(如果我没有,你如何处理除了 DK 选项以外所有答案都有明确顺序的问题?).
[8]值得强调的是,这是自我认同——如果你的自我认同与国家统计局的社会经济分类相矛盾,他们不会到你家来用棍子打你,直到你改正自己的方式(当然,一旦英国离开欧盟,将会有许多新的机会)
基于波形的 vgg 是怎么回事?
原文:https://towardsdatascience.com/whats-up-with-waveform-based-vggs-15ff7c3afc28?source=collection_archive---------18-----------------------
在这一系列帖子中,我写了两篇文章讨论基于声谱图的 VGG 架构的利弊,以思考计算机视觉深度学习架构在音频领域的作用。现在是讨论基于波形的 vgg 的时候了!
- 帖子一:为什么基于声谱图的 vgg 很烂?
- 帖子二:为什么基于声谱图的 VGGs 会摇滚?
- 帖子三:基于波形的 VGGs 是怎么回事?【本帖】
在这些帖子中,我将围绕 VGG 模型展开讨论,这是一种被音频研究人员广泛使用的计算机视觉架构。简而言之,vgg是由一个深度堆栈的非常小的过滤器与最大池相结合而形成的。
频谱图和基于波形的 vgg 之间的主要区别在于,前者执行 2D 卷积(跨时间和频率),而后者执行 1D 卷积(跨时间)。另一个区别是基于波形的模型不会丢弃相位。相反,他们按原样使用原始信号。这是不是优势,很多任务还是要确定的!
在以前的帖子中,我解释了如何使用领域知识来提高基于频谱图的模型的效率和性能,我还指出,人们使用基于频谱图的 vgg 是因为它们非常灵活——基本上,它们不受任何领域知识的约束。换句话说:我揭露了在设计数据驱动模型时是否使用领域知识的永无止境的讨论。
有趣的是,基于波形的深度学习研究人员也在深入这场讨论。一些人在使用 VGGs 时发现了非常有前途的结果,但是另一些人在使用领域知识时发现了有趣的结果。然而,文献远非定论。可能是因为这些工作相对较新,没有独立的元研究来比较这些跨几个数据集的架构。
基于波形的 VGGs 为什么能摇滚?
重要的是要注意,波形是高维的,非常多变。这就是为什么,历史上,音频社区没有成功地建立成功的系统,直接接*原始波形。
正因为波形不直观且难以接*,所以在不利用任何领域知识的情况下解决这个问题可能是有意义的。如果很难思考如何恰当地完成任务,为什么不从数据中学习呢?因此,为此目的使用类似 VGG 的模型可能是有意义的——因为这些模型不受任何依赖于领域知识的设计策略的约束,因此具有高度的表达能力和从数据中学习的巨大能力。
此外,通过堆叠具有小滤波器的 CNN 层来构建 VGG 模型。作为使用小过滤器的结果,在不同阶段学习相同表示的可能性显著降低。此外,交错的 max-pooling 层进一步增强了相位不变性。
正如所见,使用基于波形的 vgg 似乎不是一个坏主意。与声谱图的情况不同,当处理基于波形的模型时,我们对于如何建立模型没有清晰的直觉。因此,人们开始设计基于波形的类似 VGG 的模型,这种模型的设计不依赖于任何领域的专业知识。相反,它们依赖于一组非常小的过滤器,这些过滤器可以分层组合,以学习任何有用的结构。其中一些架构是 Wavenet 、 sampleCNN 、它的挤压和激励扩展,或者音频的 ResNet 。
让我们利用领域知识来设计波形前端!
尽管一些研究人员认为不利用领域知识是基于波形的模型的发展方向,但另一些人却持相反的观点。
所有考虑领域知识而设计的基于波形的模型都从相同的观察出发:端到端神经网络在第一层学习频率选择滤波器。如果这些必须学习时间-频率分解,如果我们已经定制了网络来学习呢?也许,用那种方式,可以比使用类似 VGG 的模型获得更好的结果。
一个第一次尝试是在 STFT 中使用与窗口长度一样长的滤波器(例如,滤波器长度为 512,步长为 256)。如果这种设置能够很好地用 STFT 将信号分解成正弦基,也许它还能帮助学习 CNN 中的频率选择滤波器!
后来,提出了多尺度 CNN 前端——其由具有不同滤波器大小(例如,滤波器长度为 512、256 和 128,步长为 64)的 CNN 产生的级联特征图组成。他们发现,这些不同的滤波器自然地学习它们可以最有效地表示的频率,大型和小型滤波器分别学习低频和高频。这与受 STFT 启发的 CNN 形成了鲜明对比,后者试图用单一尺寸的滤波器覆盖整个频谱。
或者最*,提出了基于参数化 sinc 函数(实现带通滤波器)的波形前端: SincNet 。SincNet 的每个第一层滤波器中只有两个可学习的参数,在波形方面,SincNet 可以胜过 STFT 启发的 CNN,甚至是基于频谱图的 CNN!
因此..什么?
尽管存在一些轶事般的元研究,但考虑到我们还处于该研究领域的早期,很难说哪种架构会在长期内流行。目前,出现了一些有影响力的想法,现在是社区尝试这些想法的时候了。
虽然当训练数据丰富时,高度表达的基于波形的 VGG 模型可能是有能力的,但是当数据稀缺时,基于领域知识的模型可能有更多的机会-仅仅因为模型的参数数量可以显著减少,就像 SincNet 一样。时间会证明一切!
你的“数据故事”是什么?
原文:https://towardsdatascience.com/whats-your-data-story-f0ee28bbb692?source=collection_archive---------25-----------------------
向利益相关者和管理层展示数据和机器学习产品概念
人人都爱数据。每个人都喜欢像理解数据一样说话。每个人都喜欢使用人工智能和人工智能的流行语——但很多时候他们只是在聊天,希望他们在正确的上下文中使用它们,但通常仍然只是把它们扔到外面。这当然也很重要。这就是你销售产品的方式。这就是一个人如何显示他们的公司是他们领域的顶级,他们有高端的能力,当然,他们是他们所做的最好的。
我一路走来学到的是,真正学会分享和解释“数据故事”是一项艰巨的工作。
How will you tell your “data story”?
作为我之前数据和 ML 产品经理职位的一部分,我的任务之一是向全球主席做季度报告,他也是我们的主要投资者。这些演示对公司的所有项目经理来说都特别难做,因为我们从高层次的概念和季度规划路线图开始,一直到将在未来几周内交付的具体功能。一方面,我们将尝试解释我们的日常框架,另一方面,连贯地呈现它,解释它如何适应更大的画面和公司的业务战略。尽管演示会定期重复,但我相信,在向投资者和利益相关者演示时,从准备这些演示中学到的见解对我们任何人都是相关的,因为他们并不总是了解技术,但对产品有一个大致的了解。
因此,除了这些复杂性之外,作为公司唯一的数据 ML 项目经理,我觉得我面临的挑战甚至更大。
这是为什么呢?
好的数据特征是看不见的。对于一个局外人和一个用户来说,它们是微不足道的。用户真正能看到一个算法的唯一时间是当某个东西出错时,当某个东西被关闭并且用户接收到不正确的输出时。但挑战不仅如此。数据世界并不擅长用漂亮的面向用户的 UI 来解释自己,这是利益相关者理解你所指的最好方式。有大量的文本、代码,当然还有大量的图表。在一个 B2C 的世界里,将这些信息转化成可以解释更大的画面并显示视觉效果的东西是相当具有挑战性的。当你向一群只看到冰山一角的人展示时,你怎么能展示你在做什么?
Photo by Annie Spratt on Unsplash
以下是我选择解决这个问题的方法。
我做的第一件事对我们的演示来说有点不标准。我没有直接切入,而是选择在我的第一个演示文稿中添加更多的解释。这个想法是详细说明机器学习的过程和基础,以及我们的团队如何实现这些算法。
在接下来的演讲中,我会先做一个概述,重复同样的过程,并解释在给定的演讲中我们将关注的领域。
我认为这个概念甚至适用于一次性演示,建立一个框架,使整个演示更加连贯和易于理解。
这是我发现相关的帖子之一,它帮助我建立了指导我演讲的框架和概述:https://hacker noon . com/the-ai-hierarchy-of-needs-18f 111 FCC 007
我收到的关于这几张指导幻灯片(即演示框架)的反馈非常积极。人们最终能够理解我们的数据结构,我们作为*台一部分的能力,以及最后但并非最不重要的,构建新能力的过程——我们如何定义新功能和算法的假设,然后走向优先排序、测试和实施。
从长远来看,我发现这些指导幻灯片不仅有助于我向主席做这些演示,也有助于其他需要解释我们团队工作的人。
除了这些指导幻灯片之外,我还使用以下附加指南制作了新的演示文稿,这些指南有助于我专注于手头的任务:
1- 不要爱上你的数学设计
数据通常显示在流程图、方案、表格等中,但是总有(至少,应该总是)一个功能等待使用这个新功能。那就是我们想要演示的。是什么赋予了商业价值?什么给我们的客户带来价值?在 B2C 世界中,我们展示可视化的 UI 组件。当然,这可能不是填充 UI 组件/功能的唯一算法。但是当在上下文中显示它时,它可以被解释为同一个流程的一部分,解释为什么需要初始图的每个部分。
2 - 从用户的角度解释
请记住,每一个数据表或逻辑都应该启用一个功能,从而使用户能够更好地进行转换。当解释一个特性的后端算法时,这并不总是可以理解的。然而,如果我们专注于解释用户影响,这可能是构建特定幻灯片甚至整个演示文稿的关键,从而获得利益相关者的理解。
3 - 使用可视化图表(尽可能少的文本)
解释你正在研究的新的令人惊奇的 ML 算法和系统如何工作是不可避免的——但是即使这些也应该以视觉的方式呈现。请记住,这些幻灯片可能是利益相关者向他们所有的朋友炫耀的幻灯片,吹嘘他们有“更好的人工智能”——所以他们必须有正确的流行语,但不能太复杂。你不想失去他们,因为他们觉得他们必须阅读每一个字,每一个盒子,每一个图表。
4 - 数据,数据,数据
我们已经解释了流程,并在可视化图表和流程图中展示了它。但是既然处理数据是我们工作的一大部分,它也应该是我们演示的一部分。高质量数据的可用性是创造价值的关键因素。这就是为什么这些领域的“成本”和投资很大,但仍然至关重要。不幸的是,有时这并不是每个人都清楚的,这种演示代表着错过了让每个人都参与进来的机会。
总结一下,直到 ML 成为世界之道(那一天会到来:),直到很明显我们尽可能地原子化和优化,描述数据,ML 和 AI 元素将保持复杂。因此,数据 ML 项目管理对于大局来说仍然至关重要。它们提供了充分理解和分析用户需求的能力,定义较低层次的数据特征和算法,并“翻译”和简化,以便让整个团队在同一页面上。
你的足球队的克星是什么?
原文:https://towardsdatascience.com/whats-your-soccer-team-s-nemesis-30d95c4f9b15?source=collection_archive---------24-----------------------
巴萨真的是皇马最难对付的对手吗?史料描绘了一个有趣的故事。
皇家马德里 vs 巴塞罗那。曼联对利物浦。国际米兰对米兰。里昂奥林匹克队对马赛奥林匹克队。切尔西 vs 所有人。
欧洲足球充满了令人惊叹的竞争。由于球场内外的原因,这些竞争随着时间的推移而产生和演变,是球队每个赛季都必须面对的最艰难的比赛。但是这些对抗真的是赛季中最艰难的比赛吗?例如,尽管皇家马德里对巴塞罗那是世界足球最重要的比赛之一,但人们很容易忘记皇家社会或毕尔巴鄂竞技对巴塞罗那来说有多难。
在这篇文章中,我想报告我所做的数据分析的方法和结果,以查看欧洲主要联赛 8 个赛季的所有比赛数据,并找出哪个对手对每个球队造成的损害最大。又名,寻找各队的克星。
我在这篇文章的最后描述了数据和方法,以便立即深入研究结果(请随意查看,然后返回结果!).要了解结果,你需要知道的主要事情是,我使用的指标是一个团队从对手那里获得的最大可能分数的百分比。最大可能点数是游戏次数的 3 倍。因此,举例来说,如果切尔西与利物浦比赛 10 次,总共得到 15 分,那么切尔西得到 30 分中的 15 分,即 50%。
为了保持列表简短,我只报告了(几乎)有 16 次相遇的团队配对的结果。这是最大可能的比赛次数,因为每对球队每年比赛两次,我们有 8 年的数据。
结果呢
被研究的各大团队的克星。
数字越低,该队在对抗对手时表现越差。
英超联赛
- 阿森纳 : 25% vs 切尔西
- 阿斯顿维拉: 14.6% vs 曼联
- 切尔西: 40% vs 利物浦
- 埃弗顿: 19% vs 阿森纳
- 利物浦: 29% vs 阿森纳
- 曼城: 38% vs 利物浦
- 曼联: 38% vs 切尔西
- 斯托克城: 17% 曼联
- 桑德兰: 19% vs 切尔西
- 热刺: 29% vs 曼联
西班牙 La Liga
- 毕尔巴鄂竞技俱乐部:12%vs巴塞罗那
- 马德里竞技:17%巴塞罗那
- 巴塞罗那:53% 皇家社会
- 赫塔菲: 13% 皇家马德里
- 马拉加:8% 巴塞罗那:
- 西班牙人:6%vs皇家马德里
- 皇家马德里: 29% vs 巴塞罗那
- 塞维利亚:13%vs巴塞罗那
- 瓦伦西亚:23%vs巴塞罗那
意大利 Serie A
- 切沃·维罗纳:6%vs米兰
- 热那亚: 20% 尤文图斯
- 国际米兰:29% vs尤文图斯
- 尤文图斯:47%那不勒斯
- 米兰:29% vs尤文图斯
- 那不勒斯:40%vs罗马
- 罗马:25%vs尤文图斯
- 乌迪内斯:29% vs尤文图斯
德国 Bundesliga
- 拜耳 04 勒沃库森:29%vs多特蒙德
- 多特蒙德(Borussia Dortmund):40%vs拜仁慕尼黑(T75)
- Borussia Monchengladbach: 31% vs. Borussia Dortmund
- 拜仁慕尼黑:50% vsBorussia Monchengladbach
- 沙尔克 04:19% vs拜仁慕尼黑
- 汉堡 SV: 21% vs拜仁慕尼黑
- (T92) 韦尔德不来梅(T93):13% vs. 拜仁慕尼黑(T94)
- TSG 1899 霍夫恩海姆: 8.3% vs拜仁慕尼黑
- VfB Stuttgard:11% vs拜仁慕尼黑
- VfL 沃尔夫斯堡: 15% vs拜仁慕尼黑
法国 Ligue 1
- AS 圣艾蒂安:20% vs巴黎圣日耳曼
- FC 洛里昂: 21% vs巴黎圣日耳曼
- 波尔多吉伦丁斯: 38% vs 马赛奥林匹克运动会
- LOSC 里尔:27%vs巴黎圣日耳曼
- OGC Nice: 29% vs Montpellier Herault SC
- 奥林匹克里昂:31%vs巴黎圣日耳曼
- 马赛奥林匹克:31% vs巴黎圣日耳曼
- 巴黎圣日耳曼: 28% vs 作为摩纳哥
- 伦奈斯球场: 27%对波尔多吉伦特派
- 图卢兹足球俱乐部: 29% vs 巴黎圣日耳曼
突出
好的,这已经很多了。我们来加工一些高光。
切尔西是阿森纳的克星。鉴于该数据集基于 8 个季节,这可能并不令人惊讶。迪迪埃·德罗巴和他的蓝色队友已经威胁阿森纳的防线一段时间了。
利物浦是切尔西和曼城的克星。但是谁能忘记杰拉德的失误,让切尔西进球,也让利物浦的夺冠希望破灭?
阿森纳是利物浦的克星。切尔西>阿森纳>利物浦>切尔西。这是一个有趣的循环,表明在足球中事情没有等级之分:任何球队都可以赢任何球队!
英格兰超级联赛是最*等的联赛。有很多关于西甲 vs 英超的讨论,这篇博文可以增加一个数据点。在这里研究的 9 支西班牙球队中,巴塞罗那队是 6 支的克星,而在英超联赛中,没有哪支球队像巴塞罗那队那样占据统治地位。在被调查的 10 支球队中,切尔西和曼联各是 3 支球队的克星。
当然,另一方面,在研究的 8 个赛季中,英超有 10 支球队从未降级,但西甲只有 9 支。所以我们先不要急着判断哪个联赛是最有竞争力的。
皇家社会是巴萨的克星。这是一个意想不到的结果的很好的例子,因为大部分的媒体报道通常都是关于 El Classico 的。但密切关注巴萨的球迷知道“阿诺埃塔诅咒”以及皇家社会对巴塞罗那来说是一个多么困难的对手。
巴萨几乎是西班牙各大球队的克星。对于许多人来说,这可能并不奇怪,因为巴塞罗那在过去的 8 年里一直在国内联赛中占据统治地位(他们赢得了所研究的 8 个赛季中的 6 个赛季)。皇家马德里是西班牙两支主要球队的克星,赫塔菲(一支同样位于马德里大都会区的球队)和西班牙人。
尤文图斯一直统治着意大利联赛。他们是 8 支意大利球队中 5 支的克星。那不勒斯是尤文图斯的克星。
PSG 和拜仁慕尼黑分别称霸法德联赛。他们是联盟中 10 支被研究球队中 7 支的克星,是所有被研究球队中比例最高的。正如摩纳哥是巴黎圣日耳曼的克星,门兴格拉德巴赫是拜仁慕尼黑的克星。
巴塞罗那是研究中最有韧性的球队。与劲敌皇家社会队的比赛中,巴萨设法获得了 53% 的最大可能积分。这是所有团队/复仇女神组合中最高的。这是对阵强敌时表现最好的球队名单。
- 巴塞罗那,53%对皇家社会
- 拜仁慕尼黑,50% vs 门兴格拉德巴赫
- 尤文图斯,47%对那不勒斯
- 多特蒙德,40%对拜仁慕尼黑
- 切尔西,40%对利物浦
- 那不勒斯,40%对罗马
- 曼联,38%对切尔西
- 曼城,38% vs 利物浦
结论
这种分析真的能帮助巴萨球迷在他们的球队对阵皇马时放松下来吗?大概不会。足球对抗不仅仅是一场比赛,也不仅仅是国内联赛的 3 分。
然而,这种分析和其他类似的分析可以帮助整理噪音和人为偏见,以向球员和教练指出他们应该更加关注的一些球队。
你的团队不在上面的名单里吗?别担心,你可以在这里看到(并修改)产生所有结果的笔记本或者在下面留下评论!
感谢阅读!
附录:数据集和方法
数据集
我使用了欧洲足球比赛的 Kaggle 数据集。这是一个非常棒的数据库,包含了大量欧洲国内联赛的比赛以及球员和球队的属性。
方法论
我做的第一件事是查询数据集,以获得西班牙、英格兰、法国和意大利国内联赛的所有比赛结果。数据集包括更多的联赛,所以如果你真的想从这四个联赛之外的联赛中找到你球队的克星,请随意看看代码或者告诉我。
一些直接的基本调查显示有 8 个季节:从 2008/9 的到 2015/6 的直到。我们每个联赛都有 20 支参赛队,每支参赛队都有两次比赛,因此每支参赛队每个赛季都应该有 38 次观察。欧洲联赛实行降级和升级制度,因此并非所有球队都会成为每个赛季数据的一部分,因为有些球队会降级。
数据集看起来非常完整,几乎记录了所有匹配;有一小部分比赛缺席(大部分是意大利联赛),但是因为很少,我选择忽略它。
一旦所有的原始记录都准备好了,我会浏览每个队的完整比赛列表,记录对手和他们在比赛中得到的分数:如果他们赢了,3 分;如果他们输了,0 分;如果他们打*,1 分。然后,可以将这个数据集按每个团队和对手对分组,计算他们得到的分数总和,然后除以可能的最大分数。因此,对于每支球队,我们可以找到对手,他们得到了最小百分比的可能分数。我们称那个对手为克星!
何时以及如何组建您的数据科学团队
原文:https://towardsdatascience.com/when-and-how-to-build-out-your-data-science-team-157b977e4c31?source=collection_archive---------18-----------------------
评估您的成熟度,找到您需要的技能,并创建数据文化
越来越多的初创公司正在寻求人工智能(AI)来帮助他们解决业务问题和提高效率。在你的初创公司中建立人工智能能力的众多好处不应该让任何人感到惊讶。
事实上,商业优势是如此深远,以至于普华永道预测,到 2030 年,人工智能将为全球经济增加15.7 万亿美元。与流行的观点相反,成功实施人工智能来推动有影响力的决策需要一个多元化的团队,他们拥有多种技能组合的专业知识。
启动你的人工智能之旅不是一件简单的事情——你需要提出探索性的问题,以确保相关的数据科学项目在正确的时间开始。此外,你需要确保建立一个高效的团队,将数据转化为决策。
企业应该在什么时候实现人工智能飞跃?
大多数初创公司已经在使用数据来了解他们的业务绩效并做出运营决策,无论是通过 MIS 报告还是 Excel 电子表格中跟踪的 KPI。但是什么时候应该升级到高级分析呢?你应该在什么时候开始利用人工智能技术并建立你的数据科学团队?
Pic: Scaling the 7 levels of maturity with data
任何希望在数据科学领域成熟的初创公司都需要获得可靠的数据源和干净的数据。因此,先决条件是利用工程实践来获取数据,然后构建和存储它。
数据科学的第一步是查看描述性分析以了解过去发生的事情,这通常通过 KPI 报告和业务指标的简单摘要来实现。
在进行描述性分析之后,你应该使用探索性数据分析来理解事情为什么会这样。这被称为诊断分析,由统计和业务分析提供支持。
一旦您发现自己在寻求从数据中提取更多价值,您就应该为前瞻性分析做好计划。在这里,使用人工智能和机器学习(ML)对于深入研究更深层次的、预测性的、数据驱动的见解至关重要。
数据科学之旅的下一步是消费这些数据洞察,并将它们与业务决策联系起来。数据消费由叙述、信息设计和数据故事驱动。
组织的最终数据成熟度是数据成为一种文化的时候。这是组织中每个人的第二天性,使用数据并利用探索性见解、ML 和 AI 等技术,直接或间接为决策提供动力。
数据科学什么时候合适?
Photo by Kevin Ku on Unsplash
但是刚刚起步的创业公司呢?在深入了解之前,您应该花六个月的时间来构建您的数据湖吗?不会。无论你手头有什么数据,开始训练人工智能和人工智能算法都不会太早——只要确保你有来自内部或外部来源的相关、精选数据。
在旅程的早期,在开始将数据输入数据科学层之前,实施清理和转换数据的流程至关重要。例如,假设一家最*推出的电子商务初创公司希望利用人工智能和人工智能来更好地了解观众的购买行为。数据科学团队可以从事务日志中收集数据,对其进行处理和清理。
他们可以分析这些数据,然后了解人们为什么购买某些商品,并预测他们未来可能会购买什么。这为组织提供了尽早了解其消费者基础的关键可行见解,而不必等待。
所以,你已经决定向人工智能迈进,你已经确定了你的人工智能愿景和可能的用例。然后,您如何构建您的团队来实现收益并扩展成熟阶段?
什么造就了一个全面发展的数据科学团队?
如果你从报告和描述性分析开始,那么你将需要一个数据翻译器。这些人在技能上最接*商业智能(BI)团队中的“商业分析师”。除了敏锐的商业嗅觉,他们还擅长处理数据,熟悉分析,并有设计眼光。
Pic: Roles mapped to the Data maturity levels
数据翻译者帮助确定最有影响力的项目,因为他们将业务挑战塑造成可以通过数据解决的形状。凭借对领域和数据流畅性的深刻理解以及有效沟通的能力,他们充当了业务用户、数据工程师以及数据科学家和信息设计师等角色之间的桥梁。
这一角色在致力于推动业务成果的数据科学团队中至关重要— 麦肯锡估计,到 2026 年,仅美国对翻译的需求就可能达到 200 万到 400 万。
数据科学家将利用他们在统计学、ML 和 AI 技术方面的知识,找到从数据中发掘最重要见解的方法。你还需要信息设计师来使这些见解变得可消费。
信息设计师能够赋予洞察力的视觉智能层以生命,并使用数据可视化和视觉设计从洞察力中编织引人入胜的商业故事。
机器学习工程师(ML 工程师)是精通数据的程序员,在 ML/AI 模型的生产中至关重要。他们将数据科学解决方案与后端的正确见解和前端的正确叙述相结合,以支持业务决策。
这个拥有不同技能的团队最好由数据科学经理来管理。这些人同样理解数据、见解和故事,以及他们在人员和项目管理方面的核心专业知识。
许多组织正在将数据讲述者的额外角色制度化。这些人通过从数据洞察中精心制作清晰的叙述,超越了可视化仪表板。它们提供了背景,使企业中的每个人都能理解这些见解。
根据这份 Gartner 报告,我们,人类,天生就有抑制我们有意义地参与事实的能力的机制。故事是感性的,难忘的,可操作的。如果没有吸引人的数据故事,你可能会疏远你的非数据科学团队成员。
组织也转向艺术和社会学科,为数据科学增加人文因素。例如,行为心理学家能够更好地揭示客户决策背后的潜在原因,如流失、购买和参与。
当与数据洞察相结合时,这种人的视角使组织能够更深入地了解他们的客户群,并做出真正有影响力的决策。
构建业务以培养健康的数据文化
Photo by Edvard Alexander Rølvaag on Unsplash
对于任何刚刚开始数据科学之旅的初创公司来说,建立一个多功能的数据科学团队并产生有影响力的见解不会在一夜之间发生。许多在这条道路上迈出第一步的组织努力提出正确的分析计划,并确定深刻的业务见解。
他们发现很难使见解具有可消费性,并且不总是能够确保数据科学解决方案被目标用户采用。这就是为什么分析的采用需要行政命令和领导层的共同努力才能取得成功。
规划变革管理计划以实现其团队接受数据的行为变化至关重要。您可以通过流程干预将数据驱动的决策构建到团队成员的业务工作流程中来实现这一点。
健康的数据文化还需要得到正确的组织结构的支持,以促进数据科学团队和业务团队之间的协作。一个由数据科学冠军组成的跨职能核心团队应该领导该计划,并与终端用户保持联系。
应通过提醒团队许多业务优势来确保组织的采用和认可——与同行相比,数据驱动型公司每年*均增长超过 30 %。最终,每个组织都应该将数据文化视为其最终目标。当数据为深入洞察提供动力并被整个组织使用时,这种情况就会发生,从而使每个决策都具有潜在的影响力。
这不仅改变了团队内部日常运作的方式,也改变了商业运作的方式。将数据文化制度化可以为组织转型和市场竞争优势铺*道路。
这篇文章最初是在 TechCrunch 的会员计划 ExtraCrunch 上 发表的 。增加了插图。封面图片由 法布里齐奥 组成。
何时以及如何使用 Python mock
原文:https://towardsdatascience.com/when-and-how-to-use-python-mock-b626e5f9bf7?source=collection_archive---------15-----------------------
Photo by Suzanne D. Williams on Unsplash
使用 mock 减少您的测试执行时间
议程
这篇文章将涵盖何时以及如何使用unittest.mock
库。
Python 文档恰当地描述了模拟库:
unittest.mock allows you to replace parts of your system under test with mock objects and make assertions about how they have been used.
何时使用模拟库
简短的回答是“大多数时候”。下面的例子将使这一主张更加清晰:
在 shell 上定义以下三个函数。
In [1]: def cow():
...: print("cow")
...: return {'cow': 'moo'}
...:In [2]: def dog():
...: print("dog")
...: return {'dog': 'bark'}
...:In [3]: def animals():
...: data = cow()
...: data.update(dog())
...: data['pig'] = 'oink'
...: return data
...:
让我们执行animals
。素食者会杀了我;)
In [4]: animals()
cow
dog
Out[4]: {'cow': 'moo', 'dog': 'bark', 'pig': 'oink'}
输出确认了从animals()
调用了cow
和dog
。
让我们为cow
写一个测试。
In [5]: def test_cow():
...: assert cow() == {'cow': 'moo'}
...:
让我们执行test_cow
来确保cow
按预期运行。
In [6]: test_cow()
cow
让我们同样测试dog
。
In [7]: def test_dog():
...: assert dog() == {'dog': 'bark'}
...:In [8]: test_dog()
dog
下面给animals
加个测试。
In [9]: def test_animals():
...: assert animals() == {'dog': 'bark', 'cow': 'moo', 'pig': 'oink'}
...:In [10]: test_animals()
cow
dog
从打印的声明中可以看出,cow()
和dog()
是从test_animals()
开始执行的。
测试animals
时不需要执行cow
和dog
,因为cow
和dog
已经单独测试过了。
在测试animals
时,我们只想确保cow
和dog
会被执行。我们不希望真正的处决发生。
cow
和dog
是微小函数。从test_animals
开始的执行目前不是什么大事。如果函数cow
和dog
很大,test_animals
可能需要很长时间才能完成。
如果我们使用unitest.mock.patch
,这种情况是可以避免的。
让我们修改test_animals
如下所示:
In [17]: from unittest.mock import patchIn [18]: [@patch](http://twitter.com/patch)('__main__.cow')
...: [@patch](http://twitter.com/patch)('__main__.dog')
...: def test_animals(patched_dog, patched_cow):
...: data = animals()
...: assert patched_dog.called is True
...: assert patched_cow.called is True
...:
执行 test_animals()
。
In [19]: test_animals()
我们再也看不到cow
和dog
的打印声明。这确认了cow
和dog
没有被执行。
我们来解剖一下test_animals
。
test_animals
已装饰有@patch
。函数dog
作为参数传递给@patch
。
由于test_animals
已经被修饰,所以在test_animals
的上下文中,实际的函数dog
已经被替换为一个unittest.mock.Mock
实例。这个Mock
实例被称为patched_dog
。
由于animals()
是在test_animals()
的上下文中执行的,所以没有从animals
实际调用dog
。取而代之的是patched_dog
的称呼。
Mock
实例有一个名为called
的属性,如果从测试中的函数调用模拟实例,该属性将被设置为 true。我们断言模拟实例patched_dog
已经被调用。
如果从animals
到dog
的调用被移除/注释,那么test_animals
将失败。
In [20]: def animals():
...: data = cow()
...: #data.update(dog())
...: data['pig'] = 'oink'
...: return data
...:In [21]: test_animals()
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-21-f8c77986484f> in <module>
----> 1 test_animals()/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/mock.py in patched(*args, **keywargs)
1177
1178 args += tuple(extra_args)
-> 1179 return func(*args, **keywargs)
1180 except:
1181 if (patching not in entered_patchers and<ipython-input-18-a243d0eea2e8> in test_animals(patched_dog, patched_cow)
3 def test_animals(patched_dog, patched_cow):
4 data = animals()
----> 5 assert patched_dog.called is True
6 assert patched_cow.called is True
7AssertionError:
这证实了测试提供了正确的覆盖范围,而没有实际执行cow
和dog
。
在模拟实例上设置 return_value
取消注释代码。
animals
中除了调用cow
和dog
还有额外的代码。animals
也将猪添加到数据中。
我们来测试一下animals
的附加代码。
In [43]: [@patch](http://twitter.com/patch)('__main__.cow')
...: [@patch](http://twitter.com/patch)('__main__.dog')
...: def test_animals(patched_dog, patched_cow):
...: patched_cow.return_value = {'c': 'm'}
...: patched_dog.return_value = {'d': 'b'}
...: data = animals()
...: assert patched_dog.called is True
...: assert patched_cow.called is True
...: assert 'pig' in data
让我们执行测试
In [45]: test_animals()
我们所有的断言都通过了,因为没有断言错误。
调用Mock
函数的默认返回值是另一个Mock
实例。因此,当在test_animals
上下文中从animals
调用patched_dog
时,它会返回一个模拟实例。我们不希望它返回一个模拟实例,因为animals
的附加代码期望它是一个字典。
我们在patched_cow
上设置一个return_value
作为字典。同样适用于patched_dog
。
现在animals
的附加代码也被测试覆盖。
另一个例子
让我们定义一个函数来测试 url 是否有效。这个靠 Python 的requests
。
In [59]: import requestsIn [60]: def is_valid_url(url):
...: try:
...: response = requests.get(url)
...: except Exception:
...: return False
...: return response.status_code == 200
下面给is_valid_url
加个测试。
In [69]: def test_is_valid_url():
...: assert is_valid_url('[http://agiliq.com'](http://agiliq.com')) is True
...: assert is_valid_url('[http://agiliq.com/eerwweeee'](http://agiliq.com/eerwweeee')) is False # We want False in 404 pages too
...: assert is_valid_url('[http://aeewererr.com'](http://aeewererr.com')) is FalseIn [70]: test_is_valid_url()
您会注意到您的测试在进行网络调用时有多慢。
让我们通过利用patch
和Mock
使我们的测试更快来解决这个问题。
In [71]: [@patch](http://twitter.com/patch)('__main__.requests')
...: def test_is_valid_url(patched_requests):
...: patched_requests.get.return_value = Mock(status_code=200)
...: assert is_valid_url('[http://agiliq.com'](http://agiliq.com')) is True
...: patched_requests.get.return_value = Mock(status_code=404)
...: assert is_valid_url('[http://agiliq.com/eerwweeee'](http://agiliq.com/eerwweeee')) is False # We want False in 404 pages too
...: patched_requests.get = Mock(side_effect=Exception())
...: assert is_valid_url('[http://aeewererr.com'](http://aeewererr.com')) is False
...:In [72]: test_is_valid_url()
你应该注意到了速度的提升。
摘要
模拟应该在下列情况下使用:
- 来模拟任何已经单独测试过的依赖项。
cow
是animals
的属地,所以我们嘲讽了cow
。 - 来模拟网络通话。
requests
或send_mail
应该被嘲讽以避免网络调用。 - 模拟任何大型函数以减少测试执行时间。
签署
希望这篇文章有用。
如果你喜欢这篇文章,考虑发送至少 50 个掌声:)
什么时候进行 A/B 测试,什么时候不进行
原文:https://towardsdatascience.com/when-and-when-not-to-a-b-test-c901f3ad96d9?source=collection_archive---------4-----------------------
分裂测试与多臂土匪:模拟,源代码和现成的应用程序
Photo by Daniil Vnoutchkov on Unsplash
本文讨论了 A/B 或分裂测试和多臂土匪对于变体测试的区别。它可以用于例如为数字营销活动选择最佳表现的广告集。在各种实验中模拟和测量两种方法的性能表明在大多数情况下,Bandit 控制分割,并且应该是首选的。除了模拟结果之外,还提供了所有必需的源代码,以及一个使用 Bandit 方法进行变量优化的简单 web 应用程序。
app:【optimizer.stagelink.com
代码:github.com/kinosal/optimizer
故事大纲
- 什么是 A/B 测试,有什么问题?
- 另一种选择是:多股武装匪徒
- 实验:分裂与强盗
- 参数+结论
所以让我们开始吧:
什么是 A/B 测试?
Photo by Robert Anasch on Unsplash
A/B、A/B/n 或分割测试----我们将这样称呼它们----用于通过测试、测量和比较每个场景中的行为(即成功率)来确定几个备选场景或变体中的哪一个更有可能产生预期的成功结果或响应。这种测试有各种各样的用例。本文将重点关注转化率的最大化,例如,从用户看到在线广告到点击此类广告,或者用户在访问网站后完成购买。
分割测试的结果可以用一个 NxM 矩阵来描述,其中 N 行包含所有测试场景中成功和失败=试验-成功的数量。在一个示例中,广告(场景或变体)1 已经显示给 1,000 人(试用),其中 10 人点击了广告(成功),广告 2 已经显示给不同的 1,000 人,其中 20 人点击了广告,这个矩阵也称为列联表,如下所示:
现在的目标是确定两个广告(场景)中的一个的成功率(点击可能性)是否“显著”高于另一个广告(场景)。这将意味着在所有场景中抽取的样本很有可能不是来自同一个群体(或具有相同分布的群体,在我们的情况下是二项式),这是我们的零假设 H0 的成功率独立于我们试图使之无效或反驳的观察到的场景。这一点很重要,因此我们最终可以得出结论,场景中的差异实际上是不同成功率的原因,而不仅仅是这些场景中的随机性。统计显著性或置信水*可以解释为独立概率=错误拒绝低于预定义 p 值的H0(aI 型误差)的概率。检验显著性的方法有多种,我们将重点关注不带( Yates ')校正的(Pearson’s)卡方检验。p 值可以通过卡方统计从列联表中显示的观察数据中导出,卡方统计定义为
其中 Oi,j 是观察到的成功和失败,而 Ei,j 是它们各自的期望值,如果基础分布是相同的,即在上面的例子中有 15 次成功和 985 次失败。因此,如果在观察到的情景中没有差异,则统计表明两种情景的不同之处。p 值现在可以根据卡方统计值(稍后在进行实验时会详细介绍)计算为具有适当自由度的卡方分布的曲线(积分)下的右尾面积(在两种可能结果的情况下,场景数减一)。如果 p 值低于先前定义的值(如期望的置信度或显著性水*),则可以拒绝零假设,并且认为结果取决于观察到的情况。在上面的例子中,卡方等于 3.3841,p 是 0.0658(这可能不足以否定独立性的概念)。
那么问题出在哪里?
正如我们已经看到的,我们需要对我们期望的结果(上面例子中的成功或点击)达到一定程度的信心,以依赖于所提供的场景。只有这样,我们才能“安全地”忽略劣势场景或变体,例如 ad,从而最大化积极结果。
这里的问题是一个探索和剥削的问题。
为了通过完全转移到最佳场景来利用这种情况(例如,只显示那个广告),我们需要投资探索这种情况,直到我们足够自信。这可能是昂贵的,因为我们可能要支付投放广告的费用,和/或由于“糟糕”的场景选择而没有最大化我们的回报所导致的机会成本。因此,在我们对完全转移到指定的高级场景的决策达到期望的信心之前,我们纯粹是花钱去探索;在我们达到这一点后,我们可以充分利用这种情况(假设场景不会随着时间的推移而改变)。这听起来不像是最佳解决方案,对吗?
如果我们能够更渐进、更早地走向我们认为可能更优越的情景,从而降低勘探成本并增加开采回报,尤其是在短期内,会怎么样?
很高兴你问了。
另一种选择是:多股武装匪徒
在进入细节之前,让我们快速讨论一下统计的频率主义和贝叶斯方法之间的斗争:
Source: https://www.xkcd.com/1132, also compare the heated debate about this comic at https://stats.stackexchange.com/questions/43339/whats-wrong-with-xkcds-frequentists-vs-bayesians-comic
直到现在,我们一直过着频繁的生活。然而,由于我们不想成为超新星,这种情况将会改变。贝叶斯主义者通过获得与这些信念有条件相关的额外信息,更新他们关于(随机)世界(从前到后)中(事件的概率)的现有信念:
其中 A 和 B 是事件,P(A)和 P(B)是观察到这些事件的(边际)概率(其中 P(B) ≠ 0),P(A|B)和 P(B|A)是条件概率(例如,给定 B 为真的 A 的可能性)。
“经典的”频率主义者 A/B 测试有许多替代方法,本文将重点介绍一种特定的贝叶斯方法,它可以标准化和自动化,类似于分裂测试:
“A/B 测试的更智能版本”
据《远见》中的 Kai Rikhye 所说。
多臂土匪简介
Photo by Steve Sawusch on Unsplash
请记住,我们希望更逐步、更早地向我们认为可能更好的方案发展,从而降低勘探成本并增加开采回报——这是一个经典的权衡。这就像我们想知道在赌场玩哪个老丨虎丨机(独臂强盗);如果我们知道每台机器的成功率,我们只会将资金投入到获胜概率最高的机器中,而完全忽略所有其他选项。然而,如果我们不知道这一点,我们需要探索各种选项,以估计所有机器的成功率,同时最大化我们可以从游戏中预期的总体(累积)回报。这个优化问题可以通过测试不同的选项并在可以观察到回报时强化它们来解决(因此出现了一个强化学习的问题)。然而,找到精确的解决方案是困难的。幸运的是,对于我们的用例来说,有足够的*似值。在本文中,我们将重点介绍一种叫做"汤普森抽样"的方法,该方法由 William R. Thompson 早在 1933 年提出,其基础是从每个期权的贝塔分布中随机抽取样本,贝塔分布由每个期权过去的成功 α 和失败 β 的密度函数来参数化
其中 θ 等于相应选项的成功率,γ表示γ函数。贝塔分布的重要特性是*均值等于 α / (α + β) (成功率=成功/试验次数),并且随着 α + β (试验次数)的增加,分布变得更加集中。因此,在给定抽取轮次中具有最高抽取样本的选项将被选择用于下一次试验,该选项可能具有高置信度的高成功率,并且可以被利用,或者它具有低置信度的任何成功率,并且仍然需要被探索。
Probability Density Functions, Source: https://en.wikipedia.org/wiki/Beta_distribution
建立了一些理论之后,我们现在可以继续实际模拟测试不同变体的性能时的分割测试和多臂强盗的行为。
实验:分裂与强盗
设置
我们将测试两种不同的方法(卡方分割测试,以下称为“分割”和 Thompson beta bandit,以下称为“bandit”),目的是通过从多个选项(例如不同的广告创意)中顺序地(在几个时期内,例如几天内)选择试验(例如向用户展示广告),来最大化累积的成功(例如广告点击)。基于上述这些算法的不同性质,我们预期不同的结果取决于由以下变量控制的不同环境:选项的数量、这些选项的真实成功率、每个周期的试验、置信水*(最大 p 值)和成功率不稳定性(标准偏差)。在探索替代方案之前,我们将从一个有两个选项和固定成功率(无偏差)的简单环境开始。
基本模拟
基本实验甚至可以在电子表格中模拟:
https://docs.google.com/spreadsheets/d/1a2ss3cepB6apQTH16uDwIo3gZ9kWBSxQD7ijM3vbcp0
在该表中,环境参数设置在单元格 A1:I3 中。基于这些,在单元格 A5:P13 中计算拆分和前 7 个期间的决策和结果。如前所述,每个周期的所有试验将*均分布在选项上,直到可以宣布具有统计显著性的获胜者。对于具有两个选项的场景,真实成功率为 1%和 1.5%,没有偏差,每个周期 2,000 次试验,最大 p 值为 0.1 (90%置信度),该方法在周期 6 之后检测选项 2 的更高成功率,并且从那时起仅试验该选项。L:P 列显示了总的、累积的成功以及与最佳情况的绝对和相对差异(损失),在最佳情况下总是选择了最佳选项。
单元格 A15:P23 用类似的方法计算强盗的这些值。为了可比性和实用性,该方法不是一次抽取一个样本并选择一个选项,而是通过周期性决策来实施,其中周期 t 中显示的选项的百分比等于它被基于周期 1 至 t-1 的数据构建的贝塔分布的 100 个随机样本选择的次数(所有周期的每个单独样本和选择可以在单元格 A25:R126 中看到)。有了上面描述的样本环境变量,我们应该找到更多的累积成功,因此与 Bandit 的最优选择相比,损失更小。这也可以通过分别绘制所有时期的绝对和相对成功来可视化:
这里变得明显的是——至少在这个基本的模拟中——强盗在所有时期都支配着分裂。因此,让我们通过改变不同的参数来检验这一结果的弹性。您可以在提供的电子表格中按顺序完成这项工作,但由于我们想要应用的这种和未来的变化更容易用 Python 模拟编码,我们现在将转向这一点。
分割类以可用选项的数量、试验、成功和失败向量作为 Numpy 数组以及(当前)p 值开始:
class Split():
def __init__(self, num_options):
self.num_options = num_options
self.trials = np.zeros(shape=(self.num_options,), dtype=int)
self.successes = np.zeros(shape=(self.num_options,), dtype=int)
self.failures = np.zeros(shape=(self.num_options,), dtype=int)
self.p_value = 1.0
然后,我们需要一种方法将一个时期的结果(试验、成功和失败)添加到一个分割实例中:
def add_results(self, option_id, trials, successes):
self.trials[option_id] = self.trials[option_id] + trials
self.successes[option_id] = self.successes[option_id] + successes
self.failures[option_id] = \
self.failures[option_id] + trials - successes
最后,我们将重新计算当前状态的 p 值:
def calculate_p_value(self):
observations = []
for i in range(self.num_options):
observations.append([self.successes[i], self.failures[i]])
self.p_value = \
chi2_contingency(observed=observations, correction=False)[1]
chi2_contingency 函数可以在 SciPy 库的 stats 模块中找到,它使用与上述电子表格相同的过程从给定的列联表中计算 p 值。
类似地初始化 bandit,只是我们不需要 p 值或故障向量,而是包括先验元组,该先验元组可用于利用现有先验信息创建 Bandit,以构建上述 Beta 分布:
class BetaBandit():
def __init__(self, num_options):
self.num_options = num_options
self.prior = (1.0, 1.0)
self.trials = np.zeros(shape=(self.num_options,), dtype=float)
self.successes = \
np.zeros(shape=(self.num_options,), dtype=float)
可以用与分割相同的方式添加结果(只是没有失败)。
现在,我们可以从所有选项的基本 beta 分布中选择一个选项作为最高采样值:
def choose_option(self):
sampled_theta = []
for i in range(self.num_options):
dist = beta(self.prior[0] + self.successes[i],
self.prior[1] + self.trials[i] - self.successes[i])
sampled_theta += [dist.rvs()]
return sampled_theta.index(max(sampled_theta))
beta 函数也是 SciPy 库的 stats 模块的一部分, rvs() 根据底层分布返回一个随机变量。
对于批量模拟,我们需要重复选择选项:
def repeat_choice(self, repetitions):
option_counts = np.zeros(shape=(self.num_options,), dtype=int)
for _ in range(repetitions):
option = self.choose_option()
option_counts[option] += 1
return option_counts
然后,基本模拟充分运行到上面的电子表格示例:
- 初始化分裂和强盗
- 添加第一阶段的结果,并在所有选项中*均分配试验
- 重新计算拆分的 p 值
- 如果 p 值< max p-value: Add results to Split with equal distribution of trials over all options, else: Add results to Split with all trials for best option (with most successes)
- Choose batch options for Bandit and add results with distribution of trials as in choices
- Start again from 3.
The results are (almost, accounting for the randomness of the beta sampling) the same as already seen above:
Before we continue with the elasticity experiments, let us examine 28 instead of 7 periods:
The long term differences between Split and Bandit are smaller since the Split finds the optimal option after the 6th period and after that allocates all trials to that option where the Bandit still occasionally tries the weaker option (although very sparsely). Still, also after 28 periods the Bandit has outperformed the Split.
Okay, you want to know if that changes after 100 periods? It does not:
After this basic experiment, we want to take a final closer look at how the various simulation parameters affect the results before coming to a conclusion about when and when not to A/B test.
参数弹性
p 值
我们想分析一些环境参数对实验结果的影响,从不同的 p 值开始(回到 28 个周期的默认观察长度):
我们可以看到,p 值越高,结果越好(越接*最优值)。不过,我们必须小心,在我们的模型中使用更高的 p 值来得出结论,因为这将导致更多的假阳性(I 类错误),从而增加选择次优选项作为“赢家”的风险。对于剩余的实验,我们将 p 值设置为 0.1,因为我们可以错误地拒绝变量之间无显著差异的零假设 10%。
审判
看看 Split(左)和 Bandit(右)的不同试验编号:
正如我们所预料的,更多的试验会导致对分割测试结果更高的信心,从而更快地找到最佳选择。对于这两种方法,我们可以观察到一个看似渐进的行为(更多试验的边际改善减少)。
成功率
虽然我们能够影响 p 值,也可能影响在现实世界中试图找到实现我们目标的最佳选项时的试验次数,但真正的成功率通常与我们的行动无关(这里不涉及 Schroedinger)。因此,这两种方法的区别在这里更为重要(同样,左边是分裂,右边是 bandit):
同样,这种分割是由强盗控制的,如果可用选项的实际成功率差异很小,情况就更是如此。在[0.01,0.012]的情况下,Split 甚至在 27 个周期之后都没有找到最优选项。
不确定
当真正的成功率不是完全不变的(在“真实世界”环境中很可能不是这样),而是正态分布,标准偏差为*均值的 50%时,结果会发生相当大的变化:
这些结果显然取决于诱发的随机状态,在不同的状态下,它们可能看起来非常不同:
一般来说,在概率更大的环境中,强盗的优势不太明显。
现在让我们比较两种方法在不同不确定性水*(成功率标准偏差)下的结果:
更多选项
最后但同样重要的是,我们想看看有两个以上竞争选项的场景。有 11 个不同的选项,*均分布的真实成功率在 1%和 2%之间,相对于最佳成功率的 Bandit 结果如下所示(左边是成功率无偏差,右边是*均值的 25%标准偏差):
当有更多选择时,这两种方法都做得更差。不过,在 Split 找到最佳选择之前,Bandit 的表现远远超过它。然而,当实验运行的时间足够长时,最终结果看起来完全不同:
虽然分裂在确定性环境中击败了强盗,但强盗似乎更少受到引入的不确定性的影响,即使从长期来看也是如此。
真实世界的例子
这里的场景是一个数字广告活动,有 50 个不同的广告组合(选项),随机(统一)分布的点击率(真实成功率)在 1%到 4%之间。点击率的标准差是它们各自*均值的 50%。将有 5000 个试验,每个试验将持续 28 个周期。我们将分割的 p 值保持在 0.1。结果如下:
从 8904 个可能的成功中,分裂得到 4346 个,强盗得到 3968 个。坏消息是,与每个时期的真实成功率已知的情况相比,这两种方法都留下了超过 50%的可能性。好消息是,这两种方法都将基本比率(3137 次成功)提高了至少 26%。
结论
要回答最初的问题“何时不使用 A/B 测试”:特别是当勘探成本高且短期开采重要时,和/或当处理不确定(即概率性)环境时,Bandit 在寻找和使用最佳选项并最大化效率方面提供了一个非常好的、更优越的选择。然而,当分割(A/B 测试)确信已经确定了最佳选项时,它可能会产生更好的结果。
因此,一个明显的结论和进一步研究/测试的开始可以是在混合模型中结合两种方法,使用 Bandit 直到分割置信度足够大(p 值小于定义的最大值),然后利用分割将选项集减少到成功率最高的较少“赢家”,之后再次使用 Bandit 为下一期选择选项,直到分割的 p 值再次足够小,以此类推…
不过,还有一个我们尚未涉及的警告:期权的成功率及其分布可能会随着时间的推移而发生变化。如果是这种情况,我们可能根本不想减少可能的选项集,而是用任何新的观察结果灵活地调整我们的决策过程。由于分割的基础是基于限制选项,即确定赢家,这将极大地影响这种方法在这种环境下的拟合度。然而,Bandit 在每个新的观察(集合)之后更新其关于世界的信念,可以被构造来处理这样的行为,例如,通过引入折扣函数,当选择下一时段的优选选项时,减少旧结果的影响。为了简要强调拆分在改变成功率方面的缺陷,看一下比率意味着每周期增加或减少 5%的场景(实际上,例如,你可以想象由于受众发展,显示给一个特定受众的广告的点击率随着时间增加,例如,通过重新定位,而显示给另一个受众的广告的点击率由于饱和而下降):
正如你所看到的,分割现在甚至不能超过随机基础分配了。土匪似乎几乎不受影响,虽然它可能会得到进一步改善,提到折扣旧的结果。
所以总而言之,
在测试不同变体或场景的性能时,Bandits 提供了您的首选方法
如果你还在使用 A/B 测试,你至少应该考虑转换。
在我离开你并期待收到你的反馈、评论和想法之前,我想感谢你陪我看了这么长而激烈的文章。作为一个小玩意,我为你们中任何想使用 Bandit 进行数字营销活动的人制作了一个广告优化工具:【optimizer.stagelink.com】
除此之外,你可以在我的 Github 上找到所有用于讨论模拟的代码:github.com/kinosal/optimizer
再次感谢,并尽快与您联系!
当自动化反噬时
原文:https://towardsdatascience.com/when-automation-bites-back-8541b061d5ee?source=collection_archive---------21-----------------------
不诚实的自动化业务以及背后的工程师、数据科学家和设计师如何修复它
Photo courtesy of Nicolas Nova.
“飞行员持续战斗,直到飞行结束”,调查 2018 年 10 月 29 日坠毁的狮航 610 航班的负责人 Nurcahyo Utomo 上尉说,机上 189 人遇难。对黑匣子的分析显示,这架波音 737 飞机的机头被反复压下,显然是由接收到错误传感器读数的自动系统造成的。在悲剧发生前的 10 分钟内,飞行员曾 24 次尝试手动拉起机头。他们与故障的防失速系统进行了斗争,他们不知道如何为特定版本的飞机解除该系统。
这种人类与顽固的自动化系统斗争的戏剧性场景属于流行文化。在 1968 年的科幻电影《2001:太空漫游》的著名场景中,宇航员戴夫要求哈尔(启发式编程算法计算机)打开飞船上的舱门,哈尔反复回应,“对不起,戴夫,恐怕我做不到。
1.自动化的商品化
令人欣慰的是,数字自动化的当代应用是局部的,并没有像哈尔那样采取“人工一般智能”的形式。然而,曾经专门应用于驾驶舱等关键环境中自动化人类工作的计算任务已经进入人们的日常生活(例如,自动寻路、智能恒温器),这些技术通常用于更琐碎但非常有利可图的目标(例如,定向广告,优先选择 YouTube 上的下一个视频)。
“令我担忧的是,许多工程师、数据科学家、设计师和决策者将数字摩擦带入了人们的日常生活,因为他们没有采用方法来预见他们工作的限制和影响”
曾经依赖基于作者对世界的理解的编程指令的自动化系统,现在也从传感器和人类活动的数据集中找到的模式来模拟它们的行为。随着这些机器学习技术的应用变得广泛,数字自动化正成为一种商品,其系统在互联网规模上执行一项任务,而无需深入理解人类环境。这些系统被训练来完成“一个”工作,但有证据表明,当事情没有按预期发展时,它们的行为,如 HAL 或波音 737 防失速系统,可能会违背用户的意图。
2.笨拙的边缘
在不久的将来的实验室,像 #TUXSAX 和好奇的仪式最*的视觉民族志揭示了自动化商品化的一些含义。在导致狮航 610 航班坠毁的完全不同规模的戏剧性后果中,这些观察强调了一些数字解决方案如何让人们有一种被“锁定”的感觉,没有从顽固行为中脱离的“退出”键。这些数字摩擦中的绝大多数都会在人们的日常生活中引发无害的微挫折。它们通过校准不良的系统和忽视边缘情况的设计表现出来。例如,经常会遇到语音助手无法理解某种口音或发音,或者导航系统由于位置不准确、过时的道路数据或不正确的交通信息而误导驾驶员。
Curious rituals is a fiction that showcases the gaps and junctures that glossy corporate videos on the “future of technology” do not reveal. Source: Curious Rituals.
这些笨拙的自动化可以减轻,但不会消失,因为不可能为所有意想不到的限制或后果设计应急计划。然而,其他类型的顽固自主行为被有意设计为商业模式的核心,以人类控制换取便利。
3.不诚实的自动化行业
许多自动化日常任务的技术使组织能够降低成本并增加收入。科技行业的一些成员利用这些新的技术能力将客户或员工锁定在他们没有合法需求或愿望的行为中。这些系统通常被设计成抵制用户的需求,并且很难脱离。让我给你举几个我称之为“不诚实的自动性”的例子:
3.1.数据肥胖
自动云备份系统已经成为操作系统的默认功能。他们将个人照片、电子邮件、联系人和其他数字生活的存储具体化。他们的商业模式鼓励客户无休止地积累更多内容,而没有一个明确的替代方案来促进数据的适当卫生(即,还没有人提出“Marie Kondo for Dropbox”)。不管提供商的承诺如何,人们越来越难以从云存储服务中清理他们的数字生活。
Upgrade your storage to continue backing up: an automatic cloud backup system that locks in its user, leaving no alternative to the accumulation of content.
3.2.系统老化
今天的应用程序自动更新通常会增加对资源和处理能力的需求,以进行表面上的改进,这几乎是在故意试图让硬件过时,让软件更难操作。在多年逍遥法外之后,现在反对系统报废的意识更强了,因为这是一种浪费,而且剥削消费者。
3.3.数字注意力
随着互联网上的内容呈指数级增长,(社交)媒体公司越来越依赖自动化来过滤信息并将其发送给每个用户。例如,YouTube 自动为 15 亿用户播放数十亿个视频。这些算法旨在促进更高参与度的内容,并倾向于引导人们反对他们的兴趣。
鉴于这些笨拙和不诚实的自动化例子,我担心的是,许多工程师、数据科学家、设计师和决策者将这些摩擦带入人们的日常生活,因为他们没有采用方法来预见他们工作的限制和影响。除了高效解决方案的工程设计之外,自动化还要求专业人员思考他们实践的基础和结果,这些超越了他们组织的任何关键绩效指标。
4.人性化自动化设计
自动化的设计不是要消除人类的存在。它是关于人性化、尊重和信任的系统的设计,这些系统自动化了人类活动的某些方面。当与该领域的数据科学家、设计师和工程师合作时,我们设想系统超越“用户”和要自动化的“任务”的范围。我鼓励团队 a)从过去中学习 b)评论现在,c)讨论未来。让我解释一下:
4.1.从过去吸取教训
当谈到自动化时,学术界和工业界的知识获取并不是分开的追求。在过去的 50 年里,研究机构对自动化人工任务和决策的含义进行了大量的研究。关键发现有助于在关键环境中节省资金,并防止大量致命错误(例如在驾驶舱中)。
今天,这种知识并没有转化为日常任务。例如,许多工程师或数据科学家不掌握由科学和技术研究或人机交互研究社区理论化的自动化偏差(即人类倾向于支持来自自动化决策系统的建议)或自动化自满(即人类对监控自动化结果的关注减少)等概念。可悲的是,只有少数组织推动聚集学者、艺术家、工程师、数据科学家和设计师的*台。处于数字化进程中的行业将从这种专业人员的相互交流中大大受益,这些专业人员从他们学科之外已经出现的考虑中学习。
4.2.批判现在
我认为,参与人类活动自动化业务的专业人员应该是他们的同行所部署的解决方案的坚持不懈的关键评审者。他们应该成为今天人们如何处理现代生活中出现的笨拙、不诚实、令人讨厌、荒谬和任何其他尴尬的数字技术的跟踪者。
TUXSAX is an invitation to engage with these knotty, gnarled edges of technology. It provides some raw food for thoughts to consider the mundane frictions between people and technologies. Do we want to mitigate, or even eliminate these frictions? Source: Documenting the State of Contemporary Technology.
当被恰当地记录下来时,这些观察为众多“天真的乐观主义”和科技行业迷人的乌托邦式愿景提供了一种补充形式的灵感。它们为专业人员提供了质疑自动化可能存在偏见的目标的材料。此外,他们为定义组织中可实现的目标做好准备(例如,smart/intelligent 是什么意思?,如何衡量效率?,什么必须变得易读?).
4.3.辩论未来
在今天的互联网中,即使是最简单的应用程序或连接对象的设计也已成为一项复杂的工作。它们建立在分割的操作系统、众多协议、版本、框架和其他可重用代码包之上。数字摩擦的缓解超出了保证应用程序健全性的“质量保证”团队的范围。它们也是关于记录对技术生存环境的影响、意想不到的后果和“假设”情景。
It’s easy to get all Silicon Valley when drooling over the possibility of a world chock-full of self-driving cars. However, when an idea moves from speculation to designed product it is necessary to consider the many facets of its existence — the who, what, how, when, why of the self-driving car. To address these questions, we took a sideways glance at it by forcing ourselves to write the quick-start guide for a typical self-driving car. Source: The World of Self-Driving Cars.
一般来说,设计虚构是一种引发对话和预测有关人类活动自动化的更大问题的方法。例如,我们制作了亚马逊 Helios: Pilot 的快速入门指南,这是一部虚构的自动驾驶汽车。在那个项目中,我们确定了涉及自动驾驶汽车人性方面的关键系统,并以一种非常有形、引人注目的方式为设计师、工程师和其他任何参与自动化系统开发的人带来了这种体验。通过集体创作,《快速入门指南》成为了一个图腾,任何人都可以通过它来讨论后果、提出设计考虑和形成决策。
5.信托业务
像许多技术进化一样,日常生活的自动化不会没有为了方便而交易控制的摩擦。然而,后果比减轻边缘案件更大。它们反映了人类、组织或社会的选择。部署系统的选择误导了他们与人民和社会利益相冲突的意图。
马克·魏泽在 90 年代关于普适计算的开创性工作中,强烈影响了当前计算领域的“第三次浪潮”,当时技术已经退居人们生活的背景。科技行业的许多专业人士(包括我)都接受他对冷静技术的描述,即“告知但不要求我们关注或注意”然而,魏泽和其他许多人(包括我)没有预料到的是一个不诚实的自动化或解决方案的行业,当事情没有按计划进行时,它们会违背用户的意图。我们也没有真正预料到自动化会在多大程度上反作用于部署自动化的组织,而这些组织遭到了客户、社会和决策者的强烈反对。
这些暗示为任何参与数字自动化业务的组织提供了超越纯技术和商业的替代范例。例如,一种促进尊重(过度高效)、清晰(过度冷静)和诚实(过度聪明)技术的范式。当专业人员(例如,工程师、数据科学家、设计师、决策者、高管)游离于他们的实践之外,运用批判性思维来揭露不诚实的行为,并使用虚构来做出考虑超出“用户”和要自动化的“任务”范围的影响的决策时,这些就是出现的价值类型。
我认为,在自动化行业中,维持现状、不发展成信任企业的组织可能最终需要处理声誉受损及其对内部价值观、员工道德、收入以及最终利益相关者信任的影响。
我积极参与人文科技的发展。如果你想用其他范式或不同方法来设计尊重人民和社会利益的技术,请随时发表评论或联系我。
感谢 Nicolas Nova 和 Jose Antonio Rodriguez 对本文提出的周到建议。
原载于 2019 年 1 月 16 日blog.nearfuturelaboratory.com。
当生日冲突时
原文:https://towardsdatascience.com/when-birthdays-collide-6e8a17b422e7?source=collection_archive---------24-----------------------
Happy birthday! Photo by Marina Utrabo on Pexels
想象一个挤满了人的房间——准确地说是 23 个人。也许你在一个高中班级,也许你正在参加一个低调的社交活动。这两个人同一天生日的几率有多大?(为了简单起见,假装闰年不存在,所以没有人在 2 月 29 日出生。)
你的第一个假设可能是这些人的生日在一年中均匀分布。或许你可以推断出,*均来说,一年的 12 个月中每个月都有两个人出生(除了一个月),所以对于每个月来说,这两个人中的任何一个在某一天出生的概率大约是 1/30。因此,这 23 人中有两人在同一天出生的可能性一定非常非常低。对吗?
错了!在 23 人的小组中,有 50%的几率两人同一天生日。当人数增加到 80 人时,赔率跃升到惊人的 99.98% !
如果这看起来令人困惑,那只是因为它确实如此。生日悖论感觉非常违反直觉,直到你看到背后的逻辑。我们就这么做吧!
为了更好的理解这个问题,我们先从数学上来分解一下。
对于任何两个随机选择的人来说,他们有 1/365 的机会在同一天出生(假设他们不是在闰年出生)。因此,这两个人在不同的日子出生的概率是 364/365。
为了找出一个组中所有个体都有唯一生日的概率,我们将 364/365 提升到组中有对的次方。使用 23 人小组的介绍性示例,这意味着我们想要确定我们可以将这 23 个人分成两个小组的方法的数量。
Photo by Curtis MacNewton on Unsplash
从数量为 n 的项目中挑选数量为 k 的项目的公式如下:n!/ ( k !* ( n — k )!)当我们为 k 插上 2,为 n 插上 23,我们的结果就是 253。因此,在我们 23 个样本中有 253 个可能的配对。当我们取 364/365 并将其提升到 253 次方时,结果是~0.4995,表明 23 个陌生人没有一个出生在同一天的概率为 49.95%。通过从 100.00%中减去这个结果,我们能够最终获得至少一对与拥有相同出生日期的概率:~50.05%。
生日悖论令人着迷的原因有很多。对于程序员来说,理解生日悖论很有用,因为它解释了哈希冲突的概念。
在我们深入探讨碰撞之前,我们先来讨论一下哈希表(也称为哈希表)。哈希表是一种以随机顺序存储项目的数据结构。这些项目存储在桶中,其数量由程序员决定。一个散列函数(Python 中的一个内置函数)负责将每一项分配给一个特定的桶索引号。
Look, it’s a bucket. Photo by Gregory Culmer on Unsplash
为了完成这个重要的任务,hash 函数为您想要存储的内容分配一个随机生成的数字。然后,它将这个随机数除以哈希表中有多少个存储桶。这个除法的余数是桶索引,然后内容被放在相应的桶中。
你可能会认为散列会导致项目在桶中的*均分布,就像你可能会推断 23 个陌生人的生日可能分布在日历年中一样。但是我们从数学上观察到,有大约 50%的可能性两个陌生人同一天过生日。我们还观察到,当这个小组只有区区 80 个人时,这种可能性会跃升至* 100%。
让我们把每个日历日想象成散列表中的一个桶。当其中一个陌生人发现他们的出生日期与一个小组成员的出生日期一致时,这就相当于一个新项目被分配到一个已经包含一个项目的桶中。这个事件被称为哈希冲突。你不需要在哈希冲突发生之前拥有大量的条目——毕竟,我们只需要一小群人来解释生日悖论。
Chaining! Photo by JJ Ying on Unsplash
有两种主要的方法来处理哈希表中的冲突。第一个是线性探测,它通过将新项目分配给下一个桶来处理冲突。第二个是链接,这需要将新的项目插入到桶中,即使那里已经有一个项目。哈希表通常用链表实现,这是一种线性数据结构。这意味着,除非是空的,否则每个桶都包含一个项目链表。因此,当一个条目被添加到一个已经包含某些内容的桶中时,这个新条目只是被添加到链表的末尾。
生日悖论就像一个哈希冲突解决方案。显然,在任何一天都有可能有不止一个人出生在 T21。因此,可以说真实世界的生日哈希表解决了它与链接的冲突!
参考资料和进一步阅读
- “生日悖论”,菲利普·j·埃尔德尔斯基
- ”概率和生日悖论,《科学美国人》
- ”理解生日悖论,更好解释
- "理解生日悖论",Shashank Tiwari
当商业分析遇到机器学习
原文:https://towardsdatascience.com/when-business-analytics-meets-machine-learning-10ecaada9d8?source=collection_archive---------8-----------------------
对你的第一个数据科学项目有什么期望?商业指南。第三部分
Photo by Olav Ahrens Røtne on Unsplash
这是“从你的第一个数据科学项目中期待什么——企业指南”系列的第 3 部分。你可以在这里 和 阅读之前的部分 在这里
在一家大公司听到的对话:
PMO:嘿,John,我们正在使用敏捷方法启动一个新项目,你愿意管理它吗?
IT 项目经理约翰:当然,没问题。你已经有所有的规格了吗?
商业惯例和习惯很难改变,尤其是在成熟的大公司。引入新的工作方式极其困难,但让人们以不同的方式工作几乎是不可能的。这些公司和商业行业普遍存在巨大的文化惯性。
使用机器学习是那些将使人们以不同方式工作并将在未来使商业环境不同的变化之一。此外,这是数据科学和业务数据分析之间的另一个巨大差异,因此对话很好地从上一部分开始。
今天,人们倾向于交替使用数据科学、人工智能和机器学习,因为我们生活在这些概念一起使用的历史时刻。但这并不意味着它们是一样的。其实都是不同的概念。
数据科学和人工智能是两个有自己实际目标的领域:首先寻求解释数据,而后者则自动化需要人类认知努力的任务。数据科学为企业提供了洞察力,并用于决策。AI 更多的是业务运营的自动化或者业务系统的维护。他们可能共享相同的模型,只是结果的使用使他们成为数据科学或人工智能。
机器学习本身不是数据科学或人工智能的一部分——只是一种让现代数据科学和人工智能发光的方法。这是一个通用的数学和软件开发概念,有些人将其视为软件 2.0 ,但我更愿意称之为示例驱动编程。
机器学习是一种对算法进行编程的方式,以我们想要的方式进行预测或行动,而不提供算法应该遵循的规则。相反,我们提供数据和期望的响应,并让计算机从提供的示例中自己学习这些规则。
就是这样!这就是机器学习的整个概念。
它与基于规则的编程完全相反,基于规则的编程主导着公司的 It 环境(以及一般的软件开发)。它是一种编程范式,其中程序被构建为计算机应该遵循以实现期望结果的配方。在商业环境中,这些配方被称为业务规则,它们通常由业务分析师设计和维护。
基于规则的方法有许多优点:规则可以被记录、审查,它们对人类来说是自然的,并且它们给人一种安全感。多年来,它一直很好地服务于大多数场景,包括商业智能。典型的 BI 报告是根据业务分析师设计的业务规则计算的,并在报告规范中明确列出。
Photo by Nicolas Thomas on Unsplash
然而,当没有人知道如何找出计算机要遵循的规则时,这种方法并不奏效。或者随着时间的推移,规则变得如此复杂,以至于失去控制,这种情况也经常发生。
在机器学习范式下,数据本身成为一种规范。
这就是机器学习发挥作用的地方。代替规则,商业必须提供(通常,许多!)真实数据的例子。他们必须对数据进行预处理,通常包括基本的过滤和标记。例如,如果一个企业想要建立猫和狗的图像分类器,他们必须提供几千张来自他们真实业务实践的图像。他们还必须手动标记这些图像,告诉每张图像上是猫还是狗。
示例选择和标记是为 ML 算法指定期望行为的方式。这两者和为基于规则的解决方案设计规则一样重要,比如 BI。
“垃圾进,垃圾出”的概念也同样适用于机器学习。
为训练机器学习模型准备数据仍然是人类的任务。在未来 ML 驱动的组织中,这将是业务分析师的新职责。他们将不再自己设计业务规则——他们将为机器学习算法设计训练场景,以学习这些规则。像以前一样,他们还将负责验证测试结果并签署解决方案以投入生产。
这一职业的变化将类似于几十年前商业分析师的情况,当时计算机取代了他们的手工计算。过去,有人担心公司不需要那么多分析师,但看看发生了什么——业务分析变得越来越复杂,现在需要更多的分析师。他们中没有一个人像前计算机时代的同事那样使用纸笔。这正是机器学习即将发生的事情。
机器学习不会让商业分析师变得多余,但会让他们与众不同。
在引入人工智能和数据科学之前,这是商业领袖必须在整个组织中传达的一个非常重要的信息。
黑盒
还有一个重要的问题让人们对机器学习感到焦虑:大多数时候,通过机器学习计算的规则无法转换回人类可以理解的格式。这些规则只是数字的数组,可以是巨大的,达到数百万个值。这对人类来说太多了,难以消化,也看不到它们背后的任何意义,这就是为什么大多数机器学习算法被视为黑盒。
Photo by Christian Fregnan on Unsplash
在 XAI(可解释的人工智能)倡议下,人们试图使它们更加透明,但它们往往有一个根本的缺点:
为了解释机器学习,XAI 的方法使用了更多的机器学习。
这些技术更多的是描述而不是解释。正如 Cassie Kozyrkov 精彩指出的那样——可解释的人工智能只是提供了一个不完整灵感的良好来源。在复杂的 ML 算法中建立信任的唯一方法是仔细测试,而不要求完全理解它是如何做出决策的。因此,从 ML 算法中获取业务规则是没有希望的。
企业喜欢他们的规则!他们不喜欢用信任来取代它们的想法,即使这种想法得到了全面测试的支持。
希望将数据科学,尤其是人工智能引入其业务的领导者必须考虑到这一点。机器学习很可能会随之而来,当人们不信任算法并希望大量手动控制破坏人工智能自动化的整体理念时,它可能会在内部遇到阻力。
要求明确的规则只是商业运作中的习惯和传统,从人类执行商业规则的时候就出现了。今天,业务操作基本上是自动化的,它们以人类可读的格式编写的唯一原因是它们是由人类设计的。随着机器学习的采用,商业规则不再必须是人类可读的。这将只是一个信任的问题,企业必须学会赢得人工智能竞赛。
The remains of the Roman Forum, the birthplace of the modern civilisation. These structures were built without structure analysis theory. They were built on trust in the architect’s practical experience and best practices of the time. Image by jacqueline macou from Pixabay
还有许多其他重要的领域,在那里实践先于理论,在那里人们习惯于在找到所有为什么的答案之前相信测试:土木工程、制药工业、神经科学等等。例如,在 20 世纪结构分析的理论模型被广泛采用之前,土木工程是基于建筑师几千年的实践经验。归根结底,神经科学仍然无法解释我们的大脑是如何做出决定的。
摘要
机器学习与数据科学和人工智能密切相关,这意味着也必须考虑它的影响。当人工智能和机器学习被引入商业运营时,这些影响可能会对既定的商业文化构成挑战:
- 机器学习不是基于规则的,因此传统的商业规则在基于机器学习的解决方案中不起作用
- 机器学习是示例驱动的。为了“训练”算法以期望的方式运行,企业必须提供一组来自其真实实践的相关数据示例。
- 大多数机器学习算法缺乏商业规则的透明性
- 机器学习不会让商业分析师变得多余,但会让他们与众不同
这些暗示在使用机器学习时自然会造成一种对商业运作失去控制的感觉。商业中的下一个自然反应将是通过放置多个手动“旧式”控制来破坏人工智能自动化的整个想法,从而补偿这种损失。
避免这种情况的最佳方式是通过仔细和多样的测试来培养对机器学习解决方案的信任。对于商业和数据科学家来说,这都是一项艰巨的工作,尤其是在人工智能旅程的开始,但为了在商业中成功采用人工智能和数据科学,需要完成这项工作。
就像几十年前计算机被引入工作场所一样,将人工智能自动化成功引入商业运营不会对商业分析师构成威胁。这将使他们变得与众不同,更有效率…最终
你可以在LinkedInTwitter脸书 上找到我**
什么时候可以和机器进行有意义的对话?
原文:https://towardsdatascience.com/when-can-i-have-a-meaningful-conversation-with-a-machine-part-1-655fefa20f45?source=collection_archive---------25-----------------------
我多久能取代我的朋友?
Joaquin Phoenix in Her (2013)
现在几乎每个网站都用聊天机器人来问候你。由于自然语言处理(NLP)和深度学习的进步,它们从具有有限对话能力的简单程序到智能的、具有对话能力的机器人。
一些众所周知的例子是:
- 聊天机器人(简单): Cleverbot , Smarterchild
- 虚拟助手(高级):Siri、Alexa、Cortana、谷歌助手
- 真实机器人(前沿):索菲亚,第一个被授予沙特公民身份的机器人
尽管这些机器人的复杂性差异很大,但有一点是肯定的:它们正在变得更好。有一天,对他们说话可能和对另一个人说话没什么区别。这就引出了一个问题——有没有一天我们能够像和其他人一样和机器人进行有意义的对话?
为了回答这个问题,我们要看看:
- 我们今天在哪里
- 我们要去哪里
- 图灵测试和一般智力
让我们开始吧:
我们今天所处的位置:
聊天机器人自 1966 年就存在了。从卑微的文本开始,到采用声音和神秘的面孔,他们已经在各种行业中充当信息经纪人。
最*,聊天机器人获得了媒体的 关注中的很多 ,这并不奇怪,因为它们是迄今为止人工智能最“人类”的面孔。但是,这个包罗万象的术语背后的机器人如何工作有很大的差异。
虽然相对简单,聊天机器人在响应常见的结构化查询方面做得很好。NLP 的最新进展,其中许多都基于聪明的深度学习技术(如 GloVe、Word2Vec、 ELMo 和 BERT ),让这些机器人对语言有了更细致的理解,从而能够更有效地应对更广泛的问题。
然而,这些机器人的主要用途不是进行对话,而是作为一种处理和交流信息的手段。我们可以问简单的问题,他们给出简单的回答。
Credit: WordStream
这一趋势将继续下去。至少在不久的将来,这些机器人的目的仍然是作为信息的管理者。
然而,随着物联网世界变得更加普遍,这些机器人可能会演变成我们与互联世界沟通的媒介——人和机器之间的中间人。
这种未来的证据已经存在。
我们的前进方向:
最普遍的具有对话能力的人工智能的例子是虚拟助手。Siri、Alexa、Cortana 和 Google Assistant 已经走出了我们的手机,进入了我们的家庭。他们识别和处理自然语言查询的能力(“开灯”“昨晚比赛的最终比分是多少”“点两吨奶油玉米”)越来越令人印象深刻。
我们已经看到了聊天机器人+物联网互动的第一波浪潮,其采用率令人震惊。根据这篇文章,超过 3900 万美国人拥有声控智能音箱。这证明了人们发现了自然语言命令的价值,消除了学习新软件和 UI 来完成工作的需要。
随着时间的推移,我们将能够仅仅通过一个命令来协调我们周围的世界——想想托尼·斯塔克和贾维斯。
有一天,我们将能够仅仅通过声音的力量来命令网络物理物体执行我们的命令。
然而,机器人的角色仍然没有改变:一个处理和传递信息的仆人。但是,我们正在取得进展。按照这种速度,NLP 和 AI 最终将发展到这样一个地步,即与机器人说话就像与另一个人说话一样自然,我们可能不会仅仅将它们视为工具,而是视为同伴。根据定义,像这样的机器人将通过图灵测试。从这里开始,事情变得更加理论化,更加投机。
图灵测试
阿兰·图灵于 1950 年发明的图灵测试是一种测试机器表现出与人类同等或不可区分的智能行为的能力的测试
这项测试最初被设计用来判断纯文本对话——不需要语音或面部表情。与传统考试不同,没有严格的评分标准或评分系统;图灵测试可以作为一个有用的基准来衡量我们目前的进展。
Siri
艾伦·图灵最初想出了他著名的测试,这是他思考这个问题的结果:
机器会思考吗?
双方都提出了可信的论点(我们将在第 2 部分中探讨)。然而,可以认为思考的行为与无关。机器是否需要理解我们说的话才能做出适当的反应,或者只是知道说些什么作为回应,而不真正理解它们的话的意思?许多人认为是后者,这一观点建立在智力只是物理系统中的信息处理,不需要“思考”的基础上。
一个有点类似的问题可以这样提出:深夜谈话——关于生活、宇宙、欲望、动机、灵性的谈话——需要来自一个有生物学动机的、有思想的生物吗?或者一台机器可以和我们一起沉思,从它的内部现实模型中插入洞察力?
这些问题深得惊人。什么是“有意义的谈话”的答案取决于对对方有什么要求,因人而异。有些人乐于独白,只需要对方还在听的周期性肯定。然而,其他人需要他们的问题、意见和新观点的答案来帮助引导他们的思想。虽然有些人很容易满足,但大多数人属于第二类。此外,要让一台机器对如此复杂的对话做出有意义的贡献,它需要具备一般的智能。
普通智力
人工通用智能(在这篇令人惊叹的博客文章中有所解释),是一个用来描述具有与普通人类同等智能的机器的术语。这意味着跨越所有领域——解决问题、推理、学习能力、艺术欣赏、对科学的理解、幽默等等
换句话说,一个通过图灵测试的机器人愚弄了你,让你相信它是,这个机器人真的是。然而,并不是一般智力的每个方面都与我们的问题相关。它与我们唯一需要的共同点是:
- 复杂的现实内部模型
- 流体推理
- 工作记忆
这些(或多或少)是赋予人类谈论抽象、宏大和主观话题的能力的基本要素。我们谈论宗教、情感、艺术、意义和其他“人类”价值的方式纯粹是基于我们的大脑对我们周围世界的解释,以及我们如何通过这种理解进行推理。毫不奇怪,一台机器需要做同样的事情,以一种有意义的方式为这样的讨论做出贡献,至少是一种我们可以联系的方式。
We want to get to the point where a machines “world view” and ours align in complexity
但是,即使这三个条件都满足了,还有另一个障碍。一个拥有和我们一样的知识和推理能力的人工通用智能,处理速度还是会高很多。由于我们的生物大脑和计算机芯片的处理速度之间的差异,这个机器人可能在几分钟内完成多年的思考。在这一点上,对话变得毫无意义了吗?是的,甚至可能很无聊。未知的美,以及寻找答案的美。咨询神谕剥夺了探索问题的乐趣。
理论上,为了有效地与我们交流,高级智能可以表现得比现在更沉默,就像人类使用简单的语言和手势与动物交流一样。在这种情况下,与机器进行有意义的对话是可能的。如果你曾经拜访过心理学家,你会很快意识到他们不只是直截了当地告诉你答案,而是引导你通过他们对你当前状态的分析,并帮助你找到解决方案,理论上机器也可以做到这一点。
请放心,在今天的世界上,这样的事情是不存在的;差远了。我们人类(更确切地说,我们的大脑)是我们所知道的唯一普遍智能的事物(没什么说人工普遍智能需要以同样的方式远程观察或工作)。
简而言之,要让一台机器与我们进行有意义的对话,它需要像我们一样了解,有相同的推理水*,但也以相同的速度思考。这样的甜蜜点几乎不可能达到,更不用说持续下去了。进步是指数级的,即使有一天这样的机器存在,也很快会被超越。
Machines will likely be far superior than we are in too many ways to “relate” to us
所以,这就是我们的答案。这可能令人失望,但如果没有高级智能故意降低自己的幻觉,我们的机器人伙伴可能永远不会处于这样一个位置,即我们可以认为自己在智力上足够相似,可以进行有意义的对话。
结论
今天的技术无疑是未来机器人伴侣的先驱。虽然我们可能不知道意识到底是什么,也不知道机器是否能体验到它,但回答“我们什么时候能与机器进行有意义的对话”这个问题可能无关紧要。
由于人和机器在所有智力因素上的差异,我们不可能有一天能和机器人进行有意义的对话。然而,这并不妨碍我们与他们建立有益的关系。正如我们与其他物体——汽车、房子、其他具有实用价值或情感价值的财产——有联系一样,我们的人工智能朋友有一天也可以成为这个列表的一部分,并为我们个人和社会占据特殊的位置。
所以,总之,你现在最好还是交真正的朋友。
这是两部分故事的第一部分。第 1 部分旨在回答标题问题;第 2 部分将更深入地关注机器思维、情感和意识的哲学。如果你还有兴趣,可以去看看。
感谢阅读!
当聚类没有意义时
原文:https://towardsdatascience.com/when-clustering-doesnt-make-sense-c6ed9a89e9e6?source=collection_archive---------2-----------------------
Source
聚类前的考虑事项
聚类是最广泛使用的无监督学习形式之一。这是一个很好的工具,可以理解未标记的数据,并将数据分组到相似的组中。一个强大的聚类算法可以破译结构和模式,在一个数据集中,不明显的人眼!总的来说,聚类是一个非常有用的工具,可以添加到您的数据科学工具包中。
但是,聚类并不总是适合您的数据集。如果您有兴趣尝试使用聚类进行无监督的机器学习,请遵循以下五个简单的指南,看看聚类是否真的是适合您的数据的解决方案:
1。您的数据是否已经有了潜在的类别标签?
在数据中使用现有的类标签通常比尝试通过聚类为数据创建新标签更好。如果你可以选择,有监督的机器学习在分类任务中几乎总是胜过无监督的学习。
For this Olympic athlete data, the Medal attribute is an obvious choice for a class label.
如果您有数据,但无法将数据组织成有意义的组,那么集群就有意义。但是,如果您的数据集中已经有一个直观的类标签,那么由聚类分析创建的标签的性能可能不如原始的类标签。
2。你的数据是分类的还是连续的?
许多聚类算法(如 DBSCAN 或 K-Means)使用距离度量来计算观察值之间的相似性。因此,某些聚类算法在处理连续属性时会表现得更好。但是,如果有分类数据,可以对属性进行一次性编码,或者使用为分类数据构建的聚类算法,如 K-Modes。应该注意,计算二进制变量之间的距离没有太大意义。
了解不同的聚类算法在不同的数据类型上的表现对于决定聚类对您的数据是否有意义是至关重要的。
Height and weight are continuous attributes while Season is a categorical attribute.
3。你的数据是什么样的?
通过散点图对数据进行简单的可视化,可以深入了解数据是否非常适合聚类。例如,下面是奥运会运动员身高和体重的散点图。很明显,这两个属性有很强的正相关性,除了一些异常值之外,形成了一个密集的中心分组。
Scatter plot for height and weight
在对这些数据运行了几个聚类算法之后,没有形成明显的或有意义的组,并且确定这些属性不太适合聚类!然而,通过在分析的早期简单地可视化数据,这个结论可以更快地得出。
如果可视化显示您的数据没有大量的分离或不同的组,那么聚类可能不合适。
4。你有办法验证你的聚类算法吗?
为了信任聚类分析算法的结果,您必须有一种测量算法性能的方法。可以使用内部或外部验证指标来验证聚类算法的性能。
内部验证的一个例子是剪影得分,这是一种衡量每个观察值聚集程度的方法。轮廓图显示了聚类的相对大小、*均轮廓得分以及观察值是否被错误地聚类。下图中的红线表示六个聚类的*均轮廓分数:大约 0.45(1 表示完美,0.45 不是很好的分数)。
Silhouette plot using K-Means for Olympic athlete data
外部验证的一个例子是,数据集的类标签是已知的,但您想要测试特定的聚类分析算法在预测现有类时的表现如何。对外部验证方法的一个值得注意的警告是,如果数据已经有了类标签,就没有很大的聚类用例!
要对您的机器学习模型有信心,您必须有一个一致的衡量模型性能的指标。集群也不例外。您必须有一种方法来定量评估模型对数据的聚类效果。
在进行聚类分析之前,考虑哪种类型的验证和哪种指标对您的数据最有意义。某些算法可能在某些验证指标下表现得很好,因此您可能需要使用性能指标的组合来消除这个问题。如果您的模型性能一直很差,那么聚类就不适合您的数据。
5。聚类是否提供了对数据的新见解?
假设您满足了上述所有考虑因素:您有没有类标签的连续数据,您将数据可视化并且有一些分离,并且您选择了对您的分析有意义的验证度量。您对数据运行聚类算法,并获得相当高的轮廓分数。激动人心!不幸的是,你的工作还没有完成。
执行聚类分析后,检查单个聚类中的观察结果至关重要。这一步允许您评估集群是否提供了对数据的任何新见解。该算法真的找到了相似的观察组并最大化组内相似性,同时最小化组间相似性吗?
检查聚类的一种简单方法是计算每个聚类中观察值的简单统计量,例如*均值。下面是作为 K-Means 聚类结果的三个聚类的*均奥林匹克运动员身高和体重。
Individual Cluster Means
注意到什么奇怪的事了吗?*均身高和体重几乎相同。这表明,虽然该算法确实对数据进行了聚类,但这些聚类彼此之间并没有实质性的不同!如果聚类无法对您的数据产生任何新的或有用的见解,那么您的数据不太适合聚类。
结论
与任何数据科学任务一样,你不能只向数据扔算法。你必须了解你的数据,了解算法的初衷。即使您的数据不太适合聚类,您仍然可以尝试一下。探索你的数据永远不会有坏处,你永远不知道;你可以学到新的东西!
感谢阅读。用作示例的数据集可以在这里找到。请随时留下任何建设性的反馈或与我联系!
当数据稀缺时…获取有价值见解的方法
原文:https://towardsdatascience.com/when-data-is-scarce-ways-to-extract-valuable-insights-f73eca652009?source=collection_archive---------12-----------------------
Photo credit: Pixabay
现实世界中的数据科学
描述性统计、探索性数据分析和自然语言处理(NLP)技术来理解您的数据。
最*,我偶然发现滑铁卢地区的开放数据项目及其信息自由请求数据集。我的同事斯科特·琼斯已经在一系列帖子中使用机器学习(ML)技术对其进行了分析。ML 表现不佳是因为数据不足。虽然斯科特做了在这种情况下应该做的事情,即找到更多数据,但我很好奇这些数据还能告诉我什么,尽管很少。毕竟数据总有有价值。
在我带你进入这个 8 分钟的阅读之旅之前,我应该让你知道在 github 上的 jupyter 笔记本有所有的代码和更多关于这些数据的见解,所有这些都不能在这里讨论。如果你不想看笔记本,全套的图形结果可以在这个文件中找到。
在这里,我向你展示一些分析的要点。
了解数据
为此,我们使用了 pandas 库,下面是在 Open Data 中找到的一个文件的样子:
Sample of the 1999 Freedom of Information Request File
我们有 26 个文件,每年一个,从 1991 年到 2016 年,总共有 902 个请求,令人惊讶的是,所有的请求都有相同的 6 列。我们将只处理三个主要列,源、S 请求摘要、和决策。
- 来源。这是提出请求的实体,也称为请求者。通过查看多年来的信息,我能够将这些类别合并为“业务”、“个人”、“代理人的个人”、“媒体”、“代理人的业务”和“受抚养人的个人”。
- 请求摘要。包含请求,该请求已经由职员编辑。
- 决定。合并后的类别为:“所有信息披露”、“部分信息披露”、“无记录”、“请求撤销”、“部分不存在”、“无信息披露”、“已转让”、“已放弃”、“拒绝更正”、“批准更正”、“无额外记录”和“提交异议声明”。
这些列是如何关联的?
描述性统计和探索性数据分析
在本节中,我们将重点关注列来源和决策。稍后,我们将使用一些 NLP 工具来分析这些请求。以下是数据的分布情况:
大约 64%的请求是“全部信息公开”或“部分信息公开”。少于 25 个实例的决策有六种类型。一种重要的类型,“没有信息披露”,只占 4%。因此,我们不仅只有有限的数据,我们还有一个不*衡的案例。这对 ML 来说看起来不太好。
从数据的另一个角度来看,源对决策,我们看到大多数请求是由“企业”、“个人”和“个人代理”发出的。
将每个来源的这些数字标准化,即每行加 1,我们看到三个主要来源的情况都很好,因为“所有披露的信息”都超过 30%,而“部分披露的信息”又增加了 20%至 36%,使它们超过 50%。还有,‘代理个人’比‘个人’成功率高。“媒体”的请求很少,表现不佳,只有 12%的请求得到了“所有信息披露”。
自然语言处理
现在我们开始分析实际的'请求概要'。为此,我们求助于自然语言处理库,如 NLTK 和 spaCy,以及 scikit-learn 的帮助。
概括地说,在分析任何文本之前,有几个步骤需要做(见 Susan Li 的帖子):
- 将文本标记化:将文本分成单个特殊实体/单词,即标记。
- 删除任何不需要的字符,如回车符' \n '和标点符号,如'-'、'…'、' " '。
- 删除 URL 或用一个单词替换它们,例如“URL”。
- 移除屏幕名称或用一个单词替换“@”,例如“屏幕名称”。
- 删除单词的大写。
- 删除包含 n 或更少字符的单词。这种情况下, n = 3 。
- 去除停用词,即语言中意义不大的词。这些词可能对我们的文本分类没有帮助。例如“a”、“the”、“and”等单词。没有一个通用的停用词列表。
- 词元化,这是将一个单词的词尾变化形式组合在一起的过程,这样它们就可以作为一个单独的项目进行分析,通过单词的词元或词典形式来识别。
因此,在编写了单一用途的函数之后,我们可以用
def prepare_text_tlc(the_text):
text = clean_text(the_text)
text = parse_text(text)
tokens = tokenize(text)
tokens = replace_urls(tokens)
tokens = replace_screen_names(tokens)
tokens = lemmatize_tokens(tokens)
tokens = remove_short_strings(tokens, 3)
tokens = remove_stop_words(tokens)
tokens = remove_symbols(tokens)
return tokens
由于我们将不断地处理这些文本,我们只是将这些预处理过的文本作为一个新列“Edited_Summary”添加到数据帧中。
N-grams 和 WordCloud
我们还能如何分析和可视化我们的文本?作为第一步,我们可以找到哪些单词和短语是最常用的,即,我们可以获得单个单词(单个单词)和一般的 n 个单词(n 个单词的组合)及其在文本中的频率。
def display_top_grams(gram, gram_length, num_grams):
gram_counter = Counter(gram)
if gram_length is 1:
name = 'unigrams'
elif gram_length is 2:
name = 'bigrams'
elif gram_length is 3:
name = 'trigrams'
else:
name = str(gram_length) + '-grams'
print("No. of unique {0}: {1}".format(name, len(gram_counter)))for grams in gram_counter.most_common(num_grams):
print(grams)
return None
所以对于我们的单字来说,
并使用 WordCloud :
那么为什么‘移除’这个词如此突出呢?事实证明,出于隐私原因,原始请求上写的所有姓名、日期和位置都已被删除,并在开放数据文件中替换为诸如“位置已删除。}”或“{删除日期}”。这个有 30 多种变化。使用正则表达式(regEx)来清理文本,我们得到了一个更好的词云。这一次,我们也将允许二元模型。
看着上面的单词云和三元模型,
我们看到有一些常见的短语,如“安大略省工厂”、“环境现场”、“格兰德河运输”、“狂犬病控制”、“公共卫生”、“家庭儿童(护理)”和“食物中毒”(如在“食源性疾病”——记得我们对我们的令牌进行了词条化)。那么,这些短语在我们的文本中有多常见呢?用这样的短语请求信息会决定请求被批准的机会吗?事实证明,我们的数据中有 34%是这种类型的请求,只有很少一部分是“无信息披露”的决定,而且有明显的趋势:
例如,“狂犬病控制”有 95%的病例全部或部分公开,而有 5%的病例被转移。
请求摘要和已编辑摘要统计
我们已经知道我们的数据量是有限的,但是有限有多少呢?嗯,全文超过 100 字的请求只有 7 个,标记化文本只有 1 个。尽管中值是 14,但全文*均每个请求 18 个单词,而标记化文本*均 8 个单词,中值是 6。
词性标注
这里我们使用空间来标识我们的文本是如何由名词、动词、形容词等组成的。我们还使用函数 spacy.explain( ) 来找出这些标签的含义。
full_text_nlp = nlp(full_text) # spaCy nlp()tags = [] for token in full_text_nlp:
tags.append(token.tag_)tags_df = pd.DataFrame(data=tags, columns=['Tags'])print("Number of unique tag values:\
{0}".format(tags_df['Tags'].nunique()))
print("Total number of words: {0}".format(len(tags_df['Tags'])))# Make a dataframe out of unique values
tags_value_counts = tags_df['Tags'].value_counts(dropna=True,
sort=True)
tags_value_counts_df = tags_value_counts.rename_axis(
'Unique_Values').reset_index(name='Counts')# And normalizing the count values
tags_value_counts_df['Normalized_Count'] = tags_value_counts_df['Counts'] / len(tags_df['Tags'])uv_decoded = []for val in tags_value_counts_df['Unique_Values']:
uv_decoded.append(spacy.explain(val))tags_value_counts_df['Decoded'] = uv_decoded
tags_value_counts_df.head(10)
合并类别,如“名词,单数或复数”和“名词,复数”,以形成一个通用版本,下面是我们的请求是如何组成的:
使用 scikit-learn、散景和 t-SNE 的主题建模
在笔记本中,我们使用不同的技术进行主题建模,包括 scikit-learn 的潜在狄利克雷分配(LDA)函数,潜在语义分析(LSA),比较 CountVectorizer( ) 和 TfidfVectorizer( ) ,gensim 与 LDA,使用 t-分布式随机邻居嵌入(t-SNE)进行降维,以及 Bokeh 和 pyLDAvis 进行可视化。我们不会添加这里使用的完整代码,我们鼓励您看一看笔记本。鉴于我们的数据有限,所有工具都做得不错。这里有一个亮点,
几乎所有最常用的短语都出现在主题中。正如所料,一些主题是明确的,如“安大略作品”或“环境网站”,而其他集群没有这样定义。
机器学习
我们已经知道 ML 不会很好地工作,但是,考虑到这是一个学习练习,我们还是继续下去。在笔记本中,我们针对三种不同的情况比较了八种不同的 ML 模型。我们无法直接比较全部数据,因为有些案例的实例很少。例如,只有一个请求得到了“批准更正”,所以当我们训练我们的模型时,该案例将只存在于训练集或测试集中。只有一个案例并不能提供一个好的基础。我们几乎没有选择,
- 我们可以丢弃少于 15 个实例的请求,称之为“超过 15”。
- 我们将我们的全套决策分为三个基本类别:
*所有披露的信息(加上“批准的更正”)。)
部分披露的信息(加上‘部分不存在’。)
未披露任何信息(加上“已转移”、“无记录”、“拒绝更正”、“无额外记录”、“提交异议声明”、“撤回”和“放弃”)。)这反过来会使我们的设置*衡。 - 我们可以放弃少于 15 个实例的请求,并放弃没有做出实际决定的决定,即撤销或放弃的案例,称之为“独立的”。
这是结果,
总的来说,逻辑回归和多项式朴素贝叶斯分类器,结合 tf-idf 给出了更好的结果。而宁滨我们的班级似乎是最合乎逻辑的方法。
代码和全套结果可以在这里找到。
当伦理是不够的:临床试验下和误报和不信任的癌症
原文:https://towardsdatascience.com/when-ethics-arent-enough-clinical-trials-under-and-misreporting-and-the-cancer-of-distrust-7c392bf753c0?source=collection_archive---------25-----------------------
Ben Goldacre 是牛津学院的校友,拥有医学学位和哲学高级学位,是一名认证医师和精神病学家。他还是英国一家顶级医疗机构的流行病学研究员。尽管有这些学术和专业的荣誉,他今天最出名的是一个报纸专栏和一本书,名字像邦·乔维的一首歌,“坏制药”【1】(gold acre,2013)。
Goldacre 认为,用药品治疗患者的那部分药物是一种假象,因为制造商*均隐藏了 50%的试验数据,医生没有时间或途径获得完整和真实的数据,监管机构也不关心。说监管者不关心可能是一种二分法思维错误。至少在英国,他们足够关心开始跟踪制造商发布的部分试验数据,但不足以迫使他们发布更多的数据(Goldacre,2013)。
此外,Goldacre 和他的同事后来写道,即使制药商确实公布了他们的试验数据,也往往是以一种几乎不可能有意义地解释和实施到患者护理中的方式进行的。这通常是因为使用了复合数据、主观终点和替代物(Heneghan,2017)。
至少在英国,监管者正在采取行动改善公众对公共卫生的信任和质量。今年 1 月,在 Goldacre 的第一本书出版 7 年后,下议院的科学技术委员会向 41 所英国大学发出了监控信,要求他们在 6 个月内改善临床试验数据的报告,或者预计被传唤到委员会解释为什么还没有更好(Dunn,2019)。
当如此多的金钱在药品销售中发挥作用时,民主国家受到企业游说者及其选民的影响一样多,人们很容易得出结论,利润只是被优先于知识诚信;然而,动机很少是单一的。在临床试验报告不完整的情况下,一些数据表明,非营利大学比制药商更糟糕。
2018 年,在一项回顾性队列研究中,由 Goldacre 领导的牛津大学团队发现,90%的英国大学未能按要求向欧盟临床试验注册机构报告完成后 12 个月内的临床试验数据。事实上,商业试验赞助商报告的结果比非商业试验赞助商多 6 倍(68%比 11%),较大的试验赞助商比较小的试验赞助商更有可能及时报告结果(78%比 18%) (Goldacre,2018)。
Goldacre 和他的同事认为,至少有一些失败是不明确的政策和沟通的结果。虽然法律要求申办者报告调查结果,但这是委托给首席研究员或行政人员,他们可能不知道(Goldacre,2018)。
作为一个案例研究,有人可能会说,这表明公共卫生或生物伦理的三个主要理论是不够的,即使全部应用。功利主义出现在审判中,表面上是为了确定什么是更大的利益。原则主义是存在的,因为审判是按照一套规则和标准进行的。此外,结果主义存在于那些让制造商和赞助商为未能遵循功利主义原则负责的法规中。
就社会后果而言,这一案例也可以作为不再相信政府的仁慈和效力的幻灭公众的素材,至少在美国有一半的公众是如此。即使不是大多数,也有多数美国人认为公司只为他们自己谋利,不信任科学和专家,政府无力纠正这种情况。
作为数字和公共卫生数据的消费者,我们可能会创造性地寻找方法,稳步向决策者和患者传达这一问题。与此同时,我们必须对试验数据持怀疑态度,除非我们对数据的完整性和证实结果的时间有信心。
参考
邓恩,W. (2019 年 1 月 24 日)。国会议员对缺失的临床试验结果采取行动。检索自《新政治家》:https://www . newstatesman . com/spot light/health care/2019/01/MPs-take-action-missing-clinical-trial-results
b . gold acre(2013 年)。不良制药公司:制药公司如何误导医生和伤害病人。伦敦:费伯。
Goldacre,b .,DeVito,n .,Heneghan,c .,Iriving,f .,Bacon,S. Fleminger,J .,& Curtis,H. (2018)。符合欧盟临床试验注册报告结果的要求:队列研究和网络资源。BMJ 362:3218。
Heneghan,c .,Goldacre,b .,Mahtani,K. (2017 年)。为什么临床试验结果不能转化为患者的利益。审判,18: 122。
托威博士(2014 年 1 月 3 日)。为什么公共账目委员会关于达菲的报告对我们所有人都很重要。赫芬顿邮报。
当 Excel 不够用时:使用 Python 清理数据、自动化 Excel 等等…
原文:https://towardsdatascience.com/when-excel-isnt-enough-using-python-to-clean-your-data-automate-excel-and-much-more-a154c6bf9b49?source=collection_archive---------0-----------------------
@headwayio
数据分析师如何在电子表格驱动的组织中生存
Excel 是许多公司非常流行的工具,数据分析师和数据科学家经常发现自己将它作为日常数据分析和可视化工具的一部分,但并不总是出于自愿。这当然是我第一份数据分析师工作的经历,在那份工作中,Excel 是每个人工作流程的一部分。
我的团队使用 Excel 的数据工具 Power Query 来聚合和操作 CSV 文件,并连接到我们的数据库。最终,这些数据将显示为数据透视表或仪表板,并与公司的其他部门共享。我拿到的几乎所有报告都是在 Excel 上运行的,我很快就意识到这是一个大问题。
为了向您描述一下,下面是我多次听到我的同事谈论 Excel 的一些事情,我自己最终也开始这么说:
“又死机了!!"
刷新 Excel 报告中的数据是一项日常任务,有时,这是我们唯一可以立即执行的任务。即使我们的电脑有像样的硬件,我们一打开其他程序就知道了(有人说 Chrome 吗?)虽然 Excel 正在刷新,但几乎可以肯定它会崩溃。
“还在提神……”
不仅我们在刷新 excel 时无法使用其他应用程序,而且我们的一些报告需要 30 分钟甚至几个小时才能完成刷新。是的,Excel 喜欢拿我们的电脑当人质!
“我们无法加载那么多数据。”
我们对 Excel 最大的不满是无法加载我们需要的那么多数据。公司里的每个人都要求更多,我们根本无法满足。
很明显需要做些什么。我们在这些问题上浪费了太多时间,几乎没有时间进行任何实际的分析或预测。幸运的是,我非常熟练地使用 Python 和它的工具来操作 CSV 文件,所以我和我的团队开始了优化我们报告的长期任务。
由于我们需要继续在 Excel 中报告,并且没有预算购买 BI 工具,我们决定使用 Python 来完成所有繁重的工作,并让 Excel 负责显示数据。因此,在 Python 和 Windows 任务调度程序的帮助下,我们自动化了收集数据、清理数据、保存结果和刷新 Excel 报告的整个过程。
由于每个人的工作流程是不同的,我想使这篇文章尽可能有用,我将保持高水*,并包括一些伟大的教程的链接,以防你想更深入地挖掘。请记住,其中一些提示可能只在 Windows 机器上有效,这是我当时使用的。
[## 通过我的推荐链接加入 Medium-Andres Vourakis
阅读安德烈斯·沃拉基斯(以及媒体上成千上万的其他作家)的每一个故事。您的会员费直接支持…
medium.com](https://medium.com/@avourakis/membership)
1.从 FTP 服务器下载数据
使用 Python 中的ftplib
模块,您可以连接到 FTP 服务器并将文件下载到您的计算机中。这是我几乎每天都使用的模块,因为我们从外部来源接收 CSV 报告。以下是一些示例代码:
要了解更多关于 FTP 服务器和如何使用ftplib
的信息,请查看本教程。
2.运行 SQL 查询
使用 Python 中的pyodbc
模块,可以轻松访问 ODBC 数据库。在我的例子中,我用它连接到 Netsuite 并使用 SQL 查询提取数据。以下是一些示例代码:
请注意,为了让模块正常工作,您需要安装适当的 ODBC 驱动程序。更多信息请查看本教程。
3.清理数据
使用 Python 中的pandas
模块,您可以非常容易和高效地操作和分析数据。毫无疑问,这是我拥有的最有价值的工具之一。以下是一些示例代码:
这个教程是开始学习pandas
的好地方。如果您正在处理大型文件,那么您可能也想看看这篇关于使用 pandas 处理大型数据集的文章。它帮助我减少了很多内存使用。
4.刷新 Excel
使用 Python 中的win32com
模块,您可以打开 Excel,加载工作簿,刷新所有数据连接,然后保存结果。这是如何做到的:
我还没有偶然发现任何关于win32com
模块的好教程,但是这个堆栈溢出线程可能是一个很好的起点。
5.在规定的时间运行脚本
在 Windows 任务计划程序的帮助下,您可以在规定的时间运行 python 脚本并自动完成工作。你可以这样做:
启动任务调度器,找到位于动作窗格下的创建基本任务动作。
点击创建基本任务打开一个向导,您可以在其中定义任务的名称、触发器(当它运行时)和动作(运行什么程序)。下面的屏幕截图显示了操作选项卡,在这里您可以指定要运行的 Python 脚本的名称以及脚本的任何参数。
关于创建任务的更多细节,请查看本教程。
通过将 Python 引入等式,我和我的团队能够显著减少我们处理数据所花费的时间。此外,将历史数据纳入我们的分析不再是一项无法完成的任务。这些改进不仅解放了我们,让我们可以更多地进行分析性思考,还可以花更多的时间与其他团队合作。
我希望这篇文章对你有用。如果你有任何问题或想法,我很乐意在评论中阅读:)
另外,如果你希望支持我成为一名作家,可以考虑注册成为一名媒体会员🙏
当“成长的烦恼”遭遇“成长的痛苦”
原文:https://towardsdatascience.com/when-growth-hacks-meets-growing-pain-6baa4e3d8776?source=collection_archive---------15-----------------------
我对 Siraj Raval 最*备受争议的“ML 课程”的看法
发生了什么
在一个影响者经济的时代,像 Siraj Raval 这样的知名 Youtubers 用户被认为在传播信息和启发新人进入有些令人生畏的人工智能世界方面非常成功。截至目前,他的 YouTube 频道已经有了 692,000,000 的订阅者,这很了不起。他的内容非常广泛。他的“在 5 分钟内做 X”教程视频非常受欢迎,这有一个迷因:
但是最*,他遇到了一些问题。他的新课程“用机器学习赚钱”收费 200 美元。收取 200 美元的课程费用完全没问题,有争议的部分是人们抱怨他使用了其他人的 GitHub repo 的一些代码,而且他接受的学生比他承诺的多得多,可以在不降低体验的情况下妥善处理。当一些人寻求退款时,他们也遇到了一些麻烦。
“成长的烦恼”与“成长的痛苦”
有些人指控他欺诈,对此我没有把握。在我看来,这更像是一个诚实的错误,因为缺乏扩大规模和进入他不熟悉的领域的经验。
看,他的大多数更受欢迎的视频都是带有一点‘娱乐’的入门级教程(说唱、滑稽模仿等)。)的元素。他在这方面非常自然,这使得人工智能或机器学习不那么无聊或可怕。而我相信这也是人们最喜欢他的内容的原因。然而,当涉及到更严肃的教育时,特别是当你想收取 200 美元的费用时,人们期望某些标准,而他可能并不完全清楚这些标准是什么。例如,你需要拥有你的内容,如果你想使用其他人的内容,比如代码片段或图表,给予信任,而且是非常恰当的信任。
我记得 fast.ai 的杰瑞米·霍华德在教“程序员机器学习入门课程的时候。他用了一个“过度适应和欠适应”的图表,并把它归功于 Quora。
Photo Credit: Andrew Ng’s Machine Learning course on Coursera.
但事实证明,上面的图片最初来自吴恩达的斯坦福机器学习课程。所以杰瑞米·霍华德实际上在他的下一次演讲中特别纠正了这个错误,并特意表扬了吴恩达的教学风格。我认为这是各自的处理方式。我不认为 Siraj Raval 是故意不给学分的,他可能不太习惯学术界给推荐信的惯例,等等。如果你在 YouTube 上做免费视频并使用他们的代码,人们不会抱怨,但如果你试图对正式教育节目的内容收费,那就完全是另一回事了。
关于比他承诺的接收更多学生的指责,我认为这主要是一个规模上的挑战。当成功来得太快而你又没有准备好的时候,你肯定会跌倒。可以理解。然而,之后你如何处理将会有很大的不同。你可以得到更多的帮助,或者适当地为你没有达到的服务水*退款,只是不要逃避或者试图用更多的错误来解决一个错误。这样至少可以挽回名声,获得第二次改过的机会。
最后的想法
形势仍在发展,我们将看看他如何处理这件事。我想说我们假定他是无辜的。这个家伙为 AI 社区做了很多,帮助人们开始使用 AI/ML,毕竟让很多人笑了。我的建议?
直接面对问题,承认他犯了一个错误,并适当地补偿人们,然后在 YouTube 上制作一个视频,介绍他是如何处理缩放和进行损害控制的!化危机为机遇。从技术负责人的剧本中吸取一页。一有机会就要赚钱,对吧?
How ‘The Tech Lead’ handles his crisis? Make a YouTube video and monetize from it!
当身份成为一种算法
原文:https://towardsdatascience.com/when-identity-becomes-an-algorithm-5d076162fab7?source=collection_archive---------11-----------------------
关于人工智能、强化学习和扩展表型的思考
Venetian Mask https://pixabay.com/photos/venetian-mask-carnival-feathers-1283163/: Pixabay License
关于人类和人工智能相互作用的讨论往往会以对立的语言提出这个问题。然而,根据进化生物学家理查德·道金斯的想法,人工智能等工具可以更好地被视为我们扩展表型的一部分。表型是指生物体的可观察特征,扩展表型的概念是,这不应局限于生物过程,而是包括基因对其环境的所有影响,包括内部和外部影响。
我们习惯于严格按照我们在物质世界中占据的空间来定义自己。这是误导。占据我们身体的非人类细胞的数量超过了人类细胞的数量,大量的细菌聚集在我们的消化道内部。作者罗伯特·斯沃博达将人类比作统治非人类人口的少数派政府。但是正如我们的内部世界很大程度上是非人类的,我们的外部世界比我们想象的更像人类。我们的大部分智力已经“离岸”,以电脑、手机和其他设备的形式存在。这些工具对我们来说就像一双新的眼睛和耳朵,帮助我们收集关于我们环境的信息。由于我们的扩展表型,今天的人类已经是一种与我们几百年前的祖先非常不同的生物。这些工具存在于我们体外的程度是相当随意的——是因为存在于我们体内的起搏器更“人性化”,还是因为存在于我们体外的笔记本电脑更不人性化?从进化生物学的角度来看,它们都是我们扩展表型的一部分。
如果有一天我们成功地将手机植入我们的大脑,或者用嵌入式技术增强我们的思维,我们可能会认为自己已经部分变成了机器。然而,这主要是由于习惯于认为一个人只是包含在其中的东西。根据扩展显型的原理,任何经常使用智能手机的人都已经在成为部分机器的路上,或者说,机器已经成为他们的一部分。即使是现在,使用智能手机也可能对你的灰质产生影响,削弱某些认知能力。研究发现,那些经常在手机上使用 GPS 导航的人的海马活动减少,该区域的灰质减少。海马体负责记忆和导航过程,通过使用智能手机完成这些任务,一个人逐渐失去了之前执行这项任务的“生物肌肉”。如果进化不是节俭的,那它就什么都不是。如果我们用不同于大脑的工具来完成同样的功能,那么灰质将会被重新利用或者可能根本就不存在。大脑本身是由基因创造的生存工具这一观点对于思考人工智能和计算机是有用的类比,人工智能和计算机本身是大脑为自己的目的创造的工具。因此,一个有机体的全貌必须包括由基因导致的所有适应,包括大脑、计算机、购物清单等等。
虽然有些人可能担心这种向越来越无机的表现型的过渡,因为无机工具开始取代有机工具,但意识到这两者都是我们扩展表现型的一部分可能会成为一种安慰。如果手机能够比人脑更好地记忆数字,那么它很可能会被用于这一目的,并慢慢取代我们以前使用的生物工具。根据这种观点,很长一段时间以来,我们已经在一点一点地把自己变成机器,在我们外部找到更好的工具来做以前在我们内部做的事情。这些工具相对于我们自身生物学的位置是任意的。随着我们越来越擅长通过外科手术向我们的有机体添加非生物部分,如机械关节、器官甚至记忆模块,这种向非生物表型的转变将变得更广泛和更深入。事实上,这种通过外科器械来增强我们生物学的过程已经有了一个名字,叫做超人类主义,并声称在世界范围内有越来越多的追随者。
正如我们已经开始用智能手机取代我们的内部导航能力,越来越多的记忆存储在笔记应用程序或数字助理中,随着深度强化学习等尖端人工智能技术的出现,这一过程可能会增加。具体来说,如果计算机能够比我们的大脑更好地学习战略决策,那么我们很可能会为了算法提供的能力而放弃大脑的能力。只要算法仍然是我们的代理,那么让它学习像国际象棋这样的游戏就有意义,如果它比训练你大脑中的神经元更容易、更快。
在过去,以前的人工智能类型在这方面是有限的——就像名为 DeepBlue 的下棋机器。它们是服务于特定任务的费力的手工制作的解决方案。深度强化学习算法更加通用。DeepMind 用单一强化学习算法掌握几种类型的雅达利视频游戏的能力证明了这一点。因此,深度强化学习算法可能会标志着我们扩展表型扩展的下一波浪潮。
无限专业技能游戏
有人可能会想,既然与顶级人工智能算法相比,我们的大脑几乎都一样糟糕,那么像国际象棋和围棋这样的游戏是否会对人类不再感兴趣。情况不太可能是这样。许多此类游戏的一个有趣的方面是,一个人可以变得多么熟练没有上限。掌握程度往往取决于算法在任务上训练了多长时间,以及它的“心理理论”有多好。戴密斯·哈萨比斯指出,他们从未发现围棋算法 AlphaZero 的熟练程度的上限。经过 8 天的训练,他们关闭了系统。给定相同的算法,训练时间最长的人可能在围棋比赛中占据优势,就像训练大脑时间最长的人在生物动力游戏中占据优势一样。在其他游戏中,比如扑克的变种德州扑克,玩家的技巧主要取决于他们理解对方策略的能力,随着对手技巧的提高,游戏的潜在复杂性也随之提高。在这种情况下,对其他玩家有一个好的“心理理论”可以提高一个人的技能。许多人可能会感到惊讶,但具有思维理论的算法已经问世。例如,OpenAI 开发了这样一个人工智能系统,我在“机器人有意识了吗”中写过总之,当我们将我们的战略能力输出给机器时,我们可能会遇到许多相同的竞争场景,这些场景使得生物动力游戏变得有趣。
今天,很大一部分引起人类兴趣的活动都表现出这种无限专业知识的品质。例如,似乎早就应该有一个允许非生物增强的奥运会,因为目前我们的生物表型结束和非生物表型开始的界限越来越模糊。应该禁止带心脏起搏器的人参加奥运会吗?那些接受了膝盖重建手术并用人造肌腱替换了自然组织的人呢?
虽然折叠 t 恤等特定技能可能有上限,但一个人能成为多好的扑克玩家似乎没有上限。任何活动,只要其复杂性与对手的技能或智力成比例,就会表现出这种无限专业知识的品质。拥有有限专业知识的自动化活动不会有什么损失。一旦一个人在诸如折叠 t 恤这样的活动上达到了很高的技巧,我们往往会发现进一步的时间和精力投资是徒劳的。另一方面,那些具有无限专业知识的活动可能对人类仍然很重要,即使我们用机械的对应物代替了我们智力和身体的生物部分。
那些会哀叹这一过程,并认为它有一些不自然的东西,将受益于意识到我们不是唯一具有扩展表型的动物;我们已经延长了很长时间。可以说,自从第一个人类捡起一块燧石并把它做成枪头,或者用火使食物更易于消化,我们就一直在扩大我们的扩展表型。然而,我们感觉到,随着人工智能,特别是深度强化学习,一些门槛已经被跨越。到目前为止,人类的高辛烷值猿脑已经拥有超过地球上所有其他学习代理的战略优势。现在情况不再是这样了。在越来越多的活动中,计算机将占有战略优势。因为在很大程度上,我们把自己的动机和大脑的动机联系在一起,所以我们有理由紧张。虽然我们大脑的动机很大程度上受基因的影响,但它们并不完全相同。大脑可以决定它不想生育,这个决定绝对不符合我们基因的目标。因此,从我们的基因进化出巨大的大脑来照顾我们的利益的那一刻起,就存在委托代理困境的威胁,或者用外行人的话说,利益冲突。
身份——我代表谁的利益?
既然我们以深度强化学习的形式给我们的表现型增加了一层,如果这个工具应该开发与我们自己大脑的目标相反的目标,情况可能会变得非常奇怪。身份的问题总是最棘手的——我们是代表我们的大脑、我们的基因的利益,还是以我们使用的其他工具的形式代表我们的扩展表现型的利益?那些有宗教信仰的人可能会把灵魂的兴趣加入到这个列表中。这些不同实体之间的对话可能会造成相当大的分歧。他们之间的控制点越来越灵活。
考虑到我们扩展表现型的部分已经在发展他们自己的兴趣。包含广告的工具处于一种新型扩展表现型的最前沿,这种表现型在工具及其用户之间引入了潜在的利益冲突。当一个工具直接服从大脑的控制时,就不存在利益冲突的问题。例如,一把锤子没有自己的利益,完全屈从于使用它的人。智能手机上运行的脸书应用完全是另一回事。您对使用脸书应用程序的兴趣可能会偏离应用程序的动机。脸书的商业模式是通过广告运作的,所以这款应用的动机是让你点击它向你展示的一个广告。正如作家安德鲁·刘易斯讽刺的那样,“如果你不为产品付费,你就是产品”。虽然目前这看起来只是一件令人讨厌的事,但它隐藏了一个更黑暗的潜台词。随着这些广告*台背后的工程师越来越善于操纵你点击你本来不会做的事情,当你打算在朋友生日时给他们写一封体贴的短信时,你会发现自己偏离主题并转向购物或研究产品的机会正在增加。这是对过去工具的一个非常重要的背离。
以前,工具倾向于与用户的兴趣保持直接一致。随着嵌入式广告的出现,软件变得像特洛伊木马一样,隐藏着自己的议程。一个工具为谁的利益服务的问题将越来越容易被人提出。这是一个有趣的故事,有着重要的影响。时光倒流到 20 世纪 80 年代初的硅谷,年轻的程序员们乘着个人电脑热潮的顶峰而忙碌着。许多这些年轻的远见者属于自由软件运动。然而,与公众意见相反,程序员需要吃饭,这些年轻的理想主义者发现自己正处于十字路口——要么给他们的软件定价,要么破产。然后一个解决方案出现了,通过互联网。软件可以保持免费,但会包含广告。这为脸书和谷歌等公司的盈利模式让路。从表面上看,这对每个人来说都是一笔大买卖,程序员在分发他们没有价格标签的产品时变得富有。但正如他们在德克萨斯州所说的“没有免费的烤肉”,许多软件用户并不知道,这种商业模式中隐藏着一个陷阱。
广告,加上互动软件,可能会导致上瘾和行为改变。这几乎是由利润最大化原则保证的数学确定性。当一个软件通过广告赚钱时,它现在服务于两个主人——一个是用户,另一个是为广告空间付费的人。这些党派的利益肯定会有分歧。如果一家公司通过用户点击广告的频率而不是产品的有效性来赚钱,那么产品的真正目的就变成了让用户点击广告,而不是用它来完成一些有用的事情。
就像古代神和女神的利益一样,像脸书这样的公司的利益完全是虚构的,只存在于人类的集体想象中。但是,虽然这些公司可能只是作为虚构的实体存在,但它们的利益一旦嵌入硅芯片,就非常真实,可能会与使用软件的人的利益发生冲突。当我们开始盘点我们的扩展表型时,这是需要注意的重要一点。考虑到已经很难识别一个人大脑的兴趣和一个人基因的兴趣。虽然他们关系密切,但他们并不相同。既然我们的工具也开始有了自己的兴趣,这种困惑就更加复杂了。
随着人们更加强烈地认同他们的非生物扩展表型,即社交媒体人物角色和运行他们的算法,他们的兴趣将在很大程度上受到这种扩展表型的兴趣和要求的调节。事实上,保持一个人的脸书身份的需要可能会压倒基因的利益。我们已经有这样的例子,视频游戏玩家忘记了养活自己或家人,因为他们强烈认同游戏中角色的目标。
要考虑的一个最重要的问题是,我们将把我们身份的控制点放在哪里。基因工具箱会以 CRISPR 等遗传技术的形式卷土重来,将我们与我们的生物容器重新结合起来,还是我们会继续向非生物扩展表型的长征,将越来越多的决策外包给计算机,同时逐渐用无机算法取代我们的生物化学算法。在这种情况下,深度强化学习似乎是无机扩展表型的巨大飞跃,因为它将使这种无机扩展表型能够解决以前只有我们的大脑才能解决的问题。
更重要的是,如果人类生活确实是一场决策的戏剧,正如我们的艺术、宗教、甚至法律体系所认为的那样,那么可以得出结论,拥有强化学习能力的机器实际上是道德代理人。要么我们认为道德代理人的东西必须改变,要么我们必须扩展我们对这种机器的思考和处理,以包含道德代理人。理清这一逻辑链中的法律责任和保护可能是一项艰巨而又不可避免的任务。目前,这些仅仅是与学术界无关的边缘问题,但它们几乎肯定会成为具有持久重要性的问题。此外,在这些问题上取得有意义的进展的时间可能比之前认为的要短得多。
想想越来越普遍的现象,脸书页面或电子邮件帐户在其所有者去世后仍然存在。如果这些数字角色被赋予强化学习算法,允许他们继续响应和适应他们通过帖子、消息等接收的刺激。也许是按照他们最初的使用者设定的风格和目标,然后以一种非常真实的方式,一个人的无机扩展表型可以在一个人的生物死亡后长期存在。这样的无机表型应该得到法律保护吗?如果我们移除一个人的大脑,并让它在电脑中存活,这样它就可以继续写信息和交流,我们可能会认为这个人在某种意义上仍然活着,并为他们提供一些法律保护。这种比较并非完全不合理,这种奇怪的身份问题可能会比我们意识到的更快地强加给我们。虽然我们目前的表型可以被描述为帮助物种生存和复制的生化算法的组合,但我们未来的表型很可能类似于无机算法的组合,其目的和设计将远比进化适合度的严格条款所规定的更加可变。
虽然我们目前给予我们的扩展表型有限程度的自主权,即我们可能允许谷歌自动回复电子邮件或为我们安排约会,但这种自主权正在增长。将我们太多的决策外包给不完全归我们所有的学院,肯定会有危险。如果谷歌或脸书拥有我们扩展表型的大部分,那么我们必须将拥有我们扩展表型的公司的利益和需求加入到我们的决策中。
仔细清点一个人的扩展表型,以及受其影响或控制的各种利益集团,也许是我们今天教育中探索最少的领域。当我们走进朋友家询问 wifi 密码时,我们在为谁的利益服务——我们的基因、我们的大脑,还是以脸书应用程序形式出现的我们的扩展表型?由于没有意识到在我们的扩展表现型中,所有不同的实体都是共存的,我们很容易被议程最大的那个实体所束缚。当然,大脑和身体必须在要求 WIFI 密码的命令上签字,因为它们代表着决策过程中的瓶颈。然而,当我们发现自己在上网后转向点击广告时,真正的幕后黑手可能是脸书应用程序。
就像在巴西雨林中发现的一种真菌,它通过入侵蚂蚁的身体并将其变成僵尸来传播,在死亡之前将真菌转移到一个新的位置,因此我们可能会发现自己被操纵软件所欺骗,并被重新编程以执行其命令。这当然不是我们希望的未来,但它可能是某些盈利模式的意外后果。展望未来,对我们的扩展表型做出真诚的解释将变得越来越重要,这样我们就可以避免受到旨在引导我们走向我们不会选择的目标的算法的束缚。
买彩票的最佳时机是什么时候?
原文:https://towardsdatascience.com/when-is-the-best-time-to-buy-lottery-tickets-7735191b3c76?source=collection_archive---------1-----------------------
根据理性(或统计)分析
Photo by Alain Pham on Unsplash
彩票的预期回报会是正的吗?
当头奖金额较大时,更多的人倾向于购买彩票。这有道理吗?
本文旨在通过统计分析来回答这些问题。
介绍
我们在这里研究的彩票是加拿大最受欢迎的彩票游戏之一——乐透 6/49。像许多其他彩票游戏一样,当抽奖中没有中奖彩票时,6/49 乐透也可以滚动累积奖金。在过去的一年里,出现了几次超过 2000 万美元的大奖。
Jackpot size for Lotto 6/49 over the past year
加拿大彩票史上最大的单笔头奖也来自乐透 6/49。2015 年 10 月 17 日开奖,累积奖金 6400 万美元。头奖是由在安大略购买的一张彩票赢得的。这还不到美国历史上最大的头奖——【强力球7.684 亿美元头奖的 10%。但它对应的是加拿大人口与美国人口的比例。
根据号码匹配,主抽奖有 7 种不同的奖品。还有一个 100 万美元的保证抽奖活动,其中一张彩票将获得奖金。赢得任何奖项(最有可能是另一次免费游戏)的几率是 6.6 分之一。
但是,买彩票没有人是针对小奖的。主要的头奖是我们主要感兴趣的。
赢得乐透 6/49 主头奖的几率是 1/13,983,816!这意味着,我们有更大的机会:
- 被雷劈——114195 年中的 1。
- 成为电影明星—119 万里挑一。
- 被鲨鱼袭击——3,748,067 人中的 1 人。
分析前要考虑的事项
- 税收和货币的时间价值
幸运的是,加拿大的彩票中奖者不必为奖金缴税——只需为其产生的收入缴税。获胜者似乎可以选择在申请后一次性获得报酬。因此,没有必要考虑中奖金额的时间价值和税收,这可能会减少实际奖金。
与强力球不同,乐透 6/49 头奖金额就是赢家获得的金额!
- 数据
由于数据限制,只有一年的乐透 6/49 历史可供分析。其他数据是从新闻报道中读到的。
- 使用的型号
最后,我们还假设头奖赢家的数量遵循泊松分布。泊松分布是一种概率分布,通常用于模拟在特定时间间隔(如时间)内观察到的罕见事件的数量。
这不是一个完美的模型,但它很简单,可以作为一个很好的代理。关于申请的细节可以在这里找到。
数学
什么时候是买彩票的最佳时机?
为了回答这个问题,我们用预期收益作为标准的衡量标准。
** * * *** * * 如果对计算不感兴趣,可以跳过这一部分*** ***
我们提到一张彩票赢得头奖的几率是 13,983,816 分之一。每张票都被认为是相互独立的,所以我们假设这是不变的。
主奖头奖 的预期收益计算为:
(假设您赢了,预期的赢款金额) (1/13983816)。*
假设你赢了,预期的赢款金额是从我们假设的泊松分布中得出的。
除了主头奖 之外,主抽奖 的预期奖金回报简单计算如下:
(中奖金额)*(该特定奖品的中奖几率)。
保底 100 万美元大奖 的预期回报计算为:
100 万(1/售出门票总数)。*
每张票的购买价格是 3 美元。因此,总预期收益= sum(不同奖项的预期收益)-3 美元。
下面是一个图表,显示了过去一年的预期总回报和累积奖金的大小。
Plot of jackpot size (x-axis) and expected total return (y-axis)
这种关系看起来是线性的。3300 万美元的累积奖金(过去一年中最大的累积奖金)的预期回报高达-0.14 美元。
头奖越高,预期收益越好?
这是否意味着随着更高的头奖,它将达到 0 甚至是正的,这将使彩票成为一个好的赌注?
为了回答这个问题,让我们看看 2005 年发生的一次更大的累积奖金。头奖是 5430 万美元,比 3300 万美元大得多,更接* 6400 万美元的最高纪录。选择这个特别的抽签是因为可以从新闻报道中获得数据。
当时的彩票每张 2 美元,所以它被认为是一个巨大的头奖,相当于今天的 8145 万美元。即便如此,预期收益为-0.14 美元,与过去一年的最高预期值相同。
为什么会这样?
因为这次头奖售出了将* 5000 万张彩票。这与过去一年的*均抽签(490 万)相比是十倍以上。人们肯定很兴奋,会买更多这些更大的头奖的门票!而这是拉低预期收益的主要因素。
是的,彩票的预期回报确实会随着累积奖金的增加而增加。
当头奖变大时,是买彩票的好时机。
但是,由于这些巨额累积奖金造成的乐透狂热,它将永远不会成为一项理性投资(具有正预期回报)!
此外,售出的门票越多,中奖者就越有可能与其他人分享奖金。这将大大降低价值,即使你赢得了头奖。所以让我们转到另一个问题。
当累积奖金越来越大时,你与他人分享奖金的可能性有多大?
- 中大奖
首先,看看 3300 万美元的累积奖金——去年最大的一笔。售出的门票数量估计为 760 万张。
鉴于我们无法改变赢得头奖的几率。令人担心的是,如果我真的赢了,可能会有多个赢家,我必须与他们分享奖金。
基于以上信息,我们能够计算出不同情况下的概率,假设你中了彩票。
The scenarios and distribution given you already won $33 million
这看起来非常好。很有可能(58%)你是唯一的赢家,奖金将是 3300 万美元。
但如前所述,随着头奖越来越大,售出的门票数量将以非线性关系增长。
- 历史巨奖
让我们再次以 2005 年发生的 5430 万美元的累积奖金为例。
The scenarios and distribution given you already won $53.4 million
现在情况完全不同了。这张图表显示,最有可能的情况是,你将不得不在 2-4 名其他赢家之间分配奖金,这将大大减少你可以申请的金额,即使你真的赢得了头奖。
累积奖金越大,你就越有可能与其他赢家分享奖金。
受欢迎的抽奖将会给你很小的机会独自把全部奖品带回家!
摘要
以上分析是在加拿大乐透 6/49 上做的。然而,类似的想法/结果应该适用于其他彩票游戏,如美国的强力球。
总之,彩票从来都不是理性投资。最佳购买时机是头奖非常大的时候!
注来自《走向数据科学》的编辑: 虽然我们允许独立作者根据我们的 规则和指导方针 发表文章,但我们不认可每个作者的贡献。你不应该在没有寻求专业建议的情况下依赖一个作者的作品。详见我们的 读者术语 。
数据是从乐透 6/49 官网刮来的。目前只有一年的数据。
由于数据限制,我们使用了乐透 6/49 官方网站上描述的公式,根据中奖人数和奖金数额来估算售出的彩票总数。
由于数据的限制,除了主大奖之外,其他奖项的期望值是按照过去一年抽奖的*均值计算的。
** [## 根据模拟,30 岁退休需要多少钱
很多人年纪轻轻就有辞掉工作的梦想,活在世上没有经济上的牵挂。怎么…
towardsdatascience.com](/how-much-do-you-need-to-retire-at-age-30-based-on-simulation-424fa9e0922b) [## 我将如何在我的狗身上花费 6 万多美元
我以前从未试图给我们的狗贴上价格标签。但是根据简单的分析,我最后会花…
medium.com](https://medium.com/@liannewriting/how-im-going-to-spend-over-60-000-on-my-dog-4860e5d8935c) [## 在多伦多购买新房——数据驱动的方式
作为一个数据驱动的人,我一直想分析多伦多的房地产数据,因为我知道这样的工作…
medium.com](https://medium.com/swlh/buying-a-new-home-in-toronto-a-data-driven-way-693773d97d86)**
当求职遇到数据科学(第一部分)
原文:https://towardsdatascience.com/when-job-hunting-meets-data-science-part-1-e8f64867d8c?source=collection_archive---------26-----------------------
从业务理解到模型评估,这个数据科学项目帮助我在找工作时变得非常清晰。
“Should I do my Data Science project or writing my Cover Letter? Why not both?” Photo by Markus Spiske on Unsplash
无尽的挑战。我们就是这样成长的。在我们的数据科学沉浸式项目中,顶点之前的最后一个主要项目是为求职的各个方面建立预测模型,如工资和工作类别。这个项目类似于真实世界的场景:你的老板给了你一个目标和/或一个问题陈述,你找到了完成它的方法。
商业理解
那么这个项目有什么问题呢?
2 个问题:
-调查影响薪资的因素
-调查区分工作类别的因素
还有一个问题,数据?
没错,资料中没有提供任何数据。这难道不是真实世界的风格,我们必须从某个地方寻找我们自己的数据吗?在这种情况下,我们可以执行网页抓取来提取在线数据!因此,我决定刮掉这个叫做…M 网站的在线工作*台!(身份被掩盖,以便网站创建者不使网站在未来更难刮。)
数据理解
数据的范围
我把范围缩小到与数据相关的招聘信息,并扩展到需要使用数据相关软件的工作。
# Keywords used for search query
[‘Research Scientist’, ‘Business Intelligence’, ‘Data Engineer’, ‘Tableau’, ‘deep learning’, ‘computer vision’, ‘tensorflow’]
网页抓取工具,要抓取什么?
Selenium 和 Scrapy 都出色地从大量使用 JavaScript 的网站中提取了必要的信息。
由于该网站不断更新其帖子,运行同一组请求可能会获取不同组的帖子。因此,我下载了所需的源代码,并在离线模式下处理它们。
另一个问题随之而来:存储。下载每次发布的源代码可能会占用大量磁盘空间。幸运的是,Python 提供了一个 gzip 库来分别在存储和加载期间压缩和解压缩数据。
下面是搜索和搜索每个关键字的不同结果页面的代码,后面是下载每个职位发布的源代码并以压缩格式存储它们的代码:
Search using keywords and crawl across all results pages
Download each job posting’s source code and save the compressed version
1,640 job postings (possibly with duplicates) occupying relatively large disk space even after compression
使用 PostgreSQL 的数据存储
存储源代码后,我离线检索源代码并提取我需要的原始数据。为了磨练我的 SQL 技能,并体验如何在 Amazon Web Services (AWS)上创建 PostgreSQL 数据库,我决定将我的原始数据存储在 AWS 免费层关系数据库服务(RDS) 。
# These are the raw features used in extracting the data
['job_id','job_title','emp_type','emp_seniority','job_categories','emp_min_exp','job_skills_req','job_desc','job_req','search_query','salary_freq', 'salary_low', 'salary_high', 'company_name', 'company_info', 'link']
Uncompress and extract the relevant data before populating a new SQL Table.
Querying the data using pgAdmin. Looks like everything is in now!
我能做得更好吗?
肯定是的!
在抓取招聘信息的链接时,我可以使用 Scrapy 而不是 Selenium 来提取所有的链接。当时我还不知道那种方法。
而不是将链接列表转换为 Pandas DataFrame 并调用内置方法。to_csv(),也许我可以使用 python csv 库将列表输出到一个. CSV 文件中。然而,我发现执行前一步要容易得多。
有一个问题,尽管可能性极小,一个工作发布的 HTML 源代码由于过长的文件名而无法下载。也许代码可以在创建输出文件之前修剪文件名。
Elasticsearch 可用于存储和接收 HTML 源代码文件,使其成为 PostgreSQL 方法的替代方案。
如果代码有任何问题,或者我可以以任何方式提高我的编码技能或文章写作技能,请在下面留下您的评论,以便我可以从社区学习最佳实践和经验法则。
感谢您的阅读!敬请关注 第二部分 ,在这里我们访问数据库,获取数据并进行分析!
一个接一个的项目,我着迷于使用收集到的数据和基于这些数据建立的模型来解决事情,并通过部署模型来解决现实生活中的问题。你可以通过我的LinkedIn联系我。
当求职遇到数据科学(第二部分)
原文:https://towardsdatascience.com/when-job-hunting-meets-data-science-part-2-675f154269c7?source=collection_archive---------15-----------------------
从业务理解到模型评估,这个数据科学项目帮助我在找工作时变得非常清晰。
Payday! Image found on GIPHY by andersonpaak.com
这是第一部分的延续,我在这里经历了业务理解和数据理解的步骤。所采取的行动是制定问题陈述、网络搜集数据并将数据存储在数据库中。
对于第 2 部分,我们关注数据准备和数据建模!
显然,我们首先从存储数据的数据库中提取数据,并随机抽取 5 个职业数据的观察值。
*engine = create_engine('postgresql://[username]:[[password]@[database].ap-southeast-1.rds.amazonaws.com](mailto:qFH95+yw+ppY9tRm@careers.c0ocff1wef7u.ap-southeast-1.rds.amazonaws.com):5432/postgres', echo=True)
query = """
SELECT * FROM posting;
"""
posting = pd.read_sql(query, engine)
posting.sample(5)*
"让我们开始做模特吧!"我知道我们对模特有多渴望。但是,让我们在开始之前先回顾一下业务问题并执行探索性数据分析(EDA)。
业务理解(重访)
商业问题是调查影响工资的因素。我们想知道可以用来预测工资的特征。更具体地说,给定一个由我们确定的截止工资(可能是所有职位发布工资的中间值或*均值),有哪些特征可能预测工资是高于还是低于截止工资。
数据准备、数据清理
总共有 1,173 个观察值和 16 个特征。一些特征将不会用于建模,例如发布 id、公司名称、公司信息和发布链接。
Great! No null value hidden in our dataset (really ‘Great’? Think again!)
有趣的是,在“要求的经验年数”下没有捕捉到任何信息。因此,此功能将被删除。
Constants like this don’t give any value for analysis and modelling, DROP!
*# Drop features that don't give any value for modelling or don't make any sense to be used for modellingposting['emp_min_exp'].value_counts()
posting = posting.drop(columns=['job_id','emp_min_exp','company_name','company_info','link'])*
其余的特征要么是分类的,要么是文本的。对于文本特征,我们通过转换为小写、删除不必要的特殊字符和转义序列(\n,\t)来清理数据。
*# Clean up the text data
posting.replace(r'\n', '', regex = True, inplace = True)
posting.replace(r'\t', '', regex = True, inplace = True)
for header in ['job_desc', 'job_req', 'job_title']:
posting[header] = posting[header].map(lambda text: ''.join([char for char in text.lower() if char in string.ascii_lowercase + " /'-"]))
posting[header] = posting[header].map(lambda text: text.replace('-', ' '))
posting[header] = posting[header].map(lambda text: text.replace('/', ' '))*
有些工资是以年频率而不是月频率引用的。我们将这些工资除以 12,并删除“工资频率”功能。
*# Convert all salary to monthly salary
posting.loc[posting['salary_freq'] == 'Annually','salary_low'] /= 12
posting.drop(columns='salary_freq', inplace = True)
posting.sample(5)*
此时,我们要决定如何制定我们的目标,也就是工资。一个简单的方法是取高低端点之间的*均值,并将其作为我们的目标。但是,考虑这 2 个场景:
1。4,000 美元到 6,000 美元
2。3,000 美元—7,000 美元
确定两者的*均值为 5,000 美元并不重要,但两者的范围非常不同。
因此,我决定使用工资的低端点作为目标。(另一个实际原因是,老板们通常希望将成本降至最低,这意味着……)
现在,我们专注于我们的目标,薪水。我们绘制了一个柱状图来看工资是如何分布的。
*plt.figure(figsize=(18,5))
sns.distplot(posting['salary_low'], kde=False, axlabel='Salary', color='red');*
When can I reach the right hand side of this graph?
从这个分布观察到的 3 点:
1。没有负面价值观(谢天谢地,你没有付钱让你的老板为他/她工作)
2。数量可观的 0 美元薪水(这不是慈善工作,只是薪水在贴子里没有公开)
3。在最右边出现异常值(我想要的位置)
为了解决第 2 点,我们可以执行插补来插补 113 个$0 值。为此,我们首先使用 CountVectorizer 函数将所有特征转换成一个单词包。然后,我们使用基于 k *邻的回归来估算$0 值。该算法将首先获取一个工资为 0 美元的数据点,在其周围寻找 5 个最*的点,并根据这 5 个最*点的*均工资估算值。
*#Init CountVectorizer with stop words and use 0/1 to denote presence
cvec = CountVectorizer(stop_words='english', binary=True)# Transform all text features into bag of words and concatenate
X = [cvec.fit_transform(posting[i]).todense() for i in posting.columns[:-1]]
X = np.concatenate(X, axis=1)# Draw references to observations where salary = 0 vs =/= 0
salary0_index = posting[posting['salary_low'] == 0].index
salary_not0_index = posting[posting['salary_low'] != 0].index# Init KNeighborsRegressor with 5 neighbors to impute $0 salary
neigh = KNeighborsRegressor(n_neighbors=5)
neigh.fit(X[salary_not0_index], posting.loc[salary_not0_index, 'salary_low'])
posting.loc[salary0_index, 'salary_low'] = neigh.predict(X[salary0_index])*
KNeighborsRegressor with 5 neighbors and uniform weights a.k.a. just take the average of the 5 neighbors!
有了更新后的薪水列表,我们可以再次绘制一个直方图来查看新的分布。
Don’t you think I look like lognormal distribution?
因为它呈现对数正态分布,并且它没有 0 值,所以我们可以执行对数变换,使它看起来像正态分布。
Do I look normal now?
然后,我们确定 1173 个观察值中的 590 个等于或高于正态分布的*均值,而 583 个观察值不等于或高于正态分布的*均值。显然,这种情况下的截断点是对数(工资)的*均值。使用零规则算法,可以预测 all 为多数类,等于或高于 log(salary)的均值,基线为 590/1173 = 0.503。
数据建模
准备好数据后,我们拆分数据,将 80%用于训练,20%用作维持集。
我们采用两种模型来完成分类任务:逻辑回归和 XGBoost 分类器。
模型评估
虽然我们可以使用准确性作为衡量标准,但我们将使用 ROC-AUC 作为衡量模型性能的关键指标。
理想情况下,我们希望真阳性率为 100%,假阳性率为 0%。然而,在现实中,这几乎是不可能的。因此,通过改变阈值,我们可以使用相应的真阳性率和假阳性率绘制受试者工作特征(ROC)曲线。然后,曲线下面积(AUC)将告诉我们我们的模型能够在两个类别之间分离得有多好。AUC 越高,该模型就越能更好地预测真 0 为 0,真 1 为 1。
在维持集上,
逻辑回归:AUC = 0.9028
XGBoost 分类器:AUC = 0.8988
ROC for Logistic Regression and XGBoost Classifier
简而言之…
使用给我们的所有特征,一个好的 ol' Logistic 回归模型在维持集上的表现比 XGBoost 分类器稍好。有了这个模型,我们可以预测日志(工资)是高于还是低于*均值,给定工作发布的信息。对于提供职位匹配服务的公司,该模型可以帮助管理雇主和雇员双方的薪资期望。
完整代码如下:
Code for everything discussed in this story!
更加卖力!
- 除了插补,我们还可以删除那些价值为 0 美元的记录。请注意,该组代表了大约 10%的观察结果,在业务环境中删除它们可能不是一个可行的选项。
- 除了使用 k-最*邻回归量进行插补,我们还可以使用其他技术,例如
- 在这个项目中,NLP 被大量使用,并且由函数生成的矩阵主要是稀疏的。因此,我们应该找到舒适地处理稀疏矩阵的方法,比如使用专门为稀疏矩阵构建的函数,而不是转换和处理密集矩阵。
- 此外,有些算法可能不适用于稀疏矩阵。它们在低维空间(很少特征)可能做得很好,但是在高维空间它们的性能是次优的。我们应该意识到这样的算法。
- 更多的超参数调整可以获得更高的度量分数。然而,我们需要注意的是,这种调整可能只会对总体分数产生微小的改善。
- 因此,与看似无止境的超参数调整相比,基于领域专业知识(在本例中,人力资源)的更好的特征提取和特征工程策略可能有利于提高分数。
- 我们还可以努力找出哪些词对薪水有更高的预测能力。需要注意的是,为了欺骗系统,帖子可能只包含某些具有高预测能力的词(如数据科学家),但会形成不正确的句子。例如,“优秀的数据科学家,优秀的数据科学家,完美的数据科学家”。
感谢阅读,我希望你能像我写的一样喜欢这个故事!如果我可以以任何方式提高我的编码或文章写作技能,请在下面留下您的评论,以便我可以从社区学习最佳实践和经验法则。(^^,)
一个接一个的项目,我着迷于事物如何使用收集的数据和建立在其上的模型工作,并通过部署模型来解决现实生活中的问题。你可以通过我的 LinkedIn 联系我。
当较少的数据是足够的数据时
原文:https://towardsdatascience.com/when-less-data-is-enough-data-78720d605bc0?source=collection_archive---------33-----------------------
现实世界中的数据科学
世界发展越来越快,我们需要实时的答案,或者至少是比猜测更好的答案。我经常遇到的一个问题是,一个样本什么时候达到足以定罪的临界质量?介于数据的 0%和 100%之间。但是在哪里?
举个例子,让我们以美国职业棒球大联盟赛季为例。每个队的目标都是进入季后赛。然而,作为一个球迷,一个赛季有 162 场比赛,我在什么时候才能对我的球队是否会成为竞争者有信心呢?
如果我们想知道季节什么时候“重要”呢?在赛季的哪一点上,我们可以合理确定地预测球队是否会进入季后赛?
交流数据就是说两种语言——一种是给那些只想知道结论的人,另一种是给那些想知道细节和过程的人。前者不关心数学和过程——他们只想要答案,并知道他们可以信任那个答案——而后者不知道过程就不会相信结论。说两种语言是我们的工作。
这篇文章将从粉丝的角度开始,实际上是对调查结果的执行摘要,然后是对我们如何得出这些调查结果的更详细的分析师观点。
粉丝:我什么时候该关心?
简短的回答是,即使在一场比赛之后,季后赛和非季后赛球队之间已经有了区分。在一个所有球队在第一场比赛中都是*等的世界里,季后赛和非季后赛球队的*均胜率都是 0.5。相反,季后赛球队*均 0.59 胜,非季后赛球队 1 场后 0.47 胜。随着赛季的进行,球队之间的差距只会越来越大:
赛季进行到大约四分之一的时候(大约 40 场比赛),季后赛和非季后赛球队的*均胜场已经有大约 4 场的差距。如果你的球队赢了 23 场或更多,他们看起来相当不错。如果他们有 19 个或更少,嗯,没有那么多。仅仅使用球队的胜场数,有大约 80%的机会,一个模型将会正确地将一支球队分类为是否进入了季后赛。
继续点击下面的互动图表,查看每个游戏号码的中奖情况:
在全明星赛期间(赛季进行到一半时),该模型有 87%的机会正确地将一个正值分类,并且胜利的数量开始显示出那些注定要进入季后赛的和那些没有进入季后赛的之间的清晰界限。季后赛球队在这一点上*均有大约 8 场胜利,并且分布显示了“较低季后赛球队”(季后赛球队胜利的第 25 个百分点)与“较高非季后赛球队”(非季后赛球队胜利的第 75 个百分点)之间的分离。
九月那段呢?球队在九月要打大约 25 场比赛,所以这相当于从上图中的第 135–140 场比赛开始。到目前为止,*均有大约 15 场胜利的差距,我们的可预测性增加到大约 95%。
所以,如果你想对你的球队能否进入季后赛有 80%的信心,检查一下他们在第 40 场比赛前是否有 23+的胜场数。如果他们在全明星赛前获得 46+的胜利,事情看起来真的很好。而且,如果进入冲刺阶段,你的球队已经赢了 80+场,放松下来,等待季后赛,因为你很有可能会参加十月棒球赛。
分析师:让我们来看看技术问题
用于数据操作的 R 和用于建模/可视化的 Python 中的项目代码是 在 GitHub 这里有 。
创建“完美”数据集
有效的问题解决始于准确地提出问题和准备数据。我知道我想回答的问题— 大概需要多少场比赛来培养对一支球队能否进入季后赛的信心?我只是还不知道如何回答。
在我现在参加的 MSBA 项目的课程中,我们将讨论概率分布和量化不确定性。我想知道采用概率方法是最好的,还是建模方法更好。
最终,经过大量的数据准备和清理,我决定将随机森林分类模型与数据相匹配。理想的数据集应该是:
在一个赛季的任何一个时间点,一支球队有多少胜场,这支球队在那一年进入了季后赛吗?然后,有了这个数据集,我们可以为每个游戏号码建立一个模型,并根据它计算准确性指标,以达到我们期望的置信度。经过多次反复试验,我找到了一个如下所示的数据集:
对于 1990 年到 2018 年的每一年,以及每支球队,我们都有比赛编号,到那时的胜利数,他们是否进入了季后赛,我添加了一个“高于*均值的胜利数”列,计算胜利数减去该年的*均值和比赛编号。
建模及结果解释
这个问题的性质很适合于一个分类问题;每年,一支球队要么进入季后赛,要么出局。虽然测试了许多分类模型——KNN、梯度推进、逻辑回归——但我选择了随机森林,因为它功能强大、可解释且相对较快。
我首先创建了一个单一的模型,并计算 ROC AUC 得分(这有一个令人惊讶的非直观的意义,因为我在研究如何解释它时了解到了这一点)。结果如下:
接下来,我绘制了各种游戏数量的 ROC 曲线,以观察随着游戏样本量的增加,曲线如何变化。红色虚线代表完全随机的猜测,越靠左上方,模型的表现越好:
现在,这个模型和由此产生的计算仅仅是基于一个单一的模型。每次运行它,我们都会得到不同的结果。为了说明这一点,我决定运行一系列模拟模型,以更好地了解每个游戏号码的数据分布。
我分别运行了 500 次,每次都选择不同的数据分区(一种“随机”的随机状态),使用一系列随机选择的模型参数:
num_runs = 0
desired_runs = 500while num_runs <= desired_runs:
for game_number in range(1, 163):
wins_game_num = wins[wins.game_num == game_number] x_train, x_test, y_train, y_test = train_test_split(wins_game_num[['num_wins_team']],
test_size = 0.4,
random_state = random.randint(0, 100),
stratify = wins_game_num['playoff_flag']) rf_classifier = RandomForestClassifier(
n_estimators= random.randint(15,500),
max_depth = random.randint(10,100),
max_features =
random.choice(['auto','sqrt','log2',
None]),
min_samples_leaf = random.randint(1, 25))
...
<Remaining code>
这导致 500 个模型模拟计算 ROC AUC 分数,从中我们可以绘制*均分数以及每个游戏号码的分数范围:
随着比赛次数的增加,可变性降低,这表明我们的结果更加确定,总的来说,我们可以快速改进随机猜测(0.5),根据获胜次数区分季后赛和非季后赛球队。
结论
在我在 Stax Inc. 的工作中,我们一直在寻找更快获得推论和见解的方法。私人股本市场竞争激烈,管理团队需要更快地做出反应和适应,我们的工作需要反映这种对速度的更高要求。
在这里,我们可以在查看大约 25%的数据时获得大约 80%的预测能力。这并不是说这个比率总是通用的,而是说在许多情况下,在收集和分析 100%的数据之前,就可以做出推断。
当机器学习解决方案不可能的时候!
原文:https://towardsdatascience.com/when-machine-learning-solutions-are-not-feasible-649d229241b6?source=collection_archive---------17-----------------------
每个数据科学家在提出机器学习解决方案之前应该考虑的五个场景。
Source: Pixabay
简介
大多数从业者普遍认为,机器学习(ML)解决方案总能带来业务改进。尽管基于 ML 的方法给企业带来了独特的能力,但在某些情况下,依赖 ML 解决方案可能会产生负面影响,甚至根本不可能。
本文的主要目的是讨论不同的用例,在这些用例中,使用 ML 并不能完全解决目标业务问题。本文给出了五种场景,稍后将介绍可能的解决方案,以考虑每种场景的更好解决方案。
场景 1:训练数据量不足
不使用 ML 解决方案的最直接的原因是数据量不足,这阻碍了精确模型的训练。更糟糕的是,在某些情况下,不准确的模型会产生完全随机的预测或分类结果,整个业务功能可能会受到质疑。
根据业务问题的性质,可能需要不同数量的训练实例;然而,经验法则是确保数据集包含至少 10k 个样本。
解决方案:
解决这个问题的一个可能机制是应用数据扩充技术,这种技术旨在从现有数据中获取更多数据。对于文本,可以选择以下选项之一:
- 同义词替换
- 随机插入
- 随机交换
- 随机删除
- 等等。
对于图像,备选方案是:
- 水*/垂直翻转
- 水*/垂直移动
- 随机旋转
- 随机调整大小
- 等等。
场景 2:缺少重要数据点
有了大型数据集,使用 ML 作为解决方案的下一个考虑是探索数据点(字段、要素或属性),以确定它们是否足够重要,可以用作模型的输入。
术语“显著”表示数据点的辨别能力,以及它们在定义目标预期结果时的独立性和信息量。特征选择是一个至关重要的部分,因为它直接影响模型在准确性和可靠性方面的整体性能。
解决方案:
对于这个问题,一个可行的解决方案是通过将现有特征组合在一起或者通过将它们分类到预定义的更有意义的集合中来生成不同的特征。例如,距离和时间的组合可以生成速度,这反过来不仅提高了效率,而且可以为训练模型提供更独特的数据点。
场景 3:更新 ML 模型不切实际
使用 ML 解决方案的第三个可能的障碍是在频繁的时间间隔内实现更新模型的不可行性。拥有一个初始的精确模型可能足以在短时间内获得可靠的预测,但在较长的时间内,性能将受到一些因素的负面影响,如事件、季节、用户的人口统计或地理信息的变化。
所有这些都需要嵌入一个定期更新的模型,该模型使用最新的数据不断地重新训练自己。问题是访问更新的数据并不总是可能的,因为数据源可能是从一个或多个不同的数据源获得的历史数据。
解决方案:
这个问题的唯一解决方案是确保将数据连续摄取到数据库中,无论是通过实时用户数据还是离线用户生成的数据。
场景 4:缺乏可解释性
有时,即使是高度精确的训练 ML 模型的结果也可能不容易被最终用户理解,使得其采用非常困难或不可能。例如,具有非常小的类内距离和的聚类模型可能会将标签 1、2、3、4 和 5 分配给大型数据集中的不同数据样本,但却不对这些标签的含义进行解释。或者在决策树的情况下,结果子组不容易解释。
解决方案:
根据所选 ML 算法的性质,使用不同的技术来确保最终结果的清晰可解释性。例如,在聚类方法的情况下,建议将数据点的数量保持在四个或五个以下,以确保在每个输出的聚类中可视化和/或解释底层概念是在人的能力范围内。
场景 5:执行缓慢
与传统的基于规则的方法相反,在基于 ML 的方法的实现中总是涉及一些额外的阶段:数据预处理和/或清理、特征选择和/或转换、模型选择和设计、训练和测试等。所有这些都增加了总的执行时间,在深度学习模型的情况下,由于其设计中百万级数量的参数,这种情况甚至更加恶化。
在某些情况下,对于最终用户来说,即使在预测时有几秒钟的延迟也是非常不可取的,这可能会立即打消他们使用该应用程序的念头。例如,在大多数实时产品/服务推荐系统中,所有用户都期望快速响应,这可能是促使他们继续使用该应用程序的最重要因素之一。
解决方案:
首先,ML 算法本身的选择是对执行时间影响最大的因素。例如,与多层神经网络相比,使用支持向量机实现的二元分类器在训练和预测时间上总是快得多。其次,ML 框架的选择影响模型的整体速度。最佳框架通常可以通过实验来确定。不同的选择有 TensorFlow,Keras,Torch,Caffe,Theano,Scikit-Learn 等。
总之
机器学习(ML)解决方案,特别是那些基于深度学习技术的解决方案,通过其有前途的表现,已经彻底改变了商业的各个方面。然而,将基于 ML 的特征嵌入到服务/产品中并不总是可行的,主要原因有五个:
- 训练数据量不足,
- 缺少重要的数据点,
- 更新 ML 模型的不可行性,
- 缺乏可解释性,以及
- 执行缓慢
在本文中,这个列表中的每一项都用一个例子来解释,然后是一个应对挑战的解决方案。
在提议采用基于 ML 的解决方案来解决业务问题之前,考虑所有可能的挑战性场景是很重要的,因为早期的考虑将节省组织的大量时间和资源。
同样值得强调的是,基于 ML 的解决方案并不总是比基于规则和传统的解决方案更好,尤其是在效率和速度比准确性和可维护性更重要的情况下。
当多任务学习遇到 BERT 时
原文:https://towardsdatascience.com/when-multi-task-learning-meet-with-bert-d1c49cc40a0c?source=collection_archive---------7-----------------------
面向自然语言理解的多任务深度神经网络简介
Photo by Edward Ma on Unsplash
BERT (Devlin et al .,2018)在多个 NLP 问题中得到了 2018 年最先进的结果。它利用 transformer 架构来学习contextualized word embeddings
,以便这些向量在不同的领域问题中代表更好的含义。为了扩展 BERT 的使用范围,刘等人提出了用Multi-Task Deep Neural Networks
( MT-DNN
)在多个自然语言处理问题中取得最新的结果。 BERT 在MT-DNN
中帮助构建了一个共享文本表示,同时微调部分利用了多任务学习。
本故事将讨论用于自然语言理解的多任务深度神经网络(刘等,2019),并将涵盖以下内容:
- 多任务学习
- 数据
- 体系结构
- 实验
多任务学习
Multi-task learning
是迁移学习的一种。当从多种事物中学习知识时,我们不需要从头开始学习一切,但是我们可以应用从其他任务中学到的知识来缩短学习曲线。
Photo by Edward Ma on Unsplash
以滑雪和滑雪板为例,如果你已经掌握了滑雪,你不需要花很多时间去学习滑雪板。这是因为两项运动都有一些相同的技巧,你只需要理解不同的部分就可以了。最*,我听朋友说他是滑雪高手。他只花了一个月就掌握了滑雪。
回到数据科学,研究人员和科学家认为,学习文本表示时可以应用迁移学习。 GenSen (Sandeep 等人,2018)证明了多任务学习改善了句子嵌入。可以从不同任务中学习部分文本表示,并且可以将那些共享参数传播回去以学习更好的权重。
数据
输入是一个单词序列,可以是一个单句,也可以是用分隔符将两个句子组合在一起。与 BERT 相同,句子将被标记化并转化为初始单词嵌入、片段嵌入和位置嵌入。此后,多双向变换器将用于学习上下文单词嵌入。不同的部分是利用多任务来学习文本表示,并在微调阶段将其应用到单个任务中。
DNN 山的建筑
训练模型需要经过两个阶段。第一阶段包括词典编码器和变换编码器的预训练。通过跟随伯特,两个编码器都通过掩蔽语言建模和下一句预测来训练。第二阶段是微调部分。应用基于小批量随机梯度下降(SGD)。
与单一任务学习不同,MT-DNN 将计算不同任务之间的损失,并同时将变化应用到模型中。
Training Procedure of MT-DNN (Liu et al., 2019)
不同任务的损失是不同的。对于分类任务,这是一个二元分类问题,所以使用交叉熵损失。对于文本相似性任务,使用均方误差。对于分级任务,使用负对数似然。
Eq. 6 for classification (Liu et al., 2019)
Eq. 6 for regression (Liu et al., 2019)
Eq. 6 for ranking (Liu et al., 2019)
从下面的架构图来看,共享层通过 BERT 将文本转换为上下文嵌入。在共享层之后,它将通过不同的子流程来学习每个特定任务的表示。任务特定层被训练用于特定的任务问题,例如单句分类和成对文本相似性。
Architecture of MT-DNN (Liu et al., 2019)
实验
MT-DNN
基于 BERT 的 PyTorch 实现,超参数为:
- 优化器:Adamax
- 学习率:53–5
- 批量:32
- 最大历元:5
- 辍学率:0.1
GLUE test set result (Liu et al., 2019)
SNLI and SciTail result (Lit et al., 2019)
拿走
- 即使是类似的架构(即 BERT ),也可以通过多个 NLP 问题学习更好的文本表示。
关于我
我是湾区的数据科学家。专注于数据科学、人工智能,尤其是 NLP 和*台相关领域的最新发展。你可以通过媒体博客、 LinkedIn 或 Github 联系我。
延伸阅读
变压器的双向编码器表示(BERT)
通用分布式语句表示(GenSen)
参考
Devlin J .,Chang M. W .,Lee K .,Toutanova K .,2018 年。 BERT:用于语言理解的深度双向转换器的预训练
Sandeep S .、Adam T .、Yoshua B .、Christopher J . p .通过大规模多任务学习学习通用分布式句子表示。2018
刘小东,何炳春,陈伟志,高建峰 2019。用于自然语言理解的多任务深度神经网络
什么时候不用机器学习?
原文:https://towardsdatascience.com/when-not-to-use-machine-learning-14ec62daacd7?source=collection_archive---------16-----------------------
机器学习模型、规则还是启发式方法?
当你在解决一个问题时,在什么情况下你会应用机器学习?
真的在任何情况下,机器学习总是胜过规则和启发式方法吗?
在我大学毕业之前,我对机器学习模型如何潜在地解决世界上的任何问题非常着迷。每当我面临任何类型的问题时,我都会首先想到如何通过使用机器学习方法来解决这个问题。
例如,当我在新加坡寻找要出租的房产时,我想知道某个特定地区的价格范围。换句话说,给定我想要的标准,那个特定区域的最优价格范围是多少。显然,有几种方法可以得到答案。
首先,如果我事先知道某个地区的价格范围,我就可以根据该地区的位置大致知道价格范围。其次,我可以去各种房产网站如 propertyguru 和99.co过滤掉不符合我喜好的条件。从那里,我能够得到一个估计的价格范围。第三,我可以通过抓取网站建立一个机器学习模型,根据我的偏好找到最优的价格范围。
我该选哪个?
作为一名数据科学爱好者,我选择训练一个能够给我任何地区价格范围的模型。几天后,我设法训练出一个精确度可以接受的模型。然而,这是最好的方法吗?
如果你只想在短时间内得到一个足够好的答案,就不要考虑机器学习模型,使用启发式方法就可以了。
我们来讲一个职场上的业务问题的例子。假设你在一家电子商务公司工作,负责一个禁止非法销售的项目。例如,枪支、未申报的药品、成人用品等。运营团队已经有了找出这些产品的方法或关键字列表,但他们不仅希望发现更多的非法列表,还希望结果高度准确。鉴于你不仅没有干净的标签数据,而且给你很短的时间去发现更多的非法产品,你将如何解决这个问题?
方法之一是探索图像模型。获取一些标记图像,然后训练一个图像分类器。此外,您可以训练一个文本模型来对这些列表进行分类,或者您可以将文本和图像模型结合起来进行分类。你只有很短的一段时间,你担心你是否能交付结果,你能做什么?
由于运营团队已经有了一套他们所依赖的关键字,您可能应该只使用基于规则的方法,因为这是最快的方法。稍后,您可以要求您的团队重新标记现有数据,以确保数据足够干净。然后,你可以训练一个表现更好的机器学习模型。
简而言之,基于规则的算法为您提供了实现所需精度的绝佳方式。然而,从长远来看,机器学习模型仍然是最好的选择。
现在,让我们描绘另一个真实世界的场景。您在金融行业担任数据科学家,负责欺诈检测项目。您的公司是有权访问互联网交易数据的第三方公司。你的工作是以理想的准确度检测可疑交易。此外,模型的可解释性也是一个非常重要的方面。
例如,当这个项目的负责人(PIC)问你为什么有一笔巨额的欺诈交易,但你的模型却没有发现?或者为什么有这么多的交易被标记为欺诈,但它们实际上只是普通的交易?你的模型应该是解释性的,以便你能够向 PIC 解释它。
召回率可以作为模型的优先级度量。这是因为,如果你的模型碰巧对大量欺诈案件进行了错误分类,那么银行的成本将会非常高。作为一名数据科学家,您如何解决这个问题?
你可以建立一个深度学习模型来检测人类的异常行为。然而,如果你的模型预测出错,你几乎无法解释。另一方面,你可以建立一个基于规则的模型。因此,您可以向 PIC 解释您的结果。
如果你的模型产生的决策成本太高,或者你的模型需要解释力,那么基于规则的方法将是更好的选择。
最后的想法
非常感谢你一直读到最后。
机器智能是人类需要进行的最后一次干预。—尼克·博斯特罗姆
上面的引用显示了机器学习应用于世界上任何问题的巨大潜力。这篇文章并不是告诉你,机器学习似乎不是一个在商业中实施的好选择。然而,我希望你能明白在什么情况下机器学习不是一个好的选择。
我希望你会喜欢这篇文章,它为你提供了一个关于机器学习的不同视角。下周请继续关注我的帖子!
如果你对获得伟大的代理感兴趣,请随时查看这项服务!
关于作者
Low 魏宏是 Shopee 的数据科学家。他的经验更多地涉及抓取网站,创建数据管道,以及实施机器学习模型来解决业务问题。
他提供爬行服务,可以为你提供你需要的准确和干净的数据。你可以访问这个网站查看他的作品集,也可以联系他获取的抓取服务。
你可以在 LinkedIn 和 Medium 上和他联系。
当我们的数据科学团队没有创造价值时
原文:https://towardsdatascience.com/when-our-data-science-team-didnt-produce-value-c00c67919ebb?source=collection_archive---------9-----------------------
领导数据团队的重要一课
Photo by Maarten van den Heuvel on Unsplash
我坐在老板的办公室里,向他简要介绍我们新仪表板的推出,这将大大增加组织中每个成员对数据的访问。此外,新数据的质量比以往任何时候都高,这种设计将使即使是最不了解技术的用户也能对数据进行有意义的控制。
然后,我的老板告诉我,他对我们数据团队的印象是,我们无法获得任何有意义的数据。
说这让我措手不及是轻描淡写。我知道团队有多努力。此外,他们在这一年中还设计并启动了其他几个重要而复杂的项目。
然而,我的老板告诉我,他对我们的数据没有信心,或者对团队在许多需要数据和分析的情况下提供价值的能力没有信心。
我无法释怀,因为我真的很困惑。所以我调查并了解到我的老板的经历和观点是独特的,与我的不同。
他的数据需求通常围绕着紧急的反应式数据请求和最新的外部需求。几乎在他能叙述的每一个案例中,他得到的回答都是我们不能提供数据。
到目前为止,数据团队的重点和优先事项一直是我们的商业智能、机器学习以及预测工具和产品。这些将使我们了解该组织需要达到的目标,以及最*增加资源的理由。见鬼,我们完全按照组织的五年计划行事!
作为一名经理和数据科学团队的一员,这给我敲响了警钟。
授权是一个有趣的命题。作为一名主管,我经常担心自己是否对员工进行了微观管理。
为什么?因为大家都知道你的团队不想被微观管理。当然不是,你也不想被人微观管理。
但是通常会发生什么?我经常发现项目没有完成。或者他们完成的方式没有达到我的期望。
在与我的老板会面后,我意识到我委派的许多任务和项目被团队确定为“不可能的”。对于数据请求和特殊分析,这种情况经常发生。这让我可以把更多的时间花在其他项目上。
“我们没有数据”,“这不是我们能找到的报告”,“我们以前没有成功地尝试过”是我听到的一些典型的回答。
在这些问题上,我信任团队。他们在一起的时间比我监督他们的时间还要长。事实上,我从他们身上学到了东西,并经常发现自己也在用同样的方式应对任务,向同事解释我们不能做什么。
我花了一些时间回忆发生的事情。我学到的东西把我带到了一个非常不同的方向,并帮助我更好地了解我的团队和组织的需求。
几个月来,我一直在听我的团队关于我们的新仪表板、ML 项目和其他长期计划的进展的稳定而定期的报告。团队的骄傲和兴奋——以及我自己的关注——相互促进。
这种情况一直持续到特别数据请求不再是优先事项的时候。并且只有那些我们已经准备好访问数据的请求才被满足。任何其他事情都会分散我们有限的和“宝贵的”资源,使其无法在真正“重要”的项目上工作。
当你在一个反应式的组织中时,你需要为这个任务投入资源。
这意味着困难的数据任务被拒绝……通常的解释是我们没有数据。
我决心改变老板对我们团队的看法,以及我们满足他对数据需求的能力。很明显,我忽视了组织对数据分析的短期需求,这种需求往往超过了领导层对新产品的长期计划。
当你在一个反应式的组织中时,你需要为这个任务投入资源。我还确保整个团队都明白,无论付出多大的努力,我都希望培养一种“同意”的文化。这绝对意味着重新确定项目的优先顺序,但也意味着我们所有人都要相互负责,如果我们被激励去拒绝一个请求,就要对自己和数据提出尖锐的问题。
经过一些搜索和一些案例,我了解到事实是团队并不总是默认一种探索的心态。这是我的错。我已经委派了具体的任务和请求,而没有花时间和团队一起设定任务的期望水*。
此外,我信任他们的专业知识(正确地),但当他们拒绝请求(错误地)时,我没有花时间和他们探讨“为什么”。
作为一名领导者,仅仅建立正确的团队是不够的。你还必须形成正确的态度和团队文化。你的职责是确保组织的需求是确定优先级的首要因素。
如何扭转局面?现在回想起来,我发现自己处于这种境地并不奇怪。我们的数据团队脱离了组织的大部分。虽然我们最*增加了 it 资源,但绝大多数都来自组织外部,并且是因为他们在数据科学方面的专业知识而不是组织部门的专业知识而被聘用的。如果这种情况在您工作的组织中听起来很熟悉,我推荐以下实践。
五个为什么——我最喜欢的工具之一后来变成了“五个为什么”。这有时可能会令人讨厌,但它帮助我对我们的团队和组织了解了很多,并允许我通过一些特别复杂的请求来指导团队——通常将它们转化为我们可以完成的可管理的任务。
利益相关者参与—我们了解到,在许多情况下,我们不得不花大量时间与提出请求的人在一起,以了解他们到底需要什么,并与更大的利益相关者团体接触,以弄清楚如何获得数据。在许多情况下,这些不是我们正常的报告,但如果我们花时间去钻研,我们经常会发现,我们要么有数据,要么只需做一点额外的工作就可以得到它。
领域知识 —因为我们的团队非常了解数据科学,但不是组织的工作,所以我们不得不进行双向讨论。它帮助我们能够向领域专家展示我们的数据库表,并引导他们通过我们的查询逻辑。它还帮助我们让他们带我们浏览前端系统,以便我们能够对他们试图实现的目标达成共识,从而了解政策和流程。
外部意识 —这对团队的每个成员都至关重要,尤其是领导者。走出你的办公室,忘记你的项目图表和你的 scrums。与组织中的其他部门交谈,了解他们的需求。也许你的团队会优先考虑这些,也许不会。也许你会给他们一个完美的解决方案,但是当你的开发还在进行的时候,他们需要一些不完美的东西。
在不是围绕数据科学建立的组织中,那些从事数据工作的人需要特别小心地理解我们的工作如何对整个组织使命做出贡献。
我们必须记住,我们是一个辅助角色,而不是核心职能。我们必须真正关心组织的需求和问题,并理解我们的工具如何提供解决方案。我们必须能够*衡长期解决方案和短期需求。
重要的是要记住,今天的问题比一年后的问题重要得多。
当曼哈顿的距离不够的时候
原文:https://towardsdatascience.com/when-the-manhattan-distance-isnt-enough-4339f7c57b82?source=collection_archive---------34-----------------------
寻找最佳路线
Photo credit: Jaanus Jagomägi.
晚上,我沿着安静的街区里几个漂亮的长方形街区散步回家。当我第一次搬进我的公寓时,我每天会沿着不同的路线随意漫步,探索这片土地,但过了一段时间后,我开始迷恋上一条曲折的道路——但这是为什么呢?
因为是最短的。
让我们来探究为什么会这样,以及以这种方式走路可以节省多少时间。我们将进行一些基本的数学建模,并找出在极端情况下会发生什么——让我们开始工作吧!
什么距离?
当我们谈论两个事物之间的距离时,我们通常会谈论“直线距离”或曼哈顿距离。前者是到达那里的直接路线,而后者是如果你必须沿着一个严格的网格模式走的距离。您可以在下图中看到这些表示。
Difference distance measurements: as the bird flies (green), and the Manhattan distance (red, blue or yellow). Credit: Wikpedia.
这种定义距离的方式有很多应用,从国际象棋到纯数学到计算生物学。你会注意到一个缺点,真实的街道是有宽度的。
人类相当懒惰,或者,换句话说,我们抄*路。这意味着当我们在街上行走时,我们有时会沿着对角线行走,以减少行走的总距离。这仅仅是因为切割一个角的距离比跟随一个形状的外部要短。你可以在这里看到勾股定理的简单证明。
因此,如果我们考虑一条有宽度的道路,那么现在两点之间的最短距离是多少?
让我们来看看数学
在这两个极端中,我们有上图所示的红线和蓝线,让我们在一个较小的 2x2 模块上计算它们的性能。我们假设从左下角开始,希望在右上角结束。道路的宽度将是 w,两条道路之间的距离将是 l。
A simple 2x2 street block depicting the optimal route (green), the longer routes (red) and the best possible route (blue).
请注意,最短的路线(绿线)可以表示为:
Distance (optimal) = sqrt( 2 x (2l+3w)^2 )
首先,对于红线,我们假设还是不偷工减料。那么测量的距离将是
Distance (red, long) = [ 2 x (l+w) + w ] x 2
= 4l + 6w
现在让我们只切一个角,在到达终点之前,向左上角前进。
Distance (red, short) = sqrt( (2x(l+w))^2 + w^2 ) x 2
= sqrt( 4l^2 + 5w^2 + 4lw ) x 2
这有点复杂,但希望您仍然能够理解。
我们现在可以看一下蓝线,它允许我们切掉尽可能多的角,从而得到公式:
Distance (blue) = ( sqrt((l+w)^2+w^2) + sqrt(l^2+w^2) ) x 2
那很好,但是这些公式如何比较?我们能节省多少时间?
数据
为了进行计算,我们需要道路的*均长度和宽度。在谷歌地图上用距离计算器测量我家附*的距离,我发现*均长度为 55 米,宽度为 3 米。我敢肯定,这在世界各地甚至在不同的社区都有所不同,所以请随意尝试您自己的数字。
Measuring street sizes with Google Maps, 55m long and 3m wide, on average.
将这些代入我们上面的公式得到以下结果:长红色距离= 238 米,短红色距离= 232 米,蓝色距离= 226 米,最佳距离= 168 米。这意味着,我们的最短路线将是沿着蓝色路径抄*路,节省 12 米的距离,即 5%!
正如文章开头所提到的,我的房子离车站有四个街区远,也就是说公式必须根据更多的街区进行调整。这样做的结果是最长距离为 470 米,最短距离为 447 米。这仍然是 5%的适度节省,但现在相当于节省了 2300 万英镑——这只是一种方式!
通过遵循之字形方法,我可以每天节省将* 5000 万英镑,或者每月节省 1.5 公里。这听起来可能不算多,但是以人类*均 5 公里/小时的行走速度,每个月可以节省将* 20 分钟!
更多,更多!
我的街区只有四个宽和四个高,但是更大的街区呢?随着我们看到越来越大的区域,我们能节省多少?
让我们考虑一下,随着块数 n 向无穷大增加,我们的公式会发生什么变化。我们必须将上述公式推广到 n 个区块,给出:
Distance (blue) = sqrt((l+w)^2+w^2) x 2 + sqrt(l^2+w^2) x (n-1) x 2
随着 n 的增加,左边的项变得无关紧要,留给我们:
Distance (blue) = sqrt(l^2+w^2) x n x 2
让我们将这种情况与广义的最差解决方案进行比较。
Distance (red, long) = [ n x (l+w) + w ] x 2
更大的 n,重新排列,得到:
Distance (red, long) = (l+w) x n x 2
所以我们能走的最长距离和最短距离的比率是:
Distance (blue) / Distance (red, long) = sqrt(l^2+w^2) / (l+w)
将我所在街道的数字代入,得出 5%,与我们之前对四个街区的计算非常相似。这是一个有趣的结果,它告诉我们,无论我们走多少个街区,我们仍然只能节省最大距离的 5%。
As the number of blocks increases, we hit a limit to the amount of savings we can have. For streets with length of 55m and width of 3m, this is around 5%.
然而,我们可以看到,不同的道路宽度和长度值可以节省更多的成本。例如,如果我走过的路的宽度是两倍,那么节省的成本几乎是 10%。
抄*路
这篇文章展示了抄*路的好处。我们不仅应该在有意义的时候在业务中这样做(尤其是在初创公司,想象一下成本降低 5%!),要在个人生活中做到,才能获得真正的积蓄。
它还显示了如何将简单的建模和估计应用于问题,以发现有趣的关系,例如走过的街区数量与节省的时间之间的无关性。
最后,我希望你已经学会了一两件关于走路的事情,下次你决定走哪条路回家时,你会三思而行。
注意:斜过马路请小心;我住在一个安静的街区,但这种行为在繁忙的街道上肯定不太好。在节省时间之前,保持安全!
当使用的统计数据改变了 2020 年美国劳工联合会的年龄叙述
原文:https://towardsdatascience.com/when-the-statistic-used-changes-the-afl-age-narrative-for-2020-954e938076ef?source=collection_archive---------39-----------------------
我们应该使用*均值还是中位数?
在看到我心爱的 Hawthorn Hawks 在他们的网站上发布了一篇关于每个球队球员年龄的文章后,媒体喜欢引用 Champion Data 的“*均年龄”作为他们的衡量标准,这让我感到愤怒。
从 2020 年 AFL 超级联赛赛季开始时球员的年龄分布可以看出,这个数字将被名单上的老球员扭曲,特别是像肖恩·伯格因、凯德·辛普森、小加里·阿布莱特这样的球员…
Would the mean or median be a better measure with this distribution?
意思是,中间值…那又怎么样?
的意思是,来自维基;
对于数据集,算术*均值,也称为数学期望或*均值,是一组离散数字的中心值:具体来说,是值的总和除以值的个数。
中位,亦维基;
中位数是将数据样本(总体或概率分布)的上半部分与下半部分分开的值。对于一个数据集,它可以被认为是“中间”值。例如,在数据集{1,3,3,6,7,8,9}中,中位数是 6,样本中第四大也是第四小的数。对于一个连续的概率分布,中值是这样一个值,使得一个数有相等的可能落在它之上或之下。
当数据不是正态分布在*均值周围时(就像这里的情况),用它来描述中心的度量是误导的。在这种情况下,中位数提供了更具代表性的统计数据。对于如上图所示的正偏态分布,统计 101 告诉我们,中值将小于*均值,而当分布为负偏态时,情况正好相反。
2020 年 AFL 超级联赛赛季球队名单上所有球员的*均年龄是 24.17 岁,而*均年龄是 23.6 岁。
那么为什么他们仍然报告*均值呢?
我怀疑媒体报道*均年龄有两个原因;
- 谁会费心去解释均值和中值之间的细微差别;或者更有可能,
- 对于一些团队来说,*均水*更倾向于将这个数字拉得更高,从而推动他们想要运行的叙事。
不同措施的影响
当我们绘制每个团队的*均年龄和中值年龄时,我们可以看到我们得到了一些非常不同的结果。
我们相信吉朗猫队拥有第四古老的名单,但当使用中位数作为统计数据时,他们是第 11 古老的比赛名单,袋鼠,GWS,圣徒,魔鬼,轰炸机,牛头犬和老虎都比他们有更古老的名单。
其他一些影响:
- 布里斯班雄狮队拥有 2020 赛季最年轻的名单,而不是黄金海岸队
- 老鹰队实际上是第四老的名单,北墨尔本是第三
- 恶魔是第七古老的名单,而不是第十二古老的
- 权力是第三(与天鹅)最年轻的名单,而不是第十老
Orange points represent the mean, while blue points the median
这些有什么关系呢?
这个数字是如何报告的最终可能无关紧要;当谈到英超成功的最终荣耀时,比赛名单的年龄可能并不那么重要,正如我们可以在这个伟大的分析中看到的最*英超球队的不同年龄分布。
除此之外,如果能看到这个数字报告得更准确一点,那就更好了。
咆哮。完毕。
这个帖子的数据和用来刮的代码可以在这里找到。
本帖原创,发布在不怪数据博客https://www.dontblamethedata.com
什么时候放弃?
原文:https://towardsdatascience.com/when-to-give-up-117e2e2acdc9?source=collection_archive---------36-----------------------
对 NBA 球员相对于选秀状态的价值,他们成功的可能性,以及如何确定资产价值的检查。
当魔术队把维克多·奥拉迪波交易到俄克拉荷马雷霆队换来赛尔吉·伊巴卡时,他们放弃了他。七年来,伊巴卡一直是雷霆队的核心球员,但在很大程度上走了下坡路,而奥拉迪波理论上是魔术队的未来。奥拉迪波在 2013 年 NBA 选秀中被选为第二顺位,在联盟的第一年是一名稳定的球员,他的球员效率评分为 13.6 ,投篮命中率为 51.4%,使用率为 24.4%。奥拉迪波在那个赛季的防守上也是一个怪物,创造了 2.8 个防守赢球份额和 1.71 的德雷蒙德评分。
简而言之,奥拉迪波的思路是正确的。他以你希望的方式生产你的新秀彩票选秀权。那么,为什么仅仅两年后,魔术队就要让他打包走人,因为这个大个子不能从外线投篮,也没有达到他 22 岁、23 岁和 24 岁时的水*?
我不会冒昧地知道魔术放弃奥拉迪波的全部原因,但我会猜测,当奥拉迪波准备进入他在联盟的第四个赛季时,有人认为奥拉迪波已经是他将要成为的球员;他已经展示了自己的能力,但还没有明显的进步。两年后的另一次交易,这次是印第安纳步行者,奥拉迪波度过了一个爆发的赛季,入选 2018 年全明星队,并带领步行者队进入季后赛。
当然,并不是每个选秀权都有这种跳跃,NBA 前台的工作就是正确评估谁会有更多的跳跃。但是我们如何做出这个决定呢?一个前第一轮选秀权在 NBA 的第二年比第二轮选秀权更有可能实现未来的飞跃吗?来个前 10 名的选秀怎么样?最高选秀权是否比第一轮中后期选上的人更有可能实现未来的飞跃?我们都认为自己知道这些答案,但是数据支持我们的信念吗?
当一个球员被选中时,他的选择本质上是对他在 NBA 成功可能性的评估;较高的选择者被认为比较低的选择者更有可能成功。这大体上是真的。如果你看看按选秀顺位分列的 PER(上场时间超过 1000 分钟的球员)分布;很明显,生产和草稿状态之间存在关系。
问题是,一旦一个球员在联盟呆了一段时间,并且表现稳定,不管他的表现如何,有没有办法预测他未来的成长?我们能想到奥拉迪波会在表演上有巨大的飞跃吗?魔术最*交易了前状元秀马克尔·富尔茨。有没有办法确定富尔茨能否东山再起?如果有,如何实现?线索是否在于他的年龄,选秀位置,统计的表现数据,他效力的球队?人们认为继续投资一个前 10 名的球员会更好,但从 20 多岁或 30 多岁的球员继续前进也许没问题。他们是正确的吗?让我们更深入地研究一下数据。
The distribution of WS/48 (Win Shares per 48 minutes) of each draft class going back to 2006.
上面你可以看看自 2006 年以来,每名至少打了 500 分钟的 NBA 球员的 WS/48(每 48 分钟的赢球份额)的分布情况。这些是小提琴图,表达了 WS/48 的分布,其中每个图的蓝色半部分显示了第一轮(前 30 名)选秀中选出的球员,橙色半部分显示了第二轮(第 31-60 名)选秀中选出的球员。每把小提琴代表一年,第一个图表显示 2006-2011 年的选秀课程,第二个图表显示 2012-2018 年的选秀课程。小提琴内部的白点各代表一名演奏者。如果你仔细观察,你会发现每把小提琴内有三条虚线。中间的线代表该特定吃水深度等级的 WS/48 中值,而上下虚线给出了该特定吃水深度年份数据的四分位数范围的界限。这些图表起初看起来可能不寻常或令人生畏,但是如果你把这些图翻转过来,它们可能看起来更熟悉一些,就像概率分布。
有什么跳出来了?首先,对于最*的草案,WS/48 的发行版正在减少。这意味着经验不足的玩家生产的 WS 更少。不奇怪。然而,值得注意的是,随着我们离 2006 年越来越远,离 2018 年越来越*,第二轮选秀权所拥有的分配份额也在增加。这是我们将来可以深入研究的事情。要更仔细地观察,请查看下表:
- 请注意,图像显示的是“DRAFT_YEAR + 1”。所以这里的 2019 指的是 2018 年选秀的球员,2018 指的是 2017 年选秀的球员等等
在 2014 年,2016 年,2017 年和 2018 年的选秀中,第二轮选秀权有 25-35%的分配份额,这意味着他们中更多的人在比赛,贡献和获得机会。此外,就 WS/48 而言,在过去三年中,第二轮选秀权的表现几乎与第一轮选秀权一样好。这种解释显然存在一些问题。样本量非常小,一些异常值如尼克斯队的米切尔·罗宾逊对数据有重大影响。但是,当查看任何一年的草案数据时,总是会有局限性,所以现在我们只看数据是什么。
如果你回顾一下 2006-2010 年,你会注意到*均来说,第二轮选秀权的 WS/48 和第一轮选秀权差不多。然而,样本中的首轮选秀权要多得多,大约是第一轮选秀权的五倍。也许第二轮选秀权只有在他们生产的情况下才会被保留,而第一轮选秀权会被给予更长的期限,因为他们认为未来会有回报?事实上,与第一轮选秀相比,第二轮选秀的 WS/48 标准差要低得多,当我们进入青少年选秀时,这种关系与第二轮选秀相反,表现出更多的差异。
但这仅仅是开始。这些数字让你一瞥组织可能如何评估他们的球员,他们认为谁是值得花更多时间发展的资产,谁是他们认为不值得未来的球员。我很想知道年龄、选秀位置和球队等因素对一名 NBA 球员未来的成功有多大影响。这些因素对改善有预测力吗?如果有,多少?
这是一系列帖子的第一部分,这些帖子将更深入地探讨 NBA 球队何时应该继续投资,何时应该从他们的球员名单上转移。希望这些帖子可以帮助我们更好地评估人才,并在辞职、交易和裁掉球员时做出更好的决定。
下一次,我们将看看哪些球队从他们的年轻人才中获得了最多的产量,正如下图所示的 2019 年二年级球员。
请随意查看这个博客的数据,位于 GitHub。
当主题建模是文本预处理的一部分时
原文:https://towardsdatascience.com/when-topic-modeling-is-part-of-the-text-pre-processing-294b58d35514?source=collection_archive---------14-----------------------
Photo credit: Unsplash
如何有效和创造性地预处理文本数据
几个月前,我们使用相对干净的文本数据集构建了一个基于内容的推荐系统。因为我自己收集了酒店的描述,所以我确信这些描述对我们将要完成的目标是有用的。然而,现实世界中的文本数据从来都不是干净的,不同的目标有不同的预处理方法和步骤。
NLP 中的主题建模很少是我在分析中的最终目标,我经常使用它来探索数据或作为一种工具来使我的最终模型更加准确。让我告诉你我的意思。
数据
我们仍然在使用我之前收集的西雅图酒店描述数据集,这次我把它变得更加混乱了。我们将跳过所有的 EDA 过程,我想尽快提出建议。
如果你读过我的上一篇文章,我相信你理解下面的代码脚本。是的,根据酒店描述文本,我们正在寻找与“西雅图市中心希尔顿花园酒店”(除了它自己)最相似的前 5 家酒店。
提出建议
dirty_hotel_rec.py
Figure 1
我们的模型返回上述 5 家酒店,并认为它们是与“希尔顿花园酒店西雅图市中心”最相似的前 5 家酒店。我敢肯定你不同意,我也不同意,先说为什么模型看这些描述会觉得它们很相似。
df.loc['Hilton Garden Inn Seattle Downtown'].desc
df.loc["Mildred's Bed and Breakfast"].desc
df.loc["Seattle Airport Marriott"].desc
发现什么有趣的东西了吗?是的,在这三家酒店的描述中确实有一些共同点,他们都有相同的入住和退房时间,并且他们都有相似的吸烟政策。但是它们重要吗?我们能仅仅因为两家酒店都是“无烟”就宣称它们是相似的吗?当然不是,这些不是重要的特征,我们不应该在这些文本的向量空间中测量相似性。
我们需要找到一种方法,通过编程安全地删除这些文本,同时不删除任何其他有用的特征。
主题建模拯救了我们。但在此之前,我们需要将数据转换成正确的格式。
- 将每个描述分成句子。因此,举例来说,希尔顿花园酒店西雅图市中心的整个描述将分为 7 个句子。
split_desc.py
Table 1
主题建模
- 我们将一起为所有的句子建立主题模型。经过几次实验,我决定有 40 个题目。
sent_topic_model.py
Figure 2
不算太坏,没有太多重叠。
以下关于如何显示每个主题中的热门关键词,以及如何找到每个文档中的主导主题的代码脚本,都是借用了这个优秀的教程。
- 为了更好地理解,您可能需要调查每个主题中的前 20 个单词。
top_20_words.py
我们将有 40 个主题,每个主题显示 20 个关键词。很难打印出整个表格,我将只展示其中的一小部分。
Table 2
通过盯着表格,我们可以猜测,至少话题 12 应该是我们想要忽略的话题之一,因为它包含了几个对我们的目的毫无意义的单词。
在下面的代码脚本中,我们:
- 创建文档-主题矩阵。
- 创建一个数据框,其中每个文档为一行,每列为一个主题。
- 每个主题的权重被分配给每个文档。
- 最后一列是该文档的主导主题,在其中它的权重最大。
- 当我们将这个数据框架合并到前面的句子数据框架时。我们能够找到每个主题在每个句子中的权重,以及每个句子的主导主题。
sent_topic.py
- 现在,我们可以直观地检查“希尔顿花园酒店西雅图市中心”的每个句子的主导主题分配。
df_sent_topic.loc[df_sent_topic['name'] == 'Hilton Garden Inn Seattle Downtown'][['sentence', 'dominant_topic']]
Table 3
- 通过盯着上表,我的假设是,如果一个句子的主导话题是话题 4 或话题 12,那么这个句子很可能是无用的。
- 让我们再看几个以话题 4 或话题 12 为主导话题的例句。
df_sent_topic.loc[df_sent_topic['dominant_topic'] == 4][['sentence', 'dominant_topic']].sample(20)
Table 4
df_sent_topic.loc[df_sent_topic['dominant_topic'] == 12][['sentence', 'dominant_topic']].sample(10)
Table 5
- 在查看了上面两个表格后,我决定删除所有以话题 4 或话题 12 为主导话题的句子。
print('There are', len(df_sent_topic.loc[df_sent_topic['dominant_topic'] == 4]), 'sentences that belong to topic 4 and we will remove')
print('There are', len(df_sent_topic.loc[df_sent_topic['dominant_topic'] == 12]), 'sentences that belong to topic 12 and we will remove')
df_sent_topic_clean = df_sent_topic.drop(df_sent_topic[(df_sent_topic.dominant_topic == 4) | (df_sent_topic.dominant_topic == 12)].index)
- 接下来,我们将把干净的句子连在一起进行描述。也就是说,使其回到每个酒店的一个描述。
df_description = df_sent_topic_clean[['sentence','name']]
df_description = df_description.groupby('name')['sentence'].agg(lambda col: ' '.join(col)).reset_index()
- 让我们看看“西雅图市区希尔顿花园酒店”还剩下什么
df_description['sentence'][45]
只剩下一句话,是关于酒店的位置,这是我所期待的。
提出建议
使用相同的余弦相似性度量,我们将根据清理后的酒店描述文本,找到与“西雅图市中心希尔顿花园酒店”(除了它自己)最相似的前 5 家酒店。
clean_desc_rec.py
Figure 3
不错!我们的方法成功了!
Jupyter 笔记本可以在 Github 上找到。周末愉快!
我们什么时候会看到第一波人工智能 IPO?
原文:https://towardsdatascience.com/when-will-we-see-the-first-wave-of-ai-ipos-8ab4ddda6657?source=collection_archive---------28-----------------------
我们已经看到 7 家人工智能公司以$1B+的价值退出。这是一波巨大 IPO 浪潮的第一个信号吗?为什么美国的 AI IPOs 很少?美国在人工智能统治地位的竞赛中落后了吗?
2008 年 7 月 10 日,苹果推出了 App Store,最初只有 500 个应用程序。此后不久,谷歌在 2010 年宣布了移动优先战略。从那以后,我们看到了一波大规模的移动应用 IPO:2012 年的 Evernote,2013 年的 Twitter,2014 年的 King(糖果粉碎背后的公司),2015 年的 Tinder,2016 年的 Snapchat 和 Line。
快进到 2017 年,谷歌首席执行官桑德尔·皮帅宣布了从移动优先到人工智能优先战略的转变。他后来补充说人工智能将比历史上一些最普遍的创新如火或电对世界产生更大的影响。两年后的今天,我们看到“ 7 家人工智能公司通过 IPO 或价值$1B+ 的并购退出——其中四家发生在过去两年里。”这是一波巨大 IPO 浪潮的第一个信号吗?
source: Bastiane Huang
有趣的是,尽管美国人工智能初创公司获得了创纪录的高资金,但我们看到较少的美国公司正在 IPO。这两起人工智能 IPO 的估值都超过了 1B: NIO 是一家中国电动自动驾驶汽车制造商。Mobileye 是一家以色列公司,生产摄像头和帮助汽车避免事故的软件。如果你用谷歌搜索“人工智能 IPO”,你会看到类似“中国人工智能初创公司旷视科技计划 IPO”的新闻以及“南韩的 JLK 检查要公开了。”但是在第一页没有提到美国的创业公司。
为什么美国的 AI IPOs 比较少?只是时间问题吗?还是美国在人工智能统治地位的竞赛中落后了?
source: CB Insights
美国在人工智能创业领域领先,但在 IPO 领域不领先。为什么?
答案是“绝对不会。”事实上,美国在人工智能创业领域处于领先地位:前 100 家人工智能创业公司中有 77 家来自美国。相比之下,只有 8 家中国公司上榜。此外,根据美国国家风险投资协会的数据,美国 965 家人工智能相关公司在今年前 9 个月筹集了 135 亿美元。美国人工智能初创公司有望在 2019 年打破融资记录。那么,为什么没有更多的初创公司申请 IPO 呢?
答案?收购!
人工智能初创公司的收购数量在 2016 年翻了一番,在随后的几年中*均增长了 46%。美国科技巨头正在主导人工智能初创公司的收购:根据 CB Insights 的数据,苹果(迄今已收购 20 家初创公司)、谷歌(14 家)、微软(10 家)、脸书(8 家)、英特尔(8 家)和亚马逊(7 家)是人工智能初创公司最积极的收购者。另一方面,绝大多数收购方(431 家)只收购了一家 AI 公司。
Number of artificial intelligence (AI) start-up company acquisitions worldwide from 2010 to 2019 source: Statista (as of August 31, 2019)
CB Insights
但更有趣的是,当你看到这些科技巨头市值的变化时:过去几年来,尤其是自 2017 年以来,价值大幅增加,当时你开始看到人工智能收购的激增。这解释了为什么我们在美国以外的地方看到了更多的人工智能 IPO。这里的人工智能初创公司更有可能在 IPO 之前被收购。
2013 年,苹果、微软、谷歌和英特尔已经跻身《T2》全球十大最有价值公司之列。但直到最*几年,它们与标准普尔 500 指数(^GSPC,上面的灰色线)的差距并不大。科技巨头在过去几年里扩大了他们的差距。
这对初创公司和其他公司意味着什么?
在过去,每次有技术创新,我们都会看到重大的行业洗牌。小公司颠覆了现有公司,推出了手机、个人电脑、数码照片和流媒体视频。
但是这次不一样!
谷歌、脸书、苹果和亚马逊等科技巨头比任何人都准备得更充分。他们在数据、资本和人才方面拥有优势,不仅可以击败创新型创业公司,还可以颠覆传统行业。其中,零售和 CPG 的人工智能收购数量最多(自 2010 年以来共 67 起),其次是媒体和娱乐、医疗保健、金融和保险以及运输和物流。
到目前为止,谷歌、苹果和微软都收购了 10 多家人工智能初创公司。最*,传统企业开始慢慢做出反应:罗氏收购了熨斗健康公司。耐克收购了人工智能库存管理初创公司 Celect。以及麦当劳收购个性化*台 Dynamic Yield。
让传统行业参与者更加棘手的是,人工智能是隐形的。有了以前的技术创新,比如互联网和移动应用,我们可以很容易地分辨好的/创新的产品和坏的产品。但用 AI 产品做到这一点并不总是那么容易。例如,你真的不知道在你的大楼里巡逻的安全机器人是由人工智能完全自主供电还是由人类远程控制。
尽管大肆宣传,但事实是市场上还没有那么多人工智能产品。超过 80%的公司都在研究人工智能,但是他们中的大部分仍然试图找出能够创造实际价值的用例。我们只是最*才开始看到人工智能机器人部署在现场。风险投资公司 MMC 声称 40%的欧洲人工智能初创公司实际上并不使用人工智能。外人很难知道到底发生了什么。
毫无疑问,人工智能将对各行各业产生巨大影响,但“人工智能作为一种产品”仍处于起步阶段。现在断言第一波人工智能 IPO 可能还为时过早。但很明显,传统的现任者这次面临着比以往任何时候都多的挑战,不仅来自灵活的初创公司,也来自人工智能技术巨头。如果你正在为一家传统公司工作,并试图采用人工智能,那么专注于你可以利用你的领域专业知识并创造实际价值的地方。“AI 是新电。它将改变每个行业,创造巨大的经济价值,”吴恩达说。但是,你不一定要成为一个电力公司来开发价值。你只需要知道如何将技术应用到你的优势上。
如果你想看更多这样的文章,请点击这里!
Bastiane Huang 是 OSARO 的产品经理,OSARO 是一家总部位于旧金山的初创公司,致力于开发软件定义的机器人技术。她曾在亚马逊的 Alexa 小组和哈佛商业评论以及该大学的未来工作倡议中工作。她写关于人工智能、机器人和产品管理的文章。跟着她到这里 。
当你的神经网络不知道:一个贝叶斯方法与 Keras
原文:https://towardsdatascience.com/when-your-neural-net-doesnt-know-a-bayesian-approach-with-keras-4782c0818624?source=collection_archive---------11-----------------------
深度学习中模型不确定性的表示
Photo by Rob Schreckhise on Unsplash
每个试图拟合分类模型并检查其性能的人都面临着这样的问题:不仅要验证 KPI(如准确度、精确度和召回率),还要验证模型对它所说的内容有多有信心。用来验证预测可靠性的最直观的工具是寻找各种类别的概率。
概率越高,可信度越高。这并不意味着更高的准确性。很有可能出现错误分类。
我们现在所做的是从我们拟合的模型中提取最佳结果,研究概率分布,并试图在我们的神经网络被迫做出决定时限制错误。我们以两种方式完成这项任务:
- 验证数据概率的经典研究,目的是建立阈值以避免错误分类。
- 最*的一种方法是基于贝叶斯理论的概率推断,在神经网络框架内有一个“排列,称为蒙特卡洛退出,它几乎免费提供不确定性估计,如本文中的所示。
数据
我在 Kaggle 上找到了这个实验的数据。我选择了一个有趣的数据集,其中包含了 10 种猴子的图片。数据集由两个文件组成,训练和验证。每个文件夹包含 10 个子文件夹,标记为 n0~n9,每个对应一个物种形成 维基百科的猴子进化树 。
Image distribution of monkey species among train and validation folders
这些图像质量很好,并且在各个类别之间保持*衡。
Samples of monkey images from each species
我们用 Keras 'ImageDataGenerator '装载它们,在火车上执行数据扩充。在此过程中,我们存储 10%的训练集作为验证,这将有助于我们尝试按照标准方法建立概率阈值。根据本帖的范围,我们限定了目标类,只考虑前五种猴子。
模型
我们想要使用的神经网络结构是由简单的卷积层、最大池块和漏失构成的。最后一个是正则化训练的基础,稍后当我们用贝叶斯过程解释神经网络的不确定性时会派上用场。
inp = Input(shape=SHAPE+tuple([3]))x = Conv2D(32, (3, 3), activation='relu')(inp)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Conv2D(32, (3, 3), activation='relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Dropout(0.5)(x, training = True)x = Conv2D(64, (3, 3), activation='relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Conv2D(64, (3, 3), activation='relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Dropout(0.5)(x, training = True)x = Flatten()(x)
x = Dense(512, activation='relu')(x)
x = Dropout(0.3)(x, training = True)out = Dense(5, activation='softmax')(x)model = Model(inp, out)
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
在训练之后,测试的准确度在 0.79 左右,迫使我们的模型对所有进行分类。
标准阈值的不确定性
我们介绍的第一种方法是基于对验证集上计算的概率的简单研究。这个过程使我们能够知道我们的神经网络何时失败,以及每类错误的置信度。通过这种方式,我们创建了与模型的最终预测结合使用的阈值:如果预测的标签低于相关类别的阈值,则我们拒绝进行预测。
我们的验证由 10%的训练图像组成。为了有足够的概率分布来建立有意义的阈值,我们在验证时适当地操作数据扩充:在预测阶段,每个图像被扩充 100 倍,即每个样本多 100 个概率。
在使用我们的扩充数据的预测步骤结束时,我们有 3 种不同的分数分布:每个类别的概率分数、错误分类样本的概率分数(在每个类别中)、正确分类样本的概率分数(在每个类别中)。
Probability Distributions on validation data with augmentation
我们将每个类别的三个引用分布中的第一个作为第 10 个百分位数来计算阈值。预测概率低于能力阈值的测试图像被标记为“未分类为”。抑制未分类的图像(共 20 张),精度从 0.79 提高到 0.82。
贝叶斯理论的不确定性
**贝叶斯概率理论提供了基于数学的工具来推理模型的不确定性,但这些通常伴随着令人望而却步的计算成本。令人惊讶的是,可以在不改变任何东西的情况下,将最*的深度学习工具转换为贝叶斯模型!解决方案是使用神经网络中的漏失作为贝叶斯*似。
具体来说,在每个隐藏层之后应用随机漏失,因此模型输出可以*似地视为从后验预测分布生成的随机样本。因此,模型的不确定性可以通过位置指数或其他从几次重复的预测中获得的统计数据来估计。这个过程特别吸引人,因为它易于实现,并且可以直接应用于任何现有的神经网络而不会损失性能。
给定一个新的输入图像,我们激活 dropout,将其设置为 0.5(在训练结束时由 Keras 关闭)并计算预测。当我们重新激活辍学生时,我们改变了我们的神经网络结构,结果也是随机的。很明显,如果我们对每个测试样本重复预测 100 次,我们将能够建立每个类别中每个样本的概率分布。都可以用一些丰富多彩的情节来澄清。
examples of Probability Distributions on test images
在这一点上,评估很容易…如果在多个概率样本中,该图像的中值概率同时高于其他中值(上图中的红色虚线)并且至少为 0.5(上图中的绿色虚线),我们希望神经网络输出一个猴子物种作为推荐。否则,我们将该图像标记为未分类为的。抑制未分类的图像(共 16 张),精度从 0.79 提高到 0.83**
摘要
在这篇文章中,我们评估了两种不同的评估神经网络可信度的方法。一种标准的方法是保留部分数据作为验证,以便研究概率分布和设置阈值。这是每种型号的通用程序。另一种方法建议应用随机退出,以建立概率分布并研究它们的差异。这两种技术都有助于避免错误分类,放松我们的神经网络,在没有太多信心的时候做出预测。
查看我的 GITHUB 回购
保持联系: Linkedin
参考文献
贝叶斯*似下的辍学:表现深度学习中的模型不确定性:亚林·加尔,邹斌·格拉马尼
现代艺术中的女性都去哪了?
原文:https://towardsdatascience.com/where-are-all-the-women-in-modern-art-7c5fd08ea1cd?source=collection_archive---------20-----------------------
在最精英的艺术机构中,艺术策展严重偏向于支持男性代表。1985 年,一群匿名的美国女艺术家“游击队女孩”在纽约市张贴了 30 张不同的海报。事实上,这个团体是在现代艺术博物馆(MoMA)举办展览时成立的,在该展览中,女性艺术家的比例不到 10%。他们的工作试图激励“博物馆、经销商、策展人、评论家和艺术家,他们觉得这些人对……主流展览和出版物排斥女性和非白人艺术家负有积极责任”。
他们是从哪里得到这 5%的数据的?他们从博物馆报告和杂志中创建了自己的数据集。那是* 30 年前的事了,我们可以利用今天可用的数据做得更好。我们可以从激发游击队女孩行动号召的博物馆开始分析。
自 1929 年以来,现代艺术博物馆已经获得了超过 200,000 件艺术品,其中 138,567 件已被编入 Github 上发布的数据集。
与其他博物馆的开放数据集不同,如泰特美术馆(最*更新于 2014 年)和库珀休伊特美术馆 (2016 年),MoMA 每月自动更新其数据。MoMA 是世界上最大和最有影响力的现代艺术博物馆之一。其收藏侧重于现代和当代艺术,包括素描、版画、摄影、建筑、设计、电影、绘画、雕塑、媒体和表演等类别。
令人惊讶的是,尽管该数据集自 2015 年以来一直在发布,但只有少数个人和团体对其进行了轻度探索。纽约现代艺术博物馆的 2229 幅画作缩小了范围;研究员 Florian krutli 发表了高水*的时序分析;其他艺术爱好者针对他们提出的特定问题制作了一次性图表(例如:现代有多现代?MoMA 保鲜】。其他人甚至创建了 Twitter 机器人,使用来自 MoMA 的数据来创建假设的艺术描述。
那么,自 20 世纪 80 年代以来,情况有所改善吗?或者,正如批评家和学者继续争论的那样,几乎没有什么变化?
这些数据来自两个独立的 CSV 文件:第一个包含艺术品的基本元数据,第二个(也小得多)包含艺术家的人口统计信息。我的分析侧重于 artworks.csv 文件,但我必须合并数据集,以包括来自 artist.csv 的艺术家性别信息。快速查看合并的数据集有 114,372 件个人艺术作品,其中 13.64%由女性艺术家创作。假设这一比例适用于尚未编入开放数据库的 90,000 多件作品,鉴于时间的推移,这并不能很好地说明现代艺术博物馆在性别*等方面取得的进展。
我想从历史上了解收购趋势,特别是一件新作品被现代艺术博物馆收购需要多长时间。使用 seaborn 散点图,我可以很快地按性别分组。这张图表强调了这个系列是多么的男性化。我们看到,随着时间的推移,女性艺术家对艺术的获取有所增加。
在创造年份和获得年份之间也有明显的滞后,但不清楚这是否在性别之间有所不同。为了回答这个问题,我创建了一个新的特性——艺术时代,方法是从获得年份中减去创造年份。然后,我为交叉列表创建了艺术时代箱。我们可以看到一个轻微的趋势:大部分女性艺术品(68%)是在创作后 20 年内获得的,而男性艺术家的这一比例为 53%。均值柱状图更清楚地说明了这一点:男性艺术家*均需要 25 年才能获得自己的艺术作品,而女性艺术家*均需要 17.5 年。
博物馆收购哪些类别的艺术品有区别吗?该数据集为我们提供了三个日益细化的艺术品类别选项:部门、分类和中等。我选择了 Department,因为它对探索性分析所必需的 7 个最广泛的艺术类别进行了高度概括。最受男性和女性艺术家欢迎的类别是绘画和版画。
收购趋势如何按艺术类别细分?我们在下面的两个图表中看到,绘画和印刷以及建筑和设计在两个分组中都占主导地位,因此很难看出较小类别的趋势。在男性艺术家中,我们看到了 20 世纪 60 年代的两年,当时 MoMA 可能通过礼物捐赠获得了大量收藏。我们也看到类似的情况,但女性艺术家的收购数量更大,几十年来收购数量越来越稳定。
这些艺术品的创作日期呢?我们再次看到,80 年代后创作的大量绘画和版画,无论男女,都有着相似的总体趋势。建筑与设计小组看起来略有不同:女性艺术家的收购作品在 20 世纪 20 年代和 30 年代急剧上升,而男性艺术家的收购率在 20 世纪初和 70 年代后期飙升。
游击女孩和他们那个时代的其他激进组织并不仅仅关注性别*等。他们也对种族*等感兴趣。数据集为我们提供了艺术家的国籍,其中有 125 个。国籍并不能很好地代表种族,所以我想回答的问题需要稍微修改一下:MoMA 有多美国化?
为了做到这一点,我创造了一个新的功能,将美国创作的艺术作品与非美国创作的艺术作品分开。令人惊讶的是,我们看到外国出生的艺术家创作的艺术品主导了博物馆的收藏。
在第一张图中,我们看到了与性别细分分析相似的趋势。在艺术品被收购之前有大约 20 年的滞后期。
这两个群体最受欢迎的作品是绘画和版画,其次是摄影、建筑和设计。
数据集非常丰富,我们还可以问更多的问题:
- 捐赠者:他们是谁?它们在捐款规模、喜欢的艺术家类型(包括性别和国籍)方面有所不同吗?这尤其困难,因为有 6722 个独特的捐赠者要重新分类到更小的箱中。
- 尺寸:数据集为每件艺术品提供尺寸和其他细节。艺术家们在艺术项目的实际范围上是否因性别、国籍或年龄而有所不同?
- 年龄:我们可以计算出艺术家创作一件艺术品的年龄,艺术创作是否在人生的某个时期集群?这是否因性别而异?
最好的客户在哪里?SQL 和 Python 中的营销分析
原文:https://towardsdatascience.com/where-are-the-best-customers-marketing-analytics-in-sql-and-python-a20ca16968ea?source=collection_archive---------15-----------------------
我从事营销工作,所以我想探索如何使用编程工具来探索客户数据,并计算关键的营销指标,如客户终身价值(LTV)和每获得一个客户的成本(CAC)。
这些指标对于理解和跟踪每个营销渠道至关重要。这些指标可能因渠道而异(例如,社交媒体的印象和参与度、电子邮件的打开率和点击率等),但对于企业来说,这些指标都很有价值。
通过查看这些数据点,您可以根据它们进行排序和筛选,从而根据您获得的客户数量(CTR)和每位客户获得的客户数量(CAC)来确定给定渠道的绩效。强大的东西!
让我们开始吧。
点击这里查看回购,如果你喜欢的话,可以阅读/02_code
中的 SQL 脚本和笔记本。
数据以.csv
格式保存在/01_data
文件夹中。首先,您需要在您选择的 SQL 客户机中创建一个数据库(我使用 MySQL)。如果你不确定,你可以在这里阅读如何做到这一点。
一旦你拥有并正在使用数据库(use [database_name]
,你需要将.csv
文件导入数据库。我使用了 MySQL 的导入表向导,它很适合这个数据集,因为它很小(尽管它对于大的数据表效率不高)。
为了熟悉数据库及其表,查看模式或增强的实体关系(EER)图是很有用的:
Table schema for the different tables in this data base
在这种情况下,它没有那么有用,因为这些表之间没有关系。但是,如果您有一个更复杂的数据库,有许多不同的关系,您会发现自己经常要返回到模式中去整理东西。
继续尝试这里的每一段代码,看看在您的控制台中返回了哪些计算/列。在 SQL 中,查询的结尾由一个;
分隔。
Code for calculating each metric
接下来,启动 Jupyter 笔记本,用第一个电池做好准备。如果您从 repo 中的位置运行笔记本,则不需要更改目录。为此设置的代码如下:
然后,您可以使用下面的代码直观地显示每个客户每月花费的总额以及他们每月购买的数量:
Code for plot of purchase amount (in USD) against number of purchases per month
Purchase amount (in USD) against number of purchases per month
这里没有很强的相关性,但观察这些点如何下落并确定是否有关联仍然很有趣。知道没有关联和发现有关联一样有价值!
这是令人难以置信的强大的东西,因为你可以看到最大数量的廉价获取客户来自什么营销渠道。接下来我将展示 SQL 代码的输出。
Table of conversions, ordered by conversions in descending order.
在这种情况下,尽管 Twitter 活动的印象较低,但它带来了更多的点击率和最多的转化。它的人均消费成本最低,为 15.09 美元。凭借 34,448 美元的 LTV,这是一笔非常值得的投资!Twitter 有些事情进展顺利。
您可以很快看到这会产生多大的影响,以及如何利用它来推动业务和营销决策和战略。当你有疑问时,看看数据吧!
喜欢你读的吗?我还有多篇文章。
想看更多的编码项目?我也有更多的那种。
如果你觉得这篇文章有用或者学到了新的东西,可以考虑捐赠任何数量的钱来支付给下一个学习者!
感谢阅读和快乐编码!
奢侈的生活
我把损失值放在哪里了?
原文:https://towardsdatascience.com/where-did-i-put-my-loss-values-acf6264ea347?source=collection_archive---------23-----------------------
如何将 PyTorch 中训练深度学习模型时生成的指标和键值添加到您的检查点。
保存和加载 PyTorch 模型非常简单直观。
保存模型权重:
torch.save(model.state_dict(), PATH)
负载模型重量:
model = TheModelClass()
model.load_state_dict(torch.load(PATH))
这个 PyTorch 教程还解释了如何保存优化器状态和其他关于这个主题的好技巧。
但是其他参数呢?
上面的保存和加载示例是加载您的模型的好方法,以便在测试时使用它进行推理,或者如果您使用预训练的模型进行微调。
现在,假设你在一个非常大的数据集上训练一个非常深的模型,这将花费很多时间,如果你使用云实例,这也需要很多钱。一个省钱的好办法是使用现货实例,这样会有很大的折扣。在训练过程中,您可能会丢失实例。仅仅使用模型权重和优化器状态来恢复训练是不够的。您还需要测量的所有指标,例如每个集合的损失和精度值、验证集合的最佳 top-k 精度、到停止点为止的时期数、样本数或迭代数,以及您跟踪的任何其他特殊值。
为了在您恢复培训后继续报告学习进度曲线,以及基于停止改进的验证损失等其他动态决策,这些都是必需的。
完全恢复一个学习实验也很重要,因为它具有可重复性,发表一篇论文和一个代码库。此外,能够从收敛曲线上的任何“点”开始,在改变或不改变任何超参数的情况下继续学习过程对于新任务或领域的研究是至关重要的。
我正在使用 PyTorch,处理大型视频数据集,例如 Kinetics 。在为我的研究寻找完整的检查点解决方案的过程中,我开始为 PyTorch 开发这样的检查点处理程序,最*发布了 Python 包索引(PyPI)的一个包:https://pypi.org/project/pytorchcheckpoint/
和一个 GitHub 库:
https://github.com/bomri/pytorch-checkpoint。
为了安装软件包:
pip install pytorchcheckpoint
然后,在培训代码开头的某个地方启动课程:
from pytorchcheckpoint.checkpoint import CheckpointHandler
checkpoint_handler = CheckpointHandler()
现在,除了保存您的模型权重和优化器状态之外,您还可以在学习过程的任何步骤中添加任何其他值。
例如,为了节省您可以运行的类的数量:
# saving
checkpoint_handler.store_var(var_name='n_classes', value=1000)# restoring
n_classes = checkpoint_handler.get_var(var_name='n_classes')
此外,您可以存储值和指标:
- 每套:培训/验证/测试
- 对于每个时期/样本/迭代次数
例如,每个历元的训练集和验证集的最高 1 精度值可以通过使用以下来存储:
# train set - top1
checkpoint_handler.store_running_var_with_header(header=’train’, var_name=’top1', iteration=0, value=80)
checkpoint_handler.store_running_var_with_header(header=’train’, var_name=’top1', iteration=1, value=85)
checkpoint_handler.store_running_var_with_header(header=’train’, var_name=’top1', iteration=2, value=90)
checkpoint_handler.store_running_var_with_header(header=’train’, var_name=’top1', iteration=3, value=91)# valid set - top1
checkpoint_handler.store_running_var_with_header(header=’valid’, var_name=’top1', iteration=0, value=70)
checkpoint_handler.store_running_var_with_header(header=’valid’, var_name=’top1', iteration=1, value=75)
checkpoint_handler.store_running_var_with_header(header=’valid’, var_name=’top1', iteration=2, value=80)
checkpoint_handler.store_running_var_with_header(header=’valid’, var_name=’top1', iteration=3, value=85)
保存和加载完整的检查点只需一行代码:
# save checkpoint
checkpoint_handler.save_checkpoint(checkpoint_path=path, iteration=25, model=model)# load checkpoint
checkpoint_handler = checkpoint_handler.load_checkpoint(path)
您可以查看 py torch-check pointREADME以获得更多有用的示例。
所以下次你开始训练的时候,确保你手头有这些损失值以备不时之需。
二元交叉熵损失函数从何而来?
原文:https://towardsdatascience.com/where-did-the-binary-cross-entropy-loss-function-come-from-ac3de349a715?source=collection_archive---------4-----------------------
博文补充部分" 无非 NumPy:理解&从零开始用计算图创建二分类神经网络
二元分类提出了一个独特的问题,其中:
- 每个例子( x , y )都属于 两个 互补类、
- **每个示例相互独立(即一个示例的结果不会影响另一个示例的结果)并且,
- 所有生成的示例都来自相同的底层分布/过程(即,如果我们为“猫对非猫”检测创建数据集,那么我们输入神经网络用于训练“猫对非猫”的所有示例都应该来自相同的数据集,而不是来自不同的不相关数据集,例如“狗对非狗”的数据集)。
在统计学和概率论中,属性 2 和 3 统称为 i.i.d(独立同分布)。I . I . d .假设有助于使许多计算简单得多。
此外,我们只需要预测正类即p(y = 1 | x)=p̂因为负类的概率可以从中导出即p(y = 0 | x)= 1-p(y = 1 | x)=1-p̂。
Fig 1. Piecewise probability expression
一个好的二进制分类器应该产生一个 高 值的当例子有一个正标签( y=1 ) 。另一方面,对于一个负标签的例子( y=0 ),分类器应该产生一个 低p̂的值。 换句话说:**
- 最大化 p̂ 当 y=1 和
- 最大化 1-p̂ 当 y=0 时。
让我们看看如何将这种直觉结合成一个单一的表达:
Fig 2. Bernoulli Distribution expression
原来我们想出来的单行表达式,在上图中,叫做伯努利分布,计算它为单个数据点叫做 伯努利试验 。我们需要最大化伯努利分布 对于每一次试验,我们该如何做呢?这很简单,回想一下你的高中时代,任何凸函数(u 形函数)的最大值(或最小值)都出现在 1ˢᵗ导数等于零的点上。
Fig 3. At min/max of a function, the derivative is zero
使用 伯努利分布 表达式及其导数的计算在其当前形式下可能会有点麻烦,更不用说小值的乘法和幂运算可能会在数值上不稳定,并可能导致数值溢出。幸运的是,(由“* log ”表示,而不是“ln”)可以在这里帮到我们。***
Fig 4. Taking log of Bernoulli Distribution
请注意,在将自然对数应用于伯努利分布后,我们将表达式简化为概率对数的总和。此外,请注意,这个简化的表达式非常类似于二元交叉熵损失函数,但符号相反。为了通过数值方法达到伯努利分布 的 对数的最大点(即朝着最优点的方向迭代移动),我们需要执行 【梯度上升】 ,因为对数函数的曲线向上弯曲( 图 4 ),即凹形 。 在神经网络中,我们更喜欢用 梯度下降 而不是 上升 来寻找最优点。我们这样做是因为神经网络的学习/优化被设定为一个"损失最小化"问题,所以这是我们将负号添加到伯努利分布* 的 对数的地方,结果是二元交叉熵损失函数:***
Fig 5. Taking negative of the log of Bernoulli Distribution
注意最大化伯努利分布的对数与最小化伯努利分布的负对数相同。*** 最小点和最大点出现在同一点,现在我们可以很容易地应用梯度下降,沿着曲线向下移动到最佳点。*
使用一个叫做 最大似然估计(MLE) 的概念,我们可以扩展伯努利分布,得出二元交叉熵成本函数。回想一下,对于单个数据点,我们将最大化一次伯努利试验,对于多个数据点,我们将最大化多次伯努利试验的乘积。**
考虑以下示例,其中我们有两个分类器 A 和 B,它们对三个I . I . d .示例进行概率预测:
- 分类器-A : P(X₁),P(X₂),P(X₃) = 0.7,0.8,0.9
- 分类器-B : P(X₁),P(X₂),P(X₃) = 0.8,0.8,0.8
那么对于我们的三个例子 X₁,X₂和 X₃,哪个分类器更有可能是更好的分类器呢?
根据 MLE,具有最高概率乘积的分类器可能是更高级的分类器。让我们检查一下:
- 分类器-a:p(x₁)×p(x₂)×p(x₃)= 0.7×0.8×0.9 = 0.504
- 分类器-b:p(x₁)×p(x₂)×p(x₃)= 0.8×0.8×0.8 = 0.512
所以分类器-B 是 更可能是 更好的分类器。
将此概念应用于多个独立伯努利试验(具有多个独立伯努利试验的分布被称为* 二项式分布 )并最大化数据集/批次中每个【m】示例的概率,我们得到:*
Fig 6. The Likelihood function
当前形式的 似然 函数容易因为多个乘积而出现数值溢出。所以我们将改为取似然函数的 自然对数。
Fig 7. Log of the likelihood function
回想一下,最大化一个函数与最小化该函数的负值是一样的。
Fig 8. The negative Log-likelihood function of the Bernoulli Trails
由于 缩放函数不会改变函数的最大值或最小值 点(例如, y=x 和 y=4x 位于 (0,0) 处),所以最后,我们将负对数似然函数除以示例总数( 原来是我们一直在用的二元交叉熵(BCE)代价函数。
Fig 9. Binary Cross-Entropy Function is Negative Log-Likelihood scaled by the reciprocal of the number of examples(m)
最后,我们假设基础数据服从伯努利分布,这使得我们可以使用最大似然法并得出一个合适的成本函数。 数据的这种假设/知识在贝叶斯统计中称为“先验”。
如有任何问题,请随时在Twitter@RafayAK上联系我,并查看“二元分类上的其余帖子。
*
If you enjoyed it!*
你在数据科学分布中处于什么位置?
原文:https://towardsdatascience.com/where-do-you-fall-on-the-data-science-distribution-d289b8de6970?source=collection_archive---------29-----------------------
你有没有过这样的感觉:你毁了一次求职面试,最终没有得到这份工作。或者完全炸毁一个技术屏幕并仍然进入下一轮怎么样?你并不孤单,招聘标准充其量是令人困惑的,但它仍然回避了一个问题:你如何知道与你的同行相比,你表现得有多好?
本周单词是校准。招聘人员、面试官和公司使用校准来描述他们在理解和优化面试漏斗方面的匹配程度。这是我一个沮丧的老同事的例子。
我的同事 Bob 是 X 公司的产品经理,他正在通过外部招聘机构招聘工程师。Bob 感到沮丧的是,招聘机构发送的工程候选人中只有 10%通过了技术面试。在这种情况下,招聘机构没有按照公司和 Bob 的标准进行校准,不了解 X 公司在他们的候选人身上寻找什么信号。他们也可能在最初的电话筛选中不够努力,不了解候选人背景的哪些部分不适合这个角色。
在面试提问中,我们发现招聘的概念有点令人着迷。每天都有一名数据科学家在一家公司接受面试,面试问题应该是通过噪音检测信号,这是一种衡量谁将成为高效员工、谁不会的方法。可以想象,这个过程并不总是 100%准确。即使前面例子中的招聘机构只送来了出色的候选人,他们以优异的成绩通过了每一次面试,面试仍然可能有缺陷,因为面试可能太容易了,潜在地导致最终糟糕的聘用。
我们有兴趣在数据科学家中测试一些与我们自己的校准相关的东西。本周,我们从科技公司收集了八个面试问题,涵盖了数据科学的许多不同主题,并将其纳入了一个多项选择和自由形式的测验。测验应该不到 20 分钟,在测验结束时,在我们收到足够多的结果后,我们将通过电子邮件向您发送您的分数,以及与参加测试的其他数据科学家相比,您在该分布中的排名如何。
这对你有什么好处?如果我们的测验足够准确,假设没有其他人作弊或在测验中花费异常长的时间,你将了解自己与参加测试的其他数据科学家相比的排名。
两周后,我们将通过另一封每周邮件跟进测试发行版的结果。我们真正想知道的是,小测验中的面试问题在多大程度上分散了结果的分布?我们的测试是不是太简单了,我们会看到*均 90%左右的准确率,还是测试太难了?
在这里试试我们的 !
有兴趣在下一次数据科学面试中脱颖而出吗? 退房面试查询 !
在我的博客中有更多类似的数据科学故事。
我降落的地方
原文:https://towardsdatascience.com/where-i-landed-a569b4d0182d?source=collection_archive---------37-----------------------
【也是自网络以来最大的商业革命】
一年多前,我在这里写了关于“我的虚拟现实创业公司的生与死”,并被我得到的回复震惊了。其中一封电子邮件让我见到了一位真正的摇滚明星,并向他演示了我们的*台:进步摇滚乐队的乔恩·安德森,是的!
通过我们的虚拟现实软件,让他以身临其境、互动和社交的方式体验他正在制作的新专辑中的,这是一种荣誉和激动。
Legendary rockstar, Jon Anderson (right) in Ethereal, together with rockstar 3D artist, Adrian Ludley (left)
尽管如此,我还是在去年 4 月关闭了 Ethereal,正如我的帖子所说,我开始思考自己的下一步。
过去的经验告诉我,寻找新机会的最佳第一步是环顾四周,看看地*线上是否有任何技术“大浪”。你看,我过去有幸骑过其中的两辆。1994 年,当我在硅谷开始职业生涯时,我在正确的时间和正确的地点发现网络是一个真正巨大的浪潮,并在硅图形公司兴致勃勃地驾驭它。2007 年,在 Plaxo,我乘着社交网络的浪潮取得了巨大的成功。
去年,我环顾四周,很明显,一个巨大的浪潮已经形成,不是在远处,而是在我周围:人工智能(AI)。我对人工智能超级明星吴恩达的这句话产生了共鸣,“就像 100 年前电力改变了一个又一个行业一样,我认为人工智能现在也会这样做。”像电那么大的事?算我一个!
所以我去寻找需要 CMO 的早期人工智能软件初创公司。一路上,我和老朋友葛瑞格·桑斯在科斯塔诺阿风险投资重新取得了联系。事实证明,他的一家投资组合公司正在对话式人工智能和消息传递的交叉领域做一些非常有趣的事情。(不止一个,而是两个大浪!)而且他们没有合适的营销主管。
在被介绍给首席执行官马希·德·席尔瓦(Mahi de Silva)的几天内,我开始向他们咨询(这是一个潜在员工了解团队和公司的好方法,反之亦然)。令我高兴的是,第一个项目是营销人员的梦想:为公司想出一个新名字(以及一个新标志)。
幸运的是,这两个项目和随后的一系列项目都很顺利,我最终被团队、市场机会、技术和牵引力所折服,最终我跳上了船,现在我就是 CMO。公司是 Amplify.ai 。(顺便说一句,我很惊讶也很高兴我们能用几千美元买下那个域名,考虑到“放大人类的努力”对人工智能的故事是多么重要!)
在深入讨论我们要做的事情之前,请允许我设置一些更广泛的背景。当我乘坐我的第一个大浪时,我有一种深刻的,发自内心的感觉,网络将会改变,嗯,一切。当我们在 1995 年 1 月推出 WebFORCE 时,我们在《华尔街日报》、《连线》和许多早已过时的技术行业印刷出版物上刊登了整版广告,宣布引入“自 800 号码以来最大的商业革命”。
“Introducing the biggest revolution in commerce since the 800 number”
事后看来,我们做到了。事实上,自从免费电话号码在全国范围内消除了电话互动的摩擦以来,网络确实成为企业与潜在客户和客户互动方式的最大变化。在这个过程中,网络给我们带来了数字化的、自助式的、即时的信息访问,在这个过程中,我们越来越不能容忍交互式语音应答系统和穆萨茨式的等待。
快进到现在。现在是 2019 年,消息传递已经赢得了数字通信渠道战争。Facebook Messenger、WhatsApp 和其他通讯应用是人们相互沟通的主要数字方式,也越来越成为人们喜欢与购买产品和服务的公司沟通的方式。在使用方面,短信不仅仅让电话和电子邮件黯然失色;据 Business Insider 报道,消息传递甚至已经超过了社交网络!(有趣的是:在脸书以 190 亿美元收购 WhatsApp 大约一年后,即时通讯超过了社交。)
Messaging has overtaken phone, email, and even social networking! [Source: BI Intelligence, 2017]
这对各种规模和类型的 B2C 企业都有重大影响。忽略消息传递的代价会越来越高。对于中小型企业来说,让一个人来回复入站消息可能是可行的。但是对于大品牌来说,没有一种经济的方法可以雇佣人来实时回应潜在客户和顾客的每一个询问。
这就是 Amplify.ai 的用武之地。两年来,我们一直在开发业界第一个也是唯一一个企业级的“人工智能驱动的互动*台”,以在超人的规模上实现所有“对话表面”之间持久、个性化、基于消息的互动。我们让营销和客户支持团队能够在整个客户旅程中拥有即时有效的自助交互,仅在必要时移交给人工。
基于消息传递的“对话式商务”是真正的游戏规则改变者。除此之外,它为数字营销人员提供了一个新的渠道,可以看到 80%以上的打开率!我认为我们正在看的是自网络以来商业领域最大的变化。该领域的另一家公司 LivePerson 的首席执行官在最*的收益电话会议上提出了一个令人信服的案例,即对话式商务是一个价值 2000 亿美元的市场机会!
在过去的一年里,我们已经证明了这种新的消费者参与方式能够大规模发挥作用。代表我们的客户,我们的人工智能驱动*台已经处理了全球超过 1.5 亿消费者的超过 20 亿次交易。现在,它每秒钟(*均)捕捉、评分并采取行动 60 次新的消费者参与!我们只是在第一局。
正如你们所知,我对我的硅谷之旅的下一个篇章感到非常兴奋。感谢您的关注!
我应该在哪里停车?!
原文:https://towardsdatascience.com/where-should-i-park-29e8da95265a?source=collection_archive---------35-----------------------
使用 NVIDIA RAPIDS 挖掘西雅图停车数据
“Seattle from Kerry Park” by Tom Drabas
在西雅图开车正迅速变得与在旧金山、硅谷或洛杉矶等城市开车非常相似:越来越多的公司选择在西雅图定居或开设办公室,以便能够进入西雅图提供的技术社区。因此,在西雅图停车一天比一天难。
西雅图市交通局提供的付费停车占用率数据集提供了每年约 3 亿次停车交易的视图,这些交易来自约 1500 个街区的约 12000 个停车位。该数据集不包括周日的任何交易,因为没有付费停车。大多数停车点有 2 小时的限制。
我对数据集进行了子集划分,以包括 2019 年 5 月和 6 月的所有交易,因此它非常适合配备 24GB VRAM 的英伟达泰坦 RTX;数据集的大小大约为 7GB,一旦加载到 GPU 的内存中,就会扩展到大约 12GB。我们将使用的数据集可以从这里下载,下面讨论的所有代码(以及更多!)可以在 Github 上找到。
数据探索
我创建的停车数据集包含* 4900 万条记录(*均每天约 95.5 万条)和 13 列。每一行代表一个单独的交易及其所有的元数据,例如交易时的已付占用率或区块名称。它还包含以 WKT(众所周知的文本)格式编码的停车场的确切位置。请参见下面的数据集示例。
特征工程
RAPIDS 是一个很棒的框架,它几乎不需要修改 vanilla pandas 的代码就能工作(API 99.9%兼容),并且比运行在 CPU 上的任何代码都实现了巨大的加速。这就是为什么使用 RAPIDS 的特征工程如此简单和容易。事实上,这也挑战了人们的信念(或抱怨,取决于你如何看待它),即数据科学家 80–90%的时间都花在数据清理和探索上,只有 10–20%的时间花在构建实际的机器学习或深度学习模型上:使用 RAPIDS,这些比例可以明显向构建模型的有趣部分倾斜。
提取日期元素
首先,我们将将日期分解成基本元素,如年、月、日、小时和分钟,这样以后我们在搜索停车地点时,实际上可以汇总一周中的每一天和每一小时。
27 毫秒后,我们得到了结果。是的,这不是打字错误:在的 27 毫秒中,我们提取了几乎 4900 万条记录的OccupancyDateTime 列的基本组成部分!光速!
“Speed of light” by allenhimself licensed under CC BY 2.0 (aspect ratio changed)
停车地点
西雅图有 1528 个停车场。与 pandas 类似,为了从数据帧中提取不同的行列表,我们使用 drop_duplicates(…)方法。
完成以上工作后,我们现在可以将目光转向从 Location 列中提取经度和纬度。RAPIDS 0.6 增加了对字符串的初始支持,现在在 0.9 版中我们有了对正则表达式的支持,为什么不使用它呢?!下面的模式主要是在一个字符串中搜索两个浮点数,并将第一个浮点数作为经度返回,第二个浮点数作为纬度返回。
stod() 方法将提取的字符串转换成十进制数。
计算*均付费入住率
为了提高速度,apply_rows(…)方法允许我们扫描所有的行并应用一些转换。全部使用普通 Python 代码完成!没有必要玩 CUDA 来利用 GPU 的能力!
上面的代码需要大约 1.7 秒来计算 48M 行的*均占用率。剩下的工作是汇总每个停车位标识符(SourceElementKey 列)、星期几和小时。
寻找最佳停车位
最后一步,让我们检查我们应该停在哪里?我正在使用 geopy 框架和 nomim 地址编码器来检索太空针的地理坐标!顺便说一下,这些是(122.349304W,47.620513N)。
使用哈弗辛公式,我们现在可以计算从太空针到数据集中每个停车位置的距离。
现在,假设我们想在周三下午 1 点左右参观太空针塔(这样我们可以避免排长队……),我们可以快速合并我们之前创建的聚合数据集,并将其子集化为 1000 英尺以内的停车位。
检索到最*的位置后,让我们在地图上可视化它们,以便在参观西雅图的标志性场所时更容易找到它(它离西雅图的另一个标志性场所派克市场不远!)
总结
以上所有,端到端,大约需要 20 秒;推理部分本身只需要大约 1.6 秒,一旦完成所有的聚合,这些聚合可以重复使用,直到第二天新的停车交易可以用于更新停车位的占用率。
急流的力量(特别是在泰坦 RTX 上运行,它有 24GB 的 VRAM!!!)而 GPU 是巨大的,我们现在只是触及了它的皮毛。愿(通用)部队(或者更好的,RTX)与你们所有人同在!
我应该去哪里?
原文:https://towardsdatascience.com/where-should-i-walk-e66b26735de5?source=collection_archive---------26-----------------------
使用 NVIDIA RAPIDS 的新工具来确定到停车场的最短步行距离
简介
在之前的故事中,我们探索了西雅图市交通局提供的付费停车占用率数据集。你可以看到(并希望测试)使用 NVIDIA RAPIDS 对这些数据进行的所有计算有多快。
简单回顾一下:我们使用的数据可以从这里下载。它是自 2019 年初以来发布的完整数据集的子集,包括 5 月和 6 月的所有交易。数据集的大小约为 7GB,非常适合配有 24GB VRAM 的 NVIDIA Titan RTX。要在 RAM 更少的 GPU 上使用这个数据集(如 11GB 的英伟达 RTX 2080 Ti ),您可能只需要提取一个月的数据——我已经准备了一个更小的数据集,只包含 2019 年 5 月的交易,您可以在这里下载。
快速进行地理空间计算
在我们继续讲这个故事之前,让我们谈一个小的话题。就在我发表我的故事一天后,NVIDIA 的 RAPIDS 团队宣布了数据科学难题中的另一个伟大作品:cuSpatial !
图一。cuSpatial 堆栈,经 NVIDIA 许可使用
顾名思义,cuSpatial 是一个专注于地理空间计算的库。它是一组通过 Python 接口公开的 C++/CUDA 内核,就像 RAPIDS 工具包中的其他工具一样。而且速度很快,就像其他人一样!
为了让我们感受一下它的计算速度,我们将使用上一个故事中的完整数据集(提醒一下,该数据包含 4800 万个地理编码交易),并测试如果我们使用 cuSpatial,我们的计算速度会快多少。
在这个测试中,我们可以看到 4.8 倍于普通 Python 的加速,而且不费吹灰之力(代码也少得多!!).为了比较性能,我们重用了前面故事中的 calculateDistance(…) 方法的(在语法上有所压缩)版本。
注意,如果你运行。apply_rows(…) 方法第一次运行时,您将遭受编译损失,因为 RAPIDS 需要首先 JIT 编译计算距离(…) 方法:在我的机器上,单元的第一次运行通常报告大约 650 毫秒,但是如果您再次运行单元,执行时间将下降到大约 220 毫秒;假设您没有做任何更改, calculateDistance(…) 方法将在此时被缓存。当我第一次报告我看到的令人印象深刻的速度提升时,我发现了这一点。然而,接下来的讨论实际上导致了一个额外性能挤压的发现,它将很快来到 RAPIDS!
我们是坐飞机还是走路?!
那么,现在回到我们故事的继续。上次我们计算的距离是直线距离,而不是步行距离。这导致了一些停车点的出现,如果步行的话,这些停车点实际上会超过 1000 英尺。
令人欣慰的是,融合数据科学的独一无二的约翰·默里获得了国王县老虎/线道路网的形状文件,并友好地创建和捐赠了一个国王县道路图,其形式为一个交叉点列表(带有地理坐标)和一个连接交叉点与计算长度(以码为单位)的边列表。数据可以在这里下载,但是如果你使用我们发布在 Github 上的代码,笔记本还是会帮你做的。
将停车点连接到图表
很明显,停车位置没有出现在图表中,所以我们需要添加它们。在第一次尝试中,我们将遍历所有 1,500 个停车位置,计算到每个道路交叉口的距离,并选择 3 个最*的交叉口。这有点麻烦,会导致一些伪像(稍后在地图上显示),但现在可以了。在下一个故事中,我们将讨论如何添加新的节点,使停车点垂直于道路/边缘(再次感谢 John 提出这个建议并帮助编写代码!)
。nsmallest(…) 方法(也有 nlargest(…) 可用)返回前 3 个最*的交点;我们使用将这些边添加到 road_graph_data 数据帧中。concat(…) 方法。最后,我们还向parking _ locations _ nodes数据帧添加了一个新节点,这样我们就可以稍后将它们添加到图节点的完整列表中。
让我们在这里暂停一秒钟:我们刚刚使用 cuSpatial 计算了所有 1500 个停车位置到 127k 个道路交叉口的哈弗线距离(因此,这是大约 200 米的计算),选择了 3 个最*的交叉口,并更新了数据集,所有这些都在大约 1 分钟内完成。如果这还不够快,我不知道什么是…
继续,我们还需要为空间针添加一个节点。然而,不是链接到最*的 3 个十字路口,在地图上的一瞥建议我们应该链接到 5。
就像之前一样,我们使用 geopy 包中的 Nomatim geo 编码器来获取太空针的坐标。
我们来建个图吧!
现在我们有了节点和边的完整列表,我们可以构建图表了。这在急流中超级容易。
查看文档获取可用方法和算法的完整列表!
有了完整的图,我们现在可以使用单源最短路径(SSSP)来计算从太空针到每个停车位置的距离!该算法遍历该图并找到到所有 128k 个节点的最短路径;对于 SSSP 算法的概述,我发现这些笔记很有用。作为回报,我们得到一个数据帧,其中包含一系列顶点以及到这些顶点的相应最短距离。数据帧还显示了的前任,一个节点(或者顶点,如果你愿意的话),你需要在之前访问一个正在讨论的形成最短路径的特定节点。所有这些都在 174 毫秒内完成。
我们现在可以使用这些信息来创建从太空针到 1000 英尺步行距离内的每个停车点的完整路径。
在上面的代码片段中,我简单地从一个节点跳到另一个节点,并将边添加到路径数据帧中。大约 1 秒钟后,我们可以开始制图。从 road_nodes 数据帧中,我们提取每个节点的坐标,这样我们以后就可以用它们在地图上绘制这些点。
这是最终的结果!
因此,考虑到所需的距离,距离太空针塔最*的停车点在南面和东面。现在,如果你仔细看,你可以看到我之前提到的人工制品以及将停车位分配到最*的 3 个十字路口的方法的不足之处:为了到达一些停车位,算法将要求你走过停车位,然后走回停车位。在下一个故事中,我们将解决这个问题。
总结
与我们之前的工作流(在泰坦 RTX 上运行大约 20 秒)相比,这个端到端的过程需要大约 2 分钟才能完成。尽管如此,这些工作的大部分可以保存下来,然后在以后重用,将推断时间减少到仅仅一两秒钟。
敬请关注 NVIDIA RAPIDS 的力量、速度和灵活性的更多示例!
你应该去哪里上大学?
原文:https://towardsdatascience.com/where-should-you-go-for-college-225512479289?source=collection_archive---------25-----------------------
根据你的大学学历和所在地区,你毕业后的期望薪资是多少。
青少年到达了他们生命中需要追求人生目标的那一点。有些人的抱负需要大学教育。有些人仍然不确定他们的目标或抱负,所以他们去大学寻找。
因此,他们从高三开始申请大学。在申请大学的过程中,他们会问自己这样的问题:为了获得最好的大学经历,我可以去哪个城市?什么学校最适合我的志向?什么专业最适合我?
决定他们申请目标学校的一个因素是他们大学毕业后的工资。因此,他们可能会继续寻找学校,直到找到一所能在工资和满意度之间取得*衡的学校。
由于所有这些问题都是由大学申请人提出的,因此开展了一个数据可视化项目来回答学生关于大学学位、大学地区、大学类型与毕业生工资的关系的问题。
数据收集
数据通过这个链接从 Kaggle 上的三个 csv 文件中获得。这三个 csv 数据集是由华尔街日报在 2017 年收集的。其中两个数据集被合并成一个数据集,并进行清理,以包括以下列:学校名称、学校类型、起始工资中位数、职业生涯中期工资中位数和地区。
Top five rows of the combined dataset
第三组数据是关于专业和他们的*均工资。它有多个列,但它被清理,以包括重要的列,即本科专业,起始工资中位数,职业生涯中期工资中位数。
Top five rows of the third dataset
在数据集被加载和清理后,它们被用来可视化地区、学校类型和本科专业之间在起薪中位数和职业生涯中期中位数方面的差异。
探索数据集
起薪中位数
首先创建了一个表格,找出起薪最高的前五所学校。
The top five schools with the highest starting median salaries
结果显示,加州理工大学毕业生的起薪中位数最高,为 75500 美元。麻省理工学院毕业生以 7.22 万美元位居第二。哈维·马德、普林斯顿和哈佛毕业生分列第三、第四和第五位,起薪中位数分别为 7.18 万美元、6.65 万美元和 6.34 万美元。
首先绘制了一张图表,以描绘基于学校类型的毕业生起薪。
Starting salaries of college graduates based on school type
根据上面的图表,常春藤盟校的起薪中值最高,为 60,475 美元。工程学院的起薪中位数第二高,为 59411 美元。文理学院毕业生的起薪中位数为 45917 美元,位居第三。党校毕业生和州立学校毕业生分别获得约 45705 美元和 44304 美元。
第二张图显示了不同地区大学生的起薪。
Starting salaries of college graduates based on region
去加州上大学的人的起薪中位数是 50,623 美元,是所有地区中最高的。东北部地区的大学生以 49,367 美元的薪水位居第二。西部和南部大学生起薪相当接*。两者分列第三和第四位,起薪中位数分别为 44436 美元和 44364 美元。中西部地区大学生的起薪中值为 43,977 美元。
最后,创建了一个表格来显示哪个本科专业获得的起薪最高。
Top five starting median salaries of college graduates
医师助理的起薪中值最高,为 74300 美元。化学工程专业毕业生的薪资位居第二,为 6.32 万美元。计算机工程、电气工程和机械工程毕业生分列第三、第四和第五位,起薪中位数分别为 6.14 万美元、6.09 万美元和 5.79 万美元。
职业生涯中期工资中位数
职业生涯中期薪资中位数最高的五大商学院如下表所示:
Top five schools with graduates receiving the most mid-career median salary
然后,绘制了一个图表来展示学校类型和他们职业生涯中期的工资中位数。
Mid-career salaries of college graduates based on school type
根据上面的图表,常春藤盟校的职业中期*均工资最高,为 120,125 美元。然后,工程学校以 105,128 美元的薪资位居第二。文理学院的毕业生获得了职业生涯中期第三高的工资中位数,为 89298 美元。党校毕业生和州立学校毕业生分别获得约 84,685 美元和 79,203 美元。
创建了另一个条形图来描述基于地区的大学毕业生职业生涯中期的工资中位数。
Mid-career median salaries for college graduates
图表显示,去东北部地区上大学的人获得最高的职业中期*均工资 93510 美元。加州大学生以 92411 美元的薪水位居第二。南部地区的大学生以 80,390 美元的职业中期中位数工资排在第三位。西部地区的大学生和中西部地区的大学生分别以 79808 美元和 78010 美元的职业中期工资排名第四和第五。
还创建了一个表格来显示基于本科专业的大学毕业生的职业生涯中期工资中位数。
Top five mid-career median salaries of college graduates based on undergraduate majors
化学工程、计算机工程、电气工程和航空航天工程等工程专业占据了前四名,职业生涯中期工资中位数分别为 10.7 万美元、10.5 万美元、10.5 万美元和 10.3 万美元。经济学毕业生排在第五位,职业中期*均工资为 98600 美元。
结论
图形和表格结果清楚地报告了基于大学地区、大学学位和大学类型的人们的工资结果。利用这些结果,大学申请者在申请大学时可以做出更好的选择,如果他们的目标是获得一个在短期和长期对他们都有巨大优势的学位。
用来构建这些图的完整版本代码可以在 这里 看到。
你应该住在旧金山的什么地方?
原文:https://towardsdatascience.com/where-should-you-live-in-san-francisco-5f0fa0889a98?source=collection_archive---------19-----------------------
在世界上最昂贵的城市实现住房价值最大化
除了生活成本,旧金山还有很多吸引人的地方。住房是其中的一大块,所以无论你是租房者还是房主,从你的住房状况中获取最大价值是很重要的。
在这个项目中,我探索 R 的 Zillow 数据,为 1)潜在的租房者和 2)想购买出租房产的投资者识别旧金山的高价值社区。我们将探索房价、月租金以及两者的比率(房价租金比)来寻找候选社区。
感谢 Ken Steif 和 Keith Hassel 为我们提供的关于探索旧金山房价的精彩教程。他们启发了下面的情节和图形。这个项目的代码可以在这里找到。
邻域参考
因为我的分析是针对社区进行的,所以这里有一个直观的参考。
旧金山房价按年统计
由于次贷危机,2007 年至 2011 年间,附*的房价停滞不前。在造船厂,房价甚至在这个时间段下降。
从 2012 年开始,房价开始上涨。这种住房增长在旧金山市中心增长,然后向外扩散。Presidio 和 Twin Peaks 地区附*的住房一直是最贵的。
这是一个随着时间推移而变化的更好的视图。住房价格在次贷危机期间下降,然后在 2012 年后飙升,并分裂成三态分布。
比较房价和租金
上面的地块包括所有房屋类型——公寓、独栋、多户——以及房屋大小——一居室、两居室、三居室等。
从 2010 年到 2018 年,典型的房价略低于 100 万美元,典型的租金约为每月 4000 美元。也很少有住宅价格中位数超过 300 万美元,租金中位数超过 6000 美元的社区。
房价和租金遵循类似的分布。
年均房价解释了年均租金变化的 89.5%。尽管如此,租金还是会随着固定房价的变化而变化:250 万美元的最低租金是 5250 美元/月,最高租金是 9506 美元/月。
如果有人给我两套 250 万美元的房子出租——一套 5250 美元/月,另一套 9506 美元/月——大多数情况下,我会选择 5250 美元/月。
在上面的场景中,我固定了房价。比如说,你可以调整你的房租预算。在这样的预算下,你能买到的最高房价是多少?如果你要购买租赁房产,在固定的购买预算下,你能得到的最高月租金是多少?这些问题引导我们进入下一个分析。
租金价格比
这些是 2010 年至 2018 年的*均房价租金比,其中房价租金比是
租售比是房价除以一年的估计租金。你可以把它看作是偿还出租财产的估计年限。最大化这个比率会给租房者带来好的价值;最小化这个比率(更少的偿还年数)会给房东带来好的回报。
如果你租了一套公寓,你会希望租金价格最大化。这些社区有更高的租金。最高的 10%邻域标记在右边的面板中。
如果你投资于租赁物业,你希望将房价租金比降至最低,这样你就能快速获得投资回报。最低 10%租售比的社区在左边标出。
对租房者来说:最高租售比的社区
圣弗朗西斯伍德、海崖和普雷斯迪奥高地是高价值的租赁区。因为他们是富裕的社区,这些社区的房价可能会更高。如果你能在这些地区找到合理的租金,你可能会从这种租赁情况中获得很高的价值。
作为理智检查,我在圣弗朗西斯伍德和普雷斯迪奥找到了不错的 Craigslist 房源,价格约为 1500 美元/br,公寓看起来也不错。对这个地区来说这是非常合理的。
对买家来说:最低租售比的社区
Bayview 的犯罪率一直很高,但根据 Trulia 的数据,*均房价从 50 万美元增长到 90 万美元,增长了 40 万美元。该地区涌现出许多迎合年轻专业人士的咖啡店和餐馆,这使得它成为一个越来越容易接*的社区,而且价格(相对)便宜。
看起来大概需要 16 年的时间来付清在那个地区的租金。这是这个城市最好的地方了,所以考虑在那里开始你的投资搜寻吧。
接下来,我们将看看随时间的变化。
观察一段时间内的变化,我们发现市中心实际上具有最低的当前租售比,因此我们应该将它添加到租赁物业投资候选列表中。
结论
总的来说,我们已经确定了为租房者提供高价值、为潜在房东提供高回报的社区。如果你想租房,从圣弗朗西斯伍德、海崖和普雷斯迪奥高地开始搜索。这些都是富裕和安全的社区,你会惊讶地看到一些负担得起的出租候选人。
如果你想购买房产并出租,你希望尽快收回投资。Bayview、Visitacion Valley 和 Downtown 为出租房地产提供了最好的投资回报。
这篇文章只是思考旧金山住房问题的一种方式。我计划通过关注特定的房屋类型,研究旧金山住房市场的总体趋势,以及比较不同城市的住房市场来扩展住房市场分析。
对于那些对用 R 语言制作这些图形感兴趣的人,有一点需要注意:学习如何绘制邻域地图是这个项目中最棘手的部分。我推荐仔细研究一下 Ken Steif 和 Keith Hassel 的教程(上面有链接)。而且学习 geom_polygon()的工作原理超级有帮助。
感谢阅读!我希望你觉得这很有趣或有帮助。请给我评论或信息反馈/建设性的批评。
附录
像伊斯坦布尔当地人一样去哪里喝咖啡
原文:https://towardsdatascience.com/where-to-coffee-like-an-istanbul-local-91522bbafa06?source=collection_archive---------34-----------------------
Photo by Math on Unsplash
在这篇文章中,我将概述我在伊斯坦布尔当地人最喜欢的地区发现相似和不相似的咖啡馆的步骤。
作为我的 IBM 数据科学课程项目的一部分,我被要求提出一个问题,并通过收集、探索和分析位置数据来找到问题的解决方案。作为伊斯坦布尔和咖啡的爱好者,我决定想出一些跨越这两个主题的东西。
伊斯坦布尔是世界上最大、人口最多的城市之一,也是唯一存在于两个大陆上的城市。博斯普鲁斯海峡将城市的两个部分分开。伊斯坦布尔居民喜爱的两个地区分别是欧洲和亚洲的 beikta(be-shik-tash)和 kadky(ka-di-koy)。虽然这些地区有很多共同点,但它们也有各自的不同之处,比如咖啡店的激增。事实上,根据 Foursquare 的数据,伊斯坦堡 15 家最好的咖啡店中有 8 家位于 beikta 和 Kadı
居民们就邻里之间如何最好地享受一杯咖啡展开了激烈的争论。这份报告将通过提供从数据中得出的见解来解决这个问题。这项研究将会引起伊斯坦布尔的游客和当地人的兴趣,他们还没有发现这两个最受欢迎的街区之间隐藏的相似之处。该报告将帮助读者:
- 更熟悉所讨论的社区
- 理解咖啡店和其他社区属性之间的关系
- 发现邻里之间在咖啡店和其他属性方面的相似之处
- 像当地居民一样,能够做出在伊斯坦布尔哪里喝咖啡的更明智的决定
将要检查的邻*区域在地图上用红色标记显示。
Pins on the map show the neighborhoods that will be examined
数据
本项目中使用的所有数据都是从互联网上的各种来源获得的。数据操作是用 Python 执行的,主要使用的是 Pandas 库。我收集的数据可以分为三个部分:
categories of data used in the study
方法
从 bulurum.com我可以获得社区列表和他们各自的邮政编码。漂亮的汤库被用于此,表格显示了前五行的预览
the first five rows of the neighborhoods data frame
通过 API 查询 foursquare 数据库获得位置数据。要下载数据,需要输入以下信息:客户端 ID、客户端机密、纬度、经度、版本、搜索半径
The number of coffee shops in each neighborhood
探索性数据分析
人口
The number of coffee shops in each district
- Kadı比 beikta 大,所以在那里看到更多的人口并不奇怪。
- 在邻*水*上,人口的分布变得更加清楚。
The population of Besiktas and Kadikoy neighborhoods
咖啡店的数量
The distribution of coffee shops in Kadikoy and Besiktas
- 两个区的咖啡店数量几乎相等。我们还可以看到,两个地区每个街区的咖啡店数量的变化也几乎相等。
The number of coffee shops in neighborhoods of Kadikoy and Besiktas
租金价格
The distribution of the price of rent in Kadikoy and Besiktas
- 在 beikta 租房比在 Kadı贵。
- Kadı各个街区的租金价格差异较大。这可以从小提琴地块的宽阔形状中看出。
The price of rent in neighborhoods of Kadikoy and Besiktas
结果
回归
进行回归分析以观察咖啡店的数量如何与其他特征相关。
Regression plots
- 如果这个地区有很多咖啡店,租金可能会更高。在贝希克塔斯,情况正好相反。
- 随着人口的减少,咖啡店的数量也在减少。
- 社区离海边越远,咖啡店就越少。
有趣的邻域(离群值)
Scatter plot of neighborhoods
- 费内巴赫·马赫。是 Kadı最昂贵的街区,拥有最多的咖啡店。
- 在 Egitim Mah 租房。相对便宜,而且这个地区有很多咖啡店。
- 卢斯·马赫。在 beikta 有一些咖啡店,但租金很高。
- 总的来说,Kadı似乎是一个比 beikta 更加多样化的地区。
邻域聚类
在 python 中使用 scikit learn 使得机器学习非常容易实现。下面的代码片段实现了 k 均值聚类
K-means code snippet
Map of Besiktas and Kadikoy showing clustered neighborhoods
检查集群
coffee shop clusters
- 第三和第四类社区中的咖啡店数量最多
House rent clusters
- 集群一中的社区租金最低
People per coffee shop clusters
- 聚类三中的那些拥有最不拥挤的咖啡店,而聚类一中的那些拥有最拥挤的咖啡店。
- 从这项研究的结果中可以提出一些建议。
结论
在这份报告中,我概述了探索性数据分析和推断性数据分析的发现。使用几种数据收集和辩论技术,分析了伊斯坦布尔最受当地人喜爱的两个区的特征。此外,机器学习被用于寻找最相似的邻域。这项研究的目的不是说哪个社区更好,而是为那些寻求特殊咖啡体验的人提供指导。我让读者根据前面的分析和他们的偏好来决定在哪里以及如何喝咖啡。
如果你已经做到这一步,感谢你的阅读:)详细的报告和代码可以在我的 Github 资源库中找到。如果您有任何问题或想分享您的想法,请随时联系我。
哪位 2020 候选人最擅长推特?
原文:https://towardsdatascience.com/which-2020-candidate-is-the-best-at-twitter-fd083d13fb4e?source=collection_archive---------11-----------------------
2020 年民主党候选人推特账户的数据分析
2020 年民主党提名的竞争将在许多领域展开。在一个月后的第一场辩论之前,在关键州的竞选集会之前,甚至在黄金时间的电视采访之前,提名之争已经在 Twitter 上开始了。每个主要的民主党候选人都有大量的社交媒体追随者。有了这些账户,候选人就有了直接与选民、媒体和世界沟通的手段。毕竟,我们已经看到精心制作的推文可以改变现实世界中的叙述。
了解到这一点,我决定收集 11 位民主党总统候选人的所有推文。其中三个竞争者有独立的工作账户,所以总共分析了 14 个档案。有了这些数据,就有可能看到哪些候选人充分利用了这个新的强大的*台。
Twitter 统计数据
追随者
拥有最多推特粉丝的候选人无疑是伯尼·桑德斯。在他的参议院(@SenSanders)和个人(@BernieSanders)账户之间,桑德斯拥有超过 1700 万名粉丝。毫无疑问,其中一些重叠,但这表明他的 2016 年竞选活动创造了大量的社交媒体追随者。伊丽莎白·沃伦的参议院账户远远排在第三位,而科里·布克、乔·拜登和卡玛拉·哈里斯也有数百万人关注。
关注者数量可以被视为候选人在线影响力的衡量标准。大量追随者的实际效果取决于候选人的沟通能力。
推文数量
如果关注者数量就像势能,那么发布的推文数量就类似于动能。在这方面,杨安泽是 2020 年候选人中最有活力也是最多产的。2019 年,杨发布了* 3000 条推文,他使用社交媒体的次数远远超过了他的同龄人。他可能是一个充分利用这种媒介的竞争者。
在杨之后,和是发微博最多的政客。远远落后于这些的是民调领先者乔·拜登。拜登在 2019 年只有 147 条推文。和现实生活中一样,他在推特上的竞选策略似乎是避免引起太多关注。
最喜欢
如果我们把 2019 年每位候选人在推特上获得的所有喜欢加起来,卡玛拉·哈里斯名列榜首,伊丽莎白·沃伦远远落后。
然而,如果我们随着时间的推移绘制这些喜欢,我们会看到哈里斯的大部分支持是在 2 月份她首次宣布竞选时。相比之下,伊丽莎白的沃伦喜欢计数一直在稳步上升。这是我认为沃伦最有可能获得提名的原因之一。她的势头仍在增长。
如果我们将所有这些赞除以每位候选人的推特粉丝数(从而将他们归一化),那么我们会看到杨安泽和皮特·布蒂吉格名列前茅。在所有候选人中,他们的追随者似乎是最积极的。
转发和参与峰值
衡量 Twitter 参与度的另一个有用指标是“转发量”。转发是在网络上传播信息的方式,也是衡量一条微博成功与否的最佳指标。
转发的情节看起来和赞的情节几乎一样。和 likes 一样,我们在 5 月份看到了参与的高峰,我认为这是因为阿拉巴马州和佐治亚州通过了限制堕胎的法案。尤其是在女性候选人中,这些法律提供了源源不断的推特素材。伯尼·桑德斯在这个问题上也做得很好,而乔·拜登却没有。下面是每位候选人包含“堕胎”一词的推文数量图。这些推文大多是上个月的。
Kirsten Gillibrand more than any other candidate prioritizes woman’s issues
有趣的是,顶级候选人乔·拜登、皮特·布蒂吉格和贝托·奥罗克在这个问题上基本保持沉默。我认为这证明了男性在今年的初选中会很艰难。
Twitter 风格
除了查看与候选人推文相关的统计数据,我们还可以查看其内容。下面我将重点放在 tweet 文本本身,并检查出现的不同主题。
乔·拜登
乔·拜登将自己标榜为反特朗普者。因此,毫不奇怪,他最受欢迎的推文——任何候选人最喜欢的推文——是对总统的攻击。
具体来说,拜登的推文认为,他可以让美国回归其“核心价值观”。在其中一封信中,他说“我们选择希望而不是恐惧,选择真理而不是谎言,选择团结而不是分裂。”在另一封信中,他将这些价值观与现任总统进行了对比。
在拜登的推文中创建了一个最常见术语的词云,我们看到了对“国家”、“美国”和“民族”的常见引用。他的竞选活动似乎是由模糊的承诺推动的,即让事情回到更美好的过去。
Joe Biden Word Cloud
伯尼·桑德斯
伯尼·桑德斯是社交媒体内外的煽动者。他最受欢迎的推特倾向于与共和党人争吵,无论是在堕胎还是伊尔汉·奥马尔问题上。
伯尼还谈到了“国家”,但通过其“人民”的镜头,而不是其价值观。事实上,“人民”是他的推文中最常用的词。他使用的另一个关键词是“健康”,而医疗保健似乎是他竞选中的主要议题。
Bernie Sanders Word Cloud
伊丽莎白·沃伦
伊丽莎白·沃伦是 Twitter 上更有深度的故事讲述者之一。她在 2019 年的前 3 封信都很长,很详细。他们处理从针对女性的暴力(Ilhan Omar)和不*等(财富税)到堕胎等一系列问题。在后一种情况下,她特别引人注目,解释了为什么佐治亚州和阿拉巴马州的法律如此有害。
像伯尼·桑德斯一样,她关注“人民”,但更强调为他们“战斗”。她也比桑德斯更关注“家庭”。
Elizabeth Warren Word Cloud
卡玛拉·哈里斯
和伊丽莎白·沃伦一样,卡玛拉·哈里斯也把堕胎和攻击川普作为她竞选的关键内容。她最受欢迎的推文反映了这一点。
但对我来说,哈里斯在网上似乎并不自在。尽管哈里斯的推文触及了“健康”、“人民”和“家庭”等重要主题,但她倾向于简单,有点缺乏情感。我怀疑她作为律师的背景使她对自己的言辞过于谨慎。她最常用的词是经典的行动号召——“必须”和“将”。
Kamala Harris Word Cloud
皮特·布蒂吉格
皮特·布蒂吉格发推特的次数比他的对手少,但当他发推特时,他非常有效。他最受欢迎的推文混合了愤怒和有趣的故事——这是社交媒体上的一个爆炸性组合。
最重要的是,Buttigieg 的 Twitter 角色反映了一个好人的形象。例如,他似乎经常使用“谢谢”这个词。Buttigieg 也是一种反特朗普的人,但比拜登的包袱少,比伯尼的意识形态少(见他对“社区”而不是“工人”的强调)。他的字云在下面。
Pete Buttigieg Word Cloud
感悟
衡量候选人推文内容的最简单方法之一是计算他们有多积极。使用 sentimentR 库,我能够比较候选人推文的*均情绪。
正如我之前提到的,杨安泽是 2020 年所有候选人中最积极的。贝托·奥罗克和皮特·布蒂吉格在社交媒体上交流时也倾向于使用积极的语气。相比之下,卡玛拉·哈里斯、伊丽莎白·沃伦和伯尼·桑德斯更可能使用负面语言。最后,乔·拜登的语气基本上是积极的,但没有巴顿那么乐观。对我来说这似乎是对的。推特上的情绪似乎反映了与每场竞选相关的普遍情绪。
最后的想法
我个人认为,在社交媒体时代,赢得选举也意味着在网络上的良好沟通。在这方面,我们看到候选人都有不同的长处。伯尼·桑德斯拥有最多的追随者,因此拥有最多的草根支持。卡玛拉·哈里斯拥有最多的支持,或许也是最有制度性的支持。伊丽莎白·沃伦最有冲劲,而乔·拜登最有能力用他的知名度吸引注意力。到 2020 年,我们将看到哪个候选人最有效地利用这些优势。
哪部动漫最好看?
原文:https://towardsdatascience.com/which-anime-is-the-best-4acb28f80bf5?source=collection_archive---------13-----------------------
Photo credit: https://www.flickr.com/photos/bagogames/22812069025
使用数据可视化显示流行动漫如何排名
动画是日本制作的一种卡通形式,在全世界非常流行。在过去的二十年里,不同的动画系列已经发行,其中一些对电视文化产生了巨大的影响。
火影忍者就是这些有影响力的动漫系列中的一个例子。它有能力让任何坐下来看几分钟的人被它美丽的故事和疯狂的动作场面所吸引。每次我仍然看火影忍者,我都会有这种怀旧的感觉,就像我是看着这部伟大的艺术作品长大的。
在我看来,最好的动画应该是《对泰坦的攻击》。在观看 Shingeki no Kyojin(日语中攻击泰坦的意思)时,我看到谏山创在娱乐方面为未来的动漫系列树立了榜样。这部动画为观众提供了许多未解之谜、大量曲折的情节和刺激的事件。我等不及下一季明年秋天出来了。
还有其他令人难以置信的动画系列,如《全金属:兄弟情谊》、《心理传递》、《龙珠 Z》、《死亡笔记》、《漂白剂》和《猎人 x 猎人》。然而,至今让我困惑的问题是,这几部动漫到底哪部最好?
数据收集
为了正确地进行这项研究,动画数据集是使用这个链接从 Kaggle 获得的。在 Jupyter 笔记本上加载后,它被改进为包括重要的功能,如:名称,类型,剧集,分数,排名和受欢迎程度。下面是新形成的数据集的前五行:
Top five rows of the newly-formed dataset
使用该数据集,进行了一些可视化的数据分析。
收视率与受欢迎程度
第一张图表是比较动画系列的收视率和受欢迎程度。
Scatter plot of Anime Ratings vs Popularity
Correlation coefficient of the anime dataset
图表清楚地表明,收视率最高的动漫系列往往最受欢迎。使用相关系数表,该图的相关系数为-0.85。这表明,收视率与动漫的受欢迎程度有着强烈的负相关性。这意味着随着收视率的增加,动画的受欢迎程度越来越接*顶端。
最受欢迎的 30 部动漫系列
该数据集被修改为包括排名前 30 的动画系列,以便进一步分析,找出它们之间的差异。下面是用于提取前 30 个最受欢迎的动画的代码:
df_anime11 = df_anime1.sort_values(by = "popularity", ascending = **True**).reset_index()
df_anime11 = df_anime11[df_anime11['popularity'] != 0.0].reset_index()
df_anime11 = df_anime11.head(30)
df_anime12 = df_anime11[['name', 'type', 'episodes', 'score', 'rank', 'popularity']]
df_anime12
Top 30 most popular anime with their features.
集数最多的动漫
建立了一个水*条形图来显示前 30 个最受欢迎的动漫系列中哪个动漫系列制作的剧集最多。
The number of episodes of the top 30 most popular anime series
火影忍者 shippuuden 以 500 集位居第一。《漂白剂》第二,约 366 集。火影忍者,也是火影忍者系列的一部分,有 220 集,排在第三位。《仙尾》和《猎人 x 猎人》分别以 175 集和 148 集排在第四和第五位。
收视率最高的 30 部流行动漫
另一个水*条形图展示了前 30 名最受欢迎的动漫之间的排名。
The ratings of the top 30 most popular anime
第一名是全金属炼金术士:兄弟情谊,评分 9.24。Steins:Gate 和 Hunter x Hunter 分别以 9.14 和 9.12 分别位居第二和第三。代号 Geass: Hangaku no 车夫党 R2 以 8.94 的评分排在第四位。Cod Geass: Hangaku no 车夫党以 8.77 的评分排名第五。
我最喜欢的两个动漫系列火影忍者 shippuuden 和 Shingeki no Kyojin 分别获得了 8.19 和 8.48 的评分。他们也分别排在第 16 和第 9 位。
用于进行研究的完整版本代码可以在这里看到 。
是什么让一本科幻小说受欢迎?
原文:https://towardsdatascience.com/which-content-of-the-story-is-the-most-popular-in-top-rated-sci-fi-books-6f3644246ac3?source=collection_archive---------13-----------------------
三个世纪以来科幻小说故事的主要内容探析
在顶级科幻小说中,哪个故事内容最受欢迎?几十年来,内容的受欢迎程度有变化吗?在同一本科幻书中有哪些内容经常一起出现?
为了回答这些问题,我探索了 Kathleen M. Carley (2017)编写的过去三个世纪的科幻书籍数据集(科幻书籍数据集,从 CASOS 检索)。该数据集包含有关书名、出版日期、作者、作者性别、一本书在 2016 年左右出现在最高评级列表中的次数以及故事内容的信息,其中包括机器人、时间旅行、天启等内容。每个内容都根据其在书中的存在程度进行分级,最高级别为 3,表示该内容是存在的、强有力的,并且是故事的一部分,最低级别为 0,表示该内容根本不存在。
数据集概述
从下图可以看出,总体来说,科幻书出现频率最高的内容是小说科技(不是 AI)、星际(设定)、战斗。
男性作者首选的内容列表是新技术、星际(设定)和与其他物种的战斗。
女性作者首选的内容是新颖的科技、浪漫和带有时间旅行的星际(设定)。此外,女性作者不写精神力量。
2000 年以后出版的科幻书中的内容有什么不同?这些书更多的是关于新奇科技,天启,浪漫,战斗,没有灵力。
这引出了我的第二个问题:
同一本科幻书中有哪些内容经常一起出现?
为了回答这个问题,我将每个主要内容的数据转换为 python 字典,格式如下:
这就回答了问题,但是很难看到全貌,所以我就标出来了。在下图中,绘图颜色对应一个刻度;刻度越高,颜色越深。
例如,机器人或人工智能内容最常见的第二个内容是新技术。此外,机器人和魔法很少出现在同一本书里,并且用白色圆圈标出。
对于新技术,最常见的第二个内容是星际(设置):
对于每种内容,结果如下:
我的下一个问题是:
几十年来,内容的受欢迎程度如何变化?
某个特定内容在某个特定十年内的强势存在与其他内容的强势存在之间的比例将回答这个问题。结果如下图所示:
除了小说技术,这是几十年来最常见的内容,情节表明,在过去的几十年里,科幻小说更多的是关于天启,其他星球,而不是关于精神力量。
在视觉上更具戏剧性的情节中,我们可以看到,在二十一世纪,科幻书籍不再是关于野兽(红色),而是机器人或 AI(蓝绿色)。机器人或 AI 内容出现在上个世纪中叶,是二十一世纪科幻书籍中一个故事的七个主要内容之一。
哪种内容在顶级科幻书中出现频率更高?
为了弄清楚这一点,我直观地研究了数据,以查看内容在所有频率值下的分布情况。例如,下面的图显示,机器人或人工智能内容几乎出现在所有频率值上,也是顶级书籍(频率值为 6 或更高)的故事(等级 3)的主要内容。
精神力量的内容大多出现在低频率值,从来不是经常名列前茅的科幻小说故事的主要内容。
总结
综上所述,数据集探索的结果是,科幻书籍最常出现的内容是新奇科技(非 AI)、星际(设定)、战斗。男作者多写小说技术和空间,女作者多写小说技术和浪漫。2000 年后,启示录在科幻书籍的流行内容中上升,灵力内容是最不受欢迎的一种。还有,对于新颖的技术,在同一本书里最常发现的内容是星际(设定)和机器人或 AI。野兽不再是故事的主要内容,而机器人或人工智能已经在上个世纪中叶出现,并稳步发展。最后,在顶级科幻书籍中最常见的三个内容是星际(设置)、机器人或人工智能以及新颖的技术。
哪些国家最重视人的生命和健康?
原文:https://towardsdatascience.com/which-countries-put-the-highest-value-on-human-life-and-health-b011fbdbc550?source=collection_archive---------28-----------------------
定量分析
Nicaraguan nurse preparing a Pap smear. Mtran99 CC BY-SA 4.0
这似乎是一个天生主观的问题。你怎么能给生命和健康定价呢?
但是人们和国家一直在这样做。对医疗保健的需求可能是无限的,但资源是有限的,即使在最富裕的国家也是如此。我们如何分配资源揭示了我们的优先事项。
富裕国家支付更多是因为他们有能力,而不是因为他们一定更重视他们的公民。为了了解国家如何重视其公民的生命,我们应该比较实际卫生支出与支付能力。如果医疗保健在每个国家都有同样的优先权,我们预计它在 GDP 中的份额会保持不变。
事实并非如此。这是医疗保健总支出占 GDP 的百分比与人均 GDP 的关系图:
Own work, data from World Development Indicators
大多数国家的人均国内生产总值不到 100 美元,集中在图的左侧,所以我把 x 轴做成了对数坐标来展开数据。然后我对数据做了一条最佳拟合线。二次模型更合适一些,但不会真正改变我们的结论。
这项工作中出现了一些问题。首先,数据中有很多分散点(r^2 = 0.18)。你需要一个涵盖 6 倍医疗支出范围(人均 GDP 的 2%到 12%)的桶,以覆盖 90%的国家。各国在投入医疗资源的方式上有很大差异。这种差异并不与收入成正比。这并不是说穷国(或富国)都被迫进入一个狭窄的支出范围。这些支出反映了一种选择。
其次,这种关系有一个显著的(P < 0.0001)上升趋势——较富裕的国家愿意在医疗保健上花费更多的资源。这并不奇怪。一旦你有了食物和住所,医疗保健可能会成为剩余收入的首要支出。
令人惊讶的是这种关系是如此的脆弱。人均 GDP 每增加 1000 美元,医疗支出只有 0.04%左右的增长。中等国家的人均国内生产总值为 5500 美元。在这个范围内,每增加 1000 美元的收入,只有 2.2 美元用于医疗保健。换句话说,财富和消费意愿之间的关系在统计上很重要,但在功能上毫无意义。除了金钱之外的因素——历史、文化、管理——决定了医疗支出的水*。
有趣的案例是那些偏离趋势线最多的国家。鉴于这些国家的人均国内生产总值,它们的支出或多或少于预期。以下是十大超支者:
这里给出的数字(残差)是上图中绿色趋势线上方的距离。
我们这里有一些非常小的国家,其中许多是岛国,还有美国。尽管马绍尔群岛名列榜首,但其人均医疗支出仅为 680 美元。它不是一个花钱大手大脚的人,而是如此之小和如此之穷,以至于即使是一笔小的支出也会变得相对较大。让我们排除那些向医生支付过高工资、拒绝与 T2 谈判药品价格、允许令人憎恶的医疗破产的国家。这是一个异数,一个颠覆了消费和价值之间联系的怪异世界系统。
富裕国家的过度消费并不显著。或者,至少,他们不应该。这些国家有充足的资源用于改善其公民的福祉,它们也确实如此。
值得注意的是低收入国家。他们都不是良好治理的典范。在世界银行的名单上,T4 排在第 73 位(塞尔维亚)和第 141 位(尼加拉瓜)之间。然而,这些政府选择优先考虑公民的健康。愤世嫉俗者可能会说,这是一种收买:让我们继续执政,我们将为你提供医疗保健。但是,只有当公民本身重视健康和生命时,这种交易才会起作用。贿赂是很好的价值指标。
在此基础上,我提出塞尔维亚、波斯尼亚和黑塞哥维那、巴拉圭、厄瓜多尔和(特别是)尼加拉瓜这些国家是最重视生命和健康的地方。
在光谱的另一端…
…我们有以下支出不足者列表:
名单的这一端是两种类型国家的混合体:绝对消费水*相当高的极度富裕国家(新加坡、阿联酋、科威特、阿曼和卡塔尔),以及贫穷且治理不善(如果不是彻头彻尾的盗贼统治的话)的国家。这些国家都没有对公民特别负责的政治制度。在性别*等和妇女权利方面,大多数国家的排名很差。除了三个国家,其他国家都是穆斯林占主导地位。
相对医疗保健支出的扩大说明了重要的一点。不是每个国家都富裕。但是国家可以选择如何分配他们所拥有的资源。他们可以像巴基斯坦一样拥有庞大的军队和核武库。或者他们可以尽力照顾他们的人民,就像巴拉圭一样。这不是命运、历史或环境,而是一种选择。
This end of the list is a mixture of two types of countries: extremely wealthy states that spend a fair amount in absolute terms (Singapore, the UAE, Kuwait, Oman and Qatar), and countries that are poor and are poorly governed, if not outright kleptocracies. None of these countries have political systems that are particularly responsive or accountable to their citizens. Most of them rank very poorly with respect to gender equality and women’s rights. All but three are Muslim-dominated.
The spread in relative health care expenditures illustrates an important point. Not every country is rich. But countries can choose how they allocate the resources they do have. They can have a large military and a nuclear arsenal like Pakistan. Or they can try to take care of their people to the best of their ability, like Paraguay. It is not fate or history or circumstances, it is a choice.
哪个深度学习框架发展最快?
原文:https://towardsdatascience.com/which-deep-learning-framework-is-growing-fastest-3f77f14aa318?source=collection_archive---------2-----------------------
TensorFlow 与 PyTorch
2018 年 9 月,我在这篇文章中,从需求、使用情况、受欢迎程度等方面对比了各大深度学习框架。TensorFlow 是深度学习框架无可争议的重量级冠军。PyTorch 是一个充满活力的年轻新秀。🐝
在过去的六个月里,领先的深度学习框架的前景发生了怎样的变化?
为了回答这个问题,我看了看上的招聘信息,事实上还有、怪兽、 LinkedIn 和简单雇佣。我还评估了谷歌搜索量、 GitHub 活跃度、中等文章、 ArXiv 文章和 Quora 话题关注者的变化。总的来说,这些来源描绘了一幅需求、使用和兴趣增长的综合图景。
集成和更新
我们最*看到了 TensorFlow 和 PyTorch 框架的几个重要发展。
PyTorch v1.0 于 2018 年 10 月预发布,同时发布的还有 fastai v1.0。这两个版本都标志着框架成熟的重要里程碑。
TensorFlow 2.0 alpha 于 2019 年 3 月 4 日发布。它增加了新功能,改善了用户体验。它也更紧密地集成了 Keras 作为它的高级 API。
方法学
在本文中,我将 Keras 和 fastai 包括在比较中,因为它们与 TensorFlow 和 PyTorch 紧密集成。它们还提供了评估 TensorFlow 和 PyTorch 的尺度。
我不会在本文中探索其他深度学习框架。我希望我会收到反馈,认为 Caffe、Theano、MXNET、CNTK、DeepLearning4J 或 Chainer 值得讨论。虽然这些框架各有千秋,但似乎没有一个框架的增长轨迹会接* TensorFlow 或 PyTorch。它们也没有与这些框架紧密耦合。
搜索于 2019 年 3 月 20 日至 21 日进行。源数据在这个谷歌工作表中。
我使用了 plotly 数据可视化库来探索流行度。对于交互式 plotly 图表,见我的 Kaggle 内核这里。
让我们看看每个类别中的结果。
在线工作列表中的变化
为了确定今天的就业市场需要哪些深度学习库,我在 Indeed、LinkedIn、Monster 和 SimplyHired 上搜索了工作清单。
我用机器学习这个词搜索,后面跟着库名。于是用机器学习 TensorFlow 评测 TensorFlow。这种方法用于历史比较。没有机器学习的搜索不会产生明显不同的结果。搜索区域是美国。
我用 2019 年 3 月的房源数减去了半年前的房源数。以下是我的发现:
TensorFlow 的上市量增幅略高于 PyTorch。Keras 的上市量也有所增长,大约是 TensorFlow 的一半。Fastai 仍然没有出现在任何工作列表中。
请注意,PyTorch 在 LinkedIn 之外的所有求职网站上看到的附加列表数量都比 TensorFlow 多。还要注意的是,从绝对值来看,TensorFlow 出现在工作列表中的数量是 PyTorch 或 Keras 的*三倍。
*均谷歌搜索活动的变化
在最大的搜索引擎上的网络搜索是受欢迎程度的衡量标准。我查看了过去一年谷歌趋势的搜索历史。我搜索了全球对机器学习和人工智能类别的兴趣。谷歌不提供绝对搜索数字,但它提供相对数字。
我取了过去六个月的*均利息分数,并将其与之前六个月的*均利息分数进行了比较。
在过去的六个月中,TensorFlow 的相对搜索量有所下降,而 PyTorch 的相对搜索量有所增长。
谷歌下面的图表显示了过去一年的搜索兴趣。
TensorFlow in blue; Keras in yellow, PyTorch in red, fastai in green
新媒体文章
Medium 是数据科学文章和教程的热门位置。我希望你喜欢它!😃
在过去的六个月里,我用谷歌搜索了 Medium.com,发现 TensorFlow 和 Keras 发表的文章数量差不多。PyTorch 相对较少。
作为高级 API,Keras 和 fastai 受到新的深度学习从业者的欢迎。Medium 有很多教程展示如何使用这些框架。
新的 arXiv 文章
arXiv 是一个在线存储库,大多数学术深度学习文章都在这里发表。在过去的六个月里,我使用 Google 站点搜索结果在 arXiv 上搜索了提到每个框架的新文章。
TensorFlow 以明显优势获得了最多的新文章。
新 GitHub 活动
GitHub 上最*的活动是框架流行的另一个指标。我在下面的图表中列出了星星、叉子、观察者和贡献者。
TensorFlow 在每个类别中都有最多的 GitHub 活动。然而,PyTorch 在观察者和贡献者的增长方面非常接*。此外,Fastai 看到了许多新的贡献者。
毫无疑问,Keras 的一些贡献者正在 TensorFlow 库中研究它。值得注意的是,TensorFlow 和 Keras 都是由谷歌人带头的开源产品。
新 Quora 追随者
我添加了新 Quora 话题关注者的数量——这是一个新的类别,我之前没有这个数据。
TensorFlow 在过去六个月中添加了最多的新话题关注者。PyTorch 和 Keras 各自增加的要少得多。
一旦我有了所有的数据,我就把它整合成一个指标。
生长评分程序
以下是我创建成长分数的方法:
- 在 0 和 1 之间缩放所有特征。
- 汇总了在线工作列表和 GitHub 活动子类别。
- 根据下面的百分比进行加权分类。
4.可理解性的加权分数乘以 100。
5.将每个框架的类别得分汇总成一个单一的增长得分。
工作列表占总分的三分之一多一点。俗话说,金钱万能。💵这种划分似乎是各种类别的适当*衡。与我的 2018 power score analysis 不同,我没有包括 KDNuggets 使用调查(没有新数据)或书籍(六个月出版的不多)。
结果
以下是表格形式的变化。
Google Sheet here.
这是类别和最终分数。
这是最终的成长分数。
TensorFlow 既是需求最大的框架,也是发展最快的框架。它不会很快去任何地方。😄PyTorch 也在迅速发展。它的工作列表的大量增加证明了它的使用和需求的增加。在过去的六个月里,Keras 也增长了不少。最后,fastai 从一个低基线开始成长。值得记住的是,它是最年轻的。
TensorFlow 和 PyTorch 都是很好的学习框架。
学习建议
如果你想学习 TensorFlow,我建议你从 Keras 开始。推荐 Chollet 的 深度学习用 Python 和 Dan Becker 的 DataCamp 课程上 Keras 。Tensorflow 2.0 通过 tf.keras 使用 Keras 作为其高级 API,下面是由 Chollet 对 TensorFlow 2.0 的快速入门介绍。
如果你想学习 PyTorch,我建议你从 fast.ai 的 MOOC 程序员实用深度学习,v3 开始。您将学习深度学习基础、fastai 和 PyTorch 基础。
TensorFlow 和 PyTorch 的前景如何?
未来方向
我一直听说人们更喜欢使用 PyTorch 而不是 TensorFlow。PyTorch 更 pythonic 化,有更一致的 API。它还有原生的 ONNX 模型导出,可以用来加速推理。此外,PyTorch 与 numpy 共享许多命令,这降低了学习它的障碍。
然而,正如谷歌首席决策智能工程师 Cassie Kozyrkov 在这里解释的那样,TensorFlow 2.0 完全是关于改进的 UX。TensorFlow 现在将有一个更简单的 API、一个简化的 Keras 集成和一个热切的执行选项。这些变化,以及 TensorFlow 的广泛采用,应该有助于该框架在未来几年保持流行。
TensorFlow 最*宣布了另一个令人兴奋的计划:为 TensorFlow 开发 Swift。 Swift 是苹果最初打造的一种编程语言。在执行和开发速度方面,Swift 比 Python 有许多优势。Fast.ai 将把 Swift 用于 TensorFlow ,作为其高级 MOOC 的一部分——见 fast.ai 联合创始人杰瑞米·霍华德关于这个主题的帖子这里。这种语言可能不会在一两年内准备好,但它可能是对当前深度学习框架的一个改进。
语言和框架之间的协作和交叉肯定会发生。🐝 🌷
另一个将影响深度学习框架的进步是量子计算。可用的量子计算机可能还需要几年时间,但谷歌、IBM、微软和其他公司正在考虑如何将量子计算与深度学习相结合。需要对框架进行调整以适应这种新技术。
包装
你已经看到 TensorFlow 和 PyTorch 都在增长。两者现在都有不错的高级 API——TF . keras 和 fastai——降低了深度学习的入门门槛。你也听说了一些最*的发展和未来的方向。
要交互式地使用本文中的图表或分叉 Jupyter 笔记本,请前往我的 Kaggle 内核。
我希望这个比较对你有所帮助。如果你有,请分享到你最喜欢的社交媒体频道,这样其他人也可以找到它。😄
我撰写关于 Python、DevOps、数据科学和其他技术主题的文章。如果你对其中的任何一个感兴趣,请查看并在这里跟随我。
为了确保你不会错过精彩的内容,请加入我的 Data Awesome 简讯。
感谢阅读!
哪位民主党候选人获得了最多的新闻报道?
原文:https://towardsdatascience.com/which-democratic-candidate-gets-the-most-news-coverage-aa4312fb53db?source=collection_archive---------9-----------------------
2020 年总统竞选者的数据分析
在 2016 年的初选中,唐纳德·特朗普成功的一个关键是他吸引媒体注意力的能力。有人估计,对他竞选活动的痴迷、铺天盖地的报道提供了相当于 20 亿美元的免费广告。在 Twitter 和 24 小时新闻的时代,很明显,谁能抓住并保持媒体的兴趣,谁就在政治竞赛中拥有不可思议的优势。
随着 2020 年民主党竞选的白热化,我认为看看每位候选人的覆盖率会很有趣。今年我写了一些代码,从 18 个主要新闻网站上抓取文章。有了这些数据和其他数据,我分析了媒体对谁的关注最多,因此谁最有可能获得提名。
候选人新闻报道
比较候选人的一个简单方法是数一数有多少关于他们的文章。通过在新闻标题中搜索每个候选人的名字,很容易确定一篇文章的主题。使用这种方法,我生成了下面的图表。它显示了 2019 年 1 月至 4 月关于每个候选人的文章总数。
不出所料,领跑者乔·拜登、伊丽莎白·沃伦、伯尼·桑德、贝托·奥罗克和卡玛拉·哈里斯获得了最多的媒体报道。然而,这反映了所有的新闻渠道。通过将自由派和保守派的新闻来源分开,情况发生了一些变化。
似乎 MSNBC、CNN 和 Vox 等左翼网站更喜欢谈论伯尼,而福克斯新闻频道、每日来电和布莱巴特等保守派网站则更多地关注乔·拜登。同样值得注意的是,贝托·奥罗克在保守派网站上表现得更好,这表明他比其他候选人更像右翼读者的出气筒。
媒体势头
关于上述地块,重要的一点是,它们反映了今年所有的 3.5 个月。我们可以通过查看一段时间以来有多少关于每位候选人的文章来更好地了解这场的竞争。下面的图表显示了 2019 年每个政治家每周的文章数量。
卡玛拉·哈里斯和贝托·奥罗克
左边是关于卡玛拉·哈里斯的文章数量(每周),右边是关于贝托·奥罗克的文章数量。对于两位候选人,当他们第一次宣布参选时,我们看到媒体的兴趣激增(1 月是哈里斯,3 月是贝托)。然而,自那以后,关于每位候选人的文章数量急剧下降。可以说,双方都没有发现新的问题或新的故事来吸引注意力。
***
News Articles per week — Kamala Harris left : left Beto O’Rourke right*
伯尼·桑德斯和伊丽莎白·沃伦
与卡玛拉和贝托一样,伯尼·桑德斯(左)和伊丽莎白·沃伦(右)在首次宣布参选时都受到了媒体的广泛关注。然而,与这两人不同的是,沃伦和桑德斯都保持了合理的媒体关注度。整个三月,他们每周都有大约 20-30 篇文章。
***
News Articles per week — Bernie Sanders left : left Elizabeth Warren right*
乔·拜登和皮特·布蒂吉格
皮特·布蒂吉格是最后一个宣布参选的人,拜登预计也将很快宣布参选。正如我们从下图中看到的(左边是拜登,右边是 Buttigieg),两人都还处于公告高峰的中期。时间会证明他们是否能保持最初的兴趣。
**
如果我们把所有的候选人标绘在一起,我们可以比较他们各自的覆盖范围。我们还可以看到他们是如何一周又一周地相互吸引注意力的。虽然关于候选人的文章总数在增长,但争夺头条仍然是一个有限的游戏。
**
新闻情绪
尽管有这么一句话,所有的宣传未必都是好的宣传。通过调查候选人故事的情感,有可能看到关于他们写了什么样的东西。由于这是一场争取民主党提名的竞赛,我将只关注自由派新闻网站。
使用 library⁴情感量表,每篇关于候选人的文章都根据情感评分。正面文章给正面分,负面文章给 0 分以下。
我们可以看到,皮特·布蒂吉格似乎获得了最少的负面文章,而 Tulsi Gabbard 获得了最多。事实上,Tulsi 是如此的被自由派所憎恨,以至于关于她的报道在⁵.都是负面的在领先者中,我们看到贝托的故事是最积极的,其次是沃伦、桑德斯、拜登和哈里斯。
如果我们不看故事内容,而只看文章的标题,就会出现类似的画面。黑马杨安泽在正面标题方面名列榜首。这是有道理的,因为他的信息实际上是围绕着给人们钱。同样,不太受关注的科里·布克也表现不错。
用于描述候选人的词语
另一个观察媒体如何看待每个候选人的有趣方法是看用来描述他们的词语。通过分离出包含候选人名字的句子,并排除所有其他的,我能够为每个候选人生成单词云。在看标题之前,看看你是否能猜出哪个情节与哪个候选人有关。
***
left — Biden : right — Sanders* ***
left — Harris : right — Warren* ***
left — Beto : right — Buttigieg*
社会化媒体
正如我们从 2016 年所知,为一个政治家提供宣传的不仅仅是主流新闻。鉴于唐纳德·川普(Donald Trump)和 T2(Alexandria Ocasio-Cortez)使用 Twitter 的效率,我认为观察 2020 年竞选者的社交媒体追随者如何比较会很有趣。
不出所料,伯尼·桑德斯在社交媒体领域排名第一。有趣的是,科里·布克也有一大批追随者——如果动员得当,他们可能会很有影响力。查看 Twitter⁶的缓存版本,我还能看到每个候选人每月增加多少新粉丝。在这里,皮特·布蒂吉格脱颖而出,表明他的信息最*确实引起了民主党人的共鸣。
奖金——与 Trump 和 AOC 相比
这场竞选的一个有趣的方面是,最大的民主党明星甚至没有竞选总统。亚历山大·奥卡西奥-科尔特斯可能太年轻了,不能参加竞选,但如果她参加竞选,她显然是最受欢迎的。
当然,2020 年民主党竞选的获胜者仍将不得不面对媒体关注的巨人唐纳德·特朗普。在新闻报道方面,他继续让竞争对手相形见绌。
同样,如果我们看看他的推特粉丝,它比所有竞争对手加起来还多。
不过,就 Twitter 的势头而言,AOC 和皮特·布蒂吉格非常接*。
结论
民主党总统候选人提名的竞争还为时过早。在前几年,有人可能会说是第四党决定了第五党的提名人是⁷。然而,正如唐纳德·特朗普(Donald Trump)所证明的那样,社交媒体和分裂的媒体格局意味着,任何候选人都可以在不经过传统把关人的情况下积累大量追随者。随着竞争的白热化,我们可以预计,被报道最多的候选人也最有可能赢得人心。
笔记
与这个项目相关的所有代码都在 https://github.com/taubergm/2020DemocraticCandidates 的 GitHub 上
1—https://www . nytimes . com/2016/03/16/upshot/measuring-Donald-trumps-mammoth-advantage-in-free-media . html
2-这 18 个新闻来源是:politico、赫芬顿邮报、buzzfeed 新闻、cnn、msnbc、vox、npr、纽约时报、华尔街日报、洛杉矶时报、今日美国、华盛顿邮报、波士顿环球报、福克斯新闻、每日来电、infowars、breitbart
3——我用皮尤研究中心的调查结果来区分自由派和保守派。在这次演习中,自由派媒体包括赫芬顿邮报、buzzfeed 新闻、cnn、msnbc(视频摘要)、npr 和纽约时报
4 —我发现这个库在捕捉句子的情感方面做得很好。它以一种简单的单词分类器不会的方式考虑形容词修饰语—https://cran . r-project . org/web/packages/senmentr/senmentr . pdf
精英们似乎真的不喜欢塔尔西的反战信息【https://spectator.us/left-tulsi-gabbard/
6 —互联网档案馆是一个了解过去人们有多受欢迎的好地方—https://archive.org/web/
7—https://www . Amazon . com/Party-decisions-president-Nominations-American/DP/0226112373
你是哪种类型的数据专家?
原文:https://towardsdatascience.com/which-flavor-of-data-professional-are-you-5e01375584ce?source=collection_archive---------5-----------------------
扩展数据科学领域的实地指南
数据世界正在快速扩张,现在是我们开始认识到这个领域有多大的时候了,在其中的一部分工作并不自动要求我们成为所有领域的专家。不要期望数据人员能够做所有的事情,让我们开始互相询问,“你是哪一种人?”最重要的是,我们该问自己同样的问题了。
在数据世界的一部分工作并不自动要求我们成为所有数据的专家。
Image: Source.
免责声明: 我画这些漫画是为了帮助你开始一幅思维地图,但我们都知道现实生活并不总是线条分明。例如,一个人可能身兼数职,或者项目阶段可能被未计划的迭代混淆在一起。请不要因为缺乏细微差别而向我扔烂番茄。
注:我关于各种角色推荐录用顺序的文章在这里。
你从事哪一行?
现实世界应用的 ML/AI 汇集了与数据相关的每一个工作角色,从统计员到可靠性工程师。即使你已经研究了所有数据的东西(是的,没错),一天中也没有足够的时间让一个人独自做所有的事情,所以让我们进行一次数据科学生态系统中常见角色的快速狩猎,用一个厨房类比来解释。
一天中没有足够的时间让一个人独自做所有的事情。
如果你把你的工作翻译成你在食品行业的朋友们会感到自在的术语,哪一个是最合适的?(我原来的厨房类比文章是这里。)
数据工程 :来源和流程成分。这有两种方式:(1)提供数据集给数据科学家使用,以及(2)支持数据大规模交付。
如果你只是为自己的晚餐做点什么,杂货店购物很容易,但当你扩大规模时,琐碎的事情就变得错综复杂了——你如何获得、储存和加工 20 吨冰淇淋……而不让它们融化?规模使它成为一个复杂的挑战。类似地,当你为你的学校项目下载一个小的电子表格时,数据工程是相当容易的,但是当你处理 Pb 级的数据时,就令人头晕目眩了。
数据科学研究 :发明厨房电器新品种。你可以把这当成数据科学的理论研究面,也是 ML/AI/统计/优化的博士学位为你准备的。它是关于创造理论来扩展人类可以解决的问题的种类。
研究人员发明新东西。他们职业生涯的激情在于证明以前不可能的事情是可能的。他们倾向于一路享受工作原型,然后开始追逐下一个挑战。就厨房类比而言,它们都是关于电器蓝图的。也许他们会把这些蓝图变成一个能完成这项工作的装置,但是期望它被希望和胶带粘在一起…砰的一声关上,它就散架了。至于界面——当然,在研究人员的头脑中,按钮的顺序是有意义的,但是如果你试图使用它,你会沮丧地把头发拉出来。人性化?健壮?精心设计?算了吧!那是别人的工作。你的研究人员正忙着研究如何将传送能力植入微波炉。(你什么时候为你的行业团队聘请研究员?当你知道你需要心灵运输能力,但还没有人发明心灵运输。)
数据工具制作/*台工程 :打造人性化的家电,融入令人愉悦的厨房。这是为了给的数据科学家提供精美的工具和*台。
研究人员通常不会给你造出你实际上会 享受 使用的微波炉。这就是*台工程师的用武之地。这些人没有发明新的接线图或蓝图,他们让现有的可供大众消费。做这部分工作的团队聚在一起,埋头研究设计思维、可靠性和效率。他们做用户研究,以确保他们建立的工具你真的爱上了。不幸的是,你不会看到很多人进入一个空间,直到一些可怜的傻瓜通过证明不友好的版本有市场而遭受损失。在微波炉的早期,没有任何防呆型的产品在家庭用品商店里大量生产和销售。人工智能已经处于这种初级阶段很长时间了,但现在它被证明是有用的,工具制造商正在加紧努力!这是一个激动人心的时刻,因为你认为关于人工智能的许多困难不是智力上的,而是与工具质量相关的。随着工具变得更加用户友好,更多的人将开始进入人工智能,更多的创造力将蓬勃发展。
决策智能 :创新菜谱,服务菜品。你可以把这个当做数据科学的应用面。而是用数据和算法解决具体的业务问题。
决策智能团队的成员致力于配方创新。如果他们尝试的现有算法运气不佳,他们会带一名算法研究员上船,如果他们需要友好的工具,他们会带一名*台工程师到团队,但他们也很乐意外包这些功能。他们对烹饪更感兴趣——不仅仅是任何一种烹饪。他们是一种不同的研究者,是那种通过发明令人敬畏的特制配方来解决不可能的商业问题的研究者。厨房用具和原料仓库一个接一个,他们的目标是找出如何让你吃到米其林星级无热量披萨。
如果你在应用 ML/AI 领域,让我们弄清楚你在哪个项目阶段工作,然后放大来找到你的角色。
应用 ML/AI 的项目阶段
在现实生活中,经常会涉及到迭代和回溯,但以下是大致的阶段。
准备:在我们去厨房玩之前,让我们弄清楚我们的目标是什么,集合团队,然后布置好我们的厨房。如果我们想要使用微波炉,那就去买吧。如果我们想要传送点,让我们试着发明它们。
原型:假设我们的目标是制作一种尝起来像真香肠的素食无热量香肠。需要多长时间?谁知道呢!你的厨房正等着你——祝你好运!
生产:我们有一个符合要求的配方,让我们在全世界服务十年……
加速阶段的角色
决策者/产品经理:我们想为客户提供什么服务,需要做到多好?你发号施令,提出计划。点击阅读更多。
数据工程师/建筑师:准备好卡车,建立仓库,为大规模管理原料制定物流计划。在这里阅读更多。
我们希望在厨房里有一个传送器。发明一个。在这里阅读更多。
工具制造者/*台工程师 —研究人员的原型传送器是用胶带和希望粘在一起的。造一个我们摔门时不会散架的。这个类别包含了传统软件团队中的所有角色,从设计师到软件工程师。在这里阅读更多。
最后三个角色可以外包——例如,外包给 云提供商——如果你不想处理厨房设置或运输之类的事情。
确保你确切地知道你卖的是什么:数据?算法?让别人做 AI 的工具?恰好使用 AI 的解决方案?我的建议是专注于你的核心业务,尽可能让别人替你照顾休息。
原型阶段的角色
分析师:杂货铺和厨房一片漆黑。我们不知道从哪里开始。你是唯一一个有手电筒的人。你的工作是通过帮助你的团队发现和探索可能性来加速项目。点击阅读更多。
数据工程师:想办法给我们弄来两万吨冷冻胡萝卜;不要让它们解冻。在这里阅读更多。
人工智能工程师:去厨房修补一下,直到你做出味道像真的一样的无卡路里素食香肠。在这里阅读更多。
统计员:我们应该把这道菜加到菜单上吗?这取决于你,以确保提出的食谱足够好,以满足要求。在这里阅读更多。
生产阶段的角色
人工智能工程师:我们有一个惊人的原型配方。调整它,做工程,让我们大规模地服务它。需要的时候帮忙维护。点击阅读更多。
可靠性工程师:安排生产并建立安全网,这样我们就能可靠地提供我们的食谱,即使树莓短缺。在这里阅读更多。
分析师:监控生产,如果出现问题就发出警报。在这里阅读更多。
统计学家:进行现场实验,验证用户是否满意,食谱是否继续符合要求,尤其是如果我们考虑批准对秘制酱料进行调整的话。点击阅读更多。
所有项目阶段的角色
决策者/产品经理:指引我们,亲爱的领导!你发号施令。在这里阅读更多。
定性专家/决策科学家/数据翻译:如果决策者对食品一无所知,但还是负责,你就需要在他们和其他人之间做翻译。点击阅读更多。
顾问/专家:你是决策者就某个特定话题(如道德、UX 等)寻求建议的人。点击阅读更多。
技术人员:你是帮助完成工作的人,尽管你的角色没有明确地列在这个列表上。这并不意味着我们可以没有你!传统软件项目中的所有标准角色——从开发人员到项目经理到人事经理——在 ML/AI 厨房中都有它们的位置。
要了解更多相关概念的生态系统,请参阅我的文章决策智能简介。
感谢阅读!人工智能课程怎么样?
如果你在这里玩得开心,并且你正在寻找一个为初学者和专家设计的有趣的应用人工智能课程,这里有一个我为你制作的娱乐课程:
Enjoy the entire course playlist here: bit.ly/machinefriend
喜欢作者?与凯西·科兹尔科夫联系
让我们做朋友吧!你可以在 Twitter 、 YouTube 、 Substack 、 LinkedIn 上找到我。有兴趣让我在你的活动上发言吗?使用表格取得联系。
最好的日本动漫工作室是哪家?
原文:https://towardsdatascience.com/which-is-the-best-japanese-anime-studio-f44fa642a03e?source=collection_archive---------30-----------------------
从不同角度看动画工作室
由艾里刘和巴维什贝拉拉
Photo by Bruce Tang on Unsplash
如今,动画已经变得越来越主流,它的市场继续在全世界扩张。2017 年,动漫市场创下了 198 亿美元的销售新纪录,这在很大程度上归功于海外需求(Jozuka,2019)。这个快速发展的行业引发了人们研究它的兴趣,我们也是其中的一部分。根据我们的在线调查,一些动漫迷出于对动漫的热情和对行业的好奇,自己进行了分析。他们的作品包括创建动漫排行榜、分析偏好动漫流派的变化趋势、动漫受众的人口统计学特征(Bilgin,2019;拉菲克,2019;过度溶解,2019)。除此之外,日本动画协会一直在发布关于日本动画产业的年度报告,这已经成为关于动漫产业的在线分析的主要来源之一(AJA,2019)。
这些作品虽然很有见地,但没有一部是专门看动漫工作室的。互联网上已经有一些动漫工作室的排名,而它们只是基于主观的网络投票(Teffen,2017;Lindwasser,2019)。因此,通过对动漫工作室的客观分析,启发我们填补空白。更具体地说,我们将评估:1)哪个动漫工作室是最成功的工作室;2)成功工作室的特征是什么?
数据源
我们能够获得 Kaggle.com 动漫的详尽数据集(MyAnimeList 数据集,2018)。这个数据集几乎有 2Gb 大,包含 3 个子数据集:“动画列表”、“用户列表”、“用户动画列表”。还有这些数据集的过滤数据和清理数据版本。总体而言,该数据集从 302,675 个独立用户和 14,478 部独立动画中获取数据。
我们主要利用了 AnimeList 数据集,该数据集包含 31 个列,如动画名称、动画 ID、工作室、流派、评级、喜爱(某个动画被添加到用户喜爱列表中的次数)、流行度(有多少人观看了该动画)等。
数据准备
由于原始数据集是基于动画的,并且一部动画可以由存储在一个单元中的多个工作室制作,所以我们的第一步是将不同的工作室分成多个列。之后,我们使用 pivot 选项将多个工作室分成单独的行。我们还使用相同的技术拆分包含多种风格的列。
然后为了全面分析动漫工作室,我们创建了一个涵盖不同方面的公式:整体工作室评分=人气评分+忠实观众评分+动漫质量评分+动漫数量评分。对于每个动漫工作室来说,分数越高意味着排名越高。再进一步阐述四个标准: 1) 人气评分 (该工作室制作的所有动漫的受众总和除以该工作室制作的动漫数量)看该工作室动漫的*均受欢迎程度; 2)忠实观众评分 (动漫被加入自己喜爱列表的总次数除以工作室出品动漫的观众总数)看工作室的动漫能有多成功地将一个普通观众转化为忠实粉丝; 3)质量评分 (工作室制作的所有动漫的*均评分)查看工作室作品的*均质量;4) 数量评分 (工作室制作的动漫总数)。在把四个分数加起来之前,我们还把它们标准化了,使它们在同一个尺度上。
那么,谁是赢家?
在计算了所有工作室的总分后,我们得到了我们的获胜者:东映动画。综合得分 441.3,比第二工作室高 68。
Source: https://www.anime-planet.com/anime/studios/toei-animation
我们还强调了将在以下段落中详细分析的前 20 个工作室。
Figure 1. Top 20 studios scores
工作室如何根据我们设定的不同标准开展工作
我们感兴趣的不仅仅是每个工作室的总体分数,还有他们个人的分数。因此,我们创建了四个散点图,同时显示总体得分和其他标准。每个点代表一个工作室(见图 2)。我们还应用了颜色来显示工作室的总体得分,因此更容易识别模式:一个点越绿,它在我们的排名中就越高(它获得的总体得分越高),而越红,它在排名中就越低。
1。目前的动漫产业由大型工作室主导
可见顶级工作室和“正常多数”之间的差距是巨大的。很少有工作室是绿色的,大多数是橙色或红色的,这意味着它们在我们的排名中得分很低。这一结果反映了当前的动漫产业结构,即由大型工作室主导,而由于预算限制,小工作室很难生存(Margolis,2019)。
Figure 2. Scatterplots of studio scores
2。热门工作室有不同的策略。他们有的针对大众市场,有的针对小众受众群体。
至于顶级工作室,它们都获得了不错的质量分数(见图 3)。然而,这些工作室在受欢迎程度、每部制作的动漫拥有多少忠实观众以及制作的动漫数量方面的表现却大相径庭。
Figure 3. Highlighted top studios in the scatterplots
比如 top one 工作室:东映动画获得了很高的数量分,这意味着它制作了大量的动漫(见图 4)。因此,东映动画的整体人气也很高。再者,忠实观众评分也是有竞争力的。这意味着在看了东映动画的作品后,很多观众把它加入了他们的最爱。尽管如此,*均人气得分还是比较低的,这说明东映动画制作的动漫并不是都受到普通大众的欢迎。然而,京都动画的情况完全不同。京都动画在我们的排名中排名第 8。类似东映动画,有着高质量的评分,甚至比东映动画还高一点点。虽然京都动画制作的动画比东映动画少得多,因此一般来说它在动画观众中并不那么受欢迎。尽管如此,它的*均受欢迎程度要高得多,这反映出即使京都动画也不是那么“多产”,他们制作的每部动画都是高质量的,其中大多数都会受到普通大众的欢迎。
Figure 4. Toei animation (left) and Kyoto Animation(right) highlighted in the scatterplots
工作室如何相互合作
该数据集还显示了不同工作室之间在制作动漫方面的大量合作。如图 5 所示,我们已经在一个图中可视化了所有的工作室,并用网络图突出显示了它们之间的联系。节点的大小表示该工作室与其他工作室合作的总次数。规模越大,协作数量越高。疯人院在制作动画时更喜欢合作。而节点的颜色表示工作室在我们计算的排名中的排名。红色阴影越深,工作室在我们的排名列表中的排名越好。此外,连接两个工作室的线的粗细取决于这两个工作室合作制作的独特动画的数量。更粗的线意味着两个工作室之间更高的协作实例。
Figure 5. Network graph of studio collaboration pattern
并非所有顶级工作室都是积极的合作者,他们有时也会与小工作室合作。
出乎意料的是,尽管排名靠前的顶级工作室往往是主要合作者,但他们在其他工作室中的受欢迎程度并不总是与他们的总体分数成正比。此外,顶级工作室不一定只与顶级工作室合作。例如,尽管东映动画是排名第一的工作室,但与疯人院、Production I.G .和 Sunrise 等工作室相比,合作频率较低(见图 6)。东映动画和它的合作者之间的关系也很弱,因为界限相对较窄,这意味着他们没有合作很多动画。
Figure 6. Toei animation highlighted in the network graph
所有电影公司中最受欢迎的类型是什么:动作片、冒险片和奇幻片
由于我们的数据集中存在各种各样的动漫类型,我们有兴趣找出最受欢迎的类型。我们通过创建一个包含我们数据集中所有动漫类型的单词云来做到这一点(见图 7)。这样做之后,我们能够确定“喜剧”是最受欢迎的类型,紧随其后的是“动作”、“冒险”和“幻想”类型。除此之外,“浪漫”、“科幻”、“戏剧”、“生活片段”和“儿童”也是主要类型。
Figure 7. Word Cloud of popular anime genres
前 20 大工作室分析
接下来,我们决定只关注排名前 20 的电影公司,看看他们是否有任何使他们成功的相似策略,或者他们是否有自己独特的策略。
1。前 20 大电影公司中的前 3 大类型是喜剧、动作片和冒险片。
如图 8 所示,我们决定制作一个柱形图来显示排名前 20 的电影公司的类型构成,以了解他们的策略。为了使可视化更具可读性,每个工作室只显示前 10 个流派,而前 10 个流派被分组在“其他”下。工作室也根据他们的排名进行了分类。
可以看出,大多数顶级工作室的流派构成非常多样化。他们不再局限于几种动漫类型。这里的流行类型与所有动漫工作室之一一致,其中“喜剧”排在第一位,其次是“动作”和“冒险”。虽然“魔法”这一类型在顶级工作室中比在所有动画工作室中更受欢迎。
Figure 8. Stacked bar chart of genre composition for the top 20 studios
2。排名前 20 的工作室大多制作 PG-13 动画。
另一个引起我们注意的数据字段是“Ratings”列。为了找到我们排名前 20 的工作室的大多数动画所属的最高评级类别,我们创建了一个树形图(见图 9)。这样做有助于我们确定“PG-13”分级类别是最受欢迎的分级类别,占前 20 大工作室制作的所有动画的 50%以上。
Figure 9. Treemap of rating composition for the top 20 studios
3。排名前 20 的工作室一半以上的动画制作不到 50 集。
在为排名前 20 的工作室工作时,我们惊讶地发现这些顶级工作室为他们的每部动画制作的剧集数量。为了确定这是一个反复出现的趋势还是只是一个异常现象,我们创建了一个方框图,其中来自这 20 家顶级工作室的所有动画都绘制在一个图表上,并根据每个工作室的剧集数量进行排列(见图 10)。
这种形象化突出表明,工作室首先喜欢为一部动画制作少于 50 集的剧集,然后如果这 50 集为该剧制造了炒作,就制作更多的剧集。这可以解释为 20 个顶级工作室中有 19 个为超过 50%的动画制作了不到 50 集。此外,还有一些非常受欢迎的动漫,如龙珠 Z、火影忍者和漂白剂,与同一工作室制作的动漫相比,其剧集数量非常高。
Figure 10. A box plot of anime episodes by the top 20 studios
局限性和未来工作
虽然我们能够从我们的可视化中挖掘出一些有趣的见解,但我们仍然希望承认我们在这个项目中面临的某些限制。
- 由于我们的数据集是从 MyAnimeList 中提取的,因此它仅限于该网站的用户,其中大多数用户来自美国、英国、加拿大、俄罗斯和巴西。然而,日本和中国等其他国家也拥有庞大的动漫消费群体。虽然这些观众倾向于使用不同的网站来观看或评论动画,因此不包括在数据集中。因此,如果我们可以用其他不同的数据集来补充该数据集,我们将能够获得更全面的分析。
- 在我们的公式中可以考虑更多的事实。例如,我们还可以比较工作室的收入,这将为我们分析工作室提供商业视角。在这个项目中,我们试图收集这样的数据,但由于时间和资源的限制,我们无法找到完整的数据。
链接到可视化演示
请随意通过这些链接与我们的可视化文件进行交互。由于 Gephi 的性质,我们无法在线分享网络图。如果你感兴趣,请随时发消息,并要求该文件。尽情享受吧!
[## 散点图
scores of fallanimestudios
public.tableau.com](https://public.tableau.com/views/Scoresofanimestudios/Dashboard1?:display_count=y&publish=yes&:origin=viz_share_link) [## Wordcloud
万物有灵
public.tableau.com](https://public.tableau.com/views/Wordcloudofanimegenres/Dashboard1?:display_count=y&publish=yes&:origin=viz_share_link) [## 堆叠条形图
Top20StudiosGenreComposition
public.tableau.com](https://public.tableau.com/views/Top10genrescompositionoftop20studios/Dashboard1?:display_count=y&publish=yes&:origin=viz_share_link) [## 树形图
top 20 studiostratingcomposition
public.tableau.com](https://public.tableau.com/views/AnimeratingcompositionoftheTop20studios/Dashboard1?:display_count=y&publish=yes&:origin=viz_share_link) [## 箱线图
Top20StudiosEpisodes
public.tableau.com](https://public.tableau.com/views/HowmanyepisodesdoesTop20studiosprefertoproduceperanime/Dashboard2?:retry=yes&:display_count=y&:origin=viz_share_link)
参考文献
AJA (2019)。动漫行业数据。检索于 2019 年 12 月 10 日,来自https://aja.gr.jp/english/japan-anime-data
f .比尔金(2019)。动漫的故事。检索于 2019 年 12 月 10 日,来自https://www.kaggle.com/fatihbilgin/story-of-anime
Jozuka,E. (2019 年 7 月 29 日)。动漫如何塑造日本的全球身份?2019 年 12 月 10 日检索,来自https://www . CNN . com/style/article/Japan-anime-global-identity-hnk-intl/index . html
Lindwasser,A. (2019)。有史以来最伟大的 15 个动画工作室,排名。2019 年 12 月 10 日检索,来自https://www . ranker . com/list/best-anime-studios-of-all-time/Anna-lindwasser
Margolis,E. (2019)。日本动漫产业的阴暗面。检索于 2019 年 12 月 10 日,来自https://www . vox . com/culture/2019/7/2/20677237/anime-industry-Japan-artists-pay-labor-abuse-neon-genesis-evangelion-网飞
MyAnimeList 数据集。(2018).检索于 2019 年 12 月 10 日,来自
https://www.kaggle.com/azathoth42/myanimelist。
过度溶解。(2019).动漫:好的,坏的和受欢迎的。检索于 2019 年 12 月 10 日,来自https://airelevant.netlify.com/post/popular_anime/
拉菲克·h .(2019 年)。分析 r .中的动漫数据检索于 2019 年 12 月 10 日,来自https://towards data science . com/analyzing-Anime-data-in-r-8d2c 2730 de 8c
泰芬。(2017 年 8 月 27 日)。日本粉丝最喜爱的 10 个动漫工作室。检索于 2019 年 12 月 10 日,来自https://goboiano . com/the-10-most-loved-anime-studios-ranking-by-Japanese-fans/