威斯敏斯特袭击一小时后推特如何回应
3 月 22 日威斯敏斯特袭击的消息像许多恐怖袭击一样传播开来:一名目击者的推文、英国广播公司的现场报道和大量来自直升机的空中视频,同时新闻媒体争相将这些片段拼凑起来。伦敦震惊地看着大本钟成为高度警戒的警戒线中心。但是在他们哀悼之前,许多人只是想知道发生了什么。
就像许多突发新闻事件一样,Twitter 成了了解事件最新进展的最快途径之一。为了更好地了解人们在混乱时期如何使用社交网络,我筛选了 30 分钟内收集的 5 万条推文样本。这些推文是在袭击者开始穿越威斯敏斯特大桥的致命驾驶后一小时发出的。
我发现的是各种情绪的巨大混合体:从团结和众包到伊斯兰教和移民的危险。在运行一些统计分析后,下面的网络图显示,通过映射该时间段内所有带有#Westminster 的推文的转发模式,可以找到八个潜在的社区。
图形上的每种颜色代表与攻击相关的不同推文社区。一个节点可以连接到两种不同的颜色,但颜色是基于它的原始源 tweet。lines 表示由一个帐户发送的原始推文的转发。尽管许多账户在一天中被转发了很多次,但我在分析数据时发现了一些要点。
大多数人想要帮助或显示团结
在数据集中发现的社区中,至少有三个与众包或展示团结有关。@MetpoliceUK 是转发量最大的账户之一,代表了大部分粉色和绿色的节点。这段时间转发量最大的推文来自大都会博物馆,敦促人们对受害者表现出谨慎和尊重。
大都会博物馆还要求人们给他们发送任何关于这次活动的信息。这条推文被广为流传,不管图中是什么社区。
灰色社区代表非新闻账户,通常包含表示关注或声援袭击受害者的推文。然而,这组情绪可能比图中描绘的这一种颜色大得多,因为由于语言的差异,所有法语和西班牙语的推文都被自动分为一个单独的类别。
更大的新闻网络仍然是混乱中最共享的来源
尽管 Twitter 允许任何人传播此类事件的新闻,但像@BBCBreaking 和@AP 这样的大型新闻网络仍然是正在发生的事件的新闻报道的首选来源。以至于这些推文被归类到一个独特的社区。
其他新闻网络也迅速报道了这件事(用橙色表示)。像@DailyMail、@Skynews、@iTVNews、@DailyMirror 和@Telegraph 这样的账户遍布网络中心,成为其他社区发展的基础。
极右的民族主义者抓住机会传播恐惧
哪里有恐惧,哪里就有人愿意煽动恐惧。图表底部用蓝色表示的社区通常可以被描述为表达极右或民族主义情绪。这些推文的严重性和意识形态各不相同。转发量最广的账号有@DefendEvropa、@V_of_Europe 和@Foxnews。
一些推文只是在传播袭击的消息,或者呼吁谨慎。但是其中一些最大的节点(因此当时转发量最大)是带有反伊斯兰情绪的推文。
无论是公开的政治还是对事件的本能反应,蓝色社区中的推文似乎表达了强烈的民族主义意识形态。这些推文在他们的社区中仍然相当孤立,但在某些情况下,会传播到图表的其他部分。
当考虑到两个社区由@MetpoliceUK 推文主导这一事实时,极右翼社区在相关转发量方面排名第二。
尽管这八个社区出现在数据集中,但还需要更多的分析来了解信息是如何随着时间的推移而传播的。然而,作为袭击发生一小时后许多问题仍未得到解答的推特样本,这些数据仍然揭示了一些关于混乱时期信息在推特上如何传播的见解,以及什么类型的账户正在分享它们。
用于分析的工具:
- Python:用于抓取 Twitter
- Excel:用于清理数据
- Gephi:用于创建网络图和运行统计
- Adobe Illustrator:用于创建图形
在此亲自探索 Gephi 图。在这里下载原始数据。所有代码都在 Github 上。
原载于 2017 年 4 月 1 日Benjamin cooley . me。
我们如何建立一种全新的预测分析方法
首先,这是当前在数字营销中进行预测分析的主要问题
[## DejaVu |基于人类认知和神经科学的人工智能预测分析| 77Sense.com
加入免费测试版
77sense.com](https://77sense.com/dejavu)
传统的预测分析工具从网站的所有访问中获取总数据,并根据预期结果对数据进行细分。一笔交易。这样,一些数据被遗漏(标记为噪声),以便更深入地挖掘成功的数据(标记为信号)。
然后,对标记的数据进行数据挖掘,以找出与结果正相关或负相关的模式,换句话说,哪些可能导致预期的结果,哪些没有。
这些模式用于创建模型,这是一种数学表示,可以根据以前的数据(训练数据)计算未来的数据。然后,该模型用于预测输入数据的结果,并评估模型的性能。
通常会使用多种模型,以找到最适合数据的模型。
没有问题吧?—这比不做好得多
正确—做这种数据挖掘、建模和预测比不做要好得多。但这根本不是做预测的最佳方式。
为什么?
因为我们建模的数据是人类行为,而人类行为是由人类创造的,人类行为仍然是科学试图解开的东西。30 多年的神经科学文献证明了这一挑战——然而,就在我们进入一个令人兴奋的人工智能和机器学习时代时,神经科学也已经成熟为一个可靠的共识,即是什么让我们人类做出决定(买房子或可乐)
你数据中的每个点都是一个人——试图在你的网站上做一些事情
那么有什么问题呢?
神经科学可以同意的是,选择/决定是由三个因素驱动的——注意力、情绪和记忆。我们所关注的,结合我们的记忆,以及对此的情绪反应,是决策过程中最强的因素。
这三个因素不断更新我们对世界的认知,以及我们正在执行的任务。
通过这些过程获得的数据决定了我们如何看待这个世界。这就是为什么感知会因人而异——更重要的是因时间而异。
所以……大脑是我们为什么做出一个决定而不是另一个决定的答案——或者更准确地说,是注意力、情感和记忆
我们面临的挑战是抛弃看待数据的“旧”方式,提出使用相同数据的新方式,这种方式与屏幕后面的人类大脑中实际发生的事情更加一致。
一个激进的挑战需要一个激进的新方法——所以我们建立了一个神经营销平台来快速测试世界任何地方的数百人(emolab . io)——我们建立了一个系统来简化这些测试的招募(参与者)
长话短说——我们出去测试了来自世界各地的 6500 人,让他们像在家一样浏览网页。我们使用 EmoLab 每秒钟测量他们的注意力、情绪和记忆激活 60 次。
这产生了超过 6 亿个数据点,涉及人类的注意力、情感和记忆在我们控制一切的环境中,我们还能够逆向工程他们的整个经历。
- 通过专有的机器学习方法,将 HTML/Javascript & CSS 转换为单个网页和域的分类,我们保留了网页和域的意图的细节。我们还对与页面相关的 DOM 树层次结构进行了深入分析(检测顶部菜单、左侧导航、过滤器等)
- 我们收集了这个人看向哪里的眼球轨迹,以及随后对这个元素的情绪反应,以及之前元素的连锁反应
- 然后,我们收集了关于鼠标移动和键盘敲击的非常详细的信息,以及用户在普通网站上进行的滚动和其他标准微事件的具体信息。
与情绪反应相关的微事件数据库
这就产生了一个我们称之为微事件指纹的大型数据库——微事件指纹是与特定情绪反应相关的特定类型页面上的特定鼠标移动。
我们还创建了一种实时方法来预测用户在页面上的位置——无需使用网络摄像头或眼球跟踪设备——仅使用鼠标移动细节。
结果是一个我们命名为 SuperSentient 的小 javascript 片段——它纯粹基于鼠标移动来预测用户的注意力和情绪反应。
预测分析不应该是将数据位放入虚拟框中并试图预测用户的购买意愿,而应该是预测意图、动机和内部目标设置,以便我们可以在这方面帮助用户,创造最终的用户体验。
我们对每个会话进行实时预测分析,比以前更快、更可靠、更精确。
[## DejaVu |基于人类认知和神经科学的人工智能预测分析| 77Sense.com
加入免费测试版
77sense.com](https://77sense.com/dejavu)
我们如何在 AWS 基础设施上构建数据科学 Web 应用程序“Route Planner X”
如今,找到拥有数百万或数十亿行数据的公司比以往任何时候都容易。然而,问题不在于**“如何创建更多的数据”**,而在于
如何利用这些庞大的数据?
解决这个问题的一个方法是将数据迁移到数据仓库,这是为分析任务构建的数据库。也就是说,构建数据仓库是一个昂贵且耗时的过程。
诸如 AWS 、 GCP 或 Azure 等公共云的出现为解决这个问题提供了更好的方法。在这篇博客文章中,我将告诉你我们的 5 名毕业生团队如何构建一个端到端的数据科学 web 应用程序来处理 1.5 亿行数据。
什么是「路线规划师 X」?
路线规划师 X 是我们为墨尔本数据马拉松 2018 (澳大利亚最大的数据马拉松活动之一)在 2 个月内构建的应用程序的名称(我们团队的名称是“不是热狗”)。有 400 多名参与者,包括学生和非学生。
我们真的很努力,在提交的最后一天,我们只有 6 个小时来建立演示文稿。最终,这种努力是值得的。我们获得了非学生 Data2App 类别的二等奖。
路线规划器 X 的想法基于构建“等时线地图”的想法,该地图显示了人们在特定时间内从特定点可以行驶多远。
我们将等时图与 PTV(维多利亚公共交通)数据和500 亿郊区火车环线计划结合起来,得出了你可以在上面的视频中看到的故事。
Example isochrone built from PTV transportation feed (Image by author)
关于数据集:Myki 事务数据
Myki card in action. Thank you for the photo from PTV Website (This is the old Myki card, the new one is in black color)
在继续讨论应用背后的技术之前,让我快速浏览一下输入数据是什么。
每年为墨尔本数据马拉松的参与者提供的数据集都是不同的。去年,我们有一个关于药物的非常有趣的数据集。今年,数据集更加有趣。这是关于墨尔本数百万乘客使用的交通工具。
当任何乘客点击闸机上的 Myki 卡进入/离开任何车站时,都会收集这些数据。该数据集涵盖了墨尔本的所有交通类型:火车、电车和公共汽车。
由于墨尔本使用公共交通的每个人都将被记录在这个数据集中,我们在提取见解时获得了很多乐趣,并了解了一些有趣的行为,如许多人在免费电车区旅行时如何点击他们的 Myki 卡。
我相信总共有大约 7.5 亿行数据。然而,80%的数据集发布得太晚,没有多少团队有足够的时间将这些数据投入使用。我们依赖于第一天发布的前 1.5 亿行。
数据已经出来了。关系表的 txt 文件。没有合适的数据字典来告诉我们哪个表和哪个列是哪个。所以我们想出了我们自己版本的表之间的关系:
Database Schema (Note: This may not be the final version of the schema we used since I got this from our team’s early conversation on the Slack chat) (Image by author)
大数据的数据接收
我知道 1.5 亿行对于一些人来说可能听起来像是儿戏。然而,根据我们的团队成员在墨尔本 Datathon 的 Fleep chat(类似于 Slack 的群组聊天室)上发现的情报,许多团队都在努力将数据读入内存。
我们的团队尝试了 3 种方法来读取这个数据集。我们在数据接收上浪费了大量时间(和金钱)。我们尝试了三种方法:
方法 1:笔记本电脑上的 RDBMS
这种方法是在笔记本电脑上安装关系数据库管理系统,如 MySQL 或 PostgreSQL。然后将数据导入到这些 RDBMS 中,以便查询数据。
这是我去年为 2017 年墨尔本数据马拉松做的。如果我没记错的话,大约只有 800 万到 1200 万行数据。我们可以轻松地加载 800 万行数据并即时查询。在我的 Macbook 上,查询过程大约需要 3-4 分钟。这是缓慢的,但仍然可以接受。
然而,对于 1.5 亿行数据,这种方法对于我们探索数据来说效率不高。因此,我们转向了云计算。
方法 2:AWS 云上的 RDBMS(AWS RDS)
云技术赋予了我们梦寐以求的计算资源。但是,我们不能只是启动最大的机器,让它永远开着。正如本大叔(来自蜘蛛侠)曾经说过的“权力越大,责任越大”,AWS 中的权力越大,责任也就越大(要支付大额账单)。
尽管 AWS 赞助了墨尔本 Datathon,并给予每个团队 500 美元的 AWS 积分,但我们仍然超出了限额,因为我们的团队在我们采取下一种方法后忘记了终止数据库。
Pricing table per hour for AWS RDS. We are using the biggest machine for $7.68 per hour. Photo by AWS
我们使用了名为**“AWS RDS”(关系数据库服务)**的 AWS 服务,它基本上是基于云的 MySQL。查询速度比使用本地机器快,但是我们发现查询时间不够快。一些查询可能需要 30-60 分钟。
由于我们只有周末有时间(每个人都在全职工作),我们需要在我们拥有的短时间内完成工作。那时我们在 AWS 中试验了相当新的服务,叫做 Athena 。
方法 3: AWS Athena —来自文本文件的 SQL 查询引擎
Athena lets you write SQL to query data directly from text files (Image by author)
Athena 是 AWS 服务,让我们可以从存储在 S3 桶(AWS 的云存储,类似于 Dropbox)中的文本文件中查询信息,而不必担心打开/关闭数据库服务器。价格也比 RDS 实惠很多。
Athena 扫描每 TB 数据的成本为 5 美元。这意味着我们可以通过优化查询来扫描更少的数据,从而轻松控制成本。
我们的团队完全转向 Athena 进行分析。这比我们迄今为止尝试的任何其他方法都要快,而且成本只是 RDS 的一小部分。我们还发现了使用 Python 的 boto3 库向 Athena 发送查询的方法。这使得 Athena 的自动化非常简单。
我们想尝试的另一种方法是:BigQuery
在这次比赛中,我们听到了很多使用 BigQuery 的团队的成功故事。下次有机会做 Datathon 时,我们一定会尝试 BigQuery。
在我们进入下一节讨论如何整合之前,我想提一下,我发现墨尔本数据马拉松是一个试验我们以前没有尝试过的新技术的好方法。与没有时间学习新技术的 24-48 小时黑客马拉松不同,墨尔本数据马拉松给了我们两个月的时间。在数据马拉松开始之前,我们没有使用或了解过雅典娜。
Web 应用架构
您可能会从视频中注意到,我们的提交包括 2 个应用程序:第一部分是可视化应用程序,第二部分是路线规划器 X。
可视化应用程序从 AWS 基础设施查询数据集,如下图所示:
Frontend & Backend technologies for visualization part (Image by author)
这里是每项技术的简要描述,请随时提问:)(我可能无法在后端部分给出准确的答案,因为我的工作主要是在前端)
- HTML / CSS —用于页面布局。CSS 用于将页面分成两半。
- LeaftletJS —用于在可视化中绘制交互式 choropleth 地图。这是我们视觉化的主要部分。
- D3。JS —用于在页面右侧绘图。我们还使用了 C3。JS 是 D3 的包装器。
- jQuery —用于管理可视化中的交互。
- API 网关 —用于构建 web API 端点,以便我们的前端可以与后端联系,即使它们不在同一个服务器上
- Lambda + Python —用于调用 Athena 查询数据。然后,结果将通过 API 网关发送回前端。
- 雅典娜 —用于查询存储在 S3 桶中的文本文件。如前所述,雅典娜是超级快,用户不必等待分钟。
- S3 —用于以快速、安全且经济高效的方式存储整个数据集。
注意,我们将前端和后端解耦,以增加系统的灵活性。发生在前端或后端的基础设施的变化永远不会影响到另一方。
对于视频的第二部分,路线规划器应用程序,我们基于 OpenTripPlanner 的 API 服务器构建,它允许我们自定义数据以生成自定义的等时线地图。下图显示了我们使用的技术。
Frontend & Backend technologies for the app part (Image by author)
我们对应用程序部分使用了非常相似的架构。这部分的新组件是:
- VueJS —因为允许用户添加他/她自己的数据点。我们必须使用 VueJS 来帮助管理输入数据。
- OpenTripPlanner — OTP 是使用自定义 GTFS 数据生成路线计划的 Java 客户端。我们使用 PTV·GTFS 的数据以及基于用户输入的合成路线计划,以绘制最终的等时线。
- EC2 —这基本上是云上的虚拟机。我们必须启动 EC2 实例,以便在其上安装 OTP。
墨尔本数据马拉松的主要收获
在今年的墨尔本数据马拉松中,我们学到了很多东西,并有机会尝试新技术。这绝对是一次无价的经历。如果我想分享一些关于这次数据马拉松的事情,这里是我想到的三件事:
要点 1)记得在使用完 AWS 资源后终止它们!!!
在 EC2 或 RDS 等流行的 AWS 服务中,您可以停止或终止实例。不同之处在于:
- 停止不会删除文件,稍后您可以再次启动,但是即使您已经停止,仍然会产生文件存储费用。对于 RDS,停止的实例将在 7 天不活动后自动重新启动。(我们就是这样赔钱的。它自己又开始了,直到一天过去了我们才知道。)
- 终止将从你的实例中完全删除所有文件。这种情况下不会有更多的成本。
请记住,为了阻止账单增加,您必须终止。
2)黑客马拉松/数据马拉松需要多种多样的技能
如果你不是从 ETL 到可视化无所不能的独角兽,这完全没问题。你不必能够端到端地做所有的事情。但是你的团队必须能够端到端地做所有的事情。
组建团队时,确保团队成员拥有不同的技能组合,涵盖各个领域,例如 datathon:数据工程师、数据分析、数据可视化、开发。
把这当成一个学习的机会
得点奖总比没奖好。但我总是专注于为未来的工作学习新技能,而不是专注于奖金。
我相信这些新技能对我的职业生涯会比你获得的奖励更有价值。哦!记得记下你所学到的东西。写博客也是分享和获得反馈的好方法,不管你对某些话题的理解是否正确。
我希望这篇博文对那些想在云上构建 web 应用程序的人有所帮助。如果你更喜欢在内部构建东西,请阅读我今年早些时候发表的【指南】用 React、NodeJS 和 MySQL 构建数据科学 Web 应用程序。
欢迎对任何问题发表评论,或给我发邮件询问 woratana.n@gmail.com 的任何问题。最后但同样重要的是,感谢墨尔本 Datathon 2018 的工作人员,他们是我生命中这件大事的幕后推手。
最初发表于 沃拉纳珀斯 。
我们如何使用 Flask 和 Docker 部署 scikit-learn 模型
在我们的上一篇文章中,我们讨论了我们的客户满意度预测模型。我们使用了 AzureML studio 来首次部署这个机器学习模型,以服务于实时预测。在这篇文章中,我们将分享我们如何以及为什么使用 Flask 、 Docker 和 Azure App Service 从 AzureML 迁移到 Python 部署。在此期间,我们还尝试了 Python 的 Azure 功能。此外,我们开源了一个带有 Flask 和 Docker 的示例 Python API,用于机器学习。
在生成我们的第一个客户满意度预测模型之后,我们希望快速、轻松地部署它。AzureML 服务于这个目的,但也表现出一些困难。我们生成的模型是使用 scikit-learn 开发的,但是我们部署到生产环境的模型是使用 AzureML 生成的。因此,参数并不完全相同,我们测量的一些指标也不同。此外,我们有一些数据准备逻辑,由模型训练和实时预测共享,但在代码方面是重复的。最后,我们发现 AzureML GUI 非常慢,因此对用户不太友好。
从上述问题中,我们得出了对第二个预测模型部署架构的以下要求:
- 快速简单的部署
- 在本地环境中培训的相同模型可以部署到生产中
- 在生产和模型培训之间共享数据准备代码
- 轻松的端到端流量控制
- 不是必须的:易于集成到持续部署中(例如 codefresh )
首先,我们尝试在 Python 中使用 Azure Function rest API。设置非常简单,我们很快就能运行 Python 代码。此外,使用 Kudu 也很容易、快速且非常用户友好。虽然它显示了希望,但后来事情变得更加困难:
- 在 Windows 机器上安装机器学习的库更难一些——一些基本的库,如 NumPy 需要特殊处理,然后只是“pip 安装”
- Azure 函数在每个请求上运行所有的导入,在我们的情况下(numpy,scikit-learn,pandas)导入花费了大约 30 秒(更多细节请参见这个问题)——这对我们来说是一个障碍
最后,我们决定尝试部署我们自己的服务器,使用:
- flask:Python 的微型网络框架,非常容易设置
- 码头工人
- Azure 应用服务
我们从中获得了什么:
- 由于我们部署了自己的服务器,我们有了完整的端到端控制——这使得实时 API 和离线模型训练之间的代码共享变得容易
- 使用 Pickle 将离线训练的实际模型部署到生产中
- 由于 Docker 运行在 Linux 虚拟机上,不再有 Windows“pip 安装”的困难
- Docker 使这项服务可以在多个平台上托管——如果 Azure 应用服务出现问题,迁移将非常容易
- 从源代码 git 存储库到 codefresh 的轻松集成——这处理了我们所有的持续部署过程——每次提交到我们的 git 存储库都会将新代码部署到一个辅助服务,该服务可以轻松地转换为我们的主要实时服务
顺便说一下,Azure 对 Docker 的应用服务支持仍处于预览阶段――更多信息可以在这里找到。
想试试吗?
在下一篇文章中,我们将分享更多关于我们新系统架构的实时性能、将会出现的新问题(总是有问题:-),以及更多关于我们新挑战和新特性的内容。
我们如何在 Kaggle 上发布一个成功的数据集
以及它如何帮助传播我们公司的数据成果
大约一年前,我第一次访问了 Kaggle 网站。我被吸引去解决一些基本的机器学习问题(比如泰坦尼克号:灾难中的机器学习)。我发现这也是一个研究其他人的数据集,以及分享你自己的数据的好地方。
那时我在一家大公司工作,公司有非常严格的规章制度。共享任何数据都是不可能的。但这个想法一直萦绕在我的脑海里。过了一段时间,我离开了那家大公司,开始在一家名为 Olist 的中型初创公司工作。我们是巴西市场中最大的百货商店。我们的目录中有超过 20 万种产品,超过 4000 个卖家通过我们的平台销售他们的产品。
在那里,我们有足够的官僚作风来打消我发布数据集的想法。大约五个月前,我第一次在公司内部提出这个想法,但当时它还非常不成熟。提出了一些问题,例如:
- 我们应该发表什么?为什么?
- 有人会使用我们的数据吗?怎么会?
- 还有…如果任何竞争对手使用我们的数据怎么办?
在接下来的几个月里,这个想法不断发展,所有的问题都得到了解答。然后,经过一些开发过程,我们终于准备分享一些数据。大约两个月前我们在 Kaggle 上做过。本文的目的是解释我们是如何发布数据的,并在这个过程中为您提供指导。也许我们甚至鼓励你或你的公司也公布一些数据。
我们发表了什么?为什么?
我们决定发布一个包含订单及其客户评论的数据集。这将允许解决一些分类问题。我们的数据科学团队已经制作了一些模型来对评论进行分类,所以我们很想看看其他人会如何处理同样的问题。
为此,我们决定发布两个数据集:
- 约 4k 订单和评论的分类数据集(仅在版本 5 或更低版本上)。
- 包含 10 万个订单的未分类数据集。
为什么是 100k?嗯……这是一个神奇的数字:比 Kaggle 上大多数公开的数据集都要大。大到足以提供深入的分析和不同的产品类别。
该数据集包含 2016 年至 2018 年巴西多个市场的订单信息。其功能允许从多个维度查看订单:从订单状态、价格、付款和货运表现到客户位置、产品属性,最后是客户撰写的评论。后来,我们还发布了一个地理定位数据集,将巴西邮政编码与纬度/液化天然气坐标联系起来。
Our data is publicly available at Kaggle.
我们分享了哪些数据?
首先,我们发布了一个真实的数据集。通过使用我们的数据,可以得出一些关于巴西电子商务的结论。我们希望全面了解我们的数据团队所面临的挑战。所以我们发布尽可能多的信息。我们唯一的限制是:
- 不发布我们的产品目录(如标题,描述和照片)
- 不发布任何客户信息
- 不发布任何合作伙伴信息
考虑到这一点,我们创建了一个包含 30 多个要素的数据集。它允许从多个角度探索订单,如订单履行、产品类别、地理位置、客户满意度,等等。下面我们展示数据是如何构成的。
Our data schema. Multiple tables to allow studying an order from multiple perspectives.
您可能会注意到,它反映了真实的情况,数据存储在多个表和源中。这种结构与 Kaggle 上发布的平均数据集截然不同。
数据集被很好地记录,所有的特征都被解释,并且给出了足够的上下文来让每个人理解数据。我们创建了一个讨论主题,鼓励人们提问,然后用一些非常基本的分析编写了一个入门内核。仅此而已。
我们为什么要发表它?
有几个原因促使我们最初公布这些数据。但现在我们做到了,我们有更多的理由。它们是:
- 为数据社区贡献真实、高质量的数据。我们已经看到它被用于大学课堂。
- 将 Olist 定位为巴西数据科学界的参考。发布数据集后,我们注意到其他公司向我们寻求指导。
- 吸引优秀的候选人加入我们的团队。通过分享数据,更容易产生共鸣并解释我们所做的事情。我们已经联系了一些用公共内核分析我们数据的人。
- 从别人的角度看一些问题。许多人贡献了公共内核,通过阅读它们,我们发现了解决我们正在处理的问题的不同方法。
- 应试者。我们选择过程的第一步是数据集的公开挑战。
- 用葡萄牙语文本填补公共数据库的不足。帮助巴西的 NLP 社区。
- 它还帮助我们将公司定位为领域专家。公开这个数据集就像是一种证明:相信我们,我们知道自己在做什么。
它如何重新定义我们的成功指标?
我们用 Kaggle 上的其他公共数据集作为基准来定义什么是成功的。我们非常谦虚,起初,我们认为有了以下内容,我们就可以说该计划是成功的:
- 两个月内超过 50 次投票(我们有 200 次)
- 超过 500 次下载(我们有 3.4k)
- 超过 5000 次浏览(我们有 24k 次)
- 超过 5 个公共内核(我们有 21 个)
Left: our data being used at a college data science class in Natal/RN (photo by Tyrone Damasceno). Right: Public kernels on Kaggle.
Our data being used at a UCS business class
这也回答了我们的第二个问题:我们的数据被利用了!
如果任何竞争对手使用我们的数据怎么办?
这是一个风险。但是如果他们真的想使用它,即使我们不公开数据,他们也会找到方法。我们的数据集合可能已经在我们出售的商店上公开了。一些例子是:
- 过去四个月的总销售额
- 过去 30 天的平均审核分数
除此之外,我们的整个目录在商店公开出售。只需要构建一个网络爬虫来获取这些数据。产品描述、价格、照片、运费和预计交货时间都可以在我们销售产品的市场上找到。
即使有人通过搜索商店获得了我们的目录数据库,我们也不会让任何人发现销售了哪种产品,您只需要一个匿名的 product_id。不可能将我们的数据集链接到任何产品目录。这些数据已经被匿名化,评论中提到的公司和合作伙伴已经被《权力的游戏》的大公司所取代。我们还以不允许他人对我们当前的业务规模做出任何结论的方式进行了抽样调查。已经采取了这些措施,没有其他理由保留这些数据。
我们做错了什么?
在第一个版本中,我们认为消除数据的复杂性会很好。所以我们试图在一个表中加入尽可能多的信息。随着时间的推移,用户开始要求新的功能,如客户、产品和卖家 id。我们还决定添加更多我们认为重要的功能。
我们保留了原始的数据结构(一个主表),并添加了带有附加信息的其他表。很快我们就增加了许多新功能。整个数据集越来越难看:组合键,没有任何约定的名字和其他乱七八糟的东西。
我们决定在版本 6 中解决这个问题。我们将整个数据集拆分到不同的表中,每个表包含订单的一个方面。现在数据集看起来比以前更复杂,但数据之间的关系更清晰。
如果我们可以在这个问题上给出任何建议,那就是从支持增长和添加更多功能的数据结构开始考虑。因为你的数据用户肯定会要求的。
一句鼓励的话
我们希望看到更多像我们这样的数据集公开发布。到目前为止,我们只有分享数据的好处,似乎不会有任何缺点。
现在我们已经在考虑 ta 将要公开的下一个数据。你呢?有没有你想分享的数据?
如果您有任何问题或疑虑,请联系我们。
我们使用“数据”这个词的方式已经变了,这很危险。
几年前,我正在为即将召开的石油和天然气会议撰写一篇技术论文。经过几周的写作会议,我将论文提交给了内部同行评审。评论通常是相当正面的,一位令人愉快的英国人指出,这篇论文“写得非常好”。就像大多数好事情一样,在自我表扬之后,现在,几年过去了,我已经忘记了这篇论文的大部分细节。然而,有一件神器一直牢牢地盘踞在我的脑海里;奇怪的是,这与论文本身无关,而是同一位先生在同行评议过程中提供的评论。我清楚地记得他在草稿手稿上手写的潦草字迹:
“错了!应该是这些数据是——不是这个数据是!”。
如果你已经到了一定的年龄,或者在科学领域工作过,你可能会很容易发现我的同行评审员在我错误地使用复数单词“*数据”时发现的错误。*但是,一个小小的语法错误可能会被原谅,实际上可能是一个现代文化现象的微观例子:我们似乎不再知道数据和信息之间的区别,这是危险的。
什么是“数据”,这个词从何而来?无需深究晦涩的词源细节,单词“data”是拉丁语单词“datum”的复数形式,意思是“给定的事物”。它进一步来源于拉丁语动词“dare”,意思是“给予”。*本质上,数据是多个观察值;数据是给定的东西。*快进到今天,“数据”这个词已经发生了变化,通常被认为是一个复数名词,类似于“雨”或“沙”。由于单独提及雷雨时的每一滴雨水或海滩上的每一粒沙子会很尴尬,所以我们一起提及它们,即“我的鞋子里有很多沙子”,而不是“我的鞋子里有非常多但数量有限的单个沙粒”。尴尬。
在语言学界,关于哪个定义是正确的争论仍在继续。事实上,什么是这个词的正确用法甚至已经在主流媒体上公布,包括《卫报》的这篇文章和讨论流行数据科学网站 FiveThirtyEight 进行的非正式在线投票结果的文章。
不管 logophiles 的感受如何,毫无疑问,在方言中,像“你的数据是错误的”或“数据是 _ _ _ _ _ _ _ _ _ _”这样的话已经变得完全可以接受。更有趣的是,我们可以检查过去大约 100 年的谷歌 N-gram 趋势,并比较这一时期短语“数据是”与“数据是”在书中的流行程度。从下图中可以看出,在这段时间的大部分时间里,“data are”的使用量明显大于其单数对应词“data is ”(这些趋势也适用于其他单/复数修饰语,如 was/was、this/these 等)。).
Google N-Gram Trends — “data are” vs. “data is” (1890–2008)
然而,在 20 世纪 40 年代后期,单数形式的流行开始迅速增加。伴随着这一现象,在 20 世纪 80 年代早期,我们看到复数形式的使用急剧下降。这些趋势一直持续到 2000 年代初,“数据”一词的单数和复数用法几乎达到了对等。粗略的谷歌搜索趋势分析显示,自 2004 年以来,使用单数形式的搜索词的受欢迎程度远远超过了包含复数形式的搜索。不管是好是坏,复数和单数已经成为同义词。数据简单来说就是。
虽然看似细微的语义争论,这个词用法的演变揭示了现代社会的一些有趣的事情。具体来说,自从数字时代开始以来,数据已经成为自身的一个实体,而不是历史定义所暗示的观察结果的集合。计算机的出现已经把“数据”变成了雪的数字等价物——本质上是不可计数的,并且更容易集中引用。这不是德里达启发的解释性语言游戏。相反,这个词从复数形式到单数形式的演变表明,数据的概念已经发生了变化,对我们如何相互交流产生了具体的影响。数据不再是给定的东西,也就是说,我们对世界的观察。现在,数据是一个单一的实体,充满了某种前所未有的媒介和力量:信息的力量。**
数据和信息有着千丝万缕的联系,但并不等同。很少有人比克劳德·香农更能理解这种微妙之处。虽然香农并不是一个家喻户晓的名字,但他在 1948 年发表的开创性论文《交流的数学理论》为一大批现代数字技术奠定了理论框架。在这篇信息论领域的开创性论文中,Shannon 根据数据变化的概率,即观察到个体观测值之间的一些差异的可能性,给出了信息的精确数学定义。抛开数学定义不谈,著名的人类学家格雷戈里·贝特森(部分是因为他与另一位著名的人类学家玛格丽特·米德的婚姻而出名)提出了也许是香农定量定义最简洁的定性体现:*“信息是一种差异,这种差异产生了差异”。*从根本上来说,信息是对我们周围世界的上下文观察(即数据)进行比较处理的结果。
撇开抽象定义不谈,为什么将数据的概念与信息的概念混为一谈如此危险?想象数据(复数意义)是暴风雪中的一片雪花。雪看起来很美,但当我们把它聚集在一起时,它变得更有趣。我们可以煞费苦心地精确地将雪堆积成一个个独立的砖块,然后一个个垒起来。经过足够仔细的思考,我们可以建造漂亮的圆顶冰屋。从微小的个体事物,我们可以创造出结构。
或者,我们可以放弃这种精确性,匆匆忙忙地把雪打包成小球,这样就非常方便互相投掷了。或者更糟,接受别人准备的过冬弹药,而不考虑我们的供应商的意图。这似乎很快成为默认的工作方式。在任何重大事件后,快速浏览脸书,我们总是发现我们的朋友已经成为社会科学专家,引用令人作呕的研究和统计数据;也许我们曾经因为自己成为那些“专家”之一而感到内疚。打雪仗在过去的冬天可能很有趣,但以这种方式使用数据从根本上来说是具有破坏性的*。*
在人类历史上,从来没有以如此低的成本获得如此多的数据和信息。然而,数据洪流导致从噪音中提取相关信息极其困难。随后,数据和信息之间的界限变得模糊到被遗忘的程度。除了更新我们的生物硬件来应对洪水,接下来的问题是,我们能做些什么?
如果所有的语义看起来都很迂腐,你可能是正确的——但话说回来,魔鬼不总是在细节中吗?这不仅仅是文字。虽然词源分析和历史可能会说明我们目前的状况,但语法再教育运动肯定不是根本问题的答案。在我看来,有四点是对这种情况的任何补救措施的必要组成部分:
①对教育的热爱和不懈追求。
(2)对被误导的人表现出同情,并坚定地捍卫言论自由(不管我们会觉得某人的观点多么应受谴责)。
(3)相信客观真理确实存在,而且值得去寻找。
(4)认识到有限使我们无法了解一切。充其量,我们是真理的容器,而不是真理的化身。
总之,要真正解决这个问题,我们必须学会理解数据和信息之间的微妙差异——实际上,这相当于我们对世界的观察以及随后我们从中得出的结论——并认识到这是个人义不容辞的责任,要理解什么构成了“造成差异的差异”。作为宇宙中唯一有意识的观察者,我们的独特角色赋予我们一种永恒的责任,那就是守护我们自己的思想。我们继续无视这些微妙之处,后果自负。
我们如何在 Twitter 上使用机器人来获得 1750 倍的廉价参与
Adele - Hello - Yarn 是通过引用找到视频剪辑的最佳方式。找到电视节目、电影或音乐中的确切时刻…
www.getyarn.io](https://www.getyarn.io/yarn-clip/c19ed821-8b52-42eb-b8ac-28d2a3a92c01)
开始
我们像任何创业公司一样起步;我们有一个看似不错的想法,一个网站和没有用户。We ’ s YARN:通过引用查找电影、电视和音乐视频剪辑的搜索引擎。这些剪辑只有几秒钟长,是由我们的网页抓取和索引过程自动生成的。我们相信人们会使用它们;我们需要一种方式让每个人都知道我们的存在。
量子的安慰(2008)惊悚片-纱是最好的方法来找到视频剪辑的报价。在电视中找到准确的时刻…
www.getyarn.io](http://www.getyarn.io/yarn-clip/2371e6a1-c91c-4882-ba33-4cf87b831472)
获取首批用户
我们对用户获取有了初步的想法。我们最初的努力是联系作家和博客,试图获得故事。当没有人认识你的时候,很难得到媒体的关注,但是我们有一些幸运的突破。公关是一项困难的工作,耗费时间,而且不是我们的核心竞争力。在产品发布之后,很难激起人们的兴趣。最终,我们需要能够更好地扩展的东西;我们只有两个人,公共关系既昂贵又不可预测。
怪异科学(1985) - Yarn 是通过引用找到视频剪辑的最佳方式。在电视节目、电影或…
www.getyarn.io](http://www.getyarn.io/yarn-clip/eaf0c8eb-90ca-4740-aefd-abb88fe90e03)
社会化媒体
社交媒体似乎比公关更具扩展性。这个想法是,人们会张贴奇谈怪论,其他人会看到它们,并依次学习张贴它们。gif 已经被证实了;奇谈比 gif 更好,因为它们在声音和语气的上下文中与你想说的内容完全吻合。我们通过在 Twitter、脸书、Reddit、Slack 和 Pinterest 等社交媒体上发布奇谈来播种这一努力。我们的朋友张贴了一些,以及喜欢和向上投票的帖子。这种方法的伸缩性更好,但仍然受到朋友数量和时间的限制。
拆迁人(1993) -纱是最好的方式找到视频剪辑的报价。在电视节目、电影中找到确切的时刻…
www.getyarn.io](https://www.getyarn.io/yarn-clip/550d142f-7c4d-4f94-bd07-f9b66386c47a)
推特实验
我们首先利用了我们自己,然后是我们的朋友,我们需要更多。技术自动化有无限延伸的希望。我们在 Twitter 上尝试了三个实验,看看是否有可能使用自动化来提高参与度和认知度。
我们的前提是,因为故事很短,而且与上下文相关,我们会看到更好的参与度,因为即使对一个完全陌生的人来说,它们似乎也更私人。
我们进行了三个实验来测试我们的理论:
- 手动向陌生人发推文
- 用机器人发推文,目标是 @TheEllenShow 和 @JimmyFallon
- 用一个机器人发微博,目标是 @pewdiepie 和他自己的内容
我们针对以下方面进行了优化:
- 围绕一条推文的任何参与度(回复、点赞、转发、视频浏览量、页面浏览量),无论浏览量多少。
- 提高整体参与度。
实验 1:手动推文
一个多月来,我们通过我们的 @yarnspun 账户发出了 400 条推文,尝试了各种技术。我们将推文分为三种类型:普通推文、热门话题推文和对陌生人的回复。制作一条推文大约需要 2-3 分钟;你需要找一个人回复,找一个故事,发一条微博。这个实验总共花了大约 20 个小时:假设 500 美元每小时 25 美元,或者一条推文大约 1.25 美元。
Type Impressions Engagement/tweet Engagement/imp Cost/engagement Tweets 11,239 27.59% 0.33% $0.034
Trending 33,282 69.03% 0.94% $0.004
Replies 46,328 78.95% 2.65% $0.001
实验 1:手动推文结果
- 回复比一般的推文更吸引人。除非你是一个显著的影响者,点回复会得到更多的参与。
- 用一根纱线来强调一点,下面是一个例子:
https://twitter.com/yarnspun/status/743832410740121600
3.有些热门话题很棒,有些很糟糕。热门话题有利于参与,因为人们通常“实时”发布推文,所以你的推文更有可能被看到。但是,你需要有参与度的话题;这本身就是一篇博文。
4.我们针对拥有 100-10,000 名粉丝的个人进行回复。这不是唯一的规则,但是我们发现在这个范围内参与度增加了。
5.人们知道你的追随者;你的粉丝越多,潜在参与度就越高。用户可以将您视为同事或影响者。
6.我们发现在太平洋时间晚上 10:00-凌晨 1:00 之间有更好的参与度。也许人们在晚上寻求陪伴。清晨的推文也会在上班前到达用户。
蓝色夏威夷(1961)——Yarn 是通过引用找到视频剪辑的最佳方式。在电视节目、电影或…
www.getyarn.io](https://www.getyarn.io/yarn-clip/2dd3d6ba-52bf-4cef-b236-3fc43359f809)
实验二:推特机器人
我们是一家资源有限的小公司,但拥有无限的创意和技术人才;)我们试图通过创建 twitter 机器人来自动化我们的第一个实验。我们的机器人与吉米·法伦(@jimmyfallon)和艾伦·德杰尼勒斯(@TheEllenShow)的推特互动。机器人监控他们的信息流,发现新的推文。该机器人分析了推文,并使用纱线生成了一个响应。在对机器人进行初始编码后,监控 twitter 账户的设置花费了大约 30 分钟,大致如下:
twitterUtil.createWatcher('yarnds', '[https://www.getyarn.io](https://www.getyarn.io/)', {
skipTweet: false,
useTextMp4: true,
pollTime: 24000,
apiLink: 'statuses/user_timeline',
params: {
screen_name: 'jimmyfallon',
count: 1}
});twitterUtil.createWatcher('yarnds', '[https://www.getyarn.io](https://www.getyarn.io/)', {
skipTweet: false,
useTextMp4: true,
pollTime: 24000,
apiLink: 'statuses/user_timeline',
params: {
screen_name: 'TheEllenShow',
count: 1}
});
我们进行了一个月的实验,回复了 460 条推文。偶尔回应是无意义的;解析一条 tweet,生成回复候选,搜索 YARN,最终选择单个 YARN,每一步都有级联问题。但是,嘿,这是自动的。
以下是一些有趣的回答:
@jimmyfallon
https://twitter.com/yarnds/status/745592676481826816
@TheEllenShow
https://twitter.com/yarnds/status/744227367334215681
实验 2: Tweetbots 结果= 50 倍的改进
Type Impressions Engagement/tweet Engagement/imp Cost/engagement Replies 73,900 60.78% 1.73% $0.000021
自动化肯定是值得的,因为成本很低。尽管我们的最佳手动参与率更高(2.65%对 1.73%),但它更难扩展。我们的机器人可以以更低的成本(设置和监控成本)进行扩展,并使每次项目的成本降低 50 倍。由于一次性的前期安装成本,我们的成本会随着时间的推移而下降。
通过更多的努力,可以产生更好的机器人响应。通过界定内容搜索的范围,这些响应可以更好地针对 Ellen 和 Jimmy 的特定受众。例如,使用节目嘉宾的内容,如塞斯·罗根、弗莱德·阿米森、基特·哈灵顿(本周《今夜秀》的嘉宾)。
《权力的游戏》(2011) -第六季第十集- Yarn 是通过引用找到视频剪辑的最佳方法。找到电视节目中的确切时刻…
www.getyarn.io](https://www.getyarn.io/yarn-clip/aa8eb344-3607-4b16-9f09-c3f4f05c5148)
实验三:Pewdiepie 机器人
菲利克斯·谢尔贝格又名派迪派又名@派迪派是 YouTube 上最受欢迎的频道之一,拥有 4500 万订户和超过 100 亿的视频浏览量。
我们试图通过使用他自己的内容来围绕他的 twitter 账户和他的追随者建立互动。我们摄取并分析了大约 50 个视频,大约 9 个小时的视频。我们制作了 11,500 个纱夹。我们的纱线定制网站是:http://pewdiepie.getyarn.io/。Bot 安装花费了 30 分钟:
twitterUtil.createWatcher(‘pewdyarn’,‘[https://pewdiepie.getyarn.io](https://pewdiepie.getyarn.io/)', {
skipTweet: false,
useTextMp4: true,
pollTime: 12000,
apiLink: ‘statuses/user_timeline’,
params: {
screen_name: ‘pewdiepie’,
count: 1}
});
费利克斯大约每天向 580 万粉丝发一条推文,他的推文获得大约 1000 到 5000 次转发。我们配置了一个机器人( @pewdyarn )来跟踪他的流并找到新的推文。该机器人抓取了一条推文,分析了其结构,并使用自己视频中的一个故事做出了回应。这个过程在几毫秒内执行,我们每 12 秒检查一次他的账户。
一个例子是:
PewDiePie 动机游戏-纱是最好的方式找到视频剪辑的报价。找到电视节目中的确切时刻…
pewdiepie.getyarn.io](http://pewdiepie.getyarn.io/yarn-clip/abe59524-15e0-4371-b7cb-c49089787b22)
我们这样做了一个月,发出了 360 条推文,50 万次展示,1000 次链接点击,768 次赞
https://twitter.com/pewdyarn/status/728885205423919105
Type Impressions Engagement/tweet Engagement/imp Cost/engagement Replies 489,000 97% 8.9% $0.0000006244
实验 3: Pewdiepie Bot = 1,750 倍改进
我们发现,与之前的机器人相比,性能提高了 35 倍,与手动推文相比,性能提高了 1,750 倍。
- 我们太快了,在一些情况下,我们第一个回复了他的推文。许多人认为我们实际上是菲利克斯;许多人认为我们是机器人。
- 这很有效,因为对他自己的观众来说,这是他自己的内容。
- 我们有很多印象,因为这么多人查看他的推文,并且在一个线程的顶部有所帮助。
硅谷(2014) -第二季第二集失控贬值- Yarn 是通过引用找到视频剪辑的最佳方式。找到确切的…
www.getyarn.io](http://www.getyarn.io/yarn-clip/349c6fbd-636d-4c12-89b0-6991c6c10e22)
你该怎么办?
根据上下文回应用户。理想情况下,找到一种方法来制作一条你可以自动化的信息,传达给那些已经在讨论你的信息的人。个性化和情境化的消息传递显著提高了参与度。
使用纱线进行接合。它们可以在脸书和 Twitter 上自动扩展成显卡,以增加帖子的参与度。视觉获得更多关注;视频更多。一根纱线的短尺寸在实时社交平台上非常好用。您的信息更加清晰可见,传达了额外的语气,并且大小完全适合移动带宽。奇谈怪论可以在电子邮件中发送,在空闲时间发送,在 iOS 或 Android 上发送 FB messenger,以及任何你可以链接网址的地方。
在 YARN 我们摄取并分析视频内容,以便在对话中使用。我们很乐意为您的内容或社交活动提供帮助。如有任何问题,请联系我们。
我是杰弗里·克劳斯,@geofree,YARN 的创始人。我们是 Y Combinator 的研究员(F3),致力于让数字对话变得更有趣,更吸引人。
我们如何在 Amino 可视化数据
我们都致力于为医疗保健带来透明度。为了做到这一点,我们把大量复杂的信息变得简单易懂。有效数据可视化的目标没有什么不同,这也是我们在 Amino 如此关注它的原因。
虽然医疗保健和数据科学的交叉是一个令人兴奋的前沿,但有一个大问题:医疗保健已经令人困惑。添加大量的数据,很难理解你在看什么,更不用说收集任何有意义的见解了。世界上的医生和数据科学家有着高度专业化的工作,由于这种极端专业化,他们使用的行话对于那些可以从他们的专业知识中受益最多的人来说往往是不可理解的。
在 Amino,我们认为数据科学家需要知道如何用每个人都能理解的清晰术语解释他们的工作,因为如今,人们越来越多地对自己的医疗保健选择和费用负责。他们需要快速成为专家*。这就是数据可视化的用武之地。数据可视化使任何人都可以很容易地从大量复杂信息中快速理解关键见解。*
在过去的一年里,我们开发了一个创建有效数据可视化的流程,帮助人们做出更好的医疗保健决策。下面是这个过程的幕后场景——以及我们最喜欢的项目之一是如何从开始到结束变成现实的。
Amino 的数据可视化过程
步骤 0:分析数据
在你可以可视化任何东西之前,你需要一些数据!我们经常被问到,是我们的分析激发了视觉,还是视觉的想法激发了分析。我们发现前者是正确的,最引人注目的视觉效果通常来自我们的数据科学家每天所做的惊人工作。
第一步:编造一个故事
这是这个过程中最重要的部分,也是最容易被忽视的部分。你在说什么呀你想回答的问题是什么?你的数据中的洞察力是什么?你想提出什么论点?你用你的数据在支持或反驳什么立场?读者应该从视觉化中得到什么?预先回答这些类型的问题可以减少你必须修改和编辑的次数,从而在以后的过程中节省你大量的时间。如果你没有太多的故事,或者故事太难,你应该后退一步,重新评估你试图用数据做什么。
第二步:制作原型
绘制您的数据。不要担心它是否漂亮。画出来就好。我非常鼓励在使用软件之前用手绘制草图。如果你最初的情节开始讲述第一步中概述的故事,你就朝着正确的方向前进了。如果不是,那就值得考虑重新架构这个故事。
第三步:提炼
理想情况下,你视觉上的每一个像素都支持你想要讲述的故事。数据可视化先驱爱德华·塔夫特称之为提高“数据-墨水比率”有时,这意味着将单个数据点分成不同的类别,或者完全删除不必要的类别。其他时候,这意味着删除不必要的图例或投影等视觉效果。这也是你需要开始思考审美的地方;简洁的标签、文本和数据点之间充足的间距、便于阅读的正确文本对齐、突出显示数据的不同颜色等等。
第四步:获得反馈并进一步完善
一旦你准备好了草稿,建设性的反馈——尤其是非数据从业者的反馈——可以让你的可视化更加平易近人和易于理解。我试图通过提出以下问题来收集反馈:
“这张图表告诉你什么?”
“哪些元素有助于你理解数据?”
“哪些元素令人困惑?”
如果你在第一个问题上得到的答案不是你在第一步中希望得到的答案,那么就有必要深入研究一下是什么导致了这种误解。有时,所有需要的只是简单地改变一个标题或标签,以向读者重新构建整个想法。
第五步:发表并反思你的工作
你成功了!是时候与世界分享你的想象了。根据我们的经验,如果我们真的很幸运,我们的视频会在媒体上发表,并在社交媒体上分享。我对视觉产生的对话特别感兴趣。如果我们实现了让一个复杂的想法变得清晰易懂的目标,对话就不是关于数据本身,而是从数据中获得的洞察力。
以这条推特为例,它展示了 Amino 关于宫内节育器成本的数据:
如果你读了回复,讨论往往围绕着人们根据自己的经验支付的宫内节育器的费用,而不是数据本身(它是什么,它是如何得出的,等等。).我们对这张特别的图表感到非常自豪。
Amino 的数据可视化指导原则
在整个过程中,我们制定了一些指导原则来保持我们的专注。
了解你的观众。使用每个人都能理解的术语。
只要有可能,我们就避免使用技术术语,并试图用每个人都能理解的简单术语来解释我们的数据。如果我们发现我们必须依靠技术术语来表达一个概念,那么很可能我们还没有把它简化得足够简单。太多时候,技术写作(如研究论文)缺乏对作者发现的简单明了的解释。因此,他们经常被误解——有时是故意欺骗!这在医疗保健和 T2 政治中尤为常见。我们希望成为数据的好管家,防止数据被滥用。
透明、真实、可信。
没有误导的指南或尺度,避免使用专有的“黑箱”方法或措施。我们努力设计每一个图表,让它能够独立存在;独立于特定的内容,如新闻文章或博客文章。你永远不知道你的工作会在哪里结束!
最大化视觉可访问性,尤其是移动屏幕。
我们使用一种对患有常见色盲的人来说容易辨别的配色方案。我们对所有内容都采取“移动优先”的方式,因为大多数美国人通过智能手机和平板电脑阅读新闻。因此,我们优化了我们的数据可视化,使它们可以在移动屏幕上轻松阅读。在实践中,这意味着我们的视觉效果有薄的边界,粗体,和大量的对比。
数据可视化过程如何工作:一个真实的例子
六月,我们发表了一篇关于女性在怀孕期间接受各种超声波检查的数据报道。这是一个与我们在 Amino 的使命紧密相关的主题。我们知道,在怀孕期间,很难弄清楚你需要什么类型的超声波,你需要它们的频率,你应该什么时候得到它们,或者它们要花多少钱。虽然没有“普遍”的怀孕经历,但我们的目标是帮助孕妇理解并想象出预期的基线。
然而,在我们最初的数据探索中,我们发现各种类型的妊娠超声有近 20 种不同的代码。我们如何清晰、简单、有效地表示这些数据?最重要的是,我们如何包装它,让它真正有用?下面是我们如何从初始分析到最终可视化的一步一步的介绍——一个简单易懂的图形,代表了来自 308,000 例怀孕的 200 多万个数据点。
步骤 0:分析数据
在绘制单个数据点之前,我们首先做了大量的分析。在我们对与怀孕相关的超声波索赔的探索中,我们能够通过观察不同类型的超声波何时出现在保险索赔中来跟踪怀孕的阶段。下面是一个例子,一名妇女的怀孕超声波声称什么样子。
Example of one patient’s pregnancy ultrasound claims. This patient likely had twins, which could explain why there are so many TVUs and follow-up scans.
第一步:编造一个故事
在研究这个话题时,我们从女性那里听到的一个典型问题是“我对超声波的体验正常吗?”我们没有在网上找到任何资源来提供每种类型的超声波发生的鸟瞰图,所以我们认为我们可以自己制作。如果我们有数以千计的上述数据的例子,我们可以概括超声波的频率和时间,并向女性提供她们自己的经历有多么相似或不同的感觉。
第二步:制作原型
我最初考虑将这些数据可视化为折线图。x 轴代表时间,而 y 轴代表超声波的数量。每种超声波都有自己的线路:
然而,人们很快发现,用标签或图例来跟踪所有不同类型的代码太困难了。重叠的线条也很难辨认。因此,我们认为热图可能效果更好。
在热图中,在怀孕的每个阶段接收到的超声波数量将通过颜色来表示——颜色越深,在特定时间接收到的超声波越多。这使得超声波的类型被清楚地标记为它们自己的轴。
初稿在电脑上绘制出来了。y 轴是以天为单位的时间,列是各种超声波的代码。
我们立刻看到了一些有趣的模式。一些代码在怀孕早期出现,而另一些则出现得较晚。然而,它仍然非常复杂,可以做很多事情来简化事情——也就是说,你必须是医学编码专家才能理解图表顶部的代码。不理想。
第三步:提炼
是时候改进了。我们有两种主要的方法来简化上面的草案:将代码分组到有清晰标签的类别中,并以四个月为主要界限将时间显示为周而不是天。
翻转图表使其水平放置也更容易阅读。现在,所有文本都是水平的——不需要倾斜头部。
第四步:获得反馈并进一步完善
从我们听到的反馈来看,仍然很难看出每种超声波的“热点”。我们把这归因于太多的颜色。我们减少了不同颜色之间的步数,并增加了每周超声检查次数的下限。
这些调整增加了步骤之间的对比度,并使每种超声波的“热点”更加明显。
Previously, every week with an observed ultrasound was included in the visual, but in the updated version, only weeks with at least 100 ultrasounds were shown.
第五步:发表并反思你的工作
最后一步包括写一个清晰的标题、描述性的副标题、有用的图例和附加的指针。我们喜欢我们的标题稍微带有编辑性,并且尽可能回答“那又怎样?”在图表后面。字幕总是对所呈现的数据进行更技术性的描述。
我们对图例做出的一个有意识的决定是不包括任何数字界限。我们认为,对于读者来说,在任何给定的一周内进行超声波检查的确切次数并没有多大关系——颜色强度的差异足以说明问题。在博文中,我们澄清了灰色条带代表仅观察到 100–200 名患者接受超声检查的几周,而最暗的紫色条带代表 10,000 多名患者的观察结果。
我们很高兴地看到,这个视觉效果,以及我们其余的分析,出现在了一篇由 The Bump 撰写的文章中,这是一个致力于为准父母提供怀孕信息的新闻网站。
一些最后的想法和进一步的阅读
理解越来越多的海量信息是数据科学家和非数据科学家都面临的挑战,而且不仅仅是医疗保健。我们生活在一个充满数据的世界。很多影响我们生活的决定都是在大量信息的情况下做出的,这些信息往往超出了我们的理解范围:我们的新闻提要中显示了什么,我们与谁约会,我们获得的住房贷款利率是多少,或者我们的医疗保险将支付什么费用。有效的数据可视化是朝着让每个人更容易理解这个信息海洋迈出的一小步。
如果您是数据可视化的新手,并且正在寻找灵感、指南和工具,下面是一些重要资源的链接。你也可以在这里查看我们的其他作品。
灵感
指导
- 如何使用 R 和 ggplot2 为网站制作高质量的数据可视化效果
- 制作互联网事物,第 1 部分:使用数据(专门针对 Python)
- D3 . js 的搭便车指南
- 设想信息 爱德华·塔夫特
工具
- ggplot2
- matplotlib—Python 的数据可视化
- RStudio —一个流畅的 R 环境,让使用 ggplot2 变得轻而易举
- 闪亮的 —使用 ggplot2 语法为 web 创建交互式图表
- ge phi——强大且可扩展的开源图形可视化软件
- D3.js —信息可视化的 web 标准
- 模式 —我目前最喜欢的数据协作工具
事实上,我更喜欢对信息的想象而不是他更著名的作品 对量化信息的可视化展示 ,因为我认为其中的讨论和例子与现代媒体更相关。
在 Amino,我们为 R 使用 ggplot2/ggmap,结合 Sketch 来创建我们的视觉效果。
我的时间序列模型表现如何?
实际与预测— R
对英格兰国民健康服务(NHS)每月事故和急诊就诊人数的时间序列分析和预测是一个有趣的项目。在那里,我建立了四个不同的预测模型,以预测 2018 年 8 月至 2019 年 7 月期间 NHS 组织的每月总人次。 了解更多(点击此处 )。
这四个模型分别是:【SN】****【LR】****ARIMA和自动 ARIMA 模型。然而,我在 2018 年 8 月制造了那些模型。从那以后,我一直通过 NHS 网站——A&E 就诊和急诊,监测每个月底总就诊人数的实际统计数字。
现在已经快三个月了,总的来说,我可以说这些模特表现得非常好。但在这里,我们将通过比较三个月前每个模型的预测数据与实际数据,更深入地了解他们的表现。这可以简单地通过计算绝对误差(AE) 、均方根误差(RMSE) 和均方根对数误差(RMSLE) 来实现。
首先,我想展示 12 个月内**【TA】**各模型预测的汇总。然后,将 3 个月的真实/实际统计数据与预测进行比较:
现在,让我们将每个模型的前 3 个月的值与 NHS 网站上的实际总出席人数 ( TA )数据进行比较:
所有模型相对于实际 TA 值的条形图和散点图:
粗黑线是实际 TA 值,我们可以看到所有模型的趋势表现与 TA 相同。但是季节性的天真倾向于在前两个月有更大的差异。说到这里,我们来计算一下绝对误差,把数据可视化。但我们可以清楚地注意到,线性回归和 ARIMA 模型是最好的。我们会进一步调查!
绝对误差
> Period SN.ae LR.ae ARIMA.ae Auto.ae
> Aug-18 70,742 4,697 26,322 19,957
> Sep-18 79,540 21,022 8,984 8,368
> Oct-18 18,197 16,977 7,877 17,348
均方根误差(RMSE)
> SN.rmse 62,348.95
> LR.rmse 15,834.61
> ARIMA.rmse 16,689.39
> Auto.rmse 16,013.10
线性回归具有最低的 RMSE 值,而季节性朴素具有最高的值。
均方根对数误差
> SN.rmsle 0.031723822
> LR.rmsle 0.007851101
> ARIMA.rmsle 0.008291625
> Auto.rmsle 0.007913693
区块链将如何让预测分析变得可及?
数据正在转变为货币,数据分析是这一转变的根源。预测未来的能力是所有公司的目标,从财务管理到营销,甚至是肿瘤学。我们每个人都想对未来有所了解,以便更好地准备和抓住即将到来的机会。
不幸的是,以这种方式使用数据来提取趋势和可操作的信息存在很高的准入门槛。训练有素的专家稀缺、昂贵,而且需要多年的学习才能创造出新的专家。到目前为止,这一直是使用预测分析的一个基本缺点。
预测分析的挑战
如前所述,第一个问题是操作数据所需的知识非常有限。数据科学家是就业市场的新成员。他们的背景通常是工程师、统计学家或数学家,除了这些技能,他们还学习了大数据和处理不确定性。
第二个挑战是训练算法所需的数据量。只有在使用数千甚至数百万条记录训练神经网络之后,才能创建校准良好的伟大模型。访问如此大量的数据并不总是可行的,尤其是对于没有必要的运营规模的小公司。一个潜在的解决方案是从大量类似的公司收集数据,并为这些公司创建一个平均模型。大多数时候这是不可能的,或者需要额外的数据处理。
最后,操纵大型数据集所需的纯粹计算能力有时过于昂贵。大多数中小型企业负担不起自己的服务器来处理数据,这些数据大部分时间都是非结构化的,分散在各种存储设备中。
看起来区块链可以为每一个挑战甚至更多的挑战提供可行的解决方案。
什么是区块链?
多年来,区块链是比特币的代名词,因为它是底层技术。现在情况不再是这样了。区块链协议依赖于分布式账本的思想。因此,区块链主要是从一开始的所有交易的列表,它由一组单独的计算机持续维护和更新。有一些特性可能使区块链成为未来一些不同问题的可能解决方案,包括安全性、预测等。
首先,所有数据都存储在每台计算机上,因此,如果支持区块链网络的任何节点突然出现故障或完全消失,不会对账本产生影响。该分类帐是公开的,任何想加入该协议的人都可以免费下载。这使得区块链成为一种高度透明的交易方式。
该协议依赖于加密签名。这使得它是安全的,保证了安全性、真实性和身份。只有在每个参与者登录并验证其身份后,他们才能向网络提供支持。这很重要,因为维护分类帐意味着添加新的块。
一旦一条新信息被加入队列,就几乎不可能修改。因此,必须真诚地去做。这可以通过工作证明来实现,基本上就是解一个方程来验证一个块,参与者通过这个过程获得一个令牌。
为什么区块链会扰乱预测分析?
如上所述,区块链运算意味着将潜在的数千台计算机的计算能力结合在一起。这创造了相当于物理超级计算机的云,即使是小公司也能够通过按使用付费的系统进入预测分析的世界。
这种计算能力也可以用于其他目的,比如定义将要分析的模型。由于大多数小公司没有数据科学家,他们只能使用业务分析师来确定他们想要解决的问题。然而,结果将主要用自然语言来表达,这是机器不能直接处理的。使用 NLP(自然语言处理),计算机可以使用现有的能力来理解问题,并选择那些可以提供答案的数据集。基本上,区块链可以是破坏性的,因为它通过使用人工智能给大众带来了权力。
其次,由于这是一个高度透明的系统,它可以通过绝大多数人的共识和接受来验证或拒绝。
潜在应用
使用预测分析解决方案等同于依赖数据进行决策,而不是依赖经验和惯例。应用包括用于营销和招聘目的的分析、预测客户终身价值、流失率、创建动态价格等。
通过区块链首次使用预测分析几乎是自发的。这项技术可以用来预测加密货币和其他金融市场的价格走势。
分析是众多营销应用的核心。例如,客户细分过去只考虑人口统计和社会地理坐标,而现在新的类别可以由市场现实来定义。
通过预测分析,前面提到的类别的推荐系统可以增加参与度、销售额和客户对品牌的看法。这样的政策不仅会创造一种销售更多的方式,而且还可以动态调整价格,以保持您的报价具有竞争力,并提高利润率。
在正确的时间销售更多正确产品的另一种方法是通过查看内部和外部数据来预测每个类别的需求。例如,内部数据可以给出平均销售额的估计,而像天气预报这样的外部数据可以表明即将到来的需求高峰。
结论
预测分析背后的逻辑是,人是习惯的动物。我们通过互动学习我们的行为,我们倾向于复制我们周围看到的东西。通过处理大量数据,某些模式出现了。如果我们把这种努力从集中的情况下转移到区块链提供的分散的方法,更多的公司可以赶上潮流,并利用这一优势。
你将如何被招聘为数据科学家?我的 LinkedIn 消息的简要分析。
使用一些数据科学和 LinkedIn 的数据对数据科学招聘进行分析,然后我会在 LinkedIn 上发布这些数据。
A picture I took in London, UK that has nothing to do with this article.
关于数据科学领域的工作,有大量的统计数据被抛出:空缺职位的数量、较高的基本工资中位数、未满足的市场需求等。虽然这很有希望,但如果你是求职者或数据科学领域的新手,你不一定要将这些统计数据等同于任何直接的个人结果。因此,这篇文章的目的是给我一点点洞察力,自从我在 LinkedIn 上的头衔变成“数据科学家”以来,我是如何被招聘的,我的个人资料获得了越来越多的技能/流行语。
为了透明起见——并且因为这样做将是讽刺性的而不是,我将使用一些基本的数据科学技能来进行分析并分享 Python 代码,这样如果您感兴趣的话可以跟随。
关于我的一点点
我的背景其实是生物。当我获得分子和细胞生物学硕士学位时,我很幸运地在一家生物技术公司找到了一份数据分析师的工作。在那里,我的角色基本上是自学 R 和 Python 来对我们的细胞和生物数据进行统计分析。随着我对编程数据科学越来越感兴趣,我想要更正规的教育——或者基本上除了我和 stack overflow 之外的任何东西。
因此,我参加了纽约市数据科学院(NYCDSA)训练营。我为他们工作了一段时间,撰写和管理数据科学面试问题,以及其他一些数据科学和分析工作,直到我在辉瑞获得数据科学实习。现在我已经在他们那里做了一年多的数据科学家,主要从事深度学习、NLP、数据工程和架构方面的工作。
下载您的电子邮件
随着我从招聘人员那里收到越来越多关于数据科学职位空缺的消息,我开始想知道是否有一种好的方法来访问这些数据,而不破坏我自己的个人资料。虽然 LinkedIn API 在这种情况下没有用,但实际上您可以将所有消息数据下载到一个方便的。csv 文件。你可以通过个人资料的设置&隐私部分访问它,但为了方便起见,这里有个链接:【https://www.linkedin.com/psettings/member-data】的。然后,您应该会看到下面的选项。
然后,您可以选择您想要下载的数据,它会向您发送一封电子邮件确认链接。对于本演练/分析,它只是“消息”。
非常基本的情节和统计
好了,现在我们可以开始处理数据了。让我们启动 python,看看我们得到了什么。
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetimemessages = pd.read_csv("messages.csv")
messages.head()
为了匿名起见,我已经删除了From
和Content
列中的值,但是您应该会看到上面的字段。我们可以看到谁发的邮件,日期/时间,主题和内容。首先,我们只需要稍微清理一下数据。对于绘图,将日期和时间作为索引会很有帮助。此外,我真的不想看所有的来回信息,因为这可能有点误导。让我们只保留每个人给我发的第一条消息。
## properly format the date and set it as the index
messages['Date'] = [datetime.strptime(x, '%m/%d/%y, %I:%M %p') for x in messages['Date']]## keep only message sent to me
df = messages[messages['Direction'] == "INCOMING"]## keep only the first message everyone sent me
df = df.drop_duplicates('From', keep = 'last')
现在我们只有每个人发给我的第一条消息,让我们来看看一些基本的统计数据。
df = df.set_index(pd.DatetimeIndex(df['Date']))total_msg = len(df)
min_date = min(df.index)
mean_msg_month = df.resample('MS').size().mean()
mean_msg_week = df.resample('W-MON').size().mean()print("Earliest Message: %s" % min_date)
print("Total All Time Incoming Messages: %s" % total_msg)
print("Avg # of Messages per Month: %s" % mean_msg_month)
print("Avg # of Messages per Week: %s" % mean_msg_week)
所以我收到了 300 多条来自不同个人的信息。为简单起见,我们假设大部分是招聘人员,排除偶尔的产品促销、垃圾传销或其他。然而,直到 2017 年 2 月或 3 月,我才在我的个人资料中添加任何关于数据科学的内容,我的第一条消息是在 2016 年 7 月;这可能有点扭曲了数据。让我们策划一下,找出答案。
of LinkedIn Messages over Time
好了,你可以看到,在 2017 年 2 月将数据科学术语添加到我的个人资料之前**,我的电子邮件中基本上没有招聘人员。一旦我这么做了,我的信息就会激增!请注意,我想我也打开了该设置,让招聘人员知道我在这个时候对新的机会持开放态度,但我在 2017 年 8 月关闭了它,因为几乎看不到归因。12 月份接近年底时会有一段短暂的平静,但 2018 年 1 月再次以大量消息开始,自那以来一直相当稳定。**
知道我有很多前数据科学数据影响我的平均计算,让我们重做 2017 年以后的数据。
mean_msg_month = df[df.index > '2017-01-01'].resample('MS').size().mean()
mean_msg_week = df[df.index > '2017-01-01'].resample('W-MON').size().mean()print("Avg # of Messages per Month: %s" % mean_msg_month)
print("Avg # of Messages per Week: %s" % mean_msg_week)
那更好。平均而言,我每月收到 14 条消息,每周收到 3 条,标题为数据科学家,个人资料中包含数据科学术语。从图表中可以看出,有些月份比其他月份强得多。
一点自然语言处理
这些统计数据提供了丰富的信息,但这是我一年中做过的最无聊的 python。尽管可能没有那么大的收获,但让我们稍微研究一下文本,看看我们能提取出什么信息。我们可以回到我们读到的原始表格,在Content
列中删除 NA 值,并从 NLP 视觉效果最差的单词云开始查看传入的消息。
from wordcloud import WordCloud, STOPWORDSstopwords = set(list(STOPWORDS) + ['hi','kyle','will','thank','thanks'])df = messages[messages['Direction'] == "INCOMING"]
df = df[pd.notnull(df['Content'])]wc = WordCloud(background_color='white',
stopwords=stopwords,
).generate(' '.join(list(df['Content'])))plt.imshow(wc)
plt.axis("off")
plt.show()
在删除停用词和一些额外的自定义词后,我们看到我的大部分邮件都在讨论数据科学和数据科学角色。一些人提到了我目前的职位,但更多人提到了数据科学或“机器学习”角色的“客户”或“业务”的新“机会”。这很酷,但没有告诉我们太多,让我们看看我们是否可以用更高级的东西来深入挖掘。
实体识别
“命名实体识别(NER)(也称为实体识别、实体分块和实体提取)是信息提取的子任务,旨在定位非结构化文本中提到的命名实体并将其分类为预定义的类别,如人名、组织、位置等……”—维基百科。基本上是从非结构化文本中提取有用的标记数据。
不用训练我们自己的模型或标记数据,我们可以使用像spacy
这样的包来提供预训练的 NER 模型,这些模型能够识别许多对象,其中一些可以在下面看到。
这样,使用几行代码,您就可以从任何文本中快速收集和显示实体。下面的例子使用了一个随机匿名的例子,来自我在 jupyter 笔记本上呈现的消息。
import spacy
from spacy import displacynlp = spacy.load('en_core_web_sm')
text = df['Content'][i]
displacy.render(nlp(text), jupyter=True, style='ent')
它很酷,但不是很好用。该算法用 4 种不同的方式给公司“定位”,分别是GPE
、PERSON
、无,最后是正确的方式ORG
。NY 和 CHI 应该也不是ORG
的年代
我原本希望利用这一点来更好地了解我被招聘的公司职位和薪水提及,但如果不标记大量我自己的数据(我不会这样做)和训练一个新模型(我不想这样做),它可能不会产生好结果。看来我们得尝试更硬的编码方法了。
positions = ['data scientist',
'data analyst',
'data engineer',
'senior data scientist']text = ' '.join(list(df['Content'])).lower()
for job in positions:
count = text.count(job)
print(job + ': %d' % count)
可能仍然遗漏了许多只在邮件主题中提到的边缘案例、角色或职位,但你知道了。对我邮件中提到的角色的简短探索。
未来方向
用这些数据做一些机器学习会很酷。我用平均预训练单词嵌入对数据做了 k-means,但这对于这篇文章来说有点过了。
此外,如果我有我的 LinkedIn 个人资料随时间变化的全面日志(简历、证书、职位、联系等),我会希望看到某些术语是否能激发最佳互动,并更多地挖掘时间序列方面。不幸的是,我可能没有这样的时间和数据。不管怎样,希望你喜欢它,如果你有更多的探索想法,请告诉我。
多年轻才算太年轻不适合约会?
你可以约会的老老少少的真正规则
多大才算太老?多年轻才算太年轻?
关于多大年纪和多年轻可以约会的真正规则。
“恐怖法则”指出,你应该约会的最小年龄是“你年龄的一半加七岁”一个不太常用的推论是,你应该约会的最大年龄是“从你的年龄中减去 7,然后加倍。”
根据这条规则,社会应该接受一个 50 岁的男人和一个 32 岁的女人约会。对我朋友的一项快速调查显示,情况并非如此。反应从“当然”到“这很奇怪”到“你为什么问我这个?”。当我颠倒性别时——一个 50 岁的女人和一个 32 岁的男人约会——人们的反应也经常颠倒。
这让我想知道,当谈到约会中的年龄差异时,creepiness 规则实际上反映了什么是社会可以接受的吗?换句话说,令人毛骨悚然的规则实际上反映了社会所发现的……令人毛骨悚然的东西吗?
研究表明
互联网上对这个话题的看法不一。文章和博客文章在声称年龄在一段关系中绝对重要和年龄在一段关系中绝对不重要之间交替出现。有一点是清楚的——没有什么比其他人的爱情生活更能引发更多的观点。
Buunk 和他的同事写了一篇论文,调查了年龄、性别和浪漫关系类型(随意、认真、婚姻等)等因素是如何影响爱情的。)影响人们对潜在浪漫伴侣的年龄限制。
研究人员在公共场合随机接近一些人,让他们想象自己和一个有魅力的异性处于浪漫关系中。研究人员随后展示了不同类型的关系——性幻想、临时恋情、长期关系、婚姻——并询问参与者在每种情况下他们伴侣的最小和最大年龄是多少。
除了允许你以科学的名义违反所有社会规范之外,以下是实际结果:
- 不管是什么类型的关系,女人都喜欢和自己年龄相仿的男人。根据 Buunk &同事的研究进行的另一项分析,女性在“恐惧法则”的指导下寻找伴侣。
- 男人想要年轻得多的女人,以换取更少的承诺,更多的私人关系(例如,性幻想,随便的事情)。对于这些类型的关系,男性寻找的女性年龄低于令人毛骨悚然规则的下限。对于更加忠诚和公开的关系,男性会寻找与自己年龄相近的女性。
- 男人和女人都没有兴趣像猥琐法则允许的那样约会。男性和女性的最大年龄偏好都远低于恐怖规则的上限。
结果很有趣,但是仅仅因为我想和比我年轻得多的人约会并不意味着我可以接受别人做同样的事情。我仍然不知道这些令人毛骨悚然的规则是否真正代表了社会所能接受的东西。
所以我决定自己寻找答案。
设置调查
我用我所知道的唯一方法解决了这个范式转换的研究:我创建了一个调查。
我向人们展示了一些假设的场景,在这些场景中,他们的朋友“约翰”或“劳伦”开始了一段新的浪漫关系,这段关系还太早,无法定义。然后我给了他们的朋友不同的年龄——20 岁、30 岁、40 岁、50 岁、60 岁——并询问参与者他们朋友的新欢的社会可接受的最小和最大年龄是多少。
尽管我本可以走上纽约街头,以一种非传统的方式亲自调查人们,但我还是决定用手机做调查。我尽量避免日常生活中的社交活动。
对于那些不知道现代血汗工厂的人来说,你错过了。Mechanical Turk 是亚马逊的在线平台,人们向其他人支付费用来完成在线任务。这可以从转录一部电影,到识别收据上的一个项目,到进行一项关于假设的浪漫关系的调查。几天之内,我收到了 274 份回复:110 名男性,163 名女性,还有一个人“宁愿不说”。
测试“爬行规则”
结果显示,对于多年轻就可以约会,猥琐法则通常过于宽松——尤其是当你变老的时候。
根据恐怖法则,20 岁的约翰/劳伦可以和 17 岁的人约会。这与被调查者认为可以接受的结果一致(约 18)。然而,随着约翰和劳伦年龄的增长,令人毛骨悚然的规则与人们的实际反应有所不同。根据规定,一个 60 岁的女人可以和 37 岁的人约会。然而根据调查,37 岁远远超出了社会认可的年龄范围。
研究结果还显示,当你年轻的时候,关于多大年龄可以约会,这个令人毛骨悚然的规则过于严格,但是随着年龄的增长,这个规则就变得过于宽松了。
当约翰/劳伦 20 岁时,最大约会年龄限制在 26 岁([20–7]* 2)。然而,接受调查的人对约翰和劳伦在 30 岁出头时约会没有意见。
当约翰/劳伦 30 岁的时候,令人毛骨悚然的规则实际上符合人们的反应。该规则规定劳伦情人的最大年龄是 46 岁,根据调查,实际可接受的年龄是 45.4 岁。
当约翰和劳伦 60 岁时,猥琐规则允许他们和任何比自己大的人约会(官方上限是 106)。然而,社会对年龄的限制更多,分别为 71 岁和 75 岁。
总的来说,令人毛骨悚然的规则不能准确地代表人们认为社会可以接受的东西;人们比“恐惧法则”所暗示的更具批判性。对于多大年龄和多年轻的人被“允许”约会,该规定过于宽松。
我有了最初问题的答案,但我并不满意。如果恐怖规则是错误的,那么我需要一个新的规则来指导我不存在的爱情生活。当我查看数据时,我意识到一条规则是不够的。
不同的人有不同的规则
社会对男人和女人有不同的期望——男人可以比女人年轻约会,女人可以比男人年长约会。
在调查中,约翰伴侣的可接受最低年龄一直低于劳伦。当约翰/劳伦年幼时,这种差异很小(大约 6 个月),但随着约翰/劳伦年龄的增长,这种差异会增大。到他们 60 岁的时候,约翰被“允许”和比劳伦最小年龄小三岁的人在一起。
说到和年长的人约会,女人更有优势。劳伦伴侣的可接受最大年龄始终比约翰高 3.5 岁左右。
根据你在关系中的地位,社会也会有不同的期望——仅仅因为你可以接受和你的伴侣约会,并不意味着你的伴侣也可以接受和你约会。
根据调查,20 岁的约翰可以和 30 岁的人约会。然而,当劳伦 30 岁时,她应该和至少 22 岁的人约会。社会对老年人如何约会的期望与对年轻人如何约会的期望并不总是一致。
关于年龄外约会的新规则
考虑到这些不同的期望,我创造了四个“修订”规则来捕捉社会实际上认为可以接受的年龄限制。我不仅为男性和女性制定了不同的规则,还制定了不同的规则来决定男女可以约会的年龄和年龄。
对于男性:
女方最大年龄=(男方年龄)+ 12
女性伴侣的最低年龄= (2/3)*(男性年龄)+ 2【至少 18 岁】
对于女性:
男性伴侣的最大年龄=(女性的年龄)+ 15
男性伴侣的最低年龄= (3/4)*(女性的年龄)【至少 18】
下面的图表比较了修订规则的输出与原始蠕变规则的预测。我加入了“至少 18 岁”的要求,以帮助防止我出现在任何联邦调查局的监视名单上。在几乎所有的情况下,修订后的规则比“令人毛骨悚然”的规则更具限制性。
请不要用这篇文章作为建议
我认为有机会在这项如此重要的研究上更进一步。情侣之间的实际平均年龄差是多少?这项研究如何转化为同性关系?富有/出名会影响人们认为什么是社会认可的吗?
说到底,这篇文章是关于人们如何思考, 而不是 人们应该如何思考。不要把你的感情决定建立在别人的判断上。寻找能让你快乐的关系。
你可能喜欢的其他文章
如果你喜欢这篇文章,请访问LateNightFroyo.com阅读关于爱情、生活等话题的话题。
什么时候去参加聚会比较合适?
来源:
Buunk,B. P .,Dijkstra,p .,Kenrick,D. T .,& Warntjes,A. (2001 年)。与性别、自身年龄和参与程度相关的择偶年龄偏好。进化和人类行为,22(4),241–250 页。
谁对你来说太年轻或太老而不能约会?今日心理学,2014 年 5 月 2 日。网络。2016 年 10 月 2 日。
[1] 虽然我们关注的是异性恋关系,但同性恋关系也会是一个有趣的后续问题。
YouTube 如何推荐视频
这是麻省理工学院机器智能社区(MIC)的“ML 开创性论文”系列的第一篇论文。麻省理工学院 MIC 旨在教育整个社区关于机器学习的知识,并降低进入门槛。如需了解更多信息,请访问 https://mitmic.io 或发送电子邮件至【mic-exec@mit.edu】T2。
推荐系统是用户会遇到的最常见的机器学习形式之一,无论他们是否意识到这一点。它在脸书和推特以及 YouTube 上为策划时间线提供了动力。
之前被公式化为试图预测特定用户的电影评级的矩阵分解问题,现在许多人正在使用深度学习来解决这个问题;直觉是特征的非线性组合可能比传统的矩阵分解方法产生更好的预测。2016 年,Covington、Adams 和 Sargin 用“用于 YouTube 推荐的深度神经网络”展示了这种方法的好处,使谷歌成为首批为推荐系统部署生产级深度神经网络的公司之一。
鉴于 YouTube 是美国第二大访问量网站,T2 每分钟上传超过 400 小时的内容,推荐新鲜内容并不是一件简单的任务。在他们的论文中,Covington 等人展示了一种两阶段信息检索方法,其中一个网络生成推荐,第二个网络对这些生成的推荐进行排名。这种做法其实挺有想法的;由于推荐视频可以被提出为一个极端的多类分类问题,因此使用一个网络将任务的基数从几百万个数据点减少到几百个数据点允许排名网络利用更复杂的特征,这些特征对于候选生成模型来说可能太微小而无法学习。
背景
YouTube 对推荐系统的深度学习方法背后有两个主要因素:
- **规模:**由于这些矩阵极其稀疏,先前的矩阵分解方法很难在整个特征空间中进行规模扩展。此外,以前的矩阵分解方法很难处理分类变量和连续变量的组合。
- 一致性:谷歌许多其他基于产品的团队已经转而将深度学习作为学习问题的通用框架。自从 Google Brain 发布了 Tensorflow ,以分布式方式训练、测试和部署深度神经网络就足够容易了。
此外,最近在这一领域的成功证明了这一方法的可行性。 Sedhain 等人 已经证明,使用自动编码器来解决协作问题会比有偏矩阵分解等方法产生更好的结果。
网络结构
Fig. 1, the “funnel” approach of narrowing down the set space for videos to be recommended.
有两个网络在起作用:
- 候选生成网络获取用户的活动历史 (例如,正在观看的视频的 id、搜索历史和用户级别的人口统计数据)并输出数百个可能广泛适用于用户的视频。
总的想法是这个网络应该针对精度进行优化;每个实例都应该高度相关,即使这需要放弃一些可能广受欢迎但不相关的项目。 - 相比之下,排名网络对每个视频采用更丰富的特征集,并对来自候选生成网络的每个项目进行评分。对于这个网络来说,高召回率是很重要的;只要你没有错过最相关的项目 ,有些推荐不太相关也没关系。
总的来说,这个网络是端到端训练的**;训练集和测试集由保留数据组成。换句话说,网络被给予一个用户的时间历史,直到某个时间 t ,并且网络被询问他们在时间 t+1 想要观看什么!作者认为,如果 YouTube 上的视频具有情节性,这是推荐视频的最佳方式之一。**
发电网络
Covington 等人将候选生成问题作为极端多类分类问题提出,其中预测问题变为“在某个时间 t 对 w(t)的某个观看时间进行准确分类”,对于某个给定的项目 i ,上下文 C 和用户 u。图 2 展示了目标的形式化。
Figure 2: Understanding the probability of the watch time distribution.
模型架构遵循传统的“塔式”方法,其中网络的底部是最宽的一层,此后每层将网络的宽度减半。作者实验了不同的网络,深度从一层到四层不等。最小的层是 256 个 ReLu 单位的一层,而最宽的层是 2048 个 ReLu 单位宽,并且是四层深。
该模型使用负采样进行训练,其中我们试图通过仅传播这些负样本的子集而不是全部来加强负结果,并针对负样本之间的关系来加强这种相关性。在服务时间,使用近似最近邻算法来服务次线性时间中的前 N 个结果。
性能黑客
在候选人生成和候选人排名网络中,作者利用各种技巧来帮助降低模型的维度或性能。我们在这里讨论这些,因为它们与两个模型都相关。
首先,他们训练了一个子网,通过学习这些特征的嵌入,将稀疏特征(如视频 id、搜索令牌和用户 id)转换为密集特征。这种嵌入是通过梯度下降与模型参数的其余部分联合学习的。
其次,为了帮助对抗开发/探索问题,他们将训练范例的年龄作为一个特征。这有助于克服模型中倾向于推荐陈旧内容的隐含偏见,这是训练时间期间平均观看可能性的结果。在服务时,他们简单地将示例的年龄设置为零,以补偿这个因素。下图有助于展示基线模型对统一类别概率的偏差。
Figure 3: a comparison on the probability of classes, with and without the “example age” feature.
它们以 A/B 测试的形式结合了生产化模型的反馈,而不是离线度量(如精度、召回或优化的损失函数)。这提供了比任何离线指标更真实的目标。为了优化这一指标,作者平等地权衡了所有用户,这样一小部分高级用户就不会影响面向大众的内容推荐。
对预测进行排序
将推荐系统分成两个网络背后的基本思想是,这为分级网络提供了用比候选生成模型更精细的齿梳检查每个视频的能力。
例如,候选生成模型可能只能访问诸如视频嵌入和观看次数之类的特征。相比之下,排名网络可以采用诸如缩略图和他们的同行的兴趣之类的特征,以便提供更加准确的评分。
排名网络的目标是最大化任何给定推荐的期望观看时间。由于视频中常见的“点击诱饵”标题,Covington 等人决定尝试最大化点击概率的观看时间。
与候选生成网络类似,作者使用嵌入空间将稀疏分类特征映射到密集表示中。与多个项目相关的任何特征(即,在多个视频 id 上的搜索等)在被馈送到网络之前被平均。然而,依赖于相同底层特征的分类特征(即印象的视频 ID、最后观看的视频 ID 等)在这些类别之间共享,以便保留存储器和运行时间要求。
就连续特征而言,它们通过两种方式进行规范化。
- 首先,它遵循[0,1]之间的标准归一化,使用累积均匀分布。
- 其次,除了标准归一化 x 之外,还馈入了表格 sqrt(x) 和 x 。这允许模型创建每个特征的超线性和亚线性函数,这对于提高离线精度至关重要。
为了预测预期观看时间,作者使用了逻辑回归。点击印象用观察到的观看时间来衡量,而负面例子都接受单位重量。在实践中,这模拟了概率 ET ,其中 E[T] 模拟了印象的预期观看时间,P 模拟了点击视频的概率。
最后,作者展示了更广更深的网络对每用户损失的影响。每用户损失是指错误预测的观看时间总量,与保留数据的总观看时间之比。这允许模型预测作为好的推荐的代理的东西;而不是预测一个好的推荐本身。
Figure 4: Demonstrating the effects of wider and deeper networks on next-day holdout data.
相对清楚的是,这些结果表明,更宽+更深的网络往往会大大减少损失。作者选择部署最后一个模型。有趣的是,选择最后一个模型,同时决定平等地权衡正面和负面的例子,会导致加权损失增加 4.1%。
结论
“用于 YouTube 推荐的深度神经网络”是首批强调深度学习可能为推荐系统提供的进步的论文之一,出现在 ACM 2016 年推荐系统会议上。它为后来的许多论文奠定了基础,包括有影响的“ Irgan:统一生成式和判别式信息检索模型的极小极大博弈”。
我们“ML 开创性论文”系列的下一篇是更快的深度学习:最佳 DNN 原语。之后请继续关注 WaveNet 了解更多信息!
有兴趣了解更多关于机器智能及其对我们世界的影响吗?在http://machineintelligence.cc/了解更多关于机器智能社区的信息,并发送电子邮件mic-exec@mit.edu了解更多!
关于作者
莫因·纳迪姆(Moin Nadeem)是麻省理工学院(MIT)的大三学生,也是麻省理工学院机器智能社区本科生人工智能俱乐部(本科生 AI club)的联合主席。今年夏天,他正致力于开发一种协同过滤方法,在 Quizlet 上推荐内容,并在空闲时间和朋友们一起闲逛。了解更多关于 MIC 的信息。
如何成为一名计算机科学家
Just cool fractals made by Nick Spratt
经常有人问我如何成为一名计算机科学家。这就是为什么我决定描述我自己的道路。当然,网上已经有很多其他的教程了,所以这里我只收集它们并把它们合并成一个。此外,由于每个人的知识水平不同,因此是否跳过某些部分由您决定。
主要学习可以分为四个主要主题:附加资源、数学、编程和机器学习本身。
其他来源
有些资源是完全可选的,不是理解该领域所必需的。但是如果你覆盖了它们,学习其他的东西就容易多了。
- 学习如何学习(Coursera )。它将向你解释我们的大脑是如何工作的,以及如何利用这些知识进行更快更好的学习。我强烈建议在开始学习之前先通过这门课程,它真的很有帮助。
- 数学思维入门(Coursera) 。这门课程让你了解如何不用数学,而是用数学来思考。“数学思维不同于做数学——至少不同于我们学校系统中典型的数学”。如果你打算深入研究数据科学的数学方面,这将是适用的。
数学
为了计算机科学的目的,你至少应该知道线性代数和概率和信息理论。目前我还没有为这些主题选择资源,但是简介在深度学习书籍,第一部分中有很好的介绍
如果你觉得深度学习的书很复杂——试着通过可汗学院的线性代数和统计和概率课程。
编程;编排
作为一门编程语言,我会选择 Python3 ,因为它易学易用。我建议通过这样的书去接触它:
- 思考 Python——一本介绍 Python 世界、算法和编程的书。
- 深入研究 Python—Python 的更深入的用法。它会通过例子教你如何使用这种语言。
- Python 食谱 —带讨论的现成 Python 示例。
- 流利的 Python——成为真正的 Python 高手。
- 用于数据分析的 Python—描述如何使用 Python 库,如 numpy、pandas、matplotlib 和其他用于数据分析的库。
- Scipy 课堂笔记——完全免费的笔记,在这里你可以学习如何使用主要的 Python 包,也是为了科学。
另一个对你有用的话题是:
- linux/unix 系统和 bash。看一看这个教程。
- 版本控制系统,比如 GIT。这里有个很酷的在线教程,大概 30 分钟就能传过去。
机器学习
在学习了数学基础和一些编码之后,您可以开始学习 ML 本身:
- 阅读 Adam Geitgey 系列博文。至少有几个。他们会给你一些想法,机器学习到底是关于什么的,为什么它如此酷和有趣。
- 来自 AndreNg 的 Pass 入门课程—可在 Coursera 和斯坦福网站获得。它将描述机器学习的主要原理和应用。出于教育目的,本课程使用 Octave 作为主要语言,但使用它很容易理解。课程中还有对 Octave 的介绍。
- 利用所学知识,尝试通过 Kaggle 的一些入门比赛,如泰坦尼克号:灾难机器学习或数字识别器。 Kaggle 本身“是作为一个预测建模和分析竞赛的平台而成立的,公司和研究人员在这个平台上发布他们的数据,来自世界各地的统计学家和数据挖掘者竞争产生最好的模型”( wiki )。为了解决入门任务,我建议你学习一种用于机器学习的 Python 框架: scikit-learn (更容易)或 tensorflow (更难)。在 udacity 有一个关于 tensorflow 的相当不错的[课程。](https://www.udacity.com/course/deep-learning–ud730)
- 通过 CS231n:用于视觉识别的卷积神经网络斯坦福课程。它将教你如何将机器学习应用于图像。
- 从教程中改进结果。开始在你自己的项目中使用机器学习。实验算法/神经网络架构。
- 不要犹豫尝试任何其他框架,如 Theano、Caffe、Pytorch 等。
- 端到端阅读深度学习书籍。
- 看一些报纸。尝试自己实现一些模型。
- 更新一些型号。发表自己的论文。
结论
我希望这样的途径对你有用。以后我会尽量用相关资源更新。所以请在评论中随意指出一些有趣的东西。感谢阅读!
如何分析张量流:
现在 TensorFlow 是机器学习最常用的库之一。有时,绘制张量流图并了解哪些操作花费更多时间,哪些花费更少时间可能非常有用。这可以通过 tensorflow timeline
模块完成。不幸的是,我找不到任何清晰的教程如何使用它。因此,在这篇博文中,我将尝试解决这个问题,涵盖以下主题:
- 如何执行张量流代码的剖析?
- 如何合并多个会话运行的时间线。
- 分析过程中可能会出现哪些问题以及如何解决这些问题。
简单的例子
首先让我们定义一个简单的例子,然后是 StackOverflow 回答:
您应该注意到为会话运行提供了额外的options
和run_metadata
。这个脚本应该在 CPU 和 GPU 上运行。执行之后,我们将拥有一个timeline_01.json
文件,其中包含以 Chrome trace 格式存储的分析数据。如果您的脚本失败了——请尝试来自【profiling 期间的问题部分的第一个解决方案。
要查看存储的数据,我们应该使用 Chrome 浏览器(不幸的是,据我所知,只有它支持自己的跟踪格式)。进入chrome://tracing
页面。在左上角,你会发现Load
按钮。按下它并加载我们的 JSON 文件。
Example profiling of our simple script on CPU.
在顶部,你会看到以毫秒为单位的时间轴。要获得一些操作的更精确的信息,只需点击它。同样在右边,有简单的工具存在:选择,平移,缩放和计时。
更复杂的例子
现在让我们用一些占位符和优化器来定义更复杂的例子:
现在我们的操作存储在变量作用域下。使用这种方法,操作名称将以作用域名称开始,并在时间线上明确区分。
此外,代码存储三次运行的跟踪。如果我们在 CPU 上执行脚本,我们会收到三个相对相似的时间线,如下所示:
Profiling second script on CPU.
但是,如果我们检查来自 GPU 分析的结果,第一个结果将与接下来的结果不同:
Profiling second script on GPU, 1-st run.
Profiling second script on GPU, 2-nd or 3-rd run.
你可能会注意到,第一次运行比以后的运行花费更多的时间。这是因为 tensorflow 在第一次运行时会执行一些 GPU 初始化例程,稍后会对它们进行优化。如果你想要更精确的时间线,你应该在运行一百次左右后存储轨迹。
此外,现在所有输入/输出流都以变量作用域名称开始,我们确切地知道一个或另一个操作在源代码中的位置。
在一个文件中存储多次运行的时间线
如果出于某种原因,我们希望在一个文件中存储多个会话运行,该怎么办?不幸的是,这只能手动完成。Chrome trace 格式中存储了每个事件及其运行时间的定义。在第一次迭代中,我们将存储所有数据,但是在下一次运行中,我们将只更新运行时间,而不是定义本身。这里只是合并事件的类定义,完整的例子你可以在这里找到:
我们收到了很酷的合并时间线:
Merged profiling for 5 runs.
看起来初始化还是需要很多,我们放大到右边:
Merged profiling for 5 runs zoomed.
现在我们可以看到一些重复的模式。运行之间没有任何特定的分隔符,但我们可以在视觉上区分它们。
分析期间的问题
在剖析过程中可能存在一些问题。首先,可能根本行不通。如果您遇到了类似这样的错误:
I tensorflow/stream_executor/dso_loader.cc:126] Couldn't open CUDA library libcupti.so.8.0\. LD_LIBRARY_PATH:
你确定不按预期对所有作品进行概要分析,它可以通过安装额外的库libcupti-dev
根据 GitHub 问题得到解决。此命令应该可以修复所描述的错误:
sudo apt-get install libcupti-dev
其次是运行过程中的延迟。在最后一张图片上,我们看到了运行之间的间隙。对于大型网络,这可能会花费大量时间。这个 bug 不能完全解决,但是使用定制的 C++ protobuf 库可以减少延迟。在 tensorflow 文档中清楚地描述了如何执行安装。
结论
我希望通过这样的分析,您能更深入地了解 tensorflow 的内部情况,以及您的图表的哪些部分可以优化。所有已经在 CPU 和 GPU 上生成时间线的代码示例都存储在这个 repo 中。
感谢阅读!
假人的降维第 1 部分:直觉
人类是视觉生物。我们需要亲眼目睹才能相信。当你有一个超过三维的数据集时,我们的眼睛就不可能看到发生了什么。但是谁说这些额外的维度是真的必要的呢?有没有办法把它减少到一维、二维或三维?原来是有的。
主成分分析(PCA)就是这样一种技术。简单又优雅。可惜,简单并不意味着容易看透,真正明白是怎么回事。如果你以前读过它,你可能会遇到一个完全数学化和抽象的处理,但对它的意义没有直觉。或者它可能被解释为“外行风格”,没有数学依据。或者两者都有一点,中间有一个概念上的空白,没有把直觉和严谨联系起来。我会尽量避免这种情况。
降维的主要目的是:找到数据的低维表示,尽可能多地保留信息。这是一个相当大胆的说法。让我们看看这是什么意思。
摆脱不必要的东西
假设我们有以下某个地区的房价数据集,单位为千美元:
Dataset with 4 features per item
该数据集有 4 个特征(4 个维度),不可能作为一个整体进行图形可视化。但是,如果您仔细研究这些特性之间以及它们之间的关系,您会发现并非所有的特性都同等重要。
例如,你能通过楼层数来描述每栋房子的特征吗?楼层数有助于区分不同的房子吗?似乎不是,因为它们几乎等于,也就是说它们有低方差,即σ = 0.2、和因此不是很有帮助。家庭呢?变化不大,但其方差肯定大于楼层数(σ = 28),因此更有用。现在,对于最后两个特征,面积(σ = 43)和值(σ = 127),它们变化更大,因此比我们的其他两个数据更具代表性。
但是我们可以做一些事情来最大限度地充分利用每个特性,而不会牺牲太多的准确性。到目前为止,我们已经分别研究了每个特性。他们彼此之间的关系如何?如果你仔细观察前两个特征,值和面积,你会注意到值大约是面积的两倍。这非常有用,因为我们现在可以从一个特征推断出另一个特征,而且只需要一个而不是两个。这个性质叫做协方差。协方差越高,两个特征的相关性越强,这意味着数据中存在冗余,因为我们可以从一个特征推断出另一个特征,所以信息比需要的多。
从前面的讨论可以明显看出:
- 拥有高方差的特性是件好事,因为它们会提供更多信息,也更重要。
- 具有高度相关的特征是一件坏事,因为它们可以在信息损失很少的情况下从另一个特征中推断出来,因此将它们放在一起是多余的。
这正是 PCA 所做的。它试图找到数据的另一种表示法(另一组要素),以使该表示法中的要素具有最高的可能方差和最低的可能协方差。但是现在这应该说不通,直到我们亲眼看到…
给我看看魔法
在接受 PCA 采访时,我问了她以下问题:“你的完美数据集是什么样的?”她给我看了这个:
这是有意义的——数据本质上可以被简化为一行。观察:与 x 2 方向相比,沿x1 方向的变化非常大,这意味着我们可以安全地丢弃 x 2 特征而不会造成太大损害(通过说“沿 x 1 方向的变化”,我指的是第一个特征的变化,因为我们选择用 x 1 轴来表示它,对于 x 【T29 也是如此)而且, x 1 似乎根本不依赖于 x 2,它只是继续增加,与 x 2 的值无关,这暗示着相对低协方差*。至于为什么这对 PCA 来说是完美的,原因很简单,因为她需要做的就是:*
Projecting the dataset on the x1 axis.
After projection, the data only has one dimension.
了解发生了什么至关重要。因为 x 1 比 x 2 重要得多(根据前面说的两个标准),我们决定只保留 x 1,通过将数据点投影到它的轴上,这相当于只保留了点的x1-坐标,这也相当于去掉了“不重要”的特征 x 2。现在我们有了 1D 的数据集,而不是 2D!
这实质上是**维度缩减:**寻找数据的最佳低维表示。当然,会有一些误差,因为我们忽略了第二个特征,它由上面的虚线表示。但是这种误差被保持在最小,因为数据几乎位于一条线上,并且这是我们利用给定的信息实际上能做的最好的事情(稍后将详细介绍)。
事情变得复杂了
“那么,你不那么完美的数据集呢?长得怎么样?”我问过 PCA。她毫不犹豫地说:“我真的不相信有这种事,你知道。每个人都是完美的,你只需要换个角度。来,看看这个。”
“不像以前那么容易了,你不觉得吗?没有。”她歪着头说。
“这实际上是我之前向您展示的同一个‘完美’数据集,只是旋转了 45 度。我们所要做的就是旋转我们自己的轴以与数据集对齐,并像以前一样继续:投影到新 x 1 轴上,并省略新 x 2 轴”
停下来思考一下这一意想不到的事件变化是至关重要的。就像工程师通常做的那样,主成分分析将没有“对齐”的数据集的不太完美的问题简化为容易解决的完美的“对齐”问题。
这是怎么发生的?本质上,PCA 试图找到另一组轴,使得沿该轴的方差尽可能大。当我说“沿 x 1 轴的方差”时,我指的是特征 x 1 的方差。但是旋转了我们的轴之后,轴就失去了意义——它们不再代表 x 1 或者 x 2。相反,它们代表了两者的线性组合。要了解如何操作,请注意上面的新 x 1 和 x 2 轴可以通过对旧轴执行旋转变换来获得,获得:
这两个新方向, z 1 和 z 2,是数据集的主成分。第一主成分*, z 1 是方差最大的一个,因此也是最重要的一个,携带最多的信息,从某种意义上说,数据依赖于它。第一主分量方向上的变化现在被解释为新的合成特征 z 1 的变化。至于第二主成分*, z 2,它只是方差第二大的一个主成分垂直于第一主成分。**
顾名思义,主成分分析就是寻找这些主成分,以便我们可以利用前几个方差最大的主成分来表示我们的数据,就像我们将完美的数据集投影到一条直线上时所做的那样。
很容易看出这如何能推广到二维以上。我们不是投影到线中,而是投影到平面中,我们完美的 3D 数据集现在大约位于一个平面上(或者,更好的是,一条线)😗*
神奇的线条以及在哪里可以找到它们
现在真正的问题来了:如何找到这些主要成分?
我将把这个问题留给下一部分,在那里我们将开发那个主公式:
Singular Value Decomposition
在这个过程中,我们将发现如何将我们在这里发展的定性直觉转化为适用于所有维度的优雅的数学结构的深刻见解。
一个小样本能告诉我们关于一个大群体的什么?—第一部分
理解基本术语
简介:
推断统计学:它是什么?查看这里的正式定义。推断统计学和数据科学是如何关联的?推断统计学通过从大量数据(总体)中抽取一个小的子集(样本)来帮助估计数据中的未知量,并检查我们对未知量的假设。这对学习机器学习的底层原理很重要(跳到最后看看怎么做)。它是营销数据科学的面包和黄油。
推断统计是非常基本的,但被低估的概念。大多数数据科学训练营只是触及了皮毛。然后是关于 p 值黑客和样本测试无用的帖子,因此使我们中的一些人能够愉快地忽略这一部分。我是推断统计学的粉丝之一。
当我第一次通过这个 coursera 课程学习时,推理统计学给了我很大的刺激。我想写一写它,但是想知道用一个像温度数据这样的小数据集来展示它是否有趣。在做了一些研究之后,我确信我将要在这里展示的东西会引起人们的兴趣。为什么?那是你看完之后决定的。以下是我认为你会感兴趣的原因。大多数研究从 t-检验/z-检验的公式开始,定义诸如误差范围、z-stat 等术语以及如何计算它们。在这篇文章中,公式出现在最后,所有的困惑都被正面处理。
在阅读任何与统计相关的文章时,很容易感到困惑。我将尽可能地强调混淆点,基于我在道路上混淆的地方(当第一次学习概念时)。
先决条件:
没有推断统计学的先验知识。然而,你应该知道什么是均值、标准差、方差、条件概率、分布函数、正态分布和中心极限定理(CLT)。如果你不知道 CLT,请浏览这个由可汗学院制作的短片或阅读这篇文章。如果你不知道其他条款,请不要马上阅读这篇文章。首先从一个在线课程(Coursera,datacamp,Udacity,任何一个取决于你对什么感兴趣)中学习“描述统计学”,然后回来。这是一个很大的话题,因此我决定写一系列的帖子。这篇文章将有术语介绍。
术语和直觉:
看这张照片。这是您在进行任何样本测试并满怀信心地报告您的发现之前,至少需要了解的内容!!
Image: Drawn by myself
人口:精确分布或汇总统计数字未知的一组数字。 (你只有一些想法,不能称之为“已知”)
例如:全世界人的体温,印度农村儿童的智商,某一种花的萼片长度。你说吧!
样本:来自总体的一小部分。混乱从这里开始。“样本”是一个数字吗?不,这是一组数字。
Taking Sample and Drawing Inferences (Image Courtesy: Google Images)
例如,人类心率的 100 次测量。这是人类心率群体的样本。它不是人口的“样本”。如果您有 3 组不同的 100 个测量值,那么就是人口的 **3 个“样本”。获取样品的过程称为取样。这里的数字 100 是样本量,**通常用 n 表示。通常当取 1000 个大小为 100 的样本时,会有将 1000 混淆为 n 的倾向。
样本不必总是从总体中抽取。也可以从另一个样本中取样!
可以进行采样,
I)无替换:来自总体或原始样本(从中进行抽样)的每个成员在所取样本中只能出现一次。
ii)替换:总体或原始样本(从中进行抽样)中的每个成员可以出现与样本大小一样多的次数。替换取样在开始时似乎有点奇怪。
**样本分布:**样本分布。这通常使用直方图命令绘制(对于 Python 用户,为 matplotlib.pyplot.hist 或 seaborn.distplot)。样本是总体的一个子集,因此,在没有替换的情况下进行抽样时,分布的形状类似于总体分布。然而,我们应该始终意识到这只是一个近似值,因为它是总体的一个抽样版本。当样本量 n 足够大时,这通常足以收集关于总体的大量信息。
**样本中心:**中心指均值、众数或中位数。一个样本的中心靠近人口的中心,这就是为什么我们要取样并试图了解他们的原因。永远记住这篇文章的开头句子。我们的目标是理解/估计未知量,即总体及其参数/统计量。
**样本的离差:**离差可以指以下任何一项:方差、范围值,或通常指距中心的几个标准差。样本分布是总体分布的近似值。仔细阅读下一句话:很多时候,从样本中心估计人口中心(例如:平均值)的公式将需要人口分布(比如标准差)的值,显然这是不可测量的(人口参数是不可测量的),因此在公式中,我们使用样本分布。
还有一个术语叫做抽样分布,也叫 **Bootstrap 分布。**如上图所示,以样本均值作为感兴趣的统计量。
**抽样分布:**我们可以从总体中抽取 N 个大小为 N 的样本,并测量样本统计量。这些测量值的分布称为抽样分布。
这是另一个困惑点。近似总体分布的样本分布和作为测量样本统计量(如均值)分布的样本分布是不同的。
中心极限定理的妙处:回想一下,对于一个正态分布,均值、中位数、众数都是一样的。还记得我们用样本分布代替总体分布。
Image courtesy: Screen capture from coursera inferential statistics course
样本均值的抽样分布(不是总体均值的抽样分布!)理论上是以“人口平均数”为中心的。请注意,测量真实的总体平均值是不可能的。经常(conf)使用*【估计】*样本均值是正常的。这是不对的。样本可用,因此其平均值是**测量值,**不是估计值。这种抽样分布的标准偏差是 n 的平方根的“理论总体标准偏差”。这被称为平均值的标准误差,或 SEM 。
现在,我们如何用 CLT 来从 N 个样本均值中估计总体均值?N 是每个样本的大小,N 是样本的数量。CLT 的有用性来自于这样一个事实,即人们可以通过增加样本大小 n 来提高获得更好估计的机会,即降低估计中的误差。N 越高,正态曲线越平滑,视觉效果越好,但这并不影响估计的理论精度。人们通常很容易混淆 n 和 n。请试用这个免费工具,通过研究不同类型的人口分布和不同的 n 和 n 值来了解 CLT
[## 平均值的中心极限定理
编辑描述
gallery.shinyapps.io](https://gallery.shinyapps.io/CLT_mean/)
我认为触及 bootstrap 也很重要,因为基于 CLT 的人口参数估计不够通用。
Bootstrapping**😗*Bootstrapping 技术在无法应用 CLT 时很有用,因为要么假设不成立,要么我们感兴趣的是统计而不是均值。如果只有一个大小为 n 的样本可用,我们通过复制这个样本来创建更多的样本。要做到这一点,用更换的样品再次进行相同大小(即 n)的取样。注意,如果自举采样是在没有替换的情况下进行的,我们得到的是原始样本本身,这是没有用的。这使我们能够估计人口的任何统计数据,不像基于 CLT 的估计,这只是为了平均。
Bootstrap 分布:假设我们取 N 个这样的样本,称为 **Bootstrap 样本。**测量每个样本的感兴趣的统计量,这种测量被称为“引导复制”。这些副本的分布称为引导分布。N 越大,绘制的分布越平滑。
置信区间和置信水平:我们有这个正态分布,就是样本均值的概率分布(pdf)。就像所有的 pdf 一样,这条曲线下的面积是 1。出于所有计算目的,我们将其视为理想的正态曲线,即围绕平均值对称。
Plot showing P(Sample mean < a) as shaded green area
上述曲线的含义:如果从总体中随机抽取一个大小为 n 的样本,测量样本均值(xbar),xbar 小于某个值“a”的概率为= a(绿色虚线)处垂直线左侧的曲线下面积。理解这一点非常关键。这将有助于理解这篇文章的剩余部分和这个系列的下一篇文章,解释 p 值,假设检验。
假设 xbar 是这条曲线的平均值。样本均值在区间[xbar-b,xbar+b]内的概率就是该区间内曲线下的面积,把这个面积数称为 a .直观地表示出来,
Figure demonstrating the confidence interval corresponding to a confidence level
上界为 1(因为是概率)。 **[xbar-b,xbar+b]是对应于置信水平 A100%的总体均值估计的置信区间。**一种解释方式是,如果从总体中抽取 100 倍的随机样本并测量其平均值,则 A100 倍的平均值预计位于区间[xbar-b,xbar+b]。
对于较大的 A,置信区间较长(较宽),对于较小的 A,置信区间较短。混淆点:置信水平 Vs 置信区间。置信区间是长度和 x 轴的一部分。置信水平为面积,为曲线下面积的部分;在这种情况下,两者之间存在一对一的关系。
z-stat : z-stat 更多时候被看作是一个公式,而不是直观的。z-stat 只是一个用于计算与所选置信水平相对应的标准偏差的实数的别称。**换句话说,要得到一个*100%的曲线下面积,两边要取多少个均值周围的标准差?那是你的 z-stat。**人们经常会混淆 z-score 和 z-stat。z-score 用于(样本的)任何单个数据点,z-stat 用于样本统计。
Image courtesy : Wikipedia
深蓝色是平均值两边的一个标准差。对于正态分布,这占集合的 68.27%(对于 A = 0.6827,z-stat = 1);而平均值的两个标准偏差(中蓝色和深蓝色)占 95.45%;三个标准差(浅蓝、中蓝和深蓝)占 99.73%;四个标准差占百分之 99.994(对于 A = 0.99994,z-stat=4)。z-stat 和置信水平/区间具有 1-1 的关系。陈述其中一个就足以找出其余的。
有人可能想知道我们熟悉的 z-stat 公式在哪里。这是你在想的吗?
如果您有一个带有均值 xbar 和样本标准差的样本,
Formula for z-stat
可以这样想,有一个正态分布,以真实的总体平均值为中心,人们试图找出随机抽取的样本平均值 xbar 位于各种蓝色阴影中的哪个区域。
**误差范围:**使用 CLT 完成所有估算后,如何陈述结果?你知道在我们上面定义的均值估计中有一个标准误差。希望你明白它的意思。那么,它如何转化为真实人口的误差呢?误差幅度对应于一些标准偏差或置信水平。标准差是 sqrt(n)*SEM。可以将结果表述为,“我对总体均值的估计= xbar ± z-stat *样本 std”(回想一下,样本 std 只是总体 std 的一个替代)
这里可能会出现混乱:人口均值估计中对应 A*100%置信度的误差幅度是 b ?否。这通常是我在许多 Python 笔记本中观察到的基于估计值测量总体参数正常范围的错误。事实上 xbar+ b 或 xbar -b 是抽样分布图的 x 轴上的点,而不是人口分布上的点。A100%对应的总体均值的误差幅度实际上会是 xbar ± z-stat sqrt(n)*b,为什么?回忆一下中心极限定理和由此产生的分布的标准差。它是总体的标准差/ sqrt (n)。直观上,真实总体均值的置信区间更宽,因为其标准差是 sqrt(n)倍。(抱歉重复,我认为在统计学研究中,重复和重新措辞有助于概念的强化)
从本质上讲,取样和测量样本均值的整个过程有助于估计总体均值。样本量越大,平均值的标准误差越小,相同 b(相同宽度)的 A(更高置信度)越高。
与机器学习的关系:
以多元线性回归为例。一个是试图拟合一条 n 维直线 y = f(x),其中 f(x) = a0 + a1x1 +a2x2 + …。an * xny 是目标变量,x1 到 xn 是特征,a0 是截距,a1 到 an 是系数。每个特征向量在机器学习中称为一个样本,这个样本类似于上面段落中讨论的样本。这里,f(x)实际上是将特征向量 x 与 y 相关联的真实函数的估计值。f(x)是使用称为训练数据的一组特征来估计的。使用称为测试数据的另一组样本来测试这种线性拟合 f(x)。群体是从中抽取训练样本、测试样本的整个集合,并且群体具有许多我们从未见过的样本(这就是为什么再多的测试也不能保证 ML 算法的性能)。a0 到 an 类似于 xbar。就像 xbar 是作为几个样本平均值计算出来的,a0 到 an 是从总体的几个样本计算出来的。解释机器学习算法基础的书籍也谈到了系数估计的置信区间。现在,你也许能更好地和他们相处。
编辑:1。中心极限定理是理解当构建多个树以形成集合(如在 Bagging 分类器、随机森林等中)时为什么过度拟合(方差)减少的关键。
2.“B”oot spatting 和“Agg”regating 是使它“bagging”的原因。因此,如果一个人理解自举背后的直觉,他会更好地记住 Bagging 分类器及其修改版本 Random Forest。
结论:
希望到本文结束时,一些术语已经很清楚了,我们已经为这个系列的下一部分做好了准备。在下一篇文章中,我将借助 python jupyter notebook 分析的人体体温数据来解释所有这些术语。我还计划引入新的术语,并举例说明假设检验(1 样本,2 样本检验)。在那之前,希望你喜欢阅读这篇文章,并在这里提出问题。我强烈建议做一个谷歌搜索,从多个来源阅读,看看你的理解是否超越了公式。不同的资源有时会有不同的符号,如果你的大脑很清楚,尽管阅读不同的资源,你应该保持清晰。
审查学分
该系列由数据科学社区的活跃人士之一进行审查后发布: Megan Silvey
你可以去我的 github 查看我的数据科学工作。在推特上关注我,听听关于数据科学/机器学习/哲学的偶然想法。如果有任何令人兴奋的合作机会,请给我发邮件到 aparnashastrymls@gmail.com
机器学习入门:几乎没有数学—第 2 部分:感知器
在上一篇文章中,我们让自己熟悉了机器学习中的基本术语。在下面的文章中,我们将学习一些机器学习算法,首先是感知器。我还将介绍更多的概念,当它们开始发挥作用时。
感知器
感知器是一种受人类神经元启发的构造。它有一组输入通道、一个细胞体和一个细胞输出。感知器是一个二元线性分类器。它只能产生线性决策边界。
让我们试着一个一个来看术语 :
- **线性分类器:**任何可以对线性可分数据进行分类的分类器,即可以通过线性判定边界进行分离的数据。
Decision boundary in 2 dimensions.
- **决策边界:**决策边界是一个假想的边界,可以分隔不同类别的数据点。
- 线性判定边界:在 2 维中(对于 2 个特征),它是一条直线,在 3 维中(对于 3 个特征),它是一个平面。很难想象 3 维以上的超平面。对于给定的数据集,可能有一个以上的决策边界。
Decision boundary in 3 dimensions.
我们将试图理解作为分类器的感知器的结构和工作原理。
考虑这样一种情况,我们想要预测在给定的十字路口是否会发生事故。我们从交通部门获得了关于在给定的交叉路口过去事故的数据。
每个例子都有一些特征,包括车速、雨的强度、红灯是否亮着,以及出于某种奇怪的原因,那个地区的冰淇淋价格。
下面是一个简单感知器的架构:
- **权值:**权值是感知器的型号 参数 。它们代表了与每个特性相关的重要性。通常,当模型被初始化用于训练时,这些是随机化的。
- **求和:**所有特征值加权求和的结果。
- 激活函数:一个数学函数,帮助理解从求和(或任何先前的一组运算)中获得的单个值。例如,如果求和后的最终值大于 0.3,则该模型将预测事故。对于下面的示例,我们将阈值设置为 0.3。
如果激活函数值>为 0.3,则事故发生
训练感知器
当输入数据被输入到模型中时,根据权重对其进行加权、求和并通过激活函数,激活函数根据阈值给出输出。
让我们将第一个数据点传入感知器。最初,权重值是随机的(或者可以设置为任何指定值)。为了便于理解,我们将假设所有数字数据都在 1 到 5 的相似范围内:
RANDOM WEIGHTS TO START WITH
在上图中,模型对汽车速度给予了更多的权重,其次是冰淇淋价格,然后是红灯,然后是雨。
由于冰淇淋价格被赋予了更大的权重,并且它在我们的输入中的值很高,因此该模型将主要基于冰淇淋价格进行预测。
让我们假设该模型基于给定的输入给出了 0.5 的输出值。给定我们的阈值 0.3,模型将预测导致事故的输入。
(输入*权重)之和= 0.5
激活阈值= 0.3
0.5 > 0.3,因此会发生事故。
但是从输入标签上,我们知道它不会造成事故。在产生的值中存在 0.2 的误差,并且该信息需要被反向传播到模型中,以便它可以更好地执行。
反向传播
在这个过程中,预测中的任何错误都被发送回模型,以便它可以更新其权重,从而在看到的下一个样本中做出更好的预测。有不同的方法可以在权重之间分配误差,其中一种常见的方法称为随机梯度下降。这些方法被称为优化算法。
遵循优化算法,模型现在更新与冰淇淋价格相关的权重。
WEIGHT OF ICE CREAM PRICE DECREASES
当看到越来越多的例子时,它最终赋予冰淇淋价格 0 的权重,从而意识到这个特征在决定情况的结果中不起作用。
WEIGHT FOR ICE CREAM PRICE ULTIMATELY REDUCES TO 0
模型没有必要只从输出为“是”的例子中学习。可能会有这样的情况,当冰淇淋价格低时,模型预测为否,而当冰淇淋价格高时,模型预测为是。在这种情况下,模型也将通过增加冰淇淋价格的权重来学习。
在这一切发生的同时,与其他特征相关联的权重也在同步更新。因此,如果误差为 0.2,并非所有权重都会更新 0.2,而是根据权重对结果的影响程度,由所有权重共享 0.2。为了简洁起见,上面的例子只显示了一次更新一个权重。
类似于去掉一个特征,如上所述,模型也能理解哪些特征应该被赋予更大的权重。对于汽车速度高和/或雨水多的情况,随着看到越来越多的例子,模型将慢慢赋予这些权重更多的值。
WEIGHT FOR RAIN INCREASED
对于具有数值的特征来说,所有这些都没问题,但是对于具有“是”或“否”等值的分类特征来说,情况又如何呢?嗯,我们把它们转换成数字形式!
虚拟变量/一个热编码
虚拟变量实际上是虚拟变量,用来代替分类变量。单个分类变量被分成与类别数量一样多的虚拟变量。
因为红灯可以有两个值,是和不是,所以有一个虚拟变量,假设是。因此,如果值为 YES,虚拟变量的值将为 1,否则为 0。
DUMMY VARIABLES FOR 2 CATEGORIES
是/否将变成 YES_dummy = 0 或 1,NO_dummy = 0 或 1。如果 YES_dummy = 0,NO_dummy = 1,则类别为 NO.
如果有三个值,是,否和也许,那么我们可以用两个虚拟变量来表示它们。如果我们仍然在虚拟世界中保留是和不是,那么我们可以忽略也许。可以对任意数量的值进行类似的操作。
DUMMY VARIABLES FOR MORE THAN 2 CATEGORIES
YES /NO /MAYBE 将变成 YES_dummy / NO_dummy,每个值为 1 或 0。
如果 YES_dummy 的值为 1,那么是。如果 NO_dummy 的值为 1,则 NO.
如果 YES_dummy 和 NO_dummy 都为 0,则值必须为 MAYBE。
因此,当前类别的值为 1,其余都为 0。
在我们的示例中,我们将分类特征转换为两个虚拟变量,YES_red、NO_red,每个变量的值为 0 或 1。
CONVERTING INTO DUMMY VARIABLES
正如您可能已经想到的那样,将分类变量转换为数字变量的过程甚至需要在训练开始之前或构建模型之前完成,以便权重和输入的数量是适当的。
现在,在查看了许多例子之后,这个模型得出了以下权重:
TRAINED MODEL
看重量 we,或者模型,可以说车速高,下大雨,车在红灯的时候,发生事故的几率更大。也许在这种情况下汽车不会那么容易抛锚,谁知道呢?!
没有必要所有的权重都是正的。有些要素的高值会对结果产生负面影响。假设有一个新的功能制动等级,制动等级越高,汽车在潮湿条件下的制动性能越好。
WEIGHTS CAN BE NEGATIVE AS WELL
有些例子可能会误导模型。像是下了高雨高速却没出事的情况。这被认为是数据中的异常值,在训练时应该会遇到。这就是为什么在该算法中更多的训练数据会产生更好的结果,因为模型将会看到更多的数据来进行推断,并且可以防止过度拟合离群值,从而更好地进行概括。
过度拟合
过度拟合不好!这是模型学习预测几乎所有定型示例的情况,即使它们是异常值。如果它学会正确预测所有的例子,那有多糟糕?如前所述,它学习预测所有的“训练”例子。我们为它创建一个 ML 模型,用于新的例子,而不是训练数据。训练数据不代表所有可能数据的一般分布。当模型过度拟合时,它可以很好地预测所有的训练样本,但不能正确预测任何其他测试样本;正是为其创建模型的任务。
正如我们在之前的帖子中看到的,并非数据集中的所有点都位于训练好的模型上,可能有一些点靠近线但不在线上。在过拟合的情况下,直线会通过几乎所有的点,从而失去泛化能力。
欠拟合
不合身也不好。这是模型无法“适应”数据集的情况。换句话说,该模型未能从提供的数据中获得足够的信息。
这张来自 scikit-learn 网站的图说明了过度拟合和欠拟合会发生什么:
OVERFITTING AND UNDERFITTING (Scikit-Learn)
理解是什么导致了过度适应和欠适应是很重要的,但是我将在以后的其他文章中讨论这个问题。
测试模型
正如在上一篇文章中所讨论的,我们假设测试数据将来自与训练数据相同的分布。根据在美国获得的历史数据,这个模型很难对英国的事故做出预测。
训练数据和测试数据
从手头的数据来看,我们将它按一定的比例分割,这样大部分数据可用于训练,大约 70%和 30%。我们不在我们拥有的全部数据上训练,因为我们需要一些数据来测试模型的效率。由于测试数据需要来自同一个分布,最好从我们拥有的数据中进行分割。如果在训练阶段将测试数据暴露给模型,它可能会在那里学习一些示例,并总是正确地预测它们,从而挫败了泛化的预期目标。重要的是要确保模型不能访问测试数据,除非它已经过令人满意的训练。
现在,当我们的模型已经学习了与所有特征相关的权重时,我们可以传入新的样本,我们不知道的标签,并让我们的模型正确地预测它们!
以下是我们在本文中涉及的一些概念的列表:
- 感知器
- 线性分类器
- 判别边界
- 砝码
- 激活功能
- 感知器的训练
- 反向传播
- 虚拟变量/一个热编码
- 过度装配和装配不足
- 培训和测试数据
同样,这里涵盖的概念是淡化的版本。维基百科上关于感知器的文章很好地介绍了相关的数学和其他一些复杂的概念。我将推荐吴恩达在 Coursera 上的机器学习课程,以及深度学习课程,对这些主题进行深入的数学展望。
机器学习之旅
你会让人工智能代表你做决定吗?—如果是的话,那么到什么程度,可能你的人生就靠它了。随着所有关于人工智能的讨论和对其监管的呼吁(显然人工智能有一天会杀死我们所有人),我一直在思考在什么情况下我们可能会从机器(称之为人工智能)那里拿走决策权。但是我们仍然(尽我们所能)利用它们——这并不像听起来那么疯狂,因为人类已经这样做了很多年。它无处不在,我们无法回避它会一直存在的事实。
Source — https://www.reddit.com/r/memes/comments/8s6wq1/terrifying_artificial_intelligence
从苹果个人助理 Siri 令人难以置信的友好声音,到《前玛奇纳》这样的电影,al 总是比任何其他东西都更让我兴奋。我不知道你怎么想,但是网飞可以根据你对以前看过的电影的反应来预测电影的推荐列表,这个想法听起来很吸引我。有一天,不知从哪里我在 Youtube 上看到了 Siraj Raval 的一个视频,他在视频中谈到了一个叫做#100DaysOfMLCode Challenge 的东西。这意味着在接下来的 100 天里,每天至少花一个小时来编码和学习机器学习。我强烈推荐看一下视频。
这正是我开始深入学习我一直关心的东西所需要的动力。所以我接受了这个挑战,开始学习机器学习。
从最基本的算法开始,用 Python 语言实现它们。
为了对我所学的一切有一个好的日志,我在 GitHub 上创建了一个知识库。我强烈建议你也这样做。随着我不断学习关于 ML 的新东西,我也用实现 ML 算法的代码和一些信息图更新了库,以便更好地理解。
Some of the Infographics
我收到的关于这个库的回应非常热烈,至少可以说,我没有预料到这一点。人们一直在社交媒体的各个角落支持我,这无疑让我感到谦卑,我想借此机会感谢所有为我付出宝贵时间的人。
Checkout My Repository
数字在这里无关紧要,因为我这样做不是为了名声或任何知名度。我这样做是因为我想这样做,我关心它,我相信我可以有所作为。
K — Nearest Neighbor Info graphic
综上所述,我认为我现在只是在学习,在这个快速变化和不断发展的世界里,我认为你永远不会真正完成学习。这只是一个很大的学习曲线。说实话,目的地还不在这里,我甚至还没有接近。但是我知道我的道路是正确的,我的思想集中在实现我渴望做的事情上。因此,我想挑战现在正在阅读这篇文章的每一个人,来加入我的旅程,参加#100DaysOfMlCode 挑战
,开始每天的工作。
如果你对人工智能领域不感兴趣,这不是问题也不是借口,找一些你关心的事情,一些感觉不像工作的事情,一些你可以奉献一生的事情。莱斯·布朗曾经说过,“要想在生活中取得任何有价值的成就,你必须要有饥饿感。”渴望成功,追随你的梦想,看着它们成为你的现实。
和我一起开始这段旅程,也许有一天我们会一起到达一个点,在那里我们可以实现我们的梦想,你知道去哪里。
从下面的链接关注我在#100DaysOfMLCode 上的工作—
GithubLinkedInTwitter网站
感知器:什么、为什么和如何
如果有一天我们会告诉我们的曾孙们人工智能的故事,它也许应该从感知机开始。
生物学导论
神经元是一种电可兴奋细胞,通过电信号和化学信号接收、处理和传输信息。
Very simplified diagram of a neuron
信号通过连接神经元的轴突在神经元之间传播。这种连接发生在发射神经元的轴突末梢和接收神经元的树突之间,在一种称为突触的结构中。
当一个神经元处于静止状态时,即它没有接收到任何信号时,它会受到一个静止电位的影响,该电位平均在-70 毫伏左右,并且与神经元内外的电荷差有关。
当一个细胞发出电 脉冲时,一个与之相关的电位通过轴突传播。叫做动作电位。
The action potential propagates through the axon
最终,动作电位到达神经元,在那里,电压迅速变化。如果它的值大于某个阈值,所谓的触发过程被触发,包括从神经元本身发出信号。
不存在部分发放,即当电位达到阈值时,神经元发放一个强度与接收到的电信号无关的电信号。
Illustration of the electrical chemical signal crossing a synapse. (Andrii Vodolazhskyi via Shutterstock)
关于接收电信号的强度,要提两点:
1。当神经元接收到一个或多个信号时,它所经受的电位变化由所接收的动作电位的总和给出。
2.通常,从神经元 N3 接收的信号强度与从该神经元发送的信号强度不同:当通过轴突传播时,强度会根据覆盖轴突的髓鞘的厚度而变化。它越厚,信号的色散越小。
生物神经元的数学模型
我们可以用一个非常简单的数学模型来形式化这个过程。我们将为上一段中用粗体显示的每个术语分配一个变量:
- 神经元从 N 个不同细胞接收到的电脉冲由 N 维向量 x ,输入向量描述。
- 静止电位为 阈值 。如果接收到的动作电位之和达到阈值,神经元就会放电。我会用字母 b 表示阈值,有时候阈值叫做偏差。
- 携带电脉冲的轴突的髓鞘越厚,接收的强度越高。事实上,髓磷脂是一种绝缘体,它有助于电脉冲的传导,减少其向新神经元的扩散。乘法因子,代表覆盖连接两个神经元的轴突的髓鞘厚度,在我们的模型中由参数 w 表示,称为 权重 。如果我们考虑神经元在每个时间步长通过 N 个不同的轴突接收 N 个脉冲的模型,我们得到 N 个权重的向量, w 。
- 加权输入和偏置之和有时被称为感应局部场,我们将用字母 v 表示:
v=w∙x*+b* - 神经元的输出表示激发信号的强度,用 y 表示。它是 v 的函数(T21 激活函数)
感知器的架构
概括一下:一个神经元接收一个 N 维输入 x ,用权重向量 w 加权。如果诱发的局部场,v=w∙x*+*b,等于或大于零,那么神经元发射一个固定强度的信号,我们说 1。否则,它不会,这意味着发射的强度为 0。
我们可以用一个简单的公式将其形式化,使用 Heaviside 阶跃函数θ作为激活函数:
我把 w 和 b 放在分号的右边,以区别于 x :其实前者是参数,后者是输入向量。
让我们用 Python 实现这个函数:
未完待续——深度学习药丸
这是关于深度学习系列文章的第一篇,我称之为 深度学习药丸 。在下一集里,我们将看到感知器能解决什么样的问题,它是如何学习的,以及它的局限性是什么。我将很快发表,敬请期待!
还有,可以随时在 Linkedin 和 Quora 上和我联系。
如果你喜欢这篇文章,我希望你会考虑鼓掌或评论:)
很快再见,弗兰克
认为机器学习和人工智能不会影响你的网络产品——再想想吧!
使用 ML 和 AI 作为力量倍增器将是网络产品团队的重要竞争优势
Photo by Hitesh Choudhary on Unsplash
机器学习和相关技术在过去几年里取得了巨大的进步。虽然有时人们可能会觉得这个领域有很多宣传,但很明显,这些方法将对每个垂直领域的软件产生深远的影响,包括网络、存储、安全、软件开发等领域的产品。以下是 AI/ML 技术目前在网络产品中创造重大价值的几个领域:
模式识别
机器学习是识别网络流量模式的一个很好的工具,例如自动基线。负载平衡器或防火墙在处理流量时,可以使用 ML 算法来获取应用程序的每周/每月访问模式,并根据这些模式为数百个指标创建自动基线。这可用于性能分析以及获得安全见解。然后,开发运维团队可以进一步将其与 CI/CD 链结合起来,以实现更智能的蓝/绿部署。
异常检测
当流量流经网络时,ML/AI 技术可以在访问应用程序的方式中发现异常,然后实时吸引运营商对这些异常的注意。有了足够的信心,他们甚至可以采取缓解措施,如通过进一步的重型清理发送传入流量,例如通过 Web 应用程序防火墙。
网络最佳化
网络结构可以被建模为具有许多配置和运行时间变量的大型复杂系统,这些变量然后影响单个应用从网络获得的服务水平(QoS /性能)。人工智能可以随着时间的推移了解不同的配置参数、网络设计和流量模式如何影响网络服务。在此基础上,它可以提出改进服务质量的建议,就像网络架构师一样。例如,它可能会建议在两个交换机(以太信道)之间的中继上添加更多链路,添加更多交换机,或更改 BGP 权重以不同方式路由流量,等等。
下面是一篇关于谷歌如何利用 AI 优化数据中心的文章:https://deep mind . com/blog/deep mind-AI-reduces-Google-data-centre-cooling-bill-40/。来自文章:
“由于该算法是理解复杂动态的通用框架,我们计划将其应用于数据中心环境中的其他挑战”
我敢打赌,他们已经应用了类似的技术来优化网络服务。
转发路径简化
大多数网络产品本质上都是一个庞大的数据结构,与快速查找结合在一起。网络中 CRUD(创建/读取/更新/删除)操作的最佳数据结构通常是大规模快速查找索引。在过去的几十年里,这个领域已经有了大量的研究。
但是 ML 能帮助想出更好的方法来进行这些查找吗?也许使用神经网络作为散列函数?有一些有趣的论文将这一系列应用到数据库领域,但是毫无疑问,应用到网络领域也能带来重大突破…
顺便说一句,这里有一篇由蒂姆·菲利普·克拉斯卡(麻省理工学院)和亚历克斯·比特尔及其谷歌团队撰写的有趣论文:https://www.arxiv-vanity.com/papers/1712.01208v1/:
“…我们从这个前提出发,假设所有现有的索引结构都可以用其他类型的模型来代替,包括深度学习模型,我们称之为学习索引…”,
“…通过使用神经网络,我们能够在速度上超过缓存优化的 B 树高达 70%,同时与几个真实世界的数据集相比节省一个数量级的内存…通过学习模型替换数据管理系统的核心组件对未来的系统设计具有深远的影响…”
由于 ML/AI 的应用,这些只是跨堆栈、有线和无线、L2/L3 和应用层的网络产品实现“超能力”的几种方式。然而,并不是每个产品都能实现这种转变。为不同时代设计的产品通常处理能力不足,很少或没有遥测功能,这意味着它们既不能收集所需的数据,也不能处理数据以获得见解。真正创新的产品将来自对传统网络产品的自下而上的重新设计,这样,该体系结构支持大规模的数据收集和数据分析。能够做到这一点的产品和平台将为自己在市场上创造显著而持久的竞争优势——尤其是在设计时考虑了网络效应。
我期待着这一领域的持续创新——激动人心的时代!
然而,并不是每个产品都能实现这种转变。为不同时代设计的产品通常处理能力不足,很少或没有遥测功能,这意味着它们既不能收集所需的数据,也不能处理数据以获得见解。
网络抓取是如何通过它的应用改变世界的
猜猜看,设想新公司的企业家、财富 500 强公司的首席执行官、股票分析师、营销人员和记者之间有什么共同点?
嗯,他们都是从数据中得出自己的策略和见解的!
数据是新的竞争优势。
它是市场研究和商业战略的核心。
无论您是想开始一个新项目,还是想为现有业务制定一个新战略,您都需要访问和分析大量数据。这就是网络抓取的用武之地。
你可能会认为网络抓取对一两个特定的行业有用。它与不同的行业有什么关系?
别担心!
我们收集了不同行业中网络抓取应用的完整列表。
然而,在我们深入研究之前,让我们先快速了解一下网络抓取。
什么是网页抓取?
比方说,数据对你的电商公司至关重要。你可以在竞争对手的网站上看到这些数据。
问题是你如何以一种可用的格式下载它?
大多数人只能手动复制和粘贴它。但是对于几百页的大型网站来说,这样做是不可行的。
这就是网络抓取发挥作用的地方。
网页抓取是一个高效快速地自动提取数据的过程。在网络抓取的帮助下,你可以在你的电脑上从任何网站提取数据,不管数据有多大。
此外,网站可能有你不能复制和粘贴的数据。网络抓取可以帮助你提取任何你想要的数据。
这还不够。比方说,你复制并粘贴了一些数据,但如何转换或保存成你选择的格式?
网络抓取也能解决这个问题。当您在网络抓取的帮助下提取网络数据时,您将能够以 CSV 等格式保存数据。然后,您将能够以您想要的方式检索、分析和使用数据。
因此,web scraping 简化了提取数据的过程,通过自动化加快了提取速度,并通过以 CSV 格式提供废弃数据来创建对废弃数据的轻松访问。
简而言之,网络抓取省去了你手动下载或复制任何数据的麻烦,并使整个过程自动化。
以下是网页抓取应用列表:
零售和制造业中的网页抓取应用:
Photo by Roberto Cortese on Unsplash
在这一部分中有许多网页抓取的应用,这些应用可以细分为以下不同的类别:
竞争对手价格监控
- 在这个电子商务时代,价格起着关键作用。你需要跟踪竞争对手的定价策略。
- 然而,手动跟踪价格并不是一个可行的选择。此外,价格时不时会发生变化。因此,手动跟踪价格几乎是不可能的。
- 这就是网络抓取的用武之地。它自动化了获取竞争对手价格的过程,并让您了解竞争对手部署的新定价策略。网络抓取可以在任何时间内完成,次数不限。
监控地图合规性
- 制造商需要密切关注零售商是否遵守最低价格。
- 然而,不可能访问每个网站并检查相同的内容。网络抓取在这里拯救了他们。
- 在网络抓取的帮助下,制造商可以轻松有效地监控地图符合性。他们不需要花费大量的时间就可以做到,因为网络抓取可以以闪电般的速度产生这些数据。
获取图像和产品描述
- 从不同的制造商手动获取图像和产品描述将是一场磨难。
- 网络抓取可以让这变得很容易。它使整个过程自动化,并立即提供图像和产品描述。
监测消费者情绪
- 有必要对消费者情绪进行跟踪分析。它是通过审查消费者的反馈和不同企业的评论来完成的。
- 然而,手动获取不同网站的所有评论是不可行的。
- 因此,网页抓取被用来使它变得非常简单。通过网络抓取,你可以在一个电子表格上获得所有的评论,甚至可以根据关键词比较不同的评论。
股票和金融研究中的网络抓取应用
这是一个广阔的领域,网络抓取的应用令人难以置信。看一看:
综合新闻文章
- 在金融和保险领域,新闻是洞察力的重要来源。但是,不可能手动阅读每一份报纸和每一篇文章。
- 因此,网络抓取被用于从不同的新闻故事、标题等中提取有价值的输入。将它们转化为可操作的投资见解。
市场数据汇总
- 虽然互联网上有很多市场数据,但它们分散在成千上万个网站上。
- 你可以搜索和浏览搜索结果,但这太费时间和繁琐。
- 网络抓取用于从不同的网站抓取数据,并从这些网站收集关于股票研究的可操作的情报。
提取财务报表
- 分析师需要财务报表来确定一家公司的健康状况,并就是否投资该公司向客户提出建议。
- 然而,手动获取数家公司多年的财务报表是不可能的。
- 网络抓取工具用于从不同网站提取不同时间段的财务报表,以供进一步分析,并基于此做出投资决策。
保险
- 越来越多的趋势是研究替代数据以确定风险等。保险公司设计他们的产品和政策。
- 但是他们不可能通过手动复制或存储来利用这些数据。
- 因此,保险公司利用网络搜集来搜集替代数据,并做出关于保险产品和政策的决策。
数据科学中的网络抓取应用
Photo by Franki Chamaki on Unsplash
实时分析
- 实时分析简单地说就是在数据可用后立即进行分析。它不同于批处理式分析,因为批处理式分析可能需要数小时或延迟来处理数据和产生见解。
- 相比之下,实时分析可以毫无延迟地产生见解。
- 金融机构使用实时分析进行信用评分,以决定是否延长信贷或停止信贷。
- 客户关系管理(CRM)是如何利用实时分析来优化客户满意度和提高业务成效的一个显著例子。
- 实时分析也用于销售点,以便检测任何类型的欺诈。在零售商店中,在激励等方面处理个人客户时,实时分析开始发挥作用。
- 正如每个示例所示,实时分析依赖于处理大量数据。当且仅当大量数据能够被非常快速地处理时,实时分析也能以一种无障碍的方式工作。
- 这就是网络抓取派上用场的地方。如果不能快速访问、提取和分析数据,就不可能进行实时分析。
预测分析
- 预测分析是分析现有数据的过程,目的是找出模式并预测未来的结果或趋势。预测分析不能准确预测未来,但它是关于预测可能性的。
- 除了其他领域,预测分析在商业领域也有应用。预测分析用于研究和了解客户行为、产品和各种其他事物,以计算出风险和机会。
- 然而,显而易见,这是一种基于大量现有数据的分析。
- 这就是为什么网络抓取变得越来越重要,因为它可以提取和提供大量的数据,这些数据以后可以用于预测分析。换句话说,网络抓取对于预测分析是至关重要的。
自然语言处理
- 自然语言处理是使机器能够解释人类使用的自然语言的过程,这不同于诸如 Python 等计算机语言。
- 情感分析是自然语言处理的一个显著用例。数据科学家使用社交媒体上的评论来处理和评估特定品牌的表现。
- 顾名思义,机器需要访问大量数据,NLP 的任何应用程序才能工作。
- Web 抓取是少数几种有效的方式之一,可以抓取与社交媒体评论或其他任何可用格式相关的数据。因此,随着自然语言处理的重要性日益增加,网页抓取也变得越来越重要。
机器学习训练模型
- 机器学习基本上意味着我们向机器提供数据,让它们自己学习和改进,而不必使用任何显式编程。
- 网络是这类数据的理想来源。通过训练机器学习模型,我们可以让它们执行不同的任务,如分类、聚类、属性等。
- 然而,只有当高质量的数据可用时,机器学习模型才能被训练。Web 抓取用于提取这些数据并使其可用于机器学习训练模型。
风险管理中的网络抓取应用
Image by mohamed Hassan from Pixabay
- 在商业中,当你雇佣员工或与新客户打交道时,会有一些风险。人们不能忽视风险而没有任何风险管理策略。
- 因此,企业通常会对新员工、客户或顾客进行背景调查。然而,考虑到这意味着检查几个不同的数据来源,如新闻报道和新闻文章、制裁名单、公司登记册、法律数据库、被取消资格的董事名单、破产登记册、财务登记册和许多其他资料,这可能是一项耗时而乏味的工作。
- 任何个人都不可能手动完成背景调查。因此,利用网络抓取工具从上述来源快速提取数据并进行处理,以完成背景检查。
产品、营销和销售中的网络抓取应用
Photo by Campaign Creators on Unsplash
数据驱动的营销
- 数据对于任何营销和销售工作都是必不可少的。这没什么新鲜的。然而,获取数据有时是区分两个营销者的东西。网络搜集可以使数据可用于制定策略。
内容营销
- 当谈到内容营销时,网络抓取用于整理来自不同网站的数据,如 Twitter、Tech Crunch 等。然后,这些数据可以用于创建引人入胜的内容。如你所知,吸引人的内容是业务增长和网络流量的关键。
线索挖掘
- 就潜在客户的产生而言,许多公司不得不花费大量资金来获得海外潜在客户。这可能会花掉你一大笔预算。取而代之的是,网络抓取现在被用来直接从不同的来源抓取数据并产生线索。
- 通过这种方式,可以以较低的成本产生高质量的销售线索,并且可以将预算用于其他重要的事情。
竞争分析
- 说到竞争分析,很难从不同的网站获取你需要的所有数据,以便对你的竞争对手进行比较和了解。
- 手动执行不仅耗时,而且效率低下,因为您可能无法准确获取数据。在这个充满竞争的世界里,速度和准确性就是一切。
- 相反,网络抓取现在已经改变了这个领域,并通过快速获取数据和促进竞争分析提供了一个更有效的替代方案。以这种方式,网络搜集被用于自动化数据提取和竞争分析。
搜索引擎优化监控
- 嗯,搜索引擎告诉我们很多关于商业世界是如何运动的。内容如何在排名中上下移动也是一个人如何在这个互联网时代茁壮成长的关键。
- 人们可以研究内容在互联网上的工作方式,并从中获得见解和策略。
- 但是,手动无法完成。因此,越来越多地使用网络抓取工具来抓取关于搜索引擎幕后发生的事情的数据。网络抓取可以增强你对搜索引擎优化内容的理解,并为搜索引擎优化提供可操作的情报。
信誉监控
- 了解顾客对你和你的品牌的感受是至关重要的。你可以有一个模糊的想法,但提供一个基于数据的帐户可能是困难的。
- 然而,网络抓取工具已经变得如此复杂,以至于它们现在能够立即从网站上提取客户评论和其他输入,并且非常容易地促进品牌或声誉监控。一些公司使用网络抓取来了解客户的观点并更好地为他们服务。
其他使用网页抓取的行业
很难列出所有可以利用网络抓取的东西,因为它的应用现在正被用于几乎所有已知的人类交易。无论是慈善事业还是新闻业,网络抓取都可以做出实质性的贡献。这里有一些其他的行业或领域,网络抓取已经找到了它的应用。
新闻和声誉监控
- 为了跟踪有关个人、产品或公司的信息,新闻搜集是非常有用的。
- 网络抓取是这一过程中不可或缺的一部分,因为它可以快速有效地从不同来源的新闻中提取数据。
- 然后可以处理这些数据,以便根据需要收集见解。因此,它还可以跟踪一家公司的品牌和声誉。
学术的
- 学术界很大程度上依赖于数据。学术工作主要围绕着这样或那样的信息。
- 无论是教学任务还是研究项目,学者们都必须掌握数据,然后对其进行处理,以得出必要的见解。
- 网络搜集现在使得他们提取和处理他们需要的数据变得极其容易。
数据新闻
- 顾名思义,这是一种使用数据支持新闻故事的新闻业。
- 信息图或图表的使用是如何将数据编织到这些故事中的典型例子。
- 数据之所以对他们如此重要,是因为数据为故事中的论点和主张提供了可信度。
- 它也是有用的,因为它使读者能够以可视化的方式理解复杂的主题。
- 网络抓取在这里很方便,因为它首先使数据可用,并使记者能够通过创造性地使用数据来产生影响。
非营利组织
即使在非营利组织的情况下,他们也需要数据来确定他们的使命和推进他们的工作。网络抓取工具可以很容易地提取他们需要的数据,以计算出他们的目标和结果,这样他们就可以在他们崇高的项目中前进。
雇用
- 你有没有注意到的求职公告栏上满是与职位相关的数据?你有没有想过数据是从哪里来的?
- 工作公告板使用爬虫抓取不同的网站,抓取关于新的工作发布的信息。职务公告板收集诸如职务公告、公司简介、职务说明和员工简介等信息。
- 这使他们能够提供有关职位发布的信息,并将求职者与雇主联系起来。网络抓取使这一切成为可能!
分类网站的搜索引擎
- 有一些网站充当汽车分类广告的搜索引擎。访问者可以在网站上搜索具体的汽车品牌和型号。
- 但是,不可能手动获取此类数据。利用网络抓取工具来抓取和提取不同车辆的技术规格。
- 这些数据随后会在网站上供访问者搜索和访问。
结论:
随着互联网的飞速发展,企业越来越依赖于数据,获取每个特定主题的最新数据已经成为一种必然。
无论是企业还是非营利组织,数据都已成为所有决策过程的基础。因此,在当代,网络抓取在每一个值得注意的领域都有应用。
越来越明显的是,那些将创造性地和先进地使用网络抓取工具的人将会领先于其他人并获得竞争优势。
因此,利用网络抓取,在你选择的努力领域提升你的前景!
是什么推高了利率?
利率是一种极其强大的金融工具;一方面,它们有创造机会和促进增长的潜力,但另一方面,它们也可能造成沉重的债务、数万亿美元的泡沫,并摧毁它们本应服务的经济体。
但是为什么贷款利率会有如此巨大的差异呢?真正的潜在因素是什么?让我们利用数据科学的力量来探索 Lending Club(美国最大的贷款人)—贷款数据集,以找到满意的答案。
分析 Lending Club 发放的贷款
www.kaggle.com](https://www.kaggle.com/wendykan/lending-club-loan-data)
贷款金额:
不出所料,随着贷款规模的增加,贷款利率也会上升,以适应与贷款相关的风险增加。然而,我们注意到低利率和中低贷款利率相对相同。
期限:
这张图表清楚地表明,期限越长,利率越高。这可能与短期贷款通常涉及较小的贷款金额这一事实直接相关。
等级:
为了解释贷款等级的含义,这里有一段瑞恩·高斯林在《大空头》中解释贷款等级及其区别的片段:
The Big Short — (2015)
简单来说,贷款等级是一个公式的结果,它不仅考虑了信用评分,还考虑了来自信用报告和贷款申请的几个信用风险指标的组合。A 的风险最小,G 的风险最大。因此,我们可以理解为什么 A 级贷款的利率最低,而 G 级贷款的利率最高。
目的:
这张图表具体显示了贷款的目的如何影响其利率。小企业有最高的利率,这可能是因为他们失败和取消贷款的几率最高。另一方面,信用卡的利率最低。
房屋所有权:
与其他住房来源相比,自有住房对贷款利率的影响很小。然而,没有住宿来源增加了兴趣。不出所料,成为沙发冲浪者或无家可归者会大幅提高利率。
很明显,贷款利率是由非常复杂的系统估算的,这些年来,这些系统不断发展,以尽量降低为金融机构提供贷款的风险。然而,这些系统仍然不是最佳的,并且在将来仍然可以添加许多新的因素来改进它们。既然我们已经用数据科学的力量回答了我们的问题,也许我们也可以用它来发现这些因素是什么!
如何实现你的想法的全部潜力?
这个想法会带你去月球。还是注定永远离不开发射台?知道一个想法是好是坏真的很难。但是,不要绝望!有了合适的工具,你就能实现你想法的全部潜力。
早期的挫折
我自己的想法冒险始于我读博士的时候。我发现我天生有很多想法,问题是它们大多都很糟糕。更糟糕的是,我花了很长时间才发现每个想法有多糟糕。结果,在最终意识到这些想法都是无用的之前,我花了几个月的时间跟踪它们。
当我最终完成博士学位并加入英国政府时,我发现情况大同小异。在这两个地方,我都在寻找辨别哪些想法是有成效的,哪些想法是垃圾的方法。
Some ideas are easier to are easier to discern than others!
原来不只是我!其他每个人似乎都同样绝望。在学术界,我看到人们追求早已不可信的观点。在政府中,我看到人们建立没人想要的系统。
我的大主意
我的职业生涯即将彻底改变。我有一个想法,一个我坚信会改变我工作的行业的想法。这很疯狂,很奇怪,我想这可能只是关于工作。
我开始和每一个愿意倾听的人交谈。这个想法不断发展壮大,但我仍然无法获得资助。9 个月后,我打算放弃它。我还有一次会议,一个朋友推荐我和里奇·波特坐下来谈,他负责一个内部孵化器项目。
我与 Rich he 的第一次会面就立刻喜欢上了这个想法,并暂时接受我进入孵化器流程,解释说在向高级利益相关者进行最终推介之前,我将有 6 周的时间来建立我的案例。他还向我介绍了一个叫做精益的概念,并推荐我读一本由 Eric Ries 写的叫做精益创业的书。我在周末如饥似渴地阅读了这本书,我的职业生涯从此改变。
“精益方法”
The Build-Measure-Learning Cycle. (used courtesy of JODY OWEN)
这本书解释了颠覆传统模式的“精益方法”。本质上,无论你认为什么,都是最有可能让你的想法落空的事情,先去检验它。然后找出一个度量标准来衡量你的测试是通过还是失败。然后构建最小最简单的东西来获取测试数据。这就是所谓的构建-测量-学习循环。
我现在有了测试我的想法的框架,也有了我的训练场——孵化器——在这里我可以学习精益所能提供的一切。
测试,测试,更多的测试
在“鲨鱼池”式的资源推介之前,我有 6 周时间,所以我需要快速行动。我发现精益的早期先驱之一史蒂夫·布兰克(Steve Blank)会在这个小组里(大口)。
运用精益,我完全适应了我处理问题的方式。我查看了我收到的所有批评,以及我自己对什么可能扼杀这个项目的担忧,并开始对它们进行排序,将风险最大的假设放在列表的首位。
然后我开始做实验。目的是了解这些假设是否可以被测试并失败,这样我就可以改变想法或者完全放弃它。
一个示例实验
这是我的一个实验的例子,然而,它是我从事的许多早期实验的特征。
当时,该项目的最大风险之一是项目完成后,工程部门不会支持该平台。这是过去我和其他人的许多项目的结尾。因此,我想先设计一个实验来验证这一点:
- 假设/断言(学习):工程愿意在平台建成后支持它。
- 测试(衡量):如果孵化器成功支持平台,工程总监是否会书面承诺。
- 实验(构建):与工程总监会面,解释工作的规模和潜在价值,并要求书面承诺。
测试是成功的,工程总监承诺支持该项目。端到端实验进行了两周。而不是花 6 个月来构建一个因为不支持而失败的系统。
精益的最大挑战
建筑很有趣。我喜欢写代码。我喜欢新技术和工具。然而,精益迫使我遵守纪律,做出短期牺牲,以获得长期影响。
我经常会想到,在早期阶段,我一行代码都没写。例如,如果我需要了解用户界面应该是什么样子,我会在纸上敲出一个给目标用户看,而不是花几天时间去构建一个复杂的(尽管令人满意的)界面。这样,我可以在几个小时而不是几周内迭代构建-测量-学习周期。
精益的真正秘密不仅在于它能帮助你构建人们想要的东西,还在于它能帮助你在拥有一个笨拙而不灵活的 10000 多行代码库之前尽早转向。
使用精益时面临的另一个不太明显的挑战是“围攻心态”和人们对自己想法的防御性。当我们的想法失败时,我们(我)倾向于把它当成个人的。我们变成了保护性的、令人窒息的实验,而不是测试最危险的断言,我们测试那些可能验证我们想法的断言。
精益是一项团队运动
在成功获得资金和召集我的团队后,我们开始了为期六个月的旅程,以测试这个想法的极限。我们团队的文化令人惊叹。由于早期的测试,有一个强有力的愿景和一组清晰的假设需要测试。
我们经常每天开两次会,一次在早上,一次在午饭后。在每个环节中,我们都将完成构建-测量-学习循环。
这个项目取得了巨大的成功,可以说是迄今为止我职业生涯中最有影响力的事情。
前进
对我来说,利用精益来构思想法是我加入一家小型早期创业公司黑曜石安全的关键激励因素之一(如果你有兴趣了解更多关于我的黑曜石之旅,请阅读坚持下降)。你会不断听到我们的产品负责人试图让我们“闭环”。他这么说的意思是,关注尽可能快地到达构建-测量-学习周期的末端。
当整个公司都在实践精益时,其产生的速度是令人难以置信的。
应用
孵化器对我来说是一个很好的训练场。我拥有快速开发的所有关键要素:优秀的队友、出色的导师和一个要测试的好主意。这三样东西不一定都能拥有,但是,如果你想开始学习精益,我推荐以下几点:
- 找一个很棒的导师。我很幸运拥有里奇,并和绝地大师—史蒂夫·布兰克共度时光。
- 对自己的观点和动机持怀疑态度。一个想法或假设的失败是前进而不是后退。
- 让你的队友站在一边,精益最好作为一个团队来完成。
- 开始阅读。Eric Ries 的精益创业公司是一个很好的起点。
- 有一个想法要测试,它不一定要改变世界,但你可以测试的东西是关键。精益非常实用。
- 找到那些最有可能扼杀你想法的方面,先测试一下。
- 不要太“元”,一般来说,当我看到精益出错时,是因为人们最终测试了所有东西,包括现实的结构。保持它的实用性和范围。
- 享受乐趣,我们大多数人做我们所做的事情是因为我们想对世界产生影响,在我看来,精益是实现这一目标的最佳机制之一。
如果您有任何问题,请联系。如果你想在建立一个了不起的公司的同时学习精益,我们正在招聘!
祝你好运,我希望精益对你的生活产生和对我一样大的影响!