锐眼洞察 | 手把手教你简单快速实现5种数据可视化

作者:George Seif

原文:https://towardsdatascience.com/5-quick-and-easy-data-visualizations-in-python-with-code-a2284bae952f

译者:TalkingData数据工程师 新壮

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

数据可视化是数据科学家工作中的一个重要部分。在项目的早期阶段,你通常会进行探索性数据分析(EDA),以获得对数据的一些见解。创建可视化确实有助于使数据更易懂,特别是对于更大的高维数据集。在你的项目即将结束时,重要的是能够以清晰、简明和令人信服的方式展示你的最终结果,让你的听众可以理解,而他们通常是不懂技术的客户。

Matplotlib是一种流行的Python库,可以非常容易地用来创建数据可视化。然而,每次创建一个新项目时,设置数据、参数、图形和绘图都会非常混乱和乏味。在这篇博客中,我们会使用Matplotlib库写一些快速且简单的函数,实现5种图形可视化。同时,这里有一个非常好的图表,可以为你在工作中选择合适的可视化提供参考!

根据不同情况选择合适的数据可视化技术

散点图 

散点图很好地显示了两个变量之间的关系,因为你可以直接看到数据的原始分布。您也可以通过颜色编码来查看不同组数据之间的关系,如下图所示。想可视化三个变量之间的关系吗?没问题!只需使用另一个参数,比如点大小,对第三个变量进行编码就可以,如下面的第二个图所示。

颜色分组散点图

按颜色分组并对三个变量进行了大小编码的散点图

现在该展示代码了。我们首先引入Matplotlib的pyplot并命名为“plt”。通过调用plt.subplots()创建一个新的图。我们将X轴和Y轴的数据传入ax.scatter()绘制出散点图。我们还可以设置点大小、点颜色和alpha透明度。你甚至可以设置y轴使用对数刻度。然后针对具体的图像设置标题和轴标签。这是一个好用的函数,它从端到端地创建了一个散点图!

import matplotlib.pyplot as plt
import numpy as np

def scatterplot(x_data, y_data, x_label="", y_label="", title="", color = "r", yscale_log=False):

   # Create the plot object
   _, ax = plt.subplots()

   # Plot the data, set the size (s), color and transparency (alpha)
   # of the points
   ax.scatter(x_data, y_data, s = 10, color = color, alpha = 0.75)

   if yscale_log == True:
       ax.set_yscale('log')

   # Label the axes and provide a title
   ax.set_title(title)
   ax.set_xlabel(x_label)
   ax.set_ylabel(y_label)

线形图 

当你想清楚展示一个变量随另一个变量明显变化时(例如它们有很高的协方差),最好使用线形图。让我们通过下图来说明。

我们可以清楚地看到,所有专业的百分比随着时间的推移有很大的变化。用散点图来绘制这些图形会非常混乱,很难真正理解并看出正在发生的事情。对这种情况来说,线形图则是完美的,因为它们基本上快速地给我们总结了这两个变量的协方差(百分比和时间)。同样,我们还可以使用颜色编码对其分组。

线形图示例

下面是线形图的代码。它和上面的散点图很相似,只是变量有一些细微的变化。

def lineplot(x_data, y_data, x_label="", y_label="", title=""):
   # Create the plot object
   _, ax = plt.subplots()

   # Plot the best fit line, set the linewidth (lw), color and
   # transparency (alpha) of the line
   ax.plot(x_data, y_data, lw = 2, color = '#539caf', alpha = 1)

   # Label the axes and provide a title
   ax.set_title(title)
   ax.set_xlabel(x_label)
   ax.set_ylabel(y_label)
view raw

直方图 

直方图对于显示或发现数据点的分布非常有用。看看下面的直方图,我们画出频率 vs IQ直方图。我们可以清楚地看到均值和中位数是什么。我们也可以看到它遵循高斯分布。使用直方图(而不是散点图)可以让我们清楚地看到每个bin(直方)频率之间的相对差异。使用bin(经过离散化)确实帮助我们看到“更大的图景”,因为如果我们使用所有的数据点而不是离散化后的bin,那么在可视化中可能会有很多噪音,很难看清到底发生了什么。

直方图实例

使用Matplotlib绘制直方图的代码如下所示。有两个参数需要注意。首先,n_bins参数控制我们希望我们的直方图有多少个离散箱。更多的bins会给我们提供更详细的信息,但也可能会带来噪音,使我们远离更大的画面;另一方面,减少bins给我们更多的“鸟瞰”,描述发生了什么事情而没有更详细的细节。其次,cumulative参数是一个布尔值,它允许我们选择我们的直方图是否累积。也就是说选择的是概率密度函数(PDF)还是累积密度函数(CDF)。

def histogram(data, n_bins, cumulative=False, x_label = "", y_label = "", title = ""):
   _, ax = plt.subplots()
   ax.hist(data, n_bins = n_bins, cumulative = cumulative, color = '#539caf')
   ax.set_ylabel(y_label)
   ax.set_xlabel(x_label)
   ax.set_title(title)

假设我们要比较数据中两个变量的分布。有人可能认为你必须制作两个单独的直方图,并把它们并排进行比较。但是,实际上有一个更好的方法:我们可以用不同的透明度覆盖直方图。查看下图。均匀分布被设置为透明度为0.5,这样我们就可以看到它后面是什么。这允许直接查看同一图形上的两个分布。

覆盖直方图

在代码中设置了一些用于覆盖直方图的参数。首先,我们设置水平范围来容纳两个变量分布。根据这个范围和所需的箱数,实际上可以计算每个箱子的宽度。最后,我们将两个直方图绘制在同一个图上,其中一个稍微透明一些。

# Overlay 2 histograms to compare them
def overlaid_histogram(data1, data2, n_bins = 0, data1_name="", data1_color="#539caf", data2_name="", data2_color="#7663b0", x_label="", y_label="", title=""):
   # Set the bounds for the bins so that the two distributions are fairly compared
   max_nbins = 10
   data_range = [min(min(data1), min(data2)), max(max(data1), max(data2))]
   binwidth = (data_range[1] - data_range[0]) / max_nbins


   if n_bins == 0
     bins = np.arange(data_range[0], data_range[1] + binwidth, binwidth)
   else: 
     bins = n_bins

   # Create the plot
   _, ax = plt.subplots()
   ax.hist(data1, bins = bins, color = data1_color, alpha = 1, label = data1_name)
   ax.hist(data2, bins = bins, color = data2_color, alpha = 0.75, label = data2_name)
   ax.set_ylabel(y_label)
   ax.set_xlabel(x_label)
   ax.set_title(title)
   ax.legend(loc = 'best')

柱状图 

当你试图把类别较少(大概是10个)的分类数据可视化时,柱状图最有效。如果我们有太多的类别,那么柱状图将是非常混乱,并且难以理解。它们对于分类数据是很好的,因为你可以很容易地根据柱状的形状(例如大小)来区分类别之间的区别;类别也很容易划分和进行颜色编码。我们要看3种不同类型的柱状图:常规的、分组的和堆积的。下图中代码的顺序与图的顺序一致。

常规柱状图是下面的第一个图。在barplot()函数中,x_data代表X轴上的tickers和y_data代表Y轴上的柱状高度。error线是一条在每一柱状中间的额外的线,可以画出以显示标准差。

常规柱状图

分组柱状图允许我们比较多个分类变量。看看下面的第二个柱状图。我们首先比较的变量是分数如何根据组(G1,G2等)而变化。我们还通过颜色编码比较了他们的性别。我们来看一看代码,y_data_list变量现在真的是一个列表的列表,其中每个子列表代表一个不同的组。然后我们遍历每个组,对于每个组绘制x轴上的每一个刻度条,每组也是颜色编码的。

分组柱状图

堆积柱状图非常适合可视化不同变量的类别构成。在下面的堆积柱状图中,我们一天天地比较服务器负载。通过颜色编码后的堆,我们可以很容易地看到并理解哪一台服务器每天工作最多,以及一台服务器负载如何与其他服务器进行比较。此代码遵循与分组柱状图相同的样式。除了我们遍历每个组时在旧的上面画新的条,而不是在它们旁边。

堆积柱状图

def barplot(x_data, y_data, error_data, x_label="", y_label="", title=""):
   _, ax = plt.subplots()
   # Draw bars, position them in the center of the tick mark on the x-axis
   ax.bar(x_data, y_data, color = '#539caf', align = 'center')
   # Draw error bars to show standard deviation, set ls to 'none'
   # to remove line between points
   ax.errorbar(x_data, y_data, yerr = error_data, color = '#297083', ls = 'none', lw = 2, capthick = 2)
   ax.set_ylabel(y_label)
   ax.set_xlabel(x_label)
   ax.set_title(title)

   
def stackedbarplot(x_data, y_data_list, colors, y_data_names="", x_label="", y_label="", title=""):
   _, ax = plt.subplots()
   # Draw bars, one category at a time
   for i in range(0, len(y_data_list)):
       if i == 0:
           ax.bar(x_data, y_data_list[i], color = colors[i], align = 'center', label = y_data_names[i])
       else:
           # For each category after the first, the bottom of the
           # bar will be the top of the last category
           ax.bar(x_data, y_data_list[i], color = colors[i], bottom = y_data_list[i - 1], align = 'center', label = y_data_names[i])
   ax.set_ylabel(y_label)
   ax.set_xlabel(x_label)
   ax.set_title(title)
   ax.legend(loc = 'upper right')

   
def groupedbarplot(x_data, y_data_list, colors, y_data_names="", x_label="", y_label="", title=""):
   _, ax = plt.subplots()
   # Total width for all bars at one x location
   total_width = 0.8
   # Width of each individual bar
   ind_width = total_width / len(y_data_list)
   # This centers each cluster of bars about the x tick mark
   alteration = np.arange(-(total_width/2), total_width/2, ind_width)

   # Draw bars, one category at a time
   for i in range(0, len(y_data_list)):
       # Move the bar to the right on the x-axis so it doesn't
       # overlap with previously drawn ones
       ax.bar(x_data + alteration[i], y_data_list[i], color = colors[i], label = y_data_names[i], width = ind_width)
   ax.set_ylabel(y_label)
   ax.set_xlabel(x_label)
   ax.set_title(title)
   ax.legend(loc = 'upper right')

箱线图 

我们以前研究过直方图,其对于可视化变量的分布非常有用。但是如果我们需要更多的信息呢?也许我们想更清楚地看一下标准差?也许中位数与平均值有很大的不同,因此我们有很多离群值。如果数据有倾斜,许多值集中在一边呢?

那就是箱线图发挥作用的时候了。箱线图给了我们上面所有的信息实线盒的底部和顶部总是第一和第三分位(即数据的25%和75%),以及箱内的实线总是第二分位(中位数)。“胡须”(例如虚线条一端的条线)从箱中延伸出以显示数据的范围。

由于箱线图绘制自每一个组或变量,所以设置起来相当容易。x_data是组/变量列表。Matplotlib中boxplot()函数对y_data的每一列或y_data序列中的每个向量绘制箱线图;因此x_data中每个值对应于y_data中的列/矢量。所有我们要设定的就是绘图的美学。

箱线图示例

def boxplot(x_data, y_data, base_color="#539caf", median_color="#297083", x_label="", y_label="", title=""):
   _, ax = plt.subplots()

   # Draw boxplots, specifying desired style
   ax.boxplot(y_data
              # patch_artist must be True to control box fill
              , patch_artist = True
              # Properties of median line
              , medianprops = {'color': median_color}
              # Properties of box
              , boxprops = {'color': base_color, 'facecolor': base_color}
              # Properties of whiskers
              , whiskerprops = {'color': base_color}
              # Properties of whisker caps
              , capprops = {'color': base_color})

   # By default, the tick label starts at 1 and increments by 1 for
   # each box drawn. This sets the labels to the ones we want
   ax.set_xticklabels(x_data)
   ax.set_ylabel(y_label)
   ax.set_xlabel(x_label)
   ax.set_title(title)

结论 

以上就是使用Matplotlib简单快速实现的5种数据可视化。把事情抽象成函数总能让代码更易于阅读和使用。希望你喜欢这篇文章,并学到一些新的、有用的东西。如果你没有,就随便给它一些掌声吧~

锐眼洞察 | 大数据与商业智能有什么区别?

作者:Dan Kusnetzky

原文:http://www.dataversity.net/big-data-business-intelligence-whats-difference/

译者:TalkingData架构师 曾晓春

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

大数据近来在媒体上频繁的出现,但其定义和应用仍然被一些企业的决策者所回避。这些企业在商业智能(BI)的流程和应用程序上投入了大量资金,并且希望将他们一直在做的事情冠以“大数据”的名义幸福地生存下去。可惜的是,BI与大数据所处理的事情确实是不同的。

概念战正在进行 

虽然大数据是一个相对较新的学科,但它已经集合了许多新的概念,用以解释如何收集数据、如何分析数据以及如何使用数据。让我们来看看其中的一些。

野生的大数据概念 

当供应商构建产品并提供旨在处理大数据整体或领域中一些部分的服务,他们通常会提出自己的概念。希望他们的概念能够影响到其他人。这样他们可以声称他们创造了这个概念,并且所有其他供应商都在追随他们。

在“机器智能”的旗帜下,业界已开始谈论“人工智能”、“深度学习”和“机器学习”,这些术语可用于描述产品如何处理数据从而让企业从数据中获取价值。它也可用于描述工具如何找到数据中的模式和异常情况,以帮助企业的数据科学家。

如果我们关注数据是如何被使用的,我们会听到诸如“预测分析”、“智能风险评估”,甚至“大数据分析”等词语。在大数据技术用于改进时,这些词语已被大量使用在系统和应用操作、网络性能以及数据和应用安全中。

随着行业的发展,新的概念会定期出现。通常这意味着一个供应商试图以一种新的方式来定位他们的产品和服务,而不是在底层技术上提供明显提升。

最后,当供应商挥舞大数据旗帜时,他们通常会谈论企业如何审查从大量到海量的数据,以找出隐藏的规律,利用各种类型的数据的能力,并基于新的洞察来进行有意义的调整,使他们能够快速采取行动。通常,其显著的区别是在哪里以及如何部署这些技术。

企业决策者需要问的关键问题是:“为企业或组织带来的影响是什么?”以及“我们是否应该了解更多并开始使用大数据?”

BI的重点在于检查已知信息

作者Mary Pratt认为,BI利用软件和服务将数据转化为可操作的情报,从而告知组织的战略和战术业务决策。BI工具可访问和分析数据集,并在报告、摘要、仪表板、图表和地图中提供分析结果,为用户提供关于业务状态的详细情报。换句话说,商务智能是企业提出问题,并从他们的信息系统获得有用的回应。

最终,BI基于企业知识,即正在发生的事情以及需要被跟踪和了解的已经发生的事情。为此,企业建立流程和系统来收集所需数据,分析数据,然后根据分析汇报结果。企业知道需要跟踪什么、如何分析这些数据以及如何报告分析结果以及应该汇报给谁。

BI成为许多供应商的盈利来源。他们开发了构建和利用“数据仓库”的工具,并通过复杂的工具来为决策者提供有用的仪表板和报告工具。

大数据在几个重要方面与BI相关,但它们是不同的。

大数据 

另一边,大数据被认为是处理大量数据,但它的范围更广,尤其是在探索未知方面。通常,目标是通过筛选企业自己的操作和机器数据来了解要提出什么问题。一旦这些问题被知晓,BI流程就可以用于额外的探索和报告。但大数据更有趣的用途之一是在业务活动发生时将分析集成到业务操作中。所以,大数据不仅仅是解释已经发生的事情的更好方式,而是可以直接影响业务结果。

大数据面临的挑战 

大数据希望解决的难点是:

  • 如何有效地获取和存储如此大量的数据
  • 如何分析这些数据,以便企业能够更好地了解自己的业务或客户需求,以及如何满足这些需求
  • 如何收集如此大量的数据并直接支持处理和分析,特别是以一种安全的方式来满足越来越多的隐私条例
  • 企业如何筛选数据,提出重要问题,并将结果可视化
  • 减少延迟和等待时间,以便将分析纳入企业的运营中

另一种看待这个问题的方式是,企业并不完全理解正在发生的事情。它观察到其业务运营或客户需求的变化,但并未完全了解发生了什么。它可能会看到收入突然增加或减少,客户满意度或竞争环境发生变化。实时应对这些变化的能力提供了显著的竞争优势。尤其是,相较之下,BI所主要提供的商业洞察无法全面自动化的发现洞察背后的那些变化。

意想不到的变化 

当企业经历意外的或突然的变化时,他们通常会开始思考为什么会错过以及是如何错过的。

例如,竞争对手可能突然进入市场。老竞争对手可能会消失或被视为局外人的公司收购。还可能开始与其他紧密相关的市场发生合并或冲突,以导致意想不到和被认为是不受欢迎的变化。

海量数据可能提供线索

很多时候,这些企业拥有大量的数据,这些数据已经积累了很长时间,但企业根本不知道该如何处理它。这些数据可能包含运营数据,其中包括销售数据、生产数据、研究数据和天气数据。它也可能有大量来自销售点设备或制造过程控制系统的数据。它也可能包含对监管变化或其他经济变化的信息。

在了解了“大数据”的概念后,企业决策者被鼓励系统地评估这些数据,并寻找模式和异常。这些有价值的信息可以为最近获得的数据提供适当的背景信息。因此,在网页加载时,就可以根据深层的历史数据以及流式和实时操作对客户体验进行优化。

最后,他们发现了该去了解的新问题,以帮助他们了解所发生的事情并推动洞察力。这意味着他们开始明白,他们需要更智能的、由机器学习所驱动的自动化响应,来识别背景和意义,从而改善企业自身的实践。他们的目标当然是增加收入,或降低成本,或两者兼而有之。

企业将很快意识到需要新的工具和专业知识 

一旦企业开始利用大数据,决策者很快就会认识到,它需要一套不同的工具和专门知识。首先,这个领域看起来需要企业“面面俱到”,才能通过整个过程获得价值。当然,这可能是耗费时间的,并且可能最终不会获得在流程开始时所期望的价值。

我们建议最好找一些更有可能产生新价值或容易学习的简单东西。这种学习应该带来新的机会和/或改变对当前业务、产品或服务的认识,而不是对已经显而易见的事情进行痛苦的研究。

一旦踏上这段旅程,企业很快就会发现,亡羊补牢的宝贵见解并不那么具备价值。企业很快就会发现,一遍又一遍地做同样的事情而没有实现流程的自动化,意味着任何好处都可能会在流程本身造成的时间和成本增加的情况下被淹没。

通常,企业意识到它“知道”组织中的某个地方即将发生变化,甚至应该如何处理这些变化。有些时候企业会意识到利用了这些知识并获得了一些重要的好处。其他时候,企业发现没有利用上这些知识,而是被事件“蒙蔽”了。

现在是时候了 

大数据工具和流程已经发展到足够让企业在学习如何利用它们时有安全感。他们很快就会了解到,这个领域已经迅速开发出新的工具、新的方法和新的思维方式。许多专家认为数据流(Data Logistics)是关键(可参考Ted Dunning和Ellen Friedman撰写的关于“机器学习流(Machine Learning Logistics)”的文章了解更多信息)。

不要单干 

既然大数据的概念已经发展了一段时间,那么企业决策者就不必再觉得需要自食其力,并且没有路线图、没有既定的道路、也没有指引。现在有许多供应商提供工具、现成的流程和专业服务,可以很好地利用。记得从小处着手,积累经验,并在过程中逐步获得实际价值。

技术专栏 | 走进分布式一致性协议

作者:TalkingData 战鹏弘

本文由TalkingData原创,转载请获取授权。

在分布式系统中,每一个机器节点虽然都能明确的知道自己在进行事务操作过程中的结果是成功或失败,但却无法直接获取其它分布式节点的操作结果。因此,当一个事务操作需要跨越多个分布式节点的时候,为了保证事务处理的ACID特性,需要引入一个成为“协调者”的组件来统一调度所有分布式节点的执行逻辑,这些被调度的分布式节点则被称为“参与者”。协调者负责调度参与者的行为,并最终决定这些参与者是否要把事务真正进行提交。基于这个思想,衍生出了二阶段提交(2PC)和三阶段提交(3PC)。

2PC

为了使分布式系统下所有节点在进行事务处理的时候能够保持原子性和和一致性而设计的算法。

两个阶段

阶段一:提交事务请求

协调者向各个参与者发送事务内容,询问是否可以执行事务操作,等待参与者响应。

参与者接收到询问之后,执行事务操作,但是不commit,将undo和redo信息保存到事务日志中。

参与者根据执行情况向协调者返回是否可以执行事务的响应。

阶段二:执行事务提交

阶段一参与者都返回yes

协调者收到所有的yes信号之后,通知参与者执行最后的commit,参与者执行完成之后,想协调者返回ACK信息。

协调者接收到所有的ACK信息之后,完成分布式事务操作

阶段一某个参与者返回no

说明其中一个参与者无法成功执行事务,协调者通知所有参与者回滚事务。

参与者进行事务回滚,完成之后向协调者返回ACK信息

协调者接收到所有的ACK信息之后,事务中断完成

协调者的作用

阶段一

发送给参与者信息

接收参与者反馈,确定下一步需要发送给参与者的信息

阶段二

根据阶段一获得的响应,确定需要发送给参与者的信息(此时如果协调者出问题,无法通知参与者执行commit,参与者的资源会一直被锁住)

接收参与者的反馈,事务结束

注意问题

同步阻塞
第一阶段各个参与者执行事务操作的过程都是阻塞的,各个所有参与者全部完成响应之前,资源都是被加锁的,无法进行其它操作。

协调者的单点问题
两个阶段都需要协调者进行协调,第二阶段中协调者向参与者发送事务commit的新号时,一旦出问题,参与者将无法提交commit操作,资源一直会处于锁定状态,无法释放。

数据不一致
第二阶段协调者发送事务commit信息时,如果与某个参与者的连接出问题,会出现其他参与者成功提交事务,而该参与者事务无法提交,各个参与者的数据会出现不一致的情况。

3PC

阶段一(canCommit)

区别于2PC,3PC的第一阶段会询问所有的参与者是否可以进行事务提交,但是不去执行事务(2PC的第一阶段实际上去执行了事务,但是没有commit而已),这一阶段可以在不锁定资源的前提下,判断各个参与者是否能够执行事务,当然各个参与者返回yes不代表后续执行事务一定会成功。

2PC的第一阶段会真正执行事务,如果某个参与者出现问题,消耗了很长时间返回给协调者no信号,再这个很长时间内,其它的参与者会一直锁定资源,block在那里。3PC的第一阶段有效的解决了该问题。

阶段二(preCommit)

阶段二同2PC的阶段一实际上是相同的,会执行事务但是不提交,但是很大程度上减少了2PC在他的阶段一出现阻塞的问题

阶段一参与者都返回YES

各个参与者执行事务,但是不提交,返回给协调者ACK信号

阶段一有某个参与者返回no

协调者通知参与者中断事务,因为第一阶段中没有执行操作,所以不需要回滚

阶段三(doCommit)

阶段二所有参与者返回yes

说明各个参与者事务执行成功,通知参与者进行commit,返回给协调者ACK,完成事务

阶段二某个参与者返回No

通知所有参与者回滚事务,返回给协调者ACK,中断事务

注意问题

进入阶段三之后,如果协调者出现故障或者与参与者之间的连接出现问题,参与者等待commit信号超时之后,会继续进行事务提交。这种机制一定程度上在协调者故障或者连接出问题时,解决数据不一致问题。

2PC和Paxos

2PC和Paxos作为分布式一致性协议,分别适用于两类一致性:操作原子性和副本一致性。

2PC:保证分布式环境中的多台机器的操作的原子性,要么全部成功,要么全部不成功

Paxos:保证同一个数据分片的多个副本之间的数据一致性

Paxos算法

Paxos算法是莱斯利-兰伯特于1990年提出的一种基于消息传递且具有高度容错性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一。

Paxos算法需要解决的问题是如何在一个可能发生机器宕机或者网络异常等异常的分布式系统中,快速且正确的在集群内部对某个数据的值达成一致,并且保证无论发生上述任何异常,都不会破坏整个系统的一致性。

分布式系统的存在为了解决单点问题,例如典型的master slave模式,一旦master宕机之后,需要将slave节点切换为master节点,条件是slave和master节点的数据是一致的,也就是说在master上的一切操作都需要同步到slave节点上,这样的slave才具备选举为master的条件。Paxos算法可以为这种数据一致性提供有效的保障。

Paxos算法可以分为两个阶段,prepare阶段和accept阶段,下面简单阐述一下这两个阶段。

prepare阶段

假设现在分布式集群中有三个节点:A、B、C,A把申请操作的请求发送给A、B、C,发送的请求会携带一个Sequence Number(这个值会不断递增,且是唯一的),接受节点在prepare阶段会拒绝接受到的任何提案号小于当前提案号的请求。

如果接受节点接收到的提案号大于当前提案号,节点会给节点A返回yes,并且不在接受提案号更小的提案,也就是说节点总会对最新的提案号做承诺。

accept阶段

如果提案者A收到了半数以上的节点返回yes,他会再次向接收节点发送accept request,仍会携带一个sequence number(n),当接收节点收到accept request信号之后,如果n是接收者接收到的最新的提案号,那么会最终通过提案,如果发现存在比n更大的提案号,拒绝该request,同时提案者会重新进行第一阶段(prepare阶段)。

具体的执行过程如下图所示:

(图片来自:https://www.cnblogs.com/cchust/p/5617989.html)

分布式一致性算法的工程实践

Chubby

Google Chubby是一个有名的分布式锁服务,Google的GFS和Big Table等大型分布式系统都是用它来解决分布式写作、元数据存储和Master选举等一系列与分布式锁相关的问题。

假设Chubby集群中有5台服务器:A B C D E,其中A是当前的master,另外4台服务器实际上是A的副本。Chubby实际运行过程中,只有作为master的A服务器会对外提供写操作服务,其他四台服务器通过Paxos协议从A服务器中同步数据的操作,Paxos协议能够有效的保证副本节点的数据和master节点之间保持一致性。

Chubby中每次提案value的选定是一个Paxos instance,提案由多个proposer提出,最终得到一个value。每次提案的选举都会计入到底层的log日志中,由于Chubby需要不间断的对外提供服务,因此会不断产生Paxos instance,事务日志也会不断增长。每个Paxos instance负责确定一个value,多个instance之间是互不相关的,可以并发进行。将Paxos每两个阶段的提交prepare→promise→propose→accept记作一个round,每个Paxos instance执行过程中可能会经历多轮round,最终才能确定最后的提案。

上述基本的Paxos算法执行过程存在可优化的地方:多个proposer的活锁问题会严重影响效率,导致一个instance最终选定提案需要执行多轮round。

实际执行过程中,可以将多个instance的prepare阶段合并成一个阶段。首先必须在多个proposer中选举出一个master作为唯一的proposer,原本多个instance之间是互相独立的,只需要保证instance内部的round序号不重复即可。现在为了合并prepare阶段,多个instance之间公用一套序号,具体做法如下:

当某个replica通过选举获得master资格后,用新分配的编号N广播一个prepare消息,这个prepare消息被所有未达成一致的instance和将来还未开始的instance共用。

当acceptor接收到prepare后,现在必须对多个instance同时做出回应,这可以封装在一个数据包中,假设最多允许K个instance同时选举,那么:

当前至多有K个未达成一致的instance,将这些未决的instance各自最新accept的value(若没有用null代替)封装进一个数据包,作为promise消息返回

同时,标记这些未决instance和所有未来instance的highestPromisedNum为N,如果N比它们原先的值大的话。这样,这些未决instance和所有未来instance都不能再accept编号小于N的proposal。

然后master就可以对所有未决instance和所有未来instance分别执行propose→accept阶段,始终使用编号N,如果这个master保持稳定的话,就再也不需要prepare→promise了。但是,一旦发现acceptor返回了一个reject消息,说明另一个master启动,用更大的编号M>N发送了Prepare消息,这时自己就要分配新的编号(必须比M更大)再次进行prepare→promise阶段。

ZooKeeper

在ZooKeeper中,client向ZooKeeper提出一个事务,例如创建一个znode,请求会发送到ZooKeeper中的所有机器上,leader需要协调事务的执行,只要集群中半数以上的机器成功执行了该事务,leader便会通知follower进行事务提交。leader作为ZooKeeper中最重要的角色,协调事务执行过程中会保存一个全局的变更序列,可以保证如果一个状态变更已经被处理了,那么所有以来的状态变更应该已经被提前处理了。
ZooKeeper中使用的分布式一致性协议ZooKeeper Atomic Broadcast(ZAB,ZooKeeper原子消息广播协议),ZAB协议的消息广播过程使用的是一个原子广播协议,类似于一个二阶段提交过程。根据客户端的事务请求,leader服务器会为其生成对应的事务poposal,并发送给集群中其余所有的机器,然后收集各自的选票,最后进行事务的提交。

与二阶段提交不同的是,ZAB协议移除了终端逻辑,所有的follower服务器要么正常反馈leader提出的事务proposal,要么抛弃leader服务器,这意味着leader可以在过半的follower服务器已经反馈ACK信号之后就开始提交事务proposal,而不需要等待所有的follower服务器都反馈响应。当时,这种简化的二阶段提交下,无法处理leader服务器崩溃退出而带来的数据不一致问题,因此ZAB协议添加了崩溃恢复模式来解决这个问题。

ZAB协议的执行过程

ZAB主要包括消息广播和崩溃恢复两个过程,进一步可以分为三个阶段,分别是发现(Discovery)、同步(Synchronization)、广播(Broadcast)阶段。ZAB的每一个分布式进程会循环执行这三个阶段,称为主进程周期。

发现:选举产生PL(prospective leader),PL收集Follower epoch(cepoch),根据follower的反馈,PL产生new epoch(每次选举产生新Leader的同时产生新epoch)。

同步:PL补齐相比follower多数派缺失的状态、之后各Follower再补齐相比PL缺失的状态,PL和follower完成状态同步后PL变为正式leader(established leader)。

广播:leader处理客户端的写操作,并将状态变更广播至follower,follower多数派通过之后leader发起将状态变更落地(deliver/commit)。

在正常运行过程中,ZAB协议会一直运行于阶段三来反复进行消息广播流程,如果出现崩溃或其他原因导致leader缺失,那么此时ZAB协议会再次进入发现阶段,选举新的leader。

leader可能在事务提交完成或者提交了一半的时候崩溃,因此leader选举算法需要确保提交已经被leader提交的事务的proposal,同时丢弃已经被跳过的事务proposal。

如果让leader选举算法能够保证新选举出来的leader服务器拥有集群中所有机器最高编号(ZXID最大)的事务proposal,那么就可以保证这个新选举出来的leader一定具有所有已经提交的提议,更为重要的是如果让具有最高编号事务的proposal机器称为leader,就可以省去leader服务器查询proposal的提交和丢弃工作这一步骤了。

技术专栏 | 利用HDFS备份实现Elasticsearch容灾

作者:TalkingData数据工程师 杨双亮

本文由TalkingData原创,转载请获取授权。

01 问题

Elasticsearch 副本提供了高可靠性;它们让你可以容忍零星的节点丢失而不会中断服务。但是,副本并不提供对灾难性故障的保护。对这种情况,你需要的是对集群真正的备份——在某些东西确实出问题的时候有一个完整的拷贝。

02 解决方案

通过快照的方式,将Elasticsearch集群中的数据,备份到HDFS上,这样数据即存在于Elasticsearch(以下简称ES)集群当中,又存在于HDFS上。当ES集群出现不可恢复性的故障时,可以将数据从HDFS上快速恢复。

ES集群快照存在版本兼容性问题,请注意:

  • A snapshot of an index created in 5.x can be restored to 6.x.
  • A snapshot of an index created in 2.x can be restored to 5.x.
  • A snapshot of an index created in 1.x can be restored to 2.x.

03 操作步骤

插件GitHub地址:https://github.com/elastic/elasticsearch-hadoop/tree/master/repository-hdfs

下载地址:https://download.elastic.co/elasticsearch/elasticsearch-repository-hdfs/elasticsearch-repository-hdfs-2.2.0-hadoop2.zip

  • 在线安装

进入ES的目录,执行命令:bin/elasticsearch-plugin install repository-hdfs

  • 离线安装

现将下载好的zip包,放在指定目录,如/home/hadoop/elk/es-reporitory.zip,然后执行命令:bin/plugin install file:///home/hadoop/elk/es-reporitory.zip

显示:

-> Installing from file:/home/hadoop/elk/elasticsearch-repository-hdfs-2.2.0-hadoop2.zip…
Trying file:/home/hadoop/elk/elasticsearch-repository-hdfs-2.2.0-hadoop2.zip …
Downloading ……………..DONE
Verifying file:/home/hadoop/elk/elasticsearch-repository-hdfs-2.2.0-hadoop2.zip checksums if available …
NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify)
ERROR: Plugin [repository-hdfs] is incompatible with Elasticsearch [2.3.3]. Was designed for version [2.2.0]

注意:应当选择与你使用ES版本的插件,由于我们使用的ES版本是2.3.3,而使用的插件版本是2.2.0 ,故可以先解压,修改plugin-descriptor.properties

解压,修改plugin-descriptor.properties:

name=repository-hdfs
description=Elasticsearch HDFS Repository
version=2.3.3
classname=org.elasticsearch.plugin.hadoop.hdfs.HdfsPlugin

elasticsearch.version=2.3.3
java.version=1.7
jvm=true

重新打包为es-reporitory.zip,再执行(最好使用root权限);使用Hadoop权限,会出现以下信息:

bin/plugin install file:///home/hadoop/elk/es-reporitory.zip
-> Installing from file:/home/hadoop/elk/es-reporitory.zip...
Trying file:/home/hadoop/elk/es-reporitory.zip ...
Downloading ......................DONE
Verifying file:/home/hadoop/elk/es-reporitory.zip checksums if available ...
NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify)
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission accessClassInPackage.sun.security.krb5
* java.lang.RuntimePermission accessDeclaredMembers
* java.lang.RuntimePermission getClassLoader
* java.lang.RuntimePermission loadLibrary.jaas_nt
* java.lang.RuntimePermission setContextClassLoader
* java.lang.RuntimePermission shutdownHooks
* java.lang.reflect.ReflectPermission suppressAccessChecks
* java.security.SecurityPermission createAccessControlContext
* java.util.PropertyPermission * read,write
* javax.security.auth.AuthPermission getSubject
* javax.security.auth.AuthPermission modifyPrincipals
* javax.security.auth.AuthPermission modifyPrivateCredentials
* javax.security.auth.AuthPermission modifyPublicCredentials
* javax.security.auth.PrivateCredentialPermission org.apache.hadoop.security.Credentials "*" "*" read
See http://docs.oracle.com/javase/ ... .html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
Installed repository-hdfs into /home/hadoop/elk/elasticsearch-1/plugins/repository-hdfs

3.2 ES集群添加配置 

ES集群各个node节点的config/elasticsearch.yml文件添加一下配置,然后滚动式重启:

security.manager.enabled: false
repositories.hdfs:
   uri:"hdfs://172.23.5.124:9000"
   path:"/es"

注意:这里是简单的配置,还有其它的参数,这里就采用默认的了。

3.3. 常用的快照命令 

建立仓库命令:

curl -XPUT 'http://172.20.33.3:9200/_snapshot/es_backup' -d ' {"type":"hdfs", "settings":{ "path":"/user/ysl", "uri":"hdfs://172.23.5.124:9000" } }'

至于快照命令,常用的快照命令,简单记录如下:

创建存储快照的仓库:

curl -XPUT 'http://172.20.33.3:9200/_snapshot/backup' -d '{"type":"hdfs", "settings":{ "path":"/user/ysl", "uri":"hdfs://172.23.5.124:9000" } }'

快照特定的索引:

curl -XPUT 'http://172.20.33.3:9200/_snapshot/backup/snapshot_1' -d '{"indices":"logstash-gatewaylog"}'

恢复特定索引:

curl -XPOST 'http://172.20.33.3:9200/_snapshot/my_backup/snapshot_1/_restore?pretty'

查看特定快照信息:

curl -XGET  'http://172.20.33.3:9200/_snapshot/backup/snapshot_20171223'

删除快照:

curl -XDELETE 'http://172.20.33.3:9200/_snapshot/backup/snapshot_20171223'

监控快照:

curl -XGET 'http://172.20.33.3:9200/_snapshot/backup/snapshot_20171223/_status'

响应包括快照的总体状况,但也包括下钻到每个索引和每个分片的统计值。这里展示了有关快照进展的非常详细的视图。分片可以在不同的完成状态:

  • INITIALIZING:分片在检查集群状态看看自己是否可以被快照。这个一般是非常快的。
  • STARTED:数据正在被传输到仓库。
  • FINALIZING:数据传输完成;分片现在在发送快照元数据。
  • DONE:快照完成!
  • FAILED:快照处理的时候碰到了错误,这个分片/索引/快照不可能完成了。检查你的日志获取更多信息。

监控恢复快照:

Curl -XGET  'http://172.20.33.3:9200/logstash-gatewaylog/_recovery'

要获取一个仓库中所有快照的完整列表,使用 _all 占位符替换掉具体的快照名称:

curl -XGET  'http://172.20.33.3:9200/_snapshot/backup/_all'

取消一个快照:

curl -XDELETE 'http://172.20.33.3:9200/_snapshot/backup/snapshot_20171223'

备份集群:

https://www.elastic.co/guide/cn/elasticsearch/guide/current/backing-up-your-cluster.html

快照恢复:

https://www.elastic.co/guide/cn/elasticsearch/guide/current/_restoring_from_a_snapshot.html

3.4 脚本 

/home/hadoop/elk/script/snapshot_all_hdfs.sh
#!/usr/bin
current_time=$(date +%Y%m%d%H%M%S)
command_prefix=" http://172.20.33.3:9200/_snapshot/es_backup/all_"
command=$command_prefix$current_time
echo $command
curl -XPUT $command -d '{"indices":"index*,logstash*,nginx*,magicianlog*,invokelog*,outside*"}'
/home/hadoop/elk/script/snapshot_gatewaylog_hdfs.sh

3.5 crontab

0 0 */1 * * /bin/bash /home/hadoop/elk/script/snapshot_all_hdfs.sh>>/home/hadoop/elk/task_log/snapshot_all_day.log 2>&1

注意:这里采用的是每天一份快照,快照的频率可以自己控制。

04 恢复时间

我们采用的测试环境:

ES集群:四个节点,每个节点:10G内存,ES版本:2.3.3,每个索引5个主分片,一个replica.

4.1 备份数据 

第一次快照是全量的(gatewaylog_20171226),第二次快照则是增量的快照(gatewaylog_20171228):

gatewaylog_20171226的详细数据:

gatewaylog_20171228的详细数据:

4.2 恢复数据

第一次是全量的数据恢复,第二次则是在第一次恢复的基础上进行的:

以下是各个分片的数据恢复的详细数据:

gatewaylog_20171226 恢复详细数据:

Gatewaylog_20171228 恢复详细数据:

通过将ElasticSearch的数据备份到HDFS,我们再也不用担心数据会丢失了。

锐眼洞察 | 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)已经有了所需的相关软件,但是缺乏能够支撑在手机上运行的强大硬件。还要注意的是,利用可穿戴眼镜之类的设备替换手机屏幕,将会使得智能助手真正的成为我们生活的一部分。
  • 烹饪机器人 – 会做饭和清洁的机器人将会成为下一个伟大的设备,我们可能很快就会拥有相关硬件,但是我们缺乏对应的软件。我们需要迁移学习、持续学习以及增强学习。这些工作看起来都非常有魅力,因为你会看到:每一个配方都是不同的,每一个烹饪的原材料看起来都不一样,我们不可能硬编码这些选项,我们需要一个综合体来非常好的学习和总结,从而能够完成相关的工作。我们远没有达到这个地步,但是也不是非常的遥不可及。按照目前的发展速度,可能需要几年的时间。我过去几年就在做这些工作,未来也将继续做下去。

锐眼洞察 | 大数据和经济的不安全感会驱动更多的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初创公司的数量将大幅上升。这应该有助于企业更容易适应经济不确定性的增长。

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

作者:Trey Causey

原文:Rise of the Data Product Manager

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

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

译者注:

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

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

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

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

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

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

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

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

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

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

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

锐眼发现 | 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作为基础,连接本身也总会有一定程度的延迟,而这并不包括远程服务器上的处理时间。

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

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

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

作者: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

 

锐眼洞察 | 2018年电子商务10大趋势(翻译)

作者:Absolunet

原文:10 eCommerce Trends for 2018

译者:TalkingData架构师 郑晓红

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

译者注:

该文是Absolunet的一份调研报告,对电子商务在2018年的发展趋势进行了总结,主要有以下几个方面:

  1. 线下实体店将更加注重用户体验,提供各种高科技和交叉业态的体验手段,比如服装店提供咖啡,理发等服务。
  2. AR技术在销售中的利用,使得购物非常方便,提高转换率和用户体验。
  3. 机器学习使电子商务具有更加个性化,更加理想的用户体验。
  4. 语言搜素和图片搜索将改变购物体验,进一步提升转换率。
  5. 从购买渠道上来说,以浏览器为主的购买方式,将被弱化,用户可以通过更多的渠道进行购买,比如:智能设备等。
  6. 通过数据和实体店的归因模型,能够知道数据化的投入和产出比。

今天,电子商务/数字化对到店购买的影响达到56%,而电子商务本身占美国零售总额的10%,而这个数字每年增长近15%。数字商务已经不仅仅是“在网站上购物”,而是为了购买商品,通过技术手段进行的一系列互动。

正如这些数字所暗示的那样,如果不是顾客首选的渠道,商店就无法生存;零售商需要充分整合数字商务才能繁荣起来。同样,B2B接近电子商务的引爆点,2018的变化将更加频繁。

作为北美洲领先的电子商务机构与零售和B2B客户如Fujifilm、Structube、Grimco、Stokes、Garneau、La Vie en Rose、Birks and SAIL,这里仅仅举几个例子,Absolunet对电子商务的发展趋势进行了总结排名。为了让公司能够更好的发展,需要注意2018年的这10个趋势以确保线上和线下的销售增长。

1. 线下实体店的重生

基于数字化的新型零售店和亲身体验,将开始取代传统的零售商店。

店面零售不是在消亡,而是已经开始进行痛苦的转型。

根据以往实体店的经验,现场互动比以往任何时候都更重要。商家必须把线上展示、线下展示、活动、产品演示、店内体验甚至更多因素结合起来。

纯在线商家需要付出更多的线下工作,因为消费者会继续关注线上购物的多样性和深度,以及在线下购买、取货和退货的便利性。

实体店的商家将会对他们的物理设施进行数字化,并为了顾客的体验和便利在实体店中推出一些新的功能,这些都具有很强大的数字化特征。

网上男装品牌Frank And Oak在北美洲开有16家实体店。在这些实体店内,可以品尝到优质咖啡和享受理发服务。

Nordstrom百货开了一家3000平方英尺的商店,该商店没有商品,而是专注于服务和品牌体验,例如:剪裁、试穿、设计等。另外,还提供鲜榨果汁和美甲的服务。该商店也是在线商店的取货和退货点。

Casper是线上床垫的领先品牌,它于2017年在美国开设了15家快闪商店(pop-up shops)。

波特兰的Velo Cult在一个城市拥有80家自行车行,它突出的特点是在商店中融入各种其他文化元素。他们带来了精选的新款、定制和老式自行车,提供至少12种工艺啤酒、现场烘焙品和咖啡,并为当地音乐家提供舞台。

Home Depot在线上赚了50亿美元,但它的首要任务仍然是一流的店内体验,为客户的旅行提供DIY业务和专业承包的服务。

IRL(In Real Life)在芝加哥的水塔广场大厦的快闪店,只是一个用来展示线上商品的陈列室。

Kanuk‘s是加拿大标志性的皮衣品牌,它独特的店内体验包括:一个-25˚C (-13˚F) 冷冻室用来试穿皮衣在真实的寒冷冬天的效果。

2. B2B的消费化

B2B电子商务的困境。

这场完美风暴(注:独立发生时没有危险性但并发时会带来灾难性后果的事件组合)即将席卷近1万亿美元的B2B电子商务部门。

不断变化的B2B买家的期望推动了类似B2C的功能需求,此时,商业能力中对B2B的投资是大多数B2B首席执行官需要优先考虑的。擅长数字化的90后员工的增长、移动设备的无处不在、电子商务技术不断优化,推动着缓慢发展的传统B2B行业。

随着许多B2B买家和用户继续将产品的发现和购买行为转向在线和移动端,他们将在2018年体验到第一次流畅的、类似B2C的购买和订购。从打印目录到电话销售的所有(销售方式),正在被数字化优先的发现和以买方为中心的简化订购流程所取代。

这种易于订购/易于互动的业务将会增加订单量,也会增加把用户作为购买体验核心的供应商的预算。这样的购买体验,是他们从20年的B2C和零售电子商务的经验教训中总结出的。

* 完美风暴的解读

  1. 到2019年,B2B企业比电子零售商在电子商务技术上花费更多。
  2. 在2017年,56%的B2B买家希望将在线上购买的比例占到一半或更多,而在2014年只占到30%。
  3. 美国的B2B电子商务市场可能达到1.1T,占到所有B2B销售额的12.1%,到2020年将达到6万亿美元。
  4. 电子商务平台供应商(Magento,Insite,Sitecore,Oracle,Hybris等)正在推出与复杂的B2B业务规则(部分订单,批量定价等)共存的B2C类功能。
  5. 现在B2B购买者/研究人员的平均年龄小于35岁。
  6. 89%买家在B2B购物过程中使用在线搜索,74%的人购买超过50%的商品。
  7. B2B研究人员中,有71%的人开始使用通用非品牌搜索,在与特定供应商的网站进行交互之前,平均进行12次在线搜索。

在多个B2B市场中,市场巨头Amazon和阿里巴巴已经成为“购物领域的谷歌”,他们模糊了B2B和B2C之间的界限。

  • 2017年10月,Amazon推出了商业级航运,这是面向美国和德国企业的年度付费会员计划。
  • Amazon Business在5年内积累了超过100万个“Amazon Supply”用户。
  • 作为Amzon汇集了包括自身在内的30000多卖家的集市(marketplace),Amazon Business在第一年实现了10亿美元销售额,并每月增长20%。
  • 在中国,阿里巴巴占据了在线销售市场80%的份额(没错,80%),它的核心是一个用于连接西方企业和中国制造商的B2B门户。

3. 在你家里的AR

从“它看起来是什么样子”到“在你家里看起来是什么样子”。

在2018年,AR(Augmented Reality)将会被大量使用于品牌的推广,让消费者能够在购买之前通过移动设备在家里或办公室对所购买的商品进行可视化操作。

从沙发,到搅拌机,再到像家具或浴缸这样的大型商品,消费者将能够在订购之前确切了解该商品在实地中的样子。这将会增加“大商品”以及相关运输和服务的订单数量。AR也有助于减少退货——在电子商务行业中价值2600亿美元的问题。

苹果CEO库克称苹果为“具备AR(能力)的市场领导者,并指出在App Store上已经有1000多个带有AR功能的应用。据此,他说,AR首先引起营销人员兴趣是来源于现已成为‘主流’的类似Snapchat的应用和虚拟游戏口袋妖怪的游戏的成功,并指向那些零售、游戏、娱乐、教育类应用以及无论大型还是小型的企业。”

Houzz’s应用程序可以让你从500000种商品图片中进行挑选,让后将多个商品“放到”你的房屋中。数百万的顾客在没有使用Houzz应用程序之前,需要使用2.7倍的购物时间。

Amazon将AR直接添加到其现有的、聚焦转化的应用程序的搜索功能中。AR视图功能让你能够在购买之前,查看包括电子产品和工具在内的成千上万个产品在你家中和办公室中的效果。

宜家的Place是一个AR应用程序,可以让消费者添加宜家产品到任何空间并体验、试用和分享。产品是3D并成比例的,所以消费者可以看到家具或配件是否合适,以及在实际环境中看起来是什么样子。

4. “ROPO”: 零售商数字化成功的新措施

终于,对数字广告的店内ROI进行统计。

零售商现在能够了解店内销售额中有多少来源于在数字化上的投入,这归功于连接数据和商店的可靠的归因模型——ROPO Ratios (ROPO: “Research Online, Purchase Offline”)

82%的移动用户会搜索本地的商业,而18%的本地搜索会在24小时内带来销售。

衡量一个零售商的ROPO占比——即数字化运营和投资对商店的影响,对零售商来说更加先进并将更加容易获取。

结合移动设备和支付、社交媒体、个性化、定位/移动追踪,使用先进分析工具的实时库存、ERP、CRM和POS系统,零售商将能够找出哪些广告、列表和网站访问为实体店带来了到访和购买。

加拿大自行车零售商Primeau Velo有9:1的ROPO比例,即每在线上投入1美元将会产生9美元的实体店销售额。

英国零售商Matalan发现,在AdWords上每花费1英镑,将能带来46英镑的销售额,其中有31英镑是实体店的销售。

5. 移动支付方式超过桌面支付

移动电子商务的最大挑战将成为其最大的资产。

从购买产品和更新服务到实际支付和在店购买,移动支付将成为一种任何消费者都希望能够使用的便利,所以商家也不可忽视。

包括指纹识别和面部识别在内的移动支付技术的进步,将提高移动支付的交易比例。

随着谷歌、三星和苹果在支付技术方面的进步(他们的用户基数翻了一番),移动支付可能开始成为零售购买的首选支付方式,到2018年底移动支付将达到所有支付手段的70%。

星巴克有10%的订单是通过其移动订单和支付应用程序完成的。支付平台如此受欢迎,以至于2月的手机订单量超过了员工服务能力,导致了史上最长的等待时间。

美国银行Wells Fargo允许客户使用5000多台自动柜员机取款。

中国创纪录的90%,2017年“双十一”的销售额达254亿美元,其中移动和手机购物占总销售额的97%,大部分由阿里巴巴支付处理平台支付宝处理。

电子商务巨头的无货商店原型店Amazon Go可以让顾客轻松购物并离开商店。 购物将被自动扫描并记入他们的账户。

Paypal支持Android Pay、三星Pay、Apple Pay、Visa,万事达卡、Facebook和几家主要银行,使得其成为很多商家和消费者在移动支付方面的首选(和首次体验)。

6. 机器学习×电子商务

机器学习+人工智能将创造理想的客户体验。

人工智能将创造完美的、定制化的客户体验。这意味着千禧一代将有可能成为接受推销的最后一代。这标志着,2018年大多数零售商和品牌的目标市场定位,将从市场营销转向预定义的、相对较大的和多样化的人群,如千禧一代或婴儿潮一代。

随着品牌和零售商更好地利用消费和行为数据,电子商务的计划将更加目标明确、更接近一个不可思议的构想:一对一营销。就像店主知道客户的名字和喜好那样。

“在电子商务的背景下,喜欢‘星球大战’的人不需要被归类为广义的人口统计群体,他们的行为和偏好已经非常丰富。”——Charles Desjardins, Absolunet Associate

在Dynamic Yield进行个性化测试4个月后,斯托克斯的销售额增长了10%,这要归功于实时的、基于用户行为和每个类别中畅销产品的由AI提供的建议。

以其推荐引擎闻名于世的Netflix现在放弃了地理分割,而是将其9300万全球用户划分为1300个具有相似电影和电视节目偏好的“品味社区”,并根据这些社区中的流行趋势进行推荐。

Westfield正在努力说服其自有商场、甚至是竞争对手商场中的33个零售商与品牌来共享消费者行为和购买数据,以便大家都能更好地针对潜在客户进行相关的销售和促销活动。

7.Amazon与集市(marketplace)成熟的一年

作为一个典型的集市,预计Amazon将继续其野蛮发展。与它的中国同行阿里巴巴一样,Amazon将成为2018的电子商务计划中无处不在的组成部分。

55%的美国人开始在Amazon上进行产品搜索,其销售额几乎达到美国电子商务总销售额的一半(44%,而eBay是7%),几乎占美国所有零售销售的4%。 这些数字将在2018年继续增长。

  • Amazon几乎在其涉足的每个垂直市场中都会继续增加市场份额,而这是以牺牲许多零售商为代价的。 尽管Amazon本身并没有导致破产,但他们将已倒下的零售商的消费者。
  • 在线广告是Amazon发展最快的业务之一,Amazon在2018将升至(这一领域的)第三位,仅次于Google和Facebook。
  • 通过收购Whole Foods Markets,Amazon迅速成为一家拥有超过400家商店的实体商店,同时进入7700亿美元的杂货/食品领域。
  • Amazon是加拿大最值得信赖的零售品牌之一,赢得了23个电子商务类别中的15个,同时在另外4个类别中获得第二位。
  • 当Amazon流行的语音服务Alexa在加拿大推出时,它带来了超过10,000个本地技能和国家特色功能,集成了加拿大航空、TD银行、CBC、theScore、黄页等等。

8. 语音技术将彻底改变Google/SEO和电子商务

如果消费者从不访问你的网站,你如何进行在线销售?

在2018年,消费者会以前所未有的方式与他们的设备交谈并使用语音进行互动(会话式AI)。 零售商、商家和品牌将不得不改变他们的传播方式。

对于搜索引擎优化(SEO),期望一个Wild West-like land来抓取语音关键字,因为语音往往提供一个单一的答案,而不是多个结果。不够好就等于太差。

对于广告来说,展示广告的概念必须适应这种变化,因为现有的一对一的交互可能不再允许这种流行了50年的打扰性的广告模式。

对于电子商务,最大的影响将围绕着以下两方面产生:可兼容/优化语音搜索的深度产品信息、商品库存实时化。

Domino的技术允许用户通过语音命令订购比萨,甚至可以检查订单状态。

Lyft用户可以直接通过支持Amazon Alexa的设备叫车。

Staples计划在它的“Easy Button”中推出支持语音激活的订购服务。

沃尔玛在谷歌快递电子商务平台(Google Express eCommerce Platform)上通过语音获取到数十万的订单,并很快添加了通过Google Home订购而店内提货的功能。 Target、Costco、Kohl’s、Bed Bath&Beyond、Staples、Walgreens等公司也有类似的协议。

9. 图片购物

一张图像(搜索)顶千言万语。

许多用户在2018中第一次使用基于图像的搜索,而不是用文字搜索。事实上,以图像和语音为主的搜索在2020年会占到50%。

随着图像分析自动化在移动设备中成为标准,消费者将能够拍摄一个物体的照片,然后搜索该商品或类似的商品。

将这种能力融入其数字战略的商家将获得丰厚的回报。 首先,他们的产品信息管理投资的投资回报率水平(ROI)将达新高。 其次,由于语言、产品名称、错误或未知的属性不再是搜索的障碍,他们将能够基于其产品提供的图像的质量和多样性进入新的市场。

通过Kim Kardashian的ScreenShop,消费者可以将社交媒体、网络和街边看到的喜欢的搭配拍摄或截图下来,然后转换为不同零售商提供的各种价位的可购买商品,轻松地购物。

eBay的可视化搜索工具允许用户使用他们自己的照片或在线搜索的照片(比如一个最喜欢的博客或网站),在eBay中搜索类似产品。

Pinterest已在视觉搜索技术上投入巨资,将智能手机摄像头变成一个搜索引擎产品。

Target将整合Pinterest的视觉搜索技术——镜头,使购物者可以拍摄任何产品的照片,然后找到类似的商品。

Houzz的视觉扫描匹配(Visual Match)能扫描平台上的照片,并且匹配到可在Houzz Shop购买的商品,覆盖超过800万家居装饰品。

10. 接近顶峰的浏览器

“录像带、录音带、旋转拨号电话…互联网浏览器。”

在物联网(IoT)世界中,我们对浏览器的依赖将开始减弱。浏览器与移动应用程序、AR界面和语音交互混合在一起,将成为众多渠道中的一个渠道,而不再是我们以数字方式购买产品或服务的关键手段。

虽然浏览器仍然是一个必不可少的入口,但是寻求便利的消费者和购买者将会使用其他手段来完成交易。 可以通过移动设备、对话式AI、AR和互联设备以及所运用的数据来实现。

从2018年开始,许多平台不再对浏览器流量有绝对的依赖。 移动支付的改进、从非PC设备购买的便利性、Google的本地存储和地图以及社交媒体等的整合,将创造以用户为中心、流畅、无浏览器的购买体验。

B2B供应商可以直接从应用程序提供给终端用户(例如在屋顶上工作的现场技术人员)提供具备诊断工具、技术信息、安装指南、产品信息、本地库存可用性和订购能力的应用程序。

基于应用程序的购物:无论是基于图片(趋势#9)还是语音驱动(趋势#8)的产品发现、(产品)本地库存与购买(趋势#4)、还是包括账户、付款和快递信息的移动支付,都变得更容易和互联,流畅的交易方式将为无浏览器购物体验提供巨大驱动力,取代对浏览器的需要。

已经到了为容易重复购买和补充的大众商品和基本日常消费品提供自动补货功能的时候;牛奶、灯泡、电池、打印纸、咖啡,这样的商品不需要浏览器也很容易补货。这也是沃尔玛和Amazon之间数字化消费者争夺战的核心战场。