:::: MENU ::::

TalkingData's Blog

现在开始,用数据说话。

Posts Categorized / Tech

  • Feb 09 / 2018
  • 0
Data, Tech

锐眼洞察 | 2018 关于数据的一些思考

作者:TalkingData 陈雷

本文为TalkingData原创,未经授权禁止转载。申请授权请在评论中留言联系!

掉过的那些数据坑

虽然过去的咨询、架构、软件工程管理工作中一直在分析数据、应用数据,一直在填各种坑,但真正跳进数据这个坑是始于 2015 年加入 TalkingData,真正把数据作为自己工作与研究的主体。 2015 年大数据公司的数据应用刚刚起步,我们就已经利用自己积累的数据,率先在行业内建立起一套数据标签体系,这套数据标签体系成为数据服务工作的起点,我们利用这批数据标签建立了移动互联网行业的覆盖和活跃排行榜,为移动用户人群的移动行为画像,起到了很好的示范效应。 随着数据应用逐步深入到深水区域,我们开始深度尝试数据标签在行业中进行精确营销、精细化客户运营、金融用户的风控识别,这时发现原有的标准化数据标签的应用效果参差不齐。 有些标签在特定人群使用中有效果,但换一个人群的效果差异就可能很大。举个例子,我们的标准标签建模后在金融风险客戶甄別上的 KS 值在 0.14 到 0.19 之间,基本属于不可用的范畴。 仔细分析标准标签的原始数据和信息加工场景后,我们对原始数据进行进一步发掘,针对行业需求深入探索数据中的信息含义,定制了一系列的行业标签。 针对金融用户的风控需求,我们从用户的稳定性、金融行为、消费行为、位置趋势、性格偏好等多个金融视角重新制定了一套风控标签,这些标签建模对金融贷款风险用户甄别的 KS 值提升到 029-0.39 之间,基本满足了金融客户对行为数据的期望值。但在金融数据应用金字塔上,行为数据依然处在金字塔的底端,难以撼动金融客户的数据应用习惯。 复盘过去几年做的事,我们总结了数据工程方法论,针对数据应用的层级归纳了数据、信息、知识、洞察、智慧等五个层次。   data_information_knowledge_insight_wisdom-1

图片来自:David Somerville

过去,数据分析师在做数据应用时,起点常常是数据标签,数据标签属于信息层面。只有当信息不足的时候我们才把数据分析的开始层次回退到数据层面,直接在数据中提取更加丰富的信息内容。 这样的经验与教训过程进一步促发了更多思考:

  • 采集和使用的原始数据是否真实?

  • 数据的丰富程度能否满足应用需求?

  • 数据工程过程中如何保证信息的传递?

这些问题触发我们重新去认识数据与信息,重新去理解数据的本质。

数据的本质

以下是百度百科上查到的数据与信息的定义:

数据是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。

信息与数据既有联系,又有区别。数据是信息的表现形式和载体,可以是符号、文字、数字、语音、图像、视频等。而信息是数据的内涵,信息加载于数据之上,对数据作具有含义的解释。 数据和信息是不可分离的,信息依赖数据来表达,数据则生动具体表达出信息。数据是符号,是物理性的,信息是对数据进行加工处理之后所得到的并对决策产生影响的数据,是逻辑性和观念性的;数据是信息的表现心事,信息是数据有意义的表示。 数据是信息的表达、载体,信息是数据的内涵,是形与质的关系。数据本身没有意义,数据只有对实体行为产生影响时才成为信息。

可以看出,这里数据及信息的定义还是比较生硬,比较模糊, 而在实际应用中数据与信息有很深的联系,常常被混合用在一起。 我重新把信息与数据的关系拉开看,用下面的图来表述这个关系。 WX20180130-105719   有种说法是世界上几乎任何事物都可以用信息的方式量化。这里的事物就是信息的主体,信息主体的信息被采集并量化(比特化的过程),数据就是这个信息量化后的载体。作为载体,数据本身不带有任何目标,也不是目标,数据的应用才是数据价值所在和最终目标。 数据的应用过程的起点就是信息的还原,信息的表现往往也是以数据形式存在。 在 TalkingData 的数据中信息的主体就是人,但 TalkingData 并不是对人的信息直接采集,而是通过现代人的随身必备的介质——手机,来采集人的信息。 信息的釆集是通过 SDK 获取的信息主体所做的移动互联网行为数据。当然,从信息主体的人的角度来看,TalkingData 的数据采集能力只是很有限的能力,采集的数据也仅仅是人这个信息主体上的数据片段。 信息主体能够被数据化的能力取决于数据的釆集技术和能力的发展。过去,在小数据时代,人的信息釆集能力仅限于关键性信息,而且很多的数据分布在无数不同的场景中,很难收集、归拢,也无法真正还原信息主体上的信息。 随着各种全新的信息釆集手段出现,信息采集越来越丰富,才能越来越接近信息主体的真相。也就是车老师在《数据的本质》一书中谈及的完美数据。

完美数据

完美数据的提出来源于车品觉老师的书《数据的本质》,完美数据是基于一个假设:信息主体上的所有信息都是可以获取的。随着数据技术的发展,信息主体上的信息采集和数字化能力正在不断提升,完美信息正在趋近。 WX20180130-143250  

《数据的本质》TalkingData 定制版

完美数据的依据是数据采集能力变化,生活在现代社会,正常的人完全无法避开周边无孔不入的数据采集。 上个网浏览个网站,网站会记录你的浏览历史;网店买个商品,网店会记录你的所有浏览记录、交易记录;用着手机,手机上的各款应用都在记录你的移动互联网行为信息;线下逛个商场,流量摄像头、Wi-Fi 服务、Wi-Fi 探针在统计着客流量的同时,也在记录着客流轨迹;走在城市的街道上,周边的无数安保摄像头也在不停的记录着人群的图像; 在家里, 每个智能家电在提供生活便利的同时, 也在不断累积你的行为历史。 可能大家已经很恐慌了,我们的数据都在不停地被各种收集手段收集,是不是以后就没有隐私了。罗胖的跨年演讲也在用比特化脑洞的概念来强化这份焦虑。其实这些数据离完美数据的方向还很远。 举个例子,图像记录生活从远古就已经存在,图像的比特化也开始于电子图片产生,但是图片中蕴含的信息却极其复杂,现在的 AI 的图像识别能力在深度信息获取上依然有很大的局限。具体可以参考朱松纯教授在视觉求索微信公众号中的文章《浅谈人工智能:现状、任务、构架与统一》中的计算机视觉:从深到暗一节。 实现完美数据的障碍在一段时间内依然很大,体现在几个方面:信息主题的数据采集能力还不完善;采集后的数据可能分散在多个数据 DOMAIN 中,数据的整合成本与难度较大;数据的信息还原能力不足,导致大量数据无法应用,空耗着数据存储的巨大成本。 数据圈一直有个暗数据的概念,暗数据特指那些已经被采集的数据但还没有被发掘和理解的数据。 据统计,大部分企业暗数据的占比高达 90%。再拿宇宙来类比,据估算,宇宙中的暗物质、暗能量更是高达 96%。按照这样估算,我们当前能够采集的数据占完美数据的比重小得可怜。

big-data-dark-data

图片来自:KDnuggets

数据分析师们是否要开始焦虑了? 信息的作用是应用场景,既然没有绝对的完美数据,我们可否寻找业务中的最佳数据应用场景?这些场景能够在一个相对小的环境内,实现准完美数据的应用。

数据场景

场景这个词这几年很是流行,原来用于文化圈的一个词被重构用来展示人与商业的连接。伴随着新场景的创造,新体验、新流行、新洞察、新生活方式等新物种层出不穷。 数据场景展示的是数据与业务场景的连接,数据很早就已经被应用于各类业务场景中了,例如:零售中的精准营销、店铺管理、品类管理、库存管理;金融中的普惠金融、风控管理、智能投顾;物流中的线路优化、运营风控等。 但是过去由于数据采集和分析能力的局限,大部分数据场景仅仅局限于经营分析,对于整体的业务场景的支持作用有限。 每个数据场景都是对应着一个业务场景,业务场景往往可以演绎成一个系统,数据场景同样也可以演绎成一个系统的数据应用场景。 大多数的业务场景都是一个复杂的系统,这个复杂的系统往往是多个层次,每个层次又是由多个尺度组成了一个复杂的系统。我用现在极为火爆的零售场景来举个例子。 零售业态最常讲的尺度有人、货、场,我们来看看线下的大型购物中心,购物中心可能包括多家零售店、超市,组成一个较为复杂的系统。购物中心、零售商家是两个基本层次,每个层次的经营核心都是人、货、场。在这三个尺度上,购物中心与商家的数据采集和应用场景就会有很大差异。

线下购物中心对人的数据掌握一直是个难点,购物中心与商家都逐渐建立了会员体系,但是在用户与客户的转换上,线下商家一直处于被动的模式。 现在,随着 Wi-Fi 等技术的推广应用,建立了更多的数据采集点,但购物中心与商家在数据的维度与深度上依然有较大的差异。例如购物中心只能获取人的流量与轨迹, 获取不了消费关联。

购物中心的系统往往管理到的是商户,这些商户的整体销售数据购物中心可以获取,但到了每个商户的单品销售情况,往往是在单个商家的手上。

线下零售的覆盖范围有限,购物中心的选址与定位,购物中心中零售商家的选择,店铺分布都是需要大量数据来支撑。 可以看出购物中心与零售店两个层次上,零售企业都可以利用自己的人货场数据形成自己层次上的知识。在购物中心这个小的系统上建立一个知识体系来支持自己的运营工作。 购物中心并不是一个孤立的系统,周边的商业环境、配套、线上电商都是这个大系统的一部分,从系统分析的角度,需要更多层次的分析和更多尺度的分析。 我们团队开发了一套方法来系统的解剖和分析一个业务的层次和每个层次中的多个尺度,并识别出其中的关键数据场景,下图描述了这个方法的部分概况。

WX20180130-143444

数据场景的选择

在数据场景中,数据细分场景很多,但数据的采集、存储、应用能力都有很多的局限性,企业的数据负责人需要找到一种系统的分析方法来支持数据分析,让自己的数据应用更加合理。

从单一到复杂

AlphaGo 在围棋方面战胜了人类,这是数据及 AI 领域一次伟大的胜利。但是 AlphaGo 的胜利一直被认为是一次纯粹的干净的数据场景。 首先,围棋对局中的数据与信息的高度一致性,数据能够被完美还原成为信息;其次,信息是完全可以观测的,尽管对弈的人有很多其它因素,但 AlphaGo 完全忽略了人的其它因素;第三,数据中没有噪音,能够完美重现算法;最后,围棋对局中的反馈非常快,这是一个完美的数据、分析、应用、反馈的一个闭环。 大部分实际的系统相对比较复杂,在选择中要充分考虑数据和信息的这几个考虑尺度,把复杂系统分解成为多个相对简单的子系统,并逐步实现数据的价值。

从封闭到开放

在对比零售的线上与线下的用户行为分析时,我们发现,线上的电商特别是大的电商平台例如淘宝、京东,数据场景的封闭性远高于线下的场景,电商平台可以从用户的登录、商品浏览、营销参与、购物意向、订单生成、物流收件、售后服务形成了一个完整的相对封闭的数据场景闭环。 用户的业务数据、行为数据、商品关系相对完整,可以非常客观地评估用户的消费偏好、服务偏好。而线下的零售数据场景则比较开放,销售流程中的开放点太多,增大了数据采集、数据整合和数据分析应用的难度。

从粗放到细化

对于人的描述,生老病死是状态,喜怒哀乐是情绪,衣食住行是消费,爱恨情仇是关系,按照国外文献上的分类方式,这里的每个尺度都被细化成为 64 个不同细分分级。 正是因为人类的复杂程度,对于单个人的精准化营销非常困难。我们通常是把聚焦从单个个体身上拉长到一个人群分类上,通过对人的分群,实现群体特征的聚像,再通过对于特定人群的营销实现精准营销的目标。 那么对于个人的营销是否可以做到精准呢?从人类的实际案例来看,一个线下的营销人员完全可以通过精密设计的营销步骤和多次沟通不断采集信息及反馈, 同时实施带有影响力的信息反馈,最终实现精准营销。 下图描述了通过系统风险方法论定位到数据应用场景的选择样例。 WX20180130-143352

数据引擎

数据场景的选择是在企业中识别出关键的可落地的业务场景,利用采集和积累的数据,产生知识与洞察,而数据应用闭环的最后一个环节是执行。通过一个数据引擎实现数据分析的闭环反馈,实现信息采集及分析的持续优化。 2017 年,我们团队设计了这样的数据引擎的原型,这个原型参考了人的神经系统。 引擎前方是一个实时业务事件引擎,接受外界数据信息并提供数据行动决策反馈; 事件信息经过预处理后由特征选择器根据相应的知识领域,从数据源选择相应的信息特征。 数据的决策由两套系统来支持, 系统 1 由规则引擎来支撑,模拟人的直觉反应,即处于自主控制状态,快速、无意识地做出决策;系统 2 由机器学习模型支撑, 模拟更复杂的行为选择经过深度复杂思考后的决策。 下图展示了这样的一个数据引擎的结构图。 WX20180130-143408

这个系统最早被应用在金融风控中,提供营销反欺诈,交易反欺诈的检测与控制。我们也针对金融反欺诈的需求组织了 8 大类智能决策策略作为数据引擎的策略纲领。 当然这样的系统需要添加更多的能力,包括控制论因素、经济学因素、博弈论等更多复杂的自适应系统能力,才能让这个数据引擎更加健壮。 通过数据、信息、知识、执行的数据能力闭环,后续就是在事上练,不断从大量数据中通过知行合一的方法,修炼数据应用的内功。

数据治理

提起数据治理这个话题我其实比较犯怵。早在 2007 年还在 IBM 工作时,就已经开始接触数据治理的整体框架,在当时的理念当中,IT 是业务创新的增长引擎,而数据就是支持这个引擎运转的汽油。 但数据这个汽油不是我们在市场上已经看到的整理得很标准的 92 号、95 号、98 号汽油。在企业当中,无论是众多应用系统中的结构数据还是散落在各个系统中的大量非结构的数据都非常复杂。 如何找到一个方法把数据和业务需求规整到一起,再用相应的手段促进信息的低损流动,最终促进企业的业务创新,这个方法就是整个数据治理的核心。 在企业数据治理的框架之下,数据治理变成了一个非常复杂的体系,在这个体系中企业的数据成熟度被分成了 5 个级别, 而每个级别都需要基于 11 个类别来度量企业的数据治理能力。 这个数据治理框架较为完备,我们仔细评估这 11 个治理域都是针对数据的治理来定义的,完全实现这样的一套数据治理体系需要一个较为复杂的组织体系及大量的数据治理流程和工具来支撑,往往只有非常大的企业才能支撑一个比较完整的数据治理能力的构建与全面实施。

WX20180130-143646

图片来自:Data-Ed Online Webinar: Data Governance Strategies

仔细回顾过去的数据治理的落地与实践,数据治理体系的落地效果往往并不明显, 回顾总结的教训有几个:数据治理体系过于复杂,往往会被定位在一个 IT 的数据治理部门,部门把大量工作精力集中于治理,反而忘却了数据治理的核心是数据价值。 数据来源于业务,应用于业务,专注于企业级的数据治理往往要跨越多个数据应用业务部门,治理过程庞杂实际上影响了业务部门的效率。 数据驱动的业务,数据驱动的企业叫嚷了很多年,但绝大多数企业的数据应用能力还很低,很难被企业提升到一个战略层次去实施。 同样的道理,数据治理的主要操盘手 CDO(首席数据官),这个职位概念被业界提了很多年,但一个 CDO 上任以后,马上就面临着如何去平衡数据创新、部门协作、生产任务之间的平衡关系。需要一个很强的智商、情商与财商高度结合的高手才能很好处理一个大型企业的数据治理工作。 过去多年的数据实践中,也曾经看到过几个比较好的数据治理切入案例:

案例 1

某大型企业,CDO 上任一个月,就在企业最高管理层的支持下,快速砍出了三板斧:

  1. 收集了企业信息系统中 80% 的现有数据,实现了数据的集中化

  2. 快速梳理了企业数据目录,分发给各个业务部门,征求数据调用需求

  3. 分析了全部需求后,针对数据需求热度,开发了数据服务接口,开始实现对业务部门的数据服务能力。

初见成效以后,才逐渐开始了数据治理的框架建设工作。

案例 2

某大型国企,新 CDO 上任以后,系统调研了当前的企业数据状况及过去几年前任 CDO 在数据标准化、数据整合陷入的各种泥坑后,果断放弃了在当前数据上的各种整合与标准化治理工作。 继而把数据核心人才集中到外界渴求的数据内容上,针对外界需求,开发了一系列数据服务产品,迅速在政府、旅游、金融等领域建立了自己的数据应用能力, 形成数据收入。该 CDO 也成为企业业务创新的代表,成为业界的一个标杆。 这两个案例的共性是这两位 CDO 都把自己的工作中心从管理转移到价值实现上来,个人认为这是数据治理应该遵循的核心原则。下图的两种数据治理的框架图的绘制方式就基本体现了两类数据治理的理念差异。 WX20180130-143622

图片来自:West Monroe

WX20180130-143601图片来自:Data Streams

简化的数据治理

无论数据治理的复杂性如何,数据治理的核心依然是数据资产。围绕着数据资产,有两大类的数据治理方式,分别是垂直治理与水平治理。

垂直治理

垂直治理主要关注于数据产生、数据采集、数据存储、数据转换、数据应用、价值实现的数据垂直治理闭环。 下图描述的是一个企业数据的垂直治理情况。企业级数据治理的数据源来自企业应用系统, 这些数据可能会经过数据应用系统、ODS、数据仓库、数据集市、数据应用等多个数据工程节点。 节点之间的数据转换过程都需要产生大量的元数据,保证数据信息源到数据应用的信息价值过程是垂直治理的一个核心难点。 与此同时,垂直治理同样需要建立相应的治理组织,工作流程及策略标准来保障整个垂直治理的过程。垂直治理是数据治理的基础,如果一个企业对于垂直治理没能建立体系,其它的数据治理必然成为一个空中楼阁,难以发挥其应有的价值。 WX20180130-143544

水平治理

水平治理往往是在企业数据资产化或集中化以后,数据治理的重心逐渐转移到企业级数据资产的价值发掘和探索。从企业来看,数据的价值往往体现在三个主要层面:战略决策支持、管理决策支持和运营决策支持。决策支持的程度由可以定义为业务数据描述、据化诊断、数据预测、智能决策等几个层面。在水平数据治理之下,围绕着数据相关的资产,治理的过程主要有发现、规定、应用、度量等一系列过程。 WX20180130-143530

图片来自:Informatica Blog

在水平治理过程中,需要重点强调的是数据资产并不仅仅是数据本身,还需要考虑到数据相关的业务流程、支撑组织,具体应用当中需要细化到流程的节点,组织也要细化到执行个体上。只有把数据治理覆盖到企业战略、优先级、业务场景、业务策略、业务标准、架构等多个层面上,才能够真正体现数据的全面性与关联性。 第二个需要重点强调的是价值必须深入到这过程中的每一个环节,始终坚持价值为要,才能够更好的实现数据治理的目标。 数据是一个企业的重要资产之一,未来的数据治理可能像财务或人力资源部门一样会成为企业的一个业务功能部门。这个部门会逐渐建立自己的业务流程、管理流程、品质规范、信息生命周期管理过程等众多的管理过程和最佳管理实践。 这个部门会比以前企业业务和 IT 部门之间的关系更加紧密,建立起强大的协作关系来赋能业务部门的关键业务创新。从数据分析技术本身,我们也看到了众多新技术,例如机器学习技术已经被用在数据治理过程当中来数据化关键过程,并且量化管控效果及价值。 随着技术与工具的发展,更多的企业已经开始了数据治理能力的建设,相信数据治理将会从大型企业的样板工程逐步成为企业的标配,实现对数据驱动企业的全面支持。  

  • Jan 26 / 2018
  • 0
Tech

锐眼洞察 | 机器学习与行为生物识别:天作之合(翻译)

作者:Avi Turgeman

原文:Machine Learning And Behavioral Biometrics: A Match Made In Heaven

译者:TalkingData研发工程师 张永超

本译文禁止商用,转载请注明来源!

最近发布的市场研究报告显示,未来五年,机器学习市场规模将以44.1%的年复合增长率迅速增长,这一增长主要受金融服务业的驱动,而在金融服务业正是大数据可以产生关键和可行的业务洞察力的地方。

在行为生物识别技术的世界里,机器学习、深度学习和人工智能都是相辅相成的。行为生物识别技术通过他们如何与设备和在线应用进行交互来识别人们。行为生物识别技术是一种完全被动的,在后台工作的动态模式,使其不可能复制或窃取,而不是像某个设备、令牌或静态属性(如指纹或名称)。今天的行为生物识别技术可以从移动设备上捕获2000多个参数,包括人们持机、滚屏、屏幕间切换的方式,他们在输入时使用的压力以及他们如何响应在线应用程序中呈现的不同视图。行为生物识别技术主要用于防止在申请在线信用卡或者在线转账付款时使用被盗或合成身份,以及用户登录会话时防止账户被恶意接管等。 (注意:今天的大部分欺诈行为都发生在经过验证的会话中。)

数据科学家发现了一个有趣的事实:人们的工作方式是非常不可预测的,没有一套固定的行为参数可以用来区别个人,也没有一个通用的模型来衡量每个人以产生准确的结果,既在假阳性方面,关键这是防止欺诈和身份盗用,最重要的这是维护最佳的用户体验。这种方法被称为个别特征选择。它使得行为生物识别技术在长期以及不同的应用和使用情况下显着更加可塑,因为这意味着对于每个人来说哪个参数是好的,并没有事先做出假设,而是选择该用户的最佳设置。

静态 VS. 动态生物识别技术

物理生物识别技术(如脸部,手指和虹膜技术)主要基于静态图像中捕捉的测量点。如上所述,行为生物识别技术是由人工智能驱动的动态方法控制的。由于数据科学领域的进步,极大型数据集的合并和处理成为可能,这反过来又推动了机器学习,最近又推动了深度学习。

移动设备上的连续认证就是这种动态方法的一个很好的例子。使用四个主要设备传感器(触摸、加速度计、陀螺仪和方位),可以使用数百甚至数千行为模式来持续认证用户。这些参数包括点击持续时间、滑动速度、指纹区域、会话持续时间和设备加速度等。配置文件的建立是为了确定用户对整个人口集的行为,这些行为可能会随时间而改变。机器学习可以推动支持所分析的大量参数和数据集所需的决策过程。

机器学习被用于行为生物识别的所有方面。它能够从人类行为中学习,并不断改进可用于验证会话或事务的用户配置文件。以敲击键盘为例,行为生物识别技术以击键速度和手指的类型为基础,在10分钟内可以建立一个足够强大的配置文件来验证用户的银行转账。然而,随着时间的推移和一个人更多的使用这个设备,根据应用的定义,他们的行为会适应和变化。机器学习有助于突破各种信号的混乱,并随着时间的推移发现行为模式的一致性。

行为生物识别和人工智能的认证范式悬而未决

有关传统认证过程的缺点已经写了很多。今天的大部分欺诈来自于使用被盗或合成身份创建的初始账户,或者在经过认证的会话中,如通过恶意软件以合法用户登录、社交工程、机器人或其他类型的远程访问攻击,使得用户在登录后恶意接管等。

这时行为生物识别技术能够提供被动,无摩擦,持续认证的能力。事实上,根据墨卡托咨询集团的说法,“行为生物识别技术将在未来五到八年内重新构建认证领域”。

最初,人工智能驱动的行为生物识别技术主要用于金融服务行业的账户欺诈预防。最近,如上所述,该技术的应用已经扩展到身份验证,以提供用于根据海量数据泄露来检查在线应用的有效性的新维度,并且允许在支付应用中进行基于风险的验证。人工智能知识的进步将继续推动这项技术的更多功能,随着这种方法的不断采用和规模化,这将会进一步完善。

  • Jan 26 / 2018
  • 0
Tech

锐眼洞察 | 开源数据技术简史(翻译)

作者:Keith D. Foote 

原文:A Brief History of Open Source Data Technologies

译者:TalkingData数据工程师 孙强

本译文禁止商用,转载请注明来源!

自文明开始以来,公开分享信息一直是人类文化的一部分。 信息将与大众共享,实践对工具和机械的发展产生了强大的影响。 与这种做法相对应的是所有权和控制权的概念,也就是所谓的“知识产权”。例如,专利和版权是基于这样的信念:发明人应该在别人使用或模仿的时候得到报酬, 他们是原创。 尽管公开分享新的想法很难被滥用,但专利可以被滥用,并且有合理的计划。 例如,1879年,专利律师乔治•B•塞尔登(George B. Selden)申请了一项专利,声称对2冲程汽油发动机的“主意”拥有所有权,由于货币的原因,延迟了专利局的批准直到1895年。 在推迟专利审批的同时(但不是申请日期),汽车正在设计和建造之中。 1899年,电动汽车公司以每辆汽车15美元的价格购买了他的专利的专利权(按现在的通货膨胀标准,每辆汽车420美元),然后开始成功起诉汽油动力汽车制造商专利侵权。 到1904年,有30家汽车制造商向电动汽车公司支付了1.25%的汽车销售,其中五分之一用于塞尔登。 这一直持续到1911年,当时亨利•福特使用四缸“四循环”发动机,摆脱了专利的束缚,塞尔登的不道德专利突然变得毫无价值。 (拥有网站名称的人对使用权进行收费对网站拥有者也有类似的束缚)。 汽车贸易委员会(最终名为“汽车制造商协会”)于同年成立,并制定了美国所有汽车制造商共享的交叉使用许可协议。 每个公司都可以开发新的技术和申请专利,但是专利是公开分享的,制造商之间没有交换货币,也没有任何法律诉讼。 显然,汽车制造商不希望陷入类似的专利束缚。

自由软件运动

“自由软件”可以不需要付费,但就自由软件运动而言,这个词是指用户可以自由复制,更改,改进,运行和分发的软件。 自由软件运动更多的是行动自由,而不是价格。 自由软件的限制很少,没有“追求利润的意图”。为了达到这些目标,自由软件基金会于1985年成立。自由软件基金会的使命是:“保护,保护和促进使用,学习,复制,修改和重新分配计算机软件的自由,维护自由软件用户的权利”。

开源运动

虽然“自由软件”可以说是一个强调自由的社会运动,但是开源软件将被描述为通过以公众为资源来改善和开发软件的集体努力。 从某种意义上说,开源依靠人们的“善良天使”来开发软件和技术。 一般来说,开放源代码描述了源代码已经发布并公开的软件,允许任何人使用,复制,修改和重新发布,而无需支付使用费或费用。 这使得开源代码可以通过社区合作的方式进行有机的演变。 开放源代码计划作为一个官方组织,于1998年创建,作为开源活动的倡导者,教育者和管理者。 由多个独立程序员开发的开源软件(协同软件开发)提供比任何单个公司所希望提供的更“原始”设计。 对于一些商业软件供应商来说,这种情况被视为一种威胁。 2001年,微软前任高管吉姆•阿尔奇内(Jim Allchine)公开表示: “开源是一个知识产权驱逐舰。 我无法想象软件业务和知识产权业务可能会比这更糟糕。“微软此后已经扭转了在开源领域的地位,并且与谷歌,IBM,甲骨文一起,正在互联网上建立一个官方的开放源码存在。 不用说,这对资本主义模式转变的意义造成了重大混乱。 (知识产权的所有权和不道德使用可以被认为是极端的资本主义,而开放源代码倡议被认为是一种个人协同的形式)。

UNIX 共享代码 (IBM)

在现代计算的发展中扮演着重要的角色。 AT&T贝尔实验室于1969年开始开发一个名为UNIX的小型操作系统。 目标是设计一个便携式的多任务系统,为分时配置的多用户设计。 在1972年,UNIX被改写,使用程序语言C,它允许程序和数据从“原始硬件”传输,使数据变得可移植。 反托拉斯案阻止了AT&T进入电脑业务,并要求他们授权系统的源代码给所有的请求方。 这导致学术机构和企业很快利用UNIX程序。 加利福尼亚大学伯克利分校的程序员开发了他们自己的操作系统的进化版本,标题是伯克利软件分发,公众可以访问。 (整个故事要复杂得多)

Mozilla诞生于1998年的网景源代码

网景社区于1995年推出了第一款真正的商业网络浏览器Netscape Navigator,当时并没有真正的竞争。 然而,微软正在研究Internet Explorer,并于1996年推出了一款能够与Netscape竞争的浏览器。 新的竞争促使Netscape于1998年向公众发布源代码,目的是模仿UNIX并将公众作为开发资源。 不幸的是,这一步骤阻碍了他们最新的浏览器平台的发展,给微软带来了Internet Explorer成为“使用最多的浏览器”的必要优势。网景通讯从未恢复,并被AOL收购。 2008年3月1日,网景公司正式停产,终止了对所有网景客户(他们感到震惊和沮丧)产品和浏览器的支持。 但是,Netscape的开源版本的源代码促使Mozilla组织的创建。

Linux

Linux程序提供了计算历史上开源软件协作最典型的例子之一。 Linux是由Linus Torvalds于1991年发明的。他曾就读于赫尔辛基大学,曾在Minix这个类似Unix的系统工作,并开始设计自己的内核。 Torvalds从设计硬盘访问和设备驱动程序开始,展示了他所称的基本设计,即版本0.01。 内核,后来被称为Linux,后来与开源GNU系统(发音g’noo)结合起来,生产出一个完全免费的操作系统。 任何人都可以使用,修改和分发Linux源代码。 在Linux上完成的大部分工作由Linux社区执行,其中包括来自世界各地的数千名程序员,他们向维护人员发送改进建议。 公司也帮助开发了Linux内核,并开发了通常用于该程序的“额外”软件。 Apache软件基金会(ASF) Apache软件基金会的使命是为公共利益提供软件。 它成立于1999年,是一个慈善组织。 它从个人和企业赞助商那里获得资金,并使用全志愿董事会。 该组织监督350多个开源项目。

Apache Hadoop

Apache Hadoop最初被称为Nutch,由Doug Cutting和Mike Cafarella两个人设计。 他们正在设计一个能够索引10亿个页面的搜索引擎系统,后来他们与MapReduce相结合。 Hadoop的成本效益来自使用基于商用硬件构建的计算机集群。 大数据集被分解,然后存储在本地磁盘上。 任何故障都通过软件来纠正,而不是昂贵的服务器。 Hadoop的成功,因为它是: 免费

  • 非常可扩展性:它在数百台低成本服务器上存储大型数据集
  • 灵活:提供对新数据源的访问,并可以访问不同类型的数据
  • 非常快速:可以在几分钟内有效处理TB级数据,在几小时内可以高达PB级数据
  • 备份:将数据发送到单个节点,然后复制到其他节点作为备份

Apache Spark

Apache Spark自发布以来迅速普及。 它比Apache Hadoop更快,可扩展性更强。 雅虎,Netflix和eBay等企业已经开始大规模使用它。 Spark与Hadoop相结合,已经迅速成为使用大数据的最大的开源社区之一。 (Spark不带文件管理,但可以使用Hadoop的分布式文件系统管理文件。)

Apache Storm

Apache Storm免费,是一个开源的实时计算系统。 它可以基本上实时处理大量的大数据,具有可扩展性,易于操作。Storm可以用于:

  • 实时分析
  • 在线机器学习
  • 连续计算
  • 分布式远程过程调用(RPC)

Apache Hive

Apache Hive是一个开源系统,用于使用基于SQL的语言查询数据。 它将总结和分析数据,将其转化为有用的业务见解。 Hive与传统的数据集成和数据分析工具兼容。许多数据仓库应用程序与基于SQL的查询语言兼容,Hive支持基于SQL的数据向Hadoop的可移植性和传输。 虽然最初由Facebook开发,但Hive已经被金融业监管机构和Netflix等公司使用和开发。

Apache Pig

Apache Pig用于分析以高级语言编写的大型数据集,旨在表达数据分析程序,并结合基础设施来评估程序。 Apache Pig的重要特性是提供大量并行化的能力。 这使系统能够处理“非常”大的大数据集。

开源硬件

开放源代码硬件是一种硬件,其规格已经发布并可供公众访问,允许个人复制,修改和重新分配,而无需支付使用费或费用。 这个政策也适用于开源机器人。 开源硬件基于社区合作。 社区通常由业余爱好者,硬件/软件开发者和一些大型企业组成。  

  • Jan 25 / 2018
  • 0
Tech

锐眼洞察 | 详谈 GCD(Grand Central Dispatch)的基本使用

作者:TalkingData研发工程师 张永超

本文为TalkingData原创,未经授权禁止转载。申请授权请在评论中留言联系!

1. GCD(Grand Central Dispatch)介绍

Grand Central Dispatch (GCD) 是 Apple 开发的一种多核编程的解决方法。该方法在 Mac OS X 10.6 Lion 中首次推出,并随后被引入到了 iOS4.0 中。GCD 是一个替代诸如 NSThread, NSOperationQueue, NSInvocationOperation 等技术的更高效和强大的技术。

GCD 属于系统级的线程管理技术,在 Dispatch queue 中执行相关任务的性能非常高。GCD 的源代码已经开源,感兴趣的可以参考Grand Central Dispatch。 GCD 中的FIFO队列称为 dispatch queue,以用来保证先进入队列的任务先得到执行。

GCD 简述

  • 和Operation queue相同,都是基于队列的并发编程API,均是通过集中管理、协同使用的线程池。

GCD具有5个不同的队列:

  1. 运行在主线程中的 Main queue
  2. 三个不同优先级的队列(High Priority Queue,Default Priority Queue,Low Priority Queue)。
  3. 更低优先级的后台队列 Background Priority Queue,主要用于I/O。
  4. 用户可自定义创建队列:串行或并行队列
  5. 具体的操作时在多线程上还是单线程上,主要依据队列的类型和执行方法,并行队列异步执行在多线程,并行队列同步执行只会在单线程(主线程)执行。

GCD 基本的概念

标准队列

标准队列是指GCD预定义的队列,在iOS系统中主要有两个:

WX20180125-183854

自定义队列

用户可以自定构建队列,并设置队列是并行还是串行:

WX20180125-183941

同步\异步线程创建

用户也可以根据需要自行构建同步\异步线程:

WX20180125-184016

2. 队列(dispatch queue)

  • Serial(串行队列):又叫做 private dispatch queues,同时只执行一个任务(Task)。Serial queue 常用语同步访问特定的资源或数据,当创建了多个 Serial queue 时,虽然各自是同步的,但是 Serial queue 之间是并发执行的。
  • Main dispatch queue: 全局可用的 Serial queue,在应用程序的主线程上执行。
  • Concurrent(并行队列):又叫做 global dispatch queues,可以并发的执行多个任务,但是执行的顺序是随机的。iOS 系统提供了四个全局并发队列,这四个队列有着对应的优先级,用户是不能创建全局队列的,只能获取,如下:

WX20180125-184318

  • Custom(自定义队列):用户可以自定义队列,使用 dispatch_queue_create 函数,并附带队列名和队列类型参数,其中队列类型默认是NULL,代表DISPATCH_QUEUE_SERIAL串行队列,可以使用参数DISPATCH_QUEUE_CONCURRENT设置并行队列。

 

WX20180125-184351
  • 自定义队列的优先级:在自定义队列的时候,可以设置队列的优先级,使用dipatch_queue_attr_make_with_qos_class或者dispatch_set_target_queue方法来设置,如下:

 

WX20180125-184955
  • dispatch_set_target_queue:此方法不仅能够设置队列优先级,还可以设置队列的层级体系,比如让多个串行队列和并行队列在统一的一个串行队列里执行,如下:

WX20180125-185418

队列的类型

在iOS中,队列本身默认是串行的,只能执行一个单独的block,但是队列也可以是并行的,同一时间执行多个block。

在创建队列时,我们通常使用dispatch_queue_create函数:

WX20180125-185443

iOS中的公开5个队列:主队列(main queue)、四个通用调度队列以及用户定制的队列。对于四个通用调度队列,分别为:

  • QOS_CLASS_USER_INTERACTIVE:user interactive 等级表示任务需要被立即执行已提供最好的用户体验,更新UI或者相应事件等,这个等级最好越小规模越好。
  • QOS_CLASS_USER_INITIATED:user initiated等级表示任务由UI发起异步执行。适用场景是需要及时结果同时又可以继续交互的时候。
  • QOS_CLASS_UTILITY:utility等级表示需要长时间运行的任务,伴有用户可见进度指示器。经常会用来做计算,I/O,网络,持续的数据填充等任务。
  • QOS_CLASS_BACKGROUND:background等级表示用户不会察觉的任务,使用它来处理预加载,或者不需要用户交互和对时间不敏感的任务。

一个典型的实例就是在后台加载图片:

WX20180125-190159

队列类型的使用

那么具体在操作中,什么时候使用什么类型的队列呢?通常有如下的规则:

  • 主队列:主队列通常是其他队列中有任务完成,需要更新UI时,例如使用延后执行dispatch_after的场景。
  • 并发队列:并发队列通常用来执行和UI无关的后台任务,但是有时还需要保持数据或者读写的同步,会使用dispatch_sync或者dispatch_barrier_sync 同步。
  • 自定义顺序队列:顺序执行后台任务并追踪它时。这样做同时只有一个任务在执行可以防止资源竞争。通常会使用dipatch barriers解决读写锁问题,或者使用dispatch groups解决锁问题。

可以使用下面的方法简化QoS等级参数的写法:

WX20180125-190306

dispatch_once用法

dispatch_once_t要是全局或static变量,保证dispatch_once_t只有一份实例。

WX20180125-190343

dispatch_async

设计一个异步的API时调用dispatch_async(),这个调用放在API的方法或函数中做。让API的使用者有一个回调处理队列。

WX20180125-190406
可以避免界面会被一些耗时的操作卡死,比如读取网络数据,大数据IO,还有大量数据的数据库读写,这时需要在另一个线程中处理,然后通知主线程更新界面,GCD使用起来比NSThread和NSOperation方法要简单方便。

WX20180125-193828

dispatch_after延后执行

dispatch_after只是延时提交block,不是延时立刻执行。

WX20180125-190811

范例,实现一个推迟出现弹出框提示,比如说提示用户评价等功能。

WX20180125-190834

例子中的dispatch time的参数,可以先看看函数原型


WX20180125-190857
第一个参数为DISPATCH_TIME_NOW表示当前。第二个参数的delta表示纳秒,一秒对应的纳秒为1000000000,系统提供了一些宏来简化:

WX20180125-190923
如果要表示一秒就可以这样写:

WX20180125-190949
dispatch_barrier_async使用Barrier Task方法Dispatch Barrier解决多线程并发读写同一个资源发生死锁

Dispatch Barrier确保提交的闭包是指定队列中在特定时段唯一在执行的一个。在所有先于Dispatch Barrier的任务都完成的情况下这个闭包才开始执行。轮到这个闭包时barrier会执行这个闭包并且确保队列在此过程不会执行其它任务。闭包完成后队列恢复。需要注意dispatch_barrier_async只在自己创建的队列上有这种作用,在全局并发队列和串行队列上,效果和dispatch_sync一样。

WX20180125-191022WX20180125-191039

Swift示例:

WX20180125-191105

都用异步处理避免死锁,异步的缺点在于调试不方便,但是比起同步容易产生死锁这个副作用还算小的。

dispatch_apply进行快速迭代

类似for循环,但是在并发队列的情况下dispatch_apply会并发执行block任务。

WX20180125-191137

dispatch_apply能避免线程爆炸,因为GCD会管理并发。

WX20180125-191203
示例:

WX20180125-191228
Block组合Dispatch_groups

dispatch groups是专门用来监视多个异步任务。dispatch_group_t实例用来追踪不同队列中的不同任务。

当group里所有事件都完成GCD API有两种方式发送通知,第一种是dispatch_group_wait,会阻塞当前进程,等所有任务都完成或等待超时。第二种方法是使用dispatch_group_notify,异步执行闭包,不会阻塞。

第一种使用dispatch_group_wait的swift的例子:

WX20180125-191306WX20180125-191324
OC例子:

WX20180125-191355

第二种使用dispatch_group_notify的swift的例子:

WX20180125-191426

OC例子:

WX20180125-191524

如何对现有API使用dispatch_group_t:

WX20180125-191614

注意事项

  • dispatch_group_async等价于dispatch_group_enter() 和 dispatch_group_leave()的组合。
  • dispatch_group_enter() 必须运行在 dispatch_group_leave() 之前。
  • dispatch_group_enter() 和 dispatch_group_leave() 需要成对出现的

3. Dispatch Block

队列执行任务都是block的方式

创建block。

WX20180125-191921

dispatch_block_wait:可以根据dispatch block来设置等待时间,参数DISPATCH_TIME_FOREVER会一直等待block结束。

WX20180125-192121

dispatch_block_notify:可以监视指定dispatch block结束,然后再加入一个block到队列中。三个参数分别为,第一个是需要监视的block,第二个参数是需要提交执行的队列,第三个是待加入到队列中的block。

WX20180125-192344

dispatch_block_cancel:iOS8后GCD支持对dispatch block的取消​

WX20180125-192537

使用dispatch block object(调度块)在任务执行前进行取消

dispatch block object可以为队列中的对象设置。

示例,下载图片中途进行取消:

WX20180125-192612WX20180125-192632

Dispatch IO 文件操作

dispatch io读取文件的方式类似于下面的方式,多个线程去读取文件的切片数据,对于大的数据文件这样会比单线程要快很多。

WX20180125-192655
  • dispatch_io_create:创建dispatch io
  • dispatch_io_set_low_water:指定切割文件大小
  • dispatch_io_read:读取切割的文件然后合并。

苹果系统日志API里用到了这个技术,可以在这里查看。

WX20180125-192731WX20180125-192816

此内容就到这里了。其他的技术点将会陆续放出,GCD是个好东西,但是在使用的时候一定要理清楚其含义,否则很容易出现不可调试的问题等。

  • Jan 25 / 2018
  • 0
Tech

锐眼洞察 | 机器学习和统计模型的差异(翻译)

作者:Tavish Srivastava

原文:Difference between Machine Learning & Statistical Modeling

译者:TalkingData解决方案架构师 李堃

本译文禁止商用,转载请注明来源!

在各种各样的数据科学论坛上,有这样一个问题经常会被问到——机器学习和统计模型的差别是什么?

这确实是一个难以回答的问题。考虑到机器学习和统计模型所解决问题的相似性,两者的区别似乎仅仅在于数据量和模型建立者的不同。

在这篇文章中,我将尽最大的努力来展示机器学习和统计模型的区别,同时也欢迎业界有经验的朋友对本文进行补充。

在我开始之前,让我们先明确使用这些工具背后的目标。无论采用哪种工具去分析问题,最终的目标都是从数据获得知识。两种方法都旨在通过分析数据的产生机制挖掘 背后隐藏的信息。

两种方法的分析目标是相同的。现在让我们详细的探究一下其定义及差异。

定义

机器学习:一种不依赖于规则设计的数据学习算法。

统计模型:以数学方程形式表现变量之间关系的程式化表达。

对于喜欢从实际应用中了解概念的人,上述表达也许并不明确。让我们看一个商务的案例。

商业案例

让我们用麦肯锡发布的一个有趣案例来区分两个算法。

案例:分析理解电信公司一段时间内客户的流失水平。

可获得数据:两个驱动-A&B

麦肯锡接下来的展示足够让人兴奋。请从下图来理解一下统计模型和机器学习算法的差别。

Screen Shot 2015-06-30 at 11.32.20 PM

从图中你观察到了什么?统计模型在分类问题中得到一个简单的分类线。 一条非线性的边界线区分了高风险人群和低风险人群。 但当我们看到通过机器学习产生的等高线时, 我们发现统计模型似乎没有办法和机器学习算法进行比较。 机器学习的方法获得了任何边界都无法详细表征的信息。这就是机器学习可以为你做的。

更令人兴奋的是,机器学习还被应用在YouTube和Google的引擎推荐上,机器学习通过瞬间分析大量的观测样本给出近乎完美的推荐建议。 即使只采用一个16 G内存的笔记本,每天处理数十万行的数千个参数的模型也不会超过30分钟。然而一个统计模型需要在一台超级计算机跑一百万年来观察数千个参数。

机器学习和统计模型的差异:

在给出了两种模型在输出上的差异后,让我们更深入的了解两种范式的差异,虽然它们所做的工作类似。

  • 所属的学派
  • 产生时间
  • 基于的假设
  • 处理数据的类型
  • 操作和对象的术语
  • 使用的技术
  • 预测效果和人力投入

以上提到的这几方面都能从不同程度上区分机器学习和统计模型,但并不能给出机器学习和统计模型的明确界限。

分属不同的学派

机器学习:计算机科学和人工智能的一个分支,通过数据学习构建分析系统,不依赖明确的构建规则。

统计模型:数学的分支用,通过发现变量之间相关关系从而预测输出。

诞生年代不同

统计模型的历史已经有几个世纪之久。但是机器学习却是最近才发展起来的。二十世纪90年代,稳定的数字化和廉价的计算使得数据科学家停止建立完整的模型而使用计算机进行模型建立。这催生了机器学习的发展。随着数据规模和复杂程度的不断提升,机器学习不断展现出巨大的发展潜力。

假设程度差异

统计模型基于一系列的假设。例如线性回归模型假设:

  1. 自变量和因变量线性相关
  2. 同方差
  3. 波动均值为0
  4. 观测样本相互独立
  5. 波动服从正态分布

Logistics回归同样拥有很多的假设。即使是非线性回归也要遵守一个连续的分割边界的假设。然而机器学习却从这些假设中脱身出来。机器学习最大的好处在于没有连续性分割边界的限制。同样我们也并不需要假设自变量或因变量的分布。

数据区别

机器学习应用广泛。在线学习工具可以飞速处理数据。这些机器学习工具可学习数以亿计的观测样本,预测和学习同步进行。一些算法如随机森林和梯度助推在处理大数据时速度很快。机器学习处理数据的广度(来源更多)和深度(观察更大量)上做的非常好。但统计模型一般应用在较小的数据量和较窄的数据属性上。

命名公约

下面一些命名几乎指向相同的东西:

Screen Shot 2015-07-01 at 12.19.11 AM

公式:

虽然统计模型和机器学习的最终目标是相似的,但其公式化的结构却非常不同。

在统计模型中,我们在试图估计f函数时是通过:

因变量(Y)=f(自变量)+ 扰动 函数

机器学习放弃采用函数f的形式,简化为:

输出(Y)——> 输入(X)

它试图找到n维变量X的袋子,在袋子间Y的取值明显不同。

预测效果和人力投入

自然在事情发生前并不给出任何假设。一个预测模型中,假设越少、预测效率越高。机器学习名称的内涵就是减少人力投入。机器学习通过反复迭代学习发现隐藏在数据中的科学。由于机器学习作用在真实的数据上并不依赖于假设,预测效果是非常好的。统计模型是数学的加强,依赖于参数估计。它要求模型的建立者提前知道或了解变量之间的关系。

结束语

虽然机器学习和统计模型看起来为预测模型的不同分支,但它们非常相近。经过数十年的发展,两种模型间的差异性越来越小。模型之间相互渗透和相互学习,使得未来两种模型的界限更加模糊。

  • Jan 22 / 2018
  • 0
Data, Tech

锐眼洞察 | 数据质量六步法(翻译)

作者:Ramesh Dontha

原文:Data Quality – A Simple 6 Step Process

译者:TalkingData数据科学家 孙强

本译文禁止商用,转载请注明来源!

我们都听说过很多关于低数据质量的恐怖故事。很多公司拥有数百万条记录,包括客户联系号码“(000)000-0000”、购买日期“99/99/99”、12个不同的性别值、没有状态信息的送货地址等等。“脏数据”为企业和组织带来了实际的成本消耗。 例如,美国邮政总局估计,2013年在处理由于数据质量差而导致无法投递的邮件上花费了15亿美元。 质量差的数据来源可能很多,但可以大致分为数据输入、数据处理、数据集成、数据转换和过时数据(陈旧的数据)。

那么,您改如何确保数据始终保持高质量? 人们越来越意识到数据对于做出明智决策的重要性,数据不准确会导致灾难性的后果。 挑战在于确保企业为其业务收集/采购相关的数据,以有意义和可持续的方式管理/治理这些数据,以确保关键主数据的高质量记录,并通过分析高质量数据以实现预定的业务目标。 基于数据质量专家和从业者的最佳实践,我们制定了6个步骤的数据质量框架。

第1步 – 定义

明确改进数据质量所要实现的业务目标,数据所有者/利益相关方,受影响的业务流程和数据规则。

以客户数据为例:

  • 目标:确保所有客户记录都是唯一的、信息准确性(例如:地址、电话号码等)、跨多系统数据的一致性等。
  • 数据所有者:销售副总裁
  • 利益相关方:金融、营销和生产
  • 受影响的业务流程:订单输入、开票、履行等
  • 数据规则:规则1 – 客户名称和地址应该是唯一的;规则2 – 所有的地址都应根据经核准的地址参考数据库进行核实

第2步 – 评估

根据定义步骤中规定的规则评估现有数据。 从关键属性的准确性、所有必要属性的完整性、跨多个数据集的属性的一致性、数据的及时性等多维度,对数据进行评估。根据每个企业的数据量、数据种类和数据质量项目的范围, 我们可能会使用一些分析工具进行定性和/或定量评估。 这是评估现有政策(数据访问、数据安全性、遵守特定行业标准/指南等)的阶段。

举例:

  • 评估客户记录中唯一性记录(包括姓名和地址)的占比;评估关键属性中等非空值的占比。

第3步 – 分析

对评估结果进行多方面分析。其中一个需要分析的方面是DQ业务目标与当前数据之间的差距。另一个需要分析的方面是数据质量较差的根本原因(如果是这样的话)。

举例:

如果客户地址不准确,不符合业务定义的目标,那么根源是什么? 是否是订单输入应用程序数据验证问题? 或者参考地址数据不准确?如果订单输入系统中的客户名称与财务系统中的不一致,是什么造成了这种不一致?

第4步 – 改进

根据前期分析设计和制定改进计划。 计划应该包含所涉及的时间表、资源和成本。

举例:

所有应用程序对地址的修改必须经过选定地址参考数据库的验证;客户名称只能通过订单输入应用修改;对系统的调整将需要6个月的时间才能实现,并需要XYZ资源和$$$。

第5步 – 实施

实施在改进阶段确定的解决方案。掌握技术以及其他业务流程相关的变化。实施全面的“变革管理”计划,确保所有利益相关方得到适当培训。

第六步-控制

定期验证数据是否与定义步骤中规定的业务目标和数据规则保持一致。定期向所有利益相关方传达数据质量指标和当前状态,以确保整个组织持续保持数据质量规范。

数据质量不是一次性项目,而是一个持续的过程,要求整个组织都以数据为导向、以数据为中心。 从大局来看,数据质量管理可以为组织带来丰厚收益。

  • Jan 22 / 2018
  • 0
Ideas, Tech

锐眼洞察 | 2018年及未来的人工智能走向(翻译)

作者:Eugenio Culurciello

原文:Artificial Intelligence, AI in 2018 and beyond

译者:TalkingData研发副总裁 闫志涛

本译文禁止商用,转载请注明来源!

译者注:

很多对于未来的预测实际上经常是错误的,不过多看看不同的人对未来的想法无疑是有价值的。人工智能发展到现在已经在很多领域证明了自己。不过目前的人工智能还远远达不到我们期望中的那个状态。下一个目标无疑是人工智能有了更好的感知能力,能够利用记忆、迁移学习以及持续学习能力来处理复杂的情况,这样的人工智能可能才会逐渐的向通用智能方面发展。

以下是我关于深度神经网络以及机器学习在更广泛的人工智能领域如何发展的看法,以及我们如何能够获得越来越复杂的机器以帮助我们的日常生活。

需要注意的是这些并不是对于未来的预测,而是对这些领域的发展轨迹、趋势以及技术需求进行更详细的分析,从而让我们能够获得有用的人工智能。

并不是所有的机器学习都是针对人工智能的,还有一些比较容易获得的成果,这里也会一并进行介绍。

目标

这个领域的目标是实现达到或者超过人类的机器,从而能够在我们的日常生活中帮助我们。自动驾驶车辆、智能家居、智能助手以及安全摄像头是第一个目标。家庭烹饪和清洁机器人以及无人机和机器人是第二个目标。另外一个是移动设备上的智能助手。还有就是能够听到或者看到我们日常生活中经历的全职的智能陪伴助理。终极目标是一个完全自主的综合体,在执行人类的日常任务上能够达到或者超过人类。

软件

在这里,软件被定义为通过优化算法进行训练的能够解决一个特定任务的神经网络架构。

在今天,神经网络已经在事实上成为了学习解决任务的工具,这些任务涉及通过监督学习来对大规模数据集进行分类。但这并不是人工智能,因为在真实的世界中经常需要从没有经历过的经验中进行无监督的学习,这需要能够整合从不同环境中获得的知识去解决所面临的新问题。

神经网络架构 – 几年前,当这个领域蓬勃发展时,我们经常说它具备从数据中自动学习算法参数的能力,并且优于人手工进行的特征工程。但是我们有意识的忘掉了一个小细节:基于训练来解决任务的神经网络架构并不是从数据中学得的,实际上它仍旧是由人来设计的。基于经验进行手工设计仍旧是这个领域中最主要的局限之一。神经网络架构是学习算法基础的核心。尽管我们的学习算法能够掌握新的任务,如果神经网络不正确,它们仍旧不能正常的工作。从数据中学习神经网络架构的问题在于在一个大规模数据集上尝试多个架构花费的时间太长。一个人不得不从头到尾尝试训练多个架构去看看哪个能够表现的最好。这正是我们今天最为耗时的试错的过程。我们需要在这个问题上投入更多的人的脑力去解决这个重要的问题。

非监督学习 – 我们不能总是在那里指导神经网络如何去做,不能总是在帮助它们纠正每一个错误,对它们的性能提供反馈,我们有我们自己的生活要去过。但是这就是我们今天对于有监督的神经网络需要做的:对于每一个实例,我们都要去帮助它使得它能够正确的工作。相反,人类会从一些例子中去学习,然后能够以一种持续的方式自我修正和学习更复杂的数据。

预测神经网络 – 当前的神经网络的一个主要局限就是它不具备我们人类大脑的一个重要特性:预测能力。关于人类大脑是如何工作的一个主要理论是大脑在不断做出预测:预测编码。如果你仔细想一下,我们每天都会体验到它。当你提起一个你认为很轻但是实际上很重的物体时,你会感到吃惊。因为当你准备提起它时,你已经预测了它将会如何影响你和你的身体,以及以及如何影响周边环境。

预测不仅仅帮助理解世界,而且还能够帮助我们知道什么时候不需要、什么时候需要学习。实际上,我们保存关于我们不知道的或者让我们感到吃惊的事情的信息,这样下次遇到的时候我们就不会感到吃惊。认知能力显然与我们大脑中的注意力机制有关系:我们具备先天的能力能够去忘掉99.9%的感官输入,而仅仅聚焦于对于我们的生存至关重要的数据 – 威胁在那里以及我们跑到哪里您够避开它。或者,在当今的社会,当我们急着要出门时我们的手机在哪里。

构建预测神经网络是与真实世界交互以及在复杂的环境中能够进行运转的核心,因此这是任何强化学习网络的核心网络。我们已经广泛的讨论了预测神经网络这个话题,并且是研究和创建它们的先锋组织之一。

当前的神经网络的局限 – 我们前面已经讨论了今天的神经网络的局限,不能够预测、基于内容的推理以及不稳定性,因此我们需要一种新型的神经网络。

神经网络胶囊是解决当前的神经网络局限的一种方法。在这里我们认为胶囊需要扩充一些新的特性:

  • 对视频帧的操作:这非常的简单,我们需要做的是让胶囊路由查看最近播放过的多个数据点。这相当于对最近的重要数据点上的联想记忆。需要注意的是它不是最近的帧的最近的表达,而是最近的帧的最不同点的表达。不同内容的不同点表达可以通过仅仅保存与预定义值不同的表达来获得。这个重要的细节可以保存最近的历史的相关信息,而不是一系列相关的数据点的无用的信息。
  • 预测神经网络能力:这已经是动态路由的一部分,从而强迫每一层都去预测下一层的表达。这是一个非常强大的自学习技术,在我们看来,它比我们社区所开发的所有的其他类型的无监督学习都更有效果。胶囊现在需要能够预测长时间的时空关系,但是现在这个能力还没有被实现。

持续学习 – 这一点很重要,因为神经网络需要不断向学习新的数据点。目前的神经网络每一次都只能够重新训练才能够学习新的数据。神经网络需要能够自我评估哪些是它们已经知道的以及哪些需要重新的训练。这也是现实生活中的增强学习任务所需要的,这样我们就能教机器学习新的任务而不会忘记旧的任务。

迁移学习 – 或者我们如何能够让这些算法通过观看视频自己学习,就像我们想要学习如何做一道新菜一样。这个能力需要我们前面列出的所有的组件,并且对于增强学习非常的重要。现在你只需要给机器一个例子,就可以训练你的机器来做你想要它做的事情,就像我们人类一样。

增强学习 – 这是深度神经网络的研究的圣杯:教给机器如何在一个真实世界的环境中去 学会行动。这需要自我学习、持续学习、预测能力以及很多我们不知道的东西。在增强学习领域还有很多的工作要去做,但是对于作者来讲,他仅仅是了解了这个问题的皮毛,距离解决它还有很多的路要走。

强化学习通常被认为是“锦上添花”,这意味着它仅仅是一个塑料合成大脑上的小型训练。那我们如何能够得到一个能够轻松解决所有问题的“通用”大脑呢? 这是一个先有鸡还是先有蛋的问题。今天为了一个一个的解决增强学习的问题,我们使用标准的神经网络:

  • 一个深度神经网络,它接受大量的输入数据,例如视频或者音频,然后将它们压缩为表达
  • 一个序列学习神经网络(例如RNN),去学习任务

上面是解决这个问题的两个显而易见的解决方案,但明显是错误的。但这正是每个人现在都在使用的,因为它们是目前可用的组件。结果却是不令人满意:我们的确可以从头学会玩视频游戏,并且掌握象棋或者围棋这类完全可被观察的游戏。但是不用我说,这些远远不能够解决现实世界的复杂问题。想象一下,一个AI玩Horizon Zero Dawn可以比人玩的更好,我非常想看到这个发生。

这正是我们想要的,机器可以和我们人类一样的运行。

我们在这里详细介绍了增强学习的工作和建议。它使用一个可以连续操作的预测神经网络以及一个关联存储器去存储当前的体验。

不会再存在循环神经网络 – 循环神经网络(RNN)已经出现了有一段时日了。RNN在训练并行化方面表现的非常不好,即使在特殊定制的机器上运行的也非常慢,原因是它们需要非常高的内存带宽,由此它们更受限于内存带宽而不是受限于计算能力。基于注意力的神经网络训练和部署上更高效也更快速,并且他们不容易受到训练和部署伸缩性的影响。在神经网络中,注意力有可能改变很多架构,但是现在它还没有得到应有的认可。将关联记忆和注意力结合起来,将会是下一波神经网络发展浪潮中的核心。

注意力神经网络已经能够像RNN一样学习序列,并且能够减少100倍的计算量!谁能够忽略这个巨大的进步? 我们认识到基于注意力的神经网络将会慢慢的在语音识别领域替换RNN,并且会在增强学习架构和通用人工智能领域获得一席之地。

硬件

硬件是深度学习取得进步的核心,让我们忘掉深度学习在2008-2012年的快速扩张,近些年深度学习迅速发展主要是因为硬件:

  • 每个手机上的廉价的图像传感器使得我们可以收集大量的数据集
  • GPU可以加速深度神经网络的训练

我们之前曾频繁的讨论过硬件。但是现在需要进行更新了。在过去的1-2年,我们看到了机器学习硬件的爆发式发展,尤其是针对深度神经网络。

有多家公司在这个领域有所投入:NVIDIA、Intel、Nervana、Movidius、Bitmain、Cambricon、Cerebras、DeePhi、Google、Graphcore、Groq、Huawei、ARM、Wave Computing。它们都在开发能够训练和运行深度神经网络的定制化高性能芯片。

关键是,在提供最低功耗和最高性能的同时,运行最新、最有用的神经网络。但是这个领域里很少有人能够理解硬件如何真正的改变机器学习、神经网络以及人工智能。很少有人理解芯片的重要性以及如何去开发它们。

  • 训练还是推理? – 很多公司在打造能够进行神经网络训练的芯片,其目的是抢占NVIDIA的一部分市场,而NVIDIA是神经网络训练硬件的事实上的标准。但是训练仅仅是深度神经网络应用世界中的一小部分。对于任何一个训练步骤,在真实世界中都有实际应用的上百万次的部署。例如你可以在云上使用一个目标检测神经网络:它基于大量图片进行一次训练,但是一旦训练完成,它将会基于数十亿数据在上百万台计算机上运行。这里试图说明的是:就像与真正使用的次数相比,训练次数其实很少,同样训练硬件的重要性也不高。而且制造训练所需要的芯片组需要额外的硬件和技巧。这意味这对于相同的性能需要更高的功率,因此不适合进行当前的生产部署。训练硬件重要,也是对推理硬件的简单调整,它并没有你想的那么重要。
  • 应用 – 在这个领域,能够提供以更低能耗来进行更快训练的硬件非常重要,因为它能够帮助更快创建和测试新模型。但是,运行应用的硬件(大部分用于推理)才是真正的飞跃。目前,有很多应用由于没有硬件或硬件低效的问题还不能用或不实用。比如我们的手机可以是语音助手,但由于不能让它一直在线,目前还远不达理想状态。我们的家庭助手都需要连接到供电设备上,因此不能随时的跟随我们在家里随意移动,除非我们周边有多个麦克风和设备。可能最重要的应用是将手机屏幕从我们的生活中移走,然后嵌入到我们的视觉系统当中。没有超级有效的硬件,所有这些应用以及其他更多应用(小机器人)都将无法实现。
  • 赢家和输家 – 在硬件领域,赢家是单位能耗最低并且能够最快进入市场的那些企业。例如在手机中取代SoC。这每年都在发生。现在想象一下将神经网络加速器嵌入到内存中,这可能能够更快征服和明显渗透大部分市场。这就是我们所说的赢家。

前面我们简要讨论了应用,但是我们需要详细讨论一下AI和神经网络如何进入和影响我们的生活。如下:

  • 图像和视频分类 – 已经有存在于很多云服务中。下一步在很多智能相机做到这些(已经有很多厂商提供)。在未来,神经网络将会越来越减少对云的依赖而在本地处理越来越多的数据:因为保护隐私和节省带宽而成为赢家。
  • 语音助手 – 因为能在我们的“智能”家居中播放音乐和控制基本设备,语音助手正在成为我们生活中的一部分。但是对话是我们人类活动中如此基础的一个能力,我们太把它当成理所当然的事情了。能够与你对话的小型设备是一场正在发生的革命。语音助手在为我们的服务中变得越来越好。但是它们仍需要连接电源。我们真正需要的助手是能够跟随我们移动的。我们的手机合适吗?在这里硬件又一次获得了胜利,因为硬件的进步使之成为可能。Alexa、Cortona和Siri会一直在你的身边陪伴。手机将很快变为智能家居,这是智能手机的有一次胜利。我们还希望语音助手能在车里跟随我们在城市中移动。我们需要能够在本地处理声音,越来越少的依赖云,从而更好隐私保护并降低带宽成本。硬件的进步将在1-2年实现这些。
  • 真正人工助手 – 能够识别语音真的很棒,但是我们真正需要的是能够实时识别我们所看到的,在我们移动时对周围环境进行分析。这是真正会让我们喜爱的智能助手。神经网络硬件能够满足你的这个愿望,因为分析视频流非常耗费计算能力,而且已经达到了现有硅基硬件理论的极限。换句话说,实现这些要比语音助手困难的多。但是这并不是不可能的,许多智能初创公司(比如AiPoly)已经有了所需的相关软件,但是缺乏能够支撑在手机上运行的强大硬件。还要注意的是,利用可穿戴眼镜之类的设备替换手机屏幕,将会使得智能助手真正的成为我们生活的一部分。
  • 烹饪机器人 – 会做饭和清洁的机器人将会成为下一个伟大的设备,我们可能很快就会拥有相关硬件,但是我们缺乏对应的软件。我们需要迁移学习、持续学习以及增强学习。这些工作看起来都非常有魅力,因为你会看到:每一个配方都是不同的,每一个烹饪的原材料看起来都不一样,我们不可能硬编码这些选项,我们需要一个综合体来非常好的学习和总结,从而能够完成相关的工作。我们远没有达到这个地步,但是也不是非常的遥不可及。按照目前的发展速度,可能需要几年的时间。我过去几年就在做这些工作,未来也将继续做下去。
  • Jan 19 / 2018
  • 0
Tech

锐眼洞察 | 使用卷积神经网络来检测卫星图像的特征(翻译)

作者:Ahmet Taspinar 

原文:Using Convolutional Neural Networks to detect features in satellite

译者:TalkingData数据科学家 李政昕

本译文禁止商用,转载请注明来源!

1.介绍

之前的博客文章中,我们已经看到了如何在TensorFlow中构建卷积神经网络(CNN),从零开始构建各种CNN架构(如LeNet5、AlexNet、VGGNet-16),并在MNIST、CIFAR-10、Oxflower17数据集上进行训练。

如果您一直关注最新的技术发展,您可能已经知道CNN能用于人脸识别、物体检测、医学图像分析、制造过程中的自动检测、自然语言处理任务以及其他许多应用。可以说,想找到CNN的实际应用,你仅仅受想象力和创造力(当然还有目的、精力和时间)的限制。

受到Kaggle的卫星图像特征检测挑战的启发,我想知道在卫星和航拍图像中检测特征是否容易。 如果这是可能的话,它的实际应用将是巨大的。在全球城市化进程中,城市正在不断扩大、发展和变化。这伴随着新的基础设施建设、新的建筑和社区诞生,以及景观的不断变化。监控和跟踪所有这些变化一直是一个劳动密集型工作。如果我们每天都可以得到全新的卫星图像,并使用深度学习来立即更新我们所有的地图,那么对于在这个领域工作的每个人来说都有非常大的帮助!

深度学习领域的发展如此之快,以至于几年前的热门——“简单”的图片分类已经显得过时了。目前,对象检测已经成为主流,在接下来的几年里我们可能会看到越来越多使用图像分割的应用(见图1)。

image

图1:计算机视觉中的任务可以分为图像分类、对象检测或分割任务

在这个博客中,我们将使用图像分类来检测航拍图像中的道路。 为此,我们首先需要获取这些航拍图像,并获取包含道路位置信息的数据(第2.1节)。 之后,我们需要将这两个图层放在一起(第3.1节)。 将准备好的数据集(第4.1节)以正确的格式保存后,我们可以将其送入建立卷积神经网络(4.3节)。 最后查看这个方法的准确性,并讨论可以使用哪些方法来改进它。

2.获取数据

任何数据科学项目中的第一个(也是最困难的)步骤总是获取数据。幸运的是,有许多包含各种形式卫星图像的开放数据集。有Landsat数据集、ESA的Sentinel数据集、MODIS数据集、NAIP数据集等。 每个数据集都有不同的优点和缺点。像NAIP数据集提供高分辨率(1米分辨率),但只覆盖美国。像Landsat覆盖整个地球,但分辨率较低(30米)。 还有其中一些数据集显示哪种类型的土地覆盖(森林、水、草地),其他数据集包含大气和气候数据。

由于我来自荷兰,所以我想使用覆盖荷兰的航空/卫星图像,因此我将使用PDOK提供的航拍图像。 这不仅是相当新的,并且他们也提供令人惊喜的25厘米的精度。

荷兰政府组织有很多可用的开放数据使用Pdokviewer,您可以在线查看大量这样开放的数据集:

  • 包含基础设施的层(荷兰的各种公路、铁路、水路(NWB wegenbestand)
  • 包含市与地区边界的层
  • 物理地理区域
  • 每个政府组织的位置
  • 农业区域
  • 每个街区的用电量
  • 土壤的类型与地形图
  • 每个街区的居民人数
  • 地表使用方式等等(甚至棕色长耳蝙蝠的生活栖息地)

image

图2:PDOK中可用的不同类型的图层

因此,有许多可用的数据集可以用作第二层(即作为包含道路位置信息的数据,之后需要与航拍图像数据进行合并),并使用它来自动检测卫星图像中的这些类型的特征。

PS:另一个包含很多地图的网站是Atlas Natuurlijk Kapitaal

2.1使用owslib下载图像

我感兴趣的图层是包含道路类型的图层。可以从荷兰政府的开放数据门户下载具有道路类型(NWB wegenbestand)的地图。航拍图像可以使用Web地图服务(WMS),可以通过Python包owslib下载。

WX20180122-103330

用“dx”和“dy”我们可以调整缩放级别。200的值大致对应于12的缩放级别,100的值大致对应于13的缩放级别。

此过程会在边界框((90000,427000),(110000,447000))内生成10.000个图块。这些坐标在rijksdriehoekscoordinate参考系统中给出,并且与WGS 84参考系统中的坐标((51.82781,4.44428),(52.00954,4.73177))相对应。 它覆盖了鹿特丹南部几平方公里(见图3),既包括城市也包括非城市地区,即我们的卷积神经网络有足够的道路进行训练。

image

图3:我们用来训练ConvNet的区域的边界框。

2.2查看包含荷兰道路的shapefile

接下来,我们将使用来自NWB Wegvakken(2017年9月版)的数据确定每个图像的内容。这是一个包含荷兰所有道路的文件,经常更新。可以从这个位置以shapefile的形式下载它。

Shapefile包含具有地理空间数据的形状,通常使用ArcGIS或QGIS等GIS软件打开。也可以使用pyshp库在Python中打开它。

WX20180122-103347

在这段代码中,列表’buffer’包含shapefile的内容。由于我们不想每次重复相同的shapefile读取过程,所以我们现在使用json.dumps()将其保存为json格式。

如果我们试图保存shapefile的内容,它会报错‘(…) is not JSON Serializable’。这是因为shapefile包含JSON本身不支持的数据类型(字节和日期时间对象)。 因此,我们需要为标准的JSON序列化器编写一个扩展,它可以获取JSON不支持的数据类型,并将它们转换为可序列化的数据类型。这是JSONencoder的方法。(关于这个方法的详情请看这里)。

WX20180122-103411

如果我们查看这个shapefile的内容,我们将会看到它包含以下类型的对象列表:

WX20180122-103437

它包含了大量的信息(手册中规定了每个信息的意义),但是对我们来说最重要的是

  • ‘WEGBEHSRT’ – >这表示道路类型
  • ‘coordinates’ – >这些是’rijkscoordinaten’系统中给出的这个特定对象的坐标。

在NWB Wegvakken中存在的不同的道路类型是:image

3.映射两层数据

现在应该确定哪些图像包含道路、哪些不包含道路。我们将NWB-Wegvakken的内容映射到下载的航拍照片的顶部来实现这一点。 我们可以使用Python字典来跟踪映射。我们还将使用字典来跟踪每个图像中存在的道路类型。

WX20180122-103452

在上面的代码中,前面从Shapefile转换为.JSON格式的NWB wegvakken的内容被加载到了dict_nwb_wegvakken中。

此外,我们初始化两个字典。第一个将填图像作为key,并将其内容列表作为值。第二个字典将填路类型作为key,将包含这些道路类型的所有图块作为值。如下所示:

WX20180122-103508

我们迭代dict_nwb_wegvakken的内容,对于每个元素,我们查找坐标和道路类型,并确认这些坐标是在我们的边界框内。通过以下方法来完成:

WX20180122-103522

add_to_dict方法首先通过确定每个tile命名的四个坐标(lowerleft x,y和upperright x,y)来确定一个坐标属于哪个tile。 我们还确定了每个坐标在tile中的相对位置。例如,“99800_445000_100000_445200.jpg”中的坐标(99880,445120)将具有相对坐标(0.4,0.6)。当你想绘制一个tile的内容时,这个方法很方便。

将道路类型与相对坐标一起添加到图像的内容列表。 同时,我们将tilename添加到第二个包含每个道路类型的tilename列表的字典中。

  • 如果只有一组坐标,并且这些坐标位于边界框内,我们立即将这些坐标添加到我们的字典中。
  • 如果元素中有多个坐标,我们不仅将所有的坐标添加到字典中,而且计算两个后续坐标之间的所有中间点,并将这些中间点添加到字典中。 这是必要的,因为两个坐标可以形成描述位于tile内部的道路的形状/线条,但是如果坐标恰好位于tile外部,我们将认为该tile不包含任何道路。 如图4所示。在左边我们可以看到描述一条道路的两点,但是它们碰巧位于tile外面,而在右边我们也计算两点之间的每一个中间点(每一个1 / POINTS_PER_METER米),并将中间点添加到字典中。

image

3.2可视化映射结果

利用可视化,查看映射是否正确、是否遗漏了道路,以及是否在两个坐标之间选择了足够的中间点以完全覆盖道路的所有部分。

WX20180122-103540

在图5中,我们可以看到两个数字,左边是(x0 = 94400,y0 = 432000),右边是(x0 = 93000,y0 = 430000)。 image

图5:体现NWB wegenbestand在tile上的映射结果的两张图

4.用卷积神经网络识别道路

4.1准备训练、测试和验证数据集

接下来,我们将把所有图像及其正确标签(道路是否存在以及道路类型)加载到数据集中。数据集是随机的,然后分成训练、测试和验证部分。

WX20180122-103602

我们可以使用以下函数对标签进行独热编码,并随机化数据集:

WX20180122-103613

4.2将数据集保存为一个pickle文件

将数据集加载到内存中的整个过程、尤其是随机化图像的顺序,通常需要很长时间。所以在完成一次之后,最好把结果保存为一个pickle文件。

WX20180122-103702

现在我们可以保存这次训练,在pickle中验证和测试这个数据集,准备部分的工作就完成了。

我们可以把这个pickle文件加载到卷积神经网络中并训练它来识别道路。

4.3训练卷积神经网络

正如你所看到的,在我们开始使用CNN之前,我们不得不做很多工作来准备数据集。这也反映了数据科学的现实:70%到80%的时间用于获取、理解和清理数据,数据的实际建模/训练只是工作的一小部分。

首先,我们从保存的pickle文件中加载数据集,从cnn_models模块中导入VGGNet并设置学习速率、批量大小等值。

WX20180122-103719

之后,可以构建包含卷积神经网络所有计算步骤的图并开始训练它。我们使用VGGNet-16卷积神经网络、l2正则化来最小化误差,学习率为0.0001。 在每一步中,训练准确率被附加到train_accuracies,并且在每10步,测试和验证准确率被附加到类似的列表。稍后我们将使用这些来形象化我们的准确率。

WX20180122-105502WX20180122-105536

4.5结果的准确率

下面是卷积神经网络的准确率结果。正如你所看到的,测试的准确率和验证集合在80%左右。

image

图6:训练、测试和验证集的准确率

从这些没有被准确分类的tile中可以看出,大部分被错误分类的tile是由于这些图片上的道路确实很难被检测到。 image

图7:被错误分类的一些tile

5.最后的话

我们已经看到了如何使用CNN在卫星或航空图像中检测道路。虽然我们通过卷积神经网络能够做的已经非常令人惊喜,但是AI和深度学习领域的技术发展是如此之快,“只是用CNN”已经过时了。

几年来,也有了被称为R-CNN、Fast R-CNN和R-CNN(如SSDYOLOYOLO9000)的神经网络。这些神经网络不仅可以检测图像中物体的存在,还可以返回物体的边界框。 现在还有可以执行分割任务的神经网络(如DeepMaskSharpMaskMultiPath),即它们可以确定图像中的每个像素属于哪个对象。 我认为这些可以执行图像分割的神经网络将是确定卫星图像内道路和其他物体位置的理想选择。在未来的博客中,我会初探如何使用这些类型的神经网络来检测卫星和航空图像中的道路(或其他特征)。

  • Jan 19 / 2018
  • 0
Tech

锐眼洞察 | 2018年云架构趋势(翻译)

作者:Keith D. Foote 

原文:Cloud Architecture Trends in 2018

译者:TalkingData数据科学家 孙强

本译文禁止商用,转载请注明作者与来源!

人们不断想出新的智能方式来使用云。 因此,云计算架构设计和开发不断被调整和改进。 今天的企业需要灵活变通,快速行动,了解客户的期望。 为此,企业依靠云提供专用通信系统、数据存储系统和大数据处理系统。 随着云技术的发展,组织不断发现越来越多的用途。

云架构描述了用于提供云计算服务的“软件系统的组织”。 它通常涉及云中的多个元素,它们通过松耦合机制(例如消息队列)相互通信。 云的体系结构必须足够灵活,以允许各种系统访问。 可伸缩性和安全性是设计中的两个重要元素。

数据架构不应与云架构混淆,数据架构正在进行类似的演变。 这只是数据架构中更大的一个主题。

混合云

越来越多的组织将采用内部数据处理、私有云处理、公有云处理和软件即服务(SaaS)的组合来提供研究成果和商业智能。 虽然这种方法具有很大的灵活性,但它通常不是一个简单的系统,而且往往在管理上“不必要地”昂贵和笨拙。 最近的DATAVERSITY调研显示,在被调研组织中有47.7%正在使用混合系统。

混合云的体系结构涉及整合本地资源和云资源。 对于大多数具有本地技术的企业而言,云端即服务的使用需要在混合架构中运行。 某个云服务可能具有与客户的良好匹配的体系结构,而另一些没有选择具备兼容系统的云提供商的云服务商,因为无需投资设备和软件,可以将配置成本降至最低。

在调研云提供商时,考虑在云和内部部署系统上整合“信息提供应用程序”也很重要。 混合架构应该包括整合来自物联网的大数据和远程传感器的能力。 兼容的系统无需购买新硬件来支持应用程序,并且可以简化流程。

机器学习和深度学习

深度学习和机器学习都基于算法。 机器学习为计算机提供了使用重复性经验进行学习的能力。深度学习借助图形处理单元(GPU)和海量数据进一步推动了这一过程,并且经常用于训练AI实体。

许多企业领导者认为,机器学习将最大限度地从大数据获得洞察,并为他们提供竞争优势。 还有一些商业领袖还不确定机器学习是什么。 那些了解并使用它的人已经获得了有用的商业智能。 在短短的几年中,机器学习已经从实验室实验转变为非常有用的研究工具。

哈佛商业评论分析服务公司最近的一项调查显示,60%的受访者认为其组织未来的成功取决于机器学习。 许多人已经开始使用深度学习来开发模式识别、工作流程管理、预测建议以及检测欺诈行为。

AWS和微软Azure之间罕有的达成了合作伙伴关系,体现了机器学习和深度学习的重要性。 他们的合作伙伴关系是通过深度学习“开放源代码库”Gluon的方式实现的,旨在实现特定流程的自动化,从而使机器学习更加精简。 这两家公司以及IBM、Google和其他科技巨头都看到了云计算机学习的巨大潜力。

云容器

云容器(应用程序容器的版本)和容器管理平台将在2018年获得普及,因为它们是有用的、高效的和功能性的。 Forrester副总裁兼首席分析师Dave Bartoletti建议,目前有10%的企业正在生产环境使用容器,并且多达三分之一的企业已经开始对其进行测试。术语“应用容器”代表了一种提供一致性和设计效率的新技术。 基本上,它们是虚拟机和虚拟机管理程序的替代品。 容器比虚拟机更有效地使用存储资源、内存和CPU,从而可以使用相同的基础结构来支持更多的应用程序。

应用程序容器使用称为基于容器的虚拟化系统。 它是一个专为数据和处理而设计的“虚拟”存储容器,它将物理计算机环境中的所有内部元素隔离开来。 它以计算机为平台,独立运行。

这可以保护容器的应用程序和服务器,避免由于错误而损害对方。 IT专家声称,基于容器的虚拟化支持更高效的设计,无需在计算机上架设基础架构系统。 容器有自己的基础设施。

另外,云容器具有非常便携的特点。 一个容器可以很容易地上传到各种不同的服务器上。 容器可以很容易地复制,使得它们可以用于测试、开发和集成,而无需重新配置主机。 (注意:应用程序容器仍然是新的,并不总能理想的与所有服务器兼容,需要仔细检查容器的限制)。

人工智能

云提供商历来重视提供基础架构和软件。 然而,最近焦点转移到了提供智能云。仅支持自有云的 IBM Watson,已经在人工智能(AI)中处于领先地位。开发一个AI实体的主要挑战是在训练中涉及的时间和金钱。 云端GPU技术已被用于提供深度学习。

IBM最近宣布他们可以将AI实体的训练时间大幅缩短65%。 这被认为是一个重大的突破,也是迈向减少训练AI实体所需时间和金钱的重要一步。

很少有组织可以负担对人工智能的研究。 但是,主要的云供应商已经在AI研发方面投入了大量资金。 他们的目标是开发一种能够比竞争对手更快、更高效、更直观地与客户合作的云。 使用具有人工智能能力的云可以提供:

  • 廉价的人工智能研究:集成人工智能的云服务可以为企业提供人工智能研究和开发的资源,客户只需付出时间成本。 一个不成功的试点项目可以很容易地关闭,而无需处理不再需要的昂贵的硬件。
  • 易用性:云供应商一直在努力使自己的系统更加“用户友好”,并使用人工智能来实现这一目标。
  • 使用最新技术:使用AI云服务可以使企业保持技术领先的地位。面对竞争,主要的云供应商在不断提供新的AI服务。

人工智能和云的安全

为了安全目的,人工智能被期望越来越多地用于云内外。 在云中运行时,安全性是一个重要的考虑因素,AI提供了一种通过识别威胁和缩短响应时间来打击网络攻击的方法。在企业与多个系统进行交互的云中,云服务可能会受到更多的破坏,从而导致网络欺诈和对组织私有计算机的攻击。 安全性是选择云的重要因素。2017年10月,Vipre Cloud宣布使用人工智能来防止在线终端攻击。 他们正在努力通过将行为分析、众包数据收集、机器学习和统一管理相互关联的安全系统,来保护这个脆弱的区域。 Vipre Cloud不断更新最新的网络攻击信息,并在本地安装了一个配套代理,以确保端点的安全。

区块链

区块链是一种分布式账本技术(DLT),用于支持比特币和其他加密货币,可以通过使用计算机网络而不是单个本地化服务器来存储大量数据。 区块链本身不直接提供安全性,但可以创建安全应用程序。 ABI Research表示,区块链提供了三个支持安全性的基本功能:

  • 不可变性:数据创建后无法更改。
  • 透明:每个人都可以看到发生了什么。
  • 自治性:其是自我治理的。

这项技术理论上可以处理涉及金钱、货物或财产的任何类型的在线交易。 网上金融交易的潜力很大,从税收到允许移民向其他国家的家庭汇款,在这些应用场景中,银行业操作起来可能很困难。

在2017年10月,IBM创建了一个新的区块链支付平台,可以加快跨境支付。 几个国际银行在这个项目上共同合作,包括澳大利亚国民银行和Danamon银行。 10月下旬,香港和新加坡的中央银行同意使用区块链技术在跨境网络上进行合作。

数据虚拟化

数据虚拟化是一个术语,用于描述数据管理的一种方法,允许应用程序恢复和操作数据,而不需要数据的技术细节,例如数据位于何处或如何格式化。它从各种来源向多个用户提供实时的综合和抽象数据。 数据虚拟化模型被认为易于理解、易于构建和易于维护。

数据虚拟化过程涉及从不同来源传输数据。 使用数据虚拟化技术的主要目标是通过单点提供来自各种数据源的数据访问。 这允许用户访问应用程序而不需要其的确切位置。数据虚拟化最近已经适应了云计算,并将在2018年得到越来越多的使用。

  • Jan 18 / 2018
  • 0
Tech

锐眼洞察 | 不可错过的2018年Fintech趋势(翻译)

作者:Adriana Bickford

原文:Top Technology Trends to look for in 2018

译者:TalkingData市场部

本译文禁止商用,转载请注明作者与来源!

随着2017年接近尾声,我们展望新一年,制定目标并翻开新一页。这是一个沉思、想象并满怀雄心壮志进入2018年的时刻。
毫无疑问,2017年让我们认识到,科技已被证明对服务产生了颠覆。从比特币的价格冲上高峰,到人工智能的影响力日益增长,我们可以看到社会对替代性金融服务的需求是多么急切。

热门AI文章:

那么,2018年需要注意那些热门科技趋势呢?通过与行业顶尖专家、领导者与预言家的讨论,我们选出了以下三大趋势。

区块链

由于比特币的神秘性,可能会让很多公司不敢使用它,但事实上数字货币已经进入了市场。甚至进入了证券交易所。

面对比特币在2017年的高潮,我们预测,它会给像以太坊和莱特币等其他加密货币让路,以积蓄能量。已有猜测,以太坊的市值将在2018年超过比特币。

CB Insight预测,到2020年,数字货币将会成为主导货币。企业与政府已经开始聚焦协议如何将数字货币整合入他们的系统,从而不被排除在外。甚至投入更多开发自有的解决方案。在这新的一年,我们将开始看到对加密货币的更多试验和实际应用。

人工智能(AI)

我们已经看到科技如何通过机器学习、机器人科学与聊天机器人,来不断拓展科学与技术的边界。

在2018年,AI与机器学习将继续占领新闻头条。有预估,到2020年,将有85%的客户交互由AI完成。随着实验进行,我们开始看到自动化流程将消除错误并降低成本。在2018年,其将通过分析与大数据的形式来优化决策并提高服务速度,产生更大的价值

在2018年,AI将不仅仅是“可有可无”而是“必不可缺”。

数字化体验——这次针对后端

虽然,数字化转型的焦点之前都集中在前端,我们预测,2018年将借助科技来赋能后端流程与系统,从而为客户提供全面的、流畅的体验

系统必须整合从触点到渠道来提供实时的客户交互,从而提供转型的业务模型。

上面就是我对金融科技发展方向的预测。由于对数字化服务的需求的增长,我们将继续看到客户离开网点并通过他们的设备轻松进行交易。传统银行要注意这些预测,并快速向整体客户旅程从面对面服务升级到日常服务的阶段转变。

2017年已经过去,是时候聚焦2018年,并关注如何参与到即将改变未来金融大局的主流趋势中来。

页面:123456789
随时欢迎您 联系我们