:::: MENU ::::

TalkingData's Blog

现在开始,用数据说话。

Blog

  • Jan 12 / 2018
  • 0
Data, Tech

锐眼洞察 | 如何用机器学习模型预测App用户流失?(翻译)

作者:Lisa Orr

原文:Predicting Mobile App User Churn: Training & Scaling Our Machine Learning Model

译者:TalkingData Frank Zhang

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

随着获取 App 新用户的成本飞涨,保留已安装用户是最大化获客成本和用户生命周期价值的关键。Urban Airship 的数据科学小组去年花费了一年时间来开发一种方法识别和定位可能停止使用您的应用的用户。我们称之为预测流失。

在这里,我提供了基于数十亿事件的可扩展机器学习预测模型建立过程的深入见解,并介绍这些预测能力如何带来对用户行为的新洞察,如何为新的触达策略提供动力,如何影响用户留存。

开发机器学习模型

流失预测是一个简单的分类问题 ; 及时回顾用户活动,检查一段时间后谁保持活跃状态,然后提出一个模型,将活跃用户和不活跃用户分开。借助于大量的数据,我们试图寻找用户可能继续打开应用程序的最佳指标是什么?

首先,我们可以查看用户的日常使用活动。用户打开应用程序的频率如何?他们最近什么时候打开的?如果我们试图预测谁会在不久的将来打开应用,一个好的指标可能是用户是否已经打开应用程序。接收推送通知的影响呢?选择接收它们是影响用户 App 活动的首要因素吗?

回顾 60 天的用户数据,我们在累积窗口中汇总了消息发送和应用打开信息,以及一些附加信息,如设备平台和 App ID。然后,我们根据用户在未来 30 天内是否打开应用,将每个用户标记为已流失或未流失。利用为每个用户汇总的特征数据,我们使用梯度提升树机器学习算法来训练模型。

我们对流失预测进行了六个月的历史研究,对数十种特征(即可观察的用户和应用行为)进行了模型训练。我们的目标是在预测客户流失方面获得更高的准确性,并洞察影响客户流失的因素。通过研究模型,对于哪些特征影响最大,我们发现了一些有趣的模式:

  • 打开活动。到目前为止,未来是否活动的最大预测因素是从最近一次打开以来的持续时间。这是有道理的,因为这是与我们试图预测的时间方向相反的方向。在最近的时间窗口内打开的次数和最近一次打开距今的时间远近程度在预测谁将要流失方面都起着重要作用。

  • 发送活动。另一个有趣的发现是,接收推送通知对用户保留有积极影响。这又是有道理的,如果您选择接收推送通知,则表明您对该应用表现出积极的兴趣,并且表明了发现其更多价值的开放性。

    来自 Urban Airship 的数据科学和营销团队最近的一项研究说明了这一点。收到至少一个推送通知的用户与没有收到推送消息的用户相比,留存率高出 66%。我们还发现收到的通知数量和保留的天数之间的关系,用户收到的消息越多,他们继续使用应用的时间越长。与打开次数一样,通知发送的距今的时间远近和频率在模拟客户流失活动中起到了作用。

扩展模型

现在我们创建了一个可工作模型,下一步就是测试它扩展到数千个应用和数十亿用户的能力。添加更多的应用很快暴露出一个弱点:将数据从 csv(从 MapReduce 作业的输出创建我们的特征数据)重新处理为稀疏矩阵(提升树模型所需的格式)。

由于内存问题,此处理步骤导致作业失败。增加计算资源可以暂时解决问题,但是随着我们添加更多的应用,我们需要重新思考我们的策略。在开发阶段写入 csv 非常有用,因为我们可以仔细检查我们的工作。但除了人类可读,使用中间格式没有真正的好处。

我们直接在 MapReduce 作业内将特征数据重新格式化为稀疏矩阵。到目前为止,通过在 MapReduce 阶段添加更多的机器或者增加建模阶段使用的单机的大小,解决了更多的内存压力。随着格式的变化,我们能够同时训练数千个应用的模型。

模型生产

一旦我们有了一个可扩展的工作模型,下一步就是搞清楚如何最好地向客户提供这些预测。对于模型中的每个用户,我们可以得到一个打分为 0 到 1 的流失概率。分数越高,用户越可能会流失。反之,得分越低,用户越可能会留存。

如果你看一下流失概率的分布,就会发现你的应用的超级粉丝(肯定会回来的)和你的应用将要流失的用户。而在这中间,还有一些混杂的个体,对于他们将要走向哪个方面不太确定。

模型的概念使我们将用户分成三组:高风险组、中风险组和低风险组。通过预测结果来进行推送,我们的客户能够根据他们触达策略的激进程度来调整他们的受众细分。

例如,如果您试图重新接触风险较高的用户,那么如果只包括高风险受众,则可以扩大提供的奖励,或者如果同时包含高风险和中等风险受众,则可以将其缩小。

一旦用户被分类为高风险、中风险或低风险,客户可以通过实时移动数据流立即获取数据,以便在其他系统中进行分析或采取行动,DashBorad 可查看近五周的表现,通过可视化 展示为了将用户从高风险状态转移到低风险状态所做的努力效果如何。

在实际环境中预测

为了说明预测流失如何影响触达策略(反之亦然),这里有几个匿名的 Urban Airship 客户和他们各自的流失评分分布:

 

 

 

以上可视化表示 Urban Airship 三个示例应用的用户流失预测分数直方图。每个条形表示可能流失分数落在指定分数范围内的用户的百分比。颜色代表风险类别:绿色是低风险,黄色是中等风险,红色是高风险。预测于 2017 年 2 月 3 日进行。

比较这些应用,我们可以看到流失预测的用户分布。与大多数用户处于高风险组的应用 B 相比,应用 A 中大多数用户处于低风险组。对于应用 C,我们看到一个双峰分布,其中一大群用户处于高风险组,另一大群用户处于低风险组。

流失预测与应用触达策略有何关系?这三个应用都有大量的受众群体(超过 300 万个独立设备),且都使用消息推送来吸引用户。

但是,这些应用的触达方式存在很大差异。应用 A(低风险应用)有一个非常复杂的触达策略,广泛使用高级功能(即标签、生命周期列表、应用程序内通知、消息中心等),针对受众分群推送,并获得对这些消息的高度参与(通过直接或在影响下打开应用)。

另一方面,应用 B(高风险应用)在进行简单的受众细分后使用非常基本的消息推送策略,偶尔传达给有限的受众,并且几乎没有受众参与。

应用 C(流失分数存在双峰分布的应用)使用了中间策略。他们利用一些高级的参与度特征,如别名、徽章和深度链接,几乎只发送广播信息,推送了这些信息后他们观察到了大量的受众响应。

通过比较流失预测和应用触达策略,我们的客户可以找出哪些地方需要改进,这些改进带来哪些变化,并且可以比较流失分数在每周的变化情况。

对于应用程序 B,我们建议针对更多的受众群体,更频繁地进行消息推送,并将他们的消息推送策略的使用扩展到更多的方式(如应用内消息推送和消息中心), 以及通过标签和指定用户提高触达精准度。

对于应用 C,我们建议不再使用广播推送,转而明确针对高风险的受众。

下一步是什么?

预测性流失使企业能够在正确的时间,正确的渠道将正确的内容送达用户,将用户从要流失的转变为留存的。但这只是数据科学和机器学习能力的开始。不久以后,使用数据自动发送消息通知并改善用户触达效果将是公司的标配。

 

  • Jan 12 / 2018
  • 0
Data, Tech

锐眼洞察 | 零售业中的数据挖掘问题 ①(翻译)

作者:Ilya Katsov

原文:DATA MINING PROBLEMS IN RETAIL

译者:TalkingData首席数据科学家 张夏天

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

零售是数据科学和数据挖掘重要的商业应用领域之一。零售领域有着丰富的数据和大量的优化问题,如优化价格、折扣、推荐、以及库存水平等可以用数据分析优化的问题。

全渠道零售,即在所有线上和线下渠道整合营销、客户关系管理,以及库存管理的崛起产生了大量的关联数据,大大增强了数据驱动型决策的重要性和能力。

尽管已经有许多关于数据挖掘在营销和客户关系管理方面的书,如 [BE11, AS14, PR13 etc.],但绝大多数书的结构更像是数据科学家手册,专注在算法和方法论,并且假设人的决策是处于将分析结果到业务执行上的中心位置。

在这篇文章中我们试图采用更加严谨的方法和系统化的视角来探讨基于数据分析的经济学模型和目标函数如何使得决策更加自动化。在这篇文章里, 我们将描述一个假想的收入管理平台,这一平台基于零售商的数据并控制零售策略的很多方面,如价格、营销和仓储。

导出图片Fri Jan 12 2018 10_56_59 GMT+0800 (CST)

我们专注在将经济学框架和数据挖掘方法的组合有以下两个主要的原因:

  • 我们可以从经济学教科书上找到上百个与零售有关的经济学模型,因为关于市场、折扣、竞争等问题在上个世纪得到了深入的研究。然而,许多模型都是高度参数化的(即严格的由带有有限参数的公式所定义)并且不能足够灵活而精确地对现实世界的问题建模。但数据挖掘提供了很多非参数建模技术,可以帮助创建灵活而实用的模型。在最近十年里,也有许多成功的平衡抽象模型和机器学习技术的文章和案例研究已经发表。
  • 快速的数据循环使得在现代零售业中可以使用相对简单的模型做出更加准确的预测,因为小规模增量式的预测一般而言要比大决策更加容易。

    例如,因为对于一个新的颠覆性产品在消费者心中的感知价值是未知的,要计算它的最优价格是很困难的。但是根据需求和库存水平实时调整促销价格则是相对容易的。有一些成功的商业解决方案对价格优化就几乎丢弃了经济学模型,简单的根据销售闭环的反馈情况来决定价格的上升和下降 [JL11]。

以上两点意味着在零售业自动化决策和动态优化具有很高的潜力,因此我们专注于研究这个领域。本文很大篇幅用于综述零售业者和研究人员发表的成果,这些成果都是他们在综合应用抽象经济学模型和数据挖掘方法构建实际的决策和优化系统中产生的。

特别的,本文主要受到 3 个案例研究的启发,分别出自 Albert Heijn [KOK07], 新西兰最大的连锁超市,Zara [CA12], 一家国际服装零售商,以及 RueLaLa [JH14], 一家创新在线时尚零售商。我们同样综合了来自 Amazon、Netflix、LinkedIn 和许多独立研究者和商业项目的结果。同时,我们避免使用那些缺乏实践支持的学术结果。

我们的研究主要着眼于与收入管理相关的优化问题,包括营销和定价等问题。更加特殊的数据挖掘应用,如供应链优化和欺诈检测, 数据挖掘过程实现的细节(如模型质量的验证)则不在这我们研究的范畴内。

本文剩余部分组织如下:

  • 我们首先引入一个简单的框架将零售商的行为,利润和数据联系在一起。此框架将作为更统一的方式来描述分析问题。
  • 本文的主体部分探讨了一系列与零售业相关的优化问题。我们将在不同章节逐个介绍这些问题。每个章节会简要描述问题,并提供一组业务案例和应用,以及详细介绍如何将问题分解成经济学模型和数据挖掘任务,使得可以通过数值优化方法来解决业务问题。
  • 然后,我们会有一个章节专门讨论这些方法在实际应用中的可期的经济收益。
  • 最后,总结部分会对这些问题之间的依赖关系进行讨论,从而阐明一般的原则和关键点。

优化框架

本文介绍了 6 个主要与营销和定价相关的优化问题,这些问题都能够应用数据挖掘技术来解决。尽管这些问题非常不同,但我们尝试建立了一般性的框架来帮助设计求解所需的优化和数据挖掘任务。

该框架的基本思想是用一个经济指标,例如毛利率作为优化目标,并将这一目标作为零售商行为(如营销活动或者分类调整)的函数。

同时计量经济学目标也是数据的一个函数,即计量经济模型应该被零售商的特性参数化,从而在其输出中产生一个数值,如毛利率。

例如,某零售商在计划一个邮件营销活动。可行的行动空间可被定义为一组对于每个客户发送/不发送决策集合,而活动的毛利率则决定于营销动作(有些人会接受激励而另一些人不会)以及给定客户的期望收入和邮件成本。这一方法可以更形式化的由如下公式表达:

WX20180112-105753

此公式里 G 是可用于分析的数据,是零售业者行为和决策空间, 是计量经济模型函数,其参数是 d 和 A,而 A是最优策略。这一框架由文献 [JK98] 整理提出。

模型 G 的设计十分依赖于问题本身。在大部分情况下,对毛利率建模和优化都是合理的。但是,有些情况下其他的目标也是有可能的,就如下一章探讨的响应建模。同时需要注意的是优化问题(1)也跟时间有关系,因为环境会随着如新产品的上架、竞争对手的行动等因素变化,零售业者自己的行为也会产生影响。

数据挖掘在这一优化问题中的角色是非常重要的,因为计量模型 G 通常都比较复杂且必须基于数据通过回归等数据挖掘技术学习确定。

在某些情况下因为复杂性太高(如用户的行为很难精确预测)或者因为无法将现有数据做外推(如对于完全新的服务),模型是无法完全确定的。这时,可以用 A/B 测试和问卷调查来获得额外的数据来改进模型的精度。

问题 1: 响应建模

问题描述

在广告或者特价优惠活动中,需要决定将一些资源投放给一些客户。而这些资源都是有成本的,如邮寄印制商品的目录的资金成本,或者一些负面效应(如使得用户取消邮通知订阅)。

同时, 这些资源将会影响用户的决策,如促使他们更多地消费或者购买更高价值的产品。其目标是找到一组最靠谱的候选客户,对他们投入资源后能够使得业绩最大化。

投入的资源可以是同质的(如所有参加的客户都得到同样的激励)也可以是个性化的。在后一种情况下,零售业者将对每个不同的客户提供不同的激励如不同产品的优惠券来最大化总体的收益目标。

应用

响应建模被广泛的应用在营销和客户关系管理上:

  • 确定特定的折扣、优惠券和特价,需要识别出客户对这些激励的反应。
  • 有这对性的邮件促销、活动和赠品(如 4S 店提供的免费太阳眼镜)通常需要识别出最优价值的客户来降低营销费用。
  • 客户挽留计划需要识别出那些可能会离开但可以通过激励来改变主意的客户。例如,电商可以向那些放弃购物车或者离开搜索会话的客户发送特价优惠。
  • 在线目录和搜索结果可以根据客户对某些商品的的喜好来重新调整。
  • 响应建模帮助优化了电邮促销来避免不必要的垃圾邮件,这些垃圾邮件可能会让客户取消邮件订阅。

求解

基于以上的讨论,我们现在可以认识到这个问题就是资源分配的优化问题,而优化问题由一个目标函数驱动。一个最基本的方法是根据每个客户的响应概率和期望净价值来对促销活动的整体利润建模。

WX20180112-105807

这里 Pr(R│u;I) 是给定客户 u 对激励 I 的响应概率,g(u|R)) 是这个客户响应的激励的净价值,而 c 则是激励的成本。公式中第一项是响应从响应用户获得的净收益,而第二项则是对应在没有响应的客户上的期望损失。目标是通过找到一组最有可能响应活动并能贡献高利润的客户子集来最大化 G。因为公式 (1.1) 可以约简如下:

WX20180112-105817

这里 E{g|u;I} 表示对给定客户在假定他会接受激励的情况下的毛利率的数学期望,而客户的选择标准则要符合以下条件:

WX20180112-105825

同时,最优的客户子集 U 可以定义为最大化毛利率的子集:

WX20180112-105833

我们也可以以随机分配激励为基准的净值最大化。为此,我们假设参与该次营销活动的客户数固定为 |U|。首先,我们将公式 (1.2) 展开,显示的包括对于随机选取的 |U| 个客户的营销活动的期望毛利率。

WX20180112-105843

此处 E{g|I} 是所有客户上的平均净价值。这一平均净价值是常数,因此在 |U| 确定的情况下在目标函数中可以被略去。因此,公式(1.2)在固定 的情况下同样可以得到(1.3):

WX20180112-105852

然而,文献 [VL02] 提出这一模型存在一定的缺陷,因为该模型偏向于易于接受激励的客户,而没有考虑那些有没有激烈都会贡献同样利润的的客户。为解决这一 缺陷,我们需要根据以下四种情况来计算客户集合 U 的毛利率:

  • G1 – select U according to the equation (1.2) and send incentives to everyone in
  • G2 – select U randomly and send incentives to everyone in
  • G3 – select U according to the equation (1.2) but do not send incentives at all
  • G4 – select U randomly but do not send incentives at all
  • G1 – 根据公式(1.2)选择 U 并向中所有客户发送激励
  • G2 – 随机选择 U 并向 U 中所有客户发送激励
  • G3 – 根据公式(1.2)选择 U 但是不发送任何激励
  • G4 – 随机选择 U 但是不发送任何激励

公式(1.2)是最大化 之差即相较于随机投放的提升度。另一种方法是优化,这一目标函数不仅仅度量相较于随机投放的提升度同时还考虑去除掉在同样的客户集合上不做任何激励的提升度。在此情况下,公式(1.2)变为如下形式:

WX20180112-105900

此处最后一项对应的是未被激励的客户的期望净价值。这一方法被称为差分响应分析或者提升度建模由文献 [BE09] 提出。

值得注意的是,公式(1.2)和(1.4)都不是通过最大化营销费用来优化的。考虑如下情况,每个响应的用户可以贡献 100 美元的净利润,而激励费用为 1 美元。如果一个客户组有 100 万客户,其中有 0.5% 的潜在响应者,则花费最大的营销活动是对每个客户都做触达则最终将损失 50 万美元(总的响应者贡献的 50 万美元净价值减去活动费用 100 万美元)。

公式(1.4)对于各种类型的价格折扣特别重要(优惠券、临时价格折扣、特价)。考虑如下问题:“一个零售商应该向每天都买苹果的人提供苹果优惠券吗?” 根据公式(1.2),回答是肯定的。因为这个人很有可能会使用优惠券。

然而,更可能的是这个客户用更低的价格购买了同样数量的苹果,根本上这会降低零售商的利润。公式(1.4)考虑了默认的客户行为从而消除了这一问题。我们在下一节将继续讨论价格区分问题因为这一是个复杂的问题远超了公式(1.4)范畴。

公式(1.2)和(1.4)中净收入的数学期望能够基于过去客户对激励是否接受的历史数据用分类或者回归模型来确定。这一问题可能是非常有挑战性的,特别是当需要评估的激励与过往出现过的都存在某种程度上的差异。

在这种情况下,全规模的活动上线之前需要在一个客户测试组上进行测试。另外,对于零售业者而言毛利率并非唯一的关键指标。在公式(1.2)和(1.4)中使用的毛利率度量关心的是第一次付款后即时的汇报,从客户关系管理的角度看这是非常简单的视角。

零售业者还会关心其他不同的度量,度量上的多元性是如此巨大以至于有一门专门研究这个问题的经济学分支 – 倾向性建模[SG09, LE13] – 这一学科发展了不同的模型来预测用户未来的行为。最重要的倾向性模型包括:

  • 生命价值预测。生命价值模型是估计一个客户在其生命周期内可以贡献的收入或者利润总额。这一指标对于那些目标为获取新客的营销活动而言是很重要的。

  • 钱包份额预测。钱包份额模型用来估计用户对于某些类型商品,如杂货或者服饰,在某一零售商及其在各竞争对手那花钱的比例。这一度量能够揭示哪些客户具有贡献高收入的潜力,因为这一模型能够用在忠诚计划和提升使用的营销活动中。

  • 类型扩展倾向。该模型估计首次购买某一类型的商品后,从休闲产品转换到奢侈品的可能性。这一模型能够帮助设计目的是获得使用扩展的活动。

  • 流失倾向。这一模型估计客户从给定零售商流失并转换到竞争对手的可能性。如果客户具有较高的流失倾向则可以定向进行挽留活动。例如,一个零售商可以识别出那些放弃了在线购物车或者退出了搜索会话但是提供一定折扣或者赠品后会改变主意的客户。

  • 购物习惯改变倾向。每个客户的购物习惯最终确定了其对一个零售商的价值,即客户的购买频率、购买什么产品、购买什么类型的产品等等。这些习惯通常是稳定的,一旦零售商改变一个客户的分层,这个分层将会持续。

因此,零售业者通常对找到那些对改变习惯比较开放的客户感兴趣, 如那些从一个城市迁移到另一个城市的人群, 从学校毕业的学生, 刚刚结婚的人群等等。一个典型的例子是预测客户是否在怀孕早期 [DG12] 因为新生命的诞生会显著的改变客户的购物行为。

以上模型都能够嵌入类似公式(1.4)的公式来代替毛利率目标。我们在后面的小节中将针对讨价格差异化的情况下对折扣的响应倾向建模的情况仔细探讨倾向性建模。关于倾向性建模的更多细节可以参考 [FX06] 和 [SG09] 两本书。

这一框架也能够扩展到在多个可能的激励方案中选择最优的方案。例如,一个零售商可以估计对于两个激烈方案 A 和 B(例如巧克力冰激淋和香草冰激淋)的期望表现然后对于给定的用户可以根据以下标准[WE07]来选择最优的选项:

WX20180112-112023

最后,值得注意的是响应建模是与客户分群紧密耦合的:

  • 响应建模能够用来检验通过聚类行程的客户分群的可行性。一个分群应该对特定的营销计划有持续的响应。

  • 倾向性模型是基于客户数据训练得到的回归和分类模型。客户分群可以参考对于主要回归量的分析结果。另一方面,从聚类结果中也可以发现合理的倾向性模型。

 

  • Jan 11 / 2018
  • 0
Ideas

锐眼洞察 | 大数据和经济的不安全感会驱动更多的SaaS创业公司吗?(翻译)

作者:Ryan Kade

原文:Will Big Data and Economic Fears Drive More SaaS Startups?

译者:TalkingData架构师 曾晓春

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

big-data-and-SaaS-startups-768x556.jpg

1995年,第一家SaaS的公司WebEx创立。在互联网的早期,像WebEx这样的SaaS公司是一个新鲜事物。在当时,没有人认为这种商业模式会成为主流。在过去的二十年里,这种情况发生了显著变化。

SaaS行业去年的市场规模约为2040亿美元。它每年以将近25%的速度增长。SaaS服务已经成为一种卓越的新业务模式。许多因素在这个行业的增长中发挥了作用。

其中有两个因素可能比任何事情都更快地推动(SaaS行业)发展。大数据的进步与经济不确定性的增长。我们来看看这两个因素。

大数据是SaaS产业的驱动力

一些业内专家解释说,大数据是SaaS行业发展的关键。早期的SaaS解决方案(如原先的WebEx平台)无法与广泛依赖大数据的现代SaaS品牌竞争。

通过文章“2013年大数据及SaaS将与小企业紧密相关”,TechCrunch撰稿人、FiveStars营销副总裁Chris Luo成为讨论这一话题的首批专家之一。在此之前,SaaS并不是一个非常具有颠覆性的技术。Luo解释说,合并大数据和SaaS使他的公司在面对竞争对手时拥有巨大优势。

“我亲眼目睹了大数据和SaaS对企业的影响,当时我是Facebook的高级营销经理,领导SMB营销团队。借助内部工具以及像Tableau这样的各种商业工具,对数据可视化和探索也发展很快。而且,当我们的团队希望根据这些数据洞察推动新的基于触发性的市场营销活动时,只需最少的外部团队协助,就可以使用基于云的电子邮件和与内部数据集成的营销自动化工具迅速完成这些工作。”

在2010年初,SaaS解决方案主要依靠大数据进行市场营销。此后,SaaS提供商开始拓展视野,开始使用大数据来提供其他解决方案,如财务支持和竞争分析。

早期的SaaS工具(如WebEx)依靠用户输入来处理这些服务。更多的现代工具使用大量的第三方数据,如果没有基于Hadoop的工具,这将是不可能的。

经济不确定性的作用不容置疑

服务提供商正被迫应对不断变化的经济形式。有两个主要因素影响着其商业模式:

  • 全球经济衰退对无数企业造成了伤害,创造了新一代规避风险的企业家。品牌必须提供成本更低的解决方案来吸引他们。这些企业家对提供可升级的免费服务提出了强劲需求。
  • 越来越多的新兴企业以新兴市场为基础。这些品牌中的大多数资本都比较有限,这推动了SaaS的商业模式。

由于SaaS服务的成本比靠人力服务的公司要低得多,所以它们可以提供更有性价比的服务,并为这些客户提供免费规划。他们还可以使用网络工具更容易地管理他们的客户群体。

大数据和SaaS是应对经济不确定性的新解决方案

经济正在以神秘和可怕的方式变化。品牌面临着越来越大的压力,要保持低成本以实现增长目标,同时面对有限的融资机会。

SaaS解决方案使他们能够以最小的成本满足他们的预期。如果没有大数据的重大发展,这种做法是行不通的。

因此,我们预计未来几年SaaS初创公司的数量将大幅上升。这应该有助于企业更容易适应经济不确定性的增长。

  • Jan 11 / 2018
  • 0
Data, Tech

锐眼洞察 | 2018年数据管理趋势(翻译)

作者:Paramita Ghosh 

原文:Data Management Trends in 2018

译者:TalkingData数据工程师 孙强

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

近年来,业务数据的数量和种类空前增加,使得所有业务部门都需要更好的进行数据管理实践。 2018年的数据管理趋势将继续以数据治理为中心,通过数据治理确保数据质量的提升,从而改善决策制定。 随着流式数据不断从各种数据通道中输出,企业数据治理团队正在加紧研究和评估其内部框架与数据架构,以实现更好的数据管理。

企业数据管理市场的持续增长,来自于全球各地的组织对改善数据治理的需求的增长。良好的数据治理需要许多不同类型的应用程序以无缝方式一起工作。

2018年数据管理总趋势

2018年预测的技术趋势表明,“智能数字网格”将很快被许多企业采用,无论是全数字还是部分数字。 “全能数字”与人工智能赋能的技术的迅速普及,将很快在全球商业生态系统中显现出来。 未来五年,企业对人工智能技术的选用将成为一个重要的战场。 正在逐渐改变现有业务模式的人工智能趋势将在2025年前实现巨大回报。

根据福布斯的文章“为什么两种趋势的融合将改变企业管理数据的方式”,数据安全和数据治理问题已经开始融合,以降低与企业数据相关的风险。 随着这两个趋势朝着共同的目标努力,企业将不得不采用更高效的数据收集、数据管理和数据安全平台。 例如,具体的旅行服务提供商将被置于更严格的客户数据隐私审查之下。不同规模的组织都在忙于实施GSPR战略,以保护他们的高级资产——业务数据。

“在Gartner发布的2018年度十大战略技术趋势中,读者可以查看关于“事件处理和持续适应性风险和信任评估(CARTA)”的讨论,CARTA将在2020年成为企业业务80%的一部分,以实现基于风险的评估与信任的实时决策管理。

针对数据保护:通用数据保护法规(GDPR)

这将很会变成现实。 通用数据保护条例(GDPR)的基本操作原则与数据保护法(DPA)的基本操作原则类似,它为业务中的数据管理趋势和实践掀开新篇章。 英国信息专员伊丽莎白•德纳姆(Elizabeth Denham)认为,全球的企业应该学会处理GDPR法律中不必要的“威胁”,因为这只是向现有数据保护法律迈进的一步。标题为GDPR的文章将改变数据保护(以下是您需要了解的有关英国GDPR框架的讨论),旨在“协调”整个英国的数据隐私。 根据GDPR,每个国家都将受到监管机构的监督,任何披露、修改或破坏人民数据的行为都将被报告给监管机构。

  1. GDPR给数据收集机构增加了更多的义务。
  2. 对数据曾受到任何损害的个人,GDPR承诺将提升其数据权限。
  3. 在GDPR下,数据收集机构在分享数据之前必须征得个人的同意。

“电讯报”在题为“欧洲数据保护法”的文章中表示,个人数据监管法规将于2018年实施,企业需要从现在开始准备面对这个从DPA到GDPR的转变。 2018年的数据管理趋势似乎表明,到2025年,每年将产生180 ZB的数据。 这一预测暗示了大数据和先进的数据分析市场的发展,新的平台和工具可用于改进数据管理。

新的重点将是经过治理的数据质量,而不是数据量。

2018年数据存储趋势

以下是2018年数据存储实践的趋势预测:

  1. 闪存收入将在2018年保持高位,因为转换技术不仅得到持续优化,价格也有下降。可靠的闪存将减少对服务器的依赖。
  2. 闪存技术将升级以提升系统性能。
  3. 2018年的闪存市场突然扩大,可能会导致原料急剧短缺。建议企业采取必要措施提早购入,以避免后续遇到严重供应紧缩。
  4. 机器嵌入式存储呈倒退趋势,例如HCL的出售。通过HCL或戴尔,客户可以直接将存储嵌入在硬件基础架构中,从而不再需要单独的存储设备。
  5. “五步”分析解决方案将可以嵌入到存储系统中,供用户快速识别和解决问题。
  6. 软件定义存储(SDS)的出现,可以减少数据重复并提高存储效率。详情可阅读文章后面的“超融合基础设施”。
  7. 混合云存储解决方案——公有和私有云存储系统的混合使用可以提高存储效率,同时降低数据丢失的风险。

详细了解2018年顶级数据存储趋势请看这篇文章:Top 5 Storage Trends for 2018: What You Should Know.

利用大数据进行数据货币化

企业已经意识到“数据”是最重要的资产,所以现在已经考虑利用大数据等技术来资产化。随着企业不断收集大量设备数据、网络数据或客户行为数据,他们现在正在考虑通过在数据采集、存储、分析和部署运用相关先进的大数据技术,将这些数据转化为盈利的收入来源。大数据所带来的高级客户分析有望在未来帮助企业增加收入。阅读KD Nugget的文章“2018年大数据公司如何将数据货币化”?可了解详情。

DATAVERSITY的标题为“在数据货币化之路上需要注意的五件事”的文章中,作者进一步扩展了“大数据货币化”的概念,他指出,像Reltio这样的数据应用供应商,通过减少耗费在MDM上的时间和精力来增强数据可视化和数据分析能力,使得服务供应商可以通过这些平台来提供数据即服务(DaaS),这也是大数据货币化的另一个来源。

2018年大数据隐私实践趋势

  1. 由于有各种各样的流入渠道,大数据将在2018年构成重大隐私风险。
  2. 云计算供应商将在进行大数据项目之前接受审核。
  3. 虽然成本高昂,但私有云的使用可能仍然是企业的首选,因为数据相对安全。
  4. 将增加部门间孤岛中大数据治理,以确保满足适当的数据隐私级别。

请阅读以下文章以了解2018年上述大数据隐私实践的紧迫性:6 Big Data Privacy Practices Every Company Should Adopt in 2018

2018年数字营销趋势

客户数据是企业数据资产中最有价值的部分之一。 在2018年,商业用户会发现使用数字营销来管理客户数据有这样的主要趋势:

  1. 市场分析将更多使用人工智能赋能的解决方案。
  2. 机器学习指导的客户分析工具将用于客户细分。
  3. 内容营销的兴起是营销策略的核心区别。
  4. 用于理解客户的物联网分析兴起。

一篇题为“7大数字营销趋势2018年”的文章指出,2018年内容营销将处于业务活动的前端,主要用于个性化客户体验。 企业认为,通过阅读智能内容,客户在他们的记忆中保留了对“品牌的感知”。

2018年数据库管理趋势

由大数据、云、社交、移动数据和其他非结构化数据组成的复杂数据生态系统,使得数据库供应商需要增加诸如“制作数据图”之类的可视功能,使主数据管理(MDM)更加友好。 将社交或大数据与MDM整合将有助于更好地“对客户的360度观察”,一篇名为“主数据管理中的当代趋势”文章详细解释了这一点。 仍在努力将数据库迁移到云端? 可以查看DATAVERSITY的文章“在云中管理数据库:您需要知道的信息”一文,以帮助您规划迁移流程。这篇文章的目的是帮助您了解云服务提供商提供的典型迁移服务,使迁移过程顺利且成本低廉。

  • Jan 09 / 2018
  • 0
Data

锐眼洞察 | 数据科学家、数据工程师、数据统计师和软件工程师之间有何不同?(翻译)

作者:Ronald van Loon

原文:The Difference between Data Scientists, Data Engineers, Statisticians, and Software Engineers

译者:TalkingData副总裁 Teddy

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

 1.png

找出数据科学家、数据工程师、软件工程师和数据统计师之间的差异可能会令人困惑和复杂。尽管所有他们都以某种方式与数据相关联,但是他们的工作和管理之间存在根本的区别。

数据的增长及其在整个行业的应用是隐蔽的。在过去的十年中,特别是最近几年,我们看到了负责制作和管理数据的角色的一个重要区别。

数据科学无疑是一个真正的增长领域。来自全球的组织甚至国家的数据收集工作都经历了显著的增长。由于收集和管理数据带来许多复杂的问题,现在这个领域的工作和界定范围十分广泛。我们现在指的数据科学家,其实由数据工程师、数据统计师和软件工程师等更具体任务组成。但除了名称上的差异之外,有多少人可以理解他们所从事的工作的多样性呢?

正如我所猜测的,没有多少人能了解这些数据专家所做的工作。许多人最终得出结论,他们都做同样的工作,并为此分类。没有什么比这个传说更加错误的了,为此,我今天要成为了一个传说破解者,解读数据产业中这些工作的角色差异所造成的冲突。虽然所有这些都有助于推动向真正的数据创建方向的发展,但是它们如何以及为什么会从这个角度出发,存在着巨大的差异。

在这里,我从管理和超越数据的大局角度概述这四类角色的主要属性。他们说无知是幸福的,但是知道真实的情况总是比回避真相要好。

数据统计师

数据统计师站在整个流程的前端,运用统计理论解决众多行业的实际问题。他们拥有手段和独立性来选择适合寻找和收集数据的可行方案。

数据统计师的职责是通过设计调查、问卷、实验等有意义的方式来收集数据。

他们从数据中分析和解释分析结果,并将他们分析发现的结论报告给上级。数据统计师需要具有分析数据、解读数据和以简单易懂的方式叙述复杂概念的能力。

数据统计师理解研究产生的数字,并将这些数字应用到现实生活中。

软件工程师

软件工程师是数据分析流程的重要前端,负责构建系统和应用程序。软件工程师将负责开发和测试/审查系统和应用程序工作的一部分。他们负责建造产出数据最终产物的产品。软件工程可能是所有这四个角色中最历史最久的一个,在数据繁荣开始之前,软件工程是社会方式中必不可少的一部分。

软件工程师负责开发用于收集和处理数据的前、后端系统。这些网络/移动应用程序通过完美的软件设计推动操作系统的发展。然后通过软件工程师打造的应用程序将生成的数据传递给数据工程师和数据科学家。

数据工程师

数据工程师是致力于开发、构建、测试和维护体系结构(如大规模处理系统或数据库)的人员。数据工程师与数据科学家经常被混为一谈,他们之间的区别是数据科学家是清理、组织和查看大数据的人。

在上面的比较中,您可能会发现对动词“清理”的使用有些异乎寻常和粗心,但事实上,它的目的是更好地反映数据工程师和数据科学家之间的差异。总的来说,可以体现出这两类专家所做的努力都是为了获得简单易用的格式数据,但两者之间的技术和责任是不同的。

数据工程师负责处理来自众多机器、人员或仪器错误的原始数据。这些数据可能包含可疑记录,甚至可能无法验证。这些数据不仅是未格式化的,而且还包含用于特定系统的代码。

这就是数据工程师们发挥用作的地方了。他们不仅提出提高数据效率、质量和可靠性的方法和技术,还要实现这些方法。为了搞定这个复杂的事情,他们将不得不使用许多工具并掌握各种语言。数据工程师实际上要确保他们的工作架构对数据科学家来说是可行的。数据工程师一旦完成了初始流程,就必须将数据交付给数据科学家团队。

用简单术语来说,数据工程师通过服务器确保数据流以不间断的方式传输。他们主要负责数据所需的架构。

数据科学家

我们现在知道数据科学家将获得数据工程师加工过的数据。数据已经被清理和处理,数据科学家可以使用这些数据来输入分析程序,以准备数据用于预测建模。为了建立这些模型,数据科学家需要做广泛的研究,积累来自外部和内部的大量数据来满足所有的业务需求。

一旦数据科学家完成了初始阶段的分析,就必须确保他们所做的工作是自动化的,所有的洞察都会定期交付给所有关键业务利益相关者。事实上,成为数据科学家或数据工程师所需要的技能显然有一些类似。但是在行业内,这两者间的区别正在逐渐变得更加明显。数据科学家需要了解与统计、机器学习和数学相关的复杂细节,以帮助构建完美无瑕的预测模型。此外,数据科学家还需要懂一些分布式计算。通过分布式计算,数据科学家将能够访问由工程团队处理的数据。数据科学家还负责向所有业务利益相关者提交报告,因此需要关注可视化。

数据科学家运用其分析能力,从输入机器的数据中提取出有意义的发现。他们将最终结果报告提供给所有关键利益相关者。

数据领域正在不断发展,它包含了比我们以前所能想象的更多的可能性。

  • Jan 08 / 2018
  • 0
Enterprise

锐眼洞察 | 制定有效数据营销规划的五个关键步骤(翻译)

作者:Trey Causey

原文:Five Key Steps for Effective Data Planning

译者:TalkingData移动观象台研发总监 曾晓春

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

从无人驾驶汽车到聊天应用到物联网设备,每一项技术都是由数据驱动的。不管你的职业或职位是什么,你每天都会遇到某种形式的数据。然而,数据可操作性和数据质量比数据量更重要。

虽然大多数营销人员知道数据驱动决策的重要性,但他们往往不知道从何处着手。根据Experian的报告,利用数据来了解顾客的态度和需求是营销人员的首要任务。同时,这也是他们面临的最大挑战。

毫无疑问,品牌的每个策略都应该以客户为中心、以数据为导向。通过谨慎的数据规划,营销人员可以将其丰富的数据转化为有意义的策略,以便执行更好的决策和建立持久的客户关系。

以下五个步骤可以帮助你制定恰当的数据计划:

1. 列出所有基于观点的决策

建立一个目前所做决策的列表,这些决策主要基于自身观点而不是依据数据。你可以按职位和部门为列表分类,以便后续更容易管理。在接下来的几周里,与团队一起讨论这个列表,不断地为它添加新的项目。

完成这项任务的最简单方法之一就是浏览每周的日常任务。把每次你要在不使用数据的情况下做出的决策添加到清单中。然后,请团队做同样的工作,并将所有决策输入汇总到一个列表中。

这里有些例子:

  1. 上次的展示广告活动是否能带来积极的投资回报?
  2. 我们应该在哪些领域雇佣更多的销售专业人员?
  3. 十月份的销售活动应该展示哪些产品?

2. 根据它们的重要性排名做出决定

不是所有的决策都同样重要。确定清单上每个决定所涉及的金额,这将帮助你发现它们对组织的价值,并相应地对它们进行优先级排序。此外,请记住在分析这些决策时要考虑所有相关成本(劳动力、技术、机会成本)。举个例子,我们看看上面的第一个决策,“上次的展示广告活动是否能带来积极的投资回报?”,我们会从以下几个方面考虑:

  1. 媒体费用(例如:40,000美元)
  2. 创意开发成本(例如:2,500美元)
  3. 员工时间成本(例如:1,500美元)
  4. 已完成交易的机会成本(例如:80,000美元)

在上述情况下,决策成本约为123,700美元。

不需要太确切的数字。使用粗略的估计来合理地了解决定的重要性。

3. 列出每个决策所需的所有数据源

找出三到五个对你的组织来说最有价值的决策,并列出解决这些问题所需的所有数据源。确定这些数据源是否可以从组织内部获取。

与团队进行头脑风暴至关重要,这样每个人都会围绕如何解决问题和如何回答问题提出自己的想法。

有时,现有的数据并不能直接供分析使用,需要构建新的流程来转换它们。有些数据源可能需要与其他团队甚至是其他公司协调获取。如果无法找到所需的数据源,还可以从相关的代理数据源中查找。

这一步将帮助你发现决策所需但不可访问的数据点。

4. 确定需要补充的数据缺口

下一步是定位为制定决策所需补充的数据缺口,并确定如果没有这些数据是否可以继续。评估你是否可以联系第三方数据供应商寻求解决方案,或进行有根据的猜测以继续分析。

例如,在分析我们的展示广告活动时,可能很容易在活动之前、期间和之后获得交易数据。但是,如果您的控制组缺少数据点,则会对分析结果的可信度产生负面影响。如果你事先知道这一点,最好先暂停分析,直到找到一种方法来获取这些数据,或者在开始下一次媒体宣传活动时使用更好的数据收集计划。

5. 创建2018年数据计划

一旦确定了需要数据驱动的关键决策以及需要补充的数据缺口,就必须创建一个高效执行的计划框架。

确保能够正确获得以下信息:

  1. 获取数据的数据源和关键联系人;
  2. 所需数据的日期范围;
  3. 确切的所需数据字段。最好是要求更多的信息以避免延迟和迭代;
  4. 数据缺口和补充缺口所需的信息(供应商、成本等);
  5. 从获取数据、数据分析到呈现分析结果的每一步的团队成员分工;
  6. 数据收集、分析和报告的详细时间表。

结束语

数据最强大的方面是能够最大限度地减少决策过程中的猜测。随着目前数据分析和报告平台的爆炸式增长,你不需要成为数据科学家也可以玩转数据。能够利用数据来规划和为策略排序的营销人员,能够直接提升工作表现,有效地管理资源并对公司营收产生积极的影响。

  • Jan 08 / 2018
  • 0
Ideas

锐眼洞察 | 数据产品经理的兴起(翻译)

作者:Trey Causey

原文:Rise of the Data Product Manager

译者:TalkingData CEO助理兼TDU执行校长 杨慧

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

译者注:

数据产品经理是数据人才中的高等级交叉性人才,也是将来维持一个数据服务企业/企业数据部门核心竞争力的人才。

在接下来的几年中,将会有一种新的产品经理需求——数据产品经理。我以前曾经争辩说,优秀的数据科学家可以成为优秀的产品经理,但这是不完整的。数据是产品开发的核心,而不是仅在使用指标和A / B测试的事后分析中。数据的不断吸收和耗尽正在决定产品的行为方式以及新产品可能的类别。机器学习模型可以根据用户的偏好自动调整产品,为下一步行动做推荐,并对未来的功能和产品提出建议。数据产品经理了解这一点,并将其纳入他们的产品。

处理产品核心数据需要对数据建模、数据基础架构、统计和机器学习有一定程度的了解。它超越了对实验和阅读仪表盘的结果的理解——它需要一个深入的增值:通过对数据流的充分利用,可能发生什么以及接下来很快会发生什么。如果传统的产品经理在业务,工程和用户体验交叉领域作业的话,数据产品经理还必须具有数据和数据科学的领域知识。

数据产品经理要了解,使用数据构建产品需要一个数据策略——如何生成、收集和使用数据的计划是什么,以及如何在所在市场中赢得独特的位置?仅仅是收集数据并存储在数据仓库进行事后分析是不够的。数据产品经理已经制定了一个计划,为什么随着时间的推移,该产品生成的数据将被用来改进产品、算法等,为什么这会产生一个防御性的壁垒来增加产品长期成功的机会。换句话说,数据产品经理做了让飞轮与数据一起转动的产品决策。

数据产品经理要了解在技术层面上建设产品所涉及的技术基础架构。需要什么样的基础架构来支持产品?机器学习模型是否需要实时评分,还是可以脱机?对新数据进行再训练模型的计划是什么?随着时间的推移如何评估模型的成功?在生产中实施模型的复杂性成本是多少?是的,数据科学家也会回答这些问题,但数据产品经理需要积极参与这些讨论,作为产品开发中不可避免的权衡的一部分。

数据产品经理要了解,带着数据构建的过程中,收集数据和使用数据是两个不同的部分,其中数据有着不同的权衡,并经常涉及工程团队的不同部分。他们帮助推动产品开发流程,使这两个流程无缝衔接,帮助双方成功完成工作。

数据产品经理不仅了解许多问题可以使用机器学习模式,而且知道什么时候需要开发一个启发式模式。当不清楚的时候,他们通过时间盒探索来看看哪种方法可能更有用。他们也知道,从启发式模式到机器学习模式的切换会有一个适当的时机,并为此应变提前计划。

数据产品经理可以执行自己的分析——他们可以编写自己的SQL,建立自己的仪表板,解释他们自己的实验。他们对任何声称“数据自身说明”的人持怀疑态度,因为他们知道这是不正确的。人们说数据,知道如何进行分析与获得结果一样重要。数据产品经理并不是一味地“数据驱动”的决策者,这类人盲目地根据单一的号码拨打电话。数据产品经理会适当的怀疑数据的生产者和消费者。

数据产品经理可以在数据科学家、工程师、设计师、营销人员和其他产品经理之间转换需求。他们与数据科学家合作,确保尽可能快地获取和使用数据进行分析和建模的同事,将产品仪器和数据存储设备纳入他们的验收标准。他们不会让那些不是数据科学家的工程师对什么数据对数据科学家才有价值做出假设。

最后,数据产品经理只知道数据,模型和输出是不够的 – 他们仍然必须成为产品经理,并将这些组成部分与商业模式和组织的战略相结合。不符合商业模式的机器学习模式不仅会无理由的浪费时间和金钱,而且会削弱组织对机器学习的信任。在数据科学开展的迟,对数据科学的力量持怀疑态度,或者在领导力方面已经非常定性的公司尤其如此。

由于这些原因,我仍然相信优秀的数据科学家会成为优秀的产品经理,但是显而易见,一种新型的产品经理即将出现。

  • Jan 05 / 2018
  • 0
Tech

锐眼洞察 | Java 8 年度实践总结

作者:TalkingData架构师 赵志刚

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

 

Java 8 自 2014 年发布至今已有 3 个年头,但直到今年初才真正开始使用某些特性,之前最多是指定其为运行时环境。2017 年关将近,决定写篇文章记录一下近一年的实践历程,主要涵盖一下内容:

  • Lambda 表达式
  • Stream
  • 并发包
  • 集合

在开始引入新特性前,做个规划是少不了的,由于 SDMK 是微服务的架构,且每个服务支持灰度发布,因此影响全局的风险小很多,至于选择引入的服务模块,最终我选择了负责服务配置的 Console 和服务调用接入的 Gateway。

选择 Console 是因为它本身是基于 Java 8 的环境,但是随着演进,单元测试(UT)已经远远滞后,正好可以在 UT 中引入 Lambda 和 Stream,这样既不影响功能又可以踩坑,待熟悉后即可应用到功能开发或重构中。

选择 Gateway 是因为相比其他稳定的服务,Gateway 还有大量的新功能和性能重构需求。

接下来进入正题,以下内容涵盖了这一年的实践过程中用到的一些新特性总结。

1. Lambda 表达式

因为 Java 8 其他的特性几乎都是依赖 Lambda 实现的,因此本节会先介绍一下 Java 8 中的 Lambda 表达式,目的是为了让还不熟悉的同学能够对 Lambda 有个初步了解。

提起 Java 8 的特性,首先肯定是 Lambda。那么什么是 Lambda 表达式,我的理解就是一段程序代码,是引入函数式编程的一种实现,基于这样的特性,Java 实现了对行为的抽象。

让我们来看一个 Lambda 表达式:

  1. s-> System.out.println(s)

-> 右边是函数定义(描述行为的代码),左边是传递给这段代码的参数。接下来再看看具体调用:

  1. List<String> list = new ArrayList<>();
  2. …… //other operation
  3. list.forEach(-> System.out.println(s)); //打印集合中的每个元素

上述代码虽然没有实际作用,但是足以用来说明 Java 提供的函数式编程的特性了:

  • 减少模板代码,提高可读性:可以看到传递给 List 的 forEach 方法的是行为而不再是变量或对象(参数行为化),这样可以使开发人员只关注具体业务,不必再写循环或使用匿名类了。

  • 延迟执行:System.out.println 不是在传递给 forEach 的方法时立即执行,关于这点的优势在下面的并发包会有详解。

那么 Java 是怎么实现 Lambda 的执行呢?先来看一下 forEach 方法声明:

  1. public void forEach(Consumer<? super E> action)

它的参数是一个接口,但是 Oracle 的 JVM 并没有在编译时把 Lambda 表达式简单地变成匿名类,而是在字节码中使用了 InvokeDynamic 指令,Lambda 表达式只有在运行时才会动态被编译成字节码,参数和返回值都会从调用上下文中进行推断。

而且如果 Lambda 表达式是无状态的话,在内存中只会有一个对象对应该表达式。

上面简单介绍了一下 Lambda 表达式,在实际工作中我是如何使用的呢?举一个在 Console 中重构的例子,由于业务的需要,Console 中的代码存在大量校验逻辑,如下图

01.png

02.png

这些方法的逻辑除了生成和返回的业务实体不一样以外,其他完全一样,因此在重构后我提供了一个公共方法:

03.png

而原来的方法都重构为:

04.png

可以看到少了很多模板代码,清爽了许多,可读性也提高了,而且由于抽象到一个公共方法中,非常有利于代码及早进行 JIT 优化。

通过 Jacoco 的统计分析,在重构后,相比应用 Lambda 表达式之前,Console 的代码减少了 20% 左右。

2. Stream

Stream 是 Java 8 提供的另一个重要特性,为集合数据提供了一种基于流式的处理机制,从我实际使用的感受上来看,它屏蔽了数据集的底层处理细节,通过 Lambda 表达式让开发人员更多地关注业务处理而非迭代。下面是在 SDMK 中的几个 Stream 例子:

  1. counters.stream().mapToLong(-> NumberUtils.toLong(s, 0l)).sum();
  2. receipts.stream().filter(receipt ->MAIL_VALIDATOR.matcher(receipt).matches()).collect(Collectors.toList());
  3. assertFalse(records.stream().mapToInt(SimpleServiceEntity::getStatus).anyMatch(-> s != SERVICE_STATUS_ONSELL));

可以看到,没有了以往迭代的模板代码,通过 fluent 式的叠加完成数据的业务操作,使用起来都非常简单和直观。

如果需要对集合进行并行化处理,Java 还提供了创建或者转化为并行流的 API。通过将执行细节进行屏蔽,不仅简化了集合的处理代码,更重要的是,开发人员再也不用编写复杂易错的并行代码了,同时对于执行机制也可进行单独优化。

例如,现在使用 ForkJoinPool 执行并行流,将来可能会使用更高效的处理框架,但是这些对上层业务代码是透明的。

另外,在使用 Stream 时虽然简单,还需要几点注意:

  • 使用 Stream 时请摒弃循环或迭代的思想

  • 所有的操作不是按调用顺序分步执行的,而是延迟到流“启动”后同时执行的。比如上面实例 3,不是先对集合先映射完再查找匹配,可以理解之前都是在攒组合大招的每个招式(中间操作如 map,filter),直到最后一个方法才出招(终止操作如 sum),流一旦执行完毕(终止操作执行完)就不再可用了

  • Stream 的操作不会改变原始集合

  • 并行流的处理简单但不是没有代价,它要求所有操作都是无状态的或者是线程安全的,而且尽量与顺序无关(提高并行效率)

  • 虽然串行流和并行流可以随时互转(sequential () 和 parallel()),但是在流执行时的最终类型是以终止操作前最后一次指定的类型为准

3. 并发包

3.1 ConcurrentHashMap

Java 8 对 ConcurrentHashMap 大量增强,包括 long 型的 mappingCount 代表 map 的大小;使用树形结构取代链表,在 Key 实现了 Comparable 接口时更有效率;支持 Lambda 的原子操作等。

在实际使用时我用的较多的新特性是 computeIfAbsent,在 Java 8 之前如果要创建多个线程使用的缓存需要使用 putIfAbsent,但是比较繁琐,具体如下:

  1. public static AtomicLong createTableAuditInfo(String table) {
  2.    AtomicLong newAudit = new AtomicLong();
  3.    AtomicLong temp;
  4.    if ((temp = audits.putIfAbsent(table, newAudit)) == null) {
  5.      return newAudit;
  6.    } else {
  7.      return temp;
  8.    }
  9.  }

由于 putIfAbsent 操作的 Key 如果在 Map 中不存在时会返回 null,所以这个代码非常变扭,更重要的是每次执行的时候都不可避免地要创建一个新对象!(TDU 注:全文少有的感叹号表达了志刚同学对太多新对象的苦恼)

虽然可以在调用前用 get 判断,但如果 Key 不存在时还是会创建一批不需要的对象!(TDU 注:again,哪位缺对象的同学赶快来帮忙分担一下吧)在 Java 8 中可以使用如下代码:

06.png

一行代码搞定,而且由于创建对象的 Lambda 是延迟执行的,加上操作本身是原子的,所以就保证有且只有一个对象被创建。当然,在高并发下为了避免 computeIfAbsent 每次读时都会进入同步的机制,同样可以在调用前使用 get 进行一次判断。

3.2 ConcurrentHashSet?

这个一直就不存在,但是可以使用 ConcurrentHashMap 的 keySet 方法创建一个等价的 set,只不过在 Java 8 前创建的 set 没有 add 方法。

Java 8 增加了一个 keySet(V mappedValue)方法,这样用该方法创建的 set 就可以添加元素了。

注意的是用 keySet 创建的 set 不能独立存在,所有操作都最终反映到对应的 ConcurrentHashMap 上。

3.3 AtomicLong

主要用的是它提供的支持 Lambda 表达式的原子操作,如 getAndUpdate(LongUnaryOperator),getAndAccumulate 等,这样可以避免自旋使用 CAS 操作的模板代码。

3.4 LongAdder

AtomicLong 和 AtomicInteger 虽然支持原子操作,但是在高并发下更新由于需要不停的自旋重试,极大的降低性能,因此在 gateway 流控计数器中选用了 LongAdder,它的思想就是空间换时间,通过将数值分散在多个内存空间,减少并发修改的几率来提高性能。

当然这样做也有代价,就是 sum 和 sumThenReset 方法不保证是原子的,也就是在调用这些方法时如果存在并发写的话,可能会不符合操作预期。当然由于 Gateway 的流控计数器不需要精确的计数,因此在使用上没有问题。

与 LongAdder 类似的还有 LongAccumulator,它可以执行更通用的累进式运算。

4. 集合

在 Java 8 中,集合类除了支持 Stream 外,最大的增强就是提供了大量的支持 Lambda 表达式的方法了,在我实践的项目中用得最多的就是 forEach(Consumer),主要是用来避免使用迭代的模板代码。

5. 总结

在近一年的实践中,由于工作和时间的关系,我并未能尝试所有的特性,包括 Stream 中的收集方法(用于将流转换为其他类型,如 List)和 Collector,集合中大量支持 lambda 的方法,新的日期时间对象,以及其他(字符串、数字、文件等等)一些增强。

但就已经实践的内容来说,Java 8 提供的这些特性还是非常强悍与实用的,在提高编码效率和代码性能方面会非常有帮助,另外对于固有的设计模式,我想也会有一定的影响,例如策略模式、模板模式等等。

总之,放心拥抱 Java 8 的新特性吧,当然,如果是旧系统迁移,请做好单元测试!

  • Jan 05 / 2018
  • 0
Ideas

锐眼发现 | 2018 年五大科技趋势预测:区块链、笔记本电脑、智能手机、交互和云计算

作者:Ed Oswald

原文:5 tech trends you’ll be talking about in 2018

转载于:36Kr

本文翻译自 www.digitaltrends.com。如若转载请注明出处。

编者按:科技的发展不单单是科技本身之事,它涉及风投、政策、用户等多种因素的综合影响。本文作者Ed Oswald在“5 tech trends you’ll be talking about in 2018”一文中讲述了他所观察并预测的2018年5大科技发展趋势,它们包括区块链、笔记本电脑、智能手机、交互和云计算等。

2017年是科技变革的一年。推特用户终于能发表超140字的内容,特斯拉Model3电动智能汽车市场反应良好。永恒之蓝勒索病毒成为历史上最具破坏性的网络攻击之一,由阿吉特 派领导的联邦通信委员会以3:2的结果废除了奥巴马时代的网络中立原则。

过去一年无论是好是坏,科技领域很是繁忙,2018年似乎也会如此。我们已经察觉到一些重要的科技趋势,并期待它们能够在新的一年成为引领潮流之物。但是首先,我们需要回望去年此时所预测的“2017将会有什么发生”。

回望2017年的科技预测

智能家居在2017年终于开始起飞,而且确实像我们在2016年末预测的那样没有成为“智能中枢”。为什么呢?这要归咎于亚马逊。

Alexa在这一年中击败了它的众多竞争者,从其在CES 2017(2017年国际消费类电子产品展览会)的表现来看,它像是一个设备制造商。虽然这导致了一些相当愚蠢的整合,但也从侧面证明了亚马逊的实力,并使得留给谷歌、苹果和微软的市场份额更小。

多亏了巨头之间的竞争,如今人们只需30美元就可以尽情享受智能支持:这个价格是2016年初费用的六分之一。同时“价格战”也巩固了现有市场份额长期存在的既定优势:这对于新进入者来说十分残酷。

自动化和人工智能在今年的应用中也有所增加,但可能没有达到我们预期的规模。正如我们所料,自动化大多应用于聊天机器人,而大肆炒作的亚马逊无人机送货实验并没有比2016年进一步扩大,自动化普及的速度也没有进一步增加。同时,人工智能和所谓的“机器学习”却引起巨大轰动,尤其是在应用领域。

在增强现实和虚拟现实中,2016年是一个标志性年份,但是2017年增强现实近乎淡出人们的视野。Pokémon Go获得病毒式的传播,但是2017年其他增强现实应用却没有延续这种火热。

另一个失误是我们之前预测人造肉会经历一场繁荣。尽管我们依旧很乐观,但是合成食品在2017年的发展仍然不尽如人意。但是,植物汉堡生产商Beyond Meat却在做出改变,并于2017年年底使其产品在美国全境的沃尔玛超市中上架。这是一个新的开端,但是距离人造肉成为餐桌上的主流还需要很长的路走。

总而言之,这些预测都不算太坏,而且在某些情况下,我们可能已经超前了一些。现在,来看看2018年的五大科技趋势预测,希望这些预测更具有指导意义和价值。

区块链

要知道,它不仅仅如同“郁金香狂热”。无论比特币的价格是0还是5万美元,加密货币的基础,即被称为区块链的分布式分账类系统,将在未来的技术中占有一席之地。

区块链是分散的加密货币核心,它是一种分布式的记录账本,能够对过程进行验证而不需要中间人。虽然区块链在2017年以前的主要用途是验证加密货币交易,但是开发人员却正在意识到除金融以外的用途。交易记录或“块”受加密保护,然后分发给所有参与者。

2018 年五大科技趋势预测:区块链、笔记本电脑、智能手机、交互和云计算

2017年比特币平均区块规模

这使得交易可以排除人为干预进行验证,也不再受欺骗的影响。如果一个版本的块被损坏,其他参与者仍然拥有该块的正确副本,从而分散风险。区块链可以用来核实合同条款,甚至能够在“智能合同”中自动执行,或者验证对资源的访问。

因此,2018年将是许多行业多年转型的开端。在2017年,网络安全是一个重大议题,区块链可能于2018年进入突破的黄金时期。不论哪种原因,多年来,密码货币崩溃了,但是区块链却幸存了下来,这没有什么值得惊讶的。是游戏规则发生了改变。

 ARM服务器芯片支持的笔记本电脑回归

随着制造商和软件开发商不断改进硬件和软件,我们已经习惯了智能手机和平板电脑所具备的长时间续航能力。但是笔记本电脑还存在一个缺陷,即在大多数情况下,它仍需要在一天的某个时间充电,除非一个人并不爱上网。对于该问题的解决正在进行,这使得笔记本电脑超长待机成为可能。

在此需求下,微软于2017年重新设计了Windows系统,使其于ARM技术更兼容。这与启动Windows RT(一种基于Windows的新操作系统)的效果不一样:代码将自动运行这些处理器,使得ARM服务器芯片支持的笔记本电脑广泛使用,尤其是使用高通骁龙835处理器。

虽然早期的基准测试并不受人关注,但是我们注意到其结果是基于原型芯片而产生。高通自己承诺电池续航时间为20-25小时,在2018年正式发布时其性能应该与英特尔处理器相似。当然,这些笔记本电脑的目标客户是那些入门级消费,但却总是关注于性能和LTE(通用移动通信技术的长期演进)连通性特性的人群。

当然,任何新产品的第一个版本总是很粗糙。虽然它很可能在2018年无法实现,但是骁龙845处理器由于比之前版本优化25%的功能和30%的显卡性能而受人关注。

再加上人工智能、生物识别、加密技术和移动支付的支持,基于骁龙845的笔记本电脑很有可能对广大消费者具有吸引力。

 智能手机的终结

这是一个大胆的预测,对吧?不过,事实听起来并没有那么疯狂。传统意义上,智能手机的理念是一种让人们保持联系的设备,而不只是传统的语言通话功能。面对人工智能和机器学习技术的发展,这种情况正在发生改变。

尽管此种设备仍然可能被称为智能手机(smartphone),但是在2018年以后称其为有智慧的智能手机(intelligent phones)可能更合适。正如我们刚刚所提到,移动处理器的出现是为了处理人工智能技术。在2018年,数字化助手将会发挥更大作用,因为它们能够在你提出要求之前预测你的需求。

想想现在你如何与数字化助手交互。如果让它在房间里“打开灯”而不是告诉它需要关掉哪些灯,是不是更有意义?通过位置感知,自动打开离人最近的灯,而不再需要人们的特殊指明。

有传言称,亚马逊正在为Alexa开发更多的位置感知平台,其他公司可能也在研究类似的技术,我们也需要开始了。未来的智能设备将具有真正的智能,并在此种情境下使其本质上更有用。

 非接触型界面

用户界面是我们体验科技产品的关键。但是,大多数产品体验依赖于某种物理交互才能实现。而这将在2018年发生改变,改变的关键在于“无接触型界面”。

亚马逊的Alexa、Siri和其他虚拟助手已经开始规训我们不再依赖于手指。正如我们在讨论智能手机的未来时所指出的那样,已经有其他有效的方式进行交互。

想象一下,拿起你的空果汁杯,说“Alexa,来一杯这个。”在你没有明确物理指示的前提下,Alexa已经了解你在看什么或者是拿着什么。而其他一些功能,例如基于个人的个性化定制已经成为可能,并会在2018年更加普及。

 云计算走向“边缘”

我们已经习惯了“云”以至于这个科技预测听起来似乎是违反常规发展的。但是,边缘计算将会改变我们对“云”的看法,以及之后它们该如何使用。

边缘计算是“分布式计算”的回归,在这里,处理程序分布在多台计算机上。考虑到“云”可以将请求通至可用的服务器上,人们可能会认为云计算也是分布式计算的一种形式,实际上并不如此:云计算时,服务器本身仍然在一台机器上处理所有计算工作。

为什么边缘计算是下一个趋势?随着设备功能的完善,它们需要更大的数据流来支撑运行,这使得云计算本身变得非常缓慢。即使有超快的5G作为基础,连接本身也总会有一定程度的延迟,而这并不包括远程服务器上的处理时间。

想一想,自动驾驶汽车需要在瞬间做出何时转弯、何时停止或移动以避免危险时的决定。而当数据从车传输到中央服务器的时间区间中,有谁能够保证这种延迟不会导致事故的发生?当然无法保证。更好的方法是,车本身成为数据中心,在本地进行密集型计算并及时做出决策,同时将数据发挥中心服务器,为优化其他车辆的运行情况提供数据支持。同样的思路也适用于物联网设备,所有事物都可以在彼此的实际经验中总结学习,而不是在自身运行过程中使用超载通信网络。

这将会是一份巨大的工程,尤其是考虑到我们在云计算上投入了如此多的精力和物力。但是随着物联网设备数量的激增,我们需要找到一个更好的方式,让它们彼此在不占用所有可用宽带的情况下进行通信。

  • Jan 04 / 2018
  • 0
Ideas

锐眼洞察 | 从埃隆·马斯克的火星移民计划看任务拆解

作者:TalkingData SDK研发总监 卢健

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

导语:

如果还有人不知道埃隆·马斯克, 相信也会知道他的特斯拉公司。除了特斯拉外,早年埃隆·马斯克还提出过一个火星移民计划。

0af41909f8430f6c42130dacc83344c2.jpg

埃隆·马斯克曾就商业这个话题表达过:“我不知道什么叫商业。所谓公司,就是一群人聚集起来,创建一个产品或者服务,为一个目标而孜孜奋斗,而已。”这里想讨论的是火星移民的可行性。虽然我是不信的,但是埃隆·马斯克确实开干了。

什么是火星殖民?

这是埃隆·马斯克的一个疯狂计划,他的目标是用宇宙飞船每次携带200位乘客前去火星,旅行的时间将会在80天左右。通过大概20-50次的火星运输,能在火星上建立完全自给自足的城市。预计40-100年后,也许会有100万个人类在火星上生存繁衍。

按照工程拆解的方式,我理解埃隆·马斯克是这么拆解的:

首先,目标转换。火星移民不是科技问题,是钱。科技问题都需要靠钱解决,要花多少钱呢?去一趟火星,一个人100亿美金。埃隆·马斯克希望达到的状态是什么?把去一次火星的成本,从100亿美金,降到和买一栋小房子的价钱差不多,大概是20万美元,约合人民币130万左右,这样就会有很多人愿意去一趟。那如果很多人愿意在临终之前,去一趟火星看看,就会聚集起足够的财力,实现火星移民计划了。

成本从100亿美金,到20万美金,怎么实现这个目标呢?这意味着,要把从火星到地球的运输成本,以吨为单位,降低5万倍。目标转化完成。

接下来进行目标拆分。怎么把成本降低5万倍?埃隆·马斯克指出了四个方向:

第一,火箭得是可以重复使用的。如果发射一次,就烧坏一个火箭,太费钱了。我们如果能把火箭发射出去,再让它飞回来,下次发射继续用,是不是成本就降下来了?

埃隆·马斯克2002年成立了SpaceX公司,2015年底就实现了火箭发射以后的再回收。这个新闻你可能看到了,说明这事是可行的。这种成本降低,就是第一步。

第二,飞船如果直接载满整个太空航行所需要的燃料再发射,火箭就会非常的沉重,成本很高昂。怎么办呢?

埃隆·马斯克说,在太空轨道上,对飞船进行补给。简单解释一下这个原理,先用火箭推进器把飞船送到太空轨道,这时候不用装那么多燃料,只要足够把火箭送上太空就行。然后推进器迅速返回发射台,装上燃料箱,再飞到轨道,把燃料补给飞船。完成这一过程之后,推进器返回地球,而飞船则将前往火星。

采用这种方式,前往火星的成本减少了500倍。这是第二步。

第三,在火星上制造燃料,让飞船能够从火星返回地球,这样一来返程的燃料就不用从地球上带了。这同样还是为了解决燃料负重的问题,又降低了好多倍发射成本。这是第三步。

第四,使用正确的燃料。埃隆·马斯克对比了可能的几个选项,比如煤油、氢氧气等等。但他最后认为甲烷是一个更好的选择,因为甲烷在火星上制造起来相当容易。

经过这轮分析,埃隆·马斯克就把一个天方夜谭般的技术难题和资本难题,拆解成了一系列非常具体的技术问题。

埃隆·马斯克还给自己列了一张时间表,在本世纪20年代的后半段,将人类送上火星。

这里面还有一个变量没有算在内,就是在未来十几年内,人类技术的进步。很多现在看起来无解的问题,到那个时候也许就有解决方案了。

小结:我们做什么和怎么做,分别面向目标和任务。遇到一个大难题,不需要畏难情绪和抱怨情绪,不管这个难题有多大,要分解问题,把大难题变成小难题,或者是马上就可以做的动作。

参考资料:

火星移民计划

2016年 67届国际宇航大会 埃隆·马斯克的移民计划 (视频)

马斯克殖民火星计划:票价20万美元,80天到达,10年后出发 http://36kr.com/p/5053760.html

移民火星 — SpaceX公司的方法和理由 http://36kr.com/p/5041073.html

第67届国际宇航大会到底讲了些什么?http://www.sohu.com/a/115477297_494558

 

页面:1234567...44
随时欢迎您 联系我们