LSTM:时间序列数据关联模型

此前,跨象乘云™介绍了《LSTM 模型预测电子货币价格》教程,实际上,LSTM 模型能够从时间序列数据中捕捉最重要的特征并进行关联建模。股票价格预测模型,是关于对冲基金如何使用此类系统的典型案例,使用了 Python 编写的 PyTorch 框架进行训练,设计实验并绘制结果。

对冲基金是深度学习应用中具有吸引力的领域之一,也是投资基金的一种形式。不少金融组织从投资者那里筹集资金后对其进行管理,并通过分析时间序列数据来做出一些预测。在深度学习中,有一种适用于时间序列分析的架构是:递归神经网络(RNNs),更具体地说,是一种特殊类型的递归神经网络:长短期记忆网络(LSTM)。NEVEN PIČULJAN 以对冲基金如何使用深度学习系统为例进行典型案例分析,并展示实验过程及结果。同时文章将分析如何提高深度学习系统性能,以及需要什么样背景的深度学习人才,来搭建应用于对冲基金的深度学习系统。这里有对应的中文翻译

2018《大数据标准化白皮书》

3 月 29 日,由中国电子技术标准化研究院主编的《大数据标准化白皮书(2018 版)》正式发布。在国家大数据战略的推进实施下,我国大数据政策体系日臻完善,作为产业统筹布局的重要支撑,大数据标准的技术支撑和引领作用进一步凸显。

《白皮书》立足于大数据产业发展的社会转型历史时期所具有的政策、经济与文化等特点,分析处于初期发展阶段的大数据产业对于经济、社会的作用和影响,旨在与业界分享大数据领域的研究成果和实践经验,呼吁社会各界共同关注大数据的政策研究、技术投入、标准建设与服务应用,共同推动大数据的发展,提升社会整体决策与服务管理能力。

《白皮书》介绍了国内、国外主要国家在大数据领域的发展战略、发展现状和趋势,描述了大数据的核心产业链以及大数据重点领域的应用实践,力图从应用、技术、产业、标准等角度,勾画出大数据发展的整体轮廓;从数据生存周期的角度提出大数据参考架构;同时,抛开其他影响因素,从数据自身的角度提出在不断创新应用与服务模式下的大数据标准体系及大数据标准化路线;最后,提出了我国大数据标准化工作建议。

《白皮书》对推动大数据技术产业创新发展、构建以数据为关键要素的数字经济、提升大数据运用水平、保障国家数据安全等具有重要的支撑作用。

Google 开源 FHIR 医疗数据模型

Google 正在大力推动 FHIR 进行医疗预测。在过去 10 年间,医疗数据已经从以纸质文件为主几乎完全数字化为电子健康记录。但是,理解这些数据涉及一些关键挑战。

  1. 供应商之间没有共同的数据表示形式;每个供应商都使用不同的方式来构建他们的数据。
  2. 即使使用相同供应商的网站也可能存在很大不同,例如,他们通常为同一种药物使用不同的代码。
  3. 数据可能分布在多个表格中,一些表格包含患者就医记录,一些包含实验室结果,其他的则包含生命体征数据。

近日,Google 开源了快速医疗互操作性资源 (FHIR) 标准解决了其中的大多数挑战:它具有一个坚实并且可扩展的数据模型并基于成熟的网络标准构建,正在快速成为个体记录和批量数据访问的事实标准。但是,为了实现大规模机器学习,我们需要一些补充:各种编程语言的实现,将大量数据序列化到磁盘的有效方法,以及允许分析大型数据集的表示形式。FHIR 标准是一种 Protocol Buffers (简称 Protobuf) 实现,它可以解决这些问题。当前版本支持 Java,并且将很快支持 C++、Go 和 Python。对配置文件的支持也即将发布,还会推出一些工具,帮助用户将旧数据转换成 FHIR。

过去几年,Google 一直与众多学术医疗中心合作,将机器学习应用于匿名病历,我们需要正面解决医疗数据的复杂性,这一点已经变得非常明显。确实,要让机器学习有效用于医疗数据,我们需要从整体上了解每名患者随着时间推移的情况。作为奖励,我们想要一种可以直接用于临床环境的数据表示形式。尽管 FHIR 标准可以解决我们的大多数需求,但是为了使医疗数据比“旧”数据结构更加易于管理和确保大规模机器学习不依赖于供应商,我们认为引入 Protobuf 可以帮助应用开发者和(机器学习)研究人员使用 FHIR。

结合当前跨象乘云™开发的医疗流感趋势预测以及此前介绍的卷积神经网络和医疗影像分析平台:NiftyNet新一代人工智能在医学领域上的应用将变得更为完善,同时 Google 也推出了更多基于 TensorFlow 模型,用于管理大规模医疗数据的工具

GitHub地址项目GitHub地址

Pandas 教程:优化运算

当科研项目达到使用 100 多 TB 生物数据规模的时候,数据科学库的一些局限性会先露出来。面临这种规模的数据时,Pandas 成了最受喜爱的工具;然而,当你开始处理 TB 级别的基因数据时,单核运行的 Pandas 就会变得捉襟见肘。如果我们拥有更多的处理器核,或者要打开数十 TB 规模的文件时,我们希望 Pandas 运行得更快。目前,Apache Spark 是最高性能的分布式选择了,但是如果未对 Pandas 代码做出足够多的修改,你无法使用 Apache Spark 运行 Pandas 代码。

正因如此,来自 UC Berkeley 的 Devin Petersohn 发布文章介绍了其参与的项目 Pandas on Ray。Ray 本身是一个灵活的支持分布式集群的数据操作框架。使用这款工具,无需对代码进行太多改动即可加速 Pandas,遇到大型数据集也不怕。作者还对 Pandas on Ray、Pandas 进行了对比评估。分别使用了多个大小的数据集:

结果均显示在多个虚拟 CPU 核的支持下,Pandas on Ray 的性能提升尤为显著。机器之心对此文进行了编译介绍。值得强调的是:Ray 绝对不仅限于 Pandas 的应用,它甚至能够

用于提升 TensorFlow 的性能

GitHub地址项目GitHub地址

置信区间与置信度

TowardsDataScience 的作者 Dima Shulga,采用实例解释了统计学中的置信区间与置信度的概念。同时,机器之心做了全文的翻译。

本文讨论了统计学中的一个基本术语 :置信区间。我们仅以一种非常友好的方式讨论一般概念,没有太多花哨的统计术语,同时还会使用 Python 完成简单的实现!尽管这个术语是非常基础的,但我们有时很难完全理解置信区间到底是什么,为什么我们需要它。

Reticulate:R + Python 实现互操作

R 语言和 Python 已成为数据科学科研工作人员的标准配置。现在,对于数据科学科研人员而言,R 语言Python 终于不再是一个二选一的方案。CRAN 已于2018年3月21日收录 reticulat 包(1.6版本),它包含了用于 Python 和 R 之间协同操作的全套工具,在 R 和 Rstudio 中均可使用。主要包括:

  1. 支持多种方式在 R 环境中调用 Python。包括 R Markdown、加载 Python 脚本、导入 Python 模块以及在 R 会话中交互式地使用 Python。
  2. 实现 R 和 Python 对象之间的转换(例如:R 和 Python 数据框、R 矩阵与 NumPy 数组之间)。
  3. 灵活绑定到不同版本的 Python,包括虚拟环境和 Conda 环境。

在 R 会话中嵌入了 Python 会话,从而实现了无缝的、高性能的互操作性。如果你是使用 Python 进行某些工作的 R 开发人员或使用两种语言的数据科学团队的成员,那么 reticulate 包可以极大地简化你的工作流程。

R Markdown 中应用 Python

reticulate 包内置了许多用于 Python 对象类型转换的方法,包括 NumPy 数组和 Pandas 数据框。 例如,你可以使用 Pandas 读取和操作数据,然后使用 ggplot2 轻松绘制 Pandas 数据框:

导入 Python 模块

可以使用 R 函数:import() ,导入任何 Python 模块:

importing python os module
Importing Python os module

可以通过 $ 运算符访问 Python 模块和类中的函数和其他数据(类似于与 R 列表,环境或引用类进行交互的方式)

引用 Python 脚本

可以使用函数:source_python() 获取任何 Python 脚本,就像使用 R 脚本一样。

Python REPL

如果你想以交互方式使用 Python,则可以调用函数:repl_python(),该函数提供了嵌入在 R 会话中的 Python REPL。 在 Python REPL 中创建的对象,可以通过 reticulate 导出 py 对象,并在R中进行调用:

数据类型转换

当调用 Python 时,R 数据类型会自动转换为它们等效的 Python 类型。 当值从 Python 返回到 R 时,它们会被转换回 R 类型。 类型转换关系如下:

最后,你可以从 reticulate 网站上了解更多关于 R 语言与 Python 互操作的教程:

GitHub地址项目GitHub地址

R + Python 预测工具:Prophet

Prophet 是由 Facebook 开源一款基于 PythonR 语言的数据预测工具,相比现有预测工具更加人性化,并且难得地提供 Python 支持。对于高等院校开设数据科学与大数据技术专业而言,通常纠结于应该采用 R 语言还是 Python 作为数据分析专业核心课程的主要工具 —— 某些统计学,计量经济统计学专业,以及高等职业院校可能还依然在应用 Excel,SQL 或者商业化的 Matlab,SAS,SPSS,SATA。Prophet的发布很好的融合了数据科学,乃至未来的深度学习与新一代人工智能方向趋势的两种语言。另外,它生成的预测结果足以和专业数据分析师媲美。

Prophet 将预测共分四个流程:建模,预测评估,表面问题和人工检查。在建模阶段,当前可用的 Python 工具包寥寥无几。最广为人知的基于时间序列的 “ forecast” ,谷歌开发的 CausalImpact, 以及推特的 AnomalyDetection,均是基于 R 语言。很显然,Facebook 想要改变这一点。

组成部分

Prophet 是一个可加回归模型(Additive Regression Model),它有四个组成部分:

  1. 一个分段的线性或逻辑增长曲线趋势。Prophet 通过提取数据中的转变点,自动检测趋势变化。
  2. 一个按年的周期组件,使用傅里叶级数(Fourier series)建模而成。
  3. 一个按周的周期组件,使用虚拟变量(Dummy Variables)。
  4. 用户设置的重要节日表。

适用范围

  • 针对每小时、每天或每星期的观察频次,有至少数月(理想情况的一年)的历史记录。
  • 多重显著的“人类层级”周期性:星期 X 以及年份。
  • 日期间隔不规则的重要节日(比如超级碗),需要事先得知。
  • 观察缺失或是异常值在合理范围内。
  • 历史趋势变化,比如产品发布或者改写记录(Logging Changes)。
  • 符合非线性增长曲线的趋势,有天然上、下限或者饱和点。

这里是一份使用 Prophet 贝叶斯推理预测模型,对二氧化碳及出生率进行预测的实践教程,而国内网站做了中文翻译

Python 公开入门书籍

如何快速熟悉 Python 编程一直是很多初学者的疑问,我们经常考虑要不要系统地从头开始啃 Python 教程,但这种方法不仅非常枯燥且很难坚持。因此,对于很多入门读者,更好的方式是学习基础的 Python 编程,然后在实践中完善代码技巧。本文介绍了一本非常精炼的 Python 免费书籍,它不仅有基础知识,同时每一章节还有非常多的练习与源代码。

该书是使用实践方法教授基础的 Python 编程语言。其方法相当基础:在简要介绍每个主题之后,读者要解答练习题来巩固知识点。这些练习题都是非常经典的任务,它们可以让我们在短时间内熟悉 Python 的使用。

GitHub地址项目GitHub地址

GitHub 开发者使用指南

GitHub 是一个拥有数十亿行代码的网站,每天有数百万开发者聚集在一起,与开源软件进行协作和报告问题。简而言之,它是一个基于 Git 构建的软件开发人员的平台。作为开发人员,编程专业学生,科研人员,几乎每天都要在工作中使用 GitHub 或其他基于 Git 的工具。用于托管代码或协作其他人的代码。Flavio Copes 的这篇文章解释了 GitHub 的一些相关概念,以及如何它的一些功能使用来提高工作效率。

为什么选择 GitHub?

GitHub 由一家私人公司管理,而且还会通过托管人员代码获利。那么为什么你还选择使用它而不是选择像 BitBucket 或 GitLab 这样类似的平台呢?除个人偏好和技术原因外,还有一个重要原因:每个人都在使用 GitHub(好比 WeChat / QQ 的社交绑架,GitHub 从某种意义上而言属于开发绑架),因此网络效应非常大。主要的代码库已经随着时间的推移从其他版本控制系统迁移到 Git,因为更加便捷,并且 GitHub 定位十分明确,并投入了大量的努力来满足开源社区的需求。所以今天,你要查找的软件库基本上 99% 可以在 GitHub 上 找到它。因为平台十分便捷,除了开源代码之外,许多开发人员还会在 GitHub 上托管私有存储库。

下文将介绍开发人员需要知道的重要的 Git 的概念。

GitHub Issues

GitHub Issues 是世界上最受欢迎的 bug 跟踪器之一。项目的所有者可以利用它组织,标记和将 issue 与里程碑关联。如果你在他人管理的项目上打开某个 issue,它将保持打开状态,直到你将其关闭(如果你找出问题所在)或者项目管理者关闭它。有时候你会得到一个明确的答案,而在其他时候,这个 issue 将会保持开放并标记一些分类信息。然后开发人员可以回到这个 issue 来解决问题或改进你所反馈的代码库。大多数开发人员不能免费管理在 GitHub 上发布的代码,一些开放源代码库由那些围绕该代码提供服务的公司发布,针对具有更多功能的版本或者利用基于插件的体系结构。所以他们已经为开源项目付费给开发人员。

社区编程:Follow

几年前,GitHub 标志包含了“社交编程”标语。这是什么意思,是否存在必然联系?答案是肯定的。借助 GitHub,你可以通过访问用户个人资料并点击“关注”,或点击 repo 协议上的“观看”按钮来关注开发人员或软件库。在这两种情况下,活动都会显示在你的仪表盘中。关注用户或软件库跟 Twitter 的关注不同,你看不到别人说了什么。但是可以看到别人在做什么。

社区编程:Star

GitHub 的一大特色就是能够为软件库加 Star。用户可以通过此操作把某个软件库列入“已加星标的软件库”列表中,该列表能够帮助跟踪你感兴趣的项目并发现类似的项目。这也是最重要的评级机制之一,因为获得的星星越多,通常就代表该软件库越受欢迎/重要。因此,它在搜索结果中的排名也会更靠前。许多重大项目都有数万颗星。

另外,GitHub 也有一个 Trending 页面,它的特点是在特定的时间段(例如今日/本周、本月)盘点获得最多 Star 的软件库。进入这些 Trending 列表可能其他网络展示的效果不同,例如在其他网站上会出现,仅仅只是因为你在那个网站经常搜索该软件库。

社区编程:Fork &. PR

项目最后一个重要的网络指标是 Fork 的数量。这是 GitHub 如何工作的关键,因为 Fork 是 Pull Request(PR)的基础,这是一个更改提议。一个人可能会 fork 你的软件库,进行一些更改,然后创建一个 PR 来要求您合并这些更改。有时 fork 软件库的人可能永远不会要求你合并任何东西。他们可能会因为他们喜欢你的代码而 Fork 你的仓库,并在上面添加一些他们不想合并到原始软件库的东西。用户还可以修复他们遇到的一些 bug。

总而言之,这些都是项目受欢迎程度的关键指标。除了上述指标之外,最近一次提交的日期和作者参与issue跟踪系统的信息也是十分有用的,他可以体现一个软件库的可信赖度。

比较 commit

GitHub 提供了许多处理代码的工具。你可能最想要做的事情之一是将一个分支与另一个分支进行比较。或者你可能希望将最新的 commit 与您当前使用的版本进行比较,以随时查看更改。GitHub 允许你使用比较视图执行此操作:你只要在软件库名称末尾添加 /compare 即可。

比较 Webhooks

当软件库中出现特定问题时,Webhook 可以触发外部服务,例如,推送代码时,创建分支或创建或删除标记时。当上述情况发生时,GitHub 会向 URL 发送 POST 请求。此功能的一个常见用法是在我们从本地计算机上推送更新时,ping 远程服务器可以从GitHub获取最新代码。GitHub 服务和新的 GitHub 应用程序是第三方集成程序,可改善开发者的体验或为用户提供服务。

例如,您可以设置一个测试运行器,以便在每次使用 TravisCI 推送一些新 commit 时自动运行测试。你可以设置 Continuous Integration 来使用 CircleCI。你可以创建一个 Codeclimate 集成,分析代码并提供 “Technical Debt” 报告和测试覆盖率。

总之,GitHub 是一个了不起的工具和服务,是当今开发人员工具种的神器 —— 甚至已经有很多人建议程序员的简历不应该再是文档,而是个人 GitHub 门户。

卷积目标检测架构选型指南

架构及硬件选型一直是深度学习与新一代人工智能科研工作面临的第一个难题,本白皮书的目标正是一份作为选择能够为给定应用程序和平台实现正确速度/内存/精度平衡的检测架构的指南。为此,该团队研究了在现代卷积目标检测系统中交换速度和内存使用的准确性的各种方法。近年来已经提出了许多成功的系统,但是由于不同的基本特征提取器(例如,VGG,残留网络),不同的默认图像分辨率以及不同的硬件和软件平台,所以基于相同基础目标(“苹果”对“苹果”)的比较是很困难的。该团队提出了更快的 R-CNN,R-FCN,和 SSD 系统的统一实施,将其视为体系结构,并描绘出通过使用替代特征提取器创建的速度/精度折衷曲线,以及各种其他重要参数(如每个元架构中的图像大小)的变化。在速度和内存至关重要的这个频谱的一个极端,我们提出了一种实现实时速度并可以部署在移动设备上的探测器。在准确性至关重要的另一端,我们提供了一个检测器,可以实现在 COCO 检测任务上测量的最先进的性能。

由于论文较大,且连接速度较慢,跨象乘云™提供该论文的本地 PDF 下载。

AI 挑战赛 – 零样本学习实验赛

AI Challenger(AIC)全球 AI 挑战赛,根据平台公告的数据,在 2017 年,有来自 65 个国家的 8,892 支队伍参赛,属于目前国内较大的非商业化竞赛平台。2017 年主赛道与实验赛道命题分别包括:

  • 英中机器同声传译:挑战同声传译中的语料无标点、无断句、口语化、以及夹杂语气词等问题。语言翻译方向为英文到中文。
  • 英中机器文本翻译:用大规模的数据,提升英中文本机器翻译模型的能力。语言翻译方向为英文到中文。
  • 场景分类:寻找一个更棒的场景分类模型,解决图片的角度、尺度、和光照的多样性问题。
  • 人体骨骼关键点检测:挑战复杂生活场景中的人体检测,并预测多种复杂动作下的人体骨骼关键点位置。
  • 图像中文描述:用一句话描述给定图像中的主要信息,挑战中文语境下的图像理解问题。尝试自然语言处理与计算机视觉技术结合的力量。
  • 虚拟股票趋势预测:通过对大规模历史数据建模,预测虚拟股票未来趋势。

同时,2018 年的 AIC 预热赛:零样本学习(Zero-Shot Learning)/ (又称:One-shot Learning)竞赛即日起开始。遗憾的是,尽管该平台号称提供比赛数据集公开下载;而实际上,其仅对报名参赛的人员开放,且需要实名认证。

Python 网站日志分析工具

日志分析在 Web 系统中故障排查、性能分析方面有着非常重要的作用。该项目的侧重点不是通常的 PV,UV 等展示,而是在指定时间段内提供细粒度(最小分钟级别)的异常定位和性能分析。这是一个基于 ——

  • Python 3.4+
  • pymongo 3.4.0+
  • MongoDB server

架构的日志分析系统。其特点在于:

  1. 支持统一的日志分析入口:可查看站点所有的服务器产生的日志的汇总分析;
  2. 支持根据时间段和服务器两个维度进行过滤;
  3. 支持对 request_uri,IP 和 response_code 进行分析,基于请求数、响应大小、响应时间三个大维度进行分析;
  4. 可直观展示哪类请求数量多、哪类请求耗时多、哪类请求占流量;
  5. 可展示某一类请求在不同粒度里、各指标随时间的分布变化;

GitHub地址项目GitHub地址

Keras 官方中文版文档

Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow、CNTK、或者 Theano 作为后端运行。Keras 的开发重点是支持快速的实验。能够以最小的时延把你的想法转换为实验结果,是做好研究的关键。这一次发布的是 Keras 官方中文文档,它得到了严谨的校对而提升了整体质量。但该项目还在进行中,虽然目前已经上线了很多 API 文档和使用教程,但仍然有一部分内容没有完成。

如果你有如下需求,请选择 Keras:

  • 允许简单而快速的原型设计(用户友好,高度模块化,可扩展性)
  • 同时支持卷积神经网络和循环神经网络,以及两者的组合
  • 在 CPU 和 GPU 上无缝运行与切换

Keras 兼容的 Python 版本: Python 2.7-3.6。

可视编程神经进化算法开发工具:VINE

尽管最近受自动驾驶事件影响。Uber 开源了神经进化算法开发的交互式可视化工具 VINE,该工具可以轻松实现神经网络群体的各种特定指标以及适应度分数的可视化和随时间的变化,用户可对其进行实时评估。此外,VINE 还支持默认功能之外的高级选项和自定义可视化。

对于 Uber 来说,机器学习的发展可以大大增强运输的安全性和可靠性。Uber AI Labs 最近宣布的深度神经进化就是其中一个例子,其中涉及的进化算法可以帮助训练深度神经网络,以解决棘手的强化学习(RL)问题。最近,人们对深层神经进化的兴趣越来越浓厚,该领域研究人员对相应工具的需求也越来越大。而且在神经进化和神经网络优化方面,学习过程的基本动态常常难以观察。为了解决这一问题,Uber 开发了一个神经进化视觉检查器(Visual Inspector for Neuroevolution,简称 VINE),这是一个开源交互式数据可视化工具,旨在帮助对神经进化感兴趣的人更好地理解和探索这一系列算法。Uber 希望这种技术可以促进神经进化的创新和应用。机器之心对 VINE 做了详细的介绍

GitHub地址项目GitHub地址