TowardsDataScience 博客中文翻译 2016~2018(五十五)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

培养数据科学家的商业敏锐度

原文:https://towardsdatascience.com/business-knowledge-for-data-science-2aa458b6d988?source=collection_archive---------18-----------------------

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

Making business sense from data

很多次,我都被问到这样的问题,“我怎样才能在分析我的数据时有更多的‘商业意识’?”换句话说,我们如何知道从数据中获得的洞察力对业务是否有价值?

现在,对于一个精通数学和计算机科学的人来说,了解另一个世界——商业——可能非常具有挑战性。因为如果你在数学和计算机科学领域,你需要特别处理的术语、流程和知识,可以是业务规则和流程的不太严格、更复杂的叠加。对我来说,这就是做生意的乐趣所在。

这篇博文旨在帮助新数据科学家培养商业敏锐性,在某种程度上理解他们的见解能带来多大的影响。

商业知识可以分为三个层次。

1 —一般商业知识

2 —行业特定知识

3 —特定于公司的知识

让我们来看看其中的每一个。

一般商业知识

顾名思义,通用商业知识指的是跨业务的相同知识,不管是哪个行业或公司。例如,会计准则(GAAP 或 IAS),了解什么是应收账款、商品成本等。它可以是一般的战略管理模式,如平衡计分卡、SWOT 分析。它可以是对一般物流流程、制造等的理解。这样的知识和信息很可能在典型的 MBA 课程中找到,所以你可以通过与企业管理和经营相关的课程获得它们。

行业知识

行业特定知识将取决于企业所处的行业。例如,如果你在金融行业,你必须关注法规和合规,会计标准和风险管理标准,如国际财务报告准则,巴塞尔协议三等。从事金融行业时,还需要了解当地法规。诸如信用卡申请的最低年龄、监管机构设定的抵押贷款额度等规则是行业特定的。

如果你从事医疗保健行业,人体药物试验应该如何进行,所需的许可等也是特定行业的知识。

为了获取这些知识,我推荐商业周刊,如《彭博商业周刊》和《经济学人》。他们报告了行业的最新趋势,并对行业的影响进行了良好的分析。

公司具体知识

公司的具体知识包括你所在公司的竞争优势、商业模式、收入模式、目标市场、业务流程等。这些知识有些是“最高机密”,对于不同的公司有很大的不同。

一个可能的来源是存档并公开的财务报表。但是,公司特有的知识绝对不能在学校和项目中教授。这些知识通常只有在你加入公司后才能获得。

总之

一般的商业知识和特定行业的知识可以很容易地通过书籍、商业期刊和 MBA 项目获得,但特定公司的知识是无法教授的,当一个人在特定的组织/企业工作时,必须掌握这些知识。

如果这个博客对你有用,请鼓掌。我希望所有读者有一个有趣的数据科学学习之旅,并访问我的其他博客文章LinkedIn 个人资料

业务流程管理符合数据科学

原文:https://towardsdatascience.com/business-process-management-meets-data-science-b4545f2886cb?source=collection_archive---------3-----------------------

从“业务流程管理”到“智能持续改进”的提升

数据科学是利用数学、统计学和数据可视化的相对较新的实践。过去十年,随着系统生成的数据量(即“大数据”)不断增加,这种做法应运而生

通过探索大量的数据,有可能发现和理解复杂的趋势和行为。通过更好地理解数据,人们可以做出更明智的决策。

例如,网飞从用户的搜索历史和观察列表中分析大量数据,以了解他们的习惯和兴趣。通过分析技术,他们能够猜测用户可能有兴趣观看的其他内容。由于强大的算法,网飞的建议是可能的。

这是大数据使用的第一个例子,可以用亚马逊、谷歌、多米诺骨牌(是的,比萨饼制造商)和美国宇航局的例子来补充,它们都使用自己的算法和方法来利用大数据。

应用领域非常广泛:在线销售、翻译、送货方向、宇宙探索等等。

数据科学的基础是统计学和数据可视化。

统计

1989 年,阿科夫通过定义一个层次结构:“数据—信息—知识”,展示了数据如何有助于构建知识。

统计工具对于从数据探索中获取知识非常有效。统计用于汇总对共享相同属性的对象的观察结果。将数学公式应用于这些观察结果,以生成关于该属性的数据。

例如,网飞存储了每个用户搜索或观看的电视节目的观察结果。这使得他们能够识别用户的兴趣。

数据可视化

描述性统计用于生成表格、图形、图表等形式的信息。通过图表表示的大量数据更容易阅读。数据科学家将使用这些图表来更好地理解他/她所分析的系统。

预测模型

应用于统计学的数学模型将允许数据科学家建立预测或建议。所以下一步,也是最有趣的一步是通过应用人工智能来建立预测。

数据科学可以用来解决的一些问题示例:

  • 系统用户的习惯是什么?
  • 给定数据在一段时间内的连续转换是什么?
  • 商业活动有模式吗?
  • 给定事件发生的概率是多少?
  • 一个产品在未来一周的价格是多少?

为了“猜测”这些问题的答案,数据科学家收集系统产生的大量数据,并应用数学公式提取信息,以便了解某项业务活动。要确定认为某一事件将会发生是否合理,其思路是查看所有数据,确定先决条件,并检查它们当前是否得到满足。

业务流程管理

业务流程的定义基于业务和组织的模型。使用基于 BPM 的平台,自动化流程以创建基于流程的应用程序的开发人员可以完全控制世卫组织必须执行什么任务以及何时执行。

谁:特定最终用户(客户、员工)与流程交互的方式包含在流程定义中(通过用户界面:webforms、页面和门户)。

什么和什么时候:要完成的特定任务,以及这些任务的顺序,也是过程定义的一部分。

此外,通过流程应用程序生成的业务数据也可以在 BPMN 图模型中清楚地识别出来。

简而言之,BPM 旨在保证用户将按照预定义的顺序执行任务和更新数据,并且通常是在预定义的时限或截止日期内。业务规则由过程定义来实施。

数据科学应用于 BPM

由于 BPM 为用户活动(习惯)提供了受约束的工作流,自动化了数据转换,并确保按照预定义的顺序执行操作,数据科学能否从 BPM 应用程序生成的数据中回答特定的问题?

在这个挑战中面临的主要困难之一是业务流程产生的数据的异构性。每个使用 BPM 的项目都是不同的,可以属于不同的业务垂直领域(例如,电子学习、银行、教育、制造等)。

在 Bonitasoft,我们使用的数据来自实际项目的真实环境,当然是匿名的。这些数据可以帮助我们创建适用于许多垂直业务的强大算法。

我们期待数据科学提供从“业务流程管理”到“智能持续改进”的提升,使用预测模型的数据、算法和 BPM 结构来帮助增量和持续地进行更智能的业务改进。

业务转型:大数据分析如何帮助

原文:https://towardsdatascience.com/business-transformation-how-big-data-analytics-helps-f8460a1986d0?source=collection_archive---------4-----------------------

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

全球许多企业都在使用大数据分析来实施运营战略和促进业务转型。在 SAP 和英特尔的支持下,IDC 开展了一项调查,研究组织如何使用大数据和分析解决方案来促进业务转型和最佳实践。

IDC 有一个大数据成熟度模型,可用于根据五个参数评估组织:意图、数据、人员、流程和技术。该评估有助于确定其大数据和分析计划的有效性,并了解其进展程度。此外,可以就所述举措对各组织进行比较;这种比较可以进行基准测试,并揭示特定企业如何提高其分析成熟度和相关成功率。

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

分析和业务战略

在我之前的一篇文章— 大零售成功的大数据分析 —中,我讨论了数据在类型、数量和速度方面是如何演变的。这种快速发展可以归因于全球范围内业务流程的广泛数字化。

使用分析解决方案的实时数据分析使全球企业能够做出快速有效的商业决策。分析仅仅用于历史数据研究的日子已经一去不复返了。我们目前生活在一个时代,由于预测分析和高级数据科学的力量,企业拥有强大的前瞻性能力。

白皮书— 构建以分析为先的组织 —讨论了将分析嵌入组织 DNA 的重要性;在数字时代,数据驱动是维持业务增长的必要条件。大数据分析战略的有效部署是推动业务转型的关键,因为分析使组织能够跟上不断变化的业务需求和快速发展的技术格局。

大数据成熟度

大数据战略的成功取决于组织在分析部署、人员、技术、最佳实践等方面的成熟度。这种成熟度与组织借助大数据实现业务转型的能力成正比。

IDC 定义了五个阶段来确定组织在大数据业务方面的成熟度,以及为了进一步成熟可以采取的步骤。

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

  1. 临时:当业务需求出现时,大数据计划就会得到推动。缺少特定的分析部署模型,没有正确定义个人角色,并且缺少可衡量的资源分配方法。
  2. 机会主义:对商业目标有更清晰的理解。然而,在项目管理和资源分配方面仍然存在效率低下的问题。
  3. 可重复:为各种商业活动定义大数据战略。此外,有足够的预算分配和利益相关者的支持。
  4. 托管:分析部署模式和大数据战略更符合企业目标。建立了最佳实践,并通过上述策略持续产生了显著的投资回报。组织变得由数据驱动,分析成为其运营 DNA 的一部分。
  5. 优化:大数据和分析计划完全可操作化。有一个高效的卓越中心来管理这些计划。该组织使用颠覆性的部署模式和技术,在其市场上产生重大影响。现在的重点是创新和持续的业务转型,以实现前所未有的商业价值和影响。

大数据创新者

1,810 家组织参与了 IDC 的调查。IDC 报告称,在这些组织中,就大数据成熟度而言,只有 59 家属于“高级组织”类别。大数据创新者也属于这一类别;就上面讨论的成熟度框架而言,大部分创新者处于管理的阶段,而其他人正在接近跨越可重复的阶段,少数人几乎处于优化的阶段。

大数据创新者已经确定了支持业务转型的三大支柱— 盈利能力、高运营效率和以客户为中心。早期采用新兴技术将有助于简化和改进分析流程,进而提高运营效率和决策水平。此外,对实时数据的访问有助于组织更快地了解客户行为和需求,从而使他们领先于竞争对手一步。因此,它使他们能够真正根据不断变化的市场动态进行转型,提高客户保持率,并增加盈利能力。

大数据创新者在他们对数据和分析以及业务成果的基本观点和方法方面表现出许多相似之处。下面列出了一些最重要的相似之处:

  • 大数据分析计划的投资回报产生得更快—在部署后的六个月内。
  • 他们的数据质量很高,并且与业务目标相关。此外,他们的数据挖掘和仓储能力本质上是安全和及时的。
  • 他们中的大多数都有针对大数据和分析项目的企业预算。
  • 具有声音可视化、预测和实时功能的高级分析技术的采用率要高得多。这同样适用于数据管理技术。
  • 从管理层到 IT 部门,各个组织级别都支持大数据和分析计划。
  • 技术的不断进步被认为是培育业务转型和创新的必要条件。

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

技术和业务转型

分析项目的有效性和先进技术的采用率之间存在相关性。技术是业务转型的推动者;高级分析技术使组织在跟上不断变化的业务趋势和客户需求方面更加敏捷。

根据 IDC 调查,71%的大数据创新者使用具有高级预测和实时可视化功能的高级分析工具。因此,这种技术的使用给企业带来了竞争优势和培养更加以客户为中心的方法的能力。

日益增长的数字化将导致新数据源的产生,这意味着总会有更多的数据需要存储和分析。这使得从大数据项目中获取价值变得更加困难。因此,IDC 调查的 93%的组织处于大数据成熟度的机会阶段可重复阶段也就不足为奇了。在这种情况下,技术主导的业务转型对于维持更高水平的大数据和分析成熟度至关重要。此外,应该通过确保不同数据管理系统对特定数据类型的可用性来改进数据仓库。

分析即服务

建立一个专门负责大数据运营的部门并不一定是每个企业日程的一部分。大多数公司要么缺乏必要的技术能力,要么不愿意对内部人才和资源进行必要的投资。由于分析即服务(AaaS ),这些公司仍然有能力成为数据驱动型企业。

分析服务提供商的出现使得先进的大数据和分析技术更加经济实惠、易于使用、用户友好,因此也更加大众化。此外,AaaS 有助于组织部署大数据和分析项目,最大限度地减少持续业务流程中的中断,从而实现无缝业务转型。

想想电影《变形金刚》中的大黄蜂,他在几秒钟内从一个普通的运动机器——雪佛兰科迈罗——变成了一个高效多面的外星机器人。这就是 AaaS 为企业所做的;这使他们能够更快地实现业务转型,而不会降低运营效率。


这篇文章最初出现在 BRIDGEi2i 博客上。

但是(k 最近的)邻居会怎么想呢?

原文:https://towardsdatascience.com/but-what-will-the-k-nearest-neighbors-think-a21f3f736898?source=collection_archive---------19-----------------------

构建一个 JavaScript 喜剧推荐引擎,探索 k 近邻的概念

我最近共同发表了关于机器学习的基础知识,这对我来说是一个非常新的话题。在研究该领域中使用的一些常见回归和分类算法时,我寻找了每种方法的实际用例。k-最近邻算法是最常见和最容易实现的方法之一,通常用于推荐我们产品的推荐引擎,学习我们的媒体消费习惯,并努力保持我们的点击、消费和购买。我很想了解这是如何工作的,并决定深入研究一下。

好吧,那么什么是推荐引擎呢?可以定义为基于用户过去的行为,用来培养对用户相关的产品或内容的一系列算法。当过去的行为不可用时,引擎可以默认基于整体用户数据或公司的利润考虑的一般化建议。我们都可能对到处跟踪我们的用户跟踪感到有点害怕,这种跟踪与我们的期望和需求有点太合拍了。好的推荐和霸道的用户体验之间只有一线之隔,但拥有一个有效的推荐引擎通常会改善用户体验,并转化为销量的增加。

推荐引擎有几种工作方式。简单的推荐者会跟随总体趋势,让用户了解他们产品的总体需求。更复杂的引擎将使用用户反馈——通过提交反馈或在线跟踪的有机用户行为——来将用户划分到简档中。在将用户基础分割成简档之后,新用户可以相对于现有用户被划分到那些简档之一中。符合相同简档的相似用户将可能享受相似的推荐。

好吧,那么 k 近邻会怎么处理这个呢?井 k-最近邻是一种分类和回归算法,它绘制整个训练数据集并分析数据点之间的距离。我们可以将距离视为相似性得分,它允许我们识别与任何一个标绘点最相似的数据点。生成该距离值的一个简单方法是计算两点之间的欧几里德距离,方法是对每对数据点之间的差求平方,对平方求和,然后求和的平方根。

与任何简单的方法一样,这也有缺点。特别是对于像用户评级这样的反馈,欧几里德距离将忽略用户反馈中的细微差别,例如每个用户的评级的整体范围。如果用户 1 评价很好,用户 2 评价很差,他们的评价不一定不相关。欧几里德距离不能校正这一点,并且会将它们的分数视为非常不同。Pearson correlation score 可以通过将所有用户评级绘制成一条线来寻找相关性而不是相似性来纠正这一点。这允许更细微的相似性得分。

使用 k-最近邻的另一个主要缺点是运行起来计算量很大。该算法利用了完整的训练集,在任何给定时间都可以处理大量数据。抵消这种情况的一种方法是创建预先生成的查找表,以简化计算并提高性能。

有许多技术(和替代方法)可以用来构建推荐引擎。毫不奇怪,Python 在数据科学家中很受欢迎,因为它有许多有用的库,所以是以这种方式处理数据的最常推荐的语言。然而,Java 中的 LibRec 也可以很好地工作。这个问题也可以用图论来解决。对于这种方法,通常推荐使用 GraphQL 和 Neo4j。

但是我们如何使用欧几里德距离和 k-最近邻来构建一个简单的推荐器呢?作为第一次尝试,我用 vanilla JS 构建了一个简单的喜剧推荐器。

首先你需要收集一些数据。出于我的目的,我随机生成了一组喜剧演员的用户评级。(因此,请记住…这些建议只有在随机生成的评级碰巧有效时才有效!)

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

The more data you have, the better you calculations will be. I kept it pretty simple at 100.

我在 HTML 评级提交表单上设置了一个监听器,收集所有用户提交的评级和相应的喜剧演员。我将数据集合发送到 findNearestNeighbors 函数中。它使用一个辅助函数来查找新用户数据和我的数据集中所有用户数据之间的欧几里德距离。它将生成新数据集的 5 个最近邻居,并将这些邻居的对象(以及新用户的评级)发送到我的 recommendNewComedians 函数。

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

I have saved a new attribute of simScore into our ratings object and sorted through it to find the ratings data with the highest similarity scores.

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

This helper method finds the similarity score between the new user and every other user and returns.

最后,我们查看五个最近的邻居,并平均出新用户不熟悉的每个喜剧演员的分数。然后对该数据进行排序,并将五个得分最高的新喜剧演员添加到推荐对象中,该对象将用于向用户呈现结果。

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

现在,我们可以基于最近邻评级来提供预期评级。为了更彻底,你可能想要做加权平均,权衡最近的邻居作为一个更有意义的反应。对于这个例子,我只是处理了一个简单的平均分数。

根据评分和评论来考虑推荐可能是最简单的,但是同样的过程也可以用于你收到的任何类型的用户反馈。想象一下重视用户交互,这样你就可以用它们来进行计算。如果电子商务平台中的用户多次访问相同的产品,将产品添加到购物车,或进行购买,这表明与该产品有积极的关联。而关闭一条建议则是负面联系的明显表现。这些类型的分数可以以同样的方式进行操作,以基于有机反馈进行推荐。

[## 从头开始构建推荐引擎的综合指南(Python 语言)

引言在当今世界,每个客户都面临着多种选择。例如,如果我在找一本书来…

www.analyticsvidhya.com](https://www.analyticsvidhya.com/blog/2018/06/comprehensive-guide-recommendation-engine-python/) [## 用图论在 JavaScript 中构建一个简单的推荐引擎

利用用户行为推动推荐

medium.com](https://medium.com/@keithwhor/using-graph-theory-to-build-a-simple-recommendation-engine-in-javascript-ec43394b35a3) [## 推荐引擎是如何工作的?又有什么好处?

购物是每个人的必需品,当我们购物时,它肯定是我们喜欢的产品或我们的…

www.marutitech.com](https://www.marutitech.com/recommendation-engine-benefits/)

自带设备:建立自己的数据集(免费使用网络抓取)

原文:https://towardsdatascience.com/byod-build-your-own-dataset-for-free-67133840dc85?source=collection_archive---------2-----------------------

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

十秒外卖: 了解如何通过简单的网络抓取创建自己的数据集,使用 python 的 beautiful soup 挖掘整个 Metacritic 网站的游戏评论,并免费托管在谷歌云平台(GCP)微(始终免费层)

有抱负的数据科学家总是对学习理论后的第一步感到困惑。他们能够应用积累的知识的地方很少。当然,有大量的数据集可用,但免费的数据集永远不会给你解决实际问题的务实见解,或者有时它们太小,无法用于深度学习应用程序。

获取强大数据集的一种方式是付费或注册昂贵的课程,另一种方式是网络抓取。在这里,我告诉你如何免费使用 python 抓取大型数据集!

为什么我选择了网络抓取和使用谷歌云?

  • **数据变得陈旧:**当你搜集数据时,你可能会得到任何主题的最新数据。虽然你可以从 Kaggle 获得强大的数据集,但如果你想为你或你的公司创造一些新鲜的东西,比如说,抓取就是一种方法。如果你想为鞋子建立一个价格建议,你会想要来自亚马逊的最新趋势和价格,而不是两年前的数据。
  • **可定制:**你可以定制代码,只从你想要的任何来源获取你需要的数据。
  • 为什么不是本地的?由于云计算市场上有谷歌和亚马逊这样的大公司,出租一台电脑几个小时是非常便宜的。他们也给你一个免费层,这是完美的简单的东西,如网页抓取。GCP 稍微便宜一点,而且一开始会给你 300 美元的积分,所以我选择了 GCP。此外,我不希望我的 IP 被封锁(呵)
  • 有趣:这是我对周五晚上的想法!

在我的例子中,我没有找到一个很新的游戏评论数据集,因为 Metacrtic 拥有最大的游戏库,并且会定期更新,所以我决定使用它。

入门

您所需要做的就是遍历 URL 列表,识别数据容器,提取数据并将其存储在 csv 中。

1。使用的库

import urllib2
import csv
from bs4 import BeautifulSoup
import pandas as pd
  • urllib2 :我们的用于进行 url 请求的库。
  • csv :以 csv 格式存储数据的库
  • bs4 :漂亮的汤库,让从网页中提取数据变得非常容易。
  • 熊猫:以漂亮的表格格式存储数据。

2。了解网站的流程

元符号布局非常简单。所有数据的结构如下

http://www.metacritic.com/browse/游戏/发布日期/可用/pc/metascore?view=detailed & page=1

让我们来分解一下:

  • http://www.metacritic.com/browse/:是域
  • **游戏:**这给出了子部分,并且可以被其他子部分的电影/音乐替换
  • 可用/pc/ :此部分为 pc 提供数据。对于 ps4 游戏的数据,请将其更改为 ps4。
  • metascore :这给出了根据元分数的排名,我们可以将其更改为“**user _ rating”**以根据用户评分获得数据。
  • view=detailed : 这给出了我们选择的视图类型 detailed,因为它包含更多的数据,如流派和成熟度等级。
  • page=x: 这给出了页码 x 。如果页码不存在,站点会返回一个没有数据的空白模板页面,并且不会抛出错误

接下来,我们决定包含数据的 html 元素。为此,我们使用 Chrome 中的检查工具。我们选择元素并突出显示子部分,以获得 html 元素及其类。

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

use the inspect button on the top right (circled) then highlight the area you want the HTML element for

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

the release data is in the element li and has class stat release_date

现在我们知道我们需要提取什么元素,让我们继续提取它们。

3。发出 URL 请求

metacritic_base = “http://www.metacritic.com/browse/games/release-date/available/pc/metascore?view=detailed&page="hdr= {‘Accept’: ‘text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8’, ‘User-Agent’ : “Magic Browser”}filepath=’/Users/rra/Downloads/’for i in range(0,54):
    metacritic = metacritic_base+str(i)
    page = urllib2.Request(metacritic, headers=hdr )
    content = urllib2.urlopen(page).read()

Metacritic 有一个简单的站点布局,带有一个静态 URL,其中每个页面的页码都是变化的。

我们使用了 urllib2。请求请求页面和 Urllib2urlopen 读取页面数据

提示:有 53 页,所以我把我的计数器的最大值设为 54,但是你可以简单地在一次尝试中包括所有这些,除了遇到错误时退出。

4。提取数据

然后我们读取数据

soup = BeautifulSoup(content, ‘html.parser’)
right_class=soup.find_all(‘div’, class_=’product_wrap’)
for item in right_class: try:
      link=item.find(‘h3’, class_=”product_title”).find(“a”)
      g=link.get(‘href’)
      except: g=’' try:
        score = item.find(“span”, class_=”metascore_w”)
        s=score.text
      except: s =’’ try:
       dt = item.find("li", class_="release_date").find("span",    class_="data")
       d=dt.text
      except: dt='' try:
       rating=item.find("li",class_="stat  maturity_rating").find("span", class_="data")
       r= rating.text
     except: r="" try:
      pub =item.find("li",class_="stat publisher").find("span", class_="data")
      p= pub.text
    except: p=''

   try:
     genre= item.find("li",class_="stat genre").find("span", class_="data")
     gr = genre.text
   except: gr='' try:
   user_score=item.find("span", class_="textscore")
   u = user_score.text
   except: u=''

我们使用 BeautifulSoup(content,’ html.parser’) 来完成解析大量 html 的所有繁重工作。

现在我们在上一节中看到,每个游戏数据都在一个 div 中,其中包含一个名为 product_wrap 的类。因此,我们提取所有这样的 div,并迭代每个 div 以获得数据。我们在这里存储以下数据:

  • g:游戏名称
  • 学生:metascore
  • 发布日期
  • 出版商
  • r:安全等级
  • u:用户评级
  • gr:流派

提示 : HTML 不可靠,所以最好使用 try:除了切换每个提取

5。保存数据

game=[g,s,d,r,p,gr.strip(),u]
df = pd.DataFrame([game])
with open(filepath+'gamenames.csv', 'a') as f:
   df.to_csv(f, header=False, index=False, quoting=csv.QUOTE_NONNUMERIC, sep="|")

我们使用 pandas 将 list 的列表转换成表格,然后将数据写入 csv。这里我们使用 | 作为分隔符,因为流派列包含**、**(逗号)

6。在谷歌云上运行代码

我想你应该知道如何开设一个 GCP 账户。如果现在,请跟随这篇博文学习如何做。您需要创建一个实例,如下所示。

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

Creating a GCP instance

一旦它运行,您需要在它上面安装 python,并将代码从您的本地机器复制到实例中。这里球形乌鸦是项目名称,实例-2 是实例名称。你还需要指定谷歌的时区。

提示:记得在 ssh 到实例后更新你的 ubuntu。

gcloud compute — project “spheric-crow” ssh — zone “us-east1-b” “instance-2”gcloud compute scp scrap.py instance-1:scrap

scp 将文件从本地机器复制到 GCP 实例。接下来,您需要在您的实例上安装上述库。接下来安装 byobu 这是一个基于文本的 windows 管理器。这将保持会话完整,即使您的 ssh 连接中断。

Sudo apt-get install byobu
byobu

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

byobu interface, you create separate tabs and run multiple code at the same time

最后使用下面的命令运行代码,就完成了。

python scrap.py

提示:您可以从我的 github 帐户中选择 scp 或简单的 git pull。

7。检索挖掘的数据

您可以再次使用 scp 从云中获取挖掘的数据,现在您有了一个非常酷的数据集可以使用了!

gcloud compute scp instance-1:scrap/game_review.csv /Users/

然后,您可以使用 python 作为

import pandas as pd
df= pd.read_csv(“/metacritic_scrap/gamenames.csv”, sep=”|”)
df.columns=[“game”, “metascore”,”release_date”, “maturity_rating”,”publisher”, “genre”, “user_rating”]

你的数据集看起来会像

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

看看这个结构有多好!

提示:你也可以自动完成这项工作!

提示和技巧

  1. **礼貌点:**大多数网站会反对你挖掘他们的内容,因为这会给他们的服务器带来很大压力。尽量避免在短时间内提出过多的请求,并阅读 robots.txt 文件。这里有一些尽可能减少错误的技巧:
  • Sleep :包括 sleep ,在下一个请求发出前将代码延迟几秒钟。我更喜欢使用 sleep (randint(a,b)) 即使用随机整数而不是固定值。
from random import randint
from time import sleep
#pause for 20-100 seconds randomly
sleep(randint(20,100))
  • 用户代理:是浏览器或 app 发送给你访问的每个网站的字符串。我们使用一个用户代理生成器来欺骗网站,让它认为请求来自不同的浏览器。由于许多机构使用同一个 IP,我们通常不会冒太多请求错误的风险。 这里的 是你可以使用的热门用户代理列表。
from user_agent import generate_user_agent
  • VPN 和代理:如果你正在挖掘一个大的数据集,你最终会得到一个太多请求的错误。就我而言,大约每 2000 页。因此,为了应对这种情况,您可以轮换几个代理,并在每次实例运行时获得大约 5k 的页面。你可以在这里获得一些免费代理

**2。陷入验证码中:**一些网站真的不想让你抓取他们的数据,他们会在适当的地方设置验证码。如果这是一个简单的 4-5 个字母数字的验证码,你可以尝试使用 Python 宇宙魔方这种技术来破解。如果是谷歌重新验证码,你每次都要像这些人一样手动解决。

3。异常处理: HTML 非常不可靠,站点可能不会一直遵循严格的模式,所以最佳实践是在 try:except 语句中包含每个元素。

4.定期保存: Web 抓取是一项有风险的业务,如果您不定期保存数据,您可能会丢失迄今挖掘的整个数据集。一个简单的解决方案是定期将数据保存在 csv 中(像我一样)或使用 SQLite(像聪明人一样)。关于 sqlite 的介绍可以在这里找到。

下一步是什么?

我们可以使用相同的代码来挖掘其他内容负载的元符号,只需更改基本 url:

  • 电影评论/评级
  • 电视节目评论/收视率
  • 音乐评论/评级

我扩展了我的代码,以挖掘大约 5k 个 PC 游戏的所有大约 100k 个用户评论的数据,并且我已经提到我将把它用于游戏推荐引擎(随后是博客帖子)。如果你想分一杯羹 发邮件 给我,我会给你发一部分数据集!

Metracritic 的网站布局非常容易理解,并且通过一个简单的 for 循环来复制,但对于挖掘更复杂的网站,如亚马逊,我们使用一个名为木偶师的浏览器自动化工具,它模拟点击来生成下一页等等。

看看艾玛德·艾山关于如何使用木偶师的博客。

这篇博客的全部代码可以在我的 git 上找到。用户评论抓取的完整代码也可以在这里找到。

在下一篇博客中,我将对这个伟大的数据集进行一些数据辩论和深度学习。敬请期待!

这是我的第一篇帖子,如果你喜欢,请评论并鼓掌:)

蛋糕架和纸鸟:Python 中的电子商务群组分析

原文:https://towardsdatascience.com/cakestands-paper-birdies-e-commerce-cohort-analysis-in-python-e33d0cf70dfc?source=collection_archive---------11-----------------------

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

英国在线零售商的数据清理和群组分析

随着电子商务继续快速增长,传统实体企业正专注于在线努力,以跟上亚马逊等领导者的步伐。沃尔玛最近进入和收购 Jet.com 极大地推动了增长,美国电子商务在 2018 年第二季度增长了 40%。

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

对于电子商务机构,群组分析在了解销售数字和客户方面发挥着重要作用。群组分析是指根据客户的购买日期或首次购买日期将客户分成“群组”。

然后可以跟踪每个群组的后续活动,以更深入地了解关键客户指标,如客户终身价值和保留率。客户终身价值是指在所有未来的互动中,你期望从该客户那里获得的总预期利润。留存率是指每个时间段后,原有客户留存的百分比。

通过这一分析,我希望解决两个关键问题:

  1. 你是如何解读和清洗电商数据的?
  2. 如何创建一个简单的群组分析来比较不同群组的指标?

这里使用的数据集来自于 UCI 数据仓库,包含了一家总部位于英国的销售全日礼品的无店铺零售店的 541,909 笔交易。注意,这个数据集的客户是批发商,而不是个人消费者。因此,超过 1000 件的订单量是合理的。

我们创建了一个新的“tot_order”列来表示订单总额,它只是单价和数量的乘积。

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

缺少值

现在我们已经知道了数据帧的样子,让我们用 missingno 检查丢失的值。

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

带有 missingno 的快速可视化显示,客户 id 有相当多的缺失字段。因为我们需要识别特定的客户,将他们放入队列中,我们将不得不放弃缺少客户 id 的订单。

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

负订单

看一下数量值也会发现一些负值。这些都可以解释为退款。让我们借此机会看看这些价值观告诉我们什么。

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

似乎 3 层蛋糕架是最常退款的项目。

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

然而,就退还的总货币价值而言,蛋糕架远远落后于纸小鸟和陶瓷储物罐。这个异常值将在下面进一步讨论。

由于在每个退款的原始数据帧中有匹配的购买,每月的总购买和收益不受影响。因此,这些退款不必取消。

极端值

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

看一下数量和单价的分布,可以发现大多数数值都是个位数。然而,订单数量和单价的异常值似乎分别高达 80,995 和 38,970。

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

通过快速过滤,我们发现异常值主要存在于每件价格在 1-2 英镑左右的小件商品中。最明显的异常值是发票号 581483。看来有人真的很喜欢精心制作的纸小鸟。

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

不过,从这个退款订单来看,可能没有那么多…

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

在离群值中似乎没有任何其他条目来暗示扭曲销售历史,尤其是当一些最大的门票都被取消时。

单价异常值怎么办?查看最高平均值会发现一些可疑的“产品”:

  1. 网络邮资
  2. 克鲁克委员会
  3. 指南
  4. 折扣

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

“网络邮费”似乎表明了顾客在邮费上的花费。平均 744,这是所有产品平均单价的 200 多倍。此外,邮费不是销售的直接指标,可能会扭曲不同人群的消费金额。似乎还有一个类似的标签“邮资”,我们也将删除。

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

“CRUK Commission”听起来像是支付给外部组织的费用,在谷歌上快速搜索一下,就会发现英国癌症研究所的相关结果。这可能是向癌症研究工作支付一些收益的倡议的一部分。由于这与销售没有直接关系,我们应该删除“CRUK 佣金”行。

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

“手册”是一个相当模糊的产品。手动的有 465 条记录,单条记录指挥单价 38970。由于我们没有关于这家在线零售公司运营的具体信息,我猜测‘人工’是指购买其他商品时提供的人工服务。这可能是枝形吊灯或仓库货架的设置。由于这些交易存在与个别产品销售不直接相关的显著异常值,我们也将删除“手动”记录。

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

“折扣”似乎是为售出产品提供折扣的一个不言自明的类别。所有这些交易都有负销售量,这一事实进一步证实了这一点。由于折扣与产品价格直接相关,并直接影响销售,我们将把它留在数据框架中。

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

销售总结

随着数据的大量清理,让我们来看看销售数字。

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

不出所料,英国占了销售额的大部分,因为这是一家位于英国的商店。

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

尽管有大量退款,cakestands 仍是总销售额最高的产品。

队列分析的准备

格雷格·瑞达(Greg Reda)令人惊讶的简单代码。对于群组分析,我们需要创建一些标签:

  1. 发票周期—单个交易/发票的年份和月份的字符串表示。
  2. 群组—客户首次购买的年份和月份的字符串表示。该标签在特定客户的所有发票上通用。
  3. 群组周期——客户“生命周期”阶段的整数表示。该数字表示自第一次购买以来经过的月数。

发票期

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

基于发票日期创建新列的简单 strftime 函数就足够了。

同组

对于群组标签,我们试图找到顾客第一次购买的日期。我们首先根据客户 id 对数据帧进行重新索引,并根据索引进行分组。

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

接下来,我们找到最小发票日期,它应该代表第一张记录的发票。应用相同的 strftime 函数,因此客户的所有发票都具有相同的群组标签。

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

之后别忘了重置索引!

聚合指标

在我们创建群组期间之前,让我们根据 invoice_period 和 Groupon _ group 标签对数据帧进行分组。

我们通过客户和产品的唯一 id 和描述来统计一段时间内售出的客户和产品的总数。然后,我们将销售数量和总发票金额相加,得到该期间的总销售额。

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

同期期

对于群组分析,必须确定该客户一生中的购买行为。例如,如果客户在 5 个月前加入,我们需要从 1 到 5 的标签来识别每个月的指标。

我们首先通过“群组 _ 群组”对先前的群组对象进行分组来创建该标签。然后我们找出每个组的长度,并用 np.arange()创建一个列表来表示这个范围。例如,np.arange(5)返回[0,1,2,3,4]。

因为我们希望这个列表从 1 开始,所以我们给这个范围内的每个数字加 1。

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

跨群组的销售汇总

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

虽然不完全具有代表性,因为这些只是一年的销售数字,但很明显,2010 年至 2012 年第一批的客户数量和销售数字要高得多。理解这一群体的一种更有代表性的方式是,他们是之前与这家商店有过关系的现有顾客。因此,他们自然会表现出更高的客户参与度和活跃度。

这家在线零售商的销售背后似乎还有一个轻微的季节性因素。第一季度和最后一个季度的初始购买量较高。同样,2010 年至 2012 年的采购也表明这两个季度的活动增加。由于大多数产品都是礼品,这种增加的活动可以归因于这些时间段所代表的假日季节。

跨群组的保留率

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

纵观各队列的保留率,可以看出 2010-2012 年队列的持续参与度很高。由于这些都是现有客户,这是很直观的。

在第一次交易后,后续群组的保留率几乎立即下降到 20%左右。季节性的影响对于 2011 年至 2011 年的发票期尤为明显。在本发票期内,所有组别的保留数字都是最强的,回到了 30%左右。假期的积极影响似乎在这里得到了很好的支持。

改进和后续行动

  1. 如上所述,这是一个相当有限的数据集,因为它只包含一年的交易数据。如果能获得更长时间的数据,队列分析会更有价值。
  2. 除了季节性和节假日期间,没有关于可能影响销售和保留率的业务特定事件的进一步信息。如果有广告活动或新产品发布的数据,看看销售是否会受到不同人群的影响,那将会很有意思。
  3. 考虑到缺少客户 id,大约四分之一的初始数据集被丢弃。有些包含有趣的变量,如亚马逊费用,可能会影响每月的销售数字。
  4. 有一些大客户的账户,他们可以很好地转化为一些帕累托图(即将推出)。
  5. 有了更详细的数据集,我愿意尝试一些终生客户价值分析和预测。如果有任何关于数据集的建议,请发送给我!

感谢阅读!代码可以在这里找到,也可以在 LinkedIn 上自由连接!

用张量流计算 D&D 损伤

原文:https://towardsdatascience.com/calculating-d-d-damage-with-tensorflow-88db84604f0a?source=collection_archive---------7-----------------------

在过去的几天里,我一直在头脑风暴关于数据科学技术的博客主题,我没有写太多。然后我想起来,我实际上还没有使用 Tensorflow 的对象检测库做多类模型的帖子。一旦技术想法确定下来,我只需要决定一个应用它的主题。

我在看我最喜欢的每周 D&D 秀《关键角色》的时候想到了一个有趣的点子。《关键角色》是一部由一群书呆子配音演员聚在一起扮演 D & D 的电视剧,自 2015 年开播以来,我一直在关注它。这也启发了我在地下城主屏幕的两边玩几个战役。无论如何,下面是我对这篇文章想法的总结。

无论你是一个名叫瓦克斯·伊尔丹的半精灵盗贼,在一次偷袭中对煤渣之王索达造成 118 点伤害,还是在九头蛇吃掉你的队伍之前砍倒它来拯救队伍,D&D 都会在伤害计算中加入大量的骰子。如果你像我一样,实际上不喜欢数它们…为什么不让神经网络来帮你数呢?!?

首先,不,我不想只是使用电子掷骰子机,因为我真的很喜欢掷骰子…这就像用电子掷骰子机玩骰子一样…只是感觉不对…建立一个模型来总结骰子对我来说似乎是一个很好的妥协,正如他们所说的那样,懒惰刺激创新。

这是一个我可以用多种方式解决的问题。我最初想到的方法是以两个阶段的方式构建它,其中第一个模型只提取给定骰子的顶面,而第二个阶段对数字进行分类。然而,这实际上并不涉及我想为帖子构建的多类检测器。因此,我最终做的是测试一个更快的 R-CNN 模型如何处理一个定制的多类问题,我在 6、8、10 和 12 面骰子上跟踪骰子 1-12 的数字。我将在后面讨论当前模型的缺点时谈到这些权衡。大多数问题都是以处理骰子旋转变化的形式出现的。

我没有包括所有重要的 D20 的原因是,你通常只是一次滚动一个 20 面骰子,我没有包括 4 面骰子的原因是,我只有菱角/金字塔形状的 4 面骰子,所以我不能从顶部读取它们。我需要得到一个不同形状的 4 面模具来测试,我不想等待建立模型。

链接到完整的 github 回购这里

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

This problem is made a bit trickier for an object detection model because the dice can take on any orientation, with a standard CNN I could probably just train a 12 class model with a lot of data augmentation. For this object detection model I just add more data

D&D 骰子

这只是对 D&D 中使用的不同骰子的一个快速概述。

左后方的金字塔形骰子是一个四面的骰子,通常形状像金字塔,如果你踩上去会像菱角一样疼。它的右边是一个 12 面骰子,每个面是一个五边形。中间的是 20 面骰子,除了 D&D 中的伤害外,还用于其他掷骰。中间的左边是标准的 6 面骰子。中间的右边是一个 8 面骰子,是两个相互堆叠的金字塔。前面的两个骰子是 10 面骰子的两个版本,一个显示 0-9 的值,另一个以 10 为增量显示 10-90。另一个变化是,模型需要考虑 0 和 10 都是 10。D10 有两种格式,因为它们偶尔用于滚动百分点。所以你可以想象,非标准六面骰子的使用给这个问题增加了一点复杂性,使得分析变得愉快。

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

Etsy metal dice set. (left to right) back: d4, d12, middle: d6, d20, d8, front: d10, d10

现在,让我们言归正传。

数据收集和注释

为此,我需要一个相当大的数据集骰子。我可能只是从互联网上抓取图像,但对于这个用例,我的想法是我可以安装一个网络摄像头或类似的东西来获得骰子的俯视图。因为这个用例,我想我可以在我简单的黑色骰子盒里滚动它们,这样可以提供一致的背景,并用我的相机拍摄滚动的照片。然后,我可以用骰子位置和类别来注释照片,以便在对象检测模型中使用。

我第一次掷骰子时拍了 200 张照片。每个图像将有 6-10 个骰子。一些图片只有一种类型的骰子,而其他图片有混合。在注释了这些图片并训练了第一个模型后,我发现它的表现不如我所希望的那样好。所以我又加了 200 卷并做了注解。这个我会在最后再讲。

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

为了给我的 400 张图片添加注释,我使用了 labelimg ,就像我对其他物体检测管道一样。一旦你习惯了热键系统,它会加速注释过程。此外,注释这些对象检测数据集比图像分割数据集更容易。

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

Fair to say I got tired of looking at dice after annotating 2400–3000 of them…

所以一旦 400 张图片和大约 2400 个骰子被标注(大概花了 2 个小时?《夜魔侠》第三季的几集,我就可以开始训练模特了。

张量流对象检测配置

不久前,我配置了我的 Tensorflow 对象检测库,但在进行 windows 配置时,使用了由 EdjeElectronics 提供的本教程作为指南。他用一个更快的 R-CNN 模型为纸牌搭建了一个 6 级检测器,你可以在这里下载这个模型。我发现我在其他任务中使用这个模型取得了很好的成功,但是您也可以根据您的用例为其他人检查 T ensorflow 模型动物园

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

训练 Tensorflow 对象检测模型的基本过程是对一些数据集进行注释,从而得到包含图像注释的图像和 xml 文件。将它分成训练和测试文件夹。使用名为 xml_to_csv.py 的文件将这些注释转换成 CSV 格式,该文件指向包含测试和训练数据的文件夹。然后使用名为 generate_tf_record.py 的脚本为训练和测试拆分生成 TF 记录文件。这个 python 文件是您真正需要修改任何代码的第一个位置。我在注释器中的标签只是数字 1-12,当 python 读取它们时,它们以 int 的形式出现,所以最初我遇到了一个问题。我只需通过转换 generate_tf_record 脚本中的原始 row_labels 来修复它,以便将它们作为字符串读入。

def class_text_to_int(row_label):
    row_label = str(row_label) if row_label == '1':
        return 1
    elif row_label == '2':
        return 2
    elif row_label == '3':
        return 3
    elif row_label == '4':
        return 4
    elif row_label == '5':
        return 5
    elif row_label == '6':
        return 6 ... elif row_label == '12':
        return 12
    else:
        return none

随意查看 tf 记录和 xml 到 csv 脚本这里

一旦您有了训练和测试分割的 TF 记录文件,您就可以很好地处理数据部分,并且只需要配置模型管道。

通过向 labelmap.pbtxt 文件添加标签映射来配置管道。您可以根据需要继续列出项目,我有一个“…”来显示标签 4-11,因为我不想在这里列出它们。

item {
  id: 1
  name: '1'
}

item {
  id: 2
  name: '2'
}

item {
  id: 3
  name: '3'
}...

item {
  id: 12
  name: '12'
}

现在剩下的就是使用更快的 R-CNN 配置文件来配置训练管道。

  • 第九行。把 num_classes 改成你问题中的类的数量,对我来说是 12。
  • 107 号线。将 fine_tune_checkpoint 更改为:您之前下载或从 model zoo 获得的模型中的“model.ckpt”文件。
  • 第 123 和 125 行。在 train_input_reader 部分,将 input_path 和 label_map_path 更改为:指向 labelmap.pbtxt 和您生成的 train 记录文件。
  • 132 号线。将 num_examples 更改为\images\test 目录中的图像数量。
  • 第 137 和 139 行。在 eval_input_reader 部分,将 input_path 和 label_map_path 更改为:之前生成的 labelmap.pbtxt 和 test.record 文件的位置。

随意查看配置和 labelmap.pbtxt 文件这里

与所有对象检测模型进行交互的方式非常相似,您只需调整它指向的文件,就可以开始了。因此,请随意测试您在模型动物园中找到的不同产品。

模特培训

现在一切都准备好了,我们可以开始了。您可以使用 train.py 或 model_main.py 文件运行模型。我仍然使用 train.py 文件,并且在 model_main.py 上有问题,暂时没有问题。

下面是我在 cmd 上输入的运行模型的例子。在我的对象检测文件夹中有许多训练管道,所以这个管道被称为“training_dice”。基本上,模型将使用您指向的配置文件运行,并在您标记的训练目录中记录模型检查点。

python train.py --logtostderr --train_dir=training_dice/ --pipeline_config_path=training_dice/faster_rcnn_inception_v2_pets.config

一旦你进入它,给 Tensorflow 30 秒到 1 分钟开始运行,你会看到它开始输出步骤,他们的损失,以及他们花了多长时间。此时,您可以启动 tensorboard,以便更容易地跟踪模型性能。见下文,但它非常简单,只需将 tensorboard 指向你用来存储检查点的文件夹,并给你一个查看模型性能的 URL。

tensorboard --logdir=training_dice

因此,我喜欢看的是分类损失及其随时间的趋势,这个训练图看起来很好,从高开始,随着时间的推移越来越好。我让它运行了 6 个小时左右,基本上 2 点睡觉,8 点醒来评估。不是最科学的,但性能始终低于 0.05。我在我做过的其他项目中发现这个截止值对这个模型很好,EdjeElectronics 也注意到了这个模型的优点。虽然它只走了 24K 步,所以我可能跑得更久,但我在早上感觉不耐烦了。

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

Training graph of the classification loss from the 12 class object detection model. Ran for around 6 hours.

调整 Tensorflow 可视化文件:

对于这个问题,我想做的不仅仅是将骰子面识别为某个类/值,还要将所有值相加,以提供屏幕上骰子值的计数。我发现实现这一点的简单方法是修改 Tensorflow 对象检测源库中的可视化函数,不仅输出印有盒子和标签的图像,还输出为盒子生成的原始类标签列表。

我修改了源实用程序可视化脚本中第 640 行附近的 visualize _ boxes _ and _ labels _ on _ image _ array 函数。我所做的只是添加代码来构建并返回一个类字符串列表。

class_list = []for box, color in box_to_color_map.items():
    class_list.append(box_to_display_str_map[box]) #added to get class listing

它返回的标签列表是一个列表列表,其中每个子列表都包含一个类名和一个以百分比表示的置信水平字符串。然后,我检查并清除列表值,以分离出类名,因为每个类名都是一个数字,我只需将所有类名相加,就可以得到给定帧中屏幕上检测到的所有骰子面的值。

在所有的计算完成后,我只写给定帧的骰子值等于类名的总和。

image, class_list = vis_util.visualize_boxes_and_labels_on_image_array(
        image,
        np.squeeze(boxes),
        np.squeeze(classes).astype(np.int32),
        np.squeeze(scores),
        category_index,
        use_normalized_coordinates=True,
        line_thickness=8,
        min_score_thresh=0.80)print(class_list)
    class_sum = 0
    for class_val in class_list:
        i_hold = int(class_val[0].split(":")[0])
        class_sum += i_holdfont                   = cv2.FONT_HERSHEY_SIMPLEX
    CornerOfText = (10,50)
    fontScale              = 2
    fontColor              = (0,255,0)
    lineType               = 2cv2.putText(image,'Dice value: '+str(class_sum), 
    CornerOfText, 
    font, 
    fontScale,
    fontColor,
    lineType)

请随意检查修改后的可视化工具文件和修改后的图像视频文件,以使用课程列表

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

评估结果

总的来说,我认为这个模型做得相当好,给出了 12 个类,400 个样本,以及骰子形状和如何读取 8 对 10 对 12 面骰子的变化。然而,它仍然有改进的空间,例如,下面的第一个图像在最右边有一个骰子是 3,而不是检测到的 2。我发现这个相当奇怪,因为它甚至在正确的方向。第二张图片为 3,被归类为 8。这两个问题似乎都可以通过更多的数据扩充来解决。

然而,无论方向如何,检测骰子值的整个问题对于单个对象检测模型来说更加困难,因为它不具有与经典 CNN 中相同的数据扩充,以获得不同方向骰子的额外曝光。当我第一次训练模型时,它在奇怪方向的骰子上表现不佳,所以我将样本量增加了一倍,达到 400,这有助于解释这一点。但是即使这样做了,它仍然不总是得到正确的类。

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

3 gets marked as a 2

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

3 on the 8 sided die near the bottom gets marked with an 8 instead of the actual 3

我认为,当你知道图像中会有很多旋转变化时,处理这种情况的方法是建立一个第一阶段的模型,从图像中裁剪出物体,然后用翻转和旋转形式的大量数据增强来训练第二阶段的 CNN。

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

Depending on the orientation it does a good job of reading the 10 sided die. The die at the bottom has 4 or so values showing and I can see how it would be hard to read. The die on the right has a lot of values, but the top most one is reflecting light which probably makes it easier to detect. Another note is that for 10 sided dice, they show the 10 as either a 0 or a 10 depending on the dice.

下面是一个 12 面骰子的例子。在这一个中,它在检测它方面做得不错,但是因为我滚动这些最少的模型在跟踪数字 11 和 12 处有最少的暴露。

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

下面的 12 面骰子被归类为 2。如前所述,这可能是一个弱点,因为在我的数据集中滚动的 12 面骰子较少。我在掷骰子时有这种偏差,因为 D&D 使用的主要骰子是 6 面和 8 面骰子。随着 10 面和 12 面骰子越来越多地用于更难击中的法术和武器,但频率较低。

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

考虑到所有的事情,我认为这个模型对于一个相当小的 12 类分类数据集来说做得还不错。

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

结束语

要在我的 D&D 游戏中使用这个功能,安装一个面朝下的摄像头并让它在游戏中运行是相当容易的。由于它是在英伟达 1080 GTX GPU 上运行的单一模型,因此在接近实时的情况下完成这项工作应该没有问题。有趣的事情可能是训练一个较小的模型来制作树莓派或类似的东西。当我把模型放在 raspberry pi 上时,最大的担心是处理能力相当有限,但一个版本的 SSD 移动网络应该可以做到这一点。

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

因此,虽然这个对象检测模型相当成功,但如果我对性能更挑剔,我可能会将其构建为两阶段流水线。首先在所有 400 幅图像上运行我的对象检测模型,提取 2400 个骰子面,并使用它来训练 12 路分类器。这是我关于如何构建它的第一个想法,但我想测试一个更大的多类对象检测模型,因为我通常不会在我完成的大多数任务中超过 3 个类。

然后,为了实现该流水线,对象检测器将处理原始图像以检测骰子面,然后后端 CNN 将确定可用于合计面值并返回骰子总值的类。

链接到完整的 github 回购这里

手动计算梯度下降

原文:https://towardsdatascience.com/calculating-gradient-descent-manually-6d9bee09aa0b?source=collection_archive---------1-----------------------

一步一步:神经网络背后的数学

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

Title image: Source

这就是我们的问题。我们有一个只有一层(为了简单起见)和一个损失函数的神经网络。这一层是一个简单的全连接层,只有一个神经元,许多权重 w₁,w₂,w₃ …,一个偏置 b ,以及一个 ReLU 激活。我们的损失函数是常用的均方误差(MSE)。知道了我们的网络和损失函数,我们如何调整权重和偏差来最小化损失?

第一部分中,我们了解到,我们必须找到损失(或成本)函数的斜率,以便将其最小化。我们发现我们的成本函数是:

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

Image 1: Cost function

在第二部分中,我们学习了如何求偏导数。这很重要,因为这个函数中有不止一个参数(变量)可以调整。我们需要找到成本函数相对于权重和偏差的导数,偏导数就起作用了。

第三部分中,我们学习了如何求向量方程的导数。成本函数中的权重和偏差都是向量,因此学习如何计算包含向量的函数的导数是非常重要的。

现在,我们终于有了找到成本函数的导数(斜率)所需的所有工具!

神经元的梯度

我们需要逐步解决这个问题。让我们首先找到单个神经元相对于权重和偏差的梯度。

我们神经元的功能(伴随着激活)是:

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

Image 2: Our neuron function

其中它将 x 作为输入,将其与权重 w 相乘,并添加偏差 b

这个函数实际上是其他函数的组合。如果我们让f(x)=w∙x+b,g(x)=max(0,x) ,那么我们的函数就是神经元(x)= g(f(x)。我们可以用向量链法则来求这个函数合成的导数!

我们神经元的衍生物很简单:

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

Image 3: Derivative of our neuron function by the vector chain rule

其中z = f(x)=w∙x+b

这个导数有两个部分:相对于 wz 的偏导数,以及相对于 z神经元(z) 的偏导数。

z 相对于 w 的偏导数是多少?

z 有两部分: w∙x+b 。先来看 w∙x

w∙x ,或者说点积,实际上就是向量中每个元素的元素乘法的总和。换句话说:

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

Image 4: Expanded version of w∙x, or the dot product

这又是一个函数的组合,所以我们可以写成v=wxu=sum( v *)。*我们试图找出 u 相对于 w 的导数。在第三部分中,我们已经学习了这两个函数——逐元素的乘法和求和。它们的衍生物是:

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

Image 5: Derivative of u with respect to v and derivative of v with respect to w; where u=sum(wx)

(如果您不记得它们是如何推导出来的,请回头查看)

因此,由矢量链法则可知:

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

Image 6: Derivative of u with respect to w

就是这样!现在,让我们找出 z= u+b 的导数,其中 u= w∙x 相对于权重 w 和偏差 b. 记住,函数相对于不在该函数中的变量的导数为零,因此:

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

Image 7: Derivative of z with respect to the weights and biases, where z=sum(wx)+b

就是这样!这两个是 u 关于权重和偏差的导数。

神经元(z)对 z 的偏导数是多少?

神经元(z)=max(0,z)=max(0,sum(wx*)+b)。*

max(0,z)函数只是将所有负值视为 0。因此,该图看起来像这样:

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

Image 8: Max(0,z) // Source

查看该图,我们可以立即看到导数是分段函数:对于所有小于或等于 0 的 z 值,导数为 0,对于所有大于 0 的 z 值,导数为 1,或者:

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

Image 9: Derivative of max(0,z)

现在我们有了这两部分,我们可以将它们相乘,得到神经元的导数:

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

Image 10: Derivative with respect to the weights of our neuron: max(0, sum(wx*)+b)*

并将 z= w∙x +b 代入:

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

Image 11: Substituting w∙x*+b for z*

瞧啊。我们得到了神经元相对于其重量的导数!类似地,我们可以对偏差使用相同的步骤:

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

Image 12: Derivative of our neuron with respect to bias

这就对了。我们现在有了神经网络中一个神经元的梯度!

损失函数的梯度

第 1 部分中定义的我们的损失函数是:

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

Image 13: Loss Function

我们可以立即确定这是一个函数的组合,它需要链式法则。我们将把中间变量定义为:

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

Image 14: Intermediate variables for loss function

*注意,这里的 uv 与上一节使用的 uv 不同。

让我们首先计算相对于重量 w 的梯度。

相对于重量的梯度

u 简单来说就是我们的神经元函数,我们之前已经解决了。因此:

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

Image 15: Derivative of u=max(0, sum(wx*)+b) with respect to the weights*

v(y,u) 简单来说就是 y-u 。因此,我们可以利用分配性质,代入 u 的导数,求出它的导数(相对于 w ):

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

Image 16: Derivative of v=y-u with respect to the weights

最后,我们需要找到整个成本函数相对于 w 的导数。利用链式法则,我们知道:

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

Image 17: Derivative of cost function

让我们先找到等式的第一部分,即 C(v) 相对于 v 的偏导数:

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

Image 18: Derivative of cost function with respect to v

从上图(图片 16 ,我们知道 v 相对于 w 的导数。为了求 C(v)的偏导数,我们将两个导数相乘:

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

Image 19: Derivative of cost function with respect to w

现在用 y-u 代替 v ,用 max(0, w∙x + b) 代替 u :

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

Image 20: Derivative of cost function with respect to w

由于 max 函数在我们分段函数的第二行,这里 w∙x + b 大于 0,所以 max 函数将总是简单地输出 w∙x + b 的值:

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

Image 21: Derivative of cost function with respect to w

最后,我们可以将求和移到分段函数中,并稍微整理一下:

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

Image 22: Derivative of cost function with respect to w

就是这样!我们对重量求导!然而,这意味着什么呢?

w∙x + b-y 可以解释为误差项——神经网络的预测输出与实际输出之间的差异。如果我们称这个误差项为 ei,我们的最终导数为:

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

Image 23: Derivative of cost function with respect to w represented with an error term

这里,误差越大,导数越高。换句话说,导数代表斜率,或者说,为了使误差最小化,我们必须移动多少重量。如果我们的神经网络刚刚开始训练,并且具有非常低的精度,则误差将会很高,因此导数也将会很大。因此,我们将不得不迈出一大步,以尽量减少我们的错误。

您可能会注意到,这个梯度指向更高的成本,这意味着我们不能将梯度添加到我们当前的权重中,这只会增加误差,并使我们远离局部最小值。因此,我们必须用导数减去当前重量,以便更接近最小化损失函数:

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

Image 24: Gradient descent function

这里η代表学习率,我们作为程序员可以设定。学习率越大,步幅越大。然而,设置太大的学习率可能会导致采取太大的步骤,并跳出局部最小值。更多信息,请查看这篇关于梯度下降的文章这篇关于设置学习率的文章

相对于偏差的梯度

同样,我们有中间变量:

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

Image 25: Intermediate variables for loss function

我们还有 u 相对于之前计算的偏差的导数值:

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

Image 26: Derivative of u with respect to the bias.

同样,我们可以利用分配性质,代入 u 的导数,求出 v 相对于 b 的导数:

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

Image 27: Derivative of v with respect to the bias

同样,我们可以使用向量链规则来找到 C 的导数:

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

Image 28: Derivative of cost function with respect to the bias

C 相对于 v 的导数与我们为重量计算的导数相同:

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

Image 29: Derivative of cost function with respect to v

将两者相乘得到 C 相对于 b 的导数,用 y-u 代替 v ,用 max(0, w∙x + b) 代替 u ,得到:

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

Image 30: Derivative of cost function with respect to the bias

同样,因为第二行明确声明了 w∙x + b > 0,所以 max 函数将始终只是 w∙x + b. 的值

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

Image 31: Derivative of cost function with respect to the bias

就像之前一样,我们可以代入一个误差项,e = w∙x + b-y :

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

image 32: Derivative of cost function with respect to the bias, represented with an error term

就像关于权重的导数一样,这个梯度的大小也与误差成比例:误差越大,我们向局部最小值前进的步伐就越大。它还指向更高成本的方向,这意味着我们必须从当前值中减去梯度,以更接近局部最小值:

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

Image 33: Gradient descent function for the bias

恭喜你写完这篇文章!这很可能不是一个容易的阅读,但你一直坚持到最后,并成功地手动梯度下降!

正如我在本系列第 1 部分中所说的,如果不理解每行代码背后的底层数学和计算,我们就无法真正理解“创建神经网络”的真正含义,也无法理解支持我们编写的每个函数的复杂性。

我希望这些方程和我的解释是有意义的,并帮助你更好地理解这些计算。如果你有任何问题或建议,不要犹豫,在下面留下评论!

如果您还没有,请在此阅读第 1、2 和 3 部分:

此处下载原论文

如果你喜欢这篇文章,别忘了留下一些掌声!如果您有任何问题或建议,请在下面留下您的评论:)

需求的价格弹性,用 Python 进行统计建模

原文:https://towardsdatascience.com/calculating-price-elasticity-of-demand-statistical-modeling-with-python-6adb2fa7824d?source=collection_archive---------2-----------------------

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

Photo credit: Pexels

如何实现利润最大化

需求价格弹性(【PED】)是经济学中用来表示当只有价格变化时,商品或服务的需求量对其价格变化的反应性,或弹性。更准确地说,它给出了价格变化 1%时需求量的百分比变化。

在经济学中,弹性是衡量需求或供给对价格的敏感程度。
在营销中,消费者对产品价格变化的敏感程度。

它回答了以下问题:

  • “如果我降低一种产品的价格,销量会增加多少?”
  • “如果我提高一种产品的价格,会如何影响其他产品的销售?”
  • “如果一种产品的市场价格下降,这将在多大程度上影响企业愿意向市场供应的数量?”

我们将构建一个线性回归模型来估计 PED,我们将使用 Python 的 Statsmodels 来估计我们的模型,并进行统计测试和数据探索。我们开始吧!

数据

我们将研究牛肉价格和需求数据,这些数据可以从这里下载。

%matplotlib inlinefrom __future__ import print_function
from statsmodels.compat import lzip
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
from statsmodels.formula.api import olsbeef = pd.read_csv('beef.csv')
beef.head(10)

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

Figure 1

回归分析

普通最小二乘(OLS)估计

beef_model = ols("Quantity ~ Price", data=beef).fit()
print(beef_model.summary())

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

Figure 2

观察:

  1. 小 P 值表明我们可以拒绝价格对数量没有影响的零假设。
  2. 高 R 平方表明我们的模型解释了很多反应的可变性。
  3. 在回归分析中,我们希望我们的回归模型有显著的变量,并产生高的 R 平方值。
  4. 我们将展示图表来帮助更直观地解释回归分析结果。
fig = plt.figure(figsize=(12,8))
fig = sm.graphics.plot_partregress_grid(beef_model, fig=fig)

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

Figure 3

该趋势表明,预测变量(价格)提供了关于响应(数量)的信息,并且数据点不会进一步偏离回归线,并且给定从大约 29 到 31 的预测区间,预测非常精确。

分量-分量加残差(CCPR)图

CCPR 图通过考虑其他独立变量的影响,提供了一种判断一个回归变量对响应变量的影响的方法。

fig = plt.figure(figsize=(12, 8))
fig = sm.graphics.plot_ccpr_grid(beef_model, fig=fig)

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

Figure 4

正如你所看到的,用价格解释的数量变化之间的关系是确定的线性关系。没有太多的观察对关系产生相当大的影响。

回归图

我们使用 plot _ regress _ exog 函数来快速检查关于单个回归变量(在本例中为价格)的模型假设。

fig = plt.figure(figsize=(12,8))
fig = sm.graphics.plot_regress_exog(beef_model, 'Price', fig=fig)

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

Figure 5

递归最小二乘

最后我们应用递归最小二乘(RLS)滤波器来研究参数不稳定性。

在 RLS 估计之前,我们将处理数据并创建一个日期时间索引。

beef['Year'] = pd.to_datetime(beef['Year'], format="%Y")from pandas.tseries.offsets import *
beef['Date'] = beef.apply(lambda x:(x['Year'] + BQuarterBegin(x['Quarter'])), axis=1)
beef.drop(['Year', 'Quarter'], axis=1, inplace=True)
beef.set_index('Date', inplace=True)beef.head(10)

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

Figure 6

RLS 估计

endog = beef['Quantity']
exog = sm.add_constant(beef['Price'])mod = sm.RecursiveLS(endog, exog)
res = mod.fit()print(res.summary())

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

Figure 7

RLS 模型递归地计算回归参数,所以有多少数据点就有多少估计值,汇总表只显示对整个样本估计的回归参数;这些估计相当于 OLS 估计。

RLS 图

我们可以生成给定变量的递归估计系数图。

res.plot_recursive_coefficient(range(mod.k_exog), alpha=None, figsize=(10,6));

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

Figure 8

为了方便起见,我们使用 plot_cusum 函数直观地检查参数的稳定性。

fig = res.plot_cusum(figsize=(10,6));

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

Figure 9

在上面的图中,CUSUM 统计量没有超出 5%的显著性范围,因此我们无法在 5%的水平上拒绝稳定参数的零假设。

源代码可以在 Github 上找到。祝你周末愉快!

参考资料:

统计模型

使用 Python 计算投资组合的夏普比率

原文:https://towardsdatascience.com/calculating-sharpe-ratio-with-python-755dcb346805?source=collection_archive---------2-----------------------

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

在本文中,我将向您展示如何使用 Python 来计算包含多只股票的投资组合的夏普比率。夏普比率是指每单位波动率(在股票市场中,波动率代表资产的风险)所赚取的超过无风险利率的平均回报。它允许我们使用数学来量化平均日收益率和日收益率的波动性(或标准差)之间的关系。

简单来说,夏普比率越大,风险调整后的回报越有吸引力。

根据我们的风险偏好,这种计算也有助于我们找到投资组合中每只股票的“最佳”配置。

[## 用 Python 绘制马科维茨有效边界

基于历史数据,这个边界将允许你根据你的期望优化你的投资组合配置…

towardsdatascience.com](/python-markowitz-optimization-b5e1623060f5) [## 可视化你的股票的一些关键财务指标

使用 Python 创建一个仪表盘,帮助您对公司做出更明智的投资决策

medium.datadriveninvestor.com](https://medium.datadriveninvestor.com/visualizing-some-key-financial-metrics-for-your-stocks-f987ea37035e)

一旦你准备好创建一个完全定制的仪表板来跟踪你的投资组合,我将通过两个课程教你

首先,我们需要股票价格数据。我将使用四个简单的文件,有两列——日期和收盘价。你可以用自己的数据,或者在 Quandl 里找点东西,这个用途很好。我们有 4 家公司——亚马逊、IBM、思科和苹果。苹果数据的前五行打印如下。

AAPL = PD . read _ CSV(’ AAPL _ 关闭’,索引 _ 列= ‘日期’,解析 _ 日期=真)

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

After reading the files, this is what all the dataframes should look like (aapl, amzn, cisco and ibm)

现在我们需要为每个股票数据框架添加几列。通过几个简单的循环的*,我们可以将标准化收益、我们在投资组合中的股票配置以及每只股票每天的头寸价值相加。首先是归一化收益,它只是将每个收盘价除以数据中的最后一个收盘价。*

对于 stock_df in (aapl,cisco,ibm,amzn):
stock _ df[’ Norm return ‘]= stock _ df[’ adj . Close ‘]/stock _ df . iloc[0][’ adj . Close ']

我们假设我们的投资组合将包括:苹果 35%,思科 25%,IBM 和亚马逊各 20%。

对于 stock_df,在 zip 中的分配((aapl,cisco,ibm,amzn),[.35,. 25,. 2,. 2]):
stock _ df[’ Allocation ‘]= stock _ df[’ Norm return ']*分配

循环的最后一个将添加一列位置值。假设我们的投资组合规模在第一天是 10k。我们只需将它与已经调整到标准化回报的分配列相乘。

对于 stock_df in (aapl,cisco,ibm,amzn):
stock_df[‘位置’] = stock_df[‘分配’]*10000

这是现在四个数据帧的样子。对于每一天,你都知道你的头寸对四只股票的价值。

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

为了在一个表中得到我们所有的头寸,我们可以从每只股票中分离出列“Position ”,并将其合并到一个名为“portf_val”的新数据框架中。然后,我们重命名列以匹配每只股票。

all_pos = [aapl[‘position’],cisco[‘Position’],ibm[‘Position’],AMZN[’ Position ‘]
portf _ val . columns =[’ AAPL Pos ','思科 Pos ‘,’ IBM Pos ‘,’ AMZN Pos ']
portf _ val = PD . concat(all _ Pos,axis=1)

我们还可以创建一个列来显示所有头寸的总和,这就是我们的总头寸。

portf _ val[’ Total Pos ']= portf _ val . sum(axis = 1)
portf _ val . head()

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

从这里,我们实际上可以绘制一些图表,以了解在我们的数据中的所有日子里,我们的投资组合价值发生了什么。

将 matplotlib.pyplot 导入为 PLT
PLT . style . use(’ fivethirtyeight ‘)
portf _ val[’ Total Pos ']。plot(figsize=(10,8))

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

它实际上表现得非常好(不要忘记,大约从 2009 年开始,我们一直处于牛市之中!).我们的个股怎么样?他们表现如何?

portf_val.drop(‘总位置’,轴=1)。plot(figsize=(10,8))

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

我们可以看到亚马逊(绿色)表现很好,但另一方面,IBM(黄色)表现不佳。这里有一个很好的例子来说明为什么多样化很重要!

让我们看看我们的累计回报率是多少。

cumulative _ return = 100 *(portf _ val[’ Total Pos ‘][-1]/portf _ val[’ Total Pos '][0]-1)
print('您的累计回报为{:.2f}% '。format(cumulative_return))

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

output of the print statement above

我们可以检查 portf_val 的最后一行,看看我们的投资组合值多少钱。

portf_val.tail(1)

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

Our portfolio value grew from 10k to more than 22.5k

126.5%是非常体面的回报!我们将向我们的 portf_val dataframe 添加另一列。这一次,我们将添加每天的百分比变化,因此在下面的公式中为 1。日回报率对于计算夏普比率很重要。

portf_val[‘每日回报’] = portf_val[‘总头寸’]。pct_change(1)

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

The first daily return is a non-value since there is no day before to calculate a return

现在是时候计算夏普比率了。这个公式非常简单直观:从预期投资组合回报中去掉你从无风险投资中获得的回报率。将结果除以投资组合的标准差。如今,由于利率如此之低,人们普遍认为无风险利率为零,因为如果你把钱存入储蓄账户(无风险资产的一般例子),你只能得到很少的钱。

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

所以这个公式就是日收益的平均值,除以日收益的标准差。在 Python 中,它看起来像这样:

S harpe_Ratio = portf_val[‘日线回报’]。mean() / portf_val[‘每日回报’]。标准()

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

为了完成这篇文章,我们需要按年计算夏普比率,因为我们是从每天的数值计算出来的。一年有 252 个交易日,所以年化的简单方法是用夏普比率乘以 252 的平方根。

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

就是这样!我们有年度夏普比率,我们准备在未来的文章中使用它来优化我们的股票配置。

如果你对 Python 的金融分析感兴趣,有两本很棒的书,几乎涵盖了你需要的所有内容:

另外, Investopedia 是定义这些指标的最佳资源之一。

欢迎留下任何问题或评论,或通过 LinkedIn 联系我。披露:上面的一些链接是附属链接。这意味着,对你来说零成本,如果你通过链接完成购买,我将赚取代销商佣金!

数据科学中的微积分及其应用

原文:https://towardsdatascience.com/calculus-in-data-science-and-its-uses-3f3e1b5e5b35?source=collection_archive---------2-----------------------

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

微积分是一种以纯粹形式发展起来的抽象理论。

微积分,更确切地说是分析,是数学的一个分支,研究数量的变化率(可以解释为曲线的斜率)以及物体的长度、面积和体积。微积分分为微分和积分。

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

Differentiation

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

Integration

微积分这个词来源于拉丁语,意思是“小石头”,
因为它就像通过观察小碎片来理解事物一样。

微积分是数学的一个固有领域,尤其是在许多机器学习算法中,你不可能想到跳过这门课程来学习数据科学的本质。

微分学把东西切成小块,看看它是怎么变化的。

积分学把小块连在一起(积分)算出有多少。

现在,我再次强烈推荐您观看来自 3blue1brown 频道的《微积分精粹》视频,该视频教授数据科学中所需的一些微积分重要支柱。

如果你有任何一种过敏或者没有通过视频学习的心情,可以参考这个。它涵盖了微积分的所有基本思想。

[## 微积分菜单

微积分这个词来源于拉丁语,意思是“小石头”,因为它就像通过看东西来理解一样…

www.mathsisfun.com](https://www.mathsisfun.com/calculus/)

我希望你已经理解了微分和积分的基础知识。数据科学家几乎对每个模型都使用微积分,机器学习中微积分的一个基本但非常优秀的例子是梯度下降。

梯度下降

梯度衡量的是,如果你稍微改变输入,函数的输出会有多大的变化。

假设你有一个球和一个碗。无论你把球滑到碗里的什么地方,它最终都会落在碗底。

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

正如你看到的,这个球沿着一条路径,在碗的底部结束。我们也可以说球在碗的底部下降。正如你从图像中看到的,红线是碗的坡度,蓝线是球的路径,随着球的坡度的减小,这被称为梯度下降。

在我们的机器学习模型中,我们的目标是降低输入数据的成本。成本函数用于监控 ML 模型预测中的误差。因此,最小化这一点,基本上意味着尽可能获得最低的误差值,或者提高模型的精度。简而言之,我们在调整模型参数(权重和偏差)的同时,通过迭代训练数据集来提高精确度。

让我们考虑一下,我们有一个用户的数据集,包括他们在某些科目上的分数和他们的职业。我们的目标是通过考虑一个人的分数来预测这个人的职业。

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

在这个数据集中,我们有约翰和夏娃的数据。有了约翰和夏娃的参考数据,我们不得不预测亚当的职业。

现在把学科里的分数想成一个梯度,把专业想成底层目标。你必须优化你的模型,以便它在底部预测的结果应该是准确的。使用 john 和 Eve 的数据,我们将创建梯度下降并调整我们的模型,这样,如果我们输入 John 的分数,那么它应该预测梯度底部的医生的结果,Eve 也是如此。这是我们训练过的模型。现在,如果我们给模型的主题打分,那么我们就可以很容易地预测这个职业。

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

理论上这是梯度下降,但计算和建模,梯度下降需要微积分,现在我们可以看到微积分在机器学习中的重要性。

首先让我们从你现在知道的话题开始。线性代数。让我们首先使用线性代数和它的公式为我们的模型。

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

我们可以在这个模型中使用的基本公式是

y = m*x +b

在哪里,

y =预测值,m =斜率,x =输入,b = y-截距。

解决这类问题的标准方法是定义一个误差函数(也称为成本函数),用于衡量给定线的“好”程度。该函数将接受一个(m,b)对,并根据直线与数据的吻合程度返回一个错误值。为了计算给定线的误差,我们将遍历数据集中的每个(x,y)点,并对每个点的y值和候选线的y值(在mx + b计算)之间的平方距离求和。传统的做法是平方这个距离,以确保它是积极的,并使我们的误差函数可微。

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

更适合我们的数据的线(其中更好是由我们的误差函数定义的)将产生更低的误差值。如果我们最小化这个函数,我们将得到数据的最佳线。由于我们的误差函数由两个参数(mb)组成,我们可以将其视为一个二维表面。这是我们数据集的样子:

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

这个二维空间中的每个点代表一条线。函数在每一点的高度就是那条线的误差值。您可以看到,有些线产生的误差值比其他线小(例如,更符合我们的数据)。当我们运行梯度下降搜索时,我们将从这个表面上的某个位置开始,向下移动以找到误差最小的线。

在微积分的本质视频中,你已经看到,为了计算斜率,我们使用微分。

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

The graph of a function z=f(x,y)z=f(x,y) is a surface, and fixing y=by=b gives a curve (shown in green). The partial derivative ∂f∂x(a,b)∂f∂x(a,b) is the slope of the tangent line to this curve at the point where x=ax=a.

为了对这个误差函数进行梯度下降,我们首先需要计算它的梯度。坡度就像指南针一样,总是指引我们下坡。为了计算它,我们需要对误差函数求导。由于我们的函数是由两个参数定义的(mb),我们需要计算每个参数的偏导数。这些衍生工具的结果是:

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

我们现在有了运行梯度下降所需的所有工具。我们可以初始化我们的搜索,从任何一对mb值(即任何一条线)开始,让梯度下降算法在我们的误差函数上朝着最佳线向下行进。每一次迭代都会将mb更新为一条线,该线产生的误差比前一次迭代稍低。使用上面的两个偏导数计算每次迭代的移动方向。

学习速率变量控制着我们在每次迭代中走下坡路的幅度。如果我们迈得太大,我们可能会跳过最小值。然而,如果我们采取小步骤,将需要多次迭代才能达到最小值。

虽然我们能够对学习梯度下降有所了解,但还有几个我们无法讨论的额外概念值得注意。其中一些包括:

  • 凸性–在我们的线性回归问题中,只有一个最小值。我们的误差表面是凸起的。不管我们从哪里开始,我们最终都会达到绝对最小值。一般来说,情况不必如此。梯度搜索可能会陷入局部极小值。有几种方法可以减轻这种情况(例如,随机梯度搜索)。

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

  • 收敛–我们没有讨论如何确定搜索何时找到解决方案。这通常是通过寻找迭代间误差的微小变化来实现的(例如,梯度接近零的地方)。

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

多元微积分

现在让我们深入学习多变量微积分,这将在多变量数据中教授微积分,我们最终会在现实生活中得到这些数据。

[## 多变量微积分|可汗学院

免费学习数学、艺术、计算机编程、经济学、物理学、化学、生物学、医学、金融…

www.khanacademy.org](https://www.khanacademy.org/math/multivariable-calculus)

要获得最新的更新、提示和任何你想要的或有问题的东西,只需在评论中发表。

在那之前…

快乐编码:)

别忘了拍手拍手拍手…

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

参考

[## 多变量微积分|可汗学院

免费学习数学、艺术、计算机编程、经济学、物理学、化学、生物学、医学、金融…

www.khanacademy.org](https://www.khanacademy.org/math/multivariable-calculus) [## 微积分-维基百科

它有两个主要分支,微分学(关于瞬时变化率和曲线斜率),和…

en.wikipedia.org](https://en.wikipedia.org/wiki/Calculus) [## 练习微积分|太棒了

采取有指导的、基于解决问题的方法来学习微积分。这些汇编提供了独特的视角和…

brilliant.org](https://brilliant.org/calculus/)

号召一支由法西斯组成的军队!

原文:https://towardsdatascience.com/call-for-an-army-of-be-a-sts-f751436671be?source=collection_archive---------16-----------------------

推动一个更加民主化的人工智能。

人工智能将由三个领域提供动力,即对自然语言的更好理解,从概率分布(GANs,VAEs)中学习的生成模型,以及通过强化学习(RL)算法进行的主要成分训练。让我们来谈谈 RL,它是前进的方向,因为它学习解决问题,而不仅仅是监督算法所做的后验映射。你可以向它抛出一个下棋的问题,不管有没有你的帮助,它都会学会下棋,或者下围棋、Dota2、星际争霸,甚至是股市!

他们通过与环境互动来做到这一点,模拟你希望代理做的事情。OpenAI 和健身房一起使这个领域民主化,推动了人们的参与和对这个想法的认识。这些环境是开源力量的一个很好的例子,它是免费的,非常强大,并且有一个开发者和用户社区的支持,他们可以在瞬间解决你的问题。尽管很棒,但它缺少一个非常重要的项目,一个复杂的策略游戏,比国际象棋和其他棋盘游戏更复杂。一些有规章制度,需要大量创造力的事情。

尽管 OpenAI gym 很棒,但它缺少一个非常重要的项目,一个复杂的策略游戏,比国际象棋和其他棋盘游戏更复杂。

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

A screenshot of DeepMind’s Starcraft-2 environment

如果我们看看这个领域中更多的开源项目,会发现没有什么比这更好的了。来自 DeepMind 安全研究和暴雪的星际争霸-2 环境是开创性的,但仍然受到许多问题的困扰,不是开源的,缺乏完整版本,主要是它的大小为 30 GB!所有这些问题使得它的使用很困难。

那我们做一个吧

我个人在这方面已经工作了一段时间,在得到了业内一些顶尖人士的大量反馈和验证后,终于开放了。Freeciv 是一款开源的基于回合的多人深度策略游戏,有规则,这使它成为使用它作为环境的完美候选。不仅有趣,它还是人们仍然喜欢玩的最古老的游戏之一,最初的提交是在 1996 年完成的,陈旧的分支可以追溯到 21 年前!**我们正在为它编写一个 python 绑定器。**你可以在这里查看,我们已经上传了为一篇论文所做的原创工作,该论文名为“通过阅读蒙特卡洛框架中的手册来学习获胜”。

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

A screenshot from freeciv 2.4

这项工作不仅重要,而且事后看来将是最有影响力的工作之一。这个项目不仅需要优秀的人才,还需要最优秀的人才。

有一个小团队正在努力工作,但我们需要更多的人来启动这个项目并真正建立起来。但是我们需要你的帮助。在编写代码和动态环境方面需要做大量的工作。我们从一个简单的需求开始,编译源代码并记录这个过程。最终目标是创造一个智能体,它可以在人类最少的帮助下(唯一的支持应该是基本的指令)学会自己在复杂的环境中穿行和玩耍。

在这里应用深度强化学习

这个环境将为测试人工智能提供一个巨大的机会,因为以下原因,你也可以把这作为我们需要在这个项目中实现和贡献的事情的宣言:

  1. **开放式奖励结构:**由于可以采取如此多样的游戏产品和行动,用户将获得原始信息,如果他们愿意,可以编写自己的奖励结构,尽管我们将提供基本奖励。最近大多数突破性的模型都应用了元学习风格的体系结构,具有自动奖励理解。这种环境将推动这一进程更上一层楼。
  2. **深层次结构:**游戏需要做的事情太多了,这就要求代理对各个层次应该做什么有更深的理解,而不仅仅是看一下画面就决定下一步的行动。
  3. **长期游戏性:**由于游戏可以持续许多回合,它需要代理人进行非常长期的战略思维处理。比现在任何环境都要长,也更多样化。
  4. **信息类型:**游戏不只是发送一个原始图像,而且其中许多,代理得到各种各样的地图(资源,单位,财产)而不是一个单一的图像。文本中有规则和规定,许多策略指南,使你的模型能够处理不同类型的信息,我们人类认为这些是理所当然的。
  5. **一般智能:**游戏中的多样性、结构和要做出的决定是如此开放和广阔,以至于你的代理人(或全体)需要有一个非常一般的思维过程。这种平台将导致研究和代理,这将使我们对人工智能的理解和发展更好。
  6. **大小:**目前最大的优势是大小,一个全功能的互动游戏不到 100MB,游戏中有 API 的源代码,所以你可以记录你的动作,然后用它们来训练你的模型。
  7. **【奖金】小游戏:**为了让初学者更容易开始这方面的工作,我们旨在发布各种各样的小游戏,就像星际争霸 2 中的环境一样,这将帮助你在进入主游戏之前测试你的模型到简单的任务。

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

Let’s not be this dumb

**这一切都是这个环境所提供的;主要的困难是,我们需要建造并测试这个东西。**回购是新的,项目将被添加到其中,以指导我们并为项目设定基准。

github 回购链接:https://github.com/yashbonde/freeciv-python

欢迎贡献者,如果你有任何疑问/想法,请打我的 LinkedIn 联系我,我不介意现在是凌晨 4 点,我会回复你。

干杯!

电脑能说出口红的颜色吗?

原文:https://towardsdatascience.com/can-a-computer-name-lipstick-colors-1897a8208b17?source=collection_archive---------6-----------------------

我经常想知道是谁给化妆品的颜色命名的。如果你从来没有浏览过当地药店的化妆品通道,你可能不会注意到区分无穷无尽的口红颜色的调情标签。例如,露华浓出售大胆的淡紫色,敢于裸体,富家女红,可亲吻的粉红色和无情的葡萄干。

根据我的直觉,这些口红的名字遵循某种不言而喻的公式,我想知道计算机是否可以学习它们的模式并产生新的模式。我从丝芙兰网站上购买了数百种唇色(包括香膏、唇彩、眼线笔和口红),还从露华浓等药店购买了其他颜色。我将这个数据集输入到一个神经网络中,这是一个深度学习模型,可以学习文本的结构,并可以对任何经过训练的材料进行自己的再现。你可以在这里得到我自己用的模型

这是它想出来的,以自制插图为特色。从我的最爱开始…

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

还有更多…

凉鞋太阳

黑暗的扑通声

玫瑰犯罪

吹玫瑰

糖潘趣酒

玫瑰上的性爱

Pop 购物桃

把它烤成珊瑚色

玫瑰色

克朗布罗斯

性感

曼·布朗

朱岳鹏·皮卡特

我的虱子

波普空心珍珠

爱情 Snop

棒棒糖

胭脂人民

卡洛

热红色米色

淡紫色的血

赤裸裸的不友好

方法说明

虽然我能够收集到数百个口红颜色的名称,但就神经网络可用的原始文本而言,这实际上是一个非常小的数据集,因为这些名称很少超过 2-3 个单词。当神经网络拥有大量训练数据时,它们往往表现最佳。我用来获得更好的训练的一个廉价而肮脏的技巧是简单地通过重复几次唯一名称的列表来扩大训练集。我担心这将导致过度拟合和简单地重复训练集名称,但在这种情况下没有。我训练了一个 3 层 256 节点的网络,在温度刻度盘上找到了一个“最佳点”。太低了,而网络大多一次又一次地产生了“粉红”这样的常用词。太高了,它吐出胡言乱语。但是在 0.45-0.6 左右,我得到了一些非常好的新口红名字,这些名字几乎是可信的。

深度神经网络可以作曲吗?

原文:https://towardsdatascience.com/can-a-deep-neural-network-compose-music-f89b6ba4978d?source=collection_archive---------6-----------------------

当我去年九月开始读研时,我想尽快投入到深度学习的热潮中。当我在纽约作为一名软件开发人员工作时,我不断听到关于深度学习的惊人事情: DeepFace 可以像你和我一样识别人的脸, AlphaGo 在一场最初对人工智能来说似乎难以捉摸的游戏中摧毁了玩家, GANs 刚刚开始获得动力。所以当我得知我的部门要办他们第一个真正的深度学习班的时候,我立马就报名了。尤其是因为它将由计算机视觉领域的一位名人来教授,埃里克·勒德-米勒,他在这里经营着计算机视觉实验室。顺便说一下,值得表扬的是,最初的课程是由费-李非斯坦福视觉实验室的主任安德烈·卡帕西开发的。

快进过去一些巨大的任务,使我们实现了神经网络框架的本质,包括密集层、漏失层、批量规范层、卷积层、递归层、你能想到的每一个激活层、市场上可用的所有优化器、反向传播以及计算机视觉中的一系列应用,如对象识别、图像字幕和图像生成, Sam Witty 和我最终必须选择我们想要为我们的最终项目做什么。由于山姆是一个名为 白卡带 的乐队的键盘手,这意味着他在与音乐相关的一切方面都绝对*。凭借他的专业知识和我严重缺乏的音乐天赋,我们决定看看是否可以像人一样使用深度学习作曲。*

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

Source: Music Lover Stock

这让我们看到了丹尼尔·约翰逊在一个名为六面体的博客中发的一篇非常甜蜜的帖子。丹尼尔建立了一个可以创作古典钢琴曲的深度神经网络。在那篇文章的帮助下,我和萨姆开始了我们的最终项目——遗憾的是,我们不假思索地将其命名为Deep Jammer*——通过学习巴赫、贝多芬、莫扎特和其他著名作曲家的大量音乐,可以无休止地创作古典钢琴曲。如果你想了解详情,你可以查看我们的报道、海报和 T21。我们也使用迁移学习来创作爵士乐,但是我们将把它留到另一篇文章中。虽然 Deep Jammer 是基于 Daniel 所做的,但我们重构了他的许多代码(他甚至承认这些代码很乱),优化了设计和超参数,并在 Keras 中实现了一个更干净的版本,这个版本可以工作,但不太好。言归正传,下面是 Deep Jammer 作曲的一首古典钢琴曲的预告:*

背景故事够多了。让我们继续表演吧。既然对这篇文章标题的明显回答是响亮的是,现在让我们问一个不同的问题。

深度神经网络如何作曲?

概观

为了让你对我们所做的有一个基本的概念,让我们对我们的最终项目有一个大概的了解。看看这个:

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

如您所见,该图只有三个部分:

  • 代表一段音乐的输入矩阵
  • 输出矩阵,表示对下一步播放什么的预测。
  • 通过听大量音乐来学习模式的神经网络

因为这可能现在对你来说很模糊,让我们慢慢地走过输入矩阵、输出矩阵和神经网络。没那么糟。

投入

我们网络的输入是一段音乐,我们把它转换成一种特定的表达方式。说得好听点,我们把这个叫做。这只是一个三维矩阵:

  • 时间:该段有 128 个时间步长。打个比方,每个时间步长就像一首歌的 100 毫秒。类似于一首活页乐谱,这将帮助我们了解一个片段如何随时间变化。
  • 注:每个时间步有 88 个 。我们有 88 个,因为一架钢琴上有 88 个键。再一次,如果我们想到乐谱,这代表了五线谱上所有的线条和空间。
  • 属性:每个音符有 78 个属性 描述该音符的状态,我们将在后面介绍。基本上,对于每一个音符,我们都需要知道一些关于它的事情。

由于谈论三维矩阵可能会令人困惑,现在让我们把所有的东西放在一起。第一,输入只是一段。第二,每段有 128 个时间步长来表示时间。第三,钢琴上每个键的每个时间步有 88 个音符。第四,每个音符有 78 个属性来概括音符的状态。简而言之,输入——我们称之为片段的三维矩阵——只是描述了一段音乐。

到目前为止,我们还没有讨论每个音符的属性是什么样的。那么它们是什么呢?请看下面:

  • 位置:钢琴上相应音符的键的位置。这个范围从 1 到 88,因为钢琴上有 88 个键。更重要的是,我们需要这一点,因为网络必须理解相同音高的音符之间的差异,就像当我们有两个不同八度的 a 时。
  • 音高类:**一个数组,每个元素对应一个音高( CDEFGAB 连同降半音和升半音)。与相应音符相关联的音高被设置为真。每隔一个间距设置为
  • neighborhood:**包含与相应音符相邻的音符状态的数组。我们为每个相邻的音符存储两个值:如果它刚刚被弹奏,我们存储(1) (否则存储);如果它刚刚被按住,我们存储(2) (否则存储假*)。为了简单起见,我们只采集相应音符的上下八度音程中的相邻音符。*
  • ***节拍:*在其小节中对应音符的位置。例如,一个音符与一个从 0 到 16 的整数相关联,因为我们的时间分辨率在第 16 个音符。然而,这可能会随着训练集中古典钢琴作品的分辨率而改变,我们将会谈到这一点。

输出

*我们网络的输出预测了在输入段之后的下一个时间步应该播放什么。再一次,说得好听点,我们称之为预测 *。这只是二维矩阵:

  • 注:预测有 88 个音符对于像输入一样的钢琴的每个键。
  • 属性:每个音符有 2 个属性 描述该音符的预测状态。

那么属性是什么呢?请查看以下内容:

  • ***弹奏概率:*音符在下一时间步弹奏的概率。
  • ***发音概率:*音符在下一时间步被保持的概率。

体系结构

现在我们已经了解了网络的输入和输出,让我们来看看每一层的作用。但是,在我们这样做之前,先来看一个简化的图表,它给出了大致但很好的概述:

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

这些层看起来和听起来都比它们实际上更令人困惑。如果我们把每一个都分解开来,那就很简单了。顺便说一句,如果你不知道什么是 LSTM,它只是一种特殊类型的 RNN。如果你想了解更多,可以在 colah 的博客上查看这篇文章。在任何情况下,检查每一层:

  • 时间层:捕捉音乐时间模式的 LSTM 层。我们将之前的时间维度视为 LSTM 的时间维度。这意味着网络学习每个音符的属性如何随时间变化。比如这里可以想到琶音和音阶。
  • 转置层:转置时间维度和音符维度的处理层。为什么我们要翻转这两个维度?这将音符*维度设置为 LSTM 的新时间维度,为下一层做准备。*
  • 音符层:LSTM 层,捕捉音乐的空间(或音符)模式。我们将之前的音符维度视为 LSTM 的时间维度。这使得网络能够了解属性如何随着音符而变化。最好的例子是一起演奏的一个和弦或一组音符。(我同意你的观点。这是一个奇怪的想法。)
  • 致密层:全连通层,将注层的高维输出降低为非标准化预测。这一层总结了时间层笔记层所学的*。*
  • 激活层:对来自密集层的非标准化预测的每个元素进行标准化——或挤压——的层。我们使用 sigmoid 激活函数来完成此操作:

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

请注意,我们可以在架构中调整几件事情,如时间注释密集层的数量以及每层中的节点数量。如果愿意,我们还可以添加辍学层。我将忽略这一点,因为它们是实现细节。

培养

走过了我们网络的一切,是时候训练它了。这和你训练任何网络没什么不同。我们是这样做的:

  1. 我们从这里收集了 325 首古典音乐作品。它们是 MIDI 文件。如果你不知道那是什么,我也不会担心。MIDI 只是一种将音乐编码为一系列事件的格式。为了简洁起见,我们跳过细节。
  2. 我们一拿到 MIDI 文件就做了一个训练集。为此,我们从 MIDI 文件中随机取样,并将它们转换成适合我们网络的表示形式。在我们的训练集中,一个训练示例是一对两个矩阵(即我们已经讲过的输入和输出矩阵): (a)****特征只是一段(具有时间注释属性维度的三维矩阵)。
    (b)**标签 是一个预测(二维矩阵用标注属性**维度)。
  3. 我们设计了一个定制的损失函数,因为我们跳过了太多的符号,所以我们将忽略它。如果你感兴趣的话,报纸上有这方面的报道。除了损失函数,我们还导出了反向传播的梯度。
  4. 我们使用 adadelta 来训练我们的网络,这是一种自适应学习率梯度下降方法,用于 5000 个时期,批量大小为 5 个段。

如果你有兴趣,你可以看看下面这个训练损失的好图。这里没有什么太令人惊讶的。它像大多数训练损失曲线一样减少。

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

每隔 100 个时代,我们用我们的网络作曲,看看随着训练损失的持续减少,音乐是什么样子的。看看下面的可视化。请注意,时间轴代表时间步长,音符轴代表 88 个琴键。你可以看到随着网络训练越来越多,音乐变得越来越好。到最后,你肯定能看到琶音、音阶和和弦。

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

产生

现在我们已经训练了我们的网络,让我们创作一些古典钢琴曲。为此,我们一遍又一遍地重复以下步骤:

  1. 我们从训练集中随机选择了一个片段。
  2. 我们将该片段作为输入输入到网络中。
  3. 我们从网络得到一个预测作为输出。
  4. 我们将预测转换成一个新的部分。
  5. 跳到第二步

简单地说,我们输入一个片段,得到一个预测,然后将预测反馈给网络。如果我们跟踪每一个预测,我们就可以把一首听起来不太糟糕的古典钢琴曲串起来。

结果

为了评估我们的网络创作的古典钢琴音乐,我们发出了一份调查,参与者必须从 10 首作品中选出一组不同的作品进行评分。此外,我们还加入了一首真正的古典钢琴曲,它来自一位不为参与者所知的著名作曲家。由于我们的海报已经过时,这里有一些最新的有趣数据:

  • 我们电视网的最佳节目平均得分为 7.5
  • 真品的平均评分为 7.9 分
  • 奇怪的是,有三个人不相信真正的曲子是人类创作的
  • 12 个人更喜欢我们电视网的最佳节目

现在我们已经结束了,是时候听一些由我们的网络创作的古典钢琴曲了!我希望你喜欢这场表演。停留片刻,倾听:

机器会有种族歧视吗?

原文:https://towardsdatascience.com/can-a-machine-be-racist-5809b18e5a91?source=collection_archive---------10-----------------------

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

人工智能已经成为一个家喻户晓的词。它也成了所有家庭的操纵者。人工智能在所有业务和商业模式中的无节制爆炸一直是增长的惊人动力,但它也提出了需要回答的问题。

数据科学家和人工智能研究人员将越来越多地驱动人类行为,影响企业的决策方式,甚至引导政府。此外,这些模型将越来越多地从传统的人类可理解的设计转向复杂的深度学习模型,其中涉及的复杂性令人难以置信。在实践中,这种情况很少或根本没有围绕这种系统的伦理进行讨论。

人体扩增

当我们使用 ML 来增强或执行通常由人类执行的任务时,我们有机会消除影响判断并导致糟糕决策的偏见。我们人类会变得疲惫或懒惰,会变得种族主义或性别歧视,会变得傲慢或过于自信,这样的例子不胜枚举。所有这些特征使人类成为糟糕的决策者——不管这些决定是不是有意的。

人工智能有能力消除决策过程中的人为因素。也许最重要的是,它可以根据原始客观数据做出纯粹客观的决策。当我们将伦理应用到这些系统的设计中时,每个人最终都会过得更好。伦理提供了一个客观的框架来判断什么是对的,什么是错的。在这篇文章中,我希望让你相信人工智能带来的危险和好处,并为企业和数据科学家提供一个简要的框架。

在你继续之前,请记住这不是一篇危言耸听的文章。目前人工智能的好处远远大于后果。我正在关注人工智能中的一个具体问题,我希望通过尽早认识到这个问题,我们可以在这个讨论的基础上从这个强大的工具中获得最大的好处。

为什么道德很重要

在成为数据科学家之前,我是一名机械工程师。我的学位让我选修了多门伦理学课程,而我的职业生涯要求我全程选修伦理学课程。

我研究了许多工程事故,这些事故导致了数百人不必要的死亡和伤害,以及数不清的环境破坏。安全设计的规模和重要性,极度关注细节的重要性,以及导致失败的罕见事件。在我学习期间,职业道德不断地灌输给我。相比之下,人工智能经常停留在道德黑洞中。人工智能的现实是,一些模型做出的决策对企业和社会都不利。

目前,机器学习中的伦理困境无法与工程界的伦理困境相提并论。很难想象一个机器学习系统会因为错误的设计而杀死数百人,但它们仍然会造成伤害。我们经常将身体伤害提升到金融、政治或操纵痛苦之上,但人工智能系统将在较小范围内影响数十亿人的事实最终使它们变得更加重要。

根据真实故事改编

假设您在一家银行工作,想要创建一个模型来预测客户的违约概率。然后,您希望将此预测用于贷款利率。对于这个例子,让我们假设我正在以最大化我的算法为目标来处理这个任务,而没有任何关于道德的想法。我的方法是机器人式的,我会消耗任何增加我的模型预测能力的数据。

您会使用哪些功能来训练您的模型?

  • 客户居住的街道
  • 性别
  • 人种
  • 语言
  • 婚姻状况
  • 脸书上的朋友,朋友数量
  • LinkedIn 上的关系
  • 年龄
  • 教育
  • 医院就诊次数

这样的例子不胜枚举。几乎任何东西都可以做成模型。一些公司需要脸书数据作为其贷款申请流程的一部分。他们可以解析你的朋友,你的帖子,你朋友的帖子…你明白了。

那么什么时候可以呢?这种模式有完全有效的积极的社会论据。它可以让原本无法获得信贷的人获得信贷。事实证明,它可以减少对被传统金融体系拒之门外的人的掠夺性贷款。我还敢打赌,许多(或所有)经济学家都会同意,更广泛的信贷渠道对经济更有利。

然而,你可以很容易地看到我们如何开始更深地隔离我们的社区。这些算法将输出越来越准确的违约率,但收取的高利率将成为一个强化循环。随着农行普通客户继续获得更高的贷款利率,他们违约的概率将会上升。算法的下一次更新将考虑到这一点。情况并非总是如此,但在实践中可能会发生。正是设计糟糕的算法成为了其预测的牺牲品。

我认为那家伙应该升职

让我们想象同样的过程应用于其他问题——预测组织中的高绩效员工。你输入员工的所有数据(年龄、性别、绩效分数、能力测试),结果就出来了。如果您使用的是基于回归的算法,您可以确定该算法使用哪些数据来做出决策。由于该算法着眼于人类行为(过去的绩效评估和以前的晋升非常主观),它仅仅是现有做法的反映。此外,如果你在没有任何道德标准的情况下使用它,它会加重任何已经存在的人类偏见。它很快变得比组织本身更有偏见!

如果性别是一个强有力的预测因素,会发生什么?如果种族是一个强有力的预测因素会发生什么?如果一个领域是由一种性别主导的,比如教学是由女性主导的,或者工程是由男性主导的,那么算法就有可能抓住这一点,并相应地对人们进行细分。

数据中存在这些偏差可能有完全有效的原因,但这并不能阻止算法找到它们并加以利用。也许你的组织中外国人的比例很低——你的算法可以利用这一事实来提高其准确性。或者,我们可以想象这样一个场景,A 公司有一个种族主义的招聘经理,这个经理的行为会影响模型的预测。毕竟模型没有感觉,也没有情绪;它只是试图预测你让它做什么。如果你打算预测人类行为,而人类行为是有偏差的,那么它就是将被嵌入算法中。

如果我用这个算法来告知你的决策精度,它会开始鼓励它首先发现的偏差。这是完全可能的,事实上也很有可能,你更有可能提升来自业务所在国的员工,而不是外籍员工。同样,可能有完全合理的理由——本地员工更有可能在该公司工作更长时间,或者更有可能在工作中掌握更好的语言。话又说回来,它们可能只是不公平的做法。

事实是你不知道。

这个事实导致了一种算法,它以一种你永远不会允许自己去做的方式运行。它变得类似于一个分数系统,人们根据他们的肤色或性别来打分。这也是你永远不会作为公司政策写下来的东西,但你却允许你的算法这样做。是不是因为电脑做到了就变得 OK 了?号码

发生这种情况的例子有很多,但总体来说,在这个领域很少有这方面的培训或讨论。只是在最近,人工智能中的伦理话题才变得更加普遍。

让人工智能去思考

我最近在为一个朋友搜索疫苗信息,我不得不进入我的搜索引擎的第二页去寻找来自 CDC,NHS 和加拿大政府的信息。最可信的来源不应该是第一位的吗?

为什么会这样?

根据过去的搜索历史提供搜索结果可能是危险的 —当你进入搜索引擎并键入“疫苗安全吗”时,你是在问一个有倾向性的问题。一般来说,认为疫苗安全的人懒得问这个问题,搜索引擎算法说你有点像这些问类似问题的人,这给了你怀疑的博客。它甚至会扭曲你对这场争论是否存在的看法。

事实是,绝大多数医生和科学家都有结论和数据支持疫苗是安全的这一共识。我甚至无法开始描述疫苗给人类带来的好处。

如果你向人们展示基于他们对替代事实偏好的搜索结果,你对他们有好处吗?或者你只是在夸大他们的偏见,认为权威的地位是不可信的?在人工智能的发展过程中,许多这类问题都没有被问过。

分析会扼杀客观性吗?

在一个充斥着异常善于分析的人的领域,伦理学已经被抛在了一边。事实上,缺乏伦理关怀和对预测能力的追求导致了善于分析的人使用主观数据。在任何模型中使用主观数据时都应该非常谨慎,应该避免使用个人数据来预测人类行为。具有讽刺意味的是,一个本应客观的领域,却往往是主观建造的。

此外,主观算法通常对它们的创造者没有好处。机器可以通过绕过使我们的行为偏离客观性的认知偏见来做伟大的事情。众所周知,人类会错误地感知一系列反应和结果。他们会犯错,会疲劳——机器可以检查这些固有的缺陷。

伦理道德在哪里?

也许这是因为在数学等许多量化领域并不真正需要进行伦理讨论,而这些正是越来越多地进入 AI 领域的人。为了优化他们的算法,获得更多的数据,并提高准确性,许多从业者正在开发影响行为和决策的算法。数据科学领域应该关注工程师和医生已经安装的系统,以确保他们的领域为人类造福。道德设计需要成为任何课程的要求,像我这样自学成才的设计师需要熟悉这些想法。

业务影响

经历这个过程有点困难。最终,这将落到领先的数据科学家和雇佣数据科学家的公司的肩上。

关于伦理设计的讨论应该成为现状。否则,目前的方法将开始损害公司的声誉,或者导致公众对人工智能的强烈反对。你永远不应该把数据输入到一个你不会在公司政策中用来做决定(或者实际上是自己做决定)的算法中。就像你永远不会明确地使用性别、种族和语言来提升他人一样(不考虑隐含的偏见),除非你明白后果,否则你永远也不应该把它们输入算法。

外卖——保持认知和警觉,但避免敲响警钟

可以肯定的是,在有些地方使用这种主观数据是合乎道德的,甚至是一种要求(例如,医疗保健),但关键是这种讨论对于大多数数据科学领域来说尚不存在。

任何时候你在算法中使用人类行为,你都需要小心。人类是有缺陷的;人类可以因为任何原因产生任何数量的偏见。基于它们的算法将不可避免地成为这种行为的延伸。一个设计不当的算法预测出最佳表现者,不太可能是一个数学专家,而更可能只是模仿你当前流程的行为(尽管是以一种更具成本效益的方式)。

这从两个方面伤害了公司:

  • 第一,它未能完成设计它的目标任务。
  • 第二,如果算法偏差被人知道或公开,这可能会成为一场噩梦

所以回到题目;机器会有种族歧视吗?我说不。机器只做它被设计做的事。如果你设计了一台糟糕的机器,它会做出种族歧视的决定,但那是设计者的错,而不是机器的错。就像工程师把一座桥的失败归咎于设计者一样,我们是否应该把一个人工智能系统的失败归咎于它的程序员。

通过使用正确的特征,坚持分析数据而不是主观数据,算法可以极大地改善你的决策。仅仅有客观的输入是不够的,但是你需要优化一个客观的结果。对很多人来说,这是数据科学中最难、最麻烦的部分;问正确的问题。

一个简单的 CNN 能像面部识别一样区分红发人吗?

原文:https://towardsdatascience.com/can-a-simple-cnn-work-as-well-as-facial-recognition-for-differentiating-redheads-18596b05fdec?source=collection_archive---------3-----------------------

简单的卷积神经网络(CNN)在区分图像方面工作得非常好,但它在区分人脸方面也能工作得一样好吗?面部识别当然会在算法中使用 CNN,但它们要复杂得多,这使得它们在区分面部方面更有效。

在我的小而有趣的项目中,我想测试一个简单的有 3 层卷积层的 CNN 如何区分我和其他红发男人。我认为这将是一个有趣的项目,因为人们似乎总是把我和其他红发人搞混,所以我想知道人工智能是否也会这样做。

我将讨论的内容:

  • 我的假设是什么
  • 我如何着手这个项目
  • 我的方法的缺陷
  • 结果

我的假设是什么:

我曾经和简单的 CNN 一起工作,把狗和猫区分开来,效果非常好,所以我也相信一个简单的 CNN 在区分我和其他有 3 个卷积层的红头发的时候有 80%的准确率。

我如何着手这个项目:

简单 CNN:

CNN 要想做好,需要大量的图片作为参考。我在网上获得了 1300 张其他红发男性的照片,并给自己拍了大约 400 张照片。1300 张其他红发人的照片由 15 名年龄在 20-30 岁之间的不同男子组成,在许多不同的背景下,他们的脸清晰可见。我的照片大多是用不同的背景和服装自拍的。我的脸也出现在每张照片中。

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

https://www.clarifai.com/technology

我不想太深入了解 CNN 是如何工作的,但如上所述,它有一个卷积层、池层、全连接层和输出层。这是非常高的水平,因为有不同的激活功能,惩罚和 softmax 功能也涉及。

我决定在我的模型中使用三个卷积层和池层,ReLu 作为激活函数。我本来可以在我的模型中添加更多的卷积层,但我认为即使对于我正在使用的 GPU (AWS)来说,它的计算量也会变得太大。

考虑到只有 400 张我自己的照片和 1300 张其他红发男人的照片的不平衡的阶层,我包括了 50%的退出率来帮助弥补这个差异。

亚当·盖特基的人脸识别:

我利用了一个由 ageitgey 构建的人脸识别库,其中他们使用 dlib 来构建。据称,“该模型在野生基准中的标记人脸上的准确率为 99.38%。”

如果你看了亚当·盖特基的 Medium 帖子,就会深入了解这是如何运作的。

首先,看一张照片,找出照片中的所有面孔

第二,专注于每一张脸,并能够理解即使一张脸转向怪异的方向或在光线不好的情况下,它仍然是同一个人。

第三,能够挑选出你可以用来区别于其他人的面部特征——比如眼睛有多大,脸有多长,等等。

最后,将这张脸的独特特征与你认识的所有人进行比较,以确定这个人的名字。

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

Result of locating the 68 landmark features on your face

当用它来区分自己和其他红发人时,效果非常好。只是为了好玩,我试着用在我的狗身上,但是没用。在我 12 岁时的旧照片上使用时,它也不起作用。当然,即使对人眼来说,这也变得更加复杂。

我的方法的缺陷:

我的方法最大的缺陷是没有足够的图片和不平衡的数据。

为什么会有这些可能的问题?

  • CNN 需要大量的图片才能正常工作。很多时候 CNN 模型使用数百万张图片,当然这并不总是必要的,但会导致更好的结果。
  • 不平衡的数据会导致过度拟合,这是不好的。例如,如果 90%的数据属于第 1 类,10%属于第 2 类,那么模型将会假设所有数据都属于第 1 类。为了帮助这个过程,我引入了退出作为惩罚措施,但是引入合成采样或者只是给自己拍更多的照片可能是有益的。

结果

我的 CNN 模型工作得非常好,准确率高达 94%!然而,如前所述,一些陷阱可能会提高这种准确性。当我使用 ageitgey 的人脸检测库时,它每次都能识别我,然而我只尝试了 50 次。鉴于 Adam Geitgey 发现的 99.38%的准确率,在区分人脸时使用人脸识别显然是有意义的。然而,简单的美国有线电视新闻网似乎在区分我和我的红发男同胞方面做得很好。这个小项目产生了有趣的结果,我很高兴人工智能能把我和其他红头发区分开来,而陌生人却不能:)!

AI 能有创造力吗?

原文:https://towardsdatascience.com/can-ai-be-creative-2f84c5c73dca?source=collection_archive---------0-----------------------

全面审视计算机和创造力的现状

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

2015 年,研究人员安托万·库里、杰夫·克伦、达内什·塔拉波和让·巴普蒂斯特·穆雷在他们的屏幕上看到了一个古怪的异常现象。

他们在模拟环境中训练机器人,如果它们的腿受伤了,就能适应行走。当他们试图找到机器人行走所需的与地面的最少接触时,他们发现了一个不可能的值——计算机计算出机器人可以在脚与地面 0%接触的情况下行走。

机器人不接触地面怎么可能行走?

当他们播放视频时,他们发现了一些惊人的东西。计算机已经提出了一种步态,在这种步态中,机器人可以翻转自己,用肘关节行走,从而将脚的接触减少到 0。

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

The AI came up with a creative solution to walk without any of its feet

如果这项任务交给人类,他们似乎不太可能考虑不使用腿的机器人行走步态。人工智能自己想出了一个独特的解决方案。

那么问题就来了——人工智能有创造力吗?

创造力是我们通常认为人类独有的技能。有史以来,我们一直是地球上最有创造力的生物。鸟类可以筑巢,蚂蚁可以筑巢,但在地球 5.101 亿公里的表面上,没有任何其他物种能接近我们人类表现出的创造力水平。

然而,就在过去的十年里,我们已经获得了用电脑做惊人事情的能力,就像机器人一样。随着 2010 年代的人工智能热潮,计算机现在可以识别人脸,在各种语言之间进行翻译,为你接听电话,并在世界上最复杂的棋盘游戏中击败玩家,等等。

突然间,我们必须面对这样一种可能性,即我们的创造力在宇宙中并不是无与伦比的。

那么,创造力不再是人类独有的特征了吗?人工智能能有创造力吗?

反对人工创造的论点

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

Computers enabled a 16 y/o me to create this (questionable) art

反对计算机有创造力的通常论点是,它们只能做被告知要做的事情。人类是给它们编程的人,它们只是给定指令的奴隶,并据此执行任务。他们是机器人——这个术语来自捷克语 robota ,字面意思是强迫劳动

另一方面,人类不受规则的约束,他们可以创新,跳出框框思考;他们很有创造力——无中生有。

但这一论点在两个层面上失败了。

首先,认为人类摆脱了“编程”的束缚是自私的,因为在现实中,我们就像计算机一样,固有地运行在一套基本规则上,只是我们的编程不是用 0 和 1,而是用 A、C、T 和 Gs。

正是这些相互对立的规则创造了我们定义为创造力的复杂性。然而,这同样适用于计算机。在目前可能是计算机科学中最热门的领域之一——机器学习中,计算机通过融合成千上万个人工神经元的计算来进行学习。人们很容易将计算机视为许多简单规则的组合,但复杂性只不过是复合的简单性。

其次,考虑一个 AI 如何学习。在当今最成功的方法之一中,计算机被输入了数千条(如果不是数百万条的话)与它要学习的任务相关的数据。例如,如果它需要检测图像中的肿瘤,它会被输入突出显示肿瘤的 x 光图像。它试图检测肿瘤,并根据它是对还是错,调整自己以更加准确。在看过数百万张这样的图像后,计算机学会了如何突出肿瘤的图像。

复杂只不过是复合的简单。

人类的学习方式几乎相同。我们反复尝试,基于我们是对还是错,我们调整我们的方法,直到我们达到一定的能力水平。

因此,即使我们的学习方法非常相似,当计算机做独特的事情时,我们经常会找到方法避免称之为创造性。

对创造性计算的偏见

当人类想出新奇和令人惊讶的东西时,它被视为创造性天才,被称为洞察力。

当计算机创造一些新奇和令人惊讶的东西时,我们认为创造者是有创造力的,或者认为它是危险的,需要人工智能来解释自己。

在许多情况下,这种解释是有根据的。如果一辆自动驾驶汽车做出了转向以避免杀死乘客或保持路线以避免杀死行人的决定,伤亡者的家属会想要一个解释,为什么人工智能做出了这个决定,即使得到这个问题的答案并不容易

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

A trolley problem for the 21st century

另一方面,当一个人工智能学习生成莫奈风格的绘画时会怎么样?我们认为人工智能和艺术家做同样的事情一样有创造力吗?通常,这种创造力被置之不理,理由是计算机用原始数学来做,而人类会用直觉来做。

事实上,每当计算机学会做一些我们认为只有人类才能做的事情时,我们就会改变我们的假设,认为这种活动对计算机来说很简单。

例如,自动字幕视频,下棋,甚至垃圾邮件检测曾经被认为是极其困难的,甚至是计算机不可能做到的,但现在是规范。从本质上说,我们对计算机已经取得的进步视而不见,因为我们一直通过贬低它们执行的任务来忽视它们的创造力。

重要的是要记住,与人类相比,人工智能已经走了多远。然而,了解他们的缺点也很重要。

人类和人工智能的区别

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

Perhaps one of the better style transfers I’ve made

我们人类在许多领域都有中等的才能,而人工智能只在一个极其狭窄的领域有着极高的能力。

人类可以学习走路、说话、理解、绘画、创作音乐、与他人交流等等。人工智能只能做其中一件事,但做得很好。

例如,研究人员训练一个人工智能将绘画风格转换为普通照片的内容。与人类不同,人工智能可以在一小时内数字化复制数千幅这些风格化的画作。然而,同样的人工智能不能做任何其他事情。

因此,有人可能会说,如果没有人类创造和部署人工智能来完成这些任务,人工智能什么也做不了——作为它们的创造者,它们的创造力实际上就是我们的创造力。

然而,如果没有人工智能中数千个神经元的数学计算值,这些画也不会被制作出来。

创造性的输出——绘画,既依赖于人工智能,也依赖于人类,所以它们不能在不包括另一个的情况下归于任何一个。

数字艺术家的崛起

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

Bloomberg’s Cover Featuring AI Art

人工智能和人类的这种结合在任何领域都比不上最典型的创造性学科——艺术。

有无数的艺术家结合他们的艺术洞察力和人工智能的创造能力,在网上创造惊人的创造力展示。

Twitter 用户 Manoloide 和 Robbie Barrat 利用电脑创作出令人惊叹的艺术作品;罗比·巴拉特制作的人工智能艺术甚至登上了彭博杂志的封面。

人工智能本身对哪种艺术好看没有任何品味或洞察力,但如果没有人工智能,人类就无法做出他们目前所做的令人惊叹的创作。

[## 马诺洛伊迪(@马诺洛伊迪)|推特

Manoloide 的最新推文(@manoloidee)。创意编码员和生成设计师。可供自由职业者使用…

twitter.com](https://twitter.com/manoloidee) [## 罗比·巴拉特(@DrBeef_) |推特

Robbie Barrat 的最新推文(@DrBeef_)。📺+👁//我爱机器学习🤖💭+艺术🎨+植物🌱🌷//就……

twitter.com](https://twitter.com/DrBeef_)

创造力的未来

总之,人们经常说计算机只能做它们被明确编程的事情,因此它们不可能有创造力。然而,随着机器学习的兴起,AI 现在可以学习某些技能。

这就是说,人工智能只会像它的训练一样好,除了它被训练的狭窄领域之外,它将无法在其他领域做任何事情。这需要人类组装数据集并为人工智能编码。人工智能在理解上也没有任何判断或细微差别。这是人类带来的技能。

所以,AI 和人类放在一起,可以成就大事。他们可以成为世界上最好的棋手,将世界名画的风格转移到成千上万的图像中,并为我们认为不可能解决的问题找到极具创造性的解决方案。

我将引用美国历史学家梅尔文·克兰兹伯格的一句话来总结这个观点

一场音乐会后,一位女士来到伟大的小提琴家弗里茨·克莱斯勒面前,激动地说:“大师,你的小提琴奏出了如此美妙的音乐。”克里斯勒把他的小提琴举到耳边说:“我没听到里面有任何音乐。”你看,乐器,硬件,小提琴本身,没有人的因素是没有用的。但是话说回来,没有乐器,克里斯勒就不可能创作音乐。

人工智能是未来创造力的画笔。对于它来说,创造它的艺术,它需要一个人类的使用者,而对于人类来说,创造艺术,它需要画笔的笔触。

AI 可能吗?

原文:https://towardsdatascience.com/can-ai-be-possible-880580febb17?source=collection_archive---------6-----------------------

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

https://en.wikipedia.org/wiki/The_Creation_of_Adam

如今,大多数被视为科技行业先驱的人都在谈论人工智能及其对我们日常生活的潜在或好或坏的影响。甚至他们中的一些人以人工智能可能对人类具有破坏性的方式来解释他们的观点。但在这个故事中,我不打算以社会学的方式讨论和参加这场辩论。因为,我想提一下,有没有可能通过模仿或不模仿来创造人工智能/以人工方式再造自然智能,在结论部分,我的想法只是简单地得出结论,这种社会学讨论目前是走向人工智能的不成熟的步骤。

在阐述我关于人工智能的可能性的想法之前,我想澄清一些主要的概念和定义,使我的想法更加精确。正如塞尔(1980)所说,有两种类型的人工智能。这些都是弱强 AI。弱 AI(我称之为“非常弱的 AI”)可以参考现在的机器学习应用。有一些系统可以通过使用监督或无监督的学习算法来预测/产生给定输入的输出,而无需显式编程。事实上,人工智能炒作被这种弱人工智能加速了,当人们谈论智能系统时,他们指的是弱人工智能,而不是有意的强人工智能。另一方面,强人工智能意味着类似人类的系统,包括自我意识和意识等。(我也不打算定义这些术语,因为有很多数百页的书籍试图定义它,它们的成功是值得怀疑的,但所有人都“理解”我的意思)。当我听到一个流行词“人工智能”时,不像其他人,我只想到强人工智能。我相信技术专家喜欢谈论人工智能(指弱人工智能),以关注和声称它具有自我意识,并改变我们的整个生活方式甚至人类,因为当人们被鼓励想象机器人做和我们完全一样的事情时,他们是迷人的(世界上所有人听到人工智能时,只有三件事总是迷人的,外星人,金钱)。

但这是真的吗?,我对此表示怀疑。让我们讨论一下深度学习作为创造人工智能的最合理和可行的计算视角。整个软件行业试图通过提供容量、存储、软件框架等来支持神经网络。我应该承认,我也是深度神经网络的粉丝,因为它有可能彻底改变我们的生活方式(我知道作为一名计算机科学家,对某些东西着迷是错误的)。但这并不意味着深度学习是创造由意识组成的人工智能的最合适的方法。例如,您有 1 TB 的猫图像,并训练您的卷积神经网络,您的系统通过预测世界各地不同图像中的整只猫来正常工作。你的系统可能看起来很智能,因为你的系统是猫的专家。然而,当我试着给狗用的时候。你的答案是显而易见的:我们可以用狗来训练这个神经系统,它现在成为了狗的专家。但我们应该承认,在地球的生态生活中,即使是最简单的生物也有这样的能力,我不是在说已经进化了数百万年的哺乳动物(我们为恐龙的花生大小的大脑感到遗憾,相反,与我们在认知任务方面的深层神经网络相比,它们可以被视为天才)。我仍然不会通过谈论意识或语言习得来放松我的辩护。

另一件事是为什么深度学习和其他机器学习算法不能创造强大的人工智能,它们受限于梯度下降及其衍生。我知道今天最优化的唯一解决方案是梯度下降,但它只存在于一些维微积分和一些图形中。我不相信我们复杂的大脑是以这种方式工作的(我们应该承认,我们没有需要解决的局部最小值问题)。

为了阐明我们为什么远离 AI,我想提一下关于视觉认知。我选择它是因为它似乎是最接近的外围模块,我们可以创建它的计算算法。有许多计算机科学家致力于这一课题,以创建/开发一种能够识别类似于我们视觉系统的物体的软件或算法。其中一些人声称他们是成功的。是吗?。我们的视觉系统通过语义构建来工作。

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

http://cogprints.org/442/1/node1.html

例如,如上所述,每一个健康的人通过构建矩形障碍物后有一个圆来构建 B 和 D。我们的视觉认知已经进化到即使物体被遮挡也能理解它们。因为我们可以从语义上构造对象,而不是使用一些预先训练好的机制。视觉搜索也是另一个非常困难的问题(即使与其他认知任务相比似乎很容易),从计算的角度来看,我们还远远没有克服。因此,尽管深度神经网络架构看起来像我们的神经网络系统。它看起来只是在类比,而不是功能。

在解释了为什么当前创建人工智能的方法不够充分以及人们在谈论人工智能时指的是什么之后,我想深入更抽象的方面,以揭示我们如何才能创建强大的人工智能。

我不是数学家,也不打算对哥德尔的不完全性定理做详尽的解释。但简单地说,我们试图通过使用我们的理解和创造机制来理解和创造类似人类的智能。系统试图理解自己。这是一项递归任务,我们的能力有限。这就是为什么,哲学辩论陷入了一种定性,无法超越这种定性(Dennet(1971)的立场解释似乎是合理的,但没有线索表明我们如何才能用数学建模)。但是我们有一种强大的表达语言,可以超越我们的思维能力:数学。例如,根据爱因斯坦的相对论,时间是第四维,而根据量子物理学,可能还有其他维度。但是从进化的角度来看,我们已经进化到生活在三维空间。因为既然我们是狩猎采集者,仅仅通过适应三维空间就足以生存和进化。虽然我们不能把时间想象成一个维度,但我们有能力用数学来表达它。此外,我相信,虽然我们不能把时间想象成一个维度,但我们的大脑在没有通知我们的意识部分的情况下可以做到。让我们把我的话解释得更清楚些,即使我们没有想象时间的能力,我们的大脑意识到时间是一个维度(我试图在下一个故事中证明我的说法),接受时间是一个维度的唯一解决方案是使用数学。我们正试图创造类似人类的智能(强人工智能),而不处理时间维度,但根据我的说法,我们应该这样做,即使是在深度学习中。因为,鸟类知道他们应该在“时间”到来时迁徙,另一方面,我们的神经网络不知道三秒钟前发生了什么。

但是出现了另一个问题,即当前的计算物理体系结构(计算机)不适于为人工智能的创造而设计,这是一个障碍。它们被保存在二进制环境中,当事物可以用二进制形式表示时,计算机才具有表示能力。这就带来了为什么恐龙比我们的神经网络聪明。

总而言之,你可以叫我物理学家,但人类是基于空间法则的。为了揭示包括黑洞、上帝粒子、暗物质在内的整个空间规律,我们应该使用数学。同样的规则也适用于自我意识。但是,即使我们创造了类似人类智能的数学和计算公式,我们也应该尝试不同的计算架构,而不是当前的计算机(如今量子计算机似乎是这方面的更好候选)。我们现在似乎还不能创造出强大的人工智能,总有一天会的。

人工智能能做 10 分钟的核磁共振吗?

原文:https://towardsdatascience.com/can-ai-enable-a-10-minute-mri-77218f0121fe?source=collection_archive---------4-----------------------

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

MRI 机器(磁共振成像)是一头笨重的野兽。站在超过 7 英尺高,像一辆家用汽车一样宽,重量超过一吨,不断发出令人不安的滴答“嘶嘶”声,不完全是一件对病人友好的医疗设备。

也可能是致命的。任何近在咫尺的铁磁性物体都会以加速的速度被强大的磁场吸走,消灭其路径上的任何东西。再加上你必须躺在其中的导致幽闭恐惧症的隧道(大约 60-70 厘米宽,平躺时刚好够你的鼻子通过),它一旦启动就会发出令人震惊的嘈杂混乱的撞击声,加上在整个过程中(长达一个小时)需要绝对静止不动,你就可以开始理解为什么病人对他们的 MRI 扫描有点紧张了。

一位病人向我描述它为“一个活棺材……当死神从另一边大声撞击时,我们有足够的时间去思考人生和来世”。

那么,为什么我们医生要让我们的病人经历这种经历呢?不是残忍,而是善良。核磁共振成像是医学技术的现代奇迹,是英国人引以为豪的发明,它让临床医生可以看到人体内部的精致细节,而没有 X 射线或 CT 扫描带来的任何副作用或辐射风险。人体解剖很大程度上是基于水的(氢和氧原子),磁共振利用这种生化组成,通过使用强大的磁场梯度来控制体内每个氢原子的方向,在释放它们之前将它们排列在一个统一的方向上,并让它们以只有微调接收器才能检测到的频率旋转。它背后的物理学是复杂而令人震惊的,由此产生的图像是非常简单的惊人。

病人为这种优秀所必须付出的小小代价是长时间呆在被嘈杂噪音包围的静止的禁闭室内。

目前…

在匹兹堡举行的最后一次年度医学成像信息学学会 (SIIM)会议 2017 上,学者和医生聚集在一起讨论放射学的最新研究。展出了数百张科学海报和演示文稿,来自医学成像所有子领域的专家们带来了最新的理论和突破。一个评委小组宣布第一名获奖的研究海报来自宾夕法尼亚大学,题为“优化低剂量计算机断层扫描数据的机器学习算法的诊断质量”(Cross 等人,U Penn)。

这张海报简单明了,描述了 CT 成像中的一个巨大突破,这是一种基于 X 射线辐射的成像方式。他们使用获得专利的 FDA 批准的算法来评估算法增强的低剂量 CT 图像的诊断质量。实质上,CT 扫描是在超低辐射剂量下进行的,几乎相当于简单的胸部 X 射线,并与正常的高剂量 CT 图像进行比较。他们发现 91%的 AI 增强低剂量图像被放射科医生评估为诊断性的,而只有 28%的未增强图像是诊断性的。

这类似于侦探剧里的场景,剧中人物看着屏幕上模糊的闭路电视镜头或照片,有人大喊“增强!”IT 人员神奇地敲敲键盘,图像立刻变得非常清晰。只不过这是真的,而且对 CT 图像有效。更好的是,它可以处理来自任何供应商的辐射剂量远低于标准技术的 CT 图像。

该算法的开发人员(PixelShine,来自 Sunnyvale 的 pre-Series B 初创公司,名为 Algomedica )声称,原始噪声功率谱(所有频率的噪声纹理)完全保持不变,同时通过降低噪声幅度来提高诊断图像质量,这是典型的剂量减少技术(如迭代重建)无法有效做到的。(事实上,使用的重建迭代次数越多,图像质量就越差。)但他们的算法并非如此——看看下面的例子…

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

Left: Standard high dose CT at 12.4mGy. Middle: Ultra-low dose CT at 1.3mGy. Right: AI-enhanced ultra-low dose CT at 1.3mGy. Diagnostic image quality between the left and right images was rated as comparable by independent radiologists, despite a significant dose reduction of 11.1mGy. The middle image is noisy and non-diagnostic. Images courtesy of Algomedica.

这种技术的含义可能会改变游戏规则。如果被证明能够在不损失临床重要细节的情况下稳定工作,那么就有可能将标准 CT 辐射量降低几个数量级。目前的辐射剂量,取决于被扫描的身体部位和其他因素,大致相当于在切尔诺贝利事故现场呆一个小时所受到的辐射量(见下图)。这不足以构成任何重大风险,但多次扫描将随着时间的推移增加个体风险,如组织损伤和诱发新的癌症。事实上,为了保持放射科医生期望的图像质量,ct 扫描仪的供应商受到一种不正当的激励而不是减少太多剂量(尽管他们确实提供一些减少剂量的技术)。然而,通过执行超低剂量 CT,然后使用人工智能对图像进行后处理,这些风险可能会大大降低,特别是对儿童而言,使辐射剂量接近几乎可以忽略不计(例如,相当于长途飞行穿越美国的辐射量)。此外,理论上这可以通过消除对昂贵的高性能组件的需求来降低 CT 扫描仪的成本,这也是大供应商可能不喜欢的。这才是真正的颠覆。

辐射安全领域有一些指导原则,被称为 ALARP & ALARA (尽可能低的合理可行/可实现水平),即医疗程序的辐射暴露必须尽可能低,同时仍能保持诊断效用。深度学习算法在增强超低剂量 CT 方面的新潜力可能会重新定义我们认为实用和可实现的东西。蛋糕上的樱桃是,这些算法可以在任何 CT 供应商生产的任何剂量的图像上工作,这意味着可扩展性和采用是需要克服的低障碍。我期待着临床试验的结果,以确定这些算法的有效性。

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

Image courtesy of xkcd.com

那么,这如何转化为 10 分钟的核磁共振成像呢?

Algomedica 也在使用深度学习网络进行研究,以增强欠采样的 MRI 图像数据。CT 有辐射的缺点,MRI 有采集时间延长的缺点。如果能够开发出算法来增强在缩短的时间帧内产生的噪声、颗粒状欠采样 MRI 图像,那么就有可能将花费在 MRI 扫描仪上的时间减少 2/3。客观地说,腰椎核磁共振成像的标准研究需要大约 30 分钟。深度学习算法可以将这一时间缩短到仅仅 10 分钟。这比花在听死神敲打你的临时棺材上的时间要少得多!

深度学习应用的研究在该领域相对年轻,在纽卡斯尔国王学院都有一些活动,但在其他地方与深度学习相关的结果很少发表(来自一个中国小组的【2012 年的这篇论文是该领域最早的论文之一,但没有使用 DL)。使用稀疏图像数据采集来减少 MR 次数是可以实现和可用的,但并没有达到深度学习承诺的结果。例如,就在最近,斯坦福大学的研究人员报告了 PET(正电子发射断层扫描)的一些结果,放射性示踪剂剂量减少了 99%。这与英国尤其相关,英国有可能脱离欧洲原子能共同体,成为英国退出欧盟的一部分,因此无法获得 PET 成像所需的大量放射性同位素。

毫无疑问,PET、MR 和 CT 扫描仪的大供应商也将意识到这一潜在的利基——他们毕竟已经引入了品牌特定的剂量减少技术(如 CT 的迭代重建)——并且很快将开始竞赛,以找出谁能够在最短的时间内提供最佳质量的 MRI 图像,并以最低的辐射剂量提供 PET 和 CT。这项工作当然需要高性能计算基础设施的支持,因为 MRI 数据比其他成像模式大得多。它还需要放射科医生的大量输入,以提供可接受的图像质量水平建议,以确保诊断和临床安全,以及医学物理学家的建议,以调整扫描仪的采集参数,但如果要实现最终目标,这些技术和合作挑战是值得克服的。

MRI 吞吐量提高了 3 倍

假设该技术被证明是可行的,那么将 MRI 患者吞吐量增加三倍肯定会对成像研究的等待时间产生显著的积极影响,特别是对于肌肉骨骼问题和癌症,这是 MR 成像的主要内容。同样,减少辐射暴露将使 CT 扫描的使用增加和更加自由。在医院里,我们甚至可以看到“平片”标准 X 射线的减少,因为 MR 和 CT 都成为了首选方式。我当然可以想象这样的场景,例如,在一个& E 怀疑手腕骨折直接进行快速核磁共振扫描,呼吸急促的患者避免胸部 x 光检查,直接进行低剂量 CT 胸部检查。PET-CT 可能会成为医院癌症诊断的首选检查手段,而不是现在的附属品。这项技术可能还会增加对某些身体部位的小型专用扫描仪的需求——脚踝/膝盖 MR 机器不需要像它的全身同类产品一样大,而大脑 CT 扫描仪现在可以安装在救护车内,以当前辐射剂量的一小部分提供对威胁生命状况的急性成像。

当然,这种开发和实现必须通过为周围的基础设施提供更多的资源来支持。花在这里的钱将会带来预期的节省。为了以更高的吞吐量操作设备(放射技师)和报告增加的图像量(放射科医生——除非人工智能图像感知算法接管,但这是一个单独的论点!)都需要增加人员。).还需要考虑改进预约安排,以适应增加的吞吐量,我们甚至可能需要更大的病人等候区和更好的设施,以便让病人换上病号服和进出扫描仪!

在我看来,所有这些都是有可能的,但要实现这一目标需要付出艰苦的努力。尽管有争议的算法仍处于临床验证阶段,但这项研究肯定会取得进展。我希望看到更多的医院在早期阶段参与这类工作,进行更多的试验。

在此之前,我们需要时间来节省时间、拯救生命和提高护理水平。

如果你和我一样对放射学人工智能的未来感到兴奋,并想讨论这些想法,请保持联系。我在推特上 @drhughharvey

如果你喜欢这篇文章,点击推荐并分享它会很有帮助。

关于作者:

Harvey 博士是一名委员会认证的放射科医师和临床学者,在英国国民医疗服务体系和欧洲领先的癌症研究机构 ICR 接受过培训,并两次获得年度科学作家奖。他曾在 Babylon Health 工作,领导监管事务团队,在人工智能支持的分诊服务中获得了世界第一的 CE 标记,现在是顾问放射科医生,皇家放射学家学会信息学委员会成员,以及人工智能初创公司的顾问,包括 Algomedica 和 Kheiron Medical。

AI 能否重塑机场卓越?

原文:https://towardsdatascience.com/can-ai-reinvent-airport-excellence-bbf581939c4e?source=collection_archive---------19-----------------------

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

Photo credits : International Airport Review

如果航班调节着机场的心跳,那么管理就是它的灵魂。

几乎在任何地方,管理层都可以利用数据来提高机场服务质量。开放数据的集成可以减少进入机场和航站楼登机口的排队时间。更好地利用信息可以促进飞机、乘客和物资的实时流量预测。通过更深入地了解客户、员工部署和资源分配,机器学习可能是优化流程的关键。随着机场从航站楼向多模式商务和休闲中心发展,人工智能可以成为收入机会的来源。将有利可图的大数据和人工智能应用于机场管理的关键成功因素是什么?

大数据方法解决了改善机场流程的五大挑战。数量机场管理数据,传统上与其他行业相比并不多,但现在由于安全和监管限制而呈指数级增长。随着数据科学团队希望更好地了解飞机、资源和人员的移动,数据的多样性正成为一个真正的挑战。随着自动化空侧操作成为现实,数据的速度也成为一个紧迫的问题。随着管理团队努力理解实时数据、数据科学和预测分析的重要性,数据的准确性现在是一个关键的成功因素。最后,数据的与改善个人和集体航空旅行体验的应用直接相关。

人工智能的商业价值与其降低商业预测成本和减少运营过程中的可变性的潜力相关联。人工智能的应用已经证明了它们在自动化计划、组织和预算方面的价值。在不久的将来,机场管理层将专注于定义和评估人工智能的方向和采用率,以优化主动员工和预测人工智能代理的团队。随着机场从航站楼演变为多模式服务中心,经理们今天需要思考机场有一天可能会是什么样子,并问自己人工智能实验在什么程度上可以证实这种愿景。

不幸的是,从这里到那里的飞行路线没有清晰的轨迹。今天的大多数机场离人工智能就绪的组织还很远。机场不是传统意义上的连贯组织,而是复杂的适应系统,容纳了多个业务,它们具有相互竞争的逻辑、网络和目标。“机场”不仅接待航空公司制造商、运营商、监管者,还接待共享机场空间的零售、餐饮、休闲和娱乐实体。这些企业对经济周期、政治和环境压力、社会人口统计和技术创新的反应可能大不相同。*几乎没有共同的流程,没有单一的控制点,也没有创建世界级机场的“唯一最佳方式”。*利用数据或开发人工智能应用程序,必须考虑机场的现状以及未来的发展趋势。

在这样的背景下,过程挖掘可能是数据科学最有用的应用之一。流程挖掘是流程管理领域的一系列技术,支持基于不同机场技术留下的数据线索的业务流程分析。流程挖掘不是试图开发机场应该如何运营的更好模型,而是试图将运营流程与不同客户、代理和经理的互动方式相协调。这种“翻转”过程模型的目标是从经验中学习,而不是从专业知识中学习。虽然在这一领域的第一次实验主要集中在行李处理和队列管理上,但人们可以预期,过程挖掘技术将在解决机场当局目前面临的许多挑战方面产生红利。

*人工智能的最终目的不是让机器变得更聪明,而是帮助管理者在他们的组织环境中做出更好的决策。*管理决策不是基于数据,而是基于对数据的理解,这些数据本身就受到移情、直觉、想象力和情感的影响。在复杂的机场中,管理层根据可用数据与运营伙伴协商共同决策。如果机器学习旨在突出数据集的相似性,管理层将继续关注运营流程中异常(异常值)的重要性。与过去一样,在可预见的未来,管理人员的表现将不会根据他或她在电脑后对数据的处理来评估,而是根据他们在同事和客户面前对信息的处理能力来评估。

我将在法兰克福机场卓越运营和自动化 IQPC 会议上讨论和发展这些主张。我们将与其他会议发言人一起讨论如何使 IT 流程适应实际的机场和航空公司实践。我们将扩展讨论,探索人类和人工智能之间的相互关系如何真正为机场生态系统增加价值。我期待在法兰克福见到你。

商业分析研究所的 Lee SCHLENKER 博士

2018 年 10 月 12 日

Lee Schlenker 是商业分析和社区管理教授,也是 http://baieurope.com 商业分析研究所的负责人。他的 LinkedIn 个人资料可以在查看你可以在的 Twitter 上关注白

人工智能能帮助你找到爱情吗:理解婚介行业

原文:https://towardsdatascience.com/can-artificial-intelligence-help-you-find-love-understanding-the-business-of-matchmaking-2b51a8cc8f76?source=collection_archive---------5-----------------------

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

我认为我这一代人是极其幸运的一代,他们处在由技术革命推动的世界巨变的尖端。我们伴随着盒式录像带和录音机、有线电话和大盒子电脑、充满书香的大图书馆长大。然后,几乎不知不觉地,我们过渡到了 iPods 和 YouTube,智能手机和 iPads 和电子书。我猜想,数百年或数千年后,当人们回头看时,我们将正好处于这条线的中间,这条线不亚于现代版的公元前和公元——“谷歌之前-苹果-脸书”和“谷歌之后-苹果-脸书”。

也许更微妙,但更重要的是,我们也正处于风口浪尖的变化是技术的到来在社会学上意味着什么。个人关系变了。互动的模式和渠道已经演变。“做朋友”有了不同的含义。一个看不见的在线网络越来越多地定义了社会。当我思考这个问题时,它让我想到了另一个方面——坠入爱河的概念和行为是否也发生了变化?

你还记得在那些简单的日子里,爱是如何到来的吗?相亲是由朋友和了解你的人安排的。你和人们面对面交流,看看你们是否有共同的兴趣和信仰。相容性是由相处时间决定的。切入今天的世界——在为你寻找完美伴侣的过程中,数据科学和人工智能越来越多地取代了你的朋友、家人、同事、熟人甚至你自己的判断。

交战规则(一语双关)围绕两个轴心发生了变化:

  1. 你如何连接潜在的爱情兴趣,即介绍和交流的渠道。现在物理会议来的晚多了。你的手机、平板电脑或电脑是你发现和建立潜在浪漫关系的大厦。你用手指轻轻一划就能做出选择。你通过屏幕说话,表情符号代表真实的表情。你希望爱情开花结果。
  2. 你和谁联系,也就是你可以从中选择的一群人。对我来说,这是更明显的变化,在某些方面也更可怕。不再是你或你认识的人提出潜在的匹配。机器已经取代了这个角色。

在当前的范式中,人——人类和个人——可以被参数化,归结为一个“特征集”,然后人工智能驱动的算法可以找到最“最佳匹配”,即你最有可能与谁兼容。让我们把它分解一下,看看这个“爱的事业”到底是如何在幕后运作的。

推荐引擎如今被广泛应用于我们生活的方方面面。当你在亚马逊上购物时,你会得到关于你可能购买的商品的建议,这就是推荐引擎在起作用。当网飞向你推荐你可能喜欢的电影时,情况也是如此。这种应用的清单今天是无止境的。简单地说,这些引擎通常以三种方式之一工作:

  • **历史趋势:**基于人 X 过去的行为,引擎会尝试预测 X 未来可能做出的选择的可能性。
  • “像你一样的人”:在这种方法中,首先基于机器学习的聚类算法将确定倾向于相似的人群。相似性可以通过行为(例如,他们购买或浏览什么,他们如何支付,购买频率,以及无数其他类似的事情)或特征(例如,他们的年龄、性别、地点等)来定义。)或者两者都有。然后,推荐引擎不仅会根据 X 过去做过的事情,还会根据其他“喜欢 X”的人做过的事情来预测 X 的选择。
  • 【基于内容】:这种方法更关注目标项目及其特征,而不是人的特征。所以在网飞电影的例子中,这将转化为识别 X 喜欢看的电影的特征(类型、长度、语言、年代、演员等。)来确定他可能感兴趣的内容。

实际上,大多数推荐引擎可能会混合使用以上所有方式。反馈越多,引擎就能越准确地预测行为。反馈实质上是特定的预测(也称为推荐)是否被接受。

现在,让我们回到爱情的话题上。这种相似之处很容易画出来。

  • 不再是被预测有可能被接受的物品或电影,而是 X 可能与之一见如故的人。
  • 历史趋势指的是任何关于 X 以前关系的数据。
  • 喜欢 X '的人将根据 X 自己的行为和特征来确定,例如年龄、种族、教育程度、地点、就业状况、食物偏好、爱好、眼睛颜色、体型、身高等。
  • 目标项目特征现在将指属于预期目标列表的个体中的这些相同特征。

这些特征的列表越长,算法的效果就越好。请记住,X 没有必要明确提供这些数据——在我们今天生活的世界中,大多数这些信息都以某种方式、形式或形式在互联网上围绕着每个人流动——这只是关于访问和挖掘这些信息。

一旦这些数据点可用,人工智能算法就可以施展魔法,为每个潜在客户分配可能性或概率分数,以确定 X 最有可能选择和喜欢的人。和其他情况一样,系统会自我学习,因此它会随着每次反馈变得越来越好,即每次 X 接受或拒绝建议的匹配。

你可能会同意,这背后的科学并不难理解。但这种暗示并不一定令人舒服。理论上,这种方法实际上可以非常好地找到你的爱。像我一样经常网上购物的人可能会同意,亚马逊似乎比你自己更清楚你会对什么感兴趣。它非常好用。这和做媒很像。

这里有一个陷阱——这整个方法有一个潜在的假设,即寻找爱情是基于规则或逻辑的。这就是我个人认为婚介业务永远无法像几乎所有其他应用程序那样从人工智能中获益的地方。因为在现实中,或者说我愿意相信,寻找爱情并不总是合乎逻辑的。因此,尽管机器和人工智能越来越多地扩散到我们生活的各个方面,但我坚信,在这个特定的领域,神秘和神奇可能会挥之不去。

大数据能给农业带来巨大回报吗?

原文:https://towardsdatascience.com/can-big-data-deliver-big-returns-for-agriculture-8800d31440a?source=collection_archive---------0-----------------------

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

你好 2017!这是一个大胆的新年,也是开始一些新习惯的好时机。我围绕太阳旋转的目标之一是写更多我热爱的事情。

尤其是……技术。农业。初创企业。和其他相关的东西。

我喜欢阅读这些话题,但是我没有看到足够的关于它们的文章。特别是农业科技。为什么会这样?

所以我想在 2017 年,我将停止抱怨,开始贡献我自己在农业科技领域的经验和教训。这是一个令人兴奋且快速增长的领域,需要更多的关注。我希望我能帮助照亮一些光。

同时,我会分享我对创办农业科技公司其他方面的想法。是的,所有这些其他的(有时是混乱的)幕后活动都是将想法转化为市场所必需的。比如创新、犯过的错误、吸取的教训、建立一个团队/产品,以及创办、运营和发展一家科技公司的基本要素。

四年前,我创办了 AgDNA ,并成功地走过了艰难的创业之路,建立了一家正在崛起的伟大的农业科技公司。我也将分享一些我在硅谷和风险投资领域的经历。虽然 AgDNA 没有筹集风险投资基金(我们选择保持私有),但我也学到了很多关于 AgTech 创业场景的那一面。

因此,为了不跑题,不让人觉得我是在推销,我想从大数据这个话题以及它如何惠及农业开始。我希望这将是有趣的农业科技系列文章的第一篇。

享受吧。

大数据的前景

你可能听说过科技行业中提到的术语大数据。这是一个经常被放错地方的标题流行语。在农业方面尤其如此。

大数据通常以数量、多样性、速度、可变性和准确性为特征。农业绝对有这些!

数量——仅美国就有 3.5 亿英亩农场。

多样性——不同的作物类型、拖拉机、技术提供商、数据格式。

速度—拖拉机现在每秒钟可以在整个田地中记录多达 5 次的数百个数据点。

可变性——土壤类型、降雨模式、温度、风暴事件,还需要我多说吗!

真实性——糟糕的手机连接、恶劣的环境条件、大量的断点。

农业绝对有资格成为大数据参与者!

农业部门在利用大数据技术方面处于有利地位,许多公司正在为其成功做出贡献。所有主要的拖拉机制造商都在他们的设备中嵌入了传感器,将他们的机器连接到云端。科学气象研究人员创造了专门针对农业的天气解决方案。出现了无数的初创公司,它们开发各种各样的田间传感器,以捕捉土壤、水分、作物和其他关键数据点。

然而,最终结果往往是数据过载。

除此之外,气候模式的变化也导致了复杂多变的作物生产环境。数据过载会很快导致数据混乱。

这是大数据解决方案真正大放异彩的地方。

大数据幻觉

各地的农业科技公司都在谈论他们的大数据解决方案、云、数据分析和其他技术术语,这些听起来很聪明,但没有充分说明对种植者的真正价值。现在,我确信这些公司中有许多是出于好意,但从我的观察来看,他们中的许多人甚至没有触及我们新兴的大数据世界需要什么或可能什么的表面。

收集大量数据是一回事。将它转化为可操作的见解,进而转化为种植者更高的利润率,则完全是另一回事。农业科技公司必须投入艰苦的努力,代表客户爬上从数据到知识的金字塔。最终我们必须获得智慧,但这是另一篇文章本身。

攀登金字塔是一个滑动的斜坡,有许多移动的部分来开发所需的大数据解决方案,从季节开始到收获,一路上展示明确的经济价值。

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

DIKW Pyramid Source: https://en.wikipedia.org/wiki/DIKW_pyramid

大数据机遇

那么什么是大数据,为什么它对农业如此重要?

大数据本质上是使用非常强大的计算机来执行数据分析任务,这些任务无法由人类在使用传统软件的标准计算机上轻松执行。由于持续不断的数据流经常 24/7 全天候传输,而且不断变化的信息涉及气候、作物、空间变异性、农业设备和其他条件监控传感器,因此自动化和智能化的大数据解决方案至关重要。

大数据可以开始揭示对任何个人来说都不明显的问题和趋势。复杂的数学技术,如机器学习也在这里发挥作用*(我将把它作为另一个话题)。*

不用说,确定这些趋势和见解对农业部门来说是至关重要的结果。对于一些种植者来说,耕作是艰苦的,有时甚至是与世隔绝的。”。

通常情况下,种植者会根据他们传统的作物管理方法、农学家的建议以及在当地咖啡店的谈话来为他们的农场做出决策。但是你怎么知道是否有一个更优的决策是基于以前的经验在其他地方做出的呢?

这就是大数据和基准测试可以发挥作用的地方。

大数据的承诺

想象一下,一个种植者准备在他的农场种植玉米,土壤类型从轻沙质土壤(持水能力差)到重粘土(持水能力高)。除此之外,还有一些有陡峭山脊和山坡的田地,以及一些排水不畅的大面积平地。已经有许多关于地形、地表水管理的考虑,我们甚至还没有开始处理天气!

这种情况可能会进一步加剧,因为雨季开始时天气潮湿寒冷,在收获前雨水很少,天气相当干燥。围绕种植什么、如何管理作物以及在整个季节采取什么行动的决策是复杂的。也很难知道赛季结束后会发生什么。

是的,农业是艰苦的!

大数据不寻找因果关系。相反,它寻找趋势。大数据并不试图告诉你为什么会出现特定的结果,但它可以告诉你结果是最佳的,并且代表了非常广泛的数据集。把它想象成一个非常大的现场试验。

通过汇总大量具有相似特征的农场的结果,大数据可以寻找以前不明显的趋势。这可以是根据预测的气候条件将种子品种与特定的土壤类型相匹配。同样的种子品种在其他土壤类型或不同的天气模式下可能表现得非常不同。

大数据平台及其底层算法的作用是分析这些信息,并确定哪些种子品种将在各种土壤类型和生长条件下实现最高产量。这最大限度地减少了每个种植者进行田间试验的需要,而是依赖于大型匿名真实数据集的结果。

*优化种子选择是大数据解决方案的众多可能结果之一。

大数据隐私

关于数据隐私和安全已经写了很多,这是正确的。然而,对于那些选择追求大数据道路并选择匿名分享数据的种植者来说,他们将获得巨大的回报价值。在当今大宗商品价格低迷的经济环境下,这一信息可能意味着是实现盈利,还是安排与当地银行经理的另一次会面。

不以销售其他产品(或数据)为经济动机的独立公司正带头冲锋陷阵。聚合大数据解决方案的投资回报(ROI)越来越有价值,不容忽视,这些解决方案可提供用于提供可操作见解的公正决策信息。

大数据的未来

良好的农业通常是关于风险管理的。种什么。如何管理。何时收割。这些都是至关重要的决定,而且做出这些决定的环境也每年都在变化。不同的杂交种子,新的种植技术,化学和肥料解决方案的变化,它们都在决策过程中发挥作用。天气就更不用说了!

大数据是农民和整个行业解决问题并取得阶段性成果的唯一途径。随着大量连续数据(有时是非结构化数据)源源不断地流向云,大数据算法将处理这些数据,以寻求洞察力。

最终,在种植者知道该问什么问题之前,大数据就会给出答案。

除了大数据在农业中的作用,下一代软件系统的工作流程和易用性也得到了简化。至关重要的是,整个行业要继续改进技术解决方案,使其易于农民使用。无论拖拉机是红色、黄色、蓝色还是绿色,工具都必须能够跨不同制造商的数据集进行互操作。玉米、小麦或水稻,数据互操作性是关键。

短期内,农业的经济状况可能会继续艰难。然而,长期前景是光明的。大数据等下一代技术正在进入农业生态系统,将为各地的种植者带来巨大的经济价值并显著改善风险管理。

因此,下次你在媒体上提到大数据这个术语时,请注意,因为它将成为未来几年农场管理的重要组成部分。

如果处理得当,大数据甚至不会显而易见。这将是一个简单的提醒,在你的智能手机开始影响产量之前,你有一个值得检查的潜在问题。

一个简单的消息,可能会节省数千美元!

关于 AgDNA

AgDNA 正在通过智能软件帮助种植者最大限度地提高每英亩土地的收益,从而塑造农业的未来。它的企业级精准农业平台结合了数据科学和物联网(IoT ),帮助商业作物生产商提高产量、降低投入成本和最大化农场盈利能力。被 Lux Research 评为 2015 年十大最具创新性的公司,AgDNA 被认为是世界上最智能的农业平台之一。

“我能在你的电脑上训练我的模型吗?”

原文:https://towardsdatascience.com/can-i-train-my-model-on-your-computer-f59329eacd0?source=collection_archive---------6-----------------------

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

(Photo by Hal Gatewood on Unsplash)

对强大计算能力的需求

电脑擅长一件事:速度快。它们的速度足以进行光速计算。足以在瞬间将信息发送到全球各地。然而,它仍然不够快。软件和硬件之间的持续竞争仍在继续。随着硬件速度越来越快,我们的要求也越来越高。如果速度不够快,我们会要求更多的处理器进行并行计算。获得更快的处理器使我们能够推进数据科学的前沿。由于硬件的进步和可用性,人工智能可以在复杂的视频游戏中击败人类(这里是),合成音乐,让我们不要忘记在 youtube 视频中检测猫!

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

(Hardware used in OpenAI Five)

计算能力与人工智能的成功相关。你可以看到,在过去,机器学习的研究受到可用计算能力的限制。即使他们有大量的数据和我们今天使用的现代方法,他们也不能充分发挥他们的潜力。因此,机器学习和数据科学的应用和影响受到了限制。随着研究人员和从业者获得更多的计算能力,该领域随着先进的方法和有趣的应用而蓬勃发展。

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

(Hardware used in a study in 2006)

对极限的挫败感

如果你是机器学习或数据科学的从业者,你很有可能会遇到计算资源匮乏的烦恼。你等了多少次午夜来运行你的实验?你减少了多少次超参数搜索量,以便它能更快结束?这种限制对我来说是一个很大的挫折来源。就在这个月,我不得不放弃一个个人项目,因为它需要大量的资源。我要么为一个实验等待数周,要么在云服务上花费大量金钱。我还记得当我告诉经理该项目的每一次实验将花费 200 美元时,他的面部表情。我也多次看到有人,或者是他们中的一员,请求朋友或同事帮忙在他们不用的机器上运行一些实验。

睡眠装置

我被我在学术界时拥有的高性能集群宠坏了,在那里我可以并行运行数千个作业。但是当我离开的时候,我拥有的资源变得稀缺。当我在寻找更多的计算能力时,我意识到到处都有计算机,它们在相当长的时间里无所事事!我的同事每天下班后都会关掉电脑。我所有的设备,只是在晚上睡觉,什么也不做。我们所拥有的设备,每天在相当长的时间里只是“睡眠”而无所事事。

我们不断地浪费我们放在口袋和袋子里的资源。你的手机、电脑、智能电视和基本上任何有处理器的东西都是计算设备。他们会计算,这正是我们所需要的。问问你自己,在一天的循环中,你积极使用设备的时间有多长?最基本的例子就是夜间。每天晚上,我都会把手机连接起来充电,然后把它放在床头柜上,睡上几个小时,我也睡了。

使用“睡眠装置”的想法并不新鲜。欧洲核子研究中心有一个网络,人们可以捐赠他们的电脑给科学家使用。加密货币依赖于人们将其计算机连接到网络才能存活。尽管这个概念并不新颖,而且有一些可行的例子,但是问题还没有解决。当每个人都可以使用计算设备、电力和互联网,将他们的所有设备连接到计算网络,这是一件非常合乎逻辑的事情时,问题就解决了。

我们现在需要资源

我们作为数据科学家所需的资源现在已经有了。它们在人们的口袋里,在他们的床头柜上,在办公室上锁的柜子里。然而,我们无法访问它们。我们愿意为资源付费,但是资源是不可访问的。持有计算设备的大部分人并不知道它们的价值。他们可以将这些资源转化为金钱,但是缺少一个环节。

缺少的环节是在供应商和消费者之间。数据科学家希望消耗资源以换取金钱,我相信供应商希望通过在他们不使用设备时出租他们的设备来获得信用。我认为,当供应商和消费者之间的不平衡变得足够大,不可忽视时,双方之间的联系就会建立起来。在那之前,我会继续支付云服务费用,请求帮助使用下班后睡觉的电脑。

它能制图吗?

原文:https://towardsdatascience.com/can-it-chart-8bf6139f1ae8?source=collection_archive---------9-----------------------

注:我申请的链接可以在 这里 找到。输入歌曲及其对应的艺术家,看看它在 Billboard Hot-100 中的表现如何。中间的图表是每首歌曲的音频特征与普通公告牌歌曲的音频特征相比的指数。要查看艺术家的整体评价,请点按“艺术家页面”部分。

概述

在音乐行业,A&R 分部传统上负责通过“直觉”和依靠业内“引领潮流者”等方法来发掘人才。这对于希望成名的新艺术家来说可能是一个问题,但不一定有良好的关系。随着艺术家越来越多地使用社交媒体渠道,创作音乐的门槛越来越低,A&R 分部可能会在决策过程中受到阻碍。

但是,如果我们尝试自动化寻找新人才的过程会怎么样呢?作为一个初步的搜索工具,我们能找到有潜力成为下一个大事件的歌曲和艺术家吗?

我开发了一个名为“它能制图吗?”,它使用 Spotify 的歌曲特征来预测一首歌是否有能力出现在 BillBoard Hot 100 上。

方法学

对于我的目标变量,我想看看一首歌是否在公告牌百强排行榜上。热门 100 排行榜是美国歌曲的行业标准排行榜,主要基于销售、电台播放和在线流媒体。从商业的角度来看,如果你能找到一个有潜力进入 Billbaord Hot 100 的艺术家,你最终可以增加你的唱片公司的盈利能力。

这个项目是一个二元分类问题,有以下标签:

  • 第 0 类——“不会图表”
  • 第 1 类——“意志图表”

为了不错过“下一件大事”,我对 1 级回忆进行了大量优化。然而,找到被错误分类的歌曲是可以的,因为这些歌曲在以后的评估中可能会被认为是“荣誉奖”。

获取数据

在 SongFacts.com,我使用 BeautifulSoup,一个网络搜集库,获得了从 2010 年 1 月 1 日到 2018 年 5 月 6 日发行的歌曲列表。然后我把同一时期所有的 Billboard 热门 100 首歌都加入了 SongFacts.com 排行榜。从那里,我利用 Spotify API 为歌曲集提取音频功能和艺术家流派。

到最后,我有一个不平衡的类集合:类 0:类 1 = 4:1。

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

模特培训

当训练我的模型时,我希望我的模型有某种可解释性。虽然支持向量机乍看起来表现不错,但它们缺乏讲故事的能力。我决定采用逻辑回归,因为它在我的受试者操作特征曲线下的面积是所有模型中最高的。然而,我的回忆很低,所以我需要微调一些超参数。

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

在调整我的超参数以最大化召回率后,我能够将我的 1 类召回率提高到 78%。从这个模型中,我提取了特征系数,发现摇滚和独立艺术家不太可能出现在 Billboard Hot 100 上,但乡村艺术家更有可能出现。此外,一首歌越适合跳舞或越响亮,它就越有可能出现在 Billboard Hot 100 上。

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

精确度和召回率之间有一个内在的平衡,虽然精确度=召回率的平衡存在于 0.63 左右,但我想在不损失太多精确度的情况下尽可能提高召回率。通过将阈值从 0.5 移动到 0.46,我能够将 1 类召回率提高 7%,而精确度仅损失 2%。

注意:发布这个项目后,我研究了加权类,发现通过给类增加一个权重而不是“平衡”,我可以在不移动阈值的情况下实现 85%的召回率和 35%的准确率。

模型示例

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

我在五月初创建了这个项目,大约在那时幼稚的甘比诺的《这就是美国》出版了。我的模型预测这首歌有 85%的可能性会登上排行榜,它在2018 年 5 月 14 日的 Hot-100 排行榜上排名第一。还不错。

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

在另一个例子中,我的模型预测艾丽西亚·凯斯的《你不知道我的名字》不会出现在 Billboard Hot-100 上。然而,这首歌在 2004 年 1 月 31 日登上了公告牌百强榜的第三名。我的模特怎么会和这首歌差这么远?也许在 2000 年早期,流行的是 R & B 歌曲,而这些歌曲并不代表当前十年的流行音乐。将来,我需要将更多的歌曲放入数据集中,并淡化公告牌歌曲占所有歌曲的比例,以总体上代表音乐。

感谢阅读!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值