预先训练好的模型是如何工作的?
介绍
在我的大多数深度学习项目中,我都使用过预训练的模型。我也提到过,从他们开始而不是从头开始训练通常是个好主意。在本文中,我将对此进行详细解释,并在此过程中帮助您理解大部分代码片段。在文章的最后,我还将谈到计算机视觉中的一种技术,它有助于提高您的模型的性能。
让我们开始吧。
训练神经网络
当我们训练神经网络时,网络的初始层可以识别非常简单的事情。说一条直线或者一条斜的。一些非常基本的东西。
随着我们深入网络,我们可以识别更复杂的东西。
第二层可以识别像正方形或圆形这样的形状。
第三层可以识别复杂的模式。
最后,网络的最深层可以识别像狗脸这样的东西。它可以识别这些东西,因为我们的模型的权重被设置为某些值。
Resnet34 就是这样一个模型。它被训练对 1000 种图像进行分类。
使用预训练模型的直觉
现在想想这个。如果你想训练一个分类器,任何分类器,不管你想分类什么,初始层都会检测斜线。因此,每次创建神经网络时都训练它们是没有意义的。
这只是我们网络的最后几层,这些层学习识别需要培训的项目特定的类。
因此,我们所做的是,我们采取 Resnet34,并删除其最终层。然后,我们向它添加一些我们自己的层(随机初始化),并训练这个新模型。
在我们看如何在代码中做到这一点之前,我想提一下,预训练模型通常是在大量数据上训练的,并使用通常不是每个人都可用的资源。以 ImageNet 为例。它包含超过 1400 万张图片,其中 120 万张图片属于 1000 个类别中的一个。因此,使用这些模型对我们来说是非常有益的。
代码
现在让我们看看在 fastai 中我们是如何做到这一点的。我们首先加载一个预训练的模型。
最初,我们只训练增加的层。我们这样做是因为这些层的权重被初始化为随机值,并且比 ResNet 层需要更多的训练。因此,我们只训练 ResNet 和网络的其余部分。
一旦我们稍微训练了最后几层,我们就可以unfreeze
resnet 34 的各层了。然后我们为整个模型找到一个好的学习率并训练它。
我们的学习率与损失的关系如下图所示。
我们不希望我们的损失增加。因此,我们选择一个学习率刚好在图形开始上升之前(这里是 1e-04)。另一个选项,也是我用过的选项,是选择一个切片。
这意味着,如果我们的网络中只有 3 层,第一层将以学习速率= 1e-6 进行训练,第二层以 1e-5 进行训练,最后一层以 1e-4 进行训练。框架通常将网络的层分成组,在这种情况下,切片意味着不同的组以不同的学习速率训练。
我们这样做是因为我们不想大量更新初始图层的值,但我们希望大量更新最终图层的值。因此有了切片。
这种以不同的学习速率训练神经网络不同部分的概念被称为 【区别学习】 ,是深度学习中相对较新的概念。
我们继续解冻层的过程,找到一个好的学习率并训练更多的层,直到我们得到好的结果。
最后,预训练模型不仅可用于计算机视觉应用,还可用于其他领域,如自然语言处理。
我们现在可以继续讨论计算机视觉项目的技巧了。
渐进式图像缩放
提高计算机视觉模型性能的一个技巧是为较低分辨率的图像(例如大小= 128)训练一个模型,并使用这些权重作为较高分辨率图像(大小= 256,然后 512,以此类推)的初始值。这种技巧被称为 渐进式图像缩放 。我在我的一个项目中使用了它,我的模型的性能提高了 2%。
现在,从 92%增加到 94%可能听起来没什么大不了的,但如果我们处理医疗应用,我们希望尽可能准确。正是这些小技巧将优秀的模特与竞赛获奖的模特区分开来。阅读这篇研究论文,了解更多类似的技巧。不是所有的方法每次都有效,但是你真的必须尝试和试验什么有效,什么无效,直到你有了感觉。
这就是本文的全部内容
如果你想了解更多关于深度学习的知识,可以看看我在这方面的系列文章:
我所有关于深度学习的文章的系统列表
medium.com](https://medium.com/@dipam44/deep-learning-series-30ad108fbe2b)
~快乐学习。
心理测试结果如何因年龄、种族和性别而异?
我们大多数人都曾在某个时候做过性格测试。无论是为了找工作、上学还是仅仅为了娱乐,你可能记得浏览过结果以了解更多关于你自己的信息,以及你与其他人相比如何。
但是你有没有想过这些结果是如何与其他人口统计因素相关联的,比如种族、性别、年龄、宗教和性取向?
我最近也问过自己这个问题,为了找到这个问题的答案,我深入研究了数据。在探索了由开源心理测量项目发布的所有公开可用的数据集后,我特别选择了三个(亲密关系体验量表;抑郁、焦虑和压力量表;以及罗森博格自尊量表)和超过 110,000 项心理测试的结果在考生的同意下发布。
根据这些数据集中记录的答案,我发现:
1。年龄与人格特质维度 有关系,与关系依恋风格也有关系。
②。宗教和压力分数是有关系的。**
3。 种族与心理健康的衡量标准有关系,如压力、抑郁和焦虑。
4。性别与情绪稳定性 和宜人性之间存在一定的关系。
5。性取向与抑郁 、焦虑、压力量表有关系。
尽管数据分析得出了一些有趣的结果,但我还必须强调,由于在线性格测试的性质以及无法验证所给答案的准确性,该分析旨在为该主题的进一步研究提供一些思考甚至动机,而不是可以推广到更大人群的结果。
说到这里,下面是通过开源心理测量项目收集的数据和在亚马逊 Mechanical Turk 上收集的数据的质量对比。结果表明,前者“包含的无效应答率低于 AMT 数据的 25%。”
对于那些对该分析背后的过程感兴趣的人来说,可以访问数据和代码这里。
宗教与压力得分有什么关系?
开源心理测量项目提供的测试之一被称为 DASS 量表,代表抑郁、焦虑、压力量表。
在过滤掉所有无效回答(对效度问题回答不正确的人)后,我绘制了其余 34,583 个测试结果的结果图,并进行了均值相等的双样本 t 检验。
我发现自称为摩门教徒的考生平均压力得分最高(得分越高,压力越大),而自称为新教徒的考生压力得分最低。
Note: Higher stress scores indicate higher levels of stress | Source: The Open Source Psychometrics Project; N=34,583
由于 t 统计结果为正(t=4.734,p < 0.01), I can conclude that the mean of self-reported stress scores of Mormons is significantly different than that of Protestants. Using the same test, I also found that there is also a statistically significant difference between the stress scores of Protestants and Atheists ( t=6.113, p < 0.01).
You can compare these means to the conventional severity labels below.
Overall, the mean stress score for this population of test takers fits within the cut-off score for those with “moderate” stress levels.
Although the results are thought-provoking, ),我们应谨慎对待从该数据中得出的任何结论,并将其应用于一般人群,因为其值得进行更全面的分析,以控制可能的外来、混杂变量。
随着年龄的增长,我们会变得更安全吗?
数据中发现的另一个有趣的模式是某些个性指标与年龄之间的关系。
在绘制了几个跨年龄变量之后,我发现被调查者的年龄和性别与情绪稳定性、开放性、责任心、宜人性和外向性得分之间存在关系,如十项人格问卷(TIPI)所测量的那样。
Note: Higher scores indicate higher levels of emotional stability | N=34,583
所有年龄组中,男性受访者的情绪稳定性平均得分高于女性。与此同时,似乎年龄越大的受访者越有可能获得更高的情绪稳定性分数(分数越高表明情绪稳定性水平越高)。卡方检验结果证实这两个变量不是独立的(χ2=982.64,p < 0.01)。
Source: TIPI Norms
如果你将这些平均值与该量表创建者发布的常模进行比较,你会发现该测试人群的平均情绪稳定性得分(3.185)低于普通人群的得分(4.830)。这可能表明,那些参加在线心理测试的人并不代表更大的人群,但这需要进一步调查。
种族与人格测量有什么关系?
我还绘制了不同性格特征种族的平均结果,用 TIPI 和 DASS 量表测量。
虽然在某些情况下,结果可能看起来与直觉相反,但值得进一步研究。卡方检验的结果表明种族和情绪稳定性不是独立的(χ2=597.83,p < 0.01)。较高的分数对应于所讨论的特质或行为的较高水平。
Note: Higher scores indicate higher levels of the trait or behavior in question | N=34,583
还必须指出的是,大多数考生将自己归类为亚洲人、白人或其他人种。
性取向呢?
我还进行了卡方检验,以确定性取向是否独立于情感稳定性等 DASS 指标。结果表明两者并非不相关(χ2=509.23,p < 0.01)。
从下面的副图中,你可以看到,与其他类别相比,异性恋者的焦虑和抑郁得分最低(低得分对应于低水平的焦虑和抑郁)。与此同时,那些自称双性恋的人抑郁和焦虑得分最高,情绪稳定性得分最低。
Note: Higher scores indicate higher levels of the trait or behavior in question | N=34,583
原籍国和压力水平
我还绘制了各个国家的压力分数,发现西方国家的压力分数总体上并不高。相反,中东和非洲国家的考生压力分数似乎更高。
Note: Higher scores indicate higher levels of stress. Countries in white were not represented by test takers. | N=34,583
结论
从这一分析中,我们可以得出结论,考生身份的固有特征,如年龄、性别、种族、原籍国和性取向,与各种个性和行为措施有关。
然而,我们必须进一步研究在线心理测试者和更大的普通人群之间的差异。根据这一分析的结果,在线测试者似乎在情绪稳定性方面得分较低,在焦虑和抑郁方面得分较高。
他们如何在临床领域应用 BERT?
临床领域中的 BERT
Photo by Edward Ma on Unsplash
这个故事同时在 Dev.to 和 Medium 上发表。
通过埃尔莫(彼得斯等人,2018 年)、伯特(德夫林等人,2018 年)和 GPT-2 (拉德福德等人,2019 年),上下文单词嵌入被证明极大地提高了自然语言处理模型的性能。许多研究试图在特定领域的数据上微调 BERT 模型。 BioBERT 和 SciBERT 在上次介绍过。我想继续这个话题,因为还有另外两个研究微调 BERT 模型并应用于临床领域。
本故事将讨论公开可用的临床 Bert 嵌入 (Alsentzer 等人,2019 年)和临床 BERT:模拟临床记录和预测医院再入院(黄等人,2019 年),同时将详细介绍 BERT,但重点是研究人员如何将其应用于临床领域。如果你想更多地了解伯特,你可以看看这个故事。将涵盖以下内容:
- 建立临床特定的 BERT 资源
- 临床应用
建立临床特定的 BERT 资源
Alsentzer 等人在 MIMIC-III v1.4 数据库中应用了 200 万个注释(Johnson 等人,2016)。共有 15 种票据类型,Alsentzer 等人汇总为非出院小结类型和出院小结类型。放电汇总数据是为下游任务培训/微调而设计的。
Distribution of note type MIMIC-III v1.4 (Alsentzer et al., 2019)
给定这些数据, ScispaCy 用于将文章标记为句子。这些句子将分别传递给 BERT-Base(原始 BERT 基本模型)和 BioBERT 进行额外的预训练。
临床 BERT 是基于 BERT-base 构建的,而临床 BioBERT 是基于 BioBERT 构建的。一旦上下文单词嵌入被训练,信号线性层分类模型被训练用于跟踪命名实体识别(NER)、去标识(de-ID)任务或情感分类。
与原始的 BERT 模型相比,这些模型在 MedNLI 中取得了更好的效果。同时,您可能会注意到 i2b2 2006 和 i2b2 2014 没有改进,它们是去 ID 任务。
Performance comparison among different models in MedNLI and i2b2 data set (Alsentzer et al., 2019))
临床应用
与此同时,黄等人也注重临床笔记的研究。然而,黄等人研究的主要目标是通过利用良好的临床文本表示来建立预测模型。黄等研究发现,降低再住院率对患者是有利的,如节省费用等。
与 Alsentzer 等人相同,MIMIC-III 数据集(Johnson 等人,2016 年)用于评估。遵循相同的 BERT 实践,通过预测屏蔽记号和下一句预测来训练上下文单词嵌入。简而言之,预测屏蔽记号就是随机屏蔽一个记号,并使用周围的单词来预测屏蔽记号。下一句预测是一个二元分类器,该模型的输出是分类第二句是否是第一句的下一句。
Training tasks of ClincialBERT (Huang et al., 2019)
在具有预训练的上下文单词嵌入之后,微调过程被应用于再入院预测。这是一个二元分类模型,用于预测患者在未来 30 天内是否需要再次住院。
BERT 模型的一个限制是令牌的最大长度是 512。一个长的临床笔记将被分割成多个部分,并分别进行预测。一旦所有子部分被预测,最终概率将被聚集。由于担心单纯使用最大值或平均值,黄等人将两者结合起来,以得到更准确的结果。
Scalable radmission prediction formula (Huang et al., 2019)
实验结果表明,微调后的 ClinicalBERT 模型优于经典模型。
Performance comparison among models (Huang et al., 2019)
拿走
- Alsentzer 等人使用分类模型的信号层来评估结果。这可能是一个良好的开端,并期望伯特模型能够学习的内容。评估其他高级模型架构可以提供更好的综合实验结果。
- 对于较长的临床病历,黄等人采用了一些数学技巧来解决。它可能无法捕捉非常长的临床记录的内容。可能需要进一步思考处理长输入的更好方法。
喜欢学习?
我是湾区的数据科学家。专注于数据科学、人工智能,尤其是 NLP 和平台相关领域的最新发展。欢迎在 LinkedIn 上与 me 联系,或者在 Medium 或 Github 上关注我。
延伸阅读
参考
- E.阿尔森策、J. R .墨菲、W. Boag、W. H .翁、d .金、t .瑙曼和 M. B. A .麦克德莫特。公开可用的临床 BERT 嵌入。2019
- K.黄、J. Altosaar 和 R. Ranganath。 ClinicalBert:模拟临床记录并预测医院再入院。2019
我们如何创造一个可持续的思维经济?
“看,人民是一个,他们都有一种语言;他们已经开始这样做了。现在,他们想做的事,没有什么不能阻止他们。”
-《创世纪》第十一章第六节
正如巴别塔起源神话中所传达的那样,大规模合作对我们人类的自决至关重要,以至于当一种共同语言使世界人民团结在一个集体事业中时,全能者认为应该进行干预,以免人类获得全能。科学事业代表了现代的巴别塔。这是现存的最大规模的协同努力,目标是实现全知。越来越多的人认识到,科学是我们所拥有的最有效的工具,可以减少威胁我们人类和地球系统未来的复杂问题的不确定性。
20 世纪最有影响力的科学家之一万尼瓦尔·布什在 1945 年恰当地指出,科学“提供了思想的记录,并使人类能够操纵和摘录这些记录,以便知识在一个种族而不是一个 individual"⁴.人的一生中不断发展和延续尽管如此,即使我们当前的技术社会基础设施实现了快速的知识共享,科学似乎也无法跟上我们今天面临的失控问题——其中许多是我们自己发明的副作用。
尽管受到布什著作的启发,发明了电脑鼠标的道格拉斯·恩格尔巴特认识到快速的知识共享不足以解决世界上日益复杂的问题。恩格尔巴特认为,解决这些问题的唯一途径是通过加强合作,并倡导一种旨在“改进我们改进的方式”的自举方法。事实上,恩格尔巴特的鼠标是人类和 machines⁵之间更紧密融合的有意步骤,因此也是通过这些机器将人类与其他人类联系在一起的有意步骤。
因此,在我们能够快速提高对世界的理解之前,我们需要一个框架,让我们能够研究和应用人类/人工智能 partnerships⁶.将这样一个框架与将信息处理资产和服务视为商品的商业系统相结合,可能会催生一个欣欣向荣的新思维经济。公民科学项目及其使能技术可以成为可持续发展的企业,从而形成一个丰富的可重复使用和可扩展的公民科学平台小部件市场、在线认知劳动者社区的交钥匙访问以及稳定的研究数据集供应。
时势
今天,我们畅游在前所未有的计算能力中,并全天候连接到无处不在的网格,但我们仍淹没在数据中,因为我们正在努力解决棘手的社会问题。人类从未像现在这样在更多的时间、更多的地方联系在一起,但这种非结构化的联系并不适合有目的的知识转移。例如,对 Twitter 的社交网络分析揭示了两极分化的子网的形成,这些子网成为了志同道合的 members⁷的“回音室”,而不是为混合不同观点可能产生的新想法提供肥沃的环境。
更糟糕的是,科学学科正变得更加专业化,因为新技术使研究人员能够更深入地钻研利基领域,创造出具有自己难以理解的 folksonomies⁸的孤立社区,并导致知识孤岛的激增。对于 know⁹来说,任何一个领域都有太多的东西需要跨学科的方法来解决,包括今天最邪恶的⁰问题。即使解决这些问题所需的数据和知识隐藏在知识中,我们也缺乏将它们整合成有效且可行的解决方案的能力。
许多人转向机器学习(一种人工智能形式)作为求助途径,因为它能够从异构数据集揭示复杂的因果关系。主要由于计算速度的提高,已经存在了几十年的机器学习方法突然变得可行,可以在医疗诊断、银行贷款审批和刑事判决等不同领域进行预测,支持决策。然而,当人类的偏见渗入训练数据或上下文信息缺失时,你可能会得到性别歧视或种族主义的预测,而不会区分相关性和因果关系。需要更多的研究来解决偏见问题,并更好地理解人工智能和人类各自的影响如何影响结果。在此之前,人们在使用这些工具时可能会受到不利和不公平的影响。
人类/人工智能伙伴关系的价值
“强人工智能”的圣杯是能够执行任何人类认知任务——换句话说,实现类似人类的智能。令人惊讶的是,这种能力今天依然存在。它叫…人类!事实上,人工智能系统经常使用人类认知产品的数据进行训练,这增加了对它们的需求。获取这种人类生成的数据的一种方法是通过“公民科学”,在线志愿者帮助获取或分析数据,以换取参与科学研究的机会。这些项目通常是为了解决一个研究需求而开发的,这种需求不能单独使用基于机器的方法来满足,因为工作的某些方面(例如对图像进行分类)只能由人类来适当地完成。
2019 年 4 月 13 日,来自全球各地的数千名公共志愿者在不到一个周末的时间里完成了为期三个月的阿尔茨海默病研究,共同创造了生物医学数据分析的新世界纪录。他们通过玩我们开发的名为“抓失速”的在线游戏来做到这一点。像大多数公民科学项目一样,《失速追踪器》体现了一类新兴的混合分布式信息处理系统⁴.这些所谓的人类计算(HCOMP) 系统利用人类和机器各自的优势来实现今天⁵.的未来人工智能能力因此,这些混合系统通过简单地循环人类来处理认知任务,实现了前所未有的能力,即使是最先进的人工智能系统⁶.也无法完成这些任务
失速追踪器并不是唯一的成功案例。HCOMP 正在推进癌症⁷和艾滋病毒⁸研究,诊断撒哈拉以南非洲的疟疾⁹,减少坦桑尼亚⁰的女性生殖器切割,预测多哥的洪水影响,赋予盲人实时场景理解能力,在语言障碍和基础设施故障的情况下加快救灾,改写我们对宇宙学⁴ ⁵的理解,并改进保护科学⁶.的预测
障碍
如今,将 HCOMP 应用于重大社会问题是一项“高风险/高回报”的事业。这需要投入大量的时间和金钱,而且成功的可能性很低。没有直接的集成路径来链接人工智能和基于人类的处理组件,没有工作流自动化的机制,数据管道通过手动研究人员干预和定制的适配器捆绑在一起,在可转移的粒度级别上缺乏模块化和重用,并且没有验证方法或数据质量保证的标准方法。
虽然最近的失速捕捉器事件展示了现实世界的效用和影响,但与许多成功的 HC 平台一样,它花了几年时间来完全开发复杂的信息处理系统,使这一壮举成为可能。我们是怎么做到的?首先,我们建立了一个数据管道,采用卷积神经网络对原始数据进行预处理,并分离出认知任务。接下来,我们开发了一个游戏化的众包平台,它与人类和人工智能系统⁷.紧密耦合为了激励参与,我们创建了一个中立的奖励引擎,但是也不断地结合用户反馈来改进交互设计。最后,我们开发了一种优化的动态一致性算法,用于机器辅助验证人群生成的数据。所有这些都是为了最大化分析通量,同时满足严格的生物医学数据质量要求。
如果每个公民科学项目都倾向于被视为一张白纸,那么难怪成功率会很低,而实现的时间会很长。但是每个成功项目中的每个部分都是潜在可分的。事实上,没有原则上的理由为什么不能把每一部分都做成共享的模块,这样它就可以被重用、重用,并扩展成具有新功能的新模块。然而,在实践中,只有在有一种方便的方式并且对发起人有利的情况下,这种情况才会发生。
另一个关键问题是可持续性。对于这些项目中的许多项目来说,一个中心目标是使用人类生成的数据来训练一个人工智能系统,该系统可以解放志愿者,或者至少吸收一些工作量。但这种结果很少见。更常见的情况是,正当这些公民科学项目发展出一个繁荣的社区,验证了他们的方法,并开始产生高质量的研究数据时,他们的资金枯竭了,他们不容易维持下去(例如,参见 Tsueng 博士给 Mark2Cure 参与者的终止信的内嵌摘录)。这种情况经常发生,因为它们得到了有时间限制的资助,资助范围要么是概念开发的证明,要么是解决具体的研究问题。
“不幸的是,我们没有所需的资源来解决困扰当前 Mark2Cure 迭代的所有问题,这些问题影响了用户体验并阻碍了参与。虽然我们的研究表明 Mark2Curators 可以贡献高质量和有意义的数据,但这些设计问题使得我们不太可能招募到足够多的用户[……]经过长时间的讨论,我们决定停止贡献……”
Scripps Research 的 Ginger Tseung 博士
走向思考型经济
如果我们有办法给项目注入收入来维持运营,会怎么样?上述进展障碍存在于更大的利益相关者生态系统中,所有利益相关者都投资于新的数据科学方法及其应用。每个利益相关者都带来了他们自己的⁸挑战和相关需求,但也为其他利益相关者带来了潜在的解决方案。这种需求和供给的互补性暗示了一种潜在的经济。
例如,一名渴望数据的机器学习研究生可以收费提供人工智能建模服务,或者以访问公民科学项目生成的大型训练集作为交换。然后,他们可以将自己表现最好的模型授权给学术研究人员,以获得发表权,并授权给营利性实体,以获得授权费。
公民科学项目本身可以通过向受资助的领域研究人员提供具有成本效益的数据分析来产生收入,这些研究人员为这些分析提供预算。另一个收入来源可能包括向其他公民科学项目授权“群体智慧”算法或专门的界面部件。
与此同时,公民科学志愿者可以建立基于表现的声誉,并在此基础上被聘为有偿认知劳动者。Mooqita 已经证明了这种方法的可行性,它将外部组织的在线任务整合到 MOOCs 中,成为⁹.的学习机会一些在在线任务中表现出熟练程度的学生被雇佣在 MOOC 之外继续同样的在线工作。
但是今天这些都没有发生,因为 1)信息处理交换不存在,2)我们被困在知识经济中。知识经济是一种重视一阶知识生产的思维模式,一阶知识是在孤立的环境中使用数据来指导我们行动的死记硬背的方法。这种知识忽略了现实世界中许多相互作用的系统之间存在的复杂的相互依赖性。
但是我们从已知的事物中建立高阶知识的速度很慢,因为整合知识比整合数据要困难得多。它需要的不仅仅是数据处理,还需要思考。想想精准医疗的挑战,其目标是基于患者的基因组、微生物群、病史和生活方式选择来预测前瞻性治疗的影响。这需要在不同的多源数据中发现模式,然后应用跨学科的专业知识来解释它们。为此,我们需要 HCOMP。
Civium 简介
为了实现这些目标,人类计算研究所正在领导 Civium 的开发,这是一个用于可持续人类计算的集成平台和商业引擎。Civium 的目的是为了科学的进步而简化信息处理,并使认知劳动及其产品商品化,走向新的思维经济。对于公民科学从业者来说,这可以减少开发时间和运营成本,实现快速的社区参与,并创造有助于维持项目的收入机会。
今天有一个名为 brainlife.io 的平台,它使神经科学家能够直接在云计算基础设施上发布算法和数据集。通过预先实施互操作性,所有数据集和算法都可以互换,并通过工作流轻松组合到更复杂的管道中,称为“开放服务”⁰.这种方法支持数据建模结果的可再现性。因此,brainlife.io 已经在神经科学社区中被广泛采用。
这种简单而明智的方法似乎是一个更广泛的计划的合适基础,该计划旨在开发一个支持人类计算研究的开放科学平台,包括基于群体的计算的整个生命周期。各种群体科学方法,如数据准备、参与者参与、机制设计、聚合算法和验证方法,以及协调这些方法的特定动态工作流,都会对人类计算系统的成功发展产生重大影响。此外,将这些组件的组件和子组件快速连接在一起以进行快速评估和验证的能力对于有效校准系统行为的各个方面至关重要。
除了扩展 brainlife.io 以包括支持公民科学和 HCOMP 研究的基于人类的信息处理,Civium 还将关键地整合一个商业系统以促进发展和可持续发展。事实上,Civium 的关键假设是技术创新无法在经济真空中持续。因此,成功将关键取决于以模拟和解决现实世界的约束和激励的方式将集成“胶水”与商业系统交织在一起。我们相信,将这些技术和经济系统恰当地结合在同一个平台上,将释放潜在的市场驱动力,为推进思维系统的发展带来一个繁荣的生态系统。在接下来的两节中,我们将更深入地探讨 Civium 的这些关键方面。
综合
目前存在几个公民科学项目建设者(例如,Zooniverse、citsci.org、Spotteron、Anecdata 等。),通常在线性设计过程中提供一个选项菜单。其中的每一个都适合一组用例(例如,图像分类)。这些平台支持快速开发和参与者访问,尽管它们可能会限制新项目可能采用的潜在数据集、应用程序和数据科学方法的范围。此外,还有像 PYBOSSA 和 TurKit 这样的众包库,它们非常灵活,支持几乎无限多种应用程序,但可能需要大量编码。
Civium 寻求提高这些现有社区资产和其他资产的可访问性,并通过在基于云计算服务的共享信息处理环境中提供这些资产来降低运营成本,在该环境中,这些资产可以以不同的方式组合并应用于新的数据集。
Civium 还鼓励小部件和服务的模块化,这样它们就可以被共享和重用。例如,一个新的镰状细胞病项目可以将 EyeWire 的图像预处理算法与 stardust@home 的虚拟显微镜界面、Stall Catchers 的共识算法相结合,然后在 Zooniverse 门户服务中发布项目时向 SciStarter.org 仪表板服务注册。此外,工作流可以使用项目的输出来自动训练人工智能模型,该模型为人类认知任务提供持续改进的协作输入。
可持续性
混合人机系统和平台正在改变世界,这已经不是什么秘密,对这些能力的需求只会增长。难道不是时候团结起来,以符合我们价值体系的方式为每个人解决可持续发展问题了吗?除了作为一个集成平台,Civium 还将自下而上地设计一个集成的商业引擎,通过创建一个信息处理和数字资产的市场,帮助播种一种新的“思维经济”(正如在 2019 年微软教师峰会上介绍的那样)。在这种模式下,任何数字产品或服务都是潜在的收入来源。例如,公民科学平台提供的分析能力可以作为付费服务来提供。在现有公民科学项目中使用的功能模块(例如,共识算法)可以被注册并可用于其他项目。门户服务,如 Zooniverse,可以通过交钥匙访问按月付费购买,也可以注册 SciStarter 的 dashboard 服务。甚至公民科学项目本身也可能需要参与费,例如 Project FeederWatch,它已经向用户收取每年 18 美元的费用。但是如何指定和实现这样的使用策略呢?
Civium combines integration and sustainability features within a single platform
在 Civium 中,我们希望通过使透明地共享人工制品变得容易来促进开放科学,但我们也希望给创作者指定他们自己的许可条款的机会,无论是否涉及经济报酬。今天,许多研究人员分享开源和开放科学的价值,作为加快研究和影响的手段。与此同时,研究人员似乎发自内心地认识到可持续资助的困难。这种价值驱动的行为和可持续性之间的不协调可能源于开源=免费这一广为流传的神话。开源(就此而言,还有开放科学)的“免费”部分是在源代码(和数据)透明的脉络中。跟钱没关系。例如,如果有人创建了一个算法并在 Civium 上发布了该模块,他们可以说“任何人都可以使用它,只要他们信任我”(就像 CC-BY 一样),或者规定“我拥有这个软件,但我将向任何学术研究人员授予免费许可证,以及为期 6 个月的可更新许可证,用于 X 美元的盈利。任何衍生产品都必须遵守这些许可条款。”诸如此类。这不仅适用于小工具,也适用于在线服务(例如,访问大型参与者社区),并且可以通过多种方式进行衡量。事实上,Civium 提供了一个评估和信用分配系统,用于跟踪哪些资源得到了利用以及利用了多少。
实现这一点的关键是“照单全收”的许可能力,这将使使用策略能够嵌入到注册的服务和数字制品(如算法、数据集等)中。).在一个透明的社会是一个礼貌的社会的前提下,这些将受到身份验证服务和基于区块链的问责制的保护。提供商将能够规定他们选择的任何条款,市场可以自由接受这些条款或寻找其他条款。使用策略可以另外规定只在 Civium 的底层计算资源上使用已发布的工件,这可能会解决协作限制,否则这些限制可能会阻碍来自不同组织的数据建模者和数据提供者之间的协作。全球分布的 Azure 服务器场使地理定位处理成为可能,这将使其他大陆的数据科学家能够在他们原籍国的服务器上处理数据,从而进一步实现以前被禁止的合作机会,例如分析受 GDPR 保护的基因组数据集以支持精准医学研究。
赋予公民生命
在思考这一雄心勃勃的事业时,很明显,由聪明能干的组织采取的相关举措尚未取得成果,认为人类计算研究所可以独自解决这一问题是傲慢的想法。因此,我们与我们的社区成员分享了这些想法,思考了为什么这样一个平台尚未被广泛采用,并考虑了现在可以做些什么来实现这一点。事实上,将 Civium 视为一个人类计算系统本身,拥有多个利益相关者,有助于为这一方法提供信息。
那么为什么像 Civium 这样的东西今天不存在呢?一个障碍可能与组织限制和任务偏差有关。大型企业解决方案上市速度快,而且可能是可持续的,但服务于盈利目标,引入了限制性的付费墙,并向少数行业利益相关者提供有偏见的产品。另一方面,基于社区的倡议往往服务于更广泛的目标,但涉及行动缓慢、铁板一块的财团。当这些团队开发并同意一组需求时,那些特性规范不再满足这个快速变化的领域的需求。此外,植根于学术的项目往往有意避开大企业,这阻碍了潜在的收入流。
作为一个非营利组织,人类计算研究所的使命是为了社会的利益而推进 HCOMP,而不是为了利润。这一使命旨在寻求学术、企业和政府利益的共同基础。在 HCI 的管理下,Civium 可以服务于许多人的利益,同时在非地质时间尺度上取得成果。
下一步是什么?
如今,Civium 计划正在与开发 brainlife.io 的微软研究院和印第安纳大学的 Pestilli 实验室合作向前发展。公民科学实践者、HCOMP 研究人员和机器学习爱好者的更广泛社区正在形成一股浪潮,寻求公民科学规模经济的全球联盟的主要成员也表达了兴趣,如联合国公民科学与可持续发展目标(SDG)协调工作组,EU-公民。科学和其他。将在 10 月下旬的 HCOMP 2019 大会上召开一次公开的社区会议,回答问题并收集反馈,随后在 1 月份召开一次项目启动会议,以就规范达成一致并分配角色。
Civium 不打算重新发明轮子。事实上,我们的目标只是将相关的部分组合在一起,这样就可以很容易地组合和重用它们。Civium 还寻求支持那些创造数字产品并提供大众服务的组织和个人,包括认知劳动者本身。Civium 包括一组核心功能,其中许多功能将来自现有的平台和服务。例如,Civium 将建立在 brainlife.io 的基础上,它为互操作性和交钥匙再现性提供了一种可靠的方法。对于其许可引擎,Civium 将建立在我们的另一个合作伙伴 GridRepublic 开发的成熟项目之上,该项目将区块链可追溯性应用于合同。这些核心能力将在一个无缝平台内交织技术集成和经济可持续性,在这个平台上,参与者门户、公民科学项目、人工智能算法和数据集可以互操作并蓬勃发展。
从某种意义上说,Civium 是一种新型超级计算机的操作系统,由计算机硬件和认知“软件”提供支持,将使我们能够构建、改进和部署变革性的人类/人工智能系统,以支持开放科学和创新。它也是一个集市,用于分享、交易和寻找我们需要的小部件和服务,以创建和维持我们寻求的功能,为不受支持的项目和平台注入新的生命。最终,我们相信 Civium 有潜力播种一种新的思维经济,奖励解决我们最紧迫的社会问题所需的独特的人类认知能力。
承认
衷心感谢 Eglė Marija Ramanauskaitė和 Jennifer Couch 的广泛反馈,这些反馈极大地改进了本文的结构和语气。感谢众多同事对 Civium 和相关想法的讨论和反馈,包括 Vani Mandava、Lucy Fortson、欧阳丹丹 Gurari、Diane Bovenkamp、Franco Pestilli、Soichi Hayashi、Darlene Cavalier、Lea Shanley、Besmira Nushi、Matthew Blumberg、Nancy Kleinrock 和许多其他人。
参考
1.创世纪。在:钦定本圣经。
2.巴别塔。在:维基百科。;2019.https://en.wikipedia.org/w/index.php?title=Tower_of_Babel&oldid = 912466515。2019 年 8 月 27 日接入。
3.公众越来越信任科学家为社会谋福利。科学新闻。https://www . science news . org/article/public-trust-scientists-work-good-society-growing。发表于 2019 年 8 月 2 日。2019 年 8 月 4 日接入。
4.我们可能会认为。大西洋。https://www . theatlantic . com/magazine/archive/1945/07/as-we-may-think/303881/。出版于 1945 年 7 月 1 日。2019 年 8 月 27 日接入。
5.50 年后,我们仍然没有抓住所有演示的母亲。连线。2018 年 12 月。https://www . wired . com/story/50 年后——我们仍然不理解这位所有演示的母亲/2019 年 8 月 27 日接入。
6.《人类计算和收敛》。在:班布里奇 WS,洛可 MC,编辑。科技融合手册。Cham:斯普林格国际出版公司;2016:455–474.doi:10.1007/978–3–319–07052–0 _ 35
7.威廉姆斯·HTP,小麦克默里,库尔茨·T,雨果·兰伯特 f。网络分析揭示了气候变化社交媒体讨论中的开放论坛和回音室。全球环境变化。2015;32:126–138.doi:10.1016
8.方足球俱乐部。专业科学。感染免疫。2014;82(4):1355–1360.doi:10.1128/IAI . 01530–13
9.里查森·PJ。作为一种分布式计算形式的人类累积文化进化。在:米凯鲁奇 P,编辑。人类计算手册。纽约州纽约市:斯普林格纽约;2013:979–992.doi:10.1007/978–1–4614–8806–4 _ 76
10.《规划一般理论中的困境》。政策科学。1973;4(2):155–169.doi:10.1007/BF01405730
11.Tan S,Adebayo J,Inkpen K,Kamar E.《调查用于累犯预测的人类+机器互补性》。 ArXiv180809123 Cs Stat 。2018 年 8 月。http://arxiv.org/abs/1808.09123.2019 年 9 月 28 日接入。
12.史蒂文森 l .公民科学家为加速老年痴呆症的研究创造了新的记录。Discov Mag Citiz Sci 沙龙。2019 年 5 月。http://blogs . discover magazine . com/citizen-science-salon/2019/05/06/citizen-scientists-set-new-record-for-accelerating-Alzheimers-research/。2019 年 5 月 6 日接入。
13.老年痴呆症可以被成千上万的业余爱好者治愈。https://www . wired . com/story/在数千台显微镜下寻找失去的记忆/。2019 年 10 月 21 日接入。
14.公民网络科学&人类计算的新方向和机遇。Hum compute。2014;1(2).doi:10.15346/hc.v1i2.2
15.米歇尔·P·迪金森·JL。人群的力量。理科。2016;351(6268):32–33.doi:10.1126/science.aad6499
16.布瑟 A,斯隆 M,米开朗琪 p,保韦尔斯 E. 人工智能:一个政策导向的介绍。威尔逊中心;2017.https://www . scribd . com/document/364545974/人工智能-政策导向-简介。2019 年 1 月 8 日接入。
17.坎迪多·多斯·雷斯·FJ、林恩·S、阿里·HR 等人众包公众进行癌症的大规模分子病理学研究。埃比奥美辛。2015;2(7):681–689.doi:10.1016/2015 . 05 . 009
18.由蛋白质折叠游戏玩家解决的单体逆转录病毒蛋白酶的晶体结构。自然结构分子生物学。2011;18(10):1175–1177.doi:10.1038/nsmb.2119
19.Luengo-Oroz MA,Arranz A,Frean J .众包疟疾寄生虫定量:一个分析受感染稠血涂片图像的在线游戏。医学互联网研究。2012;14(6).doi:10.2196/jmir.2338
20.领导莫。让坦桑尼亚的乡村出现在地图上。读写分词。2018 年 4 月。https://medium . com/read-write-participate/put-rural-Tanzania-on-the-map-79d 0888 df 210。2019 年 5 月 2 日接入。
21.反思参与:人道主义者探索地理信息的创新。ISPRS Int J Geo-Inf*。2015;4(3):1729–1749.doi:10.3390/ijgi4031729*
22.Bigham JP,Jayant C,Ji H,et al. VizWiz:对视觉问题的近乎实时的回答。在第 23 届 ACM 年度用户界面软件和技术研讨会会议录。10 年的尤斯特。美国纽约州纽约市:ACM2010:333–342.土井指数:10.1145/186658686867
23.灾害应对中的人类计算。在:米凯鲁奇 P,编辑。人类计算手册。纽约州纽约市:斯普林格纽约;2013:95–104.doi:10.1007/978–1–4614–8806–4 _ 11
24.星尘号宇宙飞船收集的七个尘埃粒子的星际起源证据。https://science.sciencemag.org/content/345/6198/786.full.2019 年 5 月 2 日接入。
25.星系动物园绿豌豆:一类致密极端恒星形成星系的发现。 Mon Not R Astron Soc 。2009;399(3):1191–1205.doi:10.1111/j . 1365–2966.2009.15383 . x
26.生物多样性保护和研究的人/计算机学习网络。年:第二十四届 IAAI 会议。;2012.https://www . aaai . org/OCS/index . PHP/IAAI/IAAI-12/paper/view/4880。2019 年 5 月 2 日接入。
27.加速生物医学研究的人机合作。微软 Res 。https://www . Microsoft . com/en-us/research/video/a-human-machine-partnership-to-accelerate-biomedical-research/。2019 年 5 月 3 日接入。
28.单数他们。在:维基百科。;2019.https://en.wikipedia.org/w/index.php?title=Singular_they 的 oldid=918961982。2019 年 10 月 2 日接入。
29.Krause M,Schiö berg D,Smeddinck JD。Mooqita:用一种新颖的工作-学习模式赋予隐藏的才能。in:2018 CHI 计算系统中人的因素会议扩展摘要。CHI EA '18。美国纽约州纽约市:ACM2018 年:CS14:1–CS14:10。多伊:10.1145/317035363637
30.Avesani P,McPherson B,Hayashi S,等,《开放扩散数据衍生产品,通过衍生产品的集成发布和可再生开放云服务实现大脑数据升级》。 Sci 数据。2019;6(1):1–13.doi:10.1038/41597–019–0073-y
31.《人类计算的美国研究路线图》。 ArXiv150507096 Cs 。2015.doi:10.13140/RG
32.小 G,奇尔顿 LB,高盛 M,米勒 RC。TurKit:机械土耳其人上的人类计算算法。在第 23 届 ACM 年度用户界面软件和技术研讨会会议录。10 年的尤斯特。美国纽约州纽约市:ACM2010:57–66.土井指数:10.1145/186658686867
33.Fritz S,See L,Carlson T,等,《公民科学与联合国可持续发展目标》。 Nat 维持。2019;2(10):922–930.doi:10.1038/s 41893–019–0390–3
我们如何衡量忠诚度?调查发展介绍
https://pixabay.com/photos/measuring-tape-measurement-tools-926716/
试图“衡量忠诚度”听起来太疯狂了,只有德怀特·施鲁特才会这么说,但这是营销研究人员一直在做的事情。在本帖中,我们将介绍探索自我报告调查结果的基础知识,以发现哪些“潜在”因素可能反映在调查项目中。
http://www.elitecolumn.com/wp-content/uploads/2018/03/Dwight-Schrute-Quotes-3.jpg
这是心理学、市场营销和组织行为学等社会科学领域的常用技术,在这些领域,兴趣的概念可能无法直接测量。
心理测验学
通常这种类型的研究是在专有的社会科学工具中进行的,如 SPSS 或 MPlus,但我们将使用R
进行分析。首先,我们将安装所有必需的包并加载两个数据框:brand_loyalty
,它包含调查结果,以及brand_loyalty_items
,它告诉我们关于调查中每个项目的更多信息。
# Download survey responsesbrand_loyalty <- read.csv("[https://cwru.box.com/shared/static/naelh1otw6dlsavj8jwnfmr021680xgk.csv](https://cwru.box.com/shared/static/naelh1otw6dlsavj8jwnfmr021680xgk.csv)")# Item description and proposed dimensionsbrand_loyalty_items <- read.csv("[https://cwru.box.com/shared/static/0qvuvuu47hmq75mi0ljl8qo7p29hs472.csv](https://cwru.box.com/shared/static/0qvuvuu47hmq75mi0ljl8qo7p29hs472.csv)",
stringsAsFactors = FALSE)
对调查的剖析
在我们开始分析数据之前,最好从受访者的角度来看调查。这里我们看到了与品牌忠诚度概念相关的十个“项目”。受访者用 1 到 5 分表示他们对每个项目的认同程度。这个评级系统被称为李克特量表,以其开发者,社会科学家伦西斯·利克特命名。
让我们通过探索性数据分析(EDA)来了解我们的回答,然后我们可以跳到如何使用它们来衡量忠诚度。
调查 EDA
我们假设我们的数据收集一切顺利——我们都知道这永远不会发生!没有丢失的值,没有需要重新编码的项目,什么都没有。实际上,在继续下面的步骤之前,您可能希望检查这些内容。
响应频率
我们的每一项产品都有一至五分的等级。将每个项目评为 1 的受访者比例是多少?A 3?通过psych
中的response.frequencies()
函数,我们可以看到每个项目响应的总体分布。我们将对输出进行舍入,并以百分比格式显示:
> round(response.frequencies(brand_loyalty),4) * 100
1 2 3 4 5 miss
honest 1.00 10.00 42.00 36.00 11.00 0
safe 0.67 9.67 37.00 45.00 7.67 0
depend 0.67 8.00 34.00 47.67 9.67 0
believe 0.33 6.33 43.33 43.00 7.00 0
social_media 2.33 21.00 57.33 18.00 1.33 0
say_positive 0.33 8.33 49.67 38.00 3.67 0
recommend 3.67 22.67 45.67 24.67 3.33 0
success 1.33 15.33 52.00 27.33 4.00 0
interested 2.00 6.67 35.33 47.33 8.67 0
compliment 2.00 14.00 48.67 30.67 4.67 0
在这里,我们可以看到大多数项目的回答都集中在 3 到 4 的范围内。没有太多 1 和 5 的“极端”响应。我们还可以在这里确认没有丢失值。
让我们继续用可视化来分析响应频率。我们将使用likert
包来绘制每个项目的响应频率。likert
要求项目被结构化为因子,所以让我们使用dplyr
中的mutate_if()
来实现。
让我们用brand_loyalty_items
的description
列来标记这个图。通过这种方式,我们实际上可以看到回答者实际回应的提示。
library(likert)
library(dplyr)# Select likert items, convert to factorsbrand_loyalty_f <- brand_loyalty %>%
mutate_if(is.integer, as.factor)# Rename based on full item namesnames(brand_loyalty_f) <- c(brand_loyalty_items$description)# plot likert itemsresult <- likert(brand_loyalty_f)
plot(result, group.order = names(brand_loyalty_f))
可视化有助于理解每个项目的总体分散性。
项目相关性
我们对每个项目本身的分数不感兴趣,相反,我们想用这些项目来衡量潜在的变量——忠诚度。项目之间存在什么样的关系,可能表明它们在测量一些共同点,以告诉我们关于忠诚度的信息?
为了对这些关系有所了解,让我们用corrplot
绘制一个相关热图。
library(corrplot)
corrplot(cor(brand_loyalty))
我们看到有些项目比其他项目更相关:具体来说,前四个、中间三个和最后三个项目似乎代表不同的项目“组”。
让我们再看一下调查。
显而易见,这些项目会有更高的相关性:前四个与品牌信任有关,中间三个与感知价值有关,最后三个与认同有关。
从相关性到因素
虽然 EDA 是一个有益的开端,但我们最终还是想测试我们是否有一个可靠有效的工具来衡量忠诚度。我们的下一步是通过探索性因子分析进行降维。是的,又一个“探索性”的步骤!
这一次,我们想探究潜在变量的多少个维度可能会反映在数据中。我们将这些项目与这些维度相关联,而不是将这些项目彼此相关联。
通过 EDA,我们有一种很好的感觉,这种仪器反映了三维,但我们可以通过另一种方法得到估计:并行分析。这将数据集与随机生成的数据集进行比较,并比较结果以提示数据中存在哪些重要维度。
这可以通过psych
的fa.parallel()
功能实现:
fa.parallel(brand_loyalty)
平行分析
我们稍后将更正式地解释这个所谓的“scree 情节”。现在,记住“肘规则”来估计建议的因素数量。“碎石”地块因山坡上松散的岩石而得名。建议的因子数量可以在曲线“倾斜”之前的 X 轴位置找到。在我们的图中,“下降”从因子 4 开始,所以因子的建议数量是 3。
如果还没有“点击”,不要担心——fa.parallel()
的输出包含了以下信息:
> fa.parallel(brand_loyalty)Parallel analysis suggests that the number of factors = 3 and the number of components = 3
您可能会注意到,该图包括主成分和因子分析的输出。虽然这两种都是降维技术,但每种都有不同的目标。
主成分分析旨在用尽可能少的变量解释数据中尽可能多的总方差,这是一种优化规则,通过将索引变量创建为其他变量的组合来解决。
相比之下,因子分析通过潜在变量与一组显式变量之间的关系来衡量潜在变量。因素分析的目的是解释项目和维度之间的相关性。每个变量被定义为维度的线性组合。
这两种技术都不优于另一种——这完全取决于上下文。在这种情况下,因为我们的目标是测量一个潜在变量,所以因子分析是比主成分分析更好的选择。
探索性因素分析:建模与诊断
从 EDA 和并行分析中,我们倾向于在我们的数据中反映三维。让我们通过一个完整的探索性因素分析(EFA)来建立这个模型。在这一点上,我们根据经验寻找数据中的关系,通过各种诊断评估看起来合适的维数。
我们将从psych
开始通过fa()
函数进行 EFA,将nfactors
设置为3
。让我们把全民教育的结果分配给brand_loyalty_efa
。这将有助于访问结果中的元素——结果中有 50 多个元素!
注意:fa()
功能需要安装GPArotation
。
> brand_loyalty_efa <- fa(brand_loyalty, nfactors = 3)> names(brand_loyalty_efa)
[1] "residual" "dof" "chi" "nh" "rms" "EPVAL" "crms"
[8] "EBIC" "ESABIC" "fit" "fit.off" "sd" "factors" "complexity"
[15] "n.obs" "objective" "criteria" "STATISTIC" "PVAL" "Call" "null.model"
[22] "null.dof" "null.chisq" "TLI" "RMSEA" "BIC" "SABIC" "r.scores"
[29] "R2" "valid" "score.cor" "weights" "rotation" "communality" "communalities"
[36] "uniquenesses" "values" "e.values" "loadings" "model" "fm" "rot.mat"
[43] "Phi" "Structure" "method" "scores" "R2.scores" "r" "np.obs"
[50] "fn" "Vaccounted"
每一个输出都讲述了一个关于我们全民教育的故事,但我们不能看全部,对吗?考虑这三个诊断,你的全民教育诊断的“悬崖笔记”——按重要性排序:因子负荷、特征值和因子得分相关性。
因素负荷
这实质上是每个项目与潜在变量的维度的相关性。虽然没有一个准则说明什么是强因子载荷,但我们将使用大于|.5|的基本经验法则。项目可以加载到多个因子,但任何“次要”加载都应小于|.3|。
使用$loadings
可以从我们的全民教育输出中获取因素负载:
> brand_loyalty_efa$loadings
Loadings:
MR1 MR2 MR3
honest 0.692
safe 0.755
depend 0.549 0.114
believe 0.594 0.137
social_media 0.217 0.475
say_positive 0.635
recommend 0.733
success 0.774
interested 0.776
compliment 0.677 0.184
MR1 MR2 MR3
SS loadings 1.756 1.705 1.226
Proportion Var 0.176 0.170 0.123
Cumulative Var 0.176 0.346 0.469
那么,这是怎么回事呢?我们有一些二次装载,但都在 0.3 以下。看起来除了social_media
外,所有的主载荷都超过了. 5。在 0.475。
我们应该放弃吗?记住,这些不是一成不变的规则。如果我们相信这个项目提供了关于潜在变量的独特信息,我们应该保留它。然而,如果我们发现它是无用或多余的项目,我们可以以节俭的名义放弃它。我们可以在调查开发的后期更正式地测试social_media
的效用。
特征值
接下来,我们将考虑“凯泽-古特曼法则”来确定正确的因子数。这是确定 EFA 中因子数量的传统方法:我们应该将因子数量设置为等于大于 1 的特征值的数量。这符合逻辑,因为超过 1 的特征值表示方差的“一个变量的价值”。
可以在对象e.values
中找到特征值:
> brand_loyalty_efa$e.values
[1] 3.6206684 1.5647759 1.2282820 0.6919068 0.6401634 0.5247305 0.5144098 0.4666997 0.4019293 0.3464342
特征值表明了三个因素——但是你已经从碎石图中知道了!
碎石图,重访
让我们再来看看碎石图。通过将原始数据帧brand_loyalty
传递给scree()
函数,我们可以产生一个不那么“繁忙”的版本:
scree(brand_loyalty)
这和之前的图是一样的,但是仔细看看 Y 轴:它们是特征值!不仅如此,穿过 Y 轴的实线被设置为 1。所以,我们只是精确地估计了我们在 scree 图中的视觉效果。
因素得分相关性
在全民教育中,因子得分是以数值的形式产生的,这些数值表明每个回答者在一个因子的每个维度上的相对地位。我们可以通过调用输出的scores
对象上的head()
函数来查看这些分数的预览:
> head(brand_loyalty_efa$scores)MR1 MR2 MR3[1,] -0.2352680 -0.05711601 -1.5141629[2,] -0.2350122 -0.45791785 0.6840743[3,] -0.7019507 -0.83111162 -0.3847279[4,] 0.7754942 0.95429483 0.9438122[5,] 0.8629493 0.95651211 0.7357261[6,] -1.1570106 0.93738262 -1.3978041
为什么要看我们的因子得分相关性?记住,每个维度都应该衡量我们潜在变量的一个相关但不同的方面。如果两个因素过于高度相关(通常超过 0 . 6),它们可能测量的是同一事物,在这种情况下,我们会以简约的名义减少因素的数量。
因素得分相关性存储在score.cor
对象中:
> brand_loyalty_efa$score.cor
[,1] [,2] [,3]
[1,] 1.0000000 0.3640649 0.4102557
[2,] 0.3640649 1.0000000 0.2547783
[3,] 0.4102557 0.2547783 1.0000000
概述:全民教育诊断
从所有的诊断来看,我们似乎在三维空间的正确轨道上。因子得分相关性不太高,我们符合特征值的 Kaiser-Guttman 规则,所有主要因子载荷都大于|.5|…嗯,除了social_media
,我们现在保留它。
如果我们的调查不符合这些标准,我们有两个一般选项:
- 丢弃装载不良的物品,以及
- 改变因子的数量。
幸运的是,我们的全民教育到位了,所以我们可以继续下去。
模型图:每张图片都讲述了一个故事
似乎我们的十个项目中的每一个都反映了该结构的三个维度之一,“品牌忠诚度”为了达到这一点,我们已经打印了许多数字,所以让我们使用psych
中的fa.diagram()
函数,用我们的全民教育模型的有用可视化来结束我们的分析:
在这里,我们看到了清单变量和它们加载到的维度之间的关系。当我们测量物品如何“反映”尺寸时,箭头从尺寸指向尺寸到物品。这三个维度也是相互关联的——因子 2 和因子 3 之间的相关性非常低,以至于没有在图表中显示出来。
下一步是什么?
那么,我们已经满意地测量了忠诚度了吗?
不完全是。
探索性因素分析就是:探索性的。接下来,我们想用—你猜对了!— 验证性因子分析。这将是一个正式的假设检验,以建立我们理论上定义的模型和数据中存在的东西之间的关系。
我们还想测量我们的工具的可靠性和有效性,知道它可以持续测量我们声称要测量的东西。
我计划在以后的数据科学文章中讨论这些主题。
在那之前,用下面的完整代码练习你的 EFA 技能。
我们如何在 PUBG 生存?
layer Unknown’s Battle Grounds,也称为 PUBG,是一款流行的视频游戏,每月有数百万活跃用户。在每场游戏中,100 名玩家被丢在一个岛上的不同地方。他们必须找到供应品和武器,并与其他玩家战斗,以便生存到最后一个离开。玩家可以选择与最多 3 名其他玩家组队或单独游戏。在游戏过程中,随着游戏区不断缩小和移动,他们被迫四处移动。我对学习这些游戏玩家在模拟生存世界中的行为很感兴趣,以了解其背后的心理。人们更喜欢组队还是单打独斗?他们更有可能战斗还是躲藏?什么样的策略可以帮助他们生存到最后?
这个项目也是我第一次尝试机器学习中的特征工程过程,包括错误分析、特征空间评估、集成和调整过程。我使用 Weka 和 Lightside 来实现我的实验。这篇文章不会教你任何代码,但它是机器学习过程的一个综合案例,包括数据清理、数据集分割、交叉验证和功能设计。
数据收集
在 Kaggle 上找到的数据集包含超过 445 万个实例和 28 个特征(参见参考资料中的数据源)。有代表每个游戏比赛 Id、代表每个组的组 Id(从 1 到 4 变化)和代表每个玩家的玩家 Id。数据被格式化为每个实例作为每个玩家的赛后统计数据。特征包括在游戏中的表现,比如复活团体成员的次数、击杀次数、行走距离等。(见附录)。还有外部排名的功能,表明玩家在游戏之外的表现。在 0 到 1 的范围内(1 是第一名,而 0 是最后一名),每场比赛的获胜位置百分比被重新构造为最终预测类别。
我选择了游戏模式“小队”,玩家可以组成 1-4 人一组对抗其他组。原因是数据集中的许多要素都与群体绩效有关。我将每个实例转换为代表每个组,并取平均值和一些特征的标准偏差。我在每场比赛中随机保留 2 组,以比较哪组排名更高。在训练集和测试集中,我将获胜位置百分比转换为“获胜者预测”,该值显示排名较高的组,以便使其成为二元预测。我还添加了一些有意义的特征来进行比较,并以它们之间的差异作为值,如团队规模差异,杀死等级差异,步行距离差异,获得的武器数量差异。关于数据清洗,我去除了同一个游戏重复玩家、负面排名、大于 4 的小组规模等不合理的数据。我按照随机顺序分割数据集,分割比例如下:交叉验证集 70%,开发集 20%,测试集 10%。我想预测的是在每场游戏中随机抽取的两个组中,哪一组会是赢家,所以分类是基于赢家预测的。在数据清理过程之后,有 6576 个实例和 65 个特征。获胜者预测中的“第二组”和“第一组”在每个分割数据集中都占据大约 50%。
数据探索
我首先对开发集进行了探索性的数据分析,以获得对数据的自然理解。以下是一些有趣的发现。
人们更喜欢独奏还是合奏?
组 2 和组 1 的组大小分布非常相似。似乎大多数人更喜欢独自或只和一个伙伴玩游戏。
当我们积极地比赛时,我们更有可能赢吗?
由第二组的杀死等级减去第一组的杀死等级计算的杀死位置差异的分布似乎是正态分布。因此,在 Y 轴为正的图表右侧,第二组排名较低,而在 Y 轴为负的左侧,第二组排名较高。如下图所示,红色部分是第二组获胜者,蓝色部分是第一组获胜者。这张图表明,在大多数情况下,当一个团队的击杀等级高时,它更有可能获胜。
移动和隐藏哪个是更好的游戏策略?
通过第二组的步行距离减去第一组的步行距离计算的步行距离差的分布也呈现正态分布。因此,在 Y 轴为正的图的右侧,第二组比第一组走得多,而在 Y 轴为负的左侧,第二组比第一组走得少。如下图所示,红色部分是第二组获胜者,蓝色部分是第一组获胜者。这张图表说明,在大多数情况下,当一个团队行进的距离更长时,它更有可能获胜。
误差分析
我首先选择了逻辑回归,因为所有要素都是数字数据,而预测是二进制的,基于权重的模型对此很有用。对于 65 个特征,基于树的模型将是耗时的。我的基准表现如下,准确率 0.8905,Kappa 0.7809。
1。水平差异分析
我首先检查了预测游戏获胜者是第二组的实例,而实际上是第一组。我将水平差异从最大到最小排序,并查看具有相对较大特征权重的特征。我发现 walkDistanceDifference 横向差异大,特征权重相对重要。walkDistanceDifference 的计算方法是第二组的行走距离减去第一组在同一场比赛中的行走距离,因此负数意味着第二组在比赛中比第一组走得少,而正数意味着第二组走得多。这意味着走得多的那一组更有可能获胜(这在游戏设置中是有意义的,因为这可能意味着他们存活得更久)。然而,也可能有例外,一组玩得更积极,出去得更多,因此输得更快,而另一组则倾向于安全,大部分时间躲在一个地方,存活更长时间。
为了进一步解决这个问题,我还下载了 csv 文件中的预测标签,查看预测第二组获胜而第一组实际获胜的实例,然后将 walk distance 差异从最大到最小排序,以便我可以查看第二组走得更长但输掉游戏时的异常情况。
我发现的一件事是,有时第二组比第一组走得多,但第一组开车的距离更长(在游戏中他们可以选择骑一辆车,如果他们找到一辆车的话)。正如突出显示的例子所示,有许多组走的不如另一组多,但开车比另一组多得多。因此,仅测量步行距离或乘车距离可能无法很好地正确显示总行驶距离。此外,rideDistance 具有第二大水平差异。因此,这两个特点似乎是有问题的,需要进一步的代表性。
因此,我通过将步行距离和乘车距离组合作为第二组、第一组和两组之间的差异的总行驶距离,提出了 3 个新特征。
我在开发集中测试了新的特性空间,并得到了一个微不足道的改进。虽然不重要,但预测第二组的实例数量实际上减少了 5 个,并被校正为第一组。
然而,当我将它应用于交叉验证集时,它实际上降低了性能。最可能的原因是开发集中的改进是过度拟合的,它没有推广到新的数据集。
2。垂直差异分析
然后,我通过检查垂直绝对差进行了另一项误差分析。由于新的开发集在实例中引入了更多的错误,预测第一组,但实际上是第二组,我的目标是找出这两组实例看起来如何彼此相似。我发现 1-KillPlace 特征具有较小的垂直差异和较大的特征权重。这是一个只有第一组的基于杀戮的排名。第一组获胜时的平均排名在 34 位左右,失败时在 43 位左右。这里的例外是,有时第一组输了,即使它的排名高达 34。正如我之前提到的,有时候一个团队打得更有侵略性,杀了更多的人,所以他们的杀戮排名很高,但他们也有更高的风险输掉比赛。
这里给我的一个启发是,逻辑回归擅长全局分析,但它可能会因一些极端的例外而有所偏差。我需要一种算法,它可以忽略极端的异常,一次只查看较小的数据集。决策树可能是一个很好的方法,但由于我有 68 个数字数据的特征,决策树可能需要大量的时间来建立模型。如果我能结合逻辑回归和决策树的优势呢?逻辑模型树(LMT) 将是一个很好的选择,因为它可以捕捉非线性模式和更高的方差。所以我尝试使用 LMT 并比较这两种算法的结果,我在开发集上有了显著的改进。
我在交叉验证集上应用了该模型,并取得了显著的改进。
3。合奏
由于 boosting 将特别检查以前的模型在迭代过程中分类错误的实例,我认为这是一个提高我的例子的准确性的好方法。所以我在开发集上用 LMT 的分类器尝试 AdaBoost,然而,性能降低了。
由于我的特征空间相对复杂,我的下一步探索是减少可能不是好指标的特征。我尝试了 AttributeSelectedClassiflier,用主成分作为赋值器。使用主成分的原因是为了减少特征空间的维数,同时保留尽可能多的信息。最后,性能也降低了。
我还尝试了 CfsSubsetEvaluator,因为我拥有的很多特性都是相互关联的,比如 killPlace 和 KillPoints。这个赋值器将帮助我有选择地保留与类相关的有用特性,但不重复其他特性。事实证明,性能也没有比我的基线更好。
我会尝试的另一个好的赋值器是 SVMAttributeEvaluator,因为它是一个反向消除方法,对我的大特征空间有好处,但是,Weka 和 Lightside 不提供这个选项。
4。特征空间评估
除了我之前尝试的包装器方法之外,我还想探索使用过滤器方法是否可以提高性能,因为它允许我独立地选择算法之外的特性。
我使用了 AttributeSelectedEvaluator 和主成分作为评估器。三种不同的设置是原始特征空间(68 个特征)、40 个特征和 20 个特征。我做了一个实验来测试三个特征空间。但是这两个新的特征空间实际上降低了性能。我还测试了其他评估者,得到了相同的结果,所以我决定保持特征空间不变。
调谐过程
我想调整 LMT 算法的两个参数。对于 minNumberInstances,缺省值是 15,我想测试 50。我想知道,通过添加更多节点被视为分裂的实例,是否会提高每个节点的准确性,从而提高整体性能。对于 boostingIterations,默认值为-1,表示没有迭代。我想测试 3,看看它是否提高了分类精度。
因此,我测试的四个设置如下:(1)节点被认为分裂的最小实例数为 15,提升迭代次数为-1(意味着不迭代),(2)实例数 50,提升迭代次数-1,(3)实例数 15,提升迭代次数 3,(4)实例数 50,提升迭代次数 3。请注意,设置(1)是默认设置。我用准确率来衡量性能。
第一阶段:
(1)90.81(2)90.81(3)91.05(4)91.05
设置(3)是最佳设置,因为它具有最高的准确率,并且比(4)简单。
第三阶段:
根据阶段 1,设置(3)是最佳设置。在第三阶段,我也选择了设置(3)作为每个折叠的最佳设置。在这种情况下,我没有运行任何重要的测试,也没有证据表明优化是值得的。
似乎每个节点上实例的最小权重对模型性能没有太大影响。但是,增加迭代次数可能有助于提高多次尝试的准确性。
在一个全新的数据集上,如果我使用设置(3),我估计性能大约为 91.66,因为它是 5 倍测试性能的平均值。
最终评估
最后,我使用 LMT 在交叉验证集上训练了一个模型,设置(3)实例数为 15,增加迭代次数为 3。在添加了来自错误分析的 3 个新特征之后,我保留了特征空间。我从最终测试集中获得的最终性能是 0.9179 的准确率,这接近于我在调优过程中的估计,Kappa 是 0.8359。
Tree View
反射
通过观察该树,该模型从步行差开始,并在一些点上在骑行距离和旅行距离差处分裂,这证明了我在误差分析期间新添加的特征的重要性。尽管一些节点在仅与其中一个组相关的特征处分裂,例如组 2-killStreaks,但是许多其他节点使用两个组的差异,甚至赢点的标准偏差。这也显示了保留原始特征以及添加组合特征的有用性。根据主树选取的特征,要赢得游戏,移动距离、杀戮能力和群体成员生存能力的方差是重要因素。一般来说,我们玩得越有侵略性,也就是说频繁移动和杀死更多的人,我们就越有可能赢。
在这个项目中,我经历了误差分析,包括水平差异分析,垂直差异分析,集成算法和特征空间评估,以及调整过程。最有帮助的步骤是观察特征空间并手动执行特征工程。选择适合数据的正确算法也很重要。在我的例子中,我结合了回归模型和树模型的优点,回归模型擅长将线性模型拟合到数字数据中,树模型提供了更多的方差并补偿了非线性的极限。我能够在交叉验证集上显著提高模型性能,并在最终测试集上达到 91.79%的分类准确率。
我的项目分析有一些限制。首先,我只测试了一种游戏模式下的数据,结果可能不适用于现实世界中的所有游戏模式。第二,我没有预测排名,而是选择将项目范围转向二进制分类。我从一场比赛中随机挑选了两组,并试图预测谁会赢得比赛。在这种情况下,通过移除其他组的表现,我移除了一些涉及的方差和因素,这些方差和因素也可能影响对现实世界中游戏结果的预测。
总之,我能够达到我的目标,预测 PUBG 游戏的赢家,并找出一些可以影响游戏结果的重要行为。为了进一步评估,可以引入来自其他游戏模式的数据,并且可以测试其他类型的预测。
如何在 Python 中检查你的回归模型的质量?
线性回归在统计学习领域根深蒂固,因此必须检查模型的“拟合优度”。本文向您展示了在 Python 生态系统中完成这项任务的基本步骤。
为什么它很重要(为什么你可能会错过它)
尽管对最新深度神经网络架构的复杂性和 xgboost 在 Kaggle 竞赛上的惊人能力有很多谈论和吹毛求疵,但对于行业的很大一部分来说,使用数据驱动分析和机器学习(ML)技术,回归仍然是他们日常使用的首选。
参见 2018-19 年的 KDnuggets 民意调查结果(作者马修·梅奥)。
[## 2018 年、2019 年使用的顶级数据科学和机器学习方法
在最新的 KDnuggets 民意调查中,读者被问到:你对哪些数据科学/机器学习方法和算法…
www.kdnuggets.com](https://www.kdnuggets.com/2019/04/top-data-science-machine-learning-methods-2018-2019.html)
回归技术有多种形式——线性、非线性、泊松、基于树的——但核心思想几乎保持一致,可以应用于金融、医疗保健、服务业、制造业、农业等领域的各种预测分析问题。
线性回归是一项基本技术,它深深植根于久经考验的统计学习和推理理论,并为现代数据科学管道中使用的所有基于回归的算法提供支持。
然而,线性回归模型的成功还取决于一些基本假设关于它试图建模的基础数据的性质。要简单直观地理解这些假设,
当我们使用线性回归来模拟反应和预测因子之间的关系时,我们做了一些假设…
www.jmp.com](https://www.jmp.com/en_us/statistics-knowledge-portal/what-is-regression/simple-linear-regression-assumptions.html)
因此,通过验证这些假设是否“合理地”得到满足来检查您的线性回归模型的质量是极其重要的(通常使用可视分析方法来检查假设,这取决于解释)。
问题在于,检查模型质量通常是数据科学任务流中优先级较低的一个方面,其他优先级占主导地位,如预测、缩放、部署和模型调整。
这个论断听起来是不是太大胆了?有一个简单的测试。
在一个行业标准的基于 Python 的数据科学堆栈中,你有多少次使用 Pandas、NumPy 、 Scikit-learn ,甚至 PostgreSQL 进行数据获取、争论、可视化,并最终构建和调整你的 ML 模型?我想,很多次了吧?
现在,你已经多少次使用 statsmodels 库通过运行拟合优度测试来检查模型了?
在基于 Python 的数据科学学习课程中,这样做是很常见的,
“是不是少了点什么”这个问题的答案是肯定的!
通常,有很多关于正则化、偏差-方差权衡或可扩展性(学习和复杂性曲线)图的讨论。但是,围绕以下情节和列表有足够的讨论吗?
- 残差与预测变量图
- 拟合与残差图
- 归一化残差的直方图
- 归一化残差的 Q-Q 图
- 残差的夏皮罗-维尔克正态性检验
- 残差的库克距离图
- 预测特征的方差膨胀因子(VIF)
很明显,对于机器学习管道的这一部分,你必须戴上统计学家的帽子,而不仅仅是数据挖掘专家。
Scikit-learn 的问题
可以有把握地假设,大多数由统计学家转变为数据科学家的 T21 定期对他们的回归模型进行拟合优度测试。
但是,对于数据驱动的建模,许多年轻的数据科学家和分析师严重依赖于像 Scikit-learn 这样的以 ML 为中心的包,尽管这些包是一个令人敬畏的库,并且实际上是机器学习和预测任务的银弹,但是它们不支持基于标准统计测试的简单快速的模型质量评估。
因此,除了使用像 Scikit-learn 这样的以 ML 为中心的库之外,良好的数据科学管道还必须包括一些标准化的代码集,以使用统计测试来评估模型的质量。
在本文中,我们展示了这样一个多元线性回归问题的标准评估集。我们将使用statsmodels
库进行回归建模和统计测试。
线性回归假设和关键视觉测试的简要概述
假设
线性回归模型需要测试的四个关键假设是:
- 线性:因变量的期望值是每个独立变量的线性函数,保持其他变量不变(注意,这并不限制您使用独立变量的非线性变换,即您仍然可以建模 f(x) = ax + bx + c ,使用 x 和 x 作为预测变量。
- 独立性:误差(拟合模型的残差)相互独立。
- 同方差 (恒定方差):误差的方差相对于预测变量或响应是恒定的。
- 正态:误差由正态分布产生(均值和方差未知,可从数据中估计)。注意,与上面的三个不同,这不是执行线性回归的必要条件。然而,如果不满足这一假设,就不能很容易地计算出所谓的“置信度”或“预测”区间,因为无法使用与高斯分布相对应的众所周知的解析表达式。
对于多元线性回归,从统计推断的角度判断多重共线性也很关键。这种假设假设预测变量之间的线性相关性最小或没有线性相关性。
异常值也可能是一个影响模型质量的问题,因为它对估计的模型参数具有不成比例的影响。
这是一个视觉回顾,
有哪些情节可以查?
因此,误差项非常重要。
但是有一个坏消息。不管我们有多少数据,我们永远无法知道真正的错误。我们只能对产生数据的分布进行估计和推断。
因此,真实误差的代理是残差,残差就是观测值和拟合值之差。
底线-我们需要绘制残差图,检查它们的随机性质、方差和分布,以评估模型质量。这是线性模型拟合优度估计所需的视觉分析。
除此之外,多重共线性可以通过相关矩阵和热图进行检查,数据中的异常值(残差)可以通过所谓的库克距离图进行检查。
回归模型质量评估示例
这个例子的完整代码报告可以在作者的 Github 中找到。
我们正在使用来自 UCI ML 门户网站的混凝土抗压强度预测问题。混凝土抗压强度是龄期和成分的高度复杂的函数。我们能从这些参数的测量值预测强度吗?
检查线性的变量散点图
我们可以简单地检查散点图,以便直观地检查线性假设。
用于检查多重共线性的成对散点图和相关热图
我们可以使用 seaborn 库中的 pairplot 函数来绘制所有组合的成对散点图。
此外,如果数据加载到 Pandas 中,我们可以很容易地计算关联矩阵,并将其传递到 statsmodels 的特殊绘图功能,以热图的形式显示关联。
使用 statsmodel.ols()函数进行模型拟合
主模型拟合是使用 statsmodels 完成的。OLS 方法。这是一个令人惊叹的线性模型拟合实用程序,感觉非常像 R 中强大的“lm”函数。最棒的是,它接受 R 风格的公式来构建完整或部分模型(即涉及所有或部分预测变量)。
你可能会问,在大数据时代,为什么要创建一个局部模型而不把所有数据都放进去呢?这是因为数据中可能存在混杂或隐藏的偏差,只能通过 控制某些因素 来解决。
在任何情况下,通过该模型拟合的模型摘要已经提供了关于该模型的丰富的统计信息,例如对应于所有预测变量的 t 统计量和 p 值、R 平方和调整的 R 平方、AIC 和 BIC 等。
残差与预测变量图
接下来,我们可以绘制残差与每个预测变量的关系图,以寻找独立性假设。如果残差围绕零个 x 轴均匀随机分布,并且不形成特定的集群,则假设成立。在这个特殊的问题中,我们观察到一些集群。
拟合与残差图,用于检查同质性
当我们绘制拟合响应值(根据模型)与残差的关系时,我们清楚地看到残差的方差随着响应变量幅度的增加而增加。因此,该问题不考虑同质性,可能需要某种变量变换来提高模型质量。
归一化残差的直方图和 Q-Q 图
为了检查数据生成过程的正态性假设,我们可以简单地绘制归一化残差的直方图和 Q-Q 图。
此外,我们可以对残差进行夏皮罗-维尔克检验来检查正态性。
使用库克距离图的异常值检测
库克距离本质上衡量的是删除一个给定观察的效果。需要仔细检查 Cook 距离较大的点是否为潜在的异常值。我们可以使用来自 statsmodels 的特殊异常值影响类来绘制厨师的距离。
方差影响因素
此数据集的 OLS 模型摘要显示了多重共线性的警告。但是如何检查是哪些因素造成的呢?
我们可以计算每个预测变量的方差影响因子。它是有多个项的模型的方差除以只有一个项的模型的方差的比率。同样,我们利用了 statsmodels 中的特殊异常值影响类。
其他残留诊断
Statsmodels 有各种各样的其他诊断测试来检查模型质量。你可以看看这几页。
总结和思考
在本文中,我们介绍了如何在线性回归中添加用于模型质量评估的基本可视化分析——各种残差图、正态性测试和多重共线性检查。
人们甚至可以考虑创建一个简单的函数套件,能够接受 scikit-learn 类型的估计器并生成这些图,以便数据科学家快速检查模型质量。
目前,尽管 scikit-learn 没有用于模型质量评估的详细统计测试或绘图功能,但 Yellowbrick 是一个有前途的 Python 库,它可以在 scikit-learn 对象上添加直观的可视化功能。我们希望在不久的将来,统计测试可以直接添加到 scikit-learn ML 估计量中。
喜欢这篇文章吗?成为 中等成员 继续 无限制学习 。如果你使用下面的链接,我会收到你的一部分会员费, 而不增加你的额外费用 。
[## 通过我的推荐链接加入 Medium—Tirthajyoti Sarkar
作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…
medium.com](https://medium.com/@tirthajyoti/membership)
你怎么知道你有足够的训练数据?
©pathdoc/AdobeStock
最近有一些关于数据是否是新石油的争论。不管是哪种情况,为我们的机器学习工作获取训练数据可能是昂贵的(在工时、许可费、设备运行时间等方面)。).因此,机器学习项目中的一个关键问题是确定需要多少训练数据来实现特定的性能目标(即,分类器准确性)。在这篇文章中,我们将对从回归分析到深度学习的领域中关于训练数据大小的经验和研究文献结果进行快速而广泛的回顾。训练数据大小问题在文献中也被称为*样本复杂度。*具体来说,我们将:
提出回归和计算机视觉任务的经验训练数据大小限制。
给出统计检验的期望功效,讨论如何确定样本量。这是一个统计题目;但是,考虑到它与机器学习中确定训练数据大小的密切关系,将其包括在此讨论中是合适的。
呈现统计理论学习的结果,关于什么控制训练数据的大小。
提供以下问题的答案:随着训练数据的增长,性能会继续提高吗?深度学习的情况下会发生什么?
我们将提出一种方法来确定分类中的训练数据大小。
最后,我们将提供一个问题的答案:训练数据的增长是处理不平衡数据的最好方法吗?
训练数据量的经验界限
让我们首先根据我们使用的模型类型,讨论一些广泛使用的经验方法来确定训练数据的大小:
回归分析:根据 1/10 的经验法则,我们需要每个预测因子 10 个病例[3]。在[4]中讨论了不同的版本,例如 1/20,以解决回归系数收缩。一个令人兴奋的,最近开发的,二元逻辑回归的变化是在[5]中提出的。具体来说,作者通过考虑预测变量的数量、总样本量和正样本/总样本量的分数来估计训练数据量。
计算机视觉:对于使用深度学习的图像分类,经验法则是每类 1000 张图像,如果使用预先训练的模型,这个数字可以显著下降[6]。
假设检验样本量的确定
假设检验是数据科学家可以用来检验人群之间的差异、确定新药效果等的工具之一。在这种情况下,考虑到检验的功效,通常需要确定样本量。
让我们考虑这个例子:一家科技巨头搬到了 A 城,那里的房价大幅上涨。一名记者想知道公寓的新均价是多少。给定 60K 处的公寓价格的标准差和 10K 可接受的误差幅度,有 95%的置信度时,应该平均多少公寓销售价格?对应的公式如下所示;n 是他将需要的样本大小,1.96 是来自标准正态分布的数字,对应于 95%的置信度
Estimation of sample size
根据上述等式,记者需要考虑大约 138 套公寓的价格。
上述公式根据具体的测试而变化,但它将始终包括置信区间、可接受的误差幅度和标准偏差的度量。关于这个话题的很好的讨论可以在[7]中找到。
训练数据量的统计学习理论
我们先来介绍一下著名的 Vapnik-Chevronenkis (VC)维度[8]。VC 维是模型复杂性的度量;模型越复杂,其 VC 维越高。在下一段中,我们将介绍一个根据 VC 指定训练数据大小的公式。
首先,让我们看一个经常用来显示 VC 是如何计算的例子:想象我们的分类器是一个 2-D 平面中的直线,我们有 3 个点需要分类。无论这 3 个点的正/负组合可能是什么(全部正,2 个正,1 个正,等等。),一条直线就能正确地将阳性和阴性样本分类/分开。因此,我们说线性分类器可以粉碎任何点,因此,它的 VC 维至少是 3。并且因为我们可以找到不能被线精确分开的 4 个点的例子,我们说线性分类器的 VC 精确地是 3。事实证明,训练数据大小 N 是 VC 的函数[8]:
Estimation of training data size from the VC dimension
其中 d 是失败的概率,而ε是学习误差。*因此,如[9]所述,学习所需的数据量取决于模型的复杂程度。*这种做法的一个副作用是众所周知的神经网络对训练数据的贪婪,因为它们非常复杂。
随着训练数据的增长,性能会继续相应提高吗?深度学习的情况下会发生什么?
Figure 1.
图 1 显示了在传统机器学习[10]算法(回归等)的情况下,机器学习算法的性能如何随着数据量的增加而变化。)而在深度学习的情况下[11]。具体来说,对于传统的机器学习算法,性能按照幂律增长,然后达到平稳状态。关于深度学习,有大量正在进行的研究,关于性能如何随着数据量的增加而扩展[12]-[16],[18]。图 1 显示了这项研究的当前共识;对于深度学习,根据幂定律,性能随着数据大小不断增加。例如,在[13]中,作者使用深度学习技术对 3 亿张图像进行分类,他们发现性能随着训练数据大小的增加而呈对数增长。
让我们在这里包括一些值得注意的,与上述相反的,在深度学习领域的结果。具体来说,在[15]中,作者将卷积网络用于 1 亿幅 Flickr 图像和说明的数据集。关于训练数据大小,他们报告说性能随着数据大小的增加而提高;然而,在 5000 万张图像之后,它就稳定下来了。在[16]中,作者发现图像分类精度随着训练数据大小而增加;然而,在某个模型依赖点之后,最初也增加的模型稳健性开始下降。
确定分类中训练数据大小的方法
这是基于众所周知的学习曲线,它通常是误差与训练数据大小的关系图。[17]和[18]是了解机器学习中学习曲线以及它们如何随着偏差或方差的增加而变化的极好参考。Python 在 scikit-learn 中提供了一个学习曲线函数[17]。
在分类中,我们通常使用稍微不同形式的学习曲线;这是分类精度与训练数据大小的关系图。确定训练数据大小的方法很简单:确定您的领域的学习曲线的确切形式,然后,只需在图上找到所需分类精度的对应点。例如,在参考文献[19]、[20]中,作者在医学领域使用学习曲线方法,并用幂律函数来表示:
Learning curve equation
其中 y 是分类精度,x 是训练集,b1,b2 对应学习率和衰减率。参数根据问题域而变化,并且它们可以使用非线性回归或加权非线性回归来估计。
训练数据的增长是处理不平衡数据的最好方法吗?
© hin255/AdobeStock
这个问题在[9]中有所论述。作者提出了一个有趣的观点;*在不平衡数据的情况下,准确度不是分类器性能的最佳衡量标准。*原因很直观:让我们假设负类是主导类。那么我们就可以达到很高的准确率,通过预测大部分时间是负面的。相反,他们提出精度和召回率(也称为敏感度)是衡量不平衡数据性能的最合适的方法。除了上述明显的准确性问题之外,作者声称测量精度对于不平衡域来说本质上更重要。例如,在医院的报警系统[9]中,高精度意味着当警报响起时,很有可能确实是某个病人出现了问题。
有了适当的性能度量,作者比较了包不平衡学习[21] (Python scikit-learn 库)中的不平衡校正技术与简单使用更大的训练数据集。具体来说,他们在一个包含 50,000 个样本的药物发现相关数据集上使用了带有不平衡校正技术的 K-最近邻,然后在大约 100 万个样本的原始数据集上与 K-NN 进行了比较。上述软件包中的不平衡校正技术包括欠采样、过采样和集成学习。作者将实验重复了 200 次。他们的结论简单而深刻:就测量精度和召回率而言,任何失衡纠正技术都无法与添加更多训练数据相提并论。
至此,我们已经结束了我们的快速参观。下面的参考资料可以帮助你更多地了解这个主题。感谢您的阅读!
参考文献
[1] 世界上最有价值的资源不再是石油,而是数据,https://www . economist . com/leaders/2017/05/06/The-worlds-Most-valued-Resource-Is-again-Oil-But-Data2017 年 5 月。
[2] Martinez,A. G .,不,数据不是新油,https://www.wired.com/story/no-data-is-not-the-new-oil/2019 年 2 月。
[3] Haldan,m .,需要多少训练数据?,https://medium . com/@ Malay . haldar/how-much-training-data-do-you-need-da 8 EC 091 e 956
[4]维基百科**,十分之一法则**,https://en.wikipedia.org/wiki/One_in_ten_rule
[5] Van Smeden,m .等,二元 Logistic 预测模型的样本量:超出每个变量标准的事件,医学研究中的统计方法,2018。
[6]皮特·沃顿的博客,训练一个神经网络需要多少图像?,https://Pete warden . com/2017/12/14/how-many-images-do-you-neural-network-training/
[7] Sullivan,l .,功率和样本大小分布,http://SPH web . bumc . bu . edu/otlt/MPH-Modules/BS/BS 704 _ Power/BS 704 _ Power _ print . html
[8]维基百科, Vapnik-Chevronenkis 维度,https://en . Wikipedia . org/wiki/VAP Nik % E2 % 80% 93 chervonenkis _ Dimension
[9] Juba,b .和 H. S. Le,**精确召回与准确性以及大数据集的作用,**人工智能促进协会,2018 年。
[10]朱,x .等,我们需要更多的训练数据吗?https://arxiv.org/abs/1503.01508,2015 年 3 月。
[11] Shchutskaya,v .,计算机视觉市场最新趋势,https://indata labs . com/blog/data-science/Trends-Computer-Vision-software-Market?cli_action=1555888112.716
[12] De Berker,a .,预测深度学习模型的性能,https://medium . com/@ archydeberker/Predicting-the-Performance-of-Deep-Learning-Models-9cb 50 cf 0 b 62 a
[13]孙,c .等,再论深度学习 时代,2017 年 8 月。
[14]赫斯提,j .,深度学习缩放是可预测的,从经验上来说,https://arxiv.org/pdf/1712.00409.pdf
[15]朱林,一个**。,从大量弱监督数据中学习视觉特征,**【https://arxiv.org/abs/1511.02251】T2,2015 年 11 月。
[16]雷,s .等,训练数据如何影响用于图像分类的神经网络的精度和鲁棒性,会议,2019。
[17] 教程:Python 中机器学习的学习曲线,https://www . data quest . io/blog/Learning-Curves-Machine-Learning/
[18] Ng,r .,学习曲线,https://www.ritchieng.com/machinelearning-learning-curve/
[19]Figueroa,R. L .等人,预测分类性能所需的样本量,BMC 医学信息学和决策制定,12(1):8,2012。
[20] Cho,j . et al .训练一个医学图像深度学习系统需要多少数据才能达到必要的高精度?,https://arxiv.org/abs/1511.06348,2016 年 1 月。
[21]g .勒迈特、f .诺盖拉和 C. K .阿里达斯,不平衡学习:一个 Python 工具箱来解决机器学习中不平衡数据集的诅咒,https://arxiv.org/abs/1609.06570
你如何衡量你的客户流失预测模型是否良好?
准确性是一个关键的衡量标准,管理层在批准将模型投入生产之前会查看准确性。本文讨论了度量什么和如何度量的实际方面。
测量精度时需要考虑的两个要点
- 测量准确度时使用的数据不应在培训中使用。您可以将数据分成 80%和 20%。使用 80%进行训练,使用剩余的 20%进行预测,并将预测值与实际结果进行比较,以确定准确性
- 一个结果掩盖了另一个结果。比如说你 95%的交易都不是诈骗。如果算法标记每一笔交易不是欺诈,它的正确率为 95%。所以准确率是 95%,但 5%的误差会让你倾家荡产。在这些场景中,我们需要处理其他指标,如敏感性和特异性等。我们将在本文中以实用的方式介绍这一点。
问题定义
这个预测性问题的目标是确定哪些客户会流失。数据集有 1000 行。使用 80%的样本(800 行)进行训练,使用 20%的数据来度量准确性。(200 行)。假设我们已经用 800 行训练了模型,并在 200 行上进行预测。
标记的实际流失结果
为了直观地解释这个问题,假设我的测试数据有 25 个客户。
在这 25 个客户中,15 个不会流失(绿色),10 个已经流失(红色)。这些是实际的结果。现在,让我们应用训练好的模型来预测谁会流失。
预测的流失结果已标记
这些是预测的结果。这个算法犯了很多错误。
它正确地预测了一些,也错误地预测了一些。例如,它将一些会流失的客户标记为不会流失,也将一些不会流失的客户标记为会流失的人。预测错误的用 x 标记。
预测结果统计
为了更容易理解,我在每组中直观地划分了预测,这样我们就知道哪些预测是正确的,哪些是错误的。
- 它准确地预测了 8 个会流失的客户。(这叫真正)
- 它错误地预测了 2 个将流失的客户为不流失。(这叫做假阳性)
- 它预测了 11 个不会正确流失的客户(这被称为真阴性)
- 它错误地预测了 4 个不会流失的客户。(这叫做假阴性)
记住这些流行语的方法是…假阳性被错误地预测为阳性(又名错误地预测为流失),假阴性被错误地预测为阴性(又名错误地预测为不会流失)。
感兴趣的精度测量
常见的问题是:
- 整体准确度如何?
- 模型能够标记为将流失的客户占实际流失客户的百分比是多少?
- 模型能够标记为不会流失的实际不会流失的客户百分比是多少?
- 有百分之多少的客户预测客户会真正流失?
- 预测不会流失但实际上不会流失的客户比例是多少?
1.整体准确度如何?
正确预测的总数/总数= (11 + 8) / 25 = 76%
2.该模型能够标记为“将流失”的客户占实际流失客户的百分比是多少
我们有 10 个不满意的客户,我们正确预测了 8 个。所以比率= 8/10 = 80%
这也被称为敏感性或阳性率或回忆。由于该度量不包括错误预测的内容,因此该度量对于不平衡的类往往是有偏差的。
一个 100%敏感的模型将识别所有被搅动的顾客。很少有模型是 100%敏感的。灵敏度为 85%的模型将识别 85%的流失客户,但会错过 15%的流失客户。高度敏感的模型有助于排除预测不会流失的客户。逻辑是,它在预测谁会流失方面非常准确。这意味着,如果它说这个客户不会流失,我们可以潜在地排除他们。
3.实际上“不会流失”的客户中,模型能够标记为“不会流失”的客户比例是多少
我们有 15 个非搅动客户,我们正确预测了 11 个。所以比率= 11/15 = 73.3%
这也被称为特异性或真阴性率。由于该度量不包括错误预测的内容,因此该度量对于不平衡的类往往是有偏差的。
100%特异性的模型将识别所有非搅动的客户。很少有模型是 100%特异的。具有 90%特异性的模型将识别 90%的非搅动顾客,但是将错过 10%的非搅动顾客。一个高度特异性的模型对于识别将会流失的客户是有用的。逻辑是,它在预测谁不会流失方面非常准确。这意味着,如果它说这个客户会流失,它更值得信赖。
4.预测会流失的客户中有多少人实际流失了?
我们有 12 个客户被预测为被搅动的客户(全部为红色,包括 X ),我们正确预测了 8 个(红色,不包括 X)。所以比率= 8/12 = 67%
这意味着 100 个预测会流失的客户中,只有 67 个会流失,其余 33 个不会流失。
这也称为精度或正预测值。
5.预测不会流失的客户实际上没有流失的比例是多少?
我们有 13 个客户(包括 X 的绿色圆圈)被预测为“未搅动”客户,我们正确预测了 11 个(没有 X 的绿色圆圈)。比率= 11/13 = 85 %
这意味着 100 个预测不会流失的客户中,85 个不会流失,其余 15 个不会流失。
这也称为负预测值
用简单的术语快速总结这些措施
- 该模型将抓住 80%的真正会流失的客户。
- 该模型将抓住 73%实际上不会流失的客户
- 总体准确率为 76%
- 在它预测会流失的客户中,67%的人实际上会流失
- 在预测不会流失的客户中,73%的客户实际上不会流失
结果
这是一个相当不错的模型。你能够吸引 80%会流失的客户。你肯定少了 20%。在所有被预测会流失的客户中,你有 27%被错误地预测为流失。如果目标是与客户接触并交谈,以防止他们搅动,那么与那些被错误标记为“没有搅动”的人接触是可以的,因为这不会导致任何负面问题。这可能会让他们因为得到额外的爱而更加快乐。这是一种从第一天起就能增加价值的模式。请注意,将这些信息分发给正确的受众并允许用户采取行动是非常重要的,我们将在后续文章中对此进行介绍。
神经网络如何进行预测?
最近,神经网络吸引了很多注意力。它们是由相互连接的节点组成的计算系统,与大脑的功能相似。该系统对大型原始数据集进行聚类,通过发现模式,他们可以解决非常复杂的问题,对输入进行分类,甚至做出困难的预测。最神奇的部分?他们有永不停止学习的能力!
在神经网络的核心,一个神经网络的基本构件,是一个感知器。感知器是必要的,因为它们将复杂的输入分解成更小、更简单的部分。如果你要拍一张脸的照片并把它分解,你很可能会想到常见的面部特征:眼睛、鼻子、眉毛、嘴巴、耳朵等等。每一个都可以是一个单层的感知器。在下一层中,这些要素可以分解成更小的要素。例如,左眼和右眼、上唇和下唇,这些特征可以在另一层中分解成更小的特征,如瞳孔和虹膜,或睫毛等。这些特征中的每一个都可以是一个感知器,在将其分解成最小的特征后,它将拥有一张脸的积木。
对于此示例,图像分类将用于显示神经网络如何进行预测的更具描述性的解释。神经网络可以从拍摄一张脸的照片开始,将其分解为某些特征,并通过告诉下一层特征是否存在来重建它。最后,根据传递了多少个 1(或真实)特征,神经网络可以通过告诉它看到了多少个特征与组成一张脸的多少个特征进行预测。如果看到大部分特征,那么它会将其归类为人脸。否则,它将被归类为不是脸(注意它如何不被归类为其他东西,它要么是脸,要么不是脸,真或假)。
不过要小心,感知器和神经元不是一回事。虽然它们听起来一样,但神经元不同于感知器。感知器是一个具有加权输入和偏差的单元,它产生二进制输出。神经元是人工神经网络中感知器的概括。神经元仍然接受加权输入和偏差,但这是它不同于感知器的地方:它产生的输出是 0 到 1 之间的分级值。请注意,使用 sigmoid 激活(输出)函数,节点偏向于选择接近 0 或 1 的极值,这使得它的功能非常类似于感知器。
总的来说,神经网络是一个非常简单的想法,但大型网络可以产生惊人的结果。每个神经元负责对单个特征进行分类,并依靠前一个神经元正确完成工作,以便自己做出准确的决定。与任何优秀的团队非常相似,一般来说,他们重视信任和团队合作高于一切。难怪他们在一起那么厉害。
伯特现在是谷歌搜索的一部分,所以让我们了解它是如何推理的
在由 Google AI 发布大约一年后,BERT 现在是行业中 NLP 任务的首选模型框架。当发布时,它在各种 NLP 基准上取得了最先进的结果。
它之所以被称为框架,是因为 BERT 本身不是一个模型,但用作者自己的话说,它是一种“预先训练语言表示的方法,这意味着我们在大型文本语料库(如维基百科)上训练一个通用的“语言理解”模型,然后将该模型用于我们关心的下游 NLP 任务(如问答)。”
在这篇博文中,当我们提到 BERT 模型时,我们指的是基于 BERT 架构并使用预先训练的权重针对特定任务进行微调的模型。但是和大多数深度学习模型一样,它是一个黑箱。一些论文试图解释这一现象,并创造了一个被 HuggingFace 的人们称为“伯特学”的领域。在这篇博文中,我们将尝试使用一种称为 综合梯度 的归因方法来解释一个 BERT 模型在 IMDB 评论数据集上的决策。
更新:Google 现在使用 BERT 进行搜索 ,能够更好的理解自然语言查询。
但是伯特有什么特别之处呢?
冒着过度简化 BERT 方法的风险,它基本上需要训练一个神经网络来学习“语言”(请不要从字面上理解),然后这个网络被用作主干来执行各种 NLP 任务。这与计算机视觉中的迁移学习没有太大的不同,在计算机视觉中,你在一个通常擅长“视觉”(同样,不完全是人类意义上的)的主干网络上为特定任务进行微调。
它之所以具有革命性,是因为它是第一个深度双向的语言表示,这意味着它会查看给定单词之后的单词,而不仅仅是前面的单词。人们认为,这是它优于单向表示的原因。
此外,它的架构是基于 transformer 的,这有助于它衡量单词在句子中出现的上下文。所有这些因素加在一起在某种程度上解释了它的成功。它的架构已经在许多博客文章中详细解释过了,这里有一篇由 Jay Alammar 写的文章,我推荐。
那么为什么解释伯特呢?
由于上面提到的所有要点,基于 BERT 的模型正迅速成为许多公司 NLP 的首选解决方案,无论是内部建模任务还是规模不是问题的生产场景。鉴于 BERT 模型在基准数据集和任务上的卓越准确性,我们为什么要解释它呢?
作为一名 ML 从业者,重要的是要理解模型是否真的发展了语言理解,或者只是学习了简单/虚假的相关性;已经有人怀疑 到底有多聪明 。当我们试图在 NLP 方面取得进一步进展时,这一点尤为重要。
作为产品使用 BERT 服务客户的企业或产品所有者,理解它很重要,因为您不希望它歧视客户或被一个对立的例子所愚弄。
在这篇文章的其余部分,我们使用特征属性来阐明 BERT 模型是如何推理的。
但是首先,什么是定语?
属性是分配给每个特征的分数,与该特征对预测的贡献成比例。归因可以是积极的,也可以是消极的,这取决于该特征具有积极的还是消极的影响。
现在,如果我们想给一个特征赋予重要性,它必须在反事实的背景下进行。反事实是你想要比较的另一个 X。反事实隐含在解释中。例如,当你试图向运行缓慢的火车解释上班迟到时,你是在间接地与火车准点运行的日子进行比较。所以你的反事实是火车准时运行的一天。现在一个反事实可以是一个单独的例子,也可以是一个分布(一组例子),无论哪种方式都有一些强有力的观点。出于我们的目的,我们将考虑点反事实。
现在我们通过一个实际的例子来了解一下,用一个简单的线性回归模型。该模型接受 N 个输入,并将它们映射到一个标量输出。给定输入 X1 =(x1,x2,… xn)上的模型函数(f)描述为 f(x1,x2,…xn)= A0+a1 * X1+a2 * x2+a3 * x3+…+an * xn。在上面的例子中,对于反事实 X ', 来说,特征 x1 的属性是*a1 (x1—x1 ')。如果属性之和等于 f(X1)—f(X’),则称该归属方法满足“*效率”*公理。
好了,那么什么是综合渐变归因法呢?
综合渐变 是谷歌开发的一种基于渐变的归因方法。它与其他基于梯度的方法的不同之处在于,它满足某些公理(例如,上面定义的效率是公理之一),并且等价于计算非原子游戏的 Aumann-Shapley (Aumann,R. J .和 Shapley,L. S .值。普林斯顿大学出版社,普林斯顿,新泽西州,1974 年)价值的特点。
为了简洁起见,我们在这里不讨论奥曼-沙普利值的数学。综合梯度是一种归因方法,它需要一个反事实来明确说明归因。反事实被作者称为“基线”。论文作者推荐的标准基线是没有信息或信号的基线,理想情况下具有中性预测。例如,视觉模型的黑色图像或 NLP 模型的空文本。我们将使用空白文本作为基线。
车型:
在这里,我们将旨在解释在 IMDB 电影评论数据集上微调的 BERT 基本模型的预测,了解它在定制电影评论上的推理能力,并将其与在相同数据集上训练的 BiLSTM 模型进行比较。
- 所用的 BERT 模型是基本的无案例模型,使用从这里是改编的代码进行微调,没有任何深度超参数优化。在坚持的测试集上,它达到了大约 90%的准确率。
- BiLSTM 模型是使用从这里的改编的代码来训练的。它实现了约 85%的测试集精度,同样,没有任何超参数优化。
最后,说明:
让我们通过一些简单的、可信的单行评论来探究模特的行为。随着我们的继续,我们会增加一些复杂性,但是真的没有什么是孩子不能处理的。最后,我们将从模型的角度,在一个“真实”的电影评论上测试这些模型。
我们将使用 提琴手 (充分披露:我为提琴手工作)来完成这项任务。我们将把 BERT 模型和电影评论数据导入 Fiddler,并使用它的 NLP 解释接口来可视化属性。出于讨论的目的,我们将主要集中在解释的定性方面。
我们举第一个例子, 【这是部好电影】 。相当明确的权利?伯特模型正确地将其认定为正面,对“好”给予最高的正面归因,对“电影”给予一定的负面归因。对“电影”的负面归因意味着,如果用空文本(我们的基线)代替“电影”,模型会给句子打更高的分数。
BiLSTM 模型对情绪的预测也是正确的,但对“这个”给予了最高的归因。这不是一个非常直观的解释,因为从人类的角度来看,“好”应该得到更多的重视。
这是一个漏洞吗?再来给 【这是部烂片】 加上若干个“这”es,模型正确识别为负面。果然,我们的直觉是正确的。预测发生了逆转,现在被标记为积极情绪!
这是一个非凡的洞见, 展示了 BiLSTM 模型是多么的易受攻击,以及解释是如何帮助暴露这个漏洞的 。然而,伯特模型并没有被这种特殊的花招所欺骗。
现在他们能处理否定吗?
是的,伯特能够预测的“这不是一部好电影”作为负面评价。它确实设法将足够多的负面归因归因于“不是 a”,以对抗正面归因于“好”。有趣的是,这可能不是人类解释他/她的思路的方式。他们不会说,句子中的“好”使得句子不太可能是否定句,这基本上是模型在这里所说的。
然而,BiLSTM 模型未能处理否定,并将其标记为积极的评论。
如果我们把“好”换成“坏”会怎么样?伯特现在给“不是”一个正值,因为现在它在“一部糟糕的电影”附近。这令人印象深刻!这表明它对否定有一个基本的理解,至少比 BiLSTM 模型好得多。
BiLSTM 模型将负值同时归因于“不是”和“不好”,因此它再次显示了在上下文理解方面的弱点。
现在让我们看看他们在更细致的评论中表现如何。
“这部电影不会浪费你的时间” 是正面评价,即使不是压倒性如此。伯特模型将其归类为负面,正面的概率几乎为零。正如我们从下面的解释中所看到的,它不能处理上下文中的“不要浪费”。
BiLSTM 模型实际上表达了一些怀疑,但也认为它是负面的。“浪费”的存在主导了它的决策。
现在让我们在一个训练集示例上测试这些模型,他们都已经看过了:
评论是 “当我在五六十年代还是个孩子的时候,任何与迪士尼有关的东西都是伟大的。发生了什么事?他们可以得到任何他们想要的男女演员,最好的时间。尽管迪斯尼资源丰富,但不知何故,他们设法把事情搞砸了。迪士尼请得起最好的编剧,最好的制片人和导演,但还是…他们把事情搞砸了!这部电影是垃圾。可悲的是,我怀疑迪士尼在他们的傲慢甚至不知道什么时候一部电影是好是坏。只是由于演员们的才华,我甚至可以给它打 3 分。”
这显然是一个负面的评论,两个模型都这样认为。BERT 模型给它一个几乎为零的正面评价机会,而 BiLSTM 模型给它一个 0.29%的正面评价机会。
伯特模型将大部分归因于评论后半部分的句子,这些句子清楚地表明了评论者对电影的看法。它对“废话”和“糟糕”之后的句号进行了大量的归因。记住,幽默的归属考虑了所有可能的相互作用,所以句号的归属是上下文相关的,与它在文本中的位置有关。我们的推测是,句号对伯特模型很重要,因为如果没有句号,句子就会继续,并且可能会有一些词来增强/淡化/维持句子中的情感。停在那里的句子有一些意义,在这种情况下是否定的。
BiLSTM 模型对大量随机单词给出了很高的否定归因,并且偏向于评论早期的单词。此评论来自训练集,因此模型可能过度拟合了它。这或许也表明,对这种 RNN 模式的长期文本理解是有局限性的。
那么,我们在这里学到了什么?
- 解释是 ML 工作流程 的重要组成部分。它们帮助我们评估模型的能力和局限性。这对于面临自由形式、开放式输入的模型尤其重要。此外,确定人工智能到底有多智能也是理论上的兴趣所在。
- 特别是关于 BERT 模型,它的解释似乎比 BiLSTM 模型更容易理解。我们承认,这可能不是两种架构的公平比较,因为一个更大、优化更好的 BiLSTM 模型的性能可能与 BERT 相当。但是,即使排除比较,这些解释本身也提供了一些证据,表明现在在 NLP 中流行的语言建模方法有一些合理性,不仅从预测准确性的角度来看,而且从模型如何获得预测的角度来看。
参考文献:
[1] Sundararajan M,Taly A 和 Yan Q,深度网络的公理化归属 (2017),ICML 17 年第 34 届机器学习国际会议论文集—第 70 卷
[2] Jacob Devlin,Ming-Wei Chang,Kenton Lee 和 Kristina Toutanova, BERT:用于语言理解的深度双向转换器的预训练 (2018),arXiv 预印本 arXiv:1810.04805v2
计算机如何理解图像?
用简单的语言解释计算机视觉
Image of a dog (Photo by Angel Luciano on Unsplash)
当我们看到这张照片时,我们可以不假思索地说,这是一只可爱的狗的照片。即使是一个 8 岁的孩子也能毫不费力地认出照片中的狗。
你有没有想过计算机是如何看到同样的图像的?
我相信你们很多人都有过这样的经历。在我生命中的某个时刻我的确是。在这篇文章中,我将解释计算机是如何看到图像并理解它的。
计算机将图像视为 0 和 1。像素是图像中最小的单位。
A digital image is a 2D array of pixels. Each pixel is characterised by its (x, y) coordinates and its value. [1]
当我们拍摄数字图像时,它被存储为像素的组合。每个像素包含不同数量的通道。如果是灰度图像,它只有一个像素,而如果是彩色图像,它包含三个通道:红色、绿色和蓝色。
A digital image represented as pixels and channels. [2]
如上面的数字彩色图像表示所示,每个像素的每个通道具有 0 到 255 之间的值。在计算机能够理解图像之前,这些值中的每一个都用二进制表示。
下一个问题是,它怎么能说给定的图像包含一张狗的图片呢?
在这种情况下,如果不能理解图像的含义,或者不能描述图像的内容,仅仅能够阅读图像是没有用的。这就是机器学习的用武之地。
机器(或计算机)可以被教会如何理解图像并说出图像包含的内容。这是机器学习的一个例子,教计算机理解和描述图像。这类似于我们通过展示每个案例的例子来教孩子识别不同的字母或区分苹果和香蕉。这正是计算机学习识别图像中物体的方式。
A kid learning to draw a heart in the beach (Photo by Jude Beck on Unsplash)
就像人类有不同的技能,其中一项技能是识别图像中的对象(上图中的狗),计算机有机器学习模型,可以认为是一项技能,来执行相同的任务。正如人类需要接受训练来执行特定技能一样,计算机也需要训练机器学习模型。
在这两种情况下,训练都是通过例子进行的。类似于如何教孩子识别苹果,通过给出几个包含苹果的示例图像,可以教机器学习模型如何识别图像中的苹果。从这些示例图像中,模型学习苹果的特征,比如它的形状和颜色。现在,当一个苹果的新图像以这种模式呈现给这台计算机时,它可以使用它先前了解到的关于苹果的信息,并识别出这个新图像也包含苹果。
Image of an apple (Photo by dylan nolte on Unsplash)
这篇文章介绍了计算机如何读取数字图像,以及它如何理解图像所包含的内容。
发现这个帖子有用吗? 在下面留下你的想法作为评论。
希望实现对象检测。查看我的关于 物体检测的帖子,只用了 10 行 python 代码。
希望实现人脸检测。查看我在 上的帖子如何使用 python 在不到 3 分钟的时间内实现人脸检测。
点击这里 阅读我其他关于 AI/机器学习的帖子。
来源:
[1]莱拉,玛丽亚&普劳西,阿加皮&乔治奥祖卢,安东尼奥斯。(2011).MATLAB 在核医学图像处理中的应用。10.5772/19999.
[2]钱德朗,贾迪普。(2019).用于便携式血气分析的基于图像的比色技术。
进一步阅读:
计算机视觉,通常缩写为 CV,被定义为一个研究领域,旨在开发技术来帮助…
machinelearningmastery.com](https://machinelearningmastery.com/what-is-computer-vision/) [## 计算机视觉——导论
揭开像素背后的含义
towardsdatascience.com](/computer-vision-an-introduction-bbc81743a2f7)
脸书如何针对大规模工作负载调整 Apache Spark?
我想开始祝你有一个美好的 2019 年,在我今年的第一篇文章中,我将分享由刘和来自的 Sital Kedia 在 Spark 峰会会议上介绍的针对大规模工作负载调整 Apache Spark 的会议摘要以及我的日常经验。
当我们谈论 Spark 调优时,我们需要认识到每个应用和环境都是不同的,因此我们不能假设这种配置对所有情况都是最好的。在这种情况下,大多数推荐的属性都与大型管道或以批处理模式处理大型数据集的作业相关。
让我们开始定义我们可以从脸书收集的主题
- 缩放火花驱动器
- 缩放火花执行器
- 扩展外部洗牌服务
- 工具
1.缩放火花驱动器
动态执行人分配
是一个 Spark 特性,它允许动态地添加和删除 Spark 执行器,以匹配工作负载。[ 掌握 Apache Spark ]
如果您与其他团队共享集群资源,那么完全推荐启用此配置,这样您的 Spark 应用程序就只使用它最终将使用的资源。它可以根据工作量调整执行者的数量。
spark.dynamicAllocation.enable = true
spark.dynamicAllocation.executorIdleTimeout = 2m
spark.dynamicAllocation.minExecutors = 1
spark.dynamicAllocation.maxExecutors = 2000
这四个参数是自我描述的,也许第二个需要更多的细节。executorIDleTimeout 用于正确移除执行器。
更好的获取失败处理
中止阶段之前允许的连续阶段尝试次数(默认为 4)。
spark.stage.maxConsecutiveAttempts = 10
调整 RPC 服务器线程
增加 RPC 服务器线程以修复内存不足(实际上我在 spark 官方文档中找不到更多细节,一个很好的解释是这里是)
spark.rpc.io.serverTreads = 64
2.缩放火花执行器
首先必须理解如何基于自 Spark 1.6 [ Spark 内存管理 ]以来开发的统一内存管理来定义执行器内存的结构(图 1)
Fig. 1 Executor memory layout
随机存储器
一小部分(堆空间— 300MB)用于执行和存储[【深入探讨:Apache Spark 中的内存管理】](http://Deep Dive: Memory Management in Apache Spark)。这个值越低,溢出和缓存数据回收就越频繁。此配置的目的是为内部元数据、用户数据结构和稀疏、异常大的记录的不精确大小估计留出内存(默认为 60%)。
spark.memory.fraction * (spark.executor.memory - 300 MB)
用户记忆
是为 Spark 中的用户数据结构、内部元数据保留的,并且在记录稀疏和异常大的情况下,默认情况下,保护内存不足错误的发生。
(1 - spark.memory.fraction) * (spark.executor.memory - 300 MB)
保留记忆
这是系统保留的内存。它的值是 300MB,这意味着这 300MB 的 RAM 不参与 Spark 内存区域大小的计算。它会储存火花内部物体。
记忆缓冲区
要为每个执行器分配的堆外内存量(以兆字节为单位)。这是一个考虑到虚拟机开销、内部字符串、其他本机开销等因素的内存。【火花属性】
spark.yarn.executor.memoryOverhead = 0.1 * (spark.executor.memory)
启用堆外内存
#Shuffle Memory spark.memory.offHeap.enable = true
spark.memory.ofHeap.size = 3g#User Memoryspark.executor.memory = 3g#Memory Bufferspark.yarn.executor.memoryOverhead = 0.1 * (spark.executor.memory + spark.memory.offHeap.size)
垃圾收集调优
当您的程序存储的 rdd 有大量“变动”时,JVM 垃圾收集会是一个问题。(在只读取一次 RDD,然后在其上运行许多操作的程序中,这通常不是问题。)当 Java 需要驱逐旧对象为新对象腾出空间时,它将需要跟踪所有 Java 对象并找到未使用的对象。GCT
这里的一个建议是使用 GC 而不是 G1GC
spark.executor.extraJavaOptions = -XX:ParallelGCThreads=4 -XX:+UseParallelGC
调混文件缓冲
磁盘访问比内存访问慢,因此我们可以通过缓冲读/写来分摊磁盘 I/O 成本。
#Size of the in-memory buffer for each shuffle file output stream. #These buffers reduce the number of disk seeks and system calls made #in creating intermediate shuffle files. [[Shuffle behavior](https://people.apache.org/~pwendell/spark-nightly/spark-master-docs/latest/configuration.html#shuffle-behavior)]
spark.shuffle.file.buffer = 1 MB spark.unsafe.sorter.spill.reader.buffer.size = 1 MB
优化溢出文件合并 [ Spark-20014
通过关闭到的传输并使用缓冲文件读/写来提高 io 吞吐量,从而使用 mergeSpillsWithFileStream 方法。
spark.file.transferTo = false
spark.shuffle.file.buffer = 1 MB
spark.shuffle.unsafe.file.ouput.buffer = 5 MB
调整压缩块大小
默认压缩块为 32 kb,这对于大型数据集来说不是最佳选择。如果您转到幻灯片,您会发现通过增加块大小,随机播放/溢出文件大小减少了 20%。
#Block size used in LZ4 compression, in the case when LZ4 #compression codec is used. Lowering this block size will also lower #shuffle memory usage when LZ4 is used. [[Compression and Serialization](http://Block size used in LZ4 compression, in the case when LZ4 compression codec is used. Lowering this block size will also lower shuffle memory usage when LZ4 is used.)]
spark.io.compression.lz4.blockSize = 512KB#Note that tha default compression code is LZ4 you could change #using
spark.io.compression.codec
3.扩展外部洗牌服务
在 Shuffle 服务器上缓存索引文件
问题是,对于每次 shuffle 提取,我们都要重新打开同一个索引文件并读取它。如果我们能够避免多次打开同一个文件并缓存数据,效率会更高。我们可以使用 LRU 缓存来保存索引文件信息。通过这种方式,我们还可以限制缓存中条目的数量,这样我们就不会无限地浪费内存。[ Spark-15074
#Cache entries limited to the specified memory footprint.
spark.shuffle.service.index.cache.size = 2048
可配置洗牌注册超时和重试
对于更有可能发生节点故障的大型集群(例如,超过 50 个节点),这是特别推荐的。
spark.shuffle.registration.timeout = 2m
spark.shuffle.registration.maxAttempst = 5
4.工具
Spark UI 指标
我认为这可能是下一篇文章的一部分(这次有实际的例子👩💻 👨💻)因为那里有很多调试、优化、调优的有用信息。
首先,为了进行优化,您可以检查随机读取阻塞时间(任务等待随机数据从远程机器读取所花费的阻塞时间[堆栈溢出])
Fig 2. Example of a Spark UI Metric [Community Hortonworks]
感谢阅读!下一篇文章再见。
PS 如果你有任何问题,或者想要澄清一些事情,你可以在 Twitter 和 LinkedIn 上找到我。如果你想了解 Apache Arrow 和 Apache Spark,我有一篇文章用一些例子对 Apache Arrow 和 Apache Spark 以及 Pandas 进行了简单的介绍,此外,今年出版了一本我认为很棒的书 Spark:权威指南。
机器学习中的 k-Means 聚类是如何工作的?
机器学习中无监督学习领域最著名的主题之一是 k 均值聚类。尽管这种聚类算法相当简单,但对于该领域的新手来说,它看起来很有挑战性。在这篇文章中,我试图用两个不同的例子来解决 k-Means 聚类的过程。第一个示例将更侧重于大图和可视化过程,而第二个示例侧重于所涉及的底层计算。
无监督学习和聚类
监督和非监督学习算法的主要区别在于后者没有数据标签。通过无监督学习,数据特征被输入到学习算法中,学习算法决定如何标记它们(通常用数字 0,1,2…)又基于什么。这个“基于什么”的部分决定了要遵循哪个无监督学习算法。
大多数基于无监督学习的应用利用了被称为聚类的子领域。聚类是根据数据样本共有的某个特征将数据样本组合成个簇的过程——这正是无监督学习的初衷。
那么,什么是 k-Means,我们为什么要使用它呢?
作为一种聚类算法,k-Means 将数据点作为输入,并将其分组为 k 个聚类。这个分组过程是学习算法的训练阶段。结果将是一个模型,该模型将数据样本作为输入,并根据模型经历的训练返回新数据点所属的聚类。这有什么用呢?这就是内容推广和推荐通常的工作方式——以一种非常简单的方式。网站可以选择将人与在网站上分享相似活动(即特征)的其他人放在气泡(即集群)中。通过这种方式,推荐的内容会有些切中要害,因为具有类似活动的现有用户很可能对类似的内容感兴趣。此外,当一个新人进入网站的生态系统时,这个人将被放在一个特定的集群中,内容推荐系统会处理其余的事情。
基于这个想法,k-Means 只是一个聚类算法。它使用点之间的距离作为相似性的度量,基于 k 平均值(即均值)。这是一个很有意思的算法,言归正传。
将 k 放在 k-Means 中
k-Means 背后的想法是,我们想在现有的数据中增加 k 个新点。这些点中的每一个——称为质心——都将试图以 k 个星团中的一个为中心。一旦这些点停止移动,我们的聚类算法就停止了。
正如你可能已经怀疑的,k 的值非常重要。这个 k 叫做超参数;我们在训练前设定其值的变量。这个 k 指定了我们希望算法产生的聚类数。这个聚类数实际上是数据中的质心数。
在我们进一步讨论之前,让我们先来看看到目前为止一切都是如何融入大局的:
- 我们知道,机器学习的核心在于泛化的想法——对模型从未见过的输入做出可靠的输出预测。
- 无监督学习就是将数据样本分组在一起,而不管它们的标签(如果它们有标签的话)。
- 聚类是一种无监督的学习算法,将数据样本分组为 k 个聚类。
- 该算法基于 k 个点的平均值(即质心)产生 k 个聚类,这些点在数据集周围漫游,试图使它们自己居中——每个聚类的中间有一个。
k-Means:简言之
有什么比伪代码更好的算法总结?
Assign initial values for each **u** (from **u**=1 till **u**=k);Repeat {
Assign each point in the input data to the **u** that is closest
to it in value;Calculate the new mean for each **u**;if all **u** values are unchanged { break out of loop; }
}
k-Means:详细
如果你以前读过我的任何帖子,你可能知道我喜欢先用例子来解释,然后谈论我们话题的技术方面。此外,我不喜欢向读者介绍主题背后铺天盖地的数学知识,因为我相信这些知识对研究人员来说比对那些在这个问题上有自身利益的人来说更重要。
回到 k 均值和我们的第一个例子。假设我们有一个数据集,绘制出来后看起来像下图:
对我们人类来说,这些数据看起来完全符合三个组(即集群)。然而,机器看不到这一点,因为这些点是实际的数据“点”,其值只是机器无法感知的数字。
关于聚类的目标,我们有一组未标记的数据点,我们希望将它们放入组中。这些组通常标有数字(0,1,2…)由算法本身决定。含蓄地说,我们真正需要的实际上是一个划分组的决策边界。为什么?在实践中,推理通过将数据点与相应的聚类相关联来工作。这就是决策界限显得重要的地方。
k-Means 聚类就是将我们拥有的训练点放入聚类中。但它的目的遵循相同的想法。我们想知道哪些数据点属于一起,而没有任何标签。
我们通过放置 k 个不同的平均值(即平均值)来开始该算法,这些平均值的值要么被随机初始化,要么被设置为平面上的真实数据点。让我们从 k=3 开始,因为数据“看起来”分为三组(我们将在稍后的帖子中回到这个“看起来”的词)。出于解释的目的,让我们随机初始化平均值的值(即位置):
现在,算法逐个检查数据点,测量每个点与三个质心(A、B 和 C)之间的距离。然后,该算法将质心最近(即距离最近)的数据点分组。
例如,第 21 个数据点将属于绿色的组 A,仅仅因为它在距离质心 A 更近:
一旦我们将每个数据点与其最近的质心相关联,我们就重新计算平均值——质心的值;质心的新值是属于该质心的所有点的总和除以组中的点数。
我们一直这样做,直到没有质心在重新计算时改变它的值。这意味着每个质心都以其簇的中间为中心,该簇被其自己的圆形决策边界所包围:
另一个例子
让我们再举一个例子,但这次是从不同的角度。假设我们有以下一组点,我们希望将其分为 3 组:
这些数据没有以视觉上吸引人的方式呈现。我们只有一组想要聚类的点。另一个重要的注意事项是,符号化这些数据点的圆圈中的值是这些点的实际值。他们没有像我们之前的例子那样展示数据的顺序。相反,这些值是一些特征值 f 的量化,我这样说是为了让你更容易理解均值的计算是如何工作的。
让我们准备我们的空集群:
可以把这些集群想象成包含我们数据集中的点的袋子。
让我们将 U 值(即均值/质心)初始化为:
U1 = 6
U2 = 12
U3 = 18
这些值可以是随机的,但是为了简单起见,它们被选择为均匀分布在数据空间(1 到 24)中。
由于我们已经有了均值,我们可以开始计算特征 F 值为 F 的任何点与三个均值(U1、U2 和 U3)之间的距离,其中绝对距离为:
distance = | F - U |
首先,让我们取特征 F 值为 20 的数据点:
|20 - U1| = |20 - 6| = 14
|20 - U2| = |20 - 12| = 8
|20 - U3| = |20 - 18| = 2
根据上述计算,值为 20 的数据点距离平均值 U3 更近。因此,我们将该点“标记”为 U3,将其放入相应的集群/包中:
其他各点也是如此:
|3 - U1| = |20 - 6| = 3
|3 - U2| = |20 - 12| = 9
|3 - U3| = |20 - 18| = 15
依此类推,直到我们将所有的数据点归入相应的聚类:
按照算法,我们现在需要重新计算平均值(U1、U2 以及 U3):
U1 = (3+8+1+3+7+5+2+3+8) / 9 = 4.44
U2 = (9+10+14+9) / 4 = 10.5
U3 = (20+24+23) / 3 = 22.33
在开始执行时,我们的 U 值分别是 6、12 和 18。现在,在第一次迭代之后,这些值分别变成了 4.44、10.5 和 22.33。我们现在必须再次经历距离计算步骤,但是使用新的平均值。我们清空我们的包/簇,然后重新开始:
这次我们从一个随机点开始,比方说特征 F 值为 8 的点。距离计算如下:
|8 - U1| = |8 - 4.44| = 3.56
|8 - U2| = |8 - 10.5| = 2.5
|8 - U3| = |8 - 22.33| = 14.33
因此,具有值 8 的数据点属于平均值 U2 的聚类,因为它在距离上最接近它。如果你还记得,同样的数据点(8)在第一轮属于 U1。由此可见平均值的重要性。
反复运行该算法,直到计算后平均值不变,将达到以下形式,平均值分别为 2.83、9.29 和 22.33:
最终注释
正如你在我们的第二个例子中看到的,我们在任何给定点操作的平均值对模型的可靠性非常重要。这并不排除初始值。事实上,如果起始位置非常糟糕,算法可能会导致聚类完全错误!因此,另一种初始化方法是从数据集本身选择我们的初始 k 位置,将其中一个点设置为其周围的平均值。无论哪种方式,通常的做法是在相同的数据集上重复运行该算法,直到我们找到最常见的解决方案和聚类形式——并坚持下去。
还记得我们说数据“似乎”已经被分成三份的那个阶段吗?这只是为了说明人眼在这些应用中的重要性。由于我们没有地面真实误差估计(因为它通常需要标签),我们需要对超参数的另一种测量。对于许多应用来说,一个人查看图并确定 k 值就足够了。然而,这并没有以任何方式高估 k 值的重要性。
最后,k-Means 的一个明显优势是它给出了整个聚类的平均值,而不仅仅是聚类本身。这在与分割相关的图像处理任务中非常有用——当将分割作为聚类问题处理时。
线性回归实际上是如何工作的?
Photo by Chris Liverani on Unsplash
线性回归可以说是统计学和机器学习中最著名的话题之一。它是如此重要,以至于它在几乎所有机器学习课程中都占据了重要地位。然而,这可能有点棘手,尤其是如果一个人没有统计学背景。
什么是线性回归?
线性回归可以被认为是一种机器学习算法,它允许我们将数字输入映射到数字输出,将一条线拟合到数据点。
换句话说,线性回归是一种模拟一个或多个变量之间关系的方法。从机器学习的角度来看,这样做是为了确保泛化——让模型能够预测它从未见过的输入的输出。
为什么要一概而论?
如果你读了我在 Medium 上的其他帖子,你会注意到我试图尽可能地强调一般化的观点。泛化是机器学习的本质。拥有这种人工形式的智能的整个想法依赖于将模型教得如此之好的过程,以至于它能够自己行动*。换句话说,你希望模型不要局限于它所学到的任何东西。把它当成一个孩子。如果你的孩子一生只见过猫——因为一些你强加给他的令人不安的原因——如果在某个时候你决定给他看一张狗的照片,你会期望他知道狗不是猫。这不是他所学的东西。*
为什么是线性回归?
因此,一群创意科技爱好者在硅谷创办了一家公司。这家名为 Banana 的初创公司非常创新,自 2016 年以来,他们一直在不断增长。你,这位富有的投资者,想知道是否把你的钱押在香蕉明年的成功上。让我们假设你不想冒很多钱的风险,尤其是因为硅谷的风险很高。所以你决定买一些股票,而不是投资公司的大部分。
你看一看香蕉的股票价格,自从它们启动以来,你看到下面的数字。
嗯,你肯定能看到趋势。香蕉公司正在疯狂地成长,仅仅三年时间,他们的股票价格就从 100 美元涨到 500 美元。你只关心 2021 年的价格会怎么样,因为你想给你的投资一些时间和公司一起开花结果。乐观地说,看起来在接下来的几年里,你的钱会越来越多。这一趋势不太可能经历突然、剧烈的变化。这导致你假设股价会跌到 500 美元以上。
这里有一个有趣的想法。根据过去几年的股价记录,你能够预测股价将会如何。你能够推断出我们没有数据的一年(2021 年)新股票价格的范围(图上不存在)。嗯——算是吧。
***你刚才所做的是推断你的模型(你的脑袋)来进行概括——预测你甚至不知道的 x 值的 y 值。*然而,这无论如何都不准确。你无法具体说明股价最有可能是多少。据你所知,它可能会超过 500 美元。
这就是线性回归(LR)发挥作用的地方。LR 的本质是找到最符合图上数据点的线,这样我们就可以或多或少地准确知道 2021 年股价可能会跌到哪里。
让我们通过查看它的重要性来检查上面 LR 生成的行(红色)。看起来,只要稍加修改,我们就能意识到,到 2021 年,香蕉的股价可能会比 600 美元高一点。
显然,这是一个过于简化的例子。然而,过程保持不变。作为一种算法,线性回归依赖于降低成本以最大化性能的概念。接下来我们将研究这个概念,以及我们是如何在图上画出红线的。
训练线性回归器
来解决技术上的问题。我在上一节中描述的是一元线性回归,因为我们试图将一个自变量(x 值)映射到一个因变量(y 值)。这与多元线性回归相反,多元线性回归试图将多个自变量(即特征)映射到因变量(即标签)。现在,让我们言归正传。
图上的任何直线都遵循以下公式:
*f(X) = M.X + B*
其中 M 是直线的斜率,B 是允许直线垂直移动的 y 截距,X 是函数的输入值。
就机器学习而言,这遵循惯例:
*h(X) = W0 + W1.X*
其中 W0 和 W1 是权重,X 是输入要素,h(X)是标注(即 y 值)。
线性回归的工作方式是试图找到权重(即 W0 和 W1 ),从而为我们拥有的输入数据(即 X 特征)找到最佳拟合线。根据最低成本确定最佳拟合线。
那么,成本是多少呢?
事情是这样的。成本可以采取不同的形式,取决于手边的机器学习应用。然而,一般来说,成本是指模型在与实际训练数据相差多少的情况下产生的损失或误差。
说到线性回归,我们通常使用的代价函数是平方误差代价。
**J(W0,W1) = (1/2n).sigma((h(Xi)-Ti)^2) for all i=1 until i=n**
其中 J(W0,W1)是指权重为 W0,W1 的模型的总成本。h(Xi)是指模型对索引为 I 的要素 X 处的 y 值的预测。Ti 是索引为 I 处的实际 y 值。最后,n 是数据集中数据点的总数。
我们的成本函数所做的基本上是获取模型预测的 y 值和数据集中每个数据点的实际 y 值之间的距离(例如欧几里德距离),然后将该距离平方,再除以数据点的数量,就可以得到平均成本。所述距离在上图中被示为误差向量。(1/2n)项中的 2 只是为了简化下一节中对成本函数进行微分的过程。
这一切的训练在哪里?
训练机器学习模型就是使用学习算法来寻找使成本最小化的权重(我们公式中的 W0,W1)。为了简单起见,让我们使用梯度下降算法。虽然这是一个相当简单的话题,梯度下降值得自己的职位。因此,我们只简单介绍一下。
在线性回归的上下文中,训练基本上是找到这些权重,并将它们插入直线函数,以便我们有最佳拟合的线(W0,W1 最小化成本)。该算法基本上遵循伪代码:
**Repeat until convergence {
temp0 := W0 - a.((d/dW0) J(W0,W1))
temp1 := W1 - a.((d/dW1) J(W0,W1))
W0 = temp0
W1 = temp1
}**
其中(d/dW0)和(d/dW1)分别是 J(W0,W1)相对于 W0 和 W1 的偏导数。这种偏导数的要点基本上是导数:
**(d/dW0) J(W0,W1) = W0 + W1.X - T
(d/dW1) j(W0,W1) = (W0 + W1.X - T).X**
如果我们在模型上运行梯度下降学习算法,并通过每一步获得的成本,模型将收敛到最小成本。导致最小成本的权重作为我们之前提到的线函数的最终值处理(即 h(X) = W0 + W1)。x)。这意味着与我们的 h(X)函数等价的线实际上是我们的线性回归量。
旁注:性能
有时,当训练数据集包含大量值不一致的数据点时,我们求助于称为离散化的过程。这是指将数据集中的 Y 值从连续转换为离散,从而产生简洁、干净和可用的数据范围,而不是数据值本身。但是,这会导致数据丢失,因为从技术上来说,您会将数据点分解成表示连续值范围的条柱。模型有效性的另一个主要因素是它对我们选择的箱/范围数量的依赖。
如果线性回归模型性能不好,我们通常会选择更高的多项式函数。这基本上是在回归函数中引入新的变量,这样我们可以给它更多的灵活性。然而,这将导致 LR 线不再是一条直线。
原来,就线性回归而言,“线性”并不是指“直线”,而是指“落在一条线上”。
这意味着我们的线性回归实际上不必是一条直线,就像我们通常在数学中看到的那样。回归中的这种灵活性可以极大地提高性能。然而,更高的多项式可能导致更高的方差,以及指数级更高的计算复杂度。这往往会导致过度拟合。这是一个大话题,我将在另一篇文章中详细讨论。
结论
线性回归是找到最适合图上可用数据点的直线的过程,因此我们可以使用它来预测数据集中不存在的输入的输出值,并相信这些输出会落在该直线上。性能(和错误率)取决于各种因素,包括数据的干净程度和一致性。有不同的方法来提高模型的性能(即,可推广性)。然而,每种方法都有自己的优缺点,这使得方法的选择取决于应用。
数字经济如何创造「另类数据」?
新的数字信息来源改善了投资决策——要了解它们如何增加价值,我们需要了解它们是如何产生的。
替代数据是一个时髦词,但它不仅对投资者和企业,也对政府和监管机构具有巨大的潜力。它是我们前所未有的数据革命的结果,尽管它隐藏在众目睽睽之下,却很难被发现。
有人认为,到 2020 年(不到一年的时间),每个人每天将产生大约 2 MB 的数据,其中很大一部分数据是以易于分析和访问的数字格式创建的。数据在未来能创造的洞察还难以想象;但是随着量化的增加,很可能大部分决策将完全由数据驱动。
要了解替代数据的价值,我们先来看看这些数字数据的来源,然后再详细讨论各种数据来源及其经证实的用途。
替代数据的来源
替代数据可以是从
- 非传统数据源,如来自网络流量或物流数据的数字废气或数字残留,以量化供应链中的运输活动。
- 非结构化社交媒体在使用各种计算方法进行进一步转换之前,可以轻松量化的信息,
- 汇总交易信息(如信用卡数据),
- 遥感数据,如卫星观测和来自数字设备的数字跟踪尾气,如网络搜索和手机使用信息
驾驭这些海量数据的信息内容需要计算能力。随着每天创建近 2.5 的数据,需要大量的存储、处理、计算和分析能力。而且,随着每天创建的数据越来越多,大约每 40 个月翻一番,数据量(一些好的,一些坏的)变得很大。
结构化和非结构化数据
一些替代数据是结构化的,而另一些是非结构化的。
- 结构化数据是定义明确的数据,其模式使其易于搜索,这使得聚合和分析更加容易。
- 非结构化数据通常不容易搜索,除非进一步细化和标记,通常包括各种音频、视频和社交媒体帖子。
- 非结构化数据可以转换为结构化数据,并直接传输到分析平台。使用专有算法(通常是机器学习过程)来提取信息,对各种信号进行特征工程,并组合不同的数据源来增强各种非结构化信号之间的关系,从而可以将非结构化数据集成到结构化数据中。面临的挑战是优化数据源和降低信噪比(通常是动态、同步和透明的),并确定非结构化数据中的固有信息商数得到增强,以满足用户的各种需求。
替代数据的不同来源
个人生成的替代数据
通过他们的社交媒体活动、在线评论和网络搜索,个人是替代数据的主要生产者,特别是通过他们持续的社交媒体帖子和类似信息。脸书(2019 年 3 月)的日活跃用户超过 15.6 亿,脸书(2019 年 3 月 31 日)的月活跃用户超过 23.8 亿,用户通过帖子、评论、分享和转发产生大量数据。模式、联系和网络创建了一个附加的信息层。
同样, Twitter 也拥有强大的追随者:有近 3.21 亿活跃用户(2019 年 2 月),他们提供了人们如何即时思考以及同时在朋友和世界面前表达自己的见解。因为这些信息是个人的、即时的、有意的,所以它代表了比新闻和媒体更丰富的对人性和心理趋势的内部运作的视角。
个人通常会创建三种类型的替代数据:
- 社交媒体帖子,根据社交媒体平台(Instagram vs Kik vs Tinder)、社交媒体帖子的预期用途和受众(Tumbl vs Yelp vs RateMyProfessor)、一般信息(Twitter vs 微信),参与度、质量和内容有所不同
- 新闻和评论,从亚马逊类型的评论(网飞、IMDB、DPR)到木乃伊黑手党博客
- 网络搜索和个人或个人识别数据,如 Google、Bing 和微博搜索信息(或 GitHub 和 PornHub)
业务流程生成的替代数据
业务流程通常是经过设计和规划的,以结构化的方式发生,并且包含具有高信号价值比的信息。具体而言,排气数据是指作为公司活动副产品的数据,包括超市扫描仪数据或供应链数据。人们普遍认为,汇总的信用卡交易数据提供了最可靠的指标,可以洞察价格形成、通胀预期和产品层面的盈利能力,并作为收入的领先指标和盈利能力的决定因素
公司通常会创建三种类型的替代数据:
- 交易数据 —信用卡、发票和供应商变更信息。
- 公司数据 —公司备案,包括官方备案(监管机构如 SEC、FDI 专利;新闻专线、网站和博客)、营销材料、社交媒体(YouTube)上发布的演示文稿。
- 政府机构数据 —专利、受监控的试验(FDA 或类似机构)、监管活动(EPA、DOE 或类似机构)、税务信息(IRS 或类似机构)。
有许多数据分发者积极地收集交易和其他公司数据,以匿名地聚集这些信息,用于进一步的处理和提炼。它奏效了: GoPro 股价在 2016 年 11 月下跌,当时对超过 300 万封电子邮件收件箱的产品收据进行了分析,结果表明该产品的主要销售点的销量下降。
传感器生成的替代数据
传感器从卫星上收集图像,并使用手机、CCTV 等其他设备和物联网(物联网)上的应用程序监控运动。有专门在港口或重要国际航线上,主要是在四大海上转运和咽喉要道,对各类船舶进行量化分组的公司。对船只和飞机活动数据的实时访问产生了对全球经济状况的全面了解。
移动应用程序(在数字设备上)为消费者和企业生成地理位置智能。并且,自动监控活动的物联网设备可以跟踪人体运动、降水信息和其他规律。来自无线和移动设备的流量——尤其是在新兴市场——正在快速增长,很可能会产生比我们现有的更多关于行为的见解。
传感器通常产生三种类型的替代数据:
- 卫星 —商场和制造业停车场信息
- 地理定位 —谁,在哪里,多长时间
- 其他传感器 —机器、温度和(CCTV)摄像机
数据的价值来自于它的使用。随着对冲基金、机构投资者、交易员和其他人寻找提高 alpha 的独特优势,通过数字活动产生的替代数据正在成为新的石油。替代数据增加的大部分价值增强了传统数据;然而,随着信噪比的提高,替代数据很可能成为主要的信息来源。
我如何使用聚类分析来自优步的拼车数据
优步拼车数据分析
Photo by Viktor Bystrov on Unsplash
根据 Gartner 的数据,到 2020 年,2.5 亿辆联网汽车将成为物联网的主要组成部分。联网车辆预计每小时将产生 25GB 的数据,可以对这些数据进行分析以提供实时监控和应用程序,并将带来移动性和车辆使用的新概念。Ref: Gartner
优步科技公司是一个点对点乘车共享平台。优步平台连接可以开车到客户位置的出租车司机。优步使用机器学习,从计算定价到寻找汽车的最佳定位,以实现利润最大化。使用公共优步出行数据集讨论构建用于分析和监控汽车 GPS 数据的实时示例。
优步出行数据集,包含由优步从纽约市生成的数据。这些数据可以在五月三十八日免费获得。
数据来自纽约市,该市有五个区:布鲁克林区、皇后区、曼哈顿区、布朗克斯区和斯塔滕岛区。对该数据集应用 K-means 聚类,以了解在优步的旅行并识别纽约州内的不同行政区。
聚类是将数据集分成由相似数据点组成的组的过程。聚类是一种无监督的机器学习,当您有未标记的数据时使用。
这里,我们应用了 K-Means 聚类算法,其主要目标是将相似的元素或数据点分组到一个聚类中。**K-means 中的“K”代表簇的个数。**K-Means 算法的工作原理可以在这里查看。
本博客讨论了聚类算法在优步拼车数据集中的使用案例。总共确定了 6 个集群,但没有在本博客中讨论集群的有效性。主要侧重于解释和理解现实世界中的概念。
导入必要的库
优步皮卡数据可从 2014 年 4 月至 9 月的五月三十八日获得。这里,我使用了 2014 年 8 月的数据集进行解释。
读取 CSV 文件
输出
数据集有 829,275 个观察值和四列。它有四个属性,
- **日期/时间:**优步提货的日期和时间。
- **Lat(纬度)😗*优步皮卡的纬度
- **Lon(经度)😗*优步皮卡的经度。
- **基地:**隶属于优步皮卡的 TLC 基地公司代码。
选择功能
这里,在称为“clus”的独立数据帧中选择纬度和经度。
输出
我们正在应用 K 均值聚类。第一步是找到 k 的最佳值。这可以通过下图所示的肘形图找到。
输出
输出
从上面的肘形图中,我们可以看到,随着星团数量的增加,观测值与其最近的星团质心的平方距离之和不断减小。我们可以看到,在 K=6 之后,有一个显著的降低。我们可以选择 6 个或 7 个集群。为此数据集选择了 6。
执行 k 均值聚类
K-Means 算法中的聚类数分配
输出
存储聚类质心
将簇质心存储在另一个称为质心的对象中。
输出
我们可以从上面的输出中看到六个质心。例如,40.68,-73.96 是聚类 1 的质心,也就是质心 1 的纬度和经度值。类似地,我们也有其他星团的质心。
可视化质心
从质心提取纬度和经度,并转换成两个独立的数据框架。合并两个数据框,并将其命名为“clocation ”,以便于可视化。
输出
输出
在上面的散点图中,我们可以看到每个星团的所有质心。然而,这并没有显示任何有意义的信息。让我们在谷歌地图(纬度和经度)上画出同样的图,并可视化
这里,我们使用了一个叶子库来生成地图。传递质心并映射位置
输出
我们可以看到所有的六个质心都被绘制在地图上。这些质心对优步有什么帮助?
- 优步可以利用这些质心作为他们的枢纽。每当优步收到一个新的乘车请求,他们可以检查与这些质心的接近程度。无论哪个特定质心更近,优步都可以将车辆从该特定位置引导到客户位置。
- 优步有许多司机,为许多地方提供服务。如果优步知道中心(特定的质心),并且如果他们得到许多搭车请求,那么从战略上来说,他们可以将他们的司机放在得到搭车请求的概率很大的好位置。这将有助于优步更快地为客户服务,因为车辆放置在更靠近位置的地方,这也有助于发展他们的业务。
- 优步可以利用这些质心来优化放置他们的车辆。他们可以发现在一天中的哪个时段哪个质心有更多的乘车请求进来。例如,如果优步在上午 11 点从质心 0(聚类 1)获得更多请求,但是从质心 3(聚类 4)获得非常少的请求,则他们可以将车辆从聚类 4 重定向到聚类 1(如果在聚类 4 中有更多车辆存在)。
- 通过分析哪个集群处理最大请求、高峰时间等,优步可以使用这些质心进行最优定价。假设,如果他们没有太多的车辆被送到一个特定的位置(更多的需求),那么他们可以在需求高而供应少的情况下进行最优定价。
存储集群
存储聚类并将其合并到原始数据集中
输出
哪个集群接收最大乘坐请求?
对集群总数进行分组和可视化
输出
集群 3 收到最大游乐设备请求,之后是集群 1。集群 4 收到的请求最少。优步可以在集群 3 中放置更多的车辆来满足更高的需求。
正在检查新位置
source: macobserver
如果优步获得一个新的乘车请求(通过经度和纬度获得他们的新位置),然后传递纬度和经度值,那么它将预测车辆应该去哪个集群?
输出
传递新的请求纬度和经度值(40.65,-73.56)。新请求将被分配给聚类 2,因为与其他质心相比,它与聚类 2 的质心的距离是最小的。车辆将来自集群 2。
在这里,我们只收集了 2014 年 8 月与五个区相关的数据。在一个实时,我们有更多的质心(纬度和经度)作为优步在许多国家和地区提供服务。这些质心将作为限定区域内所有乘车请求的枢纽。
以上显示了 K-Means 聚类如何帮助优步公司获得最优定价和汽车的最优位置,以便更快地为客户服务并发展业务。
请继续学习,并关注更多内容!
动态定价算法如何将毛利提高+10%
数据科学正在帮助巴西石油和天然气行业克服影响该国的经济危机带来的挑战。
由于经济危机和技术革命,巴西的石油天然气行业一直面临着挑战。这些是主要的棘手问题:
1.燃料转售部门处于供应链双方利润受限的背景下:
上游部门通过增加燃料采购成本降低了加油站的利润。
消费者面临有限的家庭预算,对价格越来越敏感,这使得经销商很难转嫁成本上涨。
2.移动应用程序(如 Waze)正在为消费者提供实时价格信息,允许客户在加油前找到该地区最近和最便宜的加油站。
3.半公开的巴西跨国石油公司 Petrobras 已经实施了一项新定价政策,允许价格根据国际大宗商品价格的波动而变动。这项始于 2016 年并在随后几年得到强化的新政策,带来了燃料采购成本的新动态。经销商不知道如何应对,因为在几十年的高监管价格期间,巴西的这一行业已经被整合。
这些因素加在一起,给这个利润率处于历史低位的行业带来了更大的利润压力。考虑到高度竞争和动态的环境,经销商必须根据多个变量对泵价格进行日常决策。其中包括:燃料购买成本、税收、竞争对手的定位、车辆流量、星期几,以及最重要的消费者的支付意愿。
支付意愿用弹性的概念表示。这个概念试图从数学上回答如果价格降低 X %,需求增加的百分比是多少?如果价格上涨,需求下降的百分比是多少?
用科学来回答这些问题是成功优化定价的必要条件。这是动态定价算法的目标。
通过利用大型数据库,有可能识别和隔离弹性的影响。然后,我们可以模拟不同价格和市场情景下的需求反应,并根据业务战略目标优化价格决策,获取利润或销量。每日循环包括以下步骤:(1) 建模 , (2) 模拟,( 3)优化。随着需求反应的发生,算法会更新用于计算的系数,并根据自己的预测和建议的成功率进行相应的学习。
不同的机器学习技术可用于步骤(1)建模,例如:岭回归、ARIMAX、卡尔曼滤波器和神经网络。这一步的成功取决于**提出正确的问题。**例如,ARIMAX 技术对于作为价格函数的需求预测非常有效(“X”是一组与价格相关的外生变量)。然而,如果我们要回答的问题是“弹性效应的价值是什么?”像岭回归这样的技术可能更好。即使在该模型中需求预测不太确定,该算法也能够更好地分离弹性效应的系数。
经过几个月的开发和实施,定价初创公司 Aprix 开发出了一种用于动态燃料定价的先锋人工智能。该企业与巴西的主要燃料经销商合作。当将使用该算法的加油站与继续使用传统定价方法(基于 Excel 电子表格)的加油站进行比较时,使用该算法的集团实现了毛利的平均增长 +9.6%。
该技术使加油站能够在新的高度竞争环境中生存,将威胁转化为机遇。
尽管石油和天然气行业仍然由传统企业组成,但毫无疑问,定价的未来是基于人工智能的,并且它在全球范围内获得了越来越大的空间。动态定价算法已经在燃料零售中使用,主要是在英国和美国。Aprix 是在巴西建设这个未来的人。
面对这种趋势,我们在 Aprix 每天都会问这样一个问题:
接下来哪些行业将使用动态定价算法来提高盈利能力?
企业如何使用人工智能解决方案来提高效率
Image Source: https://unsplash.com/@chuttersnap
E 企业正在业务中实施人工智能(AI ),以打破挑战并创建更具适应性的流程。在商业利益中利用人工智能的力量释放新的洞察力以提高效率。 众所周知,这项先进技术已经改变了各个垂直行业的面貌。这有助于增强员工的能力,同时让客户体验到快乐。
使用人工智能的趋势有助于优化和加速复杂的任务,同时改善客户体验和推动转化。 免下车人工智能作为企业的核心,能够在捕捉全新机遇的同时做出更好的决策。 《福布斯》报道称,营销和销售部门优先考虑人工智能(AI)和机器学习(ML),超过企业中的任何其他部门(40%)。
用 AI 克服传统的非智能营销策略。因此,如今的企业正在推出更加智能的 定制移动应用开发 来提供卓越的客户体验。
企业使用人工智能解决方案提高效率的方法
人工智能被用于媒体和娱乐、零售和消费品等行业,以推动收入增长。人工智能正在帮助企业时刻保持相关性,以捕捉新的参与和增长机会。
改善用户体验
值得注意的是,营销人员发现平衡高销售和转化率的愿望总是一个挑战。人工智能可以通过发展基于 UX 的功能来改善用户体验。
Image Source: https://unsplash.com/@fourcolourblack
用户体验很大程度上取决于企业网站或 App 是如何表现的。因此,企业可以实施人工智能来提升其网站和应用的 UX/UI 体验。 此外,它还见证了顾客更有可能与品牌互动,提供更好的实时互动。UX/用户界面必须有足够的吸引力来抓住每个人的注意力。
更好的个性化
提供个性化体验是开展有效营销活动的关键。 客户更容易与个性化营销策略互动。由于人工智能的集成,电子商务领域正在梳理。带有个性化主题行的信息最受顾客和客户的欢迎。带有品牌推广的个性化信息有助于企业将用户与过去的互动联系起来。因此,人工智能正在帮助预测和创造方法来增强用户体验。
利用潜在渠道
人工智能有潜力为新的营销渠道提供可能性。AI 的实施有助于数字营销渠道的增长。企业更倾向于采用人工智能解决方案,以自动找到成功几率最高的渠道。最棒的是,人工智能减轻了为每次营销活动手动选择最佳渠道的负担。基于品牌的实时交互有助于人工智能筛选潜在渠道,以锁定特定线索。此外,人工智能消除了对猜测、实验或依赖行业繁琐方法的需要。
有价值的数据洞察
大型企业组织正在处理大量关于其客户和贸易的有价值的数据。 人工智能的使用有助于很多企业了解数据集的完整体量。
Image Source: https://unsplash.com/@adeolueletu
这项先进的技术为处理和理解各个领域的数据提供了巨大的优势。 AI 为企业提供处理大型数据集,了解市场数据最新模式的能力。因此,使用人工智能业务可以从数据中获得有价值的见解,并提供个性化的体验。
最后的想法
人工智能解决方案正在提高企业的整体性能。无论是企业营销还是数据洞察,人工智能在各种意义上都很突出。虽然先进的人工智能看起来令人生畏,但人工智能作为一种先进技术,在现有系统中实现起来非常方便用户。 许多营销人员正在体验各个领域的人工智能解决方案的好处。人工智能可以揭示实时数据,为优化业务的整体增长提供新的战略和能力。
面部识别技术有多道德?
Photo by Alessio Ferretti on Unsplash
虽然面部识别技术可以追溯到 20 世纪 60 年代,其创始人伍德罗·威尔逊·布莱索(Woodrow Wilson Bledsoe)进行了创新,但直到最近 10 年,它才真正获得了自己的地位。
最新的解决方案,包括在 Iflexion 创造的解决方案,能够以惊人的准确度检测人群中的人脸。因此,它们被有效地用于刑事鉴定,并有助于确定失踪人员的身份。
然而,这种解决方案也招致了许多关于其应用的合法性和道德性的批评。在本文中,我们将深入探讨围绕面部识别的问题,并看看如何使这些技术对每个人都更安全。
Photo by Steinar Engeland on Unsplash
面部识别技术的潜力
为了全面评估面部识别的道德和法律方面,首先理解用例是至关重要的。下面是一些例子。
抓捕罪犯
早在 2009 年,美国大约有3000 万个监控摄像头在使用,现在这个数字已经呈指数级增长。想象一下,如果这些据说在一周内平均拍摄 40 亿小时记录的相机与面部检测系统集成在一起。
这是对以前系统的升级,以前的系统利用数据库(DMV,犯罪数据库,甚至是借书证)将一个人与静态照片(如面部照片)进行匹配。
从理论上讲,这将是一个非常有效的系统,可以找到那些犯罪的人——想想波士顿爆炸案、校园枪击案和其他对社会构成直接威胁的罪犯。
寻找失踪人员
当人们失踪时,在几率显著降低之前,找到他们的时间是有限的。许多调查的出发点之一是尽可能接近失踪时间地追踪此人的活动。
同样,当与面部检测软件结合使用时,在这里使用监控摄像头可以有效地找到这个人,并通过摄像头网络跟踪他们。
但这不是唯一的选择。2018 年,在众多批评中,发布了创新的面部识别技术,该技术可以自动识别照片中的人,即使他们不是照片的主题。
在失踪人口调查中,通过捕捉一个人的最后一瞥并确定他们的确切位置,这可能会带来突破。
医疗用途
面部识别技术在医学中得到积极应用。目前,面部识别技术被应用于基于面部扫描的配药,这是生物扫描的一项创新。
然而,最新的技术拥有更先进的东西——诊断能力。一些面部识别软件提供商声称,他们的产品可以通过识别关键的面部标志来帮助监测血压或疼痛程度,这可能证明是未来医生和最终用户的有用工具。
购买确认
想象一下再也不用带着你的卡去商店了。这是面部识别技术的未来。只要走到柜台,你的脸被扫描以识别你和你的关联银行账户,你的购买就完成了。
虽然这听起来很神奇,但对于我们这些容易健忘的人来说,这是一个真正的问题解决方案。然而,它的实现离真实世界的体验还有一段距离。
广告
个性化广告是未来。多亏了它,有一天你可以走进一家商店,看到你周围的标志根据你的需要而改变。
面部识别技术可以与在线分析和以前的购买相结合,为购物者量身定制体验,让他们更快地找到他们想要的东西。有点像亚马逊带入现实世界的网络体验。
Photo by Sebastian Pichler on Unsplash
面部识别技术的批评和风险
现在我们知道了这项技术的巨大潜力,是时候更深入一点,探索那些使用面部识别的人所面临的风险。再次浏览这个列表,我们会发现它的缺点并提出改进的方法。
抓捕罪犯
—毫无疑问,找到“坏人”是个好主意。然而,被设定为辅助的同一系统容易被滥用。我们来探索一下。
- 准确性——引用纽约时报记者史蒂夫·洛尔、“如果你是个白人,面部识别是准确的。”如果你不这样做,它会变得更加不准确。该系统自然会歧视非白人、妇女和儿童,对非白人妇女的误差高达 35%。
根据美国联邦调查局的最新报告,美国白人犯罪最多,共有 5858330 起。所以这给其他种族留下了巨大的误差。
- 监控问题——除了准确性之外,这项技术面临的另一个重要问题是对其实施的滥用。
面部识别技术本身的功能可以被视为在一个事件中或在一个以前没有使用过的位置增加额外监控的借口。这引发了通常对“老大哥”监视社会的批评。
- 数据存储——一旦一个人被怀疑犯罪,他们的图像可能会被拍摄下来,通过面部识别技术在数据库中进行搜索。
虽然这本身不是一个问题,但它允许进行搜索的机构存储这些图像以供将来使用,如果这个人是无辜的,他可能会将他们的图像与真正的罪犯一起存储。
此外,它侵犯了一个人对自己形象的权利,尽管他是无辜的。
寻找失踪人员
—很少有人会认为帮助那些需要帮助的人这种感觉良好的因素是一种糟糕的激励因素。然而,使用类似于脸书生产的技术背后的含义可能会产生可怕的后果。
从伦理的角度来看,这多少侵犯了每个人的私生活权利。比方说,你去商店给你爱的人买礼物,但是不小心被别人抓拍并贴上标签,破坏了惊喜。这不是一个好的结果,而且可能比一个毁了的礼物更严重。
然而,据估计,目前这项技术(DeepFace)背后的算法大约有 97.35%的准确性,这意味着这项技术可能会继续存在,无论是好是坏。
医疗用途
—就药物分配而言,尽管这优化了系统,但它不考虑合格药剂师的人类知识和判断力。人类专业人员将能够检测一个人是否受到任何其他物质的影响,是否正在经历指示鉴别诊断的其他症状,或者甚至被其他人强迫获取药物。
看看其他的使用案例——血压和疼痛程度监测——虽然这些工具如果与有执照的医生一起使用,可能有助于预防疾病,但它们也可能被误用,如 WebMD,并引发不必要的健康问题。
除此之外,重要的是要记住,这种技术目前还处于早期测试阶段,可能在未来许多年都不会以任何有意义的方式随时可用。
购买确认
—在现代世界,我们非常清楚信用卡和借记卡欺诈,但面部身份欺诈呢?虽然像非接触式卡一样,轻松购买的承诺很吸引人,但它也带来了安全问题。
或者,想象一下一对长得很像但收入和银行存款不同的同卵双胞胎的情况。这听起来可能像是直接来自一部疯狂的喜剧电影,但这种金融威胁是真实的,使得通过面部识别进行购买验证在安全方面成为一个非常灰色的领域。
广告
—在亚马逊定制采购的启发下,面部识别广告可能成为各地营销部门的梦想。然而,对于整个社会来说,情况可能并不乐观。
在早期阶段,在识别年龄、性别和地点时,偏好可能是基本的,或者至少是基于不正确的信息。
在其发展的后期,当它变得更加个性化和与个人联系在一起时,这种类型的广告可能会通过显示购买者宁愿保密的信息和偏好而引起侵犯隐私的感觉。
此外,为了以任何方式有效,该系统将需要存储大量数据,这可能是不可行的或不道德的。
这是营销成功与社会责任的经典争论。
Photo by Sebastian Pichler on Unsplash
面部识别有什么法律?
既然我们已经发现了更多关于面部识别技术的道德问题,让我们从法律的角度,通过引发批评的三个不同的镜头来看待它——歧视、隐私和民主自由。
应该注意的是,在世界各地的许多司法管辖区,立法并不是针对面部识别技术的特性而制定的。
歧视
正如我们上面提到的,面部识别技术并不是 100%准确。事实上,在妇女、儿童和少数民族的情况下,这一准确率可能低至 65%。这表明该技术本质上是歧视性的,因为它的结果不太理想。
虽然随着人工智能技术扫描和“发现”更多样化的面孔,这种情况可能会随着时间的推移而改变,但目前它有可能违反种族歧视法。
隐私
针对面部识别的最新法律之一是商业面部识别隐私法案,于 2019 年 3 月提交给美国参议院。该法案旨在实施法律变革,要求公司在获取面部识别数据之前告知。
这是继伊利诺伊州的生物特征信息隐私法案(BIPA) 之后。虽然没有特别针对面部识别,但该法案要求组织获得同意以获取生物特征信息,并且同意必须是平权行动的结果,而不是默认。
即使在今天,面部识别技术的提供商,如脸书、俄罗斯社交媒体网站 VK 和国家机构,也需要了解其管辖范围内有关个人隐私的法律,以及他们需要在内部和外部采取什么措施。
民主自由
我们将讨论的最后一个法律问题是面部识别技术和民主自由的作用。民主自由背后的原则意味着拥有选择的权利,收集和分享观点的自由。尽管面部识别技术有许多用途,但这是一个被它带走的领域。
这种技术通常在云中收集和存储大量信息。这引发了信息安全问题和政府积极监视其公民的威胁。
虽然这听起来完全像乔治·奥威尔的《1984》中的东西,但目前的技术正在接近实现这一目标。这是一个需要在当前民主自由法之外进行专门立法的问题。
面部识别技术使用技巧
尽管直接针对面部识别的立法尚不发达,但寻求采用该技术的公司和国家行为者应考虑这两个因素,以便站在道德和法律的正确一边:
提供通知
如果您的场所、活动或应用使用面部识别技术,确保您的用户和客户知道这一点至关重要。这样做有助于告知他人这种技术已经到位。它还允许那些访问或使用您的设施或技术的人决定他们是否希望继续这样做。
征求同意
积极寻求同意可以保护您和您的组织不违法,并允许您的客户控制他们的隐私并为自己做出选择。
UMAP 到底是如何运作的
生命科学的数理统计和机器学习
为什么它比 tSNE 更好
这是专栏 生命科学的数理统计和机器学习 中的第 12 篇文章,我试图在这里涵盖生物信息学、生物医学、遗传学等常用的分析技术。今天我们将深入探讨一种令人兴奋的降维技术,叫做 UMAP ,它主导了当今的 单细胞基因组学 。在这里,我将试着质疑关于 UMAP 的神话是一种过于数学化的方法,并用简单的语言解释它。在下一篇帖子里,我会展示 如何用 Python 从头开始编程 UMAP,还有(加成!)如何创造一种降维技术,提供比 UMAP 更好的可视化。然而,现在我们将从 UMAP 背后的直觉开始,并强调 tSNE 和 UMAP 之间的主要区别。
tSNE 死了。UMAP 万岁!
如果你不知道 tSNE 是什么,它是如何工作的,也没有读过 2008 年的原创革命性范德马滕&辛顿论文,你可能不需要知道,因为 tSNE 现在基本上已经死了。尽管总的来说,tSNE 对单细胞基因组学和数据科学产生了巨大的影响,但人们普遍认为它有一些迟早要解决的缺点。
到底是什么让我们对单细胞基因组学使用 tSNE 感到不舒服?这里我用简短的评论总结几点:
- tSNE 不能很好地缩放以快速增加 scRNAseq 中的样本大小。试图用 FItSNE 加速导致大量内存消耗使得不可能在计算机集群之外进行分析,参见我的banch marking for 10X Genomics Mouse Brain 1.3M 数据集。
- tSNE 不保留全局数据结构,这意味着只有集群内的距离才有意义,而集群之间的相似性则无法保证,因此人们普遍认为在 tSNE 上进行集群不是一个好主意。
- tSNE 实际上只能嵌入 2 或 3 维,即仅用于可视化目的,因此很难使用 tSNE 作为通用降维技术来生产例如 10 或 50 个组件。请注意,这仍然是更现代的fits ne算法的问题。
- tSNE 执行从高维度到低维度的非参数映射,这意味着它不利用驱动观察到的聚类的特征(也称为 PCA 加载)。
- tSNE 不能直接处理高维数据,在将数据插入 tSNE 之前,通常使用自动编码器或 PCA 进行预降维
- tSNE 为其计算消耗了太多的内存,这在使用大复杂度超参数时变得尤其明显,因为 k-最近邻初始步骤(像在 Barnes-Hut 过程中)对于减少时间变得不那么有效和重要。这个问题不是更现代的fits ne算法能解决的。
简要回顾 tSNE 的工作原理
tSNE 是一种相对简单的机器学习算法,可以由以下四个等式涵盖:
情商。(1)定义了高维空间中任意两点之间的观测距离满足对称规则的高斯概率。情商。(2)引入了困惑度的概念,作为确定每个样本的最优 σ 的约束。情商。(3)为低维嵌入中的点对之间的距离声明学生 t 分布。学生 t 分布的重尾在这里是为了克服嵌入低维时的拥挤问题。情商。(4)给出了将高维概率投影到低维概率上的 Kullback-Leibler 散度损失函数,以及在梯度下降优化中使用的梯度的解析形式。
只看上面的图,我会说,学生 t 分布的厚尾应该提供全局距离信息,因为它们将高维度中相距较远的点推到低维度中相距更远的点。然而,这种良好的意图被成本函数(KL-divergence)的选择所扼杀,我们将在后面看到为什么。
多伦多和 UMAP 的主要区别
当我听说 UMAP 时,我的第一印象是这是一种完全新颖和有趣的降维技术,它基于坚实的数学原理,因此与 tSNE 非常不同,tSNE 是一种纯机器学习半经验算法。我的生物学同事告诉我,最初的 UMAP 论文太数学化了,看着论文的第二部分,我很高兴看到严格而精确的数学终于来到了生活和数据科学中。然而,在阅读 UMAP 文档和观看李兰麦金尼斯在 SciPy 2018 上的演讲时,我感到困惑,觉得 UMAP 是另一个邻居图技术,它与 tSNE 如此相似**,以至于我很难理解 UMAP 与 tSNE** 到底有什么不同。
从 UMAP 的论文来看,UMAP 和 tSNE 之间的差异不是很明显,即使利兰·麦金尼斯试图在附录 c 中对它们进行总结。我宁愿说,我确实看到了一些小的差异,但目前还不清楚为什么它们会在输出中产生如此显著的影响。在这里,我将首先总结一下我注意到的 UMAP 和 tSNE 的不同之处,然后试着解释为什么这些不同很重要,并找出它们的影响有多大。
- UMAP 在高维度中使用指数概率分布,但是不一定是像 tSNE 那样的欧几里德距离,而是可以插入任何距离。此外,概率是未归一化的:
这里的 ρ 是一个重要的参数,表示每个第 I 个数据点到其第一个最近邻的距离。这确保了管汇的局部连通性。换句话说,这为每个数据点提供了一个局部自适应指数内核,因此距离度量从点到点变化。
ρ 参数是 UMAP 论文中第 2 节和第 3 节之间的唯一桥梁。否则,我看不出模糊单纯集构造,即第 2 节中的奇特的拓扑数据分析与第 3 节中的 UMAP 的算法实现有什么关系,因为看起来在一天结束时模糊单纯集导致最近邻图构造。
- UMAP 没有将标准化应用于高维或低维概率,这与 tSNE 非常不同,感觉很奇怪。然而,仅从高维或低维概率的函数形式中,人们可以看到它们已经针对段[0,1]进行了缩放,并且结果是没有归一化**,如同等式中的分母。(1),极大地减少了计算高维图形的时间 ,因为求和或积分是计算上昂贵的过程。想想马尔可夫链蒙特卡罗(MCMC) 它基本上试图近似计算贝叶斯法则分母中的积分。**
- UMAP 使用最近邻居的数量而不是困惑度。而 tSNE 根据等式定义了困惑。(2)UMAP 在没有 log2 函数的情况下定义了最近邻数 k ,即:
- UMAP 使用了高维概率的略微不同的对称化****
对称化是必要的,因为在 UMAP 将具有局部变化的度量的点粘合在一起(通过参数 ρ )之后,A 和 B 节点之间的图的权重可能不等于 B 和 A 节点之间的权重。为什么 UMAP 使用这种对称化,而不是 tSNE 使用的对称化,这一点还不清楚。我对不同对称化规则的实验(我将在下一篇文章(从头开始编程 UMAP)中展示)并没有让我相信这是如此重要的一步,因为它对最终的低维嵌入影响很小。
- UMAP 使用曲线族 1/(1+a y^(2b)在低维中建模距离概率,不完全是学生 t 分布,但非常非常相似*,请再次注意没有应用归一化😗*
其中 a ≈1.93, b ≈0.79 为默认 UMAP 超参数(实际上为 min_dist = 0.001)。在实践中,UMAP 用 min_dist 超参数从非线性最小二乘拟合到分段函数找到 a 和 b :
为了更好地理解曲线族 1/(1+a y^(2b)的行为,让我们为不同的 a 和 b 绘制一些曲线:*
我们可以看到,曲线族对参数b非常敏感,大体上 b 在小 y 处形成一种平台。这意味着在 UMAP 超参数 min_dist 以下,所有数据点都是同等紧密连接的。由于 Q(Y)函数的行为几乎类似于亥维赛阶梯函数,这意味着 UMAP 为低维空间中彼此靠近的所有点分配几乎相同的低维坐标。 min_dist 正是导致在 UMAP 降维图中经常观察到的超紧密聚集的簇的原因。****
为了演示如何精确地找到 a 和 b 参数,让我们显示一个简单的分段函数(其中平台部分通过 min_dist 参数定义)并通过 Scipy Python 库的 optimize.curve_fit 使用函数族 1 / (1+ ay ^(2 b )对其进行拟合。作为拟合的结果,我们获得了函数 1/(1+a y^(2b)的最优 a 和 b 参数。**
- UMAP 使用二元交叉熵(CE)** 作为代价函数,而不是像 tSNE 一样使用 KL-divergence。**
在下一节中,我们将展示 CE 成本函数中的这一额外(第二)项使 UMAP 能够捕获全局数据结构**,这与 tSNE 只能以中等困惑值对局部结构建模形成对比。由于我们需要知道交叉熵的梯度,以便稍后实现梯度下降**,所以让我们快速计算一下。忽略仅包含 p ( X )** 的**常数项,我们可以重写交叉熵并区分如下:****
- 与 tSNE 使用的随机法线初始化相比,UMAP 使用图拉普拉斯分配初始低维坐标。然而,这应该会对最终的低维表示产生** 的微小影响,这至少是 tSNE 的情况。然而,这将使 UMAP 在每次运行时变化较小,因为它不再是随机初始化的**。通过图拉普拉斯算子进行初始化的选择是由林德曼和斯坦纳伯格的有趣的假设激发的,他们建议在 tSNE 的初始阶段最小化 KL 散度与早期夸张等价于构造图拉普拉斯算子。****
图拉普拉斯、谱聚类、拉普拉斯特征图、扩散图、谱嵌入等。参考实际上相同的有趣方法,该方法结合了矩阵分解和邻居图方法来解决降维问题。在这种方法中,我们从构建一个图(或 knn 图)开始,并通过构建拉普拉斯矩阵,用矩阵代数(邻接矩阵和度矩阵)将其形式化,最后我们分解拉普拉斯矩阵,即解决特征值分解问题。
我们可以使用 scikit-learn Python 库,并在演示数据集上使用 SpectralEmbedding 函数轻松显示初始低维坐标,该数据集为癌症相关成纤维细胞(CAFs) scRNAseq 数据:
- 最后,UMAP 使用随机梯度下降(SGD) 而不是像 tSNE / FItSNE 那样的常规梯度下降(GD) ,这既加快了计算速度,又消耗了更少的内存。
为什么 tSNE 只保留局部结构?
现在让我们简要讨论一下为什么他们说 tSNE 只保留数据的本地结构。可以从不同的角度理解 tSNE 的局部性。首先,我们在等式中有 σ 参数。(1)这设定了数据点彼此“感觉”的局部程度。由于成对欧几里德距离的概率呈指数衰减,在 σ 的小值处,对于远点(大 X) 基本上是 零,并且仅对于最近的邻居(小 X) 增长非常快。相比之下,在大的 σ 处,远点和近点的概率变得可比较,并且在极限 σ →∞处,对于任何一对点之间的所有距离,概率变得等于 1,即点变得等距。
有趣的是,如果我们在 σ →∞处将高维空间中成对欧几里德距离的概率展开成泰勒级数,我们会得到二次近似下的幂律:
关于成对欧几里德距离的幂律类似于【MDS】多维标度的成本函数,已知其通过试图保持每对点之间的距离来保持全局距离,而不管它们是否彼此远离或靠近。人们可以将此解释为逍遥法外 σ tSNE 确实考虑了数据点之间的长程相互作用,因此说 tSNE 只能处理局部距离并不完全正确。然而,我们通常通过有限的困惑值来限制自己,Laurens van der Maaten 建议将 困惑值设置在 5 到 50 之间,尽管在局部和全局信息之间的一个很好的折衷可能是选择大约遵循 平方根定律≈n^(1/2)的困惑,其中 n 是样本大小。在相反的极限中, σ → 0,我们在高维概率的行为中以极端“定域性”结束,这类似于狄拉克δ函数行为。
理解 tSNE 的“局部性”的另一种方法是考虑 KL-divergence 函数。假设 X 是高维空间中的点之间的距离,而 Y 是低维距离,让我们尝试绘制它:
根据 KL-散度的定义,方程。(4):
方程式中的第一项。(9)大 X 和小 X 的是否都接近零。对于小 X,它变为零,因为指数变得接近 1,log(1)=0。对于较大的 X,这一项仍然趋向于零,因为指数前因子趋向于零的速度比对数趋向于∞的速度快。因此,为了直观地理解 KL-散度,只考虑第二项就足够了:
这是一个看起来很奇怪的函数,让我们画出 KL(X,Y):
该函数具有非常不对称的形状。如果高维度中的点之间的距离 X 很小,则指数预因子变为 1,对数项表现为 log(1+ Y ^2),这意味着如果低维度中的距离 Y 很大,将会有一个大的损失**,因此 tSNE 试图在小 x 处减少 y,以便减少损失。相反,对于高维空间中的大距离 X,Y 基本上可以是从 0 到∞的任何值,因为指数项趋向于零,并且总是胜过对数项。因此高维空间中相距甚远的点在低维空间中可能会彼此靠近。因此,换句话说,tSNE 不能保证高维空间中相距很远的点在低维空间中仍然相距很远。但是,它确实保证了在高维度中彼此接近的点在低维度中仍然彼此接近。所以 tSNE 并不擅长将大距离投影到低维中,所以如果 σ 不到达【】,那么**只保留本地数据结构。****
为什么 UMAP 能保留全球结构
与 tSNE 相反,UMAP 使用交叉熵(CE)** 作为成本函数,而不是 KL 散度:**
这导致局部-全球结构保存平衡的巨大变化。在 X 的小值处,我们得到与 tSNE 相同的限制,因为第二项由于预因子和对数函数比多项式函数慢的事实而消失:
因此 Y 坐标被迫变得很小,即 Y → 0,以使惩罚最小化。这与 tSNE 的行为完全一样。然而,在大 X 的相反极限,即 X →∞时,第一项消失,第二项的前因子变为 1,我们得到:
这里,如果 Y 很小,我们会因为对数的分母中的 Y 而得到很高的惩罚,因此 Y 被鼓励变大,使得对数下的比率变为 1,我们得到零惩罚。因此我们得到了 Y → ∞ at X → ∞因此当从高维空间移动到低维空间时全局距离被保留**,这正是我们想要的。为了证明这一点,让我们绘制 UMAP 消费电子成本函数:**
在这里,我们可以看到图的“右边”部分看起来相当类似于上面的 KL-divergence 曲面。这意味着在低的 X 时,我们仍然想要低的 Y 以减少损失。然而,在大的 X 处, Y 距离确实也想变大,因为如果它很小,CE (X,Y)损失将是巨大的。请记住,以前,对于 KL (X,Y)曲面,我们没有任何高低 Y 自由 X 之间的惩罚差异。这就是为什么 CE (X,Y)代价函数能够保持全局距离以及局部距离。
为什么 UMAP 比多伦多快
我们知道,当涉及 a)大量数据点,b)大于 2 或 3 的嵌入维数,c)数据集中大量环境维数时, UMAP 比 tSNE 更快。在这里,让我们试着理解 UMAP 优于 tSNE 的优势是如何来自数学和算法实现的。
tSNE 和 UMAP 基本上都由两个步骤组成。
- 使用二分搜索法和固定数量的最近邻来构建高维度的图并计算指数概率的带宽 σ 。
- 通过梯度下降优化低维表示。第二步是算法的瓶颈,它是连续的并且不能多线程。既然 tSNE 和 UMAP 都做了第二步,为什么 UMAP 比 tSNE 做得更有效率还不明显。
然而,我注意到 UMAP 的第一步比 tSNE 快得多。这是因为两个原因。
- 首先,我们在最近邻数量的定义中去掉了对数部分**,即不像 tSNE 那样使用全熵:**
由于在算法上对数函数是通过泰勒级数展开来计算的,并且由于对数函数比线性函数慢,实际上在线性项前面放一个对数前因子并不会增加太多,因此最好完全跳过这一步。
- 第二个原因是我们省略了高维概率的归一化**,也就是等式 1 中使用的归一化。(1)对于 tSNE。这小小的一步实际上对表演产生了戏剧性的影响。这是因为求和或积分是一个计算昂贵的步骤。**
接下来, UMAP 在第二个台阶上也变得更快了。这种改善也有几个原因:
- 应用随机梯度下降(SGD)代替常规梯度下降(GD) ,如 tSNE 或 FItSNE。这提高了速度,因为对于 SGD,你从样本的随机子集计算梯度,而不是像常规 GD 那样使用所有样本。除了速度之外,这还减少了内存消耗,因为您不再需要在内存中保存所有样本的梯度,而是只保存一个子集的梯度。
- 我们不仅跳过了高维概率的归一化,还跳过了低维概率的归一化**。这也省略了第二阶段昂贵的求和(优化低维嵌入)。**
- 由于标准 tSNE 使用基于树的算法进行最近邻搜索,因此生成超过 2-3 个嵌入维度的速度太慢,因为基于树的算法随着维度的数量呈指数级增长。这个问题在 UMAP 通过降低高维和低维概率的标准化得到了解决。
- 增加原始数据集中的维数,我们在数据上引入稀疏性,即我们得到越来越碎片化的流形,即有时有密集区域**,有时有孤立点 (局部破碎流形)。UMAP 通过引入局部连通性 ρ 参数解决了这个问题,该参数通过引入考虑了局部数据连通性的自适应指数核将稀疏区域(在某种程度上)粘合在一起。这正是为什么 UMAP 可以(理论上)处理任意数量的维度,并且在将其插入主降维过程之前不需要预降维步骤(自动编码器,PCA) 的原因。**
摘要
在本帖中,我们了解到尽管 tSNE 服务 单细胞研究领域多年,但它有太多的缺点**,如速度和缺乏全局距离保持。UMAP 总体上遵循 tSNE 的理念,但引入了许多改进,例如另一个成本函数以及高维和低维概率归一化的缺失。**
请在下面的评论中告诉我,生命科学中的哪些分析对你来说似乎是 T2 特别神秘的,我会在这个专栏中尝试回答这些问题。在 Medium 关注我,在 Twitter @NikolayOskolkov 关注我,在 Linkedin 关注我。下次我们将讲述 如何从零开始给 UMAP 编程 ,敬请关注。