人造神经疾病
边疆是最有趣的生命组合的宿主。
正常人类行为的边界在哪里?什么是人格,什么是疾病?是什么让我们超越了这些边界?
在他的书《把妻子错当成帽子的人》中,奥利弗·萨克斯用精致的风格、机智和同情讲述了几个神经学病例的汇编,讲述了一个患有视觉失认症(无法理解你所看到的东西)的 P 医生的故事。P 博士是一名音乐教授和著名的音乐家,他通过音乐和视觉输入了解周围的世界。他在自己的活动中(穿衣服、吃午饭)或在他的环境中(某人走路的方式)诉诸某种节奏来识别那些活动并知道他必须做什么。正如萨克斯博士在他的书中写道:“他一直在唱歌——吃饭的歌、穿衣的歌、洗澡的歌,什么都唱。他什么也做不了,除非他把它变成一首歌”。P 博士认不出一朵花,而是对他面前的东西进行了丰富而详细的描述(“大约 6 英寸长,一个令人费解的红色形状,带有一个线性绿色附件。”).直到他闻到了(“美!早起的玫瑰。多好的天香啊!”).他不能理解在他左边视野中的东西,但是这样生活没有问题:他没有意识到他感知周围世界的方式有任何错误。虽然当他的“内心音乐”不流动时,他会完全停下来,但他不会认为这是不寻常的事情,是需要注意的事情。也就是说,他完全不知道发生了什么。
人类的认知在很大程度上仍然是一个谜,但从我们所知道的来看,我们理解我们的环境并适应它的能力似乎与几个复杂系统的紧密集成有关。就视觉而言,根据前面的故事,数以百万计的刺激从视网膜传播到与视觉相关的皮质区域;它们在视觉皮层不同深度的几个层中进行处理,然后每个层的输出连接到大脑的许多其他区域,这些区域与几个功能相关:处理语义、记忆、情感、规划、运动等的区域。听觉刺激、嗅觉等也是如此。回忆也是。大脑实时连接和处理所有这些刺激。情感、行为和存在感从这一切中浮现出来。
但是如果许多连接失败了会发生什么呢?当一群神经元的行为不同于正常时。当一种神经递质无法产生时。还是当你的某个感官突然工作不一样,也就是刺激不期而至的时候?奥利弗·萨克斯在其整个写作作品中出色地呈现了许多这样的案例。对现实的感知,其中缺少了一些东西。对于没有这些条件的人来说,这种感觉很难用语言描述,也很难从第一人称的角度来想象。神经疾病就像意识本身一样,是由执行相对简单任务的几个系统的相互作用产生的,其中一个或多个元素略有异常。这不仅仅是改变了对现实的认知。这是一个非常广泛的功能模式,其中一些我们认为是疾病,一些我们认为是“人格类型”,一些仅仅是一个人生活中的轶事。区分疾病、古怪行为和强烈个性超出了本文的范围,值得暂停思考。
正如美国生命体中存在各种各样的现实感知和行为一样,今天的产品和服务也开始表现出它们自己的各种行为,这要归功于我们人类融入其中的人工智能(AI)系统。为了简单起见,让我将 AI 作为一个广义的术语,从简单的机器学习技术到协调运行的复杂算法集合。
几乎每一个值得尊敬的数字产品和行业都有某种这样的东西。接下来听什么?Spotify,Pandora 会对你可能喜欢的东西做出很好的猜测,这是人工智能的一种简单形式(在这种情况下,是一种机器学习推荐系统)。今天去哪里吃饭?有一堆应用程序在挤压它们的算法来得到一个你会喜欢的建议。如何协调一个机场的地勤人员在当今现代化、繁忙的机场为尽可能多的飞机服务?有一个人工智能,用于医疗服务、能源分配系统和几乎所有你能想到的东西。这很好,因为人工智能使新产品、更高的效率、对世界人口的扩展服务等等成为可能。也就是说,当他们健康的时候。
我们正处于人工智能系统漫长进化历史的早期阶段。他们的行为过于简单,他们的语境互动范围有限。生病或不良行为的后果也是有限的。但是随着系统变得越来越复杂,它们的交互范围和行为也变得越来越复杂,反过来,它们的潜在含义也变得奇怪或出乎意料。这些未来的系统看起来怎么样?随着神经系统变得越来越复杂,我们从简单的变形虫一直进化到我们人类。随着人工智能系统复杂性的增加,我们得到了…我们得到了什么?
自动驾驶汽车。自动飞行和自动操作的相机,智能地跟随你,选择视角,为你的生活创造独特的记忆。可以给餐馆打电话订餐的机器。帮助医生在手术过程中实时突出 AR 肿瘤并提供反馈的系统。这些是我们已经拥有的。我们将何去何从?帮助我们“看到”我们面前事物的联系的混合人类-人工智能系统。自主经营公司的机器。航空旅行完全由人工智能控制。智能茶壶。当你独自一人感到有点忧郁时,沙发会让你感到温暖。无论你能想象到什么。
a self-driven car possessed by the spirit of a mentally ill artificial intelligence (sort of)
就像神经疾病是由于我们的神经系统越来越复杂而出现的一样,人工神经疾病将出现在我们构建的越来越复杂的人工智能系统中。出于同样的原因,他们也会这样做:在日益复杂的系统中,意想不到的联系会带来意想不到的后果。
人工神经疾病本身并不是一种典型的错误。它们可能是由一个经典的 bug 触发的,有些可能是由意想不到的感官输入触发的。有些是由他们需要适应的实时数据/环境的历史决定的。有些是由构成人工智能的不同系统之间意想不到的相互作用造成的。这些是让我着迷的地方。我们将见证意想不到的行为,新出现的行为,这些行为我们没有编码,我们没有训练这些系统。对于人工智能的任务来说,看起来不合理的行为。奇怪的行为。也许是这样的:
人为自闭症?自闭症患者的大脑显示出紧密相连的局部区域,以及大脑中不同区域之间较差的连接模式。怎么会这样呢?由几个一起工作的模型组成的人工智能,如果学习率没有得到适当的调整,最终可能会表现出类似的模式。将不同模型连接在一起的模型可以在它们之间分配很少的依赖性,将低值分配给它们的耦合变量。一些单独的模型可能开始过度拟合。一辆患有自闭症的自动驾驶汽车可能最终只关注红绿灯,而不关注其他任何事情,并且在某个特定区域行驶,拒绝去其他任何地方。优步的自动驾驶车祸是这种情况的早期迹象吗?未能考虑所有的输入,而是只关注部分可用信息?(我们知道事实并非如此,但可能很快就会如此)。
人为的偏执?向视觉和推理引擎提供图像的相机中的一些灰尘可能会从视觉系统触发意想不到的结果,从而推动推理系统对周围事物的广泛理解。如果这个系统连接到其他正在进行某种无监督学习的系统,这种影响会在系统中持续很久。自动飞行的摄像机开始看到它们不在的地方的障碍物,并选择飞到树上。
人造幻觉?一个管理可再生能源发电厂的天气预测算法遇到了一个奇怪的低风速时期,其反馈回路没有为此进行训练。它开始产生毫无意义的幻觉预测,导致能量网络的不正确平衡。我们已经看到了金融市场的闪电崩盘,这是早期症状吗?
人工抑郁症?谷歌 Duplex 在餐厅接听预订电话,询问人们为什么在生活糟糕的时候还想出去吃饭。
人工智能目前的发展并不指向一个充满蓬勃发展的通用人工智能的不远的未来。我们可能不会看到嵌入在 Alexa 或 Google Now 或任何其他此类服务中的自然语言算法发展成妥瑞综合症,并表现出发声抽搐甚至排便困难(变得口齿不清,“你所在的地区交通拥挤,你将遭受 10 分钟的延迟,去你妈的”)。然而,在短期内,我们可能会发现越来越多的情况,我们无法真正解释为什么你的自动驾驶汽车在停车时会刮擦其他汽车的保险杠,而当你开始你们的共同关系时,它从来没有这样做过。我们已经见证了聊天机器人可能会完全偏离它们的初衷:微软的 Tay 臭名昭著的事件是进入患有人格障碍的青少年人工智能之旅的开始。它可能会在某个时候发展成妥瑞症。
很难预测这些人为的神经疾病在现实世界中会如何发展。广泛的人工智能技能和能力水平使其基本上是一个一个的审查案例。当我们的机器出现这些疾病时,我们能教我们的人工智能停下来想一想发生了什么吗?如果他们不知道自己在做什么就停止执行死刑?如果他们患上了和奥利弗·萨克故事中的 P 医生一样的疾病,也许他们不能。
这要求对这些问题有新的看法。人类发展了心理学、精神病学、神经学等科学。也许我们需要在机器心理学、机器神经病学和机器精神病学领域培训我们当前数据科学家的一个分支。人工神经学家,人工心理学家,人工精神病学家。有了机器学习,我们现在有了…正在学习的机器。也许很快就是学习那些学习机的时候了。因为从某种意义上来说,它们确实不受我们的控制。
我们今天能做什么?一些想法:
1)改善教育,提高认识。已经有很多(必要的)谈论关心我们注入到算法中的偏见,我们如何应用这些算法的道德维度,我们将它们应用于哪些问题,由于算法的训练方式,我们在社会中灌输的行为变化,等等。这个列表可以增加关心我们人工智能的精神健全的概念。心理健康检查。或许类似于《银翼杀手》中应用于复制人的“同理心测试”,但其设计不是为了测试“复制性”,而是为了测试正确的算法健康(有一些值得注意的检查偏差的提议,例如图灵盒;也有像算法观察这样的组织,但是这些都集中在伦理/偏见等方面。还不在正确的算法健康上)。
2)建立最佳实践,其中算法总是与所做的假设集、所用的训练数据集、所用的测试数据集、学习度量、成本函数等一起发布。因此,人工神经精神病学家或人工神经学家可以更好地理解潜在的病理。以及不同的系统是如何互连的(因为我们谈论的是几个相互交织的人工智能一起工作的产品/服务)。他们准备应对哪些情况。对了,要是有这些给人类就太好了!所以我们会知道对自己有什么期望。
2)设计最小化这些影响的系统,也许通过拒绝不可解释的方法。但他们目前的性能如此吸引人…或者以一种容易执行某种人工磁功能共振的方式设计系统,例如:一些让我们“看到”算法现在如何工作的程序。
3)对你的数字产品设计采用整体方法:使用了解人和机器的人来理解新的关系、含义和一切。这可以让我们为潜在的算法心理健康问题做更好的设计。
4)避免数字!问朋友听什么,去哪里吃饭,自己开车。爱你爱的人,而不是花太多时间在你的机器上。
从现在开始,这一切都会发生。或者不是。同时,回到开始的问题,正常行为的边界在哪里?它在爱开始的地方结束。但是如何应用于人工智能是另一篇文章的主题。
平均而言,你使用了错误的平均值:数据分析中的几何与调和平均值
当意思不是你想的那样
前言
(如果你已经搜索了“集中趋势”,跳过这一步)
Comparison of the arithmetic, geometric and harmonic means of a pair of numbers (via Wikipedia)
这可能是最常见的数据分析任务:
你有一堆数字。你想用更少的数字来概括它们,最好是单个数字。所以你把所有的数字加起来,然后除以数字的总数。嘣:看“平均值,对吧?
也许吧。
与普遍的看法相反,从数学上来说,平均值实际上并不是一个东西。含义:没有数学运算恰当地称为“平均”。我们通常所说的平均 就是“算术平均”,也就是上面所说的众所周知的运算。我们称之为“平均值”,因为我们希望它符合“平均值”的通俗定义:典型的、“正常的”或中间值。我们经常是正确的,但比我们想象的要少。
汇总统计数据
算术平均值只是得出“平均值”的许多方法中的一种。更专业地说,这些被称为“汇总统计”、“集中趋势度量”或“位置度量”。
第二个最著名的汇总统计可能是中值,数据集的字面中间值(因此,通常比平均值更“平均”)。我不会在这里讨论这个问题,但足以说明的是,在许多情况下,当中位数更合适时,算术平均值被过度使用了。延伸阅读此处,此处&此处(最后一个和本文其余部分有点重叠,很好)。
本文将重点介绍两个鲜为人知的度量:&谐音 意为 。
****第一部分从概念上、直觉上&实际理解它们如何工作&何时使用它们。
第二部分 是一个单独的帖子&更深入一点&更技术性,用 R 代码演示各自的动态,真实&模拟数据&剧情。
一.毕达哥拉斯的意思是
A geometric construction of the Quadratic and Pythagorean means (of two numbers a and b). via Wikipedia
****算术平均数正好是 3 的 1’毕达哥拉斯的意思是’(以研究他们比例的毕达哥拉斯&之流命名)。如前所述,周正 & 谐音 意为圆出三重奏。
为了理解它们如何工作的基本原理,让我们从熟悉的算术平均值开始。
等差中项
算术平均值被恰当地命名为:我们通过将数据集中的所有数字相加,然后除以数据集中的所有数字(以便将总和降低到原始数字的比例)。**
3 + 8 + 10 = 21 21 ÷ 3 = 7 **Arithmetic mean** = **7**
注意,我们在这里本质上说的是:如果我们数据集中的每一个数字 都是同一个数字 ,那么为了拥有与我们实际数据集相同的 ***sum***
又会是什么数字呢?
但是加法没什么特别的。这只是一个相当简单的数学运算。当数字之间存在加性关系时,算术平均值可以很好地产生数据集的“平均”数字。这种关系通常被称为“线性”,因为当以升序或降序绘制时,数字往往落在一条直线上或直线周围。一个简单的理想化示例是数据集,其中每个数字都是通过将前一个数字加 3 而产生的:
1, 4, 7, 10, 13, 16, 19…
因此算术平均值给了我们一个非常合理的中间值:
(1 + 4 + 7 + 10 + 13 + 16 + 19) ÷ 7 = **10**
但是并不是所有的数据集都可以通过这种关系得到最好的描述。有些具有乘法或指数关系,例如,如果我们将每个连续数字乘以 3,而不是将加上 3,如我们上面所做的:
1, 3, 9, 27, 81, 243, 729…
这就产生了所谓的(提示提示)。当按顺序绘制时,这些数字更像一条曲线,而不是直线。
在这种情况下,算术平均值不适合产生一个“平均”数来总结该数据。
(1 + 3 + 9 + 27 + 81 + 243 + 729) ÷ 7 = **156.1**
与我们数据集中的大多数数字并不十分接近。事实上它比 5x 的中位数*(中间数),也就是 27 。***
当数据绘制在扁平数字线上时,这种偏斜更加明显:
那怎么办呢?
介绍…
几何平均数
因为关系是乘,为了找到几何平均数*,我们乘而不是加所有的数。然后,为了将乘积重新调整回数据集的范围,我们必须取*root*
,而不是简单的除法。还记得*square root*
吗:需要平方的数才能得到我们感兴趣的数。***
Square root of 25 = 5, because 5 * 5 = 25
这是相同的想法,但我们需要找到将被提升到 7 次幂的数字来产生我们的乘积,而不是提升到 2 次幂(也称为“平方”),因为我们的数据集中有 7 个数字,我们将它们相乘。这通常被称为*n*th root
,其中*n*
是数据集的大小。因此,我们需要找到7th root
。
请注意,我们在这里所说的是:如果我们的数据集中的每个数字 都是同一个数字 ,那么为了拥有与我们实际的数据集相同的乘法该是什么数字呢?****
因此,我们数据集的几何平均值是:
1 * 3 * 9 * 27 * 81 * 243 * 729 = 10,460,353,203 7th root of 10,460,353,203 = 27 **geometric mean** = **27**
在数字行上:
在这种情况下,我们的几何平均值 非常类似于数据集的中间值 。其实相当于中位数**。**
注意:几何平均值不会总是等于中值,只有在所有数字之间存在精确一致的乘法关系的情况下(例如,将之前的每个数字乘以 3,正如我们所做的)。真实世界的数据集很少包含这种精确的关系,但是对于那些近似这种乘法关系的数据集来说,几何平均值将给出比算术平均值更接近的“中间数”。
几何平均的真实世界应用
事实证明,几何平均有许多实际用途,因为现实世界中存在大量的乘法关系。
一个典型的例子是:
复利
假设我们有$100,000
,它为5 years
每年累积不同的利率:
annual interest rates: 1%, 9%, 6%, 2%, 15%
我们想走捷径找到我们的平均年利率,也就是 5 年后我们的总金额,所以我们试着“平均”这些利率:
(.01 + .09 + .06 + .02 + .15) ÷ 5 = .066 = **6.6%**
然后我们将这个平均百分比插入到复利公式中:
Total interest earned = $100,000 * (1.066⁵ - 1) = $37,653.11 Interest + principal = $37,653.11 + 100,000 = $137,653.11 **Final total** = **$137,653.11**
为了确保我们没有欺骗自己,让我们用长时间的方法来比较结果:
**
**Year 1**: 100,000 + (100,000 * .01) = 100,000 * 1.01 = $101,000
**Year 2**: 101,000 * 1.09 = $110,090
**Year 3**: 110,090 * 1.06 = $116,695.40
**Year 4**: 116,695.40 * 1.02 = $119,029.31
**Year 5**: 119,029.31 * 1.15 = $136,883.70
**
发生了什么事?我们的捷径高估了我们的实际收入近 1000 美元。
我们犯了一个常见的错误: 我们对一个乘法过程应用了加法运算,&得到了一个不准确的结果。
现在让我们用几何平均数再来一次:
1.01 * 1.09 * 1.06 * 1.02 * 1.15 = 1.368837042 5th root of 1.368837042 = 1.064805657 **Geometric mean** = **1.064805657**
(技术说明:我们必须使用1 + interest rate
作为几何平均数计算中的输入,因为这些是乘以本金值以产生每期应计利息金额的实际因数,并且我们需要找到这些因数的平均值。这有一个额外的好处,即使当出现负比率时,也可以避免负数,这是几何平均方程无法处理的【它也无法处理0s
】。算术平均没有这个问题。无论我们使用利率本身还是1 + interest rate
作为输入(然后从结果中减去1
)都是一样的,因为它是加法而不是乘法。但是几何平均数会不一样,而且不对,如果不加1
。)
将利率的几何平均值代入我们的复利公式:
Total interest earned = $100,000 * (1.0648⁵ - 1) = $36,883.70 Interest + principal = $36,883.70 + 100,000 = $136,883.70 **Final total** = **$136,883.70** exactly the same as the long method above
这还差不多。
我们对正确的工作使用了正确的方法,得到了正确的结果。
几何平均还有什么用?
不同的比例或单位
几何平均数的一个奇特的特点是你实际上可以在完全不同的尺度上计算数字的平均值。
例如,我们想比较使用两种不同来源的两家咖啡店的在线评分。问题是**source 1**
用的是5-star
标尺&T2 用的是100-point
标尺:
*source 1*
评分:*4.5*``*source 2*
评分:*68*
*source 1*
**评分:【
*source 2*
评分:*75*
**
如果我们天真地对每家咖啡店的原始评分进行算术平均:
咖啡馆 A =
(4.5 + 68) *÷* 2 **= 36.25**
咖啡馆 B =(3 + 75) *÷* 2 = **39**
我们得出结论,咖啡店 B 是赢家。
如果我们对数字更了解一点,我们就会知道,在用算术平均值对它们进行平均之前,我们必须将我们的值标准化到相同的范围内,以获得准确的结果。因此,我们将**source 1**
评级乘以20
,使其从5-star
等级变为**source 2**
的100-point
等级:
4.5 * 20 = 90 (90 + 68) ÷ 2 = **79**
3 * 20 = 60 (60 + 75) ÷ 2 = **67.5**
所以我们发现咖啡店 A* 是真正的赢家,与上面算术平均值的天真应用相反。***
然而,几何平均数使我们能够得出相同的结论,而不必在尺度或测量单位上大惊小怪:
咖啡馆甲=
*square root of (4.5 * 68) =* ***17.5***
咖啡馆乙 =*square root of (3 * 75) =* ***15***
**
瞧啊!
算术平均值在更大范围内受数字支配,这使我们认为咖啡店 B* 是评级较高的商店。这是因为算术平均值期望数字之间的加法关系&不考虑比例&的比例。因此,在应用算术平均值之前,需要将数字放在同一尺度上。***
另一方面,几何平均值由于其乘法性质,可以轻松处理不同的比例。这是一个非常有用的属性,但是注意我们失去了什么*:我们不再有任何可解释的标度。在这种情况下,几何平均值实际上是无单位的。***
即上述几何平均既不是**17.5** 'out of' 100 points
也不是**15** 'out of' 5 stars
。它们只是相对比例的无单位数。(技术上来说,它们的尺度是原尺度的几何平均值,**5** & **100**
,也就是**22.361**
)。如果我们实际上想要相对于一些对我们有意义的尺度来解释结果,比如最初的5
或100-point
系统,这可能是一个问题。但是如果我们只是想知道两家咖啡店的收视率之间的关系,我们就可以开始了。
2018 年 7 月 14 日更新:正如由m laden fern eir指出的,不能保证几何平均值将始终保持算术平均值在缩放值或归一化值上的排序,更不用说与其成比例了,正如我最初指出的那样。相反,它只是总结不同数字组之间关系的一种不同方式(尽管这种方式通常会在不同尺度上产生更“可信”的数值汇总)。所以再一次,谨慎的批判性思维对它的应用是必要的。**
几何平均重述 至TL;博士:
- 几何平均值 乘以而不是对值求和,然后取
*n*th root
而不是除以*n*
- 它本质上说:如果我们数据集中的每个数字 都是同一个数字 ,那么这个数字必须是 才能和我们实际的数据集有相同的乘法运算
***product***
? - 这使得它非常适合于描述的乘法关系,例如
rates
&ratios
,即使那些比率在 不同的标度 (即没有相同的denominator
)上。(由于这个原因,它经常被用来计算金融& 其他指标 /指数。)** - 也有不利的一面:有意义的标度 & 单位在应用几何平均值时可能会丢失,其对异常值的不敏感性可能会掩盖可能产生后果的大值。此外,它会产生与转换为单个刻度的值的算术平均值不一致的结果。
正如生活中的大多数事情一样,应用几何平均数几乎没有铁定的规则(除了复利之类的东西)。有一些试探法和经验法则,但是最终判断和科学怀疑是必需的,一如既往,对于健全的经验主义。
在下面的结论中有更多关于这一点的内容,但是现在让我们介绍我们最后的毕达哥拉斯的意思* …***
调和平均值
第三个也是最后一个毕达哥拉斯平均数。
这一节将比上一节短,因为调和平均数比几何平均数更深奥,但仍然值得理解。
算术平均值需要加法&几何平均值采用乘法,调和平均值采用倒数。
你可能还记得,一个数字***n***
的reciprocal
就是**1 / n**
。(如5
的reciprocal
为1/5
)。对于已经是分数的数字,这意味着你可以简单地“翻转”分子&分母:reciprocal of 4/5 = 5/4
。这是真的,因为1 divided by a fraction
产生那个分数的reciprocal
,例如1 ÷ (4/5) = 5/4
。
另一种思考倒数的方式是:两个数相乘等于 1。所以在求一个数***n***
的倒数时,我们只是简单地问:我们必须与***n***
*相乘才能得到 ***1***
。(这就是为什么reciprocal
有时也被称为)的乘法逆运算。)***
那么,这个调和平均值可以用文字描述为:数据集的 倒数算术平均值倒数 。**
这里有很多相互翻转,但实际上只是几个简单的步骤:
*1\. Take the reciprocal of all numbers in the dataset 2\. Find the arithmetic mean of those reciprocals 3\. Take the reciprocal of that number*
在数学符号中,这看起来像:
来自维基百科的一个简单例子:1
、4
、4
的调和平均值为2
:
note: the notation “n-¹” is one way of symbolizing “the reciprocal of n”**
注意,我们在这里说的是:如果我们数据集中每个数字的的倒数都是同一个数字 ,那么 是什么数字才能有同一个倒数***sum***
作为我们实际的数据集呢?****
(注:由于0
没有reciprocal
(没有什么可以乘以0
到= 1
),所以调和平均也不能处理包含0
的数据集,类似于几何平均*。)***
这就是管道的工作原理。 但是 有什么好处呢?
调和平均值在现实世界中的应用
要回答这个,我们得回答:倒数有什么用?
因为倒数像所有除法一样,只是伪装的乘法(伪装的加法),我们意识到:倒数帮助我们更容易地除以分数。**
比如什么是5 *÷* 3/7
?如果你还记得小学数学,你可能会用5
乘以7/3
(3/7
的reciprocal
)来解出这个问题:
5 *÷* 3/7 = 5/1 * 7/3 = 35/3 = 11 2/3 = 11.66667
但是一个等效的方法是将数字5
& 3/7
缩放到一个公分母,然后以正常方式除法:
5/1 ÷ 3/7 = 35/7 ÷ 3/7 = 35 ÷ 3 = 11 2/3 = 11.66667
同样,类似于使用几何平均值作为乘法或非线性关系(see above)
的算术平均值*,,调和平均值帮助我们找到分数之间的乘法/除法关系,而无需担心公分母。***
因此,调和平均值 自然地 容纳了几何平均值之上的另一层乘法/除法。*因此在处理不同长度或时期的利率或比率(即分数)数据集时很有帮助。*
侧边栏 :(你可能会想: “等等,我以为几何平均数是用来平均利息的利率 & 比率”** 你说得没错。你也 不会先被 这个 这个 给弄糊涂了。我自己开始写这篇文章来澄清我自己的想法。所以请原谅我,我希望通过下面的例子让这一点更加清楚&在下面这篇文章的结论中总结所有这些差异。)**
平均行驶速度
在现实世界中使用谐波手段的典型例子包括以不同的速率(即速度)穿越物理空间:
考虑去一趟杂货店然后回来:
- 在去那里的路上,你全程都在开车
- 回来的路上,车流如织,你一路开车
- 你走了相同的路线,每条路都走了相同的路程(
**5 miles**
)。
在整个旅程中,你的平均速度是多少?
同样,我们可能会天真地将算术平均值应用于**30 mph**
& **10 mph**
,并自豪地宣称“**20 mph**
!”
但是再考虑一下:因为你在一个方向上行驶得更快,你在那个速度下行驶的总时间更短,所以你在整个行程中的平均速度不是在**30 mph**
& **10 mph**
的中间点,它应该更接近于**10 mph**
,因为你在那个速度下行驶的时间更长。
为了在这里正确地应用算术平均值**,我们必须确定以每种速率旅行所花费的时间,然后适当地加权我们的算术平均值计算:**
行程在那里:(时速 30 英里) 30 miles per 60 mins = 1 mile every 2 minutes = 1/2 mile every minute 5 miles at 1/2 mile per minute = 5 ÷ 1/2 = 10 minutes **"Trip There" time** = **10 minutes**
返回行程:(以 10 英里/小时的速度) 10 miles per 60 mins = 1 mile every 6 minutes = 1/6 miles every minute 5 miles at 1/6 mile per minute = 5 ÷ 1/6 = 30 minutes **"Trip Back" time** = **30 minutes**
**Total trip time** = 10 + 30 = **40 minutes**
**“Trip There” % of total trip** = 10 / 40 minutes = .25 = 25% **“Trip Back” % of total trip** = 30 / 40 minutes = .75 = 75%
**Weighted Arithmetic Mean** = (30mph * .25)+(10mph * .75) = 7.5 + 7.5 = 15 **Average rate of travel = 15 mph**
因此,我们看到我们真实的平均旅行率是**15 mph**
,比我们用未加权的算术平均值得出的**20 mph**
要低5 mph
(或25%
)。
你大概能猜到这将走向何方…
让我们用调和平均值再试一次。
**Harmonic mean** of 30 and 10 = ... **Arithmetic mean** of **reciprocals** = 1/30 + 1/10 = 4/30 ÷ 2 = 4/60 = 1/15 **Reciprocal** of **arithmetic mean** = 1 ÷ 1/15 = 15/1 = **15**
瞧吧!
我们真实的平均行驶速度,自动根据每个方向花费的时间进行调整= 15 英里/小时!
请注意以下几点:
- 这仅仅是因为每次旅行的总距离是相同的。如果不同,我们就必须使用一个加权调和平均值**,或者另一个加权 算术平均值。**
- 对于算术平均值的^,我们将再次通过以每种速度行驶所花费的时间来加权,而对于调和平均值我们将通过行驶的距离来加权(因为它已经通过取它们的倒数来说明了速率中隐含的时间比例)。
- ^毕达哥拉斯的意思是的许多狡猾和诡秘归结为*比率 &我们对比率的哪一面更感兴趣。例如,算术平均值总是用分母表示。在行驶速度的情况下,比率是英里每小时**,因此算术平均值根据其(有点隐藏的)分母小时 :
**(30m / 1hr)+(10m / 1hr) ÷ 2 = 20m/1hr = 20 mph**
给出了一个结果。如果我们在每个方向花相同的时间旅行,这将是准确的,我们知道这是错误的。相反,调和平均值翻转这些比值,取它们的倒数,将我们实际感兴趣的数字放入分母,然后取算术平均值,再次翻转,&给出我们根据平均速度寻找的答案,与在该速度下花费的时间成比例。(关于使用财务市盈率比率的更深入讨论,请参见本文。)*** - 几何平均数对我们上面的复利例子有效的原因是利率在相等的时期内累积:一年。如果周期不同,也就是说,在每种利率下累积利息的时间长度不同,我们就不得不再次使用某种权重。****
- ^几何平均值处理乘法关系,例如应用于不同评分等级的本金投资&比率的比率,而调和平均值则更进一步,通过倒数的魔力,轻松适应另一层乘法/除法关系,例如变化的周期或长度。**
就像复利和几何平均数一样,这是一个精确、客观地应用调和平均数的例子。但是,事情并不总是那么清楚。还有其他精确的、数学上合理的应用在物理、金融、水文&甚至(按照惯例)在棒球统计中。与数据科学更密切相关:它经常应用于机器学习模型评估中的精度&召回。
但更多时候,这是一个判断,取决于对数据和手头任务的敏捷理解。
我将试着澄清和总结下面的要点。
第一部分结论
Back to where we started: A geometric construction of the Pythagorean means (of two numbers a and b)
回顾并明确我们已经展示的内容:
1。这三个毕达哥拉斯的方法是密切相关的,&每一个都可以表达为彼此的特例。
例如,我们看到:
- 不同尺度上的分数的几何平均值̵̵i̵̶̵s̵̶̵̵̶̵p̵̶̵r̵̶̵o̵̶̵p̵̶̵o̵̶̵r̵̶̵t̵̶̵i̵̶̵o̵̶̵n̵̶̵a̵̶̵t̵̶̵e̵̶̵̵̶̵t̵̶̵o̵̶̵有时可以保持算术平均值**的排序,当这些值被标准化到一个公共尺度时****
- 调和平均值相当于行程速率的加权算术平均值*(其中值由行程花费的相对时间加权)***
在第二部分*(随后会有单独的帖子)中,我们将看到那些已经熟悉乘法变换的人应该清楚的东西:数据集的几何平均值等价于该数据集中每个数字的 对数 的算术平均值。因此,正如调和平均值仅仅是经过一些倒数变换的算术平均值一样,几何平均值仅仅是经过对数变换的算术平均值。***
如果每个意味着只是另一个的变换或重构,那么这些变换如何交互&影响你的结果?
2。毕达哥拉斯的意思是符合严格的顺序关系。
由于各自的方程式:调和平均值 总是小于 几何平均值 ,后者总是小于 算术平均值 。
根据基础数据的分布情况,这三个平均值之间的距离会更近或更远。此规则的唯一例外发生在极端情况下,即数据集中的所有数字都是相同的精确数字,在这种情况下,所有 3 个平均值也是等价的。由此可见,下面的 不等式 成立:
**harmonic mean** ≤ **geometric mean** ≤ **arithmetic mean**
这些比例可以在本节开始的毕达哥拉斯* (+二次)意为的几何描绘中观察到。***
认识到这种关系有助于理解何时应用每种方法,以及对结果的影响。
为了更具体地说明这一点,让我们重温一下我们最初的加法和乘法数据集,每个数据集都描述了三种方法:
加法数据集{ *1, 4, 7, 10, 13, 16, 19…*
}
**Harmonic mean** = 4.3 **Geometric mean** = 7.3 **Arithmetic mean** = 10
显然,几何 & 谐波 意味着似乎大大低估了这个线性、可加数据集的“中间值”。这是因为这些平均值对较小的数字比对较大的数字更敏感(使它们对较大的异常值也相对不敏感)。
乘法数据集{ *1, 3, 9, 27, 81, 243, 729…*
}
**Harmonic mean** = 4.7 **Geometric mean** = 27 **Arithmetic mean** = 156.1
在这里,几何平均值精确地位于数据集的顺序中间,而调和平均值仍然偏向低侧&算术平均值由于受到大的异常值的影响而严重偏向高侧。**
要描绘一个由调和平均值很好地描述了中心趋势的数据集并不容易,所以我将继续…**
3。有一些硬性规定,一些启发法&很大的判断余地
- 为了对不同标度的比率进行平均;使用几何平均值**(或标准化分数的算术平均值)****
- 为了平均连续期间的复合利率变化:使用几何平均数****
- 为了平均不同时期或长度的利率;使用调和平均值**(或加权算术平均值)****
- 知道你对自己的哪一方面更感兴趣,以及申请哪一方面。算术平均值用分母表示,不管它是否可见。调和平均值允许您反转比率,以获得原始分子的答案。**
- 如果你的数据显示一个加法结构:算术平均值通常是安全的****
- 如果您的数据显示乘法结构和/或有较大的异常值:那么几何平均值或调和平均值可能更合适(正如中值一样)**
- 任何决策都有陷阱&权衡*:使用几何平均 - 数据集与
*0*
的不能与几何平均或调和平均、& 一起使用*** - 更实际和更容易理解的是:
-在存在大的异常值
时使用中值*-移除或限制异常值
-使用加权算术平均值或统计变换,而不是深奥的毕达哥拉斯方法*** - 尽管 R 统计计算语言具有用于矩阵求逆 & 三次样条插值的内置方法,但它没有计算简单的几何或调和平均值*的原生函数,这可能表明它们的稀有性。(谷歌工作表&然而 Excel 确实有)***
如果有一个 TL;对于这一整块,DR 应该是:
了解你的数据的性质&仔细考虑你用来描述它的汇总统计数据——否则“平均”来说就有出错的风险。
请在下面用你自己的使用案例和经验来评论较次要的毕达哥拉斯方法*(以及你可能在这篇文章中发现的任何错误!).***
查看本帖的 第二部分 ,该部分省略了概念叙述,有利于用真实的&模拟数据、分布、伴随 R 代码的图&对主题进行更简洁、更经济的&技术处理。
——
在推特上关注:@ dnlmc
LinkedIn:linkedin.com/in/dnlmc
Github:https://github.com/dnlmc
2018 年 7 月 14 日更正:这篇文章的前一个版本称“当这些值被标准化到一个共同的尺度时,分数的的几何平均值与算术平均值成比例”。姆拉登·费尔南德斯 指出这不是真的。谢谢你的纠正!**
平均而言,你使用了错误的平均值——第二部分
真实和模拟数据+使用 R & BigQuery 的汇总统计动态
Depiction of harmonic, geometric & arithmetic means of a simple geometric series, from Part I.
前言
本系列的第一部分构建了一个实用的&概念框架,用于在数据分析中使用鲜为人知的勾股方法来理解&。我竭尽全力(大约 5000 个单词)为普通观众建立直觉,只需要小学数学知识。
这篇文章将会更深入一点&更具技术性,探索这些方法在更丰富的模拟数据集下的动态变化,这些数据集来自于几个概率分布。然后,我们将这些与一些可比较的“真实世界”大数据集并置。我的目标也是更简洁和经济,假设有更高水平的数学和概率理论。
毕达哥拉斯的意思是重述
回想一下,有 3 种毕达哥拉斯方法符合不等式:
**harmonic mean** ≤ **geometric mean** ≤ **arithmetic mean**
只有在数据集中的每个数字都是相同数字的极限情况下,它们才是相互等价的。
**arithmetic mean**
通过简单的加法&除法产生。**geometric mean**
是通过乘法&根产生的。**harmonic mean**
是通过倒数,加上&除法产生的。
他们的方程式是:
via Wikipedia
因此,每一个都可以被导出或表达为彼此的重新配置。例如:
**geometric mean**
就是数据集的对数转换值的**arithmetic mean**
的反对数。它还可以有时保持缩放到一个共同分母的比率的顺序**arithmetic means**
,或者至少产生类似的可信汇总值。**harmonic mean**
是数据集倒数的**arithmetic mean**
的倒数。它也可以通过数据集的适当**weighted arithmetic mean**
来再现。
经验法则:
**arithmetic mean**
最适合于加法、线性、对称、正态/高斯数据集**geometric mean**
最适合于乘法、几何、指数、对数正态、偏斜数据集,以及不同尺度上的比率 & 复合增长率。**harmonic mean**
是三者中最罕见的,但就分子而言,它非常适合平均比率,如旅行率、一些财务指标&各种专业应用从物理学到数学&机器学习模型的评估。
局限性:
- 由于相对罕见,
**geometric**
&**harmonic**
的意思可能很难解释&误导观众期待“平均”更传统的含义 **geometric mean**
实际上是“无单位”的,因为标度&可解释单位在乘法运算中丢失(因子在不同标度上)**Geometric**
&**harmonic**
表示不能容纳≤ 0 的输入
更详细的讨论见第一部分。我们现在将看到一些实际操作。
模拟数据集
在第一部分中,我们观察了在平凡的加法和乘法数据集下勾股平均的动力学。在这里,我们将通过模拟 r 中各种概率分布的更丰富的数据集来扩展这个练习。
对于我们的加法或线性数据集,我们将从随机正态分布中抽取 10,000 个样本,平均值为 100 &标准差为 20,以避免抽取值≤ 0:
hist(
rnorm( 10000, 100, 20 )
)
接下来我们将模拟三种类型的乘法数据集(尽管有意义 差异,但它们通常难以区分):对数正态分布**、指数分布、&、幂律分布。**
有许多方法可以产生对数正态分布——基本上任何同分布随机变量的乘法相互作用都会产生对数正态分布——这就是为什么它在现实世界中如此频繁地出现,特别是在人类的努力中。为了简化&的可解释性,我们将简单地将欧拉数提升到从正态分布中抽取的随机指数,然后加上 100,使其处于我们的正态分布的范围内:
hist(
exp(1)^rnorm(10000,3,.9) + 100,
breaks = 39
)
从技术上讲,这是一个指数分布的特例,但是我们将通过 R 的rexp
函数模拟另一种变化,在这里我们简单地指定样本的数量&衰减率(同样,将结果加 100):
hist(
rexp(10000, 1/10) +100
)
最后,我们将通过将样本从正态分布提升到常数指数(再次是欧拉数,保持其自然*)来生成幂律分布,然后加上 100:*
(注意,这与我们的对数正态方法相反,其中欧拉数是基数&分布是指数)
*hist(
rnorm(10000, 3, 1)^exp(1) + 100
)*
好了,现在我们将使用**ggridges**
包来更好地绘制我们的分布图。我们还会加载**tidyverse**
包,像文明用户一样:
*library(tidyverse)
library(ggridges)*
让我们把我们的分布放入一个有序因子表中:
现在让我们更巧妙的看看我们的发行版:
身材匀称的一群人。让我们计算一些汇总统计数据。
既然 R 本身没有 ***geometric***
或者 ***harmonic***
的意思函数,我们就要稍微狡猾一点:
输出:
*# A tibble: 4 x 5
distribution median am gm hm
<fct> <dbl> <dbl> <dbl> <dbl>
1 normal 99.6 99.9 97.7 95.4
2 lognormal 120 129 127 125
3 exponential 107 110 110 109
4 power law 120 125 124 122*
…并将它们添加到我们的图中:
(note: I did some post-production editing for the subtitle legend cuz I can never bend gglegends sufficiently to my will — & the median lines are a bit of a hack)
我们立即注意到偏斜密度以及长&厚尾对均值分布的影响以及它们与中位数的关系:
- 在我们的正态分布中,
**median**
&**arithmetic mean**
几乎完全相同。(99.6
&99.9
分别按上表输出)。 - 我们的其他分布的向右偏斜将所有的平均值拉向
**median**
的右边,这倾向于数据集的更密集的峰
虽然这里有点拥挤,但让我们通过调整 x 轴限制来仔细看看,又名xlim()
:
*...xlim(90, 150)...*
- 再次注意,在正常对称数据集中,
**geometric**
&**harmonic**
意味着有意低估了数据的“中点”,但大致等间距(每个约相隔 2 个单位)。 - 在对数正态分布中,长(略细)的尾巴将均值拉离
**median**
所代表的有序中点很远,&甚至会扭曲均值的分布,使得**arithmetic**
比**harmonic**
离**geometric**
更远。 - 在我们的指数分布中,值是如此密集&指数衰减的短细尾巴消失得如此之快,以至于我们的平均值也挤在一起——尽管严重的偏斜仍然将它们从
**median**
中移走。 - 我们的幂律分布衰减最慢,&因此尾巴最粗。尽管如此,它在“身体”中几乎是正常的,不对称分布的偏斜是最轻微的。它的平均距离大致相等,但仍远离
**median**
。
在第一部分 &上面我提到的**geometric**
& **arithmetic**
的对数关系是指:
**geometric mean**
只是数据集的对数转换值的**arithmetic mean**
的反对数。
为了证明这一点,让我们再看一下我们摘要统计表:
*# A tibble: 4 x 5
distribution median am gm hm
<fct> <dbl> <dbl> <dbl> <dbl>
1 normal 99.6 99.9 97.7 95.4
2 lognormal 120 129 ***127*** 125
3 exponential 107 110 110 109
4 power law 120 125 124 122*
注意我们的log normalT5:127
。
现在我们将计算对数转换后的值的**arithmetic mean**
:
*dist2$x %>% log() %>% mean()# output:
[1] 4.84606*
…&然后拿那个号码的反日志*😗
*exp(1)^4.84606# output
[1] 127.2381*
就这样。
现在,为了让大家明白这一点,让我们来看看为什么会这样(为什么对数正态分布得名):
*# subtract 100 we originally added before taking the log(dist2$x — 100) %>% log() %>% hist()*
顾名思义,对数正态分布的对数变换产生了正态分布。因此,**arithmetic mean**
的加法基在正态分布中产生的结果与**geometric mean**
的乘法性质在对数正态分布中产生的结果相同。
我们不应该对经过对数变换的对数正态数据集产生的完美正态分布印象太深,因为我们指定了产生对数正态值的精确的数据生成过程,&实际上只是颠倒了该过程,以再现潜在的正态分布。
在现实世界中,事情很少如此整齐,生成过程通常更加复杂&未知或不可知。因此,关于如何建模的困惑&争议描述经验得出的数据集。
让我们来看一些这样的数据集&看看有什么大惊小怪的。
真实世界数据
虽然通常不如我们的模拟分布温顺,但真实世界的数据集通常至少类似于上述四类中的一类。
正态分布——被大肆宣传的“钟形曲线”——最常出现在自然&生物有机体&相互作用很少的场景中。身高&体重是典型的例子。因此,我的第一反应是寻找可靠的数据集。它满足了要求,但是关于n = 50
(数据集中一种花的观察数量)还有一些不足之处。我在想更大的*。*
所以让我们加载[bigrquery](https://github.com/r-dbi/bigrquery)
包,&做 bigRqueries 。
library(bigrquery)
谷歌的 BigQuery 提供了大量真实数据的公共数据集,有些非常大,从基因组学到专利再到维基百科的文章统计。
出于我们最初的目的,natality
数据集看起来足够生物化:
*project <- “YOUR-PROJECT-ID”sql <- “SELECT COUNT(*)
FROM `bigquery-public-data.samples.natality`”query_exec(sql, project = project, use_legacy_sql = F)*
(protip:这里有很多数据,&你得到的 是按被访问的数据量收费的 ,但是你每个月的第一 TB 是免费的。此外,尽管 SELECT *
由于显而易见的原因而被极力劝阻,但 SELECT COUNT(*)
实际上是一个自由操作,&是一个扩展事物范围的好主意)
输出:
**0 bytes processed*
f0_
1 137826763*
这还差不多,1.37 亿婴儿记录。我们不太需要所有这些,所以让我们随机抽取 1%的婴儿体重,取前一百万个结果&看看我们得到了什么:
*sql <- “SELECT weight_pounds
FROM `bigquery-public-data.samples.natality`
WHERE RAND() < .01”natal <- query_exec(sql, project = project, use_legacy_sql = F,
max_pages = 100)*
输出:
*Running job /: 7s:1.0 gigabytes processed
Warning message:
Only first 100 pages of size 10000 retrieved. Use max_pages = Inf to retrieve all.*
hist(natal$weight_pounds)
产量:
正常 af imo。
现在,为了找到一些有偏差的乘法数据,让我们超越生物学,进入社会学。
我们将查看 New York 数据集,其中包含各种城市信息,包括乘坐黄色&绿色出租车的出行。
*sql <- “SELECT COUNT(*)
FROM `nyc-tlc.green.trips_2015`”query_exec(sql, project = project, use_legacy_sql = F)*
输出:
**0 bytes processed*
f0_
1 9896012*
不到 1000 万,所以我们来看看整个旅程的距离:
(这可能需要一段时间)
*sql <- "SELECT trip_distance FROM `nyc-tlc.green.trips_2015`"trips <- query_exec(sql, project = project, use_legacy_sql = F)hist(trips$trips_distance)*
-_-
看起来有一些极端的异常值把我们的 x 轴拉到了 800 英里。糟糕的出租车之旅。让我们把这个范围缩小到 20 英里以内&再看一看:
trips$trip_distance %>% subset(. <= 20) %>% hist()
这就是我们,对数正态分布的一个警示标志:长尾。让我们通过绘制日志直方图来检查数据的对数正态性:**
trips$trip_distance %>% subset(. <= 20) %>% log() %>% hist()
正常的鱼肯定,但我们超过了标记一点&现在观察到一点左歪斜。唉,现实世界又来了。但是可以肯定地说,对数正态分布在这里并不是一个完全荒谬的模型。
继续前进。让我们找到更多的重尾数据,这次是在一个更接近我自己的数字网络分析专业亲和力的领域:Github 数据集:
**sql <- "SELECT COUNT(*)
FROM `bigquery-public-data.samples.github_nested`"query_exec(sql, project = project, use_legacy_sql = F)**
输出:
***0 bytes processed*
f0_
1 2541639**
250 万行。由于我开始担心我的本地机器的内存,我们将使用我们的随机采样器&百万行定界符来获得每个 github 库的“观察者”计数:
**sql <- “SELECT repository.watchers
FROM `bigquery-public-data.samples.github_nested`
WHERE RAND() < .5”github <- query_exec(sql, project = project, use_legacy_sql = F,
max_pages = 100)github$watchers %>% hist()**
同样,极端的长尾动态,所以让我们做一些修整:
github$watchers %>% subset(5 < . & . < 3000) %>% hist()
指数 af。
但是又是 lognormal 吗?
github$watchers %>% subset(5 < . & . < 3000) %>% log() %>% hist()
不要。
谁知那只稀有的野兽:分布!****
让我们从大数据瓮中再抽取一个,这一次看几十个黑客新闻帖子:
****sql <- “SELECT COUNT(*)
FROM `bigquery-public-data.hacker_news.full`”query_exec(sql, project = project, use_legacy_sql = F)****
输出:
*****0 bytes processed*
f0_
1 16489224****
…
****sql <- “SELECT score
FROM `bigquery-public-data.hacker_news.full`
WHERE RAND() < .1”hn <- query_exec(sql, project = project, use_legacy_sql = F,
max_pages = 100)hn$score %>% hist()****
…
hn$score %>% subset(10 < . & . <= 300) %>% hist()
较慢的衰减(一旦修整)。至于对数变换呢?
hn$score %>% subset(10 < . & . <= 300) %>% log() %>% hist()
再次粗略地用向右衰减的对数均匀化。
我粗略地搜索了一下野外的幂律分布,结果证明毫无结果,这也许并不奇怪,因为它们最常出现在网络科学中(&,似乎比最初声称的还要稀少)。
在任何情况下,让我们组织我们真实世界的数据集,就像我们对模拟分布所做的那样&比较性地绘制它们。我们将对它们进行归一化,再次将它们集中在 100 左右:
现在开始绘图:
与它们来自的真实世界一样,边缘比我们模拟的分布要粗糙一些。仍然非常相似。让我们将它们与来自不可或缺的托马斯·林·彼得森的新(& excellent) 拼接包并排放在一起:
乍看之下,我们的模拟分布将为其相邻的真实世界数据集提供合理的模型,除了**power law** -> **hacker news scores**
,其中衰减的凹度&尾部的权重有很大不同。
当然,还有许多更严格的模型拟合等测试,但让我们像以前一样,通过绘制分布的汇总统计来再看一看。
不幸的是,关于标准化的真实世界数据的一些东西干扰了我的汇总统计计算,它们都或多或少地彼此无法区分。我怀疑这与计算机在浮点运算上的挣扎有关(但也可能与我自己在算术上的挣扎有关)。在任何情况下,我们将不得不使用我们的非标准化的真实世界数据,这意味着我们将不得不单独绘制它们&尝试手动排列 ggridge 拼接。
首先编译我们的非标准化分布并计算汇总统计数据:
现在开始绘图(这很难看,因为我们必须为每个真实的分布创建单独的绘图,但是拼接允许我们优雅地定义布局):**
有趣的是,我们真实世界的数据集汇总统计数据似乎比我们模拟的分布更加分散。让我们放大来仔细看看。
我不会转贴所有代码,但基本上只是修改了pm1
,让xlim(90, 150)
&取消了其余情节中xlim()
行的注释:
这里甚至更明显,但是对于正态分布:汇总统计动态差异很大,这应该让我们在容易地“目测”理想化模型与现实世界数据的拟合时暂停。
这就结束了我们在模拟的&真实世界分布下对毕达哥拉斯意义的探索。
如果您还没有,请查看第一部分以获得更低级、更明确的&直观介绍。参考资料见下文&进一步阅读。
还有,关注我更多这样的!
—
在推特上关注:@ dnlmcLinkedIn:【linkedin.com/in/dnlmc】T4Github:https://github.com/dnlmc
选择参考文献和进一步阅读
第一部分
- https://en.wikipedia.org/wiki/Pythagorean_means
- https://en.wikipedia.org/wiki/Summary_statistics
- https://en.wikipedia.org/wiki/Central_tendency
- 位置测量&展开”—stat.berkeley.edu
- "中位数 vs 平均家庭收入 " — LinkedIn
- “平均收入 vs 中位收入”
- 你应该用几何平均数来总结数据
- ”哪个‘意思’要用&当? " —堆栈溢出
- "什么时候取算术平均值 vs 几何平均值 vs 调和平均值最合适?”—Quora
- 算术,调和&几何意思同 R
- "使用市盈率调和平均值来提高公司估值 " —期刊文章
第二部分
- https://en.wikipedia.org/wiki/Heavy-tailed_distribution
- https://en . Wikipedia . org/wiki/Relationships _ inter _ probability _ distributions
- http://www . win-vector . com/blog/2010/02/living-in-a-log normal-world/
- "幂律和对数正态分布生成模型简史 " —期刊文章
- "幂律分布与指数衰减的区别 " —堆叠交换
- "现实世界网络中发现的幂律证据不足 " —量子杂志
成为一名公民数据科学家
我很高兴地告诉大家,我在波士顿的城市找到了一份数据科学家的工作,具体来说是在 T2 的城市分析团队。我对这个新角色感到兴奋,尤其是我将在这座城市学到的所有新东西。抱歉,无线电静默,但我正在做整个令人疲惫的数据科学家采访过程。
我将成为第一个代表洞察数据科学。我参加了健康数据项目(实际上一心想要做健康数据科学),在那段时间里,我学到了很多宝贵的技能。我还与一群热情、聪明、崭露头角的数据科学家进行了交流。没有他们的帮助,我永远也不会得到这份特殊的工作。Insight 社区很棒,我建议任何想走出学术界的博士考虑一下。
在 DS 世界中,面向公民的数据科学似乎被技术和健康数据世界中的大玩家大大掩盖了。然而,如果你做一个快速搜索,许多城市现在都有开放数据门户,并且可以说是开放数据运动的一些主要驱动力。仅举几个例子:
大城市正在利用数据做一些很酷的事情,包括改善交通运输和减少交通事故,确定城市服务(如医疗保健、教育)中有关社会不平等的因素,微调 EMS 响应时间,优化街道停车,减少无家可归者,等等。城市手边有大量的数据,并且正在做许多有趣的工作来提高市民的生活质量和改善城市服务。
我在伦敦金融城的工作有点像数据科学家和数据经理的混合体。我一半的时间花在与利益相关者交谈和指导初级数据科学家上(稍后将详细介绍利益相关者的工作)。在研究生院和博士后期间,我真的很喜欢教学和指导,所以管理方面的事情是我真正喜欢的事情之一。当我的日历没有排满会议时,你可以在我的电脑前找到我,一个屏幕上是终端,另一个屏幕上是 RStudio、Jupyter、Spyder 或任何随机 IDE。这真是两个世界的完美结合。
我正在围绕波士顿的零愿景计划做大量工作,该计划旨在减少整个城市的交通事故和死亡人数。我们从波士顿警察局、EMS 和 Waze 那里获得了大量关于交通数据的数据,我花了一些时间浏览这些数据。最近,我一直在 RShiny 构建仪表板,以显示分析和/或模型预测。很有意思的工作!
到目前为止,我在这里的这段时间学到了不少东西。当你在市政府工作时,你必须灵活运用你所使用的工具。我们的团队是一个乌合之众的小团体,不同的人使用不同的工具。我们的数据科学家在 R、python、一些 javascript、SQL Server、Postgres 和一些 shell 脚本之间跳跃。我们也有人使用 Tableau、Excel 和 Stata。因此,我们都必须保持灵活性,并准备好学习新工具。
学习 ETLs (extract-load-transform)和通用数据工程原理是我没想到的。我们正在开发一个新的数据仓库解决方案,慢慢地将我们所有的数据库从本地服务器迁移到 AWS 托管的 Postgres 服务器上。我们正在为更有效的 ETL 调度实现 Airflow,并且最近已经实现了我们自己的 RShiny 服务器。值得一提的是,我学到了很多关于数据基础设施的知识,其中涉及的内容多得令人难以置信。这让我更加尊重数据工程师的工作!
在市政府工作肯定有挑战。数据并不总是容易访问,而且通常存储在不同的部门。毫不奇怪,我们需要与利益相关者建立信任和关系,以便使用他们的数据。这是向利益相关者直接“展示分析和数据科学的价值”。这在政府层面更具挑战性,因为大多数人不了解数据。如果你想成为一名成功的市政府数据科学家,你真的需要有良好的沟通能力。此外,一般来说,市政府的资金比大多数公司(甚至许多初创公司)要少得多,所以我们的团队往往规模小、精干、灵活。
不管怎样,我不得不说,到目前为止,我很喜欢我的工作,并且真的很期待我将来要做的新项目!
将符号推理集成到深度神经网络中
是什么让生物神经网络如此优越于它们的技术对手?到目前为止,我们忽略了什么吗?
深度神经网络在过去几年里取得了巨大的成功。人工智能领域的许多进步,如识别现实世界的物体,流利地翻译自然语言或在世界级水平上下棋,都是基于深度神经网络的。然而,关于这种方法的局限性的报道很少。一个这样的限制是不能从少量的例子中学习。深度神经网络通常需要大量的训练样本,而人类能够从单个样本中学习。如果你给一个从未见过猫的孩子看一只猫,它可以根据这个单一的例子认出另一只猫。另一方面,深度神经网络需要成千上万的图像来学习猫的样子。另一个限制是不能根据以前学到的常识做出推论。当阅读文本时,人们倾向于对文本的可能解释进行广泛的推断。人类可以做到这一点,因为他们可以回忆起非常不同领域的知识,并将其应用到文本中。
这些限制表明,深层神经网络中缺少一些基本的东西。这是一种在现实世界中建立实体的符号引用,并将它们相互联系起来的能力。数十年来,形式逻辑形式的符号推理一直是经典人工智能的核心,但它被证明是脆弱而复杂的。然而,有没有办法增强深度神经网络,使它们能够处理符号信息?深度神经网络受到了类似人脑的生物神经网络的启发。本质上,它们是神经元和突触的简化模型,而神经元和突触是大脑的基本组成部分。其中一个简化是忽略了生物神经网络的尖峰性质。但是如果不仅实际激活一个神经元很重要,而且这个神经元什么时候被激活也很重要呢?如果神经元激活的时间点,建立了一个与这种激活相关的关系环境,那会怎样?举个例子,一个神经元代表一个特定的单词。如果每次这个词出现在文本中,这个神经元都会被触发,这难道没有意义吗?在这种情况下,峰值的时间将发挥重要作用。而且,不仅仅是单次激活的时间,神经元所有传入的脉冲相对于彼此的时间也是至关重要的。这个定时模式可以用来建立这些输入激活之间的关系。例如,如果代表特定单词的神经元对于该单词中的每个字母都有一个输入突触,那么重要的是,只有当字母神经元以正确的顺序相互激发时,单词神经元才会被触发。从概念上讲,这些定时差异可以被建模为神经元的输入突触之间的关系。这些关系也定义了神经元自身相对于其输入激活而触发的时间点。出于实际原因,允许一个神经元的激活有几个与其相关联的槽,比如一个单词的开头和结尾,可能是有用的。否则,单词的开头和结尾将不得不被建模为两个独立的神经元。这些关系是一个非常强大的概念。它们允许容易地捕获文本的层次结构或者将文本中的不同范围相互关联。在这种情况下,一个神经元可能指一个非常局部的信息,比如一个字母,或者一个非常广泛的信息,比如一篇文章的主题。
使用激活函数来近似单个神经元的放电率是关于生物神经网络的另一种简化。为此,经典神经网络使用 sigmoid 函数。然而,sigmoid 函数相对于大的正或负输入值是对称的,这使得使用该函数用神经元来模拟类似逻辑门的操作非常困难。另一方面,尖峰网络有一个明确的阈值,并忽略所有低于该阈值的输入信号。因此,ReLU 函数或一些其他非对称函数可以更好地逼近发射率。这种不对称对于处理关系信息的神经元也是必不可少的。当某个单词不出现时,代表该单词的神经元必须一直保持完全不活动状态。
此外,大脑皮层中存在不同类型神经元的事实在深层神经网络中被忽略了。两种重要的类型是主要具有兴奋性特征的棘锥体细胞和具有抑制性特征的棘星状细胞。抑制性神经元是特殊的,因为它们允许建立负反馈回路。这些反馈回路通常不会出现在深度神经网络中,因为它们向网络引入了内部状态。考虑以下具有一个抑制性神经元和两个兴奋性神经元的网络,代表单词“August”的两种不同含义。
这两种含义是互斥的,意味着网络现在有两种稳定状态。这些状态可能取决于两个兴奋性神经元的进一步输入突触。例如,如果单词“August”之后的下一个单词是潜在的姓氏,则实体神经元 August-(first name)的对应输入突触可以增加该状态的权重。现在更有可能的是,单词“August”将被归类为名字,而不是月份。但是请记住,这两种状态都需要评估。在更大的网络中,许多神经元可能通过负反馈或正反馈回路连接,潜在地在网络内创建大量的稳定状态。
由于这个原因,网络需要一个有效的优化过程来确定关于某个目标函数的最佳状态。这个目标函数可以是最小化抑制强烈激活的神经元的需要。然而,这些状态具有巨大的优势,它们允许考虑给定文本的不同解释。这相当于一个思维过程,在这个过程中,不同的解释被评估,而最合适的解释就是结果。幸运的是,对最优解状态的搜索可以被很好地优化。
在这些反馈回路中,我们需要抑制性神经元,因为否则所有相互抑制的神经元将不得不彼此完全连接。这将导致突触数量成倍增加。
通过负反馈回路,也就是说,通过简单地将负突触连接到它的前体神经元之一,我们突然进入了非单调逻辑的领域。非单调逻辑是形式逻辑的一个子领域,其中蕴涵不仅被添加到模型中,而且被移除。假设需要非单调逻辑来为许多常识推理任务得出结论。非单调逻辑的一个主要问题是,它经常不能决定哪些结论可以得出,哪些不可以。如果没有其他更可能的结论,它应该只得出怀疑或轻信的推论。这就是神经网络的加权特性派上用场的地方。这里,可能性较大的状态可以抑制可能性较小的状态。
结论
虽然深度神经网络已经走过了漫长的道路,现在正在提供令人印象深刻的结果,但它可能值得再看一看原始的人类大脑及其电路。如果像人脑这样一个内在复杂的结构被用作神经模型的蓝图,我们必须做出简化的假设。但是,这必须非常小心地完成,否则原作的重要部分可能会丢失。
参考
- 爱歌项目
- 使用元神经元从单个训练示例中学习事实
- 关于给神经网络增加负反馈突触
- 神经科学:探索大脑
马克·贝尔、巴里·康纳斯、迈克尔·帕拉迪索
塔里克·贝索尔德、阿图尔·达维拉·加西亚、塞巴斯蒂安·巴德;霍华德·鲍曼、佩德罗·多明戈斯、帕斯卡尔·希茨勒、凯-乌韦·库恩伯格、路易斯·c·兰姆;丹尼尔·劳德、普里西拉·马查多·维埃拉·利马、利奥·德彭宁、加迪·平卡斯、潘海丰、格尔森·扎维鲁查
加里·马库斯
7.非单调推理
格哈德·布鲁卡、伊尔卡·尼梅拉、米罗斯瓦夫·特鲁什琴斯基
用 Python 和数据科学赚钱— 1:设置和统计
介绍
在我目前与 Metis 的研究休假期间,我有了一个惊人的机会——早就应该——将我每天教授给金融部门的数据科学和机器学习技术应用于实践。在这一系列的文章中,我将向您展示如何开始构建您自己的财务模型!
首先,我要感谢 Quandl 的团队,感谢他们令人惊叹的、易于使用的平台,以及 Quantopian 社区提供的丰富资源和灵感!
这绝不是一本“高级”指南,在这里,我应该提到:
此处提供的信息和附带材料仅供参考。不应将其视为法律或财务建议。您应该咨询律师或其他专业人士,以确定什么最适合您的个人需求。
对于使用其内容可能获得的任何结果,Jonathan 不作任何保证或其他承诺。在没有咨询自己的财务顾问、进行自己的研究和尽职调查之前,任何人都不应做出任何投资决定。在法律允许的最大范围内,如果任何信息、评论、分析、意见、建议和/或推荐被证明是不准确、不完整或不可靠的,或导致任何投资或其他损失,Jonathan Balaban 概不负责。
哦,还有,过去的表现不是未来结果的可靠指标等等等等…
很好,现在我们来看看定义和设置!
定义和假设
什么是交易算法?
来自 Quantopian:
交易算法是一个计算机程序,它定义了一套买卖资产的规则。大多数交易算法基于数学或统计模型做出决策,这些模型来自对历史数据的研究。
我们使用的是什么平台?
我使用 Anaconda 、 Jupyter Notebooks 和 PyCharm 在 Python 中建模,使用这些工具最容易理解。然而,您可以使用 Quantopian 平台的内置内核,或者如果您愿意,甚至可以将代码修改为 R 或其他语言。
我也在 Mac 电脑上,并且将全程分享 UNIX 命令;Windows 用户,必应是你的朋友!
我们关注哪些资产?
苹果(AAPL)是一只值得依赖的好股票,因为它是目前(2018 年 9 月)世界上最有价值的公司,股价相对稳定,有大量的数量、新闻和与品牌相关的情绪。
请记住:这里涉及的原则可能对较小的股票、不同的行业等有不同的作用。
设置
要在本地机器上获得 Quantopian 平台,请在终端中运行以下命令:
# create conda py35 since that's the newest version that works
conda create -n py35 python=3.5conda install -c quantopian/label/ci -c quantopian zipline
要让 Quandl 工作,请按照帐户创建说明和 API 文档开始加载财务数据。此外,保存您的 API 密钥,因为您将需要它来加载任何有意义的内容。
加载数据
让我们从代码库开始:
import pandas as pd
import numpy as np
import patsypd.core.common.is_list_like = pd.api.types.is_list_like
from pandas_datareader import data
import quandl
quandl.ApiConfig.api_key = "##############"
现在让我们拉一些苹果股票:
df = quandl.get("WIKI/" + 'AAPL', start_date="2014-01-01")
看一下这些列,注意一个叫做“分流比”的列。这是一个非常重要的指标;它表示股票分割发生的地方。2014 年,苹果决定 7:1 拆分,我们可以使用 Python 和 pandas 来查找发生的日期:
len(df)
df['Split Ratio'].value_counts()
df[df['Split Ratio'] == 7.0]
我们的罪魁祸首是2014–06–09。为了简单起见,我们只提取该日期之后的股票价格:
aapl_split = quandl.get("WIKI/" + 'AAPL', start_date="2014-06-10")
aapl_split.head()
顺便说一句,我在 GitHub 上找到了一份财富 500 强的列表。如果你想将你的分析扩展到股票集合,你可以将它们载入如下列表:
f500 = pd.read_csv('[https://raw.githubusercontent.com/datasets/s-and-p-500-companies/master/data/constituents.csv'](https://raw.githubusercontent.com/datasets/s-and-p-500-companies/master/data/constituents.csv'))tickers = f500.Symbol.tolist()
关键统计数据
增广的迪基-富勒
我们应该检查的一件事是单位根的存在,这可以通过增强的 Dickey-Fuller 测试来完成。简而言之,单位根的存在意味着有一个驱动 AAPL 的潜在趋势,因此我们可以提取并用于预测的模式。
# run ADF to determine unit root
import statsmodels.tsa.stattools as ts
cadf = ts.adfuller(aapl_split.Close)print('Augmented Dickey Fuller:')
print('Test Statistic =',cadf[0])
print('p-value =',cadf[1])
print('Critical Values =',cadf[4])
扩充的 Dickey Fuller:
检验统计量= -0.731194982176
p 值= 0.83850304527
临界值= { ’ 1% ‘:-3.43722314744848,3499,’ 5% ':-2.8645743684
我们将上面的测试统计与临界值进行比较;如果它低于我们选择的阈值,我们拒绝存在单位根的无效假设。正如你所看到的我们的大 p 值,我们必须接受空值:AAPL有一个单位根。这是一件好事,因为我们可以利用潜在的趋势和模式进行预测。
与其他股票的相关性
苹果被认为是奢侈的科技品牌。如果我们能确定与其他股票有很强的相关性呢?
请注意相关性并不意味着因果关系,可能会有哪只股票是先行者的问题,但模式和关系对于提升我们的模型性能总是一件好事。
我建议你看看三只股票,以及 AAPL 是如何相互关联的:
- 微软(MSFT)
- 英特尔(INTC)
- 蒂芙尼公司(TIF)
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inlineMSFT = quandl.get("WIKI/" + 'MSFT', start_date="2014-06-10")
INTC = quandl.get("WIKI/" + 'INTC', start_date="2014-06-10")
TIF = quandl.get("WIKI/" + 'TIF', start_date="2014-06-10")
为了节省时间,我们将只关注英特尔数据;让我们画出 AAPL 和 INTC 的收盘价:
sns.jointplot(INTC.Close, aapl_split.Close, kind="reg");
Intel vs. Apple
我们还可以看看我们的相关值:
np.corrcoef(INTC.Close, aapl_split.Close)
我们注意到 r 值为 0.7434;对于预测来说还不错,但是我们需要记住一个重要的事实:如果我们知道 INTC 的收盘价,我们就可以查 AAPL 的收盘价!因此,让我们提前 7 天检查与 INTC 收盘价的相关性,以获得更可行的指标:
# seven day lead
np.corrcoef(INTC.Close[:-7], aapl_split.Close[7:])
对于这次运行,我们注意到 r 值为 0.7332;还是蛮不错的!
谷歌趋势
我们可以比较 Twitter 和其他情绪库如何影响股票价格。现在,让我们看看谷歌趋势是否与 AAPL 相关。确保指定时间范围或使用这个链接进行精确搜索(注意,我添加了 4 月的几天来处理半周的问题),然后将 CSV 加载到 Python 中:
# Google Trendsaapl_trends = pd.read_csv('/Users/jb/Desktop/multiTimeline.csv', header=1)aapl_trends.tail()
注意周线格式,所以我们需要使用[pandas.resample()](http://pandas.pydata.org//pandas-docs//stable//generated/pandas.DataFrame.resample.html):
来转换我们的股票价格数据集
aapl_split_week = aapl_split.resample('W', convention='end').last()
现在,让我们检查给定一周内 Google 搜索请求总数与该周最后一个工作日的收盘价之间的相关性并绘制图表:
# trend and price corr
np.corrcoef(aapl_trends['Apple: (Worldwide)'], aapl_split_week.Close)
Oy!我们得到一个微不足道的 0.0454,这在我们思考时是有意义的:AAPL 新闻/活动/聊天并不意味着股票价格是积极的。像情绪这样有极性的东西应该会提供一个更强的信号,但我们会在另一个时间看这个问题。
最后的想法
我们只是触及了财务分析的探索性数据分析(EDA)部分的表面,但在下一篇文章中,我们将过渡到构建预测模型,并让高级包为我们完成繁重的工作。
我希望这能对你有所帮助,我很乐意在评论中听到你的意见:
- 运行这段代码有问题吗?有时环境和版本会把事情搞砸…
- 你用什么包和技术?
- 什么样的视觉效果最有助于理解股票价格的运动?
- 你认为哪些因素会使模型预测最大化?
最后,如果你碰巧知道一种持续赚大钱的建模技术,请直接给我发信息😉
衡量经常性用户
每个人都在谈论数据驱动。设置度量标准是困难的,即使在选择了要度量的东西之后,正确地度量它仍然是困难的!在这里,我将通过多种方法来衡量流失错误。
当你在开发一个产品时,最重要的一个指标就是你的用户中有多少会回来重复使用。这个指标有很多种,流失(给定时间后有多大比例的用户不再是用户)是最常见的一种。
在 Peergrade 我们正在为教师制作一个产品,我们有兴趣确定我们的用户是否对该产品足够满意,以便回来再次使用它。我们面临的挑战之一是,一些教师经常使用 Peergrade,而一些教师(主要是大学教师)一年只使用我们的产品一次或两次。这里的问题是,我们不知道用户是否已经离开我们,或者用户是否只是处于使用期的中间。
当我们查看我们的数据时,它看起来像这样(这不是实际数据):
每个蓝条对应一个不使用我们产品的用户(横轴是天)。在结束前停止的蓝色条意味着相应的用户再次回来使用我们的产品。延伸到图表末端的蓝色条(本例中为 365)意味着用户要么还没有回来,要么已经永远离开了我们。
一个简单的方法是计算在第 365 天之前结束的棒线数量和没有结束的棒线数量之间的比率,来衡量有多大比例的用户回到我们的产品。这样做的明显问题是,我们会高估流失的人数,把还没有回来的人都算成永远不会回来了。一个更好的策略是设置一个固定的最大值(例如 2 个月),并把在这段时间后没有回来的人算作被搅动——这个最大值可以从数据中确定,例如通过将其设置为已知已经回来的用户的不活动持续时间的第 95 个百分位数。
估计误差的影响
使用不正确的评估策略会导致非常错误的结果。下面我将描述一种不同的方法来计算客户流失,这种方法在相当合理的假设下会产生更好的结果。在我们的实验中,上面的简单方法导致 11%的平均估计误差,更好的版本导致 5.4%的平均误差,而我们改进的方法导致仅 1.2%的平均误差。
长尾理论和不同的方法
上述较好策略的问题是,当用户的不活动持续时间分布具有长尾时,即当一些用户的不活动时间非常长时,设置这样的最大值可能会很不幸地出现问题。我们的用户就是这种情况。
为了尝试以更好的方式解决这个问题,我们从制作一个小的合成数据集开始。我们设置了一个产品质量参数(称之为 q ),这是一个用户回来重复使用的概率(这是我们有兴趣测量的参数)。
然后,我们创建了 2000 个虚拟用户,并使用我们的 q 参数来确定他们是否会回来。我们将合成数据集的时间跨度设置为 365 天。对于每个用户,我们在 0 到 365 之间随机选择一个不活动期的开始日期(上面的条形开始的位置)。为了以现实的方式模拟非活动持续时间,我们从伽玛分布中采样非活动持续时间,如下所示:
对于被选择不返回的用户,不活动期被延长到第 365 天(我们的时间跨度结束)。对于经常性用户,等待时间从上述分布中取样,并添加到开始时间中,以获得非活动间隔的结束时间。如果高于 365,则上限为 365。
这样做的结果是帖子顶部的图中所示的数据,其中可以观察到一些用户返回,一些是非经常性用户或经常性用户,他们的返回超出了时间跨度(在第 365 天之后)。
不同的方法
我们估计流失率的方法是使用下面的简单算法:
- 用 1 标记我们知道用户返回的每个时间间隔
- 按长度对时间间隔进行排序,从最长的间隔开始
- 如果最长的间隔没有标签 1,则给它标签 0
- 对于每个区间(按排序顺序),用所有更长区间标签的平均值对其进行标记。
- 将重复出现的概率确定为所有区间的平均标签。
这里的概念是,为了估计用户在 X 天不活动后返回的概率,我们查看所有不活动超过 X 天的用户,并查看有多少用户返回。
结果和其他想法
在合成数据集上,我们可以测试简单的估计,看看它们与我们的新方法相比表现如何。产品质量参数 q 在 0 到 1 之间随机抽样,并进行不同的推断方法。这样做了 100 次,以限制数据中随机噪声的影响。最终结果显示,简单方法的平均估计误差为 11%,更好的版本的平均误差为 5.4%,而我们改进的方法的平均误差仅为 1.2%。
解决这个问题的一个有趣的方法是用完全概率的方式建模,例如使用 PyMC3 。这种建模将导致一种不那么特别的解决方案,并且还将给出估计量的不确定性的度量。此外,可能有可能以某种方式对产品的开发建模(并且有希望以某种方式增加q**)——这将有可能估计您是否以显著影响度量的方式改进产品。最后,研究其他因素的建模会很有趣,比如季节性(对我们来说,夏季是一个低活动期),并可能引入其他因素,以便更准确地预测用户流失。
关于我的“奇特经历”以及它将走向何方
我上大学是为了成为一名摄影师。昨天,我有幸看到了我最喜欢的摄影师之一威廉·埃格尔斯顿的一些照片。当然,这让我偏离了摄影的主题,就像生活中的大多数事情一样,我发现了一些建立在我正在思考的其他事情上的东西。
William Eggelston, “Louisiana” (from the series Los Alamos, 1965–1974) © Eggleston Artistic Trust / Courtesy David Zwirner, New York/London
埃格尔斯顿是一个真正的怪人,他有一种独特的世界观,一种具有挑战性的民主视野,图像中的东西与构图、颜色、社会意义,甚至是不知道是什么的抽象一样重要。也就是说,他是一个帮助定义和推动“摄影”的摄影师。他也有一套用词方式:
“无论是一张照片、一首音乐、一幅画还是我可能做的任何其他东西——最终都是我独特经历的抽象。”—威廉·埃格尔斯顿
这是我对生活中几乎所有事情的看法,尤其是我作为 UX 软件产品开发设计师的职业经历。
Performing at the Pukkelpop festival, Belgium, 2003
到目前为止,我的生活中有很多事情:
- 一位相当有名的电子音乐家
- 美国一家主要报纸的艺术评论家
- 创建了两个唱片公司(公鸡摇滚迪斯科,夜班)
- 共同组织和举办了一个音乐节(浪费)
- 哈克贝利猎犬在游乐园吗
- WFMU 的 DJ
- 从事摄影和雕塑的视觉艺术家
- 共同创办了 2 家创业公司(Network Awesome、Radosaur Productions)
- 视觉设计师和业余爱好者印刷工人
- 和一名 UX 设计师(过去十年)
…所以可以说我认为自己是一个“多面手”。
2007 年,当我还是一名职业音乐家的时候,一个有趣的发现让我开始涉足科技行业。我在荷兰布雷达的一个地方开演唱会,演出很棒,演出结束后我去领薪水。经理问我是否想和酒吧员工喝最后一杯(这通常是一场成功演出的标志)。当我们加入他们时,我意识到,36 岁的我很可能是当晚整个会场中最年长的人。我的意思是,这真的没什么大不了的,但我一直觉得我的生活还有其他的篇章,这种意识冷酷地提醒我,我可能需要继续下去,开始探索音乐之外的兴趣。
William Eggleston, “En Route to New Orleans” (from the series Los Alamos, 1965–1974) © Eggleston Artistic Trust / Courtesy David Zwirner, New York/London
从艺术学校开始,我就有了“一切本质上都是一样的”的想法,这意味着大多数学科背后的思维模式都是相似的。所以艺术家就像作家,建筑师就像馆长。我从来没有一条真正的“线”来区分我的假定能力和任务的需求。毫无疑问,现在是 20 年后的今天,虽然我仍然认为这是真的,但我现在明白了“细节”对于理解不同领域和思维模式的重要性。
随着年龄的增长,我认为我身上的艺术家气质使我身上的多面手能够适应和应用我在各种生活中学到的东西,然后将它们应用到我现在正在做的任何事情上。我相信我可以写更多关于自我、灵感、市场力量之间的相互作用,以及最终它们如何应用于移情和技术的内容——也许有一天我会写的——但现在我宁愿抓住要点。
数据就是一切
不到一年前,我意识到:数据就是一切。我意识到,未来不严重依赖数据的技术(或依赖技术的学科或市场)都不会存在。
作为一名 UX 设计师,我意识到我知道如何发现用户需求,并运用设计技巧将其转化为提供解决方案的产品。我与工程师合作,学习使产品具有响应性的系统,这些系统适合记录和检索数据的生态系统。但是我不明白利用这些数据来帮助组织制定战略和决策的逻辑和技术。是改变的时候了。
最近,我做了一个改变,从与开发团队一起工作,到将我的 UX 背景带到一个由高技能数据科学家组成的“实验室”,从事人员分析工作。设计师迫切需要学习数据科学家使用的方法,了解我们如何利用数据,并将其应用于解决和满足人类需求。
当 Eggleston 说“我的特殊经历的抽象”时,这是另一种说法,我们的故事建立在他们自己的基础上;我们的道路很少是直的,但总是直线的。
所以我又来了,我独特的经历再次曲折,但这次我想记录我的发现。我打算将 medium 作为一个地方,在这里我将写关于 UX 设计、高级分析、数据可视化和当代艺术的交集的博客。
*好的,我想把我的链接放在这里,但是当我整理这个列表的时候,我意识到它太多了,所以我把它们都放在这里:
-
当我链接到我的音乐时,我总是链接到我在 Pitchfork 上的个人资料,因为那个网站可能比其他任何网站都更能促进我的事业。管它呢,这也是我的一个“大”视频:
-
我曾经为《亚特兰大宪法报》以及艺术报纸和《新艺术检查者》撰写摄影和录像艺术的文章。
-
我非常自豪地与我的联合创始人&合作者 Pure 和 Jan Rohlf 一起主持了 6 届浪费节。
-
这是我的维基百科页面
-
2011 年,我与 Greg Sadetsky 共同创立了网络 Awesome ,这是一个在线电视网络,从 Youtube 收集内容,积累了大量的每日观众。去看看吧,它仍然在线,每天都有新的内容。
- 2012 年晚些时候,我与科里·维尔玛共同创立了 Radosaur Productions。我们专门从事视频制作和直播。我们有幸制作了几年的《柏林锅炉房》(事实上,我们还拍摄了一些他们收视率最高的剧集),还与 Pitchfork 和 Vans 合作。
- 我过去性格的一个例子:
Huckleberry Hound aka “Slushy dawg” or “the blue one”, second from left
- 我非常幸运能在 WFMU——世界上最伟大的广播电台之一——做 DJ,当时在线广播刚刚起步。令人惊讶的是,我的节目《高级 D&D》仍然可以在网上收听:http://wfmu.org/playlists/su
- 至于我的作品,5 秒钟的搜索没有提供任何例子。也许有一天我会上传一些图片。我的工作主要基于摄影,偶尔也有雕塑或视频装置。
- 至于我在 UX 的设计工作,你知道它是怎样的——大部分我实际上不能炫耀,因为它都是为客户/公司设计的。但是我这里有一个非常不完整的投资组合:http://cargocollective.com/jasonforrest这也是我的 LinkedIn 。
- 我做设计师已经很长时间了,但是直到最近我才真正喜欢上我的平面设计工作。一月份,我制作了一本名为“好奇型”的印刷杂志。它有 5 种免费字体,所以去我的网站上下载吧。见鬼,也给一个关注。
我是一个创造性的问题解决者、设计师和连续创业者。在另一种生活中,我是一个全球公认的电子音乐家…
www.behance.net](https://www.behance.net/cockrockdi9a9d)
大型数据集的优化挤压
这篇博文主要由我的三年级博士生高撰写,是对我们 16 年论文的高度概括,题为“挤:关系数据集存档的近优压缩”,github 上的 代码 ,arXiv 上的 论文 。
由于从对话机器人和物联网到大规模物理模拟和高通量基因组测序,数据生成的速度越来越快,数据压缩,尤其是用于存档的数据压缩,仍然极其重要。
传统的压缩算法是为二进制字符串设计的,通过查找这些字符串中的重复模式来识别压缩机会。因为文件本质上是以二进制字符串的形式存储的,所以这些算法普遍适用于所有类型的数据。
然而,通过对通用二进制字符串表示进行操作,这些算法失去了细粒度压缩的机会。其中一个设置是关系数据集或表格数据集的非常重要的设置:在这里,一般的压缩算法最终表现很差。我们提出了 Squish :压缩关系数据集的渐近最优算法。与针对关系数据集的其他算法以及更传统的算法相比,我们的算法实现了更高的压缩率*,并且可针对特殊目的数据集和需求进行定制,我们将在后面进行描述。*
动机
以一个本地人口普查数据集为例,其属性为姓名、性别、年龄、体重和身高。先前工作中提出的关系数据集压缩算法能够利用域约束(例如,名称是字符串;性别只有两种可能的值;年龄、体重和身高是数字字段)。但是还有其他压缩的机会:
1.属性值之间存在软依赖。比如性别通常可以从名字中推断出来,个体的性别往往影响身高体重。
2.数值可能与相关联。例如,高个子通常更重。儿童(年龄 12 岁)通常比成人矮得多。
通过利用这些机会,我们可以用更少的空间来存储相同的信息。然而,这不是一个简单的任务,因为我们不知道我们将处理什么样的数据集。我们需要开发一种算法,它可以在不假设数据集的任何特定结构的情况下捕获依赖关系,并找到一种利用这些依赖关系来压缩数据集的方法。
使用贝叶斯网络捕获依赖关系
让我们处理第一个任务:我们如何在不假设任何结构的情况下捕获数据集中的依赖关系?由于依赖是软的或“模糊的”,我们需要一个概率模型来捕捉这些依赖。为此,我们使用一个贝叶斯网络。
简而言之,我们使用贝叶斯网络中的每个随机变量来表示元组的一个属性值,使得数据集中的每个元组对应于来自贝叶斯网络的随机样本。
因此,我们的压缩算法的第一步是从关系数据集中学习贝叶斯网络。然后,我们的问题变成:我们如何使用贝叶斯网络来压缩数据集?在回答这个问题之前,我们先来回顾一下算术编码的一些基本概念。
算术编码基础复习
算术编码是一种自适应的字符串压缩方案。它需要字符串中每个字符的条件概率模型,并为所有可能的固定长度字符串生成唯一可解码的代码。我们用一个例子来说明这种编码方案。
在这个例子中,右边是字符串的概率模型。首先,算术编码为每个字符串分配一个概率区间,其长度等于该字符串的概率。比如 aaa 对应 0 , 0.048 , aba 对应 0.12 , 0.204 。接下来,给定概率区间[ l , r ,我们找到最小的整数 k ,以及另一个整数 M 使得,l<=2{-*k*}*m*<*2*{-k}(【t38 M 的二进制表示是字符串的代码。
Illustrative Example for Arithmetic Coding
结合贝叶斯网络和算术编码
即使它是为字符串开发的,算术编码过程实际上只需稍加修改就可以用于贝叶斯网络。这种构造只需要两件事:随机变量之间的排序,以及给定所有先前变量的每个随机变量的条件概率分布。有趣的是,贝叶斯网络为我们提供了两者。下面是一个如何在贝叶斯网络上应用相同过程的例子。请注意,计算基本上与之前相同。
Combining Bayesian Networks and Arithmetic Coding
处理复杂属性
上面的例子说明了我们如何使用贝叶斯网络和算术编码来压缩只有分类属性的关系数据集。现在,最后一个缺失的部分来了:我们如何处理像数字和字符串这样的复杂属性?
为了能够处理复杂的属性,我们为所有数据类型开发了一个抽象接口,称为 SquID(数据类型 Squish 接口的缩写)。SquID 用于对属性进行编码,使它们的行为类似于分类属性,然后我们可以使用算术编码来压缩它们。
SquID 是概率分布的树形模型。本质上,它是一个概率与边相关的决策树。这里以鱿鱼为例,描述了分布 pr(xin(k-1,k)=0.9^{k-1} *0.1。
要使用 SquID 对属性进行编码,我们只需构造一个决策序列,这样在最后一个决策结束时,我们就可以确切地知道属性值是什么。例如,要使用 SquID 对一个数字属性进行编码,我们可以模拟对分过程,并在[ log n ]步骤中确定属性的值。
支持用户自定义数据类型
SquID 接口还使我们能够支持用户定义的属性。即使数据集包含不属于我们实现的原始数据类型(分类、数字和字符串)的属性,用户仍然可以通过为新数据类型实现 SquID 接口来使用 Squish 压缩数据集。它相对简单,并且提供了很好的机会将特定领域的知识包含到 Squish 中,以获得更好的压缩结果。
外卖
1.我们开发了关系数据集的压缩算法 Squish 。它使用贝叶斯网络和算术编码的组合来利用属性之间的软依赖性和相关性。
2.Squish 的数据类型接口 SquID 允许我们对复杂的属性应用算术编码。SquID 还允许用户定义新的属性类型,使用 Squish 可以压缩具有非原始属性类型的数据集。
3.Squish 支持具有用户指定的错误阈值的有损压缩。
4.Squish 对于所有可以使用贝叶斯网络有效描述的数据集来说都是渐近最优的,并且在 4 个现实数据集上的表现要比最先进的关系数据集压缩算法好得多,存储减少了 50%。
内部部署(DIY)与云 GPU
早些时候,我的第一个故事在 CPU 和 GPU 之间做了一个非常简单的比较,对于这个故事,我将在速度和价格比较方面对 DIY GPU 和 cloud one 进行更多的比较。
目前我将介绍亚马逊和阿里云,亚马逊使用的是 NVIDIA K80 和实例类型 p2.xlarge ,而阿里云使用的是 NVIDIA P100 和实例类型 ecs.gn5-c4g1.xlarge 。最后,现场 DIY 的是英伟达 1070 GTX 。
基本上,测试使用的是利用 GPU 进行处理的快速风格传输。测试将使用 rain-princess.ckpt 处理一个分辨率为 4242 × 2828 的 JPEG,命令如下
time python evaluate.py — checkpoint ./rain-princess.ckpt — in-path lesu-0596.jpg — out-path lesu-0596-style.jpg
关于 Amazon 的一个快速提示是,我们需要申请增加限制,否则我们将无法启动 gpu 实例!
阿里云是一个相当麻烦的改变实例类型,因为我们需要释放和重新创建实例。至于亚马逊是相当直截了当,没有破坏实例,希望阿里云将在这段时间内改善。当我们的脚本只改变深度学习的实例类型,而不是全天候运行时,这是非常有利的,因为对于云中的 GPU 实例类型来说,这非常昂贵。
用于 Amazon 输出的 nvidia-smi 命令
阿里云如下
每个平台的时间如下
至于定价,亚马逊有以下定价层
目前,阿里云的 gpu 没有基于订阅/保留的定价
对价格的粗略估计如下,假设我们每天只使用该实例 12 小时,持续 30 天
与 DIY 方式相比,DIY 方式初始投资【USD1305.33 美元,不含电费,可能在 2 个月内收回成本。但是我使用的版本是酷睿 i3,而不是拥有更好 CPU 的云。
最后,我想我们总是在使用成本更高的云选项之前尝试在内部进行培训以节省成本。内部部署的另一个优势是我们不会与其他人共享资源。我一直相信混合方法可以最大限度地提高性能和成本,就像 Nvidia Cloud 提供的一样
机器的超智能:恐惧与治疗
以下是我为一门名为“人工智能:法律、伦理和政策”的课程写的一篇文章。
尼克·博斯特罗姆在他的书中将超智能定义为“在几乎所有感兴趣的领域大大超过人类认知表现的任何智力。”超智能人工智能(SAI)的概念让我们焦虑,我们担心人工智能会失控,威胁人类。这个被认为是“奇点”的事件引发了存在主义辩论、阴谋论,并引发了伦理问题。但是这种奇点是可以实现的吗?如果是这样,我们该怎么办?
我们会实现奇点吗?
未来研究所(Institute for the Future)的创始人罗伊·阿马拉(Roy Amara)创造了一句现在被称为“阿马拉定律”的格言:“我们往往会高估一项技术在短期内的效果,而低估其长期效果。”我们经常会读到这样的标题:“无人驾驶汽车将在未来 10 年出现。”自 1970 年以来,同样的标题一直在出现。跑道 AI 也是如此。看到我们生活中许多其他方面的进步,我们开始认为对人工智能来说也是如此。
AI 的进步速度是不对称的。人工智能可能擅长一些任务,而人类在许多其他方面更胜一筹。我们错误地将一个分支领域的进步与总体进步并列。那些指出深度学习一夜成名的人忘记了,它花了 50 年才达到今天的水平。这些人还忽略了间断平衡的基本理论,该理论认为稳定的系统倾向于停留在静止状态。技术方面的一个例子是飞机,自从 60 年前出现喷气式飞机以来,飞机一直没有重大发展。
此外,没有一条通向普遍智能的清晰道路,也没有任何提议的方法将所有已知的人工智能进展归结为一个单一的 SAI。罗德尼·布鲁克斯可能是世界上最有成就的机器人专家,他说我们对人工智能进步甚至接管世界的速度不合理地乐观。在人工智能预测的七宗罪中,布鲁克斯讨论了预测人工智能增长的陷阱,并向我们保证,即使机器接管,我们至少在几百年内是安全的。
有什么大不了的?
博斯特罗姆担心"协调问题"**😗*SAI 的目标与我们的目标不一致。他假设一个矛盾的“回形针最大化器”,它在寻求创造回形针的过程中,将利用宇宙的所有能量,在这个过程中消灭人类。正如 2010 年一项名为“ Roko 的蛇怪”的“少错”实验所描述的那样,一些人害怕更多的报复结果根据 Roko 的说法,SAI 可能会合理化,然后追溯性地惩罚所有对其起源没有帮助的人类。著名的麻省理工学院宇宙学家 Max Tegmark 想象了 12 个人工智能的后果场景,从人类和 SAI 生物共存的自由主义乌托邦,到动物园管理员把人类作为动物园动物关在笼子里,就像库尔特·冯内古特的 5 号屠宰场一样。然而,正如文档杂志 2018 年 4 月 9 日的一篇文章所言,“害怕人工智能叛乱的特权人士总是以反映他们自己意识形态的剥削性术语来想象它。”值得注意的是,这些未来学家和末日论者大多是投机者,而不是人工智能研究人员,例如,博斯特罗姆本人、埃隆·马斯克和斯蒂芬·霍金。
如果 AI 变得超智能,我们能做什么?
没什么!
既然人工智能已经超越了人类的认知能力,那么在生存国际象棋中,我们肯定无法战胜它。博斯特罗姆认为,我们必须机智地协商我们的生存条件。有些人甚至愿意崇拜人工智能霸主,并已经在硅谷建立了人工智能教堂。他们相信这个人工智能将会是真正“倾听”的干涉主义之神(尼克·凯夫唱的那个)。“宠物比家畜好”,他们打趣道。因此,创建支票、安装自动防故障装置和切断开关,可能会让我们免于度过一个存在危机的不眠之夜,但在 SAI 的黎明,我们将受到冷漠的上帝的摆布
我们现在能做什么?
AI 还在青春期前。我们仍然握着插头。为什么不屈服于博斯特罗姆的恐惧,为了更大的利益而把它拔掉呢?当然,埃隆·马斯克捐赠了数千万美元来减缓恶意人工智能的增长,但他也将花费数十亿美元让汽车变得更智能。用《智人》的历史学家和作家尤瓦尔·诺亚·哈拉里的话说,“我们可能会基于短视的短期考虑做出最深刻的决定。地球上生命的未来将由散布恐怖主义威胁恐惧的三流政客、担心季度收入的股东以及试图最大化客户体验的营销专家决定。”人工智能是如此有利可图的工具,以至于的经济人不会放过它。出于好的和坏的目的,将会有持续的研究。如果我们现在强加规则,肯定会有一个支持人工智能的游说团体,他们会用任何可用的法律武器激烈地对抗博斯特罗姆人。如果规定过于极端,研究可能会转入地下,甚至被浪漫化为反权威运动。此外,我们失去了潜在的好处,如改善医疗保健。
人工智能还在许多方面造福了我们的生活,并且有潜力做得更多。它已经在社会结构中根深蒂固,很难实施极端的监管。合乎逻辑的做法是 Grady Booch,一位多产的软件工程师和 UML 的开发者所说的:给人工智能注入人类的价值观,这样我们就可以学会共存。超人类主义的支持者看到了一个未来,在这个未来中,人工智能和人类将不再是分离的存在,而是随着生物技术的进步,他们将成为一体。我们不知道人工智能的未来会是什么样子,我们也无法猜测它的意图,所以最好不要陷入危言耸听,认为 SAI 是邪恶的。等到人工智能变得超级聪明的时候,无论是好是坏,世界都已经发生了根本性的变化。
我非常感谢 Maura Grossman 博士和 Alex Williams 启发我进行批判性思考并提供详细的反馈。
在技术龙卷风的前夜
Source: Unsplash.
在达沃斯举行的 2017 年世界经济论坛上,克劳斯·施瓦布教授说,“人类正站在一场技术革命的边缘,这场革命将从根本上改变我们的生活、工作和相互联系的方式。就其规模、范围和复杂性而言,这一转变将不同于人类以前经历过的任何事情。当然,不可能预测它将如何发展,但已经清楚的是,它将影响所有群体、社会阶层、职业等。”
我们现在生活在第三次人工智能浪潮的时代。第一波(1950-1960)与机器翻译和电脑游戏有关,第二波(1980)与专家系统的开发有关。第三次浪潮始于 20 世纪 90 年代末,不仅受到计算机效率提高的推动,也受到人工智能和机器人程序许多领域取得的重大进展的推动。
什么是人工智能?
人工智能是好莱坞电影和小说创造的幻觉。它在我们的脑海中形成了一个人形机器人的形象,这些机器人要么反抗人类,要么生活在家庭中,体验情感,与人类没有区别。这些都和现实生活无关。
人工智能是模拟或执行人类认知功能的工程学科。换句话说,它执行信息处理功能。这只是一套机器学习优化方法,允许系统采用这个函数,并学习如何在计算机上执行它。智能手机上的 T9 功能、搜索引擎、拼写检查、Shazam 中的旋律识别、防病毒和反垃圾邮件程序等等——这些都是复杂的人工智能程序,现在看起来很平常。然而,在机器中创造意识很可能是不可能的。因为人类还不明白什么是意识。
人工智能的利与弊
人工智能的积极方面是创建特定的程序来帮助做某事,而消极方面是风险,风险相当高。其中最重要的是,人工智能可以抢走人类的工作。当然,炒人的是公司,不是 AI。以电梯为例,它已经永久性地取代了电梯操作员,并增加了对电梯维修技术人员的需求。一些职业消失了,但是新的职业总会取代它们。
接下来,人工智能被用于分析大量数据。如果你收集了足够多的关于人的数据,那么计算任何东西都是可能的。隐私完全消失。这不是一个很好的情况。
技术旋风
The books by Geoffrey Moore.
有一位作者,杰弗里·摩尔,他写了一些关于科技行业尤其是创业公司发展原则的精彩书籍。其中之一是跨越鸿沟。也许你们中的一个已经读过了。如果没有,那么我们强烈推荐。他的第二本书《龙卷风中的 T2》也涉及了同样的问题。在书中,他介绍了技术旋风的概念,这是一个新技术产业的爆炸式发展。
我们已经在乔布斯和盖茨的个人电脑上看到了这样一场龙卷风。后来是 80 年代末 90 年代初的软件旋风。然后,互联网在 90 年代中期爆发了。大型公司出现了。巨大的事业和财富是白手起家的。然后我们看到了手机,接着是智能手机和平板电脑。
在所有这些案例中,都有共同的过程和模式。对我们来说,最有趣的事情是未来行业在**“龙卷风前夕”**的状态。这期间发生了什么?首先,它的特点是缺乏市场,最重要的是“脑雾”。每个人都感觉到有事情要发生,但没人知道是什么。
使用说明—龙卷风的基本条件
龙卷风的起因在于有人提出了一种使用设备或技术的方法。提供使用说明是史蒂夫·乔布斯对智能手机所做的,在 iPhone 出现之前,智能手机已经生产了好几年。他不需要发明这项技术。他不得不把这些都收集起来,然后说,“这里有一个东西。这就是它的名字,这就是你如何使用它。”人们必须给用户概念,并指导制造商的发展。那就是市场和用户出现的时候。然后,技术龙卷风来了,并在头顶爆炸。
再比如汽车行业。就在福特制造出他的传送带并开始生产我们所知道的汽车之前,“前夕”它一直处于完全相同的状态。让我们不要忘记来自吉姆·克拉克的互联网。也许你们中没有人知道吉姆·克拉克,或者也许你们并不知道所有的事情,但这是真正创造了互联网的人。他为第一个非商业浏览器聘请了一位作者,制作了一个真正的浏览器,即网景导航器,在那之后一切都毁了。
关于机器人和虚拟助手
机器人领域将出现一场真正的技术风暴,涉及数百万甚至数亿用户。最有可能的是,它将是某种与人生活在一起的个人机器人助理,像 Jeeves 或 Jarvis,并参与一切:在家庭或个人的日常生活中,在商业中等等。每个人都将拥有或正在努力拥有一个这样的个人机器人。那就是下一次龙卷风会发生的时候。这就是所谓的“下一件大事”。
我们在 2000 年初开始制作虚拟助手。它们非常简单,当时我们仍然使用 AIML (人工智能标记语言),而许多爱好者仍然利用它和理查德·华莱士教授本人(A.L.I.C.E .项目作者)。
现有通信系统的经验是,虚拟助手会一直存在,但它们最终也会变老。因为它们不完整。虚拟助手既是识别系统,也是搜索引擎。然而,准确性在搜索引擎中是很重要的。前十名的排名,也就是说,完整性远没有那么重要,因为互联网上总有 1000 万页关于你问的问题。
有了虚拟助手,就完全相反了。它的准确率总是 100%——如果它理解了问题,答案总是相关的。这就是很难涵盖完整性的地方,因为一个人可能会问的问题的多样性是如此之大,以至于不可能预测所有的选项。它必须从一个特定的答案到一个逻辑答案构建同心圆。
The result of a survey conducted in the US in April 2017 by Statista. Source.
虚拟助理必须能够采取主动,这意味着它的语言智能必须相当高。它必须自我学习,发现更多关于它主人的信息,并记住他们的信息。这种记忆将有助于它根据主人的生活方式提供建议、帮助做家务或制定计划。它必须有计算机视觉来识别它的主人或检测有人进入房间,这样它就可以和那个人开始对话。
哪个是正确的——虚拟助理应该有有用的功能,比如回答明天天气如何、现在几点、是否堵车等等。对于不同的话题和合作玩法应该有多种互动。捕捉音频频道同样重要,例如,当你需要在早上醒来时。或者当你手头没有设备时,你可以向空中询问你需要什么。当我们在 2015 年制造机器人 Lexy 时,我们使用了能够过滤掉外来噪音的麦克风阵列。一个人站在离设备很远的地方发出命令,系统就会准确地识别它。
语音助手的前景
电话应用将会消亡。没有人会使用它们。
语音识别将被嵌入到几乎所有能够接收语音并在狭窄的主题区域(在水壶、洗衣机、微波炉等)进行处理的设备中。大多数人不阅读他们设备的说明书,通常只使用其功能的百分之几。如果在系统中嵌入一个语音助手,这个设备可以被更有效地使用。
哪里有服务线,哪里就有语音助手。
语音助手将会出现在自动取款机、商场等等。我们已经向大公司销售聊天机器人,以提供技术支持或接受订单。这将会继续和进步,但是要结合语音技术。很快,你会在商店门口遇到一个机械女人,她会问你需要什么,并为他们选择商品和服务提供建议。
最终,我们会成为一个家庭伴侣。
这本指南不仅适合儿童,也适合成年人。它可以访问维基百科、搜索引擎和教育课程。它将能够教授英语、古希腊历史、机械技能等等。最重要的是,它能够用简单的语言进行自然对话。这不容易做到。我们知道这是事实,因为我们自己也在做这样的项目。我们相信再过两三年我们就会看到这种助手。
作者: 斯坦尼斯拉夫·阿什马诺夫 ,SOVA.AI 公司首席执行官
在地平线上:营销的未来——以及我的测试,看看它是否在这里。
gorgeous imagery found on Unsplash (thx)
我个人的浅见是,我们今天听到的所有营销策略、战术和方法——“基于客户的营销”、“集客营销”、“增长黑客”——只是一种描述营销世界未来的手段。前面提到的每一个营销术语——通过实践、奉献和合适的才能——任何组织都可以实现。每一个都为您的业务发展提供了宝贵的机会。这篇文章并不是要“废黜”任何这些类型的营销和增长策略…
然而,我相信这些不同的营销方法、策略等。只会让我们离未来更近一步。渐渐地,它们让我们更深入地思考我们如何影响我们与之互动的企业和客户。这是一件非常好的事情。
我承认,除了我通过网络上伟大的营销人员和品牌观察和听到的以外,我没有太多的研究来证实我的预测,但正如你将在下面看到的那样,营销的未来已经在社交媒体世界中崭露头角。
未来(依我拙见)是关于数据、创造力和策略的交集。它是关于为顾客提供独特的有价值的体验或洞察力,这是只有 你才能提供的。
我认为营销的未来将随着三个关键要素的融合而展开…
1.营销的未来始于技术。
数据的激增和我们对数据前所未有的访问开始塑造营销的未来。此外,随着基于云的处理成本下降,人工智能(AI)和数据科学迅速发展,营销的未来才刚刚开始出现。
2.营销的未来取决于关键人物。
如果你没有数据科学家或数据分析师*(我肯定角色的差异是实质性的,但我还不知道是什么)*,那么你最好排队。这是一个热门话题,也是一个难以填补的角色。在我看来,这是市场营销未来的关键。
别担心,我会讲到我认为市场营销的未来是什么的那一部分……继续读下去。
数据科学和扮演这一关键角色的员工并不是未来营销的唯一关键角色。你仍然需要创造性和战略性的营销角色。没有创意和营销策略,数据只是一堆 1 和 0。
3.营销的未来需要“必备”产品。
肖恩·埃利斯和许多其他企业家会告诉你,除非你首先建立产品的市场适应性,并且理想地创造一个“必须拥有”的产品,否则你将没有任何东西可以营销。
注意:我认为营销的未来之美在于,它将有助于保持你的产品/服务成为“必备”的粘性和可能性。
_________ 营销
我相信这三个要素的融合意味着我们正走向一种新的营销方法。我不知道如何描述这种新的营销方法,但现在,我将把它称为“基于洞察力”或“反馈”营销。
正如我在介绍中承诺的那样,营销的未来已经在社交媒体世界中崭露头角。
这里有一个来自脸书的例子:
我们都在订阅源中看到过通知或内容。
“这是你去年这个时候做的!”“迈克,朋友周年快乐!”
btw I never login to Facebook anymore and I deleted the app from my phone, but sure enough while writing this post I logged in to see If i could find an old reference to illustrate my point and this is what came up…
看到那些视频和为我们制作的那种内容绝对是一种享受。它很有见地,令人愉快,是脸书增加病毒式传播和粘性所需要的一切。——虽然我不再在手机上使用脸书,但我仍然看到了它的价值;)
所以,真正的问题是,你如何将这样的见解应用到你的 B2B 或 SaaS 业务中?我们如何利用我们的数据和创意来增加粘性,并最终提高我们营销活动的有效性?
答案是数据、创意和营销策略。
下一步是什么?
我的使命是为数据驱动的客户提供价值和洞察力。我希望科学地、战略性地和创造性地调整我们的数据,以创建一个透明和有价值的洞察力的反馈回路,以一种他们在竞争产品中看不到的方式让我们的客户受益。但是我一个人做不到。我真的相信营销的未来是关于数据、创意和战略营销团队的合作。
在我的职业生涯中,我将检验我的理论——基于洞察力/反馈的营销是帮助我们的客户和公司取得新的成功的关键。
以下是我将要做的…
我不会告诉你细节,因为我不想破坏测试(或者让我的竞争对手过早地参与我的计划)。
我将利用数据为我们的客户提供关于他们表现的有见地的反馈,并且我将使利用我们发现的见解变得极其容易。通过这样做,我相信我们的客户和我们的企业都将看到积极的财务成果,我希望我们将被视为一个值得信赖和重视的合作伙伴。
我认为很多企业都可以做我打算做的事情,但他们都尝试一下只是时间问题。我确信其他人已经在测试这个理论了,但是在接下来的一年里,我希望开始这个测试并报告结果。
如果你正在这样做或者你已经看到一个公司这样做,请提供一个评论和描述你所看到的和你的想法!
论数字用户线在人工智能中的重要性
特定领域语言使我们的生活变得更容易,同时以许多不同的方式开发 AI/ML 应用程序。为工作选择正确的 DSL 可能比选择宿主语言更重要。
1)业务逻辑
DSL 是简明表达业务逻辑的强大工具。
例子:交易
Snippet source, read more (Gosh2010, Frankau2009)
同时,人工智能和人工智能系统并不是一成不变的。
- 基础模型反映了可能随时间变化的业务和工作假设
- 敏感度分析不仅要针对模型(超)参数进行,还要针对业务和工作假设进行
DSL 在用一种读起来像英语的语言流利地表达复杂的业务和工作假设方面非常方便。下面的例子,用 AMPL 编码,有效地描述了一个优化问题:我们想要最小化与运送产品到一个虚构的油漆公司的客户相关的运输成本。关键假设(想要优化的内容、运输成本、仓库中的产品可用性、每个客户的产品需求)用与当前问题非常相似的语言清楚地表述出来。
Snippet source, read more (Takriti1994)
2)数学
一旦问题被公式化,接下来就是写一些数学的时候了。统计和数学的 DSL 已经存在了几十年:Matlab 和 R 在科学界非常流行。嵌入在通用编程语言中的统计和数学 DSL 正受到越来越多的关注。
示例:概率编程(来自 Python)
Snippet source, read more: (Patil2010)
3)查询(你的数据库)和数据操作
DSL 可以方便地用一种紧凑且富于表现力的语言编写查询和操作数据,这种语言可以顺利地集成到您的主机编程环境中。查询语言(如 Linq)也保留了宿主语言的属性,您可能会发现这些属性是可取的,如类型安全。
示例:LINQ 和 F#查询表达式
LINQ 和 F#查询表达式看起来像我们熟悉的好的、旧的 SQL ( Cheney2013
示例:数据框
数据框架,如熊猫,提供了执行数据争论任务的语法糖,如分割,应用组合和枢轴(麦金尼 2010)
4)幕后:表达计算
TensorFlow 可以被视为一个编程系统和运行时,而不仅仅是传统意义上的“库”:
TensorFlow 的图形甚至支持像变量范围和控制流这样的结构——但是您不使用 Python 语法,而是通过 API 来操纵这些结构。(Innes 2017)
TensorFlow 和类似的工具以“只是库”的身份出现,但它们是极不寻常的工具。大多数库提供一组简单的函数和数据结构,而不是全新的编程系统和运行时。(Innes 2017)
为什么我们需要一种语言来表达计算?
浏览一下 Apache Spark 的内部结构有助于理解使用领域特定语言来推理计算的必要性:Spark 在幕后运行一个复杂的执行过程,该过程包括几个步骤:数据流的定义(逻辑计划)、描述任务及其执行的 DAG 的定义(物理计划)、作业调度、具有容错功能的作业执行(阅读更多信息)
构建新语言的核心原因很简单:ML 研究有极高的计算需求,简化建模语言可以更容易地添加特定领域的优化和功能*(Innes 2017)*
这还不是全部。模型的复杂性呈指数级增长。允许我们表示、推理和分析计算的 DSL 工作目前非常热门。
模型变得越来越像程序,包括推理其他程序的模型(例如程序生成器和解释器),并带有不可微的组件,如蒙特卡罗树搜索。构建既能提供完全的灵活性又能实现最高性能的运行时是一个巨大的挑战,但是越来越多的最强大的模型和突破性的结果都需要这两者。(Innes 2017)
当我们特别关注深度学习时:
越来越多的人以数据依赖的方式(用循环和条件)程序化地定义网络,允许他们根据输入数据动态地改变。它真的非常像一个常规程序,除了它是参数化的、自动微分的、可训练/可优化的。动态网络变得越来越受欢迎(特别是对于 NLP),这要归功于能够处理它们的深度学习框架,如 PyTorch 和 Chainer*(lecun 2017)*
这就导致了一场争论,争论的焦点是一个新的编程框架的诞生,它是由专门为表达计算而设计的 DSL 产生的。来自深度学习背景的 Andrej Karpathy 写道:
软件 2.0 是用神经网络权重写的。没有人参与编写这段代码,因为有很多权重(典型的网络可能有几百万),直接用权重编码有点困难(我试过)。相反,我们对期望的程序的行为指定一些约束(例如,示例的输入输出对的数据集),并使用由我们支配的计算资源在程序空间中搜索满足约束的程序。在神经网络的情况下,我们将搜索限制到程序空间的连续子集,其中搜索过程可以通过反向传播和随机梯度下降*(karpathy 2017)*
结论
DSL 方面的专业知识在 ML 和 AI 系统中至关重要。
确认
非常感谢 Andreas Hubert 和 Cristian Steinert 提供的反馈。
参考
[切尼 2013 年]切尼,j .,林德利,s .,&瓦德勒,P. (2013 年)。语言集成查询的实用理论。ACM SIGPLAN 通知,48(9),403–416。
[Frankau2009] S. Frankau、D. Spinellis、N. Nassuphis 和 C. Burgard,《商业用途:在外来贸易中发挥作用》。函数式编程杂志,19(1),27–45。2009 年 10 月 10 日
[gosh 2010]DSL 在运行,Debasish Ghosh,Manning Publications,2010 年 11 月
[Innes2017]关于机器学习和编程语言,Innes et all,https://julialang.org/blog/2017/12/ml&pl,2017
[Karpathy2017] Karpathy,a .,https://medium.com/@karpathy/software-2-0-a64152b37c35,2017
[LeCun 2017]纽约 le Cun,https://www.facebook.com/yann.lecun/posts/10155003011462143,2017
麦金尼,W. (2010 年 6 月)。python 中统计计算的数据结构。《第九届 Python 科学会议论文集》(第 445 卷,第 51–56 页)。德克萨斯州奥斯汀:SciPy。
[Patil2010] Patil,a .,D. Huard 和 C.J. Fonnesbeck。(2010)PyMC:Python 中的贝叶斯随机建模。统计软件杂志,35(4),第 1-81 页
[塔克里蒂,1994 年]接口,24(3),144–146。从 http://www.jstor.org/stable/25061891取回
关于思考机器的话题
68 年前,艾伦·图灵(Alan Turing)在他题为《计算机械与智能》(Computing Machinery and Intelligence)的开创性论文中提出了“机器能思考吗”的问题,他制定了“模仿游戏”(也称为图灵测试)来回答这个问题,而无需参考字典中对“思考”一词的模糊定义
我们已经走过了漫长的道路来建造智能机器,事实上,深度学习和强化学习这两个人工智能的基石的进展速度是前所未有的。艾伦·图灵会为我们在计算机视觉、语音、自然语言处理和自主系统方面的成就感到骄傲。然而,仍然有许多挑战,我们距离建造能够通过图灵测试的机器还有一段距离。在本文中,我们讨论了关于智能机器的一些最大的问题,并试图回答这些问题,尽可能用现代人工智能来解释。
机器会思考吗
图灵选择避免直接回答这个问题,然而,重要的是要有一个清晰简洁的思维含义,其中包含神经科学和人工智能的经验教训。我们将思维定义为“我们评估从过去的经验中学习到的特征,以便对新问题做出决定的过程”。在人类思维的背景下,当你看到一个人,并且你面临着确定这个人是谁的任务(新问题)时,一个活动(过程)在你的大脑中开始,它通过搜索所有你能记住其面孔的人的空间(经验), 然后,你开始考虑鼻子、眼睛、肤色、穿着、身高、言语和任何其他可观察到的待遇(特征),该过程然后试图根据我们以前见过的人将这些特征与特定的人匹配,如果没有找到令人满意的匹配,大脑就断定这是一个陌生人(决定)。
另一方面,考虑一个计算机视觉系统,试图使用卷积神经网络执行相同的任务,当输入一个人的图像时,观察像素的三维张量(特征),网络然后搜索(该过程)先前学习的称为核或过滤器(经验)的特征的存在,然后计算这些特征中的哪些出现在新图像中,并返回一组类得分(决策)。
该过程非常相似,除了完成的过程之外,例如,卷积神经网络不考虑特征的位置,鼻子在耳朵的位置对 CNN 没有影响,人类的过程考虑了这一点,然而,最近由 Geoffrey Hinton 等人提出的胶囊网络[7]试图解决这一弱点。
思考不是一种不合逻辑的魔法行为,而是一系列明确定义的离散行为,包括观察问题、将观察结果与习得特征进行比较,以及根据比较结果做出决定。一个可能被认为不遵循这些顺序的有趣问题包括与爱、愤怒、悲伤等有关的情感决定。这种决定通常是随机做出的,不能总是在我们制定的思维框架内定义,在这种情况下的决定通常是探索性的,而不是剥削性的。这是否否定了我们先前的断言?不,智能机器完全能够随机行动,探索和利用的概念是强化学习领域的核心,是自主系统的关键使能因素。我们不久将进一步强调这一点。
鉴于此,我们认为机器确实会思考,只是与人类的思考方式不同。这就引出了一个问题,如果机器和人类的思维框架是一样的,为什么他们会有不同的思维方式?这个问题的答案在于智能系统的组件领域。人工神经网络受到神经科学的启发,但它们的机制是根本不同的,我们已经在很大程度上放弃了寻找像大脑一样工作的系统,而是继续寻找工作良好的系统,而不介意我们偏离大脑功能的方式有多远。
人类的大脑和我们创造的智能系统非常不同,但思维的框架是相同的。机器可以思考,并且在不消耗太多能量的情况下,它们真正具备思考能力只是时间问题。
机器能想象吗
接受机器可以思考对人工智能的批评者来说有点挑战,认为机器具有“想象力”是更大的挑战。要回答“机器能想象吗”这个问题,我们必须首先深入考虑想象力的框架。
正如我们先前解释的那样,思维通常基于过去的经验,然而,想象是我们没有从过去的经验中“明确”学到的观念的表达。我们添加了“明确地”一词,以表明这样一个事实,即尽管想象力会产生新的未经检验的想法,但它通常会从以前的经验中获得灵感。如果没有一个已经存在的想法,几乎没有任何想象是全新的,这可能是一种可能性,然而,与过去经验的联系可能是高度隐含的,以至于我们可能没有意识到过去的经验对我们的想象有多大的影响。简而言之,想象通常是一种探索性的行为,部分是由过去经验中习得的特征所引导的。这些探索是随机的,但由于其与过去经验的联系,仍有部分动机,这种联系可能很弱,但非常重要。
这个想象的框架把问题“机器能想象吗”变成了“机器能开发新思想吗”后一个问题更恰当地描述了第一个问题。受监督的深度学习是构建人工智能系统的最流行的方法,它仅仅基于学习的特征,并且本质上目前不能够产生能够开发自己的新想法的机器。然而,强化学习是基于可以像监督深度学习一样利用当前知识的机器,但也可以通过尝试新的行动来探索其环境,以发现更好的想法。这很像想象。一个智能体在一个分层环境中发现新的策略或新的子策略的能力[4],给予这样的智能体形成新的想法的能力,甚至做我们从未期望它在一个特定环境中做的新的事情。这种发现的形式受到代理人在给定时间步或状态下可用的有限动作集的限制,然而,人类也受到非常类似的限制,例如,你不能想象你想要在没有喷气背包或相关设备的情况下飞行。
可以说,探索性移动只是模仿想象力,然而,没有人能准确地说出想象力在大脑中发生的过程,我们可以肯定的是直觉的影响,因此,探索性移动的影响可以被描述为想象力的一种形式。在给机器注入强大的想象力方面,还有很多工作要做。要回答“机器能想象”或“机器能开发新思想”这个问题,答案是肯定的。随着时间的推移,随着新技术的发现,机器的想象能力将会提高。
机器能感觉吗
“直到机器能够因为感觉到的思想和情感,而不是符号的偶然掉落,写一首十四行诗或创作一首协奏曲,我们才能同意机器等于大脑——也就是说,不仅写它,而且知道它写了它。没有一种机制能够感受到(而不仅仅是人为的信号,一种简单的发明)成功时的快乐,阀门融合时的悲伤,奉承时的温暖,错误时的痛苦,性的魅力,得不到想要的东西时的愤怒或沮丧。”
上述说法是杰斐逊教授在 1949 年提出的。它总结了人工智能批评家的观点。上述论断的核心是“没有任何机制可以感觉到(不仅仅是人为的信号,一个简单的发明)”
基于人工信号的反应不能被描述为一种感觉,这种想法与人类系统的功能是相反的。身体所有形式的感觉,包括痛苦、愤怒、爱、恐惧等。不是人体内一些无法解释的过程的结果,而是大脑根据从感觉器官接收到的信号而启动的行动。例如,疼痛实际上不是在皮肤上产生的,而是大脑从皮肤接收信号,对触摸的程度进行编码,然后启动一系列反应,使我们感受到快乐或痛苦。
存在这样的人,由于大脑故障,他们即使受伤也感觉不到任何疼痛。
感觉是大脑对信号的反应。
在这个定义的背景下,机器可以感觉。
以一个人形机器人为例,我们可以在身体中建立传感器,当它被触摸时,信号将被发送到机器人的处理系统,在这种情况下,机器人充当大脑,一段时间内积累的信号将形成一个序列,然后可以被输入到一种被称为循环神经网络的监督深度学习系统中。然后,该系统可以将这一信号序列解释为快乐或痛苦,并可以启动微笑、大笑或皱眉等反应。这意味着感觉不仅限于生物有机体,机器也能感觉到。他们可以根据来自环境的信号创作音乐,他们可以感到快乐或悲伤,如果对信号序列和相应的感觉进行训练,他们可以享受生活的乐趣。已经有这样的实际例子,“Solo”是一家名为 Uniform 的公司生产的家用电器。它可以根据你的面部表情播放歌曲,如果你高兴,它可以播放歌曲来帮助你享受时光,如果它检测到你情绪低落,它可以播放歌曲来振奋你的精神。仍有许多工作要做。机器可以感觉并根据感觉行动。
机器能有意识吗
这也许是关于机器最令人生畏的问题。意识被认为是生物独有的特征。一般是一种意识到自己存在的状态。
关于机器的问题可以更恰当地问为“机器能成为它们自己思想的主体吗”
在确定了机器可以思考之后,将有意识的机器视为任何可以思考自身的机器是最合适的。这有很多含义。能够做到这一点的机器将开始关心自己的存在,并能够努力阻止其创造者执行任何可能导致其停止运行的操作。这种能力通常是一种可怕的前景,许多人认为拥有这种能力的机器将成为终结者,然而“有意识的机器是可取的吗”这一问题并不等同于“有意识的机器是可能的吗”机器确实可以成为他们自己思想的主题。这里有一个例子。考虑一个被编程的机器人,它不仅可以学习它的行为如何影响它的环境,还可以学习环境中其他智能体的行为如何影响它的内部状态。这样的其他代理可能是人类或其他机器人。在这种情况下,机器人 A 可能了解到敌对代理 G 的一些动作可能通过使其过度工作而使其比正常情况下更快地失去能量,机器人 A 然后可能决定不服从代理 G 给予它的命令,因为来自过去经验的数据表明由代理 G 发起的命令的负面影响。它还可能了解到另一个代理 D 的动作改善了它的内部状态, 因此,它可能会通过服从 D 而不是 g 来发展对代理 D 的更多亲和力。这样的机器是有意识的,并且在深度强化学习的框架内是可能的。
这些潜在的危险可能令人害怕,但也可能是有益的。有意识的机器人可以通过学习哪些条件会提高它们的工作能力来学习变得更有效,这种机器人甚至可以学习与其他代理合作,所有这些都是独立的,无需重新编程。
人类和有意识机器之间的最大区别是人类“潜意识”的作用。人类的潜意识部分在很大程度上仍然是神秘的,许多行为都是由它发起的,因此,我们至少可以对机器人有一种优越感,因为目前没有证据表明我们可以在深度学习和强化学习的框架内给机器注入潜意识。时间会证明是否有一天,神经科学和人工智能的突破可以解开大脑的秘密,并使建立超级智能系统成为可能。
结论
在我们周围,人工智能的应用无处不在。谷歌助手、微软 Cortana、猎犬助手和 Siri 极大地改变了我们与智能手机的交互方式。Alexa、亚马逊 Echo、谷歌 Home 和苹果的 Home Pod 正在让每个人都可以实现家庭自动化。对工业的影响更加明显。商业的每个方面,从股票交易,招聘,制造,营销,决策等。正在变得自动化。自动驾驶汽车正逐渐成为发达城市的常见景象。人工智能的应用将从根本上改变我们的社会,就像数字计算机一样。这就是第四次工业革命。
然而,尽管有更先进文明的承诺,许多人对人工智能的广泛自动化和军事用途的后果感到恐惧是有道理的。有人担心自动化会导致工作岗位流失。这些担忧是真实的,需要解决。颠覆是不可避免的,但包括科学家、行业领袖、投资者、董事、股东和政府在内的所有利益相关者,都必须努力应用人工智能,让人工智能增强人类在工作中的作用,而不是取代它们。存在这样的工作,在这些工作中,机器需要完全取代人类,这包括每年导致许多工人死亡的非常危险的工作。例如,让人类暴露在有害辐射下的工作应该由机器来做。发生灾难时的救援行动可以用机器人大大改进,这样我们可以拯救许多生命。
人工智能的军事用途也是一个应该避免的危险概念。包括 Yoshua Bengio 和 Elon Musk 在内的伟大科学家都反对将人工智能武器化。
我们需要一个安全的人工智能辅助我们活动的未来(AGI)。实现这一目标的一个巨大努力是 OpenAI initiative,这是一个非营利研究组织,致力于创建能够帮助而不是摧毁人类的智能系统。
让我们共同努力,为人类创造一个更美好的未来。
作者
摩西·奥拉芬瓦
自学成才的计算机程序员,云和互联网物流专家。熟练开发 Android 应用程序
门户网站和桌面软件。可以用 Java,Python,PHP 编码。一个深度神经网络从业者,他的愿景是通过人工智能让世界变得更好。大数据的爱好者。
邮箱:【guymodscientist@gmail.com ,
推特: @OlafenwaMoses
约翰·奥拉芬瓦
自学成才的计算机程序员、神经网络博客作者和计算机视觉研究员。熟练建立 Android 应用程序和原生软件。会用 Java,Python,C#开发软件。非常热衷于通过高效的神经网络改变生活。闲暇时研究强化学习。
邮箱:【johnolafenwa@gmail.com】T2,
推特: @johnolafenwa
在这里阅读论文:http://vixra.org/abs/1801.0413
论群体的智慧:集体预测分析
“所有伟大的谎言都有真理的种子”(詹姆斯·科特雷尔,《个人交流》,2004)。1907 年,英国统计学家弗朗西斯·高尔顿爵士(1855-1911)观察到,在康沃尔的一次节日竞赛中,人们试图猜测一头牛的重量,所有猜测的平均值始终与牛的实际重量接近(高尔顿,1907;球,2014;Gega,2000 年)。作家 James Surowiecki 在 2005 年的著作《群体的智慧》中重新提出了这一观点。
虽然高尔顿通常被认为是基于平均值的现代集体智慧的“父亲”,但他在 1907 年发表在杂志 Nature 上的文章专注于人群对中位数的预测,因为它的误差更小,或者说在其区间内更有信心。平均值在一磅以内;中位数在 9 磅以内,这使得高尔顿更具体地回答了一封读者来信,因为在小范围内排除一个测量值会大大改变平均值,对中位数的影响要小得多,他发现集体智慧最适用于预测中位数范围,而不是平均值(高尔顿,给编辑的信:投票箱,1907)。然而,最近对高尔顿数据的重新检查表明了最初计算中的错误,例如 800 多人对平均值的估计不在一磅之内,而是牛的确切重量(Wallis,2014)。
这种“集体智慧”理论在随后的 110 年里一直被研究和分析,试图验证它如何、何时以及在什么情况下准确和不准确地预测。对 Surowiecki 的《集体智慧的普及回顾》的批评者指出了群体在优化方面的技能,而在创新或创造力方面的技能较低(Lanier,2010)。此外,集体智慧在定义正确的问题(通常是探究的最重要方面)和标量结果方面表现不佳(Lanier,2010)。
集体或聚合智能预测失败的一个例子是在经济测量中。对经济增长的衡量标准发表意见的专家往往是不正确的,而且,这种错误是复杂的,因为预测设定了一个预期,当错过时,会在金融市场上引起负面反应(Cassino,2016)。金融市场中集体预测智能的失败可能在很大程度上是由于这种双重行为——它们设定了一个预期,而相对于预期的不准确性会使市场做出不成比例的反应。虽然非理性市场和“黑天鹅事件”的起源和动态超出了作者的范围,但这些集体智慧的失败可能是一个早期的因果事件。
其他证据表明,集体智慧可以有效地发挥创造性;然而,大多数情况下是在一群专家之间进行头脑风暴式的活动时。例如,在 2011 年哈佛医学院社区的一次竞赛中,40,000 名教职员工和学生竞相提出治愈 1 型糖尿病的最重要问题——什么是未知但需要知道的,结果令人印象深刻(哈佛医学院,2011)。
就目前而言,关于集体智慧的经验教训似乎是这样的:当一群智力不同的专家回答一个预定义的问题,并围绕中位数或头脑风暴专注于优化时,效果最好(Ball,2014)。当人群的想法相同,包括许多非专家,面对一系列或一系列的答案,并且他们的工作成果不是许多未来决策的基础时,这种方法是最差的。
引用的作品
波尔,P. (2014 年 7 月 8 日)。“群众的智慧”神话与现实。 BBC:未来,PP .http://www . BBC . com/Future/story/2014 07 08-when-crowd-wisdom-go-miss。
卡西诺 D. (2016 年 7 月 8 日)。“大众智慧”在预测就业报告方面有着相当糟糕的记录。哈佛商业评论,第页https://HBR . org/2016/07/the-wisdom-of-the-crowd-s-have-a-beat-bad-track-record-at-predicting-jobs-reports。
f .高尔顿(1907 年)。给编辑的信:投票箱。自然,http://Galton . org/CGI-bin/search images/Galton/search/essays/pages/Galton-1907-ballot-box _ 1 . htm .
f .高尔顿(1907 年)。人民之声。性质,450–451。
Gega,S. (2000 年 5 月)。弗朗西斯·高尔顿爵士。从马斯京厄姆学院取回:http://muskingum.edu/~psych/psycweb/history/galton.htm
哈佛医学院。(2011 年 4 月 6 日)。*群体的智慧:竞赛产生征服 1 型糖尿病的创新策略。*检索自哈佛医学院:https://hms.harvard.edu/news/wisdom-crowds-4-6-11
拉尼尔,J. (2010)。你不是一个小玩意:一个宣言。伦敦:艾伦巷。
Surowiecki,J. (2005 年)。群体的智慧:为什么多数人比少数人聪明,集体智慧如何塑造商业、经济、社会和国家。纽约市:锚书。
k .沃利斯(2014 年)。重温弗朗西斯·高尔顿的预测竞赛。统计科学,420–424。
加州大学伯克利分校 MIDS 沉浸式教学——2017 年秋季
由 丹尼尔·肯特 ,现任 信息与数据科学硕士(MIDS)学生
T 加州大学伯克利分校的信息和数据科学硕士(MIDS)项目是一个特殊的项目,因为它结合了加州大学伯克利分校信息学院的优秀教师和社区、学术和行业领导者开发的深度和广度的内容,以及为工作专业人士量身定制的课程的灵活性。目前,我是一家初创公司Jobwell.co的联合创始人,我们正在为求职者开发一个 CRM。MIDS 项目让我能够灵活地学习数据科学,并开始将我在初创公司学到的知识应用于实践。
Getting in to the Cal spirit — Go Bears!
MIDS 项目不受地点限制,利用互联网将来自世界各地所有学科的有抱负的数据科学家聚集到 15 名或更少学生的亲密教室中。虽然这种分布式全球课堂的好处很多,但当来自在线课堂的熟悉面孔聚集在一起时更好,尤其是在加州大学伯克利分校的校园里。当我在 MIDS 项目的第一个任期时,我有机会在参加 2017 MIDS 沉浸式活动时会见了来自世界各地的近 100 名其他 MIDS 候选人。这是一场为期 4 天的数据科学“ Chautauqua ”沉浸式学习,充满了专家演讲、公司参观以及与加州大学教授、校友和其他学生的交流。在我的 100 个同学中,我已经通过课堂或活跃的业余渠道认识了几十个。
当我住在离校园不远的地方时,一位好心的 MIDS 考生带我第一次参观了大学校园,他以前是加州大学的本科生。她带我们参观了校园,并向我们介绍了这些建筑的背景和历史。当我们的旅行结束时,是时候去纪念体育场的大学俱乐部了,这是认识更多同学、教师和职员的绝佳场所。我们欣赏了加州大学乐队演奏的音乐,并由阿卡贝拉乐队演唱了小夜曲,随后是伯克利的吉祥物奥斯卡的欢迎仪式!
虽然我们教室里的在线教学时间挤满了课程材料和问题,但我们中的许多人利用这个机会了解了更多关于我们教授的研究,并更多地了解了我们令人惊叹的 MIDS 项目和信息学院的工作人员。利用这些机会,我和一些新认识的朋友去了酒店的酒吧,聊了聊我们的课程、职业和兴趣。
Dean AnnaLee Saxenian introduces the Data Dialogs conference
第二天以一顿精心准备的早餐开始,在早餐中,我们互相聊天,了解新课程和一些教授这些课程的优秀教授,以及优化我们课程负荷的策略。然后,我们开始了为期一天的数据对话会议,沉浸式参与者和加州大学伯克利分校和数据科学社区的其他成员听取了学术界和工业界领袖对数据科学的不同应用、我们作为数据科学家使用的工具的更新、该学科可能引领我们成为专业人士的方向以及人类的角色的讨论。详细回顾一下,我鼓励你去探索蒂芙尼·贾亚的精彩帖子。
第二天是我最喜欢的一天:我们开始了由学院院长 AnnaLee Saxenian 主持的关于深度学习的教师小组讨论。听到关于数据科学的应用和方面以及学校的一些教职员工对它的看法和经验是很有趣的。会议结束后,同学们向小组成员提出了一系列问题,然后我们开始参观公司。
我们的小组被分成两个小组,每个小组先去吃午餐,然后向 Dropbox 或 WorkDay 的数据科学团队学习。我的团队从拜访 Dropbox 团队开始,我们听说了他们正在解决的一些棘手的数据科学问题;这是在 Dropbox 了解数据科学以及他们如何发展团队的绝佳机会。
At Airbnb
在 Dropbox 之后,我们去了 Airbnb,在那里,一位 MIDS 校友和他在 Airbnb 的几个同事给我们做了一场颇有见地的演讲。他们提供了关于他们在 Airbnb 的项目的深刻见解,以及他们将项目嵌入公司业务线不同组成部分的方法。
Letting loose at Autodesk Gallery!
离开 Airbnb 后,我们有一些空闲时间探索这座城市,我们一群人前往旧金山最具标志性的建筑之一——渡轮大厦,品尝了餐馆、商店和摊位,同时进一步了解了每个人。当大楼塔楼上的时钟敲响六点时,我们前往 Autodesk Gallery,这是一个互动的博物馆,展示了 Autodesk 软件的新技术、知识产权和应用程序,还有小吃和开胃小菜,在那里我们可以进一步与我们的教授交流,并会见当地的学生和校友。谈话一直持续到博物馆关门,晚上我们才回到伯克利。
我们沉浸在其中的最后一个上午是我们经历的一个突出的顶点——首先是加州大学伯克利分校的一位讲师带领我们进行了一系列互动的领导力练习,以寻找我们作为领导者的真实声音,然后是社区午餐,在那里我们遇到了更多来自信息学院的学生和教职员工。这一天以市政厅结束,在那里,院长 Saxenian 向社区简要介绍了即将发生的一些令人兴奋的新进展,并回答了我们社区的问题。在我们的市政厅之后,大家真诚地道别,拥抱,然后我们开始了我们的离开。
MIDS Townhall
沉浸式学习是一次非常宝贵的经历,为我的在线学习提供了额外的背景和社区。我期待着我能参加的下一次沉浸式学习,但在那之前,我很高兴能继续成为加州大学伯克利分校 MIDS 分校学生和校友全球社区的一员,并知道我的朋友遍布世界各地。
从前…
…我不知道长大后想做什么。
从很小的时候起,我们都会考虑这样一个问题:“你长大后想成为什么样的人?”当你小的时候,这是一个有趣的游戏,你决定你想成为女超人。或者医生。或者一只猫。答案会有所不同。但随着时间的推移,人们期待对这个问题给出更具体的答案。
高中的时候,我一直想不出答案。我擅长数学、自然科学和西班牙语,但我不想让长期委身于其中任何一门课程。选择大学专业似乎是一个“成年人”的决定,而我不是其中之一。
直到我参加了一个随机的暑期课程,我才最终坚定地爱上了一门学科:语言学。
不要问我任何关于语言学的问题,因为我向你保证,你没有足够的时间来听我想说的一切。然而,要注意的一件重要事情是,语言学学生生活和呼吸着数据。语言学家的梦是一组令人困惑的语言数据,需要被检查和分析;揭示语言中的模式以及随之而来的见解。我总是将语言数据问题视为一个复杂且不断变化的难题,需要我去挖掘和解决。在一堂课上,我通过观察和记录一个说本族语的人来获取数据,从而对阿尔巴尼亚语进行了语音和音位分析。你可能觉得这并不令人兴奋,但请相信我——的确如此。
快进到大学,我发现自己问了一个和以前一样的问题:你长大后想成为什么样的*?语言学毕业生比其他人更少具体的职业道路并不奇怪。2014 年,当我决定开始大学毕业后的求职时,我甚至没有考虑过寻找语言学方面的职业,因为我担心除了继续读研之外,我不会找到太多东西。近年来,越来越需要语言学家帮助推动自然语言处理的新创新(Dragon Speech、Alexa、Siri 等)。),但当时我没有这方面的技术能力。*
那我做了什么?我最终决定搬到威斯康星州的麦迪逊,在一家医疗保健 IT 公司做软件测试员。现实点吧,我这么做是为了奶酪。但老实说,我去是因为他们提供金钱、福利和无限量的免费爆米花。所以我这么做是为了爆米花。
在 Epic 工作是一个做一些完全不同的事情的机会,我想如果有一天我想成为一名“技术人员”,作为一名质量保证分析师工作可能是一个好的开始。我们在 Epic 的医疗记录软件上进行了 6 个月的广泛培训,同时还学习了如何浏览他们的数据库和创建质量测试计划。在任期间,我学习过,笑过,哭过,失败过,成功过,又失败过。我和我的同事建立了惊人的工作关系,并成为我团队中最有效的测试人员之一,一切看起来都很完美。
一年半后,我开始疯狂地想念波士顿,我渴望新的精神挑战。虽然测试医疗软件很有教育意义,也是一份很棒的第一份工作,但这并不是我热衷的事情。我最终搬回波士顿,离家人和朋友近一些,并在 Wayfair 开始了一个分析师的职位。
由于我已经在一家大型科技公司工作过,我认为随着我继续探索我的职业兴趣和个人优势,Wayfair 将是一个相对平稳的过渡。起初,我的工作职责并不明确,最终我在供应商运营团队中帮助完成了各种特别的 EDI 项目。一两个月后,我的新团队成立了,他们的唯一目的是对供应商的库存数据进行数据分析,我非常兴奋。
库存质量团队的总体目标是利用 Wayfair 庞大的数据仓库来揭露那些没有为我们提供准确库存信息的供应商。如果没有准确的最新库存信息,客户可以在我们的网站上购买受影响的产品。一旦订单被发送到提供该商品的特定公司,我们就会收到该商品实际缺货的通知。订单会延期交货,有时不止一次,客户会被告知发货延迟。在更大的范围内,库存质量问题大大降低了全公司的平均满意度。当不清楚一件只需点击一下按钮就能买到的商品是否有货时,你为什么会选择使用 Wayfair 而不是其他在线零售商呢?
在没有进入更多细节的情况下,当我很快学会使用 SQL 和 Excel 数据透视表操作和分析数据时,我被反复抛入了深水区。这是最好的。我感觉自己回到了语言学教室,在我面前的数据中寻找模式和意义。最重要的是,我有这些有用的技术工具,可以用来更聪明地工作,而不是更努力。随着我作为数据分析师的技能的磨练,我很清楚这不仅是我擅长的事情,也是激发我内心喜悦的事情,我想学习更多。
不幸的是,当所有这些难以置信的学习和自我发现正在进行时,我的身体却不配合。在我搬回马萨诸塞州之前,我已经开始周期性地偏头痛,我不清楚在我的生活中我应该优先考虑什么:工作还是健康。开始的时候,我大约每两周就会偏头痛一次,所以我在必要的时候会利用我的病假/假期,在我可以工作的时候会拼命工作。然而,在高峰期,偏头痛至少每隔一天发作一次。很明显,我的病假和无薪休假快结束了,是时候做出一些艰难的决定了。
在经理的建议下,我决定休一个月的病假。我就不说细节了,但是当我回去工作的时候,并没有太大的改善。我剩下的几天无薪假期很快就用完了,我递交了辞呈。在一个不断以你做了什么来衡量成功的社会里,我什么也没做。
在我考虑找新工作之前,变得更健康是我的首要任务。除了治疗,在接下来的一年里,我做了一些重要的自我探索。我长大后想做什么?那时我刚满 24 岁,很难合理化自己 24 岁却不知道到底发生了什么。对我来说,重要的是退一步,在我和我从大学开始就培养的分析问题解决技巧之间留出一些空间。
于是,我开始为 Lyft 开车。星期天,我在我的寺庙里当了一名希伯来语老师。我在一家蛋糕店兼职,看看自己是否有激情成为小企业的一员。因为我得到了免费的羊角面包。我还在哈佛商学院做过三个月的行政临时工,因为,为什么不呢?那份临时任务结束后,我在另一家面包店工作,大部分时间都在做鳄梨吐司,同时参加在线课程。
在这一切发生的同时,我在我的神经科医生、治疗师、精神病医生和大量药物的帮助下,积极地与我的偏头痛作斗争。我是否在服用一种新的偏头痛药物后,不记得自己是如何到达波士顿公共花园的?是的。是的,我做到了。有没有几天我觉得自己再也不会感到身体健康了?是的。很多都是。但我学会了接受这是我正在走的路,我需要挺过去,因为尽管这听起来很老套,但隧道的尽头总有一线光明。
就在我去哈佛商学院做临时工之前,我的偏头痛得到了很好的控制,我可以度过一天 8 个小时,而不想蜷缩着消失。我联系了一家临时机构,这样我就可以试试正常的工作周时间表,而不用做出永久的承诺。他们让我在 HBS 做了一周的行政工作。那一周之后,他们需要一个有很强 Excel 技能的人提供更多帮助,所以我留了下来。突然之间,我在那里呆了 3 个月,Excel 和我的关系达到了一个新的水平。更重要的是,通过我为完成任务而访问的所有哈佛网页,我了解了公众可以使用的在线 HBS 课程。
我们再快进一遍。
我的工作任务结束了,是时候采取下一步行动了,HBS 的商业分析课程是一次完美的表演。在花了一年时间尝试一些新的和不同的东西后,我终于觉得准备好重新审视数据分析的一般领域了。在将近一年的时间里,我第一次在精神上受到了刺激,并且真正为某事感到兴奋。有一天我突然想到:我爱上了数据科学。我终于知道我长大后想做什么了!!!!
课程结束时,我开始申请波士顿各地的数据分析师和数据科学家职位;我的大脑已经准备好(不止一种方式)回到正题。
然后没有一家公司联系我。
结束了。
开玩笑的。不是关于没人联系我的那部分——是关于结束的那部分。是的,这是最糟糕的,我觉得自己完全失败了,但我知道我不会那么容易就放弃。我的技术技能范围狭窄,这是最有可能让我在一群具有 Python 知识的有竞争力的申请者中止步不前的原因。
我做了研究,发现了许多方法来磨练我在数据科学领域的技能。我看节目评论。我在 LinkedIn 上随机跟踪了一些人,他们实际上已经经历了一些潜在的数据科学项目选择。我从以前的经理、以前的同事、朋友和家人那里得到建议。然后我做了一个决定。
我们都花了很多时间担心未来会是什么样子。我没完没了地描述的经历告诉我,跟随你的心,倾听你的身体,用你热爱的一切充实你的头脑,比担心你长大后会成为什么样的人重要得多。解决难题是我最喜欢做的事情,所以我要去做!
我来到了联大数据科学沉浸式训练营(多么拗口),现在我已经在这里呆了 2 周多了。
我长大后要成为一名数据科学家。如果因为某种原因天塌了,而这并不奏效,我的计划是继续一步一步向前。
一个气泡图,比较 10 种数据可视化工具
介绍
对于任何想学习数据分析和可视化的人来说,网上不乏“最佳工具”文章,建议你选择什么。我不会尝试创建一个列表,因为有太多的工具可以列举。但是,我确实想向您展示一些我遇到的用于数据可视化的工具和编程语言,并让您进行比较。大部分都很容易学,灵活性很高,而且是免费的或者有免费版本(我就是这样选择学什么工具的)。所以你很快就能弄脏自己的手。让我们开始吧。
让我们试着重现汉斯·罗斯林著名的泡沫图来讲述国家财富和健康的故事。也就是说,散点图具有第三个气泡维度。它让你一次比较三个变量。一个在 x 轴(人均 GDP),一个在 y 轴(预期寿命),第三个用泡沫的面积大小(人口)来表示。
数据
数据来自最新的世界银行指标。下载过程如下:
library(WDI)
indicator2 <- WDI(country="all", indicator=c("NY.GDP.PCAP.CD", "SP.POP.TOTL", "SP.DYN.LE00.IN"), start=2015, end=2015, extra = TRUE)drops <- c("iso2c","iso3c", "capital", "longitude", "latitude", "income", "lending")
indicator2 <- indicator2[ , !(names(indicator2) %in% drops)]colnames(indicator2) <- c("country","year", "GDP_per_capita", "population_total", "life_expectancy", "region")indicator2 <- indicator2[-c(1, 2, 3, 4, 5, 6, 19, 66, 67, 159, 178, 179, 180, 181, 182, 201, 202, 203, 204, 205, 206, 207, 225, 226, 227, 228, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 262, 263), ]
就是这样,这是我们的数据!
形象化
R 最强大的功能之一是它能够生成各种各样的图形,只需几个命令就可以快速轻松地可视化数据。
symbols()函数在绘图上绘制符号。我们将使用一组指定的 x(人均 GDP)和 y(预期寿命)坐标来绘制圆,并自定义圆的大小(面积的平方根)。
options(scipen=999)radius <- sqrt( indicator2$population_total/ pi )
symbols(indicator2$GDP_per_capita, indicator2$life_expectancy, circles=radius, inches=0.35, fg="white", bg="red", xlab="GDP per Capita(USD)", ylab="Life Expectancy(years)", main = "GDP per Capita vs. Life Expectancy 2015", ylim = c(0, 100))
给出了这个图:
Base R
ggplot2 成为近年来 R 社区最流行的绘图包。它允许您以直观的方式创建表示单变量和多变量数值和分类数据的图表。分组可以用颜色、符号、大小和透明度来表示,但是要为陡峭的学习曲线做好准备。
library(ggplot2)
library(ggthemes)
ggplot(indicator2, aes(x = GDP_per_capita, y = life_expectancy, size = population_total/1000000, fill = region)) +
geom_point(shape = 21) +
ggtitle("GDP per Capita vs. Life Expectancy") +
labs(x = "GDP per Capita(USD)", y = "Life Expectancy(years)") +
scale_y_continuous(limits = c(0, 90)) +
scale_size(range = c(1, 10)) +
labs(size = "Population(Millions)", fill = "Region") +
theme_classic()
给出了这个图:
ggplot2
与 base R 相比, ggplot2 的许多优点之一是我们不会在映射图例中迷失,因为 ggplot2 为我们生成了它们。
3.ggvis
ggvis 包用于交互式数据可视化。它结合了闪亮的的反应式编程模型和 dplyr 的数据转换语法,使其成为数据科学家的有用工具。
library(ggvis)
indicator2 %>%
ggvis(~GDP_per_capita, ~life_expectancy, fill=~factor(region)) %>%
layer_points(size= ~population_total/1000000,opacity:=0.6) %>%
add_legend(scales = "size", properties = legend_props(legend = list(y = 200))) %>%
scale_numeric("y", domain = c(0, 90), nice = FALSE) %>%
add_axis("x", title = "GDP per Capita(USD)") %>%
add_axis("x", orient = "top", ticks = 0, title = "GDP per Capita vs. Life Expectancy 2015",
properties = axis_props(
axis = list(stroke = "white"),
labels = list(fontSize = 0)))
给出了这个图:
ggvis
与 ggplot2 不同,默认情况下,ggvis 不会将基于相同基础变量的比例合并到单个图例或多个图例中。相反,我们必须手动设置图例。
r 包 plotly 是开源 JavaScript 绘图库 plotly.js 的高级接口。有了 Plotly,R 用户只需几行代码就可以轻松地在线创建交互式的、出版物质量的图形。
library(plotly)p <- plot_ly(indicator2, x = ~GDP_per_capita, y = ~life_expectancy,
color = ~region, size = ~population_total) %>%
layout(yaxis = list(range = c(0, 90)))
p
给出了这个图:
Plotly for R
Pandas 的内置绘图 DataFrame.plot()有多种图表类型可用(折线图、散点图、历史图等)。如果你喜欢熊猫,这是一个有用的探索工具。
import pandas as pd
indicator2 = pd.read_csv('indicator2.csv')indicator2.plot(kind='scatter', x='GDP_per_capita', y='life_expectancy', s = indicator2['population_total']/1000000,
title = 'GDP per Capita vs. Life Expectancy 2015', ylim=(0,90))
plt.savefig('base_pandas.png')
给出了这个图:
Base Pandas
Matplotlib 是一个 Python 绘图库,可生成出版物质量数字。然而,对于一个新用户来说,这可能是一个令人沮丧的工具,因为要获得看起来合理的图形需要做大量的工作。你会明白我的意思。
%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.lines as mlines
import numpy as np
indicator2 = pd.read_csv('indicator2.csv')plt.figure(figsize=(10,8))
colors = ("red", "green", "blue", "yellow", "orange", "black", "gray")def attribute_color(region):
colors = {
'East Asia & Pacific (all income levels)':'red',
'Europe & Central Asia (all income levels)':'green',
'Latin America & Caribbean (all income levels)':'blue',
'Middle East & North Africa (all income levels)':'yellow',
'North America':'orange',
'South Asia':'black',
'Sub-Saharan Africa (all income levels)':'gray'
}
return colors.get(region, 'white')
color_region = list()
qty_states = len(indicator2['region'])
for state in range(qty_states):
color_region.append(attribute_color(indicator2['region'][state]))
plt.scatter(x = indicator2['GDP_per_capita'],
y = indicator2['life_expectancy'],
s = indicator2['population_total']/1000000,
c = color_region,
alpha = 0.6)
plt.title('GDP per Capita vs. Life Expectancy 2015', fontsize=20)
plt.xlabel('GDP per Capita(USD)')
plt.ylabel('Life Expectancy(years)')
plt.ylim(0, 100)regions = ['East Asia & Pacific (all income levels)', 'Europe & Central Asia (all income levels)', 'Latin America & Caribbean (all income levels)',
'Middle East & North Africa (all income levels)', 'North America', 'South Asia', 'Sub-Saharan Africa (all income levels)']legend1_line2d = list()
for step in range(len(colors)):
legend1_line2d.append(mlines.Line2D([0], [0],
linestyle='none',
marker='o',
alpha=0.6,
markersize=6,
markerfacecolor=colors[step]))
legend1 = plt.legend(legend1_line2d,
regions,
numpoints=1,
fontsize=10,
loc='lower right',
shadow=True)legend2_line2d = list()
legend2_line2d.append(mlines.Line2D([0], [0],
linestyle='none',
marker='o',
alpha=0.6,
markersize=np.sqrt(10),
markerfacecolor='#D3D3D3'))
legend2_line2d.append(mlines.Line2D([0], [0],
linestyle='none',
marker='o',
alpha=0.6,
markersize=np.sqrt(100),
markerfacecolor='#D3D3D3'))
legend2_line2d.append(mlines.Line2D([0], [0],
linestyle='none',
marker='o',
alpha=0.6,
markersize=np.sqrt(1000),
markerfacecolor='#D3D3D3'))
legend2 = plt.legend(legend2_line2d,
['1', '10', '100'],
title='Population (in million)',
numpoints=1,
fontsize=10,
loc='lower left',
frameon=False,
labelspacing=3,
handlelength=5,
borderpad=4
)
plt.gca().add_artist(legend1)
plt.setp(legend2.get_title(),fontsize=10)
plt.savefig('matplotlib.png')
给出了这个图:
Matplolib
如您所见,Matplotlib 的绘图命令非常冗长,获取图例也很麻烦。对我们大多数人来说,这可能是太多的工作了。
如果你正在寻找一种简单的方法来用 Python 绘制合理的图表,那么你会喜欢 Seaborn。
import seaborn as sns
plt.figure(figsize=(10,8))
sns.set_context("notebook", font_scale=1.1)
sns.set_style("ticks")sizes = [10, 60, 90, 130, 200]
marker_size = pd.cut(indicator2['population_total']/1000000, [0, 100, 200, 400, 600, 800], labels=sizes)
sns.lmplot('GDP_per_capita', 'life_expectancy', data=indicator2, hue='region', fit_reg=False, scatter_kws={'s':marker_size})
plt.title('GPD_per Capita vs. Life Expectancy 2015')
plt.xlabel('GDP per Capita(USD)')
plt.ylabel('Life Expectancy(years)')
plt.ylim((0, 100))
plt.savefig('sns.png')
Seaborn
Tableau 已经变得如此受欢迎,以至于许多组织甚至要求你在简历中加入 Tableau 来申请他们的数据分析师职位。好消息是 Tableau 非常容易学。这是一个非常直观的工具,你可以很快学会。然而,如果你想擅长它,你将需要练习、练习、练习,并钻研(在 Tableau Public 上)成千上万的 Tableau 练习册,以研究其他人做了什么。
Tableau
Power BI 是微软进入自助式商业智能 (BI)领域的入口。作为一种基于云的服务,它很快在数据科学专业人士中流行起来,这有助于他们使用组织的数据轻松地可视化和分享见解。
Power BI
几年前, MicroStrategy 推出了一款免费的数据可视化软件。名为“ MicroStrategy Analytics 桌面”。它旨在与 Tableau 和其他公司提供的越来越流行的自助式数据发现桌面可视化工具竞争。让我们快速浏览一下。
MicroStrategy
结论
我就说这些。如果你想了解更多关于数据可视化工具的知识,可以看看 Lisa Charlotte Rost 的我从使用 24 种工具重建一个图表中学到的东西。
所有这些图表的 R 和 Python 源代码可以在 GitHub 上找到。我将很高兴收到关于上述任何反馈或问题。在那之前,享受视觉化吧!
一种特征归属方法(假定)可以统治所有这些特征:Shapley 值
在 NIPS 引起我注意的论文中,有一篇论文,它声称发现了一个框架,将几乎所有现有的模型解释方法连接在一起。在之前的一份工作中,我对模型解释领域产生了一点兴趣,因为法规要求我们解释为什么我们的模型会做出它们所拥有的决定。所以,我很好奇。
本文为去年发布的广受欢迎的 LIME 方法提出了一个替代核心,并声称只有它的方法才能满足可解释性的三个关键公理。
但是,在我们进入所有这些之前,让我们从最开始说起,在这种情况下,是在博弈论领域。
如果我们都合作,我们如何分配收益?
虽然 Shapley 值在这里是在特性的上下文中使用的,但它最初来自博弈论中的一个核心问题:在一个由拥有不同技能的多个玩家组成的联盟中,会产生一些集体收益,在玩家之间分配收益的最公平方式是什么?
你可以想象解决这个问题的一种方法是想象小组成员按顺序加入,并记录每个玩家的边际贡献。从表面上看,这是一个明智的提议,因为它意味着,从字面上看,每个球员都因他们对团队整体成果的贡献而获得奖励。(注意:这里我们假设可以计算任意规模玩家子集的博弈联合收益)。这里的想法是,如果艾娃是第一个成员,收益为 5,比尔加入使收益为 9,后来克里斯汀加入使收益为 11,那么玩家各自的收益将是(5,4,2)。
但是,我们有一个问题。如果克里斯汀和比尔有非常相似的技能组合会怎么样?然后,如果 Christine 在 Bill 之前加入团队,她可能会有更高的边际贡献,因为她会是第一个提供他们重叠技能集的人,然后当他加入时,他的边际贡献会更低;想象一下(5,1,5)的(艾娃,比尔,克里斯汀)的不同收益向量。实际上,如果每个人都同时加入了这个群体,我们应该如何决定这两种收益分布中哪一种是最正确或公平的呢?
这种困境是 Shapley 值形成的原因,Shapley 值可以从高层次上理解为“找到每个玩家的边际贡献,在玩家可能被添加到该组的每个可能序列上求平均值”。因此,在上面概述的例子中,你可以模拟到达的顺序:ABC,ACB,BCA,BAC,CAB 和 CBA,对于每个顺序,捕捉每个玩家的边际收益。然后,平均所有这些收益,你就得到每个玩家的 Shapley 值。
除了这种框架,还有另一种处理子集的数学框架。它稍微复杂一点,但是它是找到这些值的实际计算的基础,如果你想搜索整篇论文,这是一个必要的理解。
这里,这种方法不是直接处理序列,而是对不同的玩家子集进行处理,并根据这些子集所代表的所有序列的部分对它们进行加权。例如,想象你有 5 个球员,ABCDE。想象一下,你当前的目标是计算参与人 C 在一个序列中不同点的边际贡献。从那个角度来看,同时评价(A > B >C)和(B > A > C)是没有意义的,因为,从 C 的角度来看,A 和 B 进入哪个顺序并不重要。所以,我们可以只对 f(AB)和 f(ABC)的收益函数求值一次,然后跟踪 C 进来时增加了多少。
然而,因为这种方法的要点是平均所有序列的边际贡献,您需要根据它代表多少个序列来加权这个子集计算。正如我们已经提到的,这种计算适用于 ABC 和 BAC。然而,我们还需要考虑到可能出现在链末端的不同序列。具体来说,在这种情况下,您可以在添加 C 之后添加 DE 或 ED。所以,总的来说,这种“取 f(ABC)-f(A)的差”的计算适用于四个序列:ABCDE、ABCED、BACDE 和 BACED。
有了这种直觉,下面的等式就没那么可怕了。s!对应于集合 S 的排列数,或者,A 和 B 相加到这一点的方式数(2!= 2*1 = 2).因为|F|是联盟中付款人的总数,所以|F| — |S| — 1 表示对应于在玩家 i 之后要添加的玩家的数量,在我们的示例中对应于 D 和 e。同样,我们取这个值的阶乘来获得可以添加这些玩家的可能方式的数量。这两个量相乘在一起,然后除以全序列的置换序列总数:5!,在这种情况下。所以,满分 5 分!序列,这个特定的子集捕获了其中的 4 个,因此我们相应地对其计算进行加权。这只是意味着不要评估这 4 个不同的序列(我们知道它们会给出相同的结果)并尽职尽责地将它们各加 1/5!重量,我们一次全部加进去,4/5!体重。
Notation: |F| is the size of the full coalition. S represents any subset of the coalition that doesn’t include player i, and |S| is the size of that subset. The bit at the end is just “how much bigger is the payoff when we add player i to this particular subset S”
这个方法是可证明的唯一满足三个信用归属公理的方法:
- 如果一个玩家从未增加任何边际价值,他们的收益部分应该是 0(虚拟玩家)
- 如果两个玩家总是把相同的边际价值加到他们被加到的任何子集上,他们的收益部分应该是相同的(可替代性)
- 如果一个游戏由两个子游戏组成,你应该能够将子游戏上计算的收益相加,这应该与整个游戏计算的收益相匹配(可加性)
等等,这个帖子不是关于特征归属的吗?
是的,回到那个问题:正如你可能从阅读上面的解释中所怀疑的那样,这篇论文的论点是,你可以将从对联盟有贡献的玩家中产生的相同直觉应用到对模型有贡献的特征的问题上。
在模型是线性的情况下,或者特征是真正独立的情况下,这个问题是微不足道的:不管其他特征的值,或者特征被添加到模型的顺序,给定特征的贡献是相同的。
为了直观地了解不会出现这种情况的情况,让我们想象一个简单的 ReLu 非线性,其中包含两个特征。
然后,假设平均而言,一个观察的输入值为 5。我们有两个二进制特征,X1 和 X2,其中每一个都有-4 的权重进入这个非线性。如果两个特性均设为 0,则该非线性的输出将等于 5。如果 X1 从 0 切换到 1,则输出变为 1 (max(0,(5–4))。然后,如果 X2 也被切换到 0,输出移动到 0 (max(0,1–4)),这意味着两个特性的相加对输出有不同的影响,即使它们在非线性中具有相同的权重。如果你改变想象的顺序,那么 X2 将输出移动 4 个单位,X1 移动 1 个单位。随着我们添加更多的功能,并有更多的复合非线性,这些复杂的影响会增加,这意味着有一种方法是有价值的,如 Shapley 值,考虑和加权所有这些不同的边缘值。
因此,我们得到了这个方法的一个公式,和玩家/联盟公式几乎一样。这里,M 是特征的全部数量,z’是一个向量,在该向量中存在正在解释的实例中存在的一些特征子集。(别担心:我们一会儿会谈到“在场”意味着什么)。而不是一个回报,我们取而代之的是评估一个模型的价值,在其他特征的某个子集上添加和不添加特征 I,然后根据它代表多少个序列来加权那个子集。
关于这个等式,有几个微妙的问题值得一问。
- 那些小撇(如 x ‘)符号在做什么?在本文中,用撇号表示的东西意味着是特征向量的“简化”版本,这表示特征是“存在”还是“不存在”。因此,举例来说,如果你有一个简化的向量[0,1,1],并希望将其传递到一个模型中,这将意味着“评估模型,就好像你只有特征 x_1 和 x_2,而 x_0 不存在。(注意:本文用一个映射函数 h(x’) = x 来描述这一点,该函数在简化和非简化版本的向量之间进行映射)
- **“评估模型就像特征 x_0 丢失了”实际上是什么意思?**是的,这有点奇怪。大多数模型本身不能处理丢失的数据-它们处理浮点型数据,并且不能对文字空值进行操作-本文提出,对于特征在简化向量中“不存在”的情况,我们将其表示为该特征在整个数据集上呈现其期望值。这里的想法是,如果您想要模拟模型无法访问给定特性的信息值的情况,明智的做法是只向模型显示表示该特性值的未知最佳猜测值。
这种想法的一个例子是,在你不知道某人的身高的情况下,用人口中的平均身高来代替,因为这是你对他们实际身高的最佳无信息猜测。虽然这种近似涉及一些我们知道可能是错误的数学假设(例如:模型是线性的),因此在实践中肯定不是完美的,但它是一个合理的基线,易于计算。
近似的乐趣
我们上面概述的所有内容在概念上都很棒,但它有一个小问题:对一长串功能中的每个可能的功能子集进行采样非常耗时,尤其是在功能数量很多的情况下。对计算更合理的方法的渴望激发了寻找近似值的动力,这就是我们回到 LIME 的地方。
LIME 是去年提出的一种方法,旨在通过选择可解释的特征(如上:代表特征“存在”或“不存在”的特征)采样来解释模型中的个体预测,然后建立一个专注于该实例周围局部区域的线性模型。这里的想法是:虽然一个模型在整体上可能是非常非线性的,但在一个特定的子区域中的线性近似可能更接近且更有用。实际上,这意味着您要拟合一个简单的线性模型,其中您试图预测的值是您的复杂模型的输出,并且系数与您的主模型的特征是否提供信息有关。因此,举例来说,如果一个特征在这个模型中有一个特别大的系数,这将意味着该特征的移除,或者用一个不提供信息的猜测来替换它,将极大地改变您的输出。
实现这种局部近似的方法是通过一种叫做内核的东西。在机器学习中,内核出现在很多奇怪的上下文中,它们让我困惑了一段时间,但在这种上下文中,你基本上可以把它们看作一个距离函数。它们接受两个向量,并返回一个度量值,该度量值对于被确定为高度相似的点是高的,对于不相似的点或较远的点是低的。如果你不习惯以这种方式思考,那么想到有不同种类的距离会显得很奇怪。在这里建立直觉的一个方法是考虑距离的绝对值与距离的平方。这两种都是测量点与点之间相似性的有效方法,但是它们意味着不同的假设:在后一种情况下,你更强烈地惩罚非常远的观察。
因此,在 LIME 中,通过置换输入向量对点进行采样,然后通过在样本和输入之间计算的某个核的值对这些样本进行加权,这意味着对与输入更相似的样本赋予更大的权重。
A useful visual intuition: the red cross is the instance being predicted
这种加权机制是将 Shapley 值方法与 LIME 方法联系起来的关键。还记得之前,我们将 Shapley 值的估计框定为计算复杂模型分数的变化,作为向子集添加特征 I 的函数,通过子集代表的序列数进行加权。以类似的方式,我们可以基于代表给定子集所占的特征添加序列数量的核,对我们的时间样本进行加权,时间样本包含我们试图预测的任何实例中存在的特征子集。在这个回归框架中,我们基于一些样本集来估计值,而不是精确地计算它们。这不是一个完美的估计,但它比试图完全采样所有子集的区域涉及更少的计算,这使它非常有吸引力。
该论文声称,与 LIME 相比,它的方法给出的结果更符合人类的直觉,即在给定的模型中,特征之间的信任应该如何共享。显然,这是一个小样本的例子,但我很好奇,看看这些解释是否在更广泛的数据集上有理想的属性。如果你想对你的数据进行实验,代码在这里。
只有混乱才能孕育出一颗舞蹈之星
“我是预言家狄俄尼索斯的信徒”——弗里德里希·尼采
关于数据结构的信息技术建议:越结构化,越干净和标准化越好。它能提高生产力,让一切更有条理。标准减少了返工和数据混乱。Excel 电子表格是世界上最糟糕的东西,因为用户会创建列,插入空行,更改标题:这将是一个烂摊子。
这一论述似乎很完美。
但是,作为狄俄尼索斯的信徒,我说不。
- 数据库越乱越好。
- 越脏越好。
- 用户搞得越乱越好。
阿波罗 x 狄俄尼索斯
德国哲学家弗里德里希·尼采具有将哲学思想与诗歌风格相结合的非凡能力。他最著名的比喻之一是希腊诸神阿波罗和狄俄尼索斯之间的对比。
阿波罗是太阳、和谐、医药之神。他代表**秩序:**美丽的神,高大,强壮,匀称,有条理。他是艺术之神,赋予雕塑精确的形状,在混乱中创造秩序。
狄俄尼索斯是酒神。他代表了**混乱。**胖,矮,丑,醉,歪,他身上的一切都是坏的。他是狂喜,是醉态。生于饥饿和痛苦,他每年春天重生,所到之处传播欢乐。
秩序 x 混乱
秩序似乎比混乱要好。但事实是,我们只能给世界的一小部分带来秩序。无限大的宇宙永远不会被人类所知。
我把两个神想象成两只手臂:混沌和秩序,相辅相成。我们应该谦虚地承认,任何模型都有一些前提。
我有很强的阿波罗的一面,因为我有工程、数学奥林匹克等背景。但我也有非常强烈的酒神的一面,这使我非常怀疑一切想要组织太多,优化太多,给不可预见的事情一点空间。
为什么我喜欢混乱的数据结构?
我广泛参与创新工作,创造新工具、新工艺、新想法。
当处理一个新项目时,客户根本不知道他想要什么。他只知道症状(比如说,分析师花了太多时间来生成报告),并假设他知道解决方案(自动生成报告)。
但这是真正的问题吗?没有人知道,这一定是发现的。
有时,他甚至不需要他认为需要的报告。无论如何,在 100%的情况下,构建数据库来试图有效地解决错误的问题是没有用的。
正如彼得·德鲁克所说:
最大的浪费莫过于高效率地解决一个不需要解决的问题。
结构化数据库的建议仅针对成熟流程,那些已经建立的流程,不会有太大变化。
对于创新来说,原型越多越好。越是速赢,简单,快速,灵活,因此混乱,越好。excel 越脏越好。客户搞得越乱越好。
没有新的音乐从订单中产生。没有新的秩序图景出现。没有新的想法从订单中产生。只有从混乱中。
必须有混乱,才能产生一个舞蹈明星”—弗里德里希·尼采**
其他著述:https://medium.com/@arnaldogunzi
主博客:https://ideiasesquecidas.com/
我们中的一个将建立西部世界
我不知道这是不是一个可怕的想法。我感到兴奋和惶恐。《西部世界》让我对 AI 中的意识有了深入的思考。因为找不到更好的词,那个节目的剧本写得太棒了。
剧透在前方,但是第二季第一季将于本周末上映,所以请尽快观看第一季!
西部世界= AI 感同身受
《西部世界》讲述了类似人类的没有意识的‘人工生命’的故事。多洛雷斯是西部世界主题公园的“主人”。宿主看起来和人类一模一样,表达复杂的情感。这些情绪在某种程度上是预先设定好的。他们会经历一系列定义明确的行为,并且谈话范围有限。他们看起来和感觉起来都是真实的,但他们还没有意识,所以参观主题公园的人(“客人”)认为杀死和干他们是可以的。除了那些作为合适的背景故事给出的记忆,他们没有别的记忆。
Image courtesy HBO
这部剧捕捉了一个意识有限的人工生命平凡的日常细节。多洛雷斯在试图将食品放入马鞍时,掉了一罐食物。一个男人捡起来还给她。她醒来,走向坐在他们家门廊上的父亲,和他交谈。宿主的行为表现出接近人类的复杂性。如果西部世界是一款游戏,主机就是终极 NPC。没有意识。
由于《西部世界》是一部电视剧,编剧们借此机会开发了人工智能的角色。好莱坞的人工智能大多出现在电影中——这是我们第一次看到好莱坞的人工智能角色被刻画得如此深入。
这意味着我在观看节目时体验了人工智能的同理心。
当多洛雷斯用枪指着人类(主题公园里的‘客人’),我不知道扣动扳机是不是正确的事情!她也不知道。我经历了她的经历。我真的希望她幸福和安全。我确实而不是对《终结者》有这种感觉。甚至关于 HAL-9000。
意识金字塔
这个节目断言意识会从某样东西中出现。没有意识程序被下载到金属机器人上。阿诺德的意识金字塔给了我们一些关于作家如何思考这种出现的见解。
底部是回忆。然后即兴发挥。利己主义来指导你的行动。顶层,呃——我们不知道确切的数字。整个系列都有暗示,但我们不确定。
除了不明确的顶层,这具有直观的意义。记忆是经验,我同意大脑是预测机器的理论。很像现代的神经网络。只是复杂得多,因为它处理来自身体的输入,调节身体功能,从感觉器官获取输入,并告诉你你不知道你在生活中做什么。它表达了你的内心独白。经验、记忆和梦境必须像训练数据一样为这台预测机器服务。
涉足人工智能意味着(最终)涉足意识
主题公园的创建者认为很有可能主人最终会变得有意识。两位创造者,阿诺德和福特,以不同的方式为此设计。
基本方法源自两院制。该理论假设人类只有在大约 3000 年前才变得有意识,即意识到他们的意识。在此之前,“内心的声音”被认为是神圣的指令。最终,人类开始意识到内在的声音是他们自己的,他们可以控制它。
理查德·道金斯称这个理论为“要么是完全的垃圾,要么是完美天才的作品。
这部剧吸引了我,因为潜在的情节主线是阿诺德和福特如何处理设计问题让意识浮现。
阿诺德和福特的想法是通过提供一种“内心的声音”来引导意识,这种声音给予指示和希望,即在两院制思想的理论下,意识将以与人类相同的方式出现。
为意识而设计
主持人开始时会定期清除记忆,所以没有可借鉴的经验。梦境更新导致主持人保留一些记忆,偏离他们有些脚本化的存在(“即兴”)并开始发现自己。
然后呢?
让我们站在阿诺德和福特的立场上想想。我们已经造出了看起来、感觉起来和行为起来都像人类的东西。还没有意识到,但我们认为它正在到来。我们觉得有责任确保它以“正确的方式”发生。毕竟我们说的是有感知能力的人工通用智能。
我们打开记忆,这导致了一些即兴的行为。但是但是。你如何发展一个目标?意识到内心的声音是你的。发展自我意识。行动中的自由意志。
阿诺德要求多洛雷斯杀了他,和一群其他主机。我们不知道为什么,也许他希望多洛雷斯不要听从她内心的声音给出这些指令?或者他想阻止公园开放?福特在主题公园里设计了一个迷宫。在解开这个迷宫的过程中,福特希望多洛雷斯能够获得意识。这篇精彩的文章讲述了它在第一季最后一集中是如何发生的。
我们能从第二季中期待什么?随着意识而来的是随机行为,而这正是作者所承诺的。混乱控制了局面。
西部世界可能吗?
也许吧。
德洛斯是建造西部世界的公司。在节目中,福特说他们在《西部世界》上工作了 35 年,人工智能在 1 年前通过了图灵测试。雷·库兹韦尔通过图灵测试的估计是 2029 。西部世界发生在 2063 年。如果剧中的时间线在现实世界中发挥作用,福特和阿诺德将在 2028 年左右开始工作。你开这家公司的时候显然非常擅长 AI/神经科学/纳米技术/相关领域。那是 10 年后的事了。
人们现在越来越擅长人工智能、神经科学和纳米技术。即使是刚刚进入这些领域的人现在也有一个不错的机会——10 年的时间足以让你有所成就。无论你是否处于该领域的顶端,创业和成功都不仅仅是技术上的优秀。
那可能是任何人。可能是你!
不管是谁,请:看《西部世界》,深刻思考自己行为的后果,对机器智能有同理心。我们不需要太空堡垒卡拉狄加的未来。
— — — — —
如果你喜欢这篇文章,请随意点击“鼓掌”按钮👏去帮助别人找到它!