:::: MENU ::::

TalkingData's Blog

现在开始,用数据说话。

Blog

cialis erfaring cialis i norge hva er kamagra cialis efeitos secundarios cialis bula viagra effekt viagra norge viagra på nett viagra nettbutikk viagra infarmed levitra comprimidos cialis uten resept cialis pris levitra eller cialis kamagra gel comprar viagra farmacia
  • Mar 16 / 2018
  • 0
Data, Enterprise

锐眼洞察 | 预测性客户分析Part 4——借助聚类和预测分析优化售后服务(翻译)

作者:Ryan Aminollahi

原文:Predictive Customer Analytics — Part 4

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

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

本篇是这个系列文章的最后一个部分,将要说明的重点案例是利用聚类分析对售后问题进行分组,对不同分组进行分析,进而采取针对性的优化或者行动。

如果你读过以前的几篇文章,你知道在故事中,顾客X已经购买了一台笔记本电脑。现在想象一下,他正尝试在家里设置这台电脑。在设置的时候,他发现该电脑无法与无线键盘正常连接。他认为自己搞砸了设置并试图找到解决办法:他浏览产品网站查看是否有任何自助视频可帮助他找出原因,但他并没找到任何有用的信息。然后他打电话给公司,得到了一个自动提示让他提供所有的信息。

他在接下来的15分钟排队等候,最终,他排到了一位客户代表,客户代表再次要求他提供所有信息。正如你可以想象的那样,X变得更加恼火。客户代表在听到他的问题后,通过电话向他提供了一些指示,但X无法理解并按照步骤来操作。他要求提供现场帮助,但客户代表拒绝了他,说他的保修不包含现场服务。X感觉非常沮丧,开始考虑再也不从这家供应商购买任何东西。

这是因低质量服务和支持而感到沮丧的无数顾客中的一个例子。在今天的互联网世界中,更换供应商只需点击一下鼠标即可。企业需要更努力、更聪明地保持现有客户的满意度,并且通过他们的推荐获得新的客户。客户服务流程从为客户提供交互选项开始,从网站自助、电子邮件到电话支持,今天的支持中心运行在全方位的各种渠道上。

一旦客户发起联系,企业就需要为他们提供优质的服务:询问最少的问题并迅速解决问题。

这就要求企业不仅要了解客户,还要了解客户当前问题发生的背景以及与客户交互的整个过程。企业需要让客户感觉到企业真正了解并关心他的问题。

今天的客户服务世界已经开始转向使用交互式语音和聊天机器人的自助服务和自动化的时代。

这些自动化的服务需要智能地预测客户正在经历的事情,并能理解客户问题,提供快速的解决方案。预测性分析肯定会对客户服务领域有所帮助。

预测客户发起联系的目的

让我们思考一下前面做错了什么。假定客户X在销售阶段已经将自己的电话号码提供给了公司,客户支持难道不应该通过他的呼叫ID自动识别他吗?

客户X在笔记本电脑交付给他两天之内打电话,是否意味着这通电话非常有可能与这次购买有关呢?在第一次电话过程中,客户支持针对他的笔记本电脑键盘问题创建了一个问题记录,并且给了他一些建议。

然而,过了两个小时之后他又打电话过来,客户支持能否推测到他的第二个电话非常有可能与第一个问题记录有关系?这个用例的目标是建立一个预测模型,这个预测模型可以预测客户联系企业的可能性原因。知道这个原因可以帮助企业快速将客户对接到能解决相应问题的人那里,从而让问题在第一次交互时得到解决。这个用例中的数据是过去的所有客户和企业之间的交易数据。

这些数据包含销售的交易信息,包括产品、状态以及交付的详细数据。我们将来也会使用客户与企业以往联系的数据。对于每一次联系,我们会使用原因、处理这次联系的客户代表、时长、根本原因、解决方案、状态等数据。这是一个分类问题,因此前面我们使用过的算法就比较适合。让目标分类的数量小于10是非常重要的。

将要使用的算法会被用来产生预测目的模型,我们将会使用销售交易和与以前的联系相关的数据去产生这个模型,并将用模型预测客户联系的目的。行动计划如下:这个分类模型会离线进行构建,当一个客户通过电话或者聊天工具联系企业时,使用呼叫者ID或者用户ID去识别客户,然后使用算法去预测这次呼叫的原因。如果预测呼叫的原因是上一次的购买,则通过IVR回答客户“您好,请问您是因最近购买的笔记本电脑有问题而需要帮助吗”。客户一定会感到非常高兴,因为企业能够猜测他的问题,尽管这不一定是真正的原因。

这恰当地表明了我们理解他并且知道他正在经历什么困难。

寻找不满意的客户

一个企业该如何发现他的客户对于企业的产品或者服务是满意还是不满意呢?

第一, 不满意的客户通常会对调查问卷进行反馈。仔细想一下,因为X先生对服务以及产品感到不满意,他通常更愿意花时间去填写调查问卷和发泄。但是Y女士则未必会如此。

第二, 通常仅仅有10%的客户会对调查进行反馈。那么企业如何能够识别出那些沉默的、想要或者已经转移到其他企业的客户呢?这个用例的目标是构建一个模型,这个模型能够预测企业的所有用户的满意度,不管这个用户是否填写了调查问卷。构建这个模型的数据是从那些真实的已填写调查问卷的客户中得来的。

这份数据包括客户的人口统计学数据以及用户历史行为数据,包括与公司之间的事件和交易数据以及结果。特别需要指出的是,这些数据包括缺陷、退货、客户支持的记录、解决问题的时间以及呼叫服务电话的次数,这些数据构成了特征变量。目标变量是从调查问卷得来的度的分数。比较典型的是这个分数是从0到5或者是从0到10的有一位到两位小数的数字。

如果分数是离散的值,比如1、2、3、4、5,那么我们可以使用Gordon分类来处理。在我们的用例中,我们假定分数值是连续的,因此我们将会使用线性回归算法。利用人口统计学和历史的数据,构建一个可以用来预测客户满意度分数的线性回归方程。这个用例的行动计划是:利用真正回答了调查问卷的客户的数据构建一个预测模型,来预测客户满意度分数。我们需要将调查数据进行规范化,从而去掉可能会影响整体模型的异常值,然后我们将模型应用到所有客户,来发现客户的满意度评分。

然后我们的客户支持团队得到一个最不满意的客户列表,可以去主动联系这些客户,询问他们使用产品的感受和问题或者最终给他们一些折扣。

将问题进行类型分组

客户支持团队每天在处理不同的问题,有些问题会被经常问到并且简单直接,技术工程师甚至可以在客户解释完问题之前就能给出解决方案。另外一些问题则不那么常见并且比较复杂,需要多次的电话沟通以及现场服务才能解决。一个网络连接问题是非常容易诊断的,但是诊断一个笔记本电脑的蓝屏问题则要困难得多。实际上人力资源成本是非常高的,因此企业需要找到优化使用人力资源的方法。

这包含对一些问题提供在线帮助,包括对技术支持团队更严格的培训或者对复杂问题建立新的专家职位。为了帮助企业做这些决策,需要基于相似的属性对问题进行分组。这是这个用例的目标,对于一个问题类型列表,企业需要识别逻辑的问题分组,从而使用它们去开发优化那些消耗最少人力资源的解决方案。

这个用例的数据,是从技术支持团队记录下来的问题库数据中得到的问题统计数据。问题数据按照问题类型做汇总。特征数据是解决问题的平均时间、平均电话的次数、替换率等等。既然我们要创建逻辑分组,我们将要使用K-Means聚类算法或者相关的一些变种算法。通过多次采用不同的K值进行试验来衡量出一个最佳的分组数量。

利用问题统计数据,我们能够将相似的问题进行分组。行动计划如下:当问题类型已经被分组,我们将会分析每个分组去发现分组里边的相似性,比如解决问题花了更长的时间或者非常低的发生率。然后我们就可以得出优化解决方案的计划,例如在我们的网站上提供自帮助、在YouTube提供视频或者对这个问题领域的技术人员做更好的培训。

作为一个企业,我们想要达到客户支持的效率和有效性的最大化。这个用例帮助我们达到这个目标。

问题分组用例

我们如何能够将相似的问题分组到不同的问题类型,然后在组里对它们进行分析来判断是否有任何模式,紧接着采取某些行动去解决效率和有效性问题?

载入数据集

In [1]:

(注:左右滑动即可查看完整代码,下同)

%matplotlib inlinefrom pandas import Series, DataFrame
import pandas as pd
import numpy as np
import os
import matplotlib.pylab as plt
from sklearn.model_selection  import train_test_split
from sklearn.cluster import KMeans
import sklearn.metrics

raw_data = pd.read_csv(“issues.csv”)
raw_data.dtypes

Out [1]:

PROBLEM_TYPE             object
COUNT                     int64
AVG_CALLS_TO_RESOLVE    float64
AVG_RESOLUTION_TIME       int64
REOCCUR_RATE            float64
REPLACEMENT_RATE        float64
dtype: object

这个数据集对于每个唯一的问题类型有一条记录,每个类型包含一些度量值,例如总量,解决问题平均电话次数,解决问题平均时常等等。

raw_data.head()

将数据分到不同的相似聚类组中

现在我们将会使用K-Means聚类去根据属性将数据聚类到不同的组当中。首先,我们需要决定分组的最优的数量,为此,我们采用膝部法来测试确定什么时候这个膝状发生。(参照https://datasciencelab.wordpress.com/2013/12/27/finding-the-k-in-k-means-clustering/)

In [3]:

clust_data = raw_data.drop(“PROBLEM_TYPE”,axis=1)#Finding optimal no. of clusters
from scipy.spatial.distance import cdist
clusters=range(1,10)
meanDistortions=[]

for k in clusters:
model=KMeans(n_clusters=k)
model.fit(clust_data)
prediction=model.predict(clust_data)
meanDistortions.append(sum(np.min(cdist(clust_data, model.cluster_centers_, ‘euclidean’), axis=1)) / clust_data.shape[0])

#plt.cla()
plt.plot(clusters, meanDistortions, ‘bx-‘)
plt.xlabel(‘k’)
plt.ylabel(‘Average distortion’)
plt.title(‘Selecting k with the Elbow Method’)

Out [3]:

<matplotlib.text.Text at 0x27298f49eb8>

观察那些点,我们发现膝状发生在cluster=3的时候,这是聚类的最佳的数量,因此我们在实际操作中将会设置聚类的数量是3。然后我们在原始的数据集上添加聚类的ID。

In [4]:

#Optimal clusters is 3
final_model=KMeans(3)
final_model.fit(clust_data)
prediction=final_model.predict(clust_data)#Join predicted clusters back to raw data
raw_data[“GROUP”] = prediction
print(“Groups Assigned : \n”)
raw_data[[“GROUP”,“PROBLEM_TYPE”]]
Groups Assigned :

对分组进行分析

我们现在可以做一系列的箱型图去看这些不同组在不同的特征变量上的差异。我们从count先开始。

In [5]:

plt.cla()
plt.boxplot([[raw_data[“COUNT”][raw_data.GROUP==0]],
             [raw_data[“COUNT”][raw_data.GROUP==1]] ,
               [raw_data[“COUNT”][raw_data.GROUP==2]] ],
           labels=(‘GROUP 1′,’GROUP 2′,’GROUP 3’))

Out[5]:

{‘boxes’: [<matplotlib.lines.Line2D at 0x27299349ef0>,
<matplotlib.lines.Line2D at 0x27299362390>,
<matplotlib.lines.Line2D at 0x27299375cc0>],
‘caps’: [<matplotlib.lines.Line2D at 0x272993589b0>,
<matplotlib.lines.Line2D at 0x27299358ac8>,
<matplotlib.lines.Line2D at 0x2729936abe0>,
<matplotlib.lines.Line2D at 0x2729936eb38>,
<matplotlib.lines.Line2D at 0x2729937ec50>,
<matplotlib.lines.Line2D at 0x2729937ed68>],
‘fliers’: [<matplotlib.lines.Line2D at 0x2729935db38>,
<matplotlib.lines.Line2D at 0x27299375ba8>,
<matplotlib.lines.Line2D at 0x27299385dd8>],
‘means’: [],
‘medians’: [<matplotlib.lines.Line2D at 0x2729935d320>,
<matplotlib.lines.Line2D at 0x2729936ec50>,
<matplotlib.lines.Line2D at 0x272993855c0>],
‘whiskers’: [<matplotlib.lines.Line2D at 0x27299350940>,
<matplotlib.lines.Line2D at 0x27299350a58>,
<matplotlib.lines.Line2D at 0x27299362b00>,
<matplotlib.lines.Line2D at 0x2729936aac8>,
<matplotlib.lines.Line2D at 0x27299379be0>,
<matplotlib.lines.Line2D at 0x27299379cf8>]}

我们可以看到在不同的分组中问题的数量有明显的区别。
接下来我们看解决问题的平均电话数量。

In [6]:

#Now for Avg. Calls to resolve
plt.cla()
plt.boxplot([[raw_data[“AVG_CALLS_TO_RESOLVE”][raw_data.GROUP==0]],
             [raw_data[“AVG_CALLS_TO_RESOLVE”][raw_data.GROUP==1]] ,
               [raw_data[“AVG_CALLS_TO_RESOLVE”][raw_data.GROUP==2]] ],
           labels=(‘GROUP 1′,’GROUP 2′,’GROUP 3’))

Out[6]:

{‘boxes’: [<matplotlib.lines.Line2D at 0x272993f2ba8>,
<matplotlib.lines.Line2D at 0x27299405da0>,
<matplotlib.lines.Line2D at 0x2729941a710>],
‘caps’: [<matplotlib.lines.Line2D at 0x272993f8cc0>,
<matplotlib.lines.Line2D at 0x272993fdc18>,
<matplotlib.lines.Line2D at 0x2729940fd30>,
<matplotlib.lines.Line2D at 0x2729940fe48>,
<matplotlib.lines.Line2D at 0x27299421f60>,
<matplotlib.lines.Line2D at 0x27299428eb8>],
‘fliers’: [<matplotlib.lines.Line2D at 0x27299405c88>,
<matplotlib.lines.Line2D at 0x27299415eb8>,
<matplotlib.lines.Line2D at 0x2729942ef28>],
‘means’: [],
‘medians’: [<matplotlib.lines.Line2D at 0x272993fdd30>,
<matplotlib.lines.Line2D at 0x272994156a0>,
<matplotlib.lines.Line2D at 0x27299428fd0>],
‘whiskers’: [<matplotlib.lines.Line2D at 0x272993f2a90>,
<matplotlib.lines.Line2D at 0x272993f8ba8>,
<matplotlib.lines.Line2D at 0x2729940acc0>,
<matplotlib.lines.Line2D at 0x2729940add8>,
<matplotlib.lines.Line2D at 0x2729941ae80>,
<matplotlib.lines.Line2D at 0x27299421e48>]}

Group 2基本上不需要任何时间就能解决,这表明问题是非常简单和直接的。企业需要去看看这些问题然后给客户提供一个自服务的路径(产品帮助、在线帮助)而不是浪费客户代表的时间。

In [7]:

plt.cla()
plt.boxplot([[raw_data[“REOCCUR_RATE”][raw_data.GROUP==0]],
             [raw_data[“REOCCUR_RATE”][raw_data.GROUP==1]] ,
               [raw_data[“REOCCUR_RATE”][raw_data.GROUP==2]] ],
           labels=(‘GROUP 1′,’GROUP 2′,’GROUP 3’))

Out[7]:

{‘boxes’: [<matplotlib.lines.Line2D at 0x27299485c88>,
<matplotlib.lines.Line2D at 0x27299499e80>,
<matplotlib.lines.Line2D at 0x272994b07f0>],
‘caps’: [<matplotlib.lines.Line2D at 0x2729948eda0>,
<matplotlib.lines.Line2D at 0x27299494cf8>,
<matplotlib.lines.Line2D at 0x272994a4e10>,
<matplotlib.lines.Line2D at 0x272994a4f28>,
<matplotlib.lines.Line2D at 0x272994bc780>,
<matplotlib.lines.Line2D at 0x272994bcf98>],
‘fliers’: [<matplotlib.lines.Line2D at 0x27299499d68>,
<matplotlib.lines.Line2D at 0x272994a8f98>,
<matplotlib.lines.Line2D at 0x272994c2ef0>],
‘means’: [],
‘medians’: [<matplotlib.lines.Line2D at 0x27299494e10>,
<matplotlib.lines.Line2D at 0x272994a8780>,
<matplotlib.lines.Line2D at 0x272994c20f0>],
‘whiskers’: [<matplotlib.lines.Line2D at 0x27299485b70>,
<matplotlib.lines.Line2D at 0x2729948ec88>,
<matplotlib.lines.Line2D at 0x2729949eda0>,
<matplotlib.lines.Line2D at 0x2729949eeb8>,
<matplotlib.lines.Line2D at 0x272994b0f60>,
<matplotlib.lines.Line2D at 0x272994b6f28>]}

Group 2有非常高的复发率,这些问题需要进行分析去看看产品质量如何改进以防止这些问题再次发生。

In [8]:

plt.cla()
plt.boxplot([[raw_data[“REPLACEMENT_RATE”][raw_data.GROUP==0]],
             [raw_data[“REPLACEMENT_RATE”][raw_data.GROUP==1]] ,
               [raw_data[“REPLACEMENT_RATE”][raw_data.GROUP==2]] ],
           labels=(‘GROUP 1′,’GROUP 2′,’GROUP 3’))

Out[8]:

{‘boxes’: [<matplotlib.lines.Line2D at 0x27299526e10>,
<matplotlib.lines.Line2D at 0x27299538f98>,
<matplotlib.lines.Line2D at 0x2729954e978>],
‘caps’: [<matplotlib.lines.Line2D at 0x2729952ef28>,
<matplotlib.lines.Line2D at 0x27299532e80>,
<matplotlib.lines.Line2D at 0x27299544f98>,
<matplotlib.lines.Line2D at 0x272995497f0>,
<matplotlib.lines.Line2D at 0x2729955a908>,
<matplotlib.lines.Line2D at 0x2729955aa20>],
‘fliers’: [<matplotlib.lines.Line2D at 0x27299538ef0>,
<matplotlib.lines.Line2D at 0x2729954e860>,
<matplotlib.lines.Line2D at 0x2729955fa90>],
‘means’: [],
‘medians’: [<matplotlib.lines.Line2D at 0x27299532f98>,
<matplotlib.lines.Line2D at 0x27299549908>,
<matplotlib.lines.Line2D at 0x2729955f278>],
‘whiskers’: [<matplotlib.lines.Line2D at 0x27299526cf8>,
<matplotlib.lines.Line2D at 0x2729952ee10>,
<matplotlib.lines.Line2D at 0x2729953ff28>,
<matplotlib.lines.Line2D at 0x27299544780>,
<matplotlib.lines.Line2D at 0x27299555898>,
<matplotlib.lines.Line2D at 0x27299555fd0>]}

Group 1具有非常广的替换率,它不能给出任何实际可以操作的模式。

Group 2没有任何的替换,这是非常棒的。现在看到的组级别的一些倾向,我们可以基于这些分析做一些组级别的决策。例如Group 2呼叫了很多次,但是解决基本不需要花时间,因此我们可以对Group 2利用自服务。Group 1则不同,呼叫的次数少,但是花了很多的时间去解决,并且有很高的替换率以及复发率,我们可能需要去看看产品是否有问题或者已修复问题是否还在发生。

这就是我们如何利用聚类和预测分析去将我们的问题进行分组,然后基于组进行分析。

—  本系列文章完结  —

  • Mar 16 / 2018
  • 0
Data, Enterprise

锐眼洞察 | 预测性客户分析Part 3——客户终生价值(翻译)

作者:Ryan Aminollahi

原文:Predictive Customer Analytics — Part 3

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

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

译者注:本文共分四部分,本篇文章为第三部分。

在第二部分,文章介绍了如何用预测分析去获取客户,但由于商业的黄金定律是“从现有客户获取价值的成本比新客户要低的多”,所以就需要了解现有客户的客户终生价值(Customer Lifetime Value,CLV),从而最大化地从现有客户获取足够的收入。

本篇将会介绍如何用线性回归模型,基于老客户历史数据与客户生命周期的关联关系,建立线性回归模型,从而预测新客户的终生价值,进而开展针对性的活动。

客户终生价值

在商业领域所有人都认可一句话:

“我们80%的收入来自于20%的客户。卖给现有客户的成本比寻找一个新的客户低10倍。”

不同的客户为一个企业产生不同水平的销售收入。我们需要识别和培育一些顶级客户从而保证稳定收入。但主要问题是:

  • 过去的收入如何预示未来的收入?
  • 我们过去最好的客户在未来还会是我们最好的客户吗?
  • 这是我们手中的结果吗?

我们想要识别能够给我们带来重要业务的客户并且培育他们,同时确保他们对我们满意。

我们需要一个计算客户终生价值的方法。回到用例,客户刚刚从我们这里购买了一台笔记本电脑。那么,我们期望从他那里得到什么样的未来收入?他刚刚购买了一个笔记本电脑,因此他在接下来的三年可能不会再买,但是等一下,他可能每年都会不定期购买软件版本升级。他可能会根据初始的购买情况,复购比如耗材等等。

当他的孩子们到中学或者高中时,可能需要一个笔记本电脑。当他们进入大学可能需要购买更多的东西。我们需要了解他们的人口统计学和家庭信息才能知道这些生活事件什么时候发生。

一般来说,他可能在感恩节或者圣诞节给他人购买礼物,会送一台笔记本电脑或者其他的,这些就是潜在的年度购买。如果我们能够识别这些事件,我们就能够通过这些重复性购买需求和年度需求估计出他未来总的商业价值。

构建客户周期分类

最早期的基本客户管理流程是,根据他们过去的业务和观察到的未来业务情况,将客户归入不同分类当中,比如青铜客户和黄金客户。然后帮助业务针对性瞄准这些客户。当一个新的或者潜在的客户被识别出来,在业务周期中尽早对其进行分类可帮助企业将更多资源集中在具有重大未来价值的客户上。

根据一个客户(称为X)的人口统计特征,他可能有资格成为黄金客户,因为他会为他和他的家庭购买高端电子产品。另一个客户(称为Y)则可能更关注预算,未来五年可能不会在电子产品上花费太多,因此他将成为一名铜牌客户。鉴于此,我们希望将营销资源专注于X,以产生最大回报。这个用例的目标是建立一个预测模型,将新客户分类为白银、黄金或白金。

鉴于我们专注于新客户,数据集应该是容易从新客户获得的数据集。因此这个数据集就是客户的人口统计学信息,其次是他们的第一次购买信息,如产品、金额、时间、退货、保修等等。训练数据还会有一个客户分类,用于说明老客户属于哪个类别。这是一个经典的分类问题,任何以前的相关算法都可以完成这项工作,如随机森林。

我们将建立一个模型,根据客户属性以及首次购买交易数据预测客户分类,并为每个客户提供他的类别。行动计划是,当客户进行新购买时,我们将使用此算法将他们分类为一个或多个类别。然后,这些分类可以被我们的营销或客户管理团队用来进行差异化的处理,以便在随后的访问中产生更多收入。

我们的客户服务团队还可以借助这个分类来提供高级支持。了解我们最好的收入来源可以帮助培育客户并从客户那里获取更多的收入。

发现响应模式

当客户从我们这里购买了服务或者商品,然后随机切换到另一个企业购买同样的服务或者商品,这对我们是一种伤害。我们希望客户能从我们这里购买更多的产品和服务。因此,我们可以通过优惠券、特殊优惠、促销、套餐、折扣等各种方式与客户保持联系。

所有客户是否都以同样的方式回应这些优惠?不。很有可能X会对圣诞节期间获得的优惠券更感兴趣,以便他为家人购买礼物。

了解客户如何回应我们的优惠有助于将营销资金锁定在最有可能回应的客户身上。这个用例的目标是确定我们的客户响应优惠的不同模式。我们将客户分为不同聚类。然后,确定这些聚类或团体共有的模式,制定营销计划,从而使得每一个集群或者团体都产生更好的收入。用于此用例的数据将是客户人口统计数据以及客户的购买历史记录。

它还包括所提供的优惠的数据,例如提供的优惠活动、优惠针对的产品、提供的折扣、提供优惠的渠道、客户是否检查了优惠以及是否真的使用该优惠?所使用的算法将是K-Means聚类或该算法的任何变种。我们将使用人口统计数据以及优惠相关的数据来构建聚类和群组,然后将其用于我们的分析。

我们会使用客户人口统计数据来建立客户群组。 一旦确定了群组,我们的营销部门可以进一步分析各个群组,了解他们的响应模式以及他们之所以区别于其他分组的因素,它可能是人口统计学因素、购买的产品的因素、季节性因素或其他。 我们对客户行为了解越多,就越能设计相应的产品和优惠,并从客户那里获得更多收入。

预测客户终生价值

客户终生价值是一种货币价值,它表示客户在与企业关系的整个生命周期内提供给企业的收入金额。如果我们提前知道X将在未来五年内带来1万美元的收入,而Y只能产生500美元的收入,那么我们可以在X上花更多的营销资金并收获他的全部潜在预算。使用客户终生价值标记每个客户有助于业务专注于那些能够在未来带来最高收入的客户。

计算客户终生价值时有几种计算方法,但我们只能对与企业有重大购买历史的客户可靠地计算CLV。 但是我们如何才能为最近的客户进行计算呢? 预测分析就在这里提供帮助。这个用例的目标是建立一个回归模型,该模型可以根据他或她最近的购买模式来预测新客户或最近客户的客户终生价值。

随着可用数据越来越多,它将帮助我们更准确地计算CLV。 客户终身价值取决于最近的能够显示购买频率的数据。 因此,我们将创建一个数据集,提供所有老客户的前六个月每个月的购买货币价值, 目标属性是整个生命周期中客户的实际CLV。

根据我们的业务和我们所拥有的历史数据,CLV可以在有限的时间内进行衡量,比如两年左右。 这里使用的算法将是线性回归。 前六个月的数据将成为预测变量,CLV是目标变量。 该分析将提供一个可用于为新客户计算CLV的公式。 通过使用这些数据的子集,我们实际上可以生成这个方程的不同部分,比如只有第一个月,然后是前两个月等。

随着客户生命周期的延长,更多的数据意味着更高的准确性。一旦在我们的系统中捕获到新客户,我们根据第一个月的数据计算CLV,随着越来越多的月份,我们可以通过越来越多的数据来完善CLV。我们的销售人员、服务人员和营销人员可以使用CLV值来识别拥有高CLV的客户,并为他们提供差异化的服务和优惠。

总而言之,本用例显示了如何根据相似的老客户的CLV预测新客户的CLV。

预测CLV的用例

我们将看到如何根据现有客户数据模型来预测新客户的客户终生价值。

我们有这些客户产生的前六个月收入,第一个月到第六个月,他们产生的收入以及客户终生价值。这或许是他们3年产生的总收入,这可以根据客户留在我们业务中的时间来确定。 这即是我们要使用的数据,我们将用它来构建一个线性回归模型,然后用它来预测客户终生价值。

我们首先导入一组Python、Pandas和Skylearn库,然后加载history.csv文件。查看文件以确保所有的数据元素都已被加载为整数,因为这些元素要求它们是整数。在顶部过滤器卡上做一个表头,以确保它们是否都已正确加载。然后,我们进行前六个月的数据和CLV之间的相关性分析。

from pandas import Series, DataFrame
import pandas as pd
import numpy as np
import os
import matplotlib.pylab as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import sklearn.metrics
raw_data = pd.read_csv(“history.csv”)
raw_data.dtypes

CUST_ID int64
MONTH_1 int64
MONTH_2 int64
MONTH_3 int64
MONTH_4 int64
MONTH_5 int64
MONTH_6 int64
CLV int64
dtype: object

raw_data.head()

进行相关性分析

cleaned_data = raw_data.drop(“CUST_ID”,axis=1)

cleaned_data .corr()[‘CLV’]

我们丢弃掉客户ID列,因为我们的模型构建不需要它。可以看出,相关性分析在不同月份显示出非常好的相关性,我们继续前进并建立一个模型。我们首先通过使用Skylearn类库中可提供的训练测试切分能力将数据切分为90:10的比例。我们打印出大小以确保一切看起来都不错。

predictors = cleaned_data.drop(“CLV”,axis=1)
targets = cleaned_data.CLV
pred_train, pred_test, tar_train, tar_test = train_test_split(predictors, targets, test_size=.1)
print( “Predictor — Training : “, pred_train.shape, “Predictor — Testing : “, pred_test.shape)

Predictor - Training : (906Predictor - Testing : (106)

然后,我们建立一个模型,从线性回归模型开始,通过拟合建立一个模型,打印系数和截距。这给了我们实际的方程,即线性回归方程。然后我们可以利用测试数据对预测进行测试。紧接着我们看看回归模型的自动评分,它告诉我们如何创建模型列表。这个结果的准确率达到了91%,非常赞!

#Build model on training data

model = LinearRegression()

model.fit(pred_train,tar_train)

print(“Coefficients: \n”, model.coef_)

print(“Intercept:”, model.intercept_)

#Test on testing data

predictions = model.predict(pred_test)

predictions

sklearn.metrics.r2_score(tar_test, predictions)

Coefficients: 
[ 34.59195048  11.53796271  15.17878598  11.72051702   8.60555913
  5.44443443]
Intercept: -199.535985333

Out[7]:

0.91592106093124581
它显示了91%的准确度,这是预测CLV的一个极好的模型。

现在我如何预测新客户? 假设有一位与我们在一起3个月的新客户。我们拿出他的前三个月的收入,基于它建立所有价值的数组。我们有前3个月的价值,接下来的3个月将是零, 我们用它来打印CLV。

new_data = np.array([100,0,50,0,0,0]).reshape(1, -1)
new_pred=model.predict(new_data)
print(“The CLV for the new customer is : $”,new_pred[0])

The CLV for the new customer is : $ 4018.59836236

这就是我们如何为CLV建立一个线性回归模型,以及用它对我们的新用户进行CLV的预测。

  • Feb 27 / 2018
  • 0
Data

锐眼洞察 | 预测性客户分析Part 2——推荐触达客户的最佳渠道(翻译)

作者:Ryan Aminollahi

原文:Predictive Customer Analytics — Part 2

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

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

译者注:本文共分四部分,本篇文章为第二部分。

你会变成我的客户吗?

企业如何获取客户?他们需要遵循哪些步骤?

首先,企业需要识别他们的市场以及潜在客户。企业需要识别他们并且将他们作为潜在客户。然后,企业需要通过合适的广告或优惠来触达潜在客户,这需要有效和高效的沟通渠道。企业应该吸引潜在客户去访问在线站点并且查看他们产品和服务。

当潜在客户对产品发生兴趣时,企业应该让客户参与进来,回答他们的问题,并且给出报价来协助他们购买产品。

高倾向潜客

我们有一个产品,例如一个高端的笔记本电脑。谁是更有可能购买我们产品的客户?是那些有家庭和体面收入的中年人?还是那些收入比较低的大学生?这个推论是基于他们的人口统计学特性得来的。所有营销部门面临的第一个巨大挑战就是识别出更有可能购买产品的潜在客户。

这个用例的目标是给我们营销部门识别出的潜在客户生成一个购买倾向评分。倾向评分可以是二进制表示的0或者1,或者可以更好一些,它可以是个从0到1中的连续数值。我们需要使用什么样的数据呢?在这个阶段,唯一可用的数据集是潜在客户的人口统计学特性,比如年龄、薪水、家庭等属性。

关于事件,这些潜在客户可能已经参与或还没参与到我们企业的任何活动当中,因此事件数据变为了可选的数据。使用它的一种方式是用二进制的标识,比如潜客是否浏览过我们的网站:

  • 他/她是否回复过我们的电子邮件?
  • 他/她是否对我们的企业或者产品发过推文?

当然,所有这些历史数据都会打上过去活动最终效果的标签。我们该使用什么样的算法来尝试?我们可以使用回归来生成一个倾向评分或者使用朴素贝叶斯分类来给出一个转化为购买的可能性。

理想情况下,我们希望得分在0和1之间。用这个模型来对我们的潜在客户进行评分。然后营销部门可以整理这个清单,根据分数将其清除或根据分数生成一个top X的列表。

那么这样做的价值是什么呢?我们可以定期执行此用例,或者当我们的市场部准备了一个潜在客户列表。我们使用以前的数据来建立倾向模型,然后基于该模型,我们为每个潜在客户生成一个分数。然后,我们的营销部门将使用这些信息想潜在客户提供优惠和促销。

推荐触达的最佳渠道

一旦我们有一个潜在客户名单,我们需要决定如何与他们进行最佳的沟通。有多种渠道可供使用,例如电话、电子邮件、手机、互联网或者社交媒体上的定向广告。

但不同的人对不同的媒体有不同的反应。有人喜欢关注他收到的营销电子邮件,总会点击并阅读;有的人则相反,他会将这些电子邮件过滤到垃圾文件夹中;也有人倾向于在网页浏览中点击基于其近期搜索推送的弹窗广告。

这个用例的目标是推荐联系潜在客户的最佳渠道。很多媒介以这种方式去锁定客户,因为这样能够获得最高的关注度并且获得最高的投入产出比。那我们该使用什么数据呢?与潜客相关的数据最为常见,我们还应该使用以往成功的营销活动的数据,在这些营销活动中,我们通过特定渠道、触达了特定潜在客户并实现了潜客转化。

这些数据告诉我们哪些人通过哪些渠道转化。利用这些数据,我们可以构建一个模型去预测未来潜客的触达渠道,随后用这个模型对潜客的未来行为进行预测。

我们将要使用什么算法呢?这是一个经典的分类问题,因此我们会采用以前的相关算法去实验其精确度。我们利用过去的数据构建了一个模型,为每个潜在的客户推荐一个进行触达的媒介。

那么这么做的价值是什么呢?我们将会使用过去的数据去构建一个分类模型,用这个模型去对每个潜在客户预测最佳的触达渠道。这将会帮助我们的营销团队去设置针对性的活动,帮助他们通过特定的渠道触达特定的潜在客户。

按照访客购买倾向提供聊天

我们有网上的销售代表随时准备与访问者建立联系,并且吸引客户购买我们的产品。但是通常我们有太多的网站访问者,而且他们大部分是只看不买的人。我们希望我们的销售代表只与那些真正想要购买的访客进行聊天,我们不想浪费我们销售代表的时间。

想象一下,客户比较产品,例如笔记本电脑。这意味着他/她做了决策吗?他/她开始阅读商品评论,他对购买是认真的吗?他/她正在查看我们的售后保证条款,这意味着他/她做了决策吗?我们如何判断呢?

这个用例的目标是根据客户在我们网站上的实时行为,反复预测一个客户的购买倾向。当客户在我们网站进行活动时,我们想要持续计算和修正倾向得分。这个用例的数据源是潜客的属性数据以及潜在客户在访问我们网站时进行的活动数据,包括他检出的产品,他的相关行为。例如,是否查看过评论?比较过商品?对售后保障是否有兴趣?这些是通过在浏览器上的网页点击事件来衡量的。

我们需要使用每个潜在客户过去每次的访问数据,以及访问的最终结果,比如他是否进行了购买。

朴素贝叶斯将会是最适合的算法,因为它提供了一个概率分数。我们会使用过去的数据,包括客户的人口统计学数据、网站行为数据,利用朴素贝叶斯算法构建一个倾向性模型。然后我们使用这个倾向性模型去预测我们现在网站的访问者的购买倾向性。那么,这么做的价值是什么呢?我们基于过去的数据构建一个离线模型去根据一个客户在网站的行为建立一个倾向分。

当一个新的潜客访问我们的网站时,网站点击事件会被持续收集。每次当一个新的事件被收集时,例如查看评论或者比较商品,模型会根据收集到的数据进行运行而重新计算一个倾向分。当倾向分达到特定的阈值时,在线商店可以做出决定去触发聊天,这是我们可以通过原型来验证的东西。

我将会给大家展示如何用Python实现这个用例。

我们将会实现实时预测我们网站访问用户的倾向评分的用例。当访问者到我们的网站时,他们开始浏览产品并且检出不同的链接。我们想要做的是基于他们的活动,实时预测他们的倾向评分,决定我们是否需要提供他们在线聊天。

如下是客户浏览的样例数据:

这个数据包含不同用户过去的所有的会话的信息,它包含一个session id,以及一系列的布尔型变量,这些变量将会变为我们的特征变量。这些布尔型变量是根据访客的行为而生成的1或者0。

images的含义是访问者是否浏览过产品的图片,reviews代表访问者是否真正浏览过产品的评论。类似的,我们有FAQ、specs、shipping、bought_together、comparison of products等等属性。最终,有一个目标变量,代表着访客最终是否购买了产品或者没有购买产品。这将会是我们用户构建这个模型的数据集。

在真实世界,如果我们想要获得真正高精度的预测,我们需要一个非常巨大的数据集。我们从输入一系列python库,以及输入browsing.csv到一个叫做prospect_data的dataframe开始。

`from pandas import Series, DataFrame
import pandas as pd
import numpy as np
import os
import matplotlib.pylab as plt
from sklearn.model_selection  import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report
import sklearn.metrics
prospect_data = pd.read_csv("browsing.csv")
prospect_data.dtypes`

然后我们会看一下数据类型,确认数据是否被正确装载。

SESSION_ID int64
IMAGES int64
REVIEWS int64
FAQ int64
SPECS int64
SHIPPING int64
BOUGHT_TOGETHER int64
COMPARE_SIMILAR int64
VIEW_SIMILAR int64
WARRANTY int64
SPONSORED_LINKS int64
BUY int64
dtype: object

这份数据包含用户在他浏览网站过程中点击的不同的链接的信息。这是用于构建模型的过去的数据。

  • Session ID:浏览web会话的唯一ID。
  • Buy:潜在用户在结束时是否购买了商品。
  • 其他列: 0或者1表示潜在用户是否访问了特定的页面或者进行了特定的活动。

#对数据进行汇总统计分析

prospect_data.describe()

为此,我们将在这个课程中使用纯粹的测试条方法,我们将按照70/30的比例进行分割。我们会检查比例大小是否与我们预期的一致,350比150应该是正确的。紧接着,我们将进入模型构建过程。我们使用sklearn库中含有的naive_bayes算法——高斯naive_bayes。我们首先创建naive_bayes分类器,然后使用拟合方法构建模型,将其应用于训练预测分析以及训练目标中。

进行关联分析

prospect_data.corr()[‘BUY’]
SESSION_ID 0.026677
IMAGES 0.046819
REVIEWS 0.404628
FAQ -0.095136
SPECS 0.009950
SHIPPING -0.022239
BOUGHT_TOGETHER -0.103562
COMPARE_SIMILAR 0.190522
VIEW_SIMILAR -0.096137
WARRANTY 0.179156
SPONSORED_LINKS 0.110328
BUY 1.000000
Name: BUY, dtype: float64

观察上边的关联信息,我们可以看到一些特征比如REVIEWS、BRO_TOGETHER、COMPARE_SIMILIAR、WARRANTY 和SPONSORED_LINKS与目标变量有一定的关联性。我们将会减少特征去使用这些变量。

#Drop columns with low correlation
predictors = prospect_data[[‘REVIEWS’,’BOUGHT_TOGETHER’,’COMPARE_SIMILAR’,’WARRANTY’,’SPONSORED_LINKS’]]
targets = prospect_data.BUY

训练和测试分片

我们现在将把数据按照70:30切分为训练集和测试机,去构建和验证模型。

pred_train, pred_test, tar_train, tar_test = train_test_split(predictors, targets, test_size=.3)
print( “Predictor — Training : “, pred_train.shape, “Predictor — Testing : “, pred_test.shape )
Predictor - Training :  (3505) Predictor - Testing :  (1505)

构建模型和检查准确度

from sklearn.naive_bayes import GaussianNB
classifier=GaussianNB()
classifier=classifier.fit(pred_train,tar_train)
predictions=classifier.predict(pred_test)
#Analyze accuracy of predictions
sklearn.metrics.confusion_matrix(tar_test,predictions)
array([[7618],
      [2432]])
sklearn.metrics.accuracy_score(tar_test, predictions)
0.71999999999999997

我们可以做一个概率预测来显示一个潜在客户购买产品的概率,而不是做一个Yes/No的预测。

pred_prob=classifier.predict_proba(pred_test)
pred_prob[0,1]
0.35088586866049354

如上的概率可以理解为有35%的可能性这个潜在客户会购买产品。

实时预测

现在模型已经构建好了,让我们将它用在实时预测上。当我们的客户开始一个个访问我们的页面时,我们收集访问的列表然后用它来计算概率。当每一个点击进来时,我们都会做预测。

潜在客户刚刚来到我们的网站,因此没有有用的点击。让我们计算他的概率,传递的数组应该包含REVIEWS、BOUGHT_TOGETHER、COMPARE_SIMILAR、WARRANTY和SPONSORED_LINKS的值,所以这个数字在开始所有的值都是0。

browsing_data = np.array([0,0,0,0,0]).reshape(1-1)
print(“New visitor: propensity :”,classifier.predict_proba(browsing_data)[:,1]
New visitor: propensity : [ 0.03961746]

因此最初的概率是4%。现在假设客户在相似的商品做了比较,数组的值中包含了一个1,因此新的概率将会是:

browsing_data = np.array([0,0,1,0,0]).reshape(1, -1)
print(“After checking similar products: propensity :”,classifier.predict_proba(browsing_data)[:,1] )
After checking similar products: propensity : [ 0.09898671]

概率值上升到了接近10%。紧接着,他查看了评论。

browsing_data = np.array([1,0,1,0,0]).reshape(1, -1)
print(“After checking reviews: propensity :”,classifier.predict_proba(browsing_data)[:,1] )
After checking reviews: propensity : [ 0.57538836]

这个时候概率值超过了50%。我们可以设置一个触发我们和客户聊天的阈值。我们持续地将这个概率与之进行比较,去决定我们是否需要弹出对话框。

这个例子告诉我们如何实时地利用预测分析,去决定一个潜客是否具有高的转化倾向,从而给销售代表弹出一个对话框。

所以,请记住,当这些人继续进来时,倾向是否总是上升并不重要,它甚至可能会下降,这一切都取决于数据是如何。 这样,我们可以随时决定何时提供聊天窗口。

  • Feb 26 / 2018
  • 0
Data

锐眼洞察 | 预测性客户分析Part 1——客户生命周期(翻译)

作者:Ryan Aminollahi

原文:Predictive Customer Analytics — Part I

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

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

译者注:本文分四大部分,将分为四篇发出。

业务是围绕着客户进行构建的,每个企业都需要客户才能生存,客户是企业的收入的来源。勿容置疑,企业的成功与获取客户、培育客户、让客户满意、解决客户的问题、进而从客户那里获取更多收入的能力直接相关。但是企业想要做到这一点,需要能够识别他们的潜在客户。

他们需要弄清楚谁、什么、为什么以及如何(4W)

  • 谁是需要他们产品的潜在客户?
  • 他们需要什么产品?
  • 他们为什么需要这个特定的产品?
  • 客户如何做购买的决定?
  • 企业如何去应对这个?

通常所有的企业都有面向客户的人员,比如销售、市场、以及客户支持人员,他们经常与客户进行交流沟通。

这些人变成了企业面向客户的对外形象。但是企业没办法随时单独联系每一个潜在客户和现有客户,去了解其所需。

可以想象,密切掌握客户所想是非常巨大的挑战。当目标市场非常大时,例如有超过100万的客户,是非常难以保持一对一的关注。而且,随着越来越多的生意转移到线上,企业与客户之间没有了直接联系的方式。

客户散落在全球各地。我们也应该考虑到,比以前更快触达客户所带来的竞争。传统的地域和语言造成的障碍消失了。中国企业也可以非常容易的向美国客户销售产品,例如阿里巴巴。

竞争变得越来越激烈和聪明,。今天的客户对于任何产品和服务都有了更多的选择,而且更换供应商的难度也越来越小。这使得企业面临的处境是需要对其客户将来可能做什么进行理解和计划。

为了这个目标,他们需要预测客户的行为,这里就包含着预测性客户分析。为了领先并且提前行动,企业需要知道他们的客户将来可能做什么。

  • 他们将来会买你的产品吗?
  • 他们会更换为其他供应商吗?
  • 他们对产品满意吗?
  • 他们会不满意吗?
  • 他们会购买更多吗?

企业需要回答这些问题,从而去识别合适的客户、触达他们的正确渠道以及提供正确的方式来他们帮助。

他们需要预测分析。预测性客户分析使用客户数据去构建模型,这些模型帮助预测未来的行为,帮助企业转化和识别客户可能会购买的附加产品,从而达到企业期望达到的目标。

当客户遇到问题时,预测性客户分析将会帮助企业识别解决问题的合适资源,帮助识别可能会离开的客户从而给通过一些措施挽留他们。

利用预测性客户分析,企业可以借助比传统方式更低的成本和更高的效率来实现这一目标。

现在正是进行预测性客户分析的好机会。企业有丰富的数据源可以广泛使用,例如网络博客、社交媒体、聊天、交易记录以及语音记录。另外,今天的大数据技术能够以经济高效的方式进行大规模数据处理、集成以及存储。

我们有不同的方式去理解客户的想法和感受,并且能够通过数据挖掘来建立有效的模型。然后我们可以使用这些模型将业务推向正确的客户并使得他们留在您的业务当中。

客户与企业之间的关系经历一个生命周期。企业为客户提供所需的产品和服务,客户查看企业能够提供给他的需要和需求,所有这一切都开始于需求。想象一下,一个客户需要一个笔记本电脑,他会根据技术规格、成交量以及客户服务评分去进行选择。

然后客户选择了一家店铺去购买笔记本电脑,这是购买过程。当客户完成一个商品购买后,他或者她可能会需要购买附加的东西,例如线缆、充电器、存储等等。客户会持续使用这个产品一段时间,他可能会面临维修和升级配件的问题。当该笔记本电脑的生命周期结束,这个客户可能会从同一家企业购买,也可能会根据他以前的经验和当前的选择从另外一家企业完成购买。

从商业的角度来看,这个生命周期的第一步是获取客户。这个周期涉及广告、针对性营销等等,其目的是为了将客户拉入到自己的店铺。一旦客户购买了产品,企业可能会想要继续推销其他产品,例如线缆、附加服务等等。对现有客户的销售成本要比对全新客户的销售成本低很多。企业需要通过合适的服务和支持来确保客户对产品满意。

当产品的生命周期接近结束时,企业希望通过提供优先交易来重新获取这个客户。请记住,留存客户比获取新客的成本低的多。所以我们看到,这个生命周期对于企业和客户来说都是相似的。客户聚焦于产品的价值而企业更关注收入和客户留存。

将分析应用在客户生命周期中

  • 获取:

客户分析可以通过属性和行为分析来识别出那些更有可能购买产品和服务的客户。客户分析可以识别触达这些潜在客户的正确渠道,如电子邮件、电话或者社交媒体。客户分析还可以用于确定能够打动潜在客户的价格和折扣。

  • 追加销售:

当一个客户购买了一个产品后,他们非常可能会需要一些赠品。例如,一个笔记本电脑购买者可能需要电脑包、线缆以及保修。预测性客户分析可以帮助识别购买这个产品的买家可能会购买的产品和品牌从而帮助企业进行推荐。如果你使用过Amazon或者eBay,你已经体验过这些。在每个产品页的下方,你都会看到一个叫做“购买了这个产品的客户还购买了”的板块。

  • 服务:

分析可以帮助预测产品中的失败模式并指导企业采取主动行动。 它还将帮助选择正确的渠道为各类客户提供服务。 例如,一些客户对电话联系感觉更舒适,而另一些客户喜欢电子邮件。

它可以将客户交于与适合的联络中心代理,来识别最可能不满意的客户并与他们取得联系。

  • 留存:

预测性客户分析可以帮助预防客户流失。它可以识别最有可能离开的客户,并预测他们离开的时间。 这有助于企业在适当的时间采取行动。 预测性客户分析有助于根据客户类型识别获取关注的恰当程序。

因此,预测性客户分析可以帮助企业在客户生命周期的所有阶段以互相作用的方式来吸引客户。

客户数据

预测性客户分析需要承载客户意图和行为信号的数据。识别提供这些信号的正确数据并将它们用于模型构建是非常重要的。

客户与企业之间的关系由下面的四个实体组成:

  • 用户自身
  • 客户购买和使用的产品和服务
  • 与客户沟通的渠道,比如Email、网络聊天
  • 代表公司面向客户的代理,比如销售或者支持人员

对于客户分析,需要两种类型的数据:

  • 实体的属性
  • 实体参与的事件

实体可以是客户、产品、渠道或者代理。

客户的属性包含人口统计学属性、收入、年龄、性别、位置等等。

产品的属性包含类型、价格、质量等等。

渠道的属性包含类型、使用频率以及响应时间等等。

代理的属性包括处理时间、解决率等等。

这些属性包含客户可能会购买什么以及会支付多少钱。

第二类数据是交互数据,这些时间与客户在公司做什么有关。时间带有时间戳,事件包含的交互包括浏览、邮件、聊天、电话等。

它们还包含诸如购买、提交投诉、交付产品和支付等等交易相关的事件。

它们还包含社交媒体活动,客户可能发表推文或者在Facebook上发表关于产品的消息或者回应某个消息,比如点赞或者转发。

例如,客户昨天花了15分钟浏览了公司的网站,查看产品和服务。他或者她昨天发了推文,针对一个合适的产品和服务向他的朋友咨询意见。所有的这些都指向了他具备在近期购买某个产品和服务的意愿。

企业可以借助这些,通过为他或者她提供沟通回答任何问题或者提供一些线索来完成销售。

预测性客户分析的成功之处在于,其决定了企业识别识别属性和活动数据多种数据源,通过获取、挖掘、集成这些数据来构建360度客户认知的能力。

数据越完整,预测越准确。

客户分析过程

预测性客户分析是一个持续优化的模型,它需要在企业内构建一个良好布局的流程来处理和交付。

该流程从确定能够为公司带来帮助的预测性客户分析用例开始。 一旦确定了用例,架构师需要确定可服务于此目的的数据源,然后需要构建数据管道以获取、处理、集成和存储数据。

然后数据科学家需要开展工作来挖掘数据并构建模型。需要在部署之前对模型进行精确度测试。

需要对模型的性能进行监测,并且对模型进行调优。 随着时间的推移,可以添加额外的数据元素以更好的进行预测工作。所有这些工作都需要管理层的认同。一旦有管理层加入,我们将能够获得资源来执行项目。

  • Feb 23 / 2018
  • 0
Data

锐眼洞察 | 2018年将成为数据工程师年(翻译)

作者:Alex Woodie

原文:Why 2018 Will be The Year of The Data Engineer

译者:TalkingData架构师 曾晓春

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

多年来,精通统计、业务和编码技能的数据科学家的短缺一直备受关注。但是,越来越多的企业面临着另一种大数据团队关键人才的短缺,他们对于取得成功至关重要,那就是——数据工程师。

基于数据的系统能够支持项目的分析和事务操作,而数据工程师是设计、构建和维护这一系统的专家。尽管数据工程师不一定掌握数据科学家拥有的技能,比如构建复杂的机器学习模型,但是他们需要完成大量支持数据科学工作所需的其他工作,例如:

  • 构建数据管道以收集数据并将其移动到存储中;
  • 为ETL或ELT过程准备数据;
  • 将数据与脚本语言拼接在一起;
  • 与DBA合作构建数据存储;
  • 确保数据可以随时使用;
  • 使用框架和微服务来提供数据。

简而言之,数据工程师的工作就是向业务需求者提供干净、可靠的数据。与数据科学家的聪明才智相比,数据工程师更像是一位具有实践经验的管道工。如果数据科学家是提出利用新数据源获利的宏伟计划的人,那么数据工程师就会知道如何构建流水线来移动数据,清洗和转换数据,并实现服务以确保数据科学家拥有需要的所有干净、可靠的数据。

没有足够的工程师

大数据中间件开发商Dremio的CEO兼共同创始人Tomer Shiran说:“当一个公司试图将其数据科学项目投入生产时,数据工程师至关重要。因此,数据工程师的需求近来一直在增长。

“为了成功运行一个数据科学项目,数据科学家与数据工程师的数量通常有一个比例。”Shiran说,“但即使是最热门的硅谷公司也无法实现一比二的比例,没有足够的工程人才,他们很昂贵。”

shutterstock_engineer-300x169.jpg

数据工程职位空缺数量超过数据科学的职位空缺约四倍

Shiran说:“分布式数据存储(如Hadoop、Amazon S3和Azure BLOB)的复杂技术特性增加了对数据工程师的需求,因为总的来说,只有工程师才能从系统中获取价值。”

数据工程师的短缺正在推高需求。在Glassdoor上搜索发现,在全美国有107,730个数据工程职位。这些职位列表中的大部分都有超过10万美元、个别超过15万美元的起始工资。相比之下,对数据科学家的职位搜索结果是21,760个——其中很多也是高薪的。事实上,在就业委员会中,有98,218名数据工程师职位,而数据科学家只有24,695名——数据工程师与数据科学家职位的比例几乎为四比一。

Umbel工程高级总监凯文·萨福德(Kevin Safford)表示,工程是Umbel利用其数据平台为体育特许经营带来价值的重要组成部分。

“如果他们试图自己建立这个平台,那将是一场噩梦。”Safford告诉Datanami。“首先,他们不是工程公司、也不是软件公司。我们花了很长时间、很多聪明的人做了大量的努力来构建这个项目。”

Umbel使用各种开源和专有技术(Spark、Cassandra、ElasticSearch等)来建立数据库,跟踪消费者的体育相关指标,包括他们如何购买门票、他们的社交媒体行为、品牌兴趣、以及人口统计和心理状况。

Safford说:“我们有数以万计的标签可以与任何特定的个人相关联,并且整个系统内包含的人群为两亿人。这是一个巨大的数据量。仅仅是要管理这些数据集就非常困难,使它可用于信息检索并迅速实现就更加的难,甚至可以说这是非常不凡的。”

并行的大数据世界

Overstock.com集团产品经理Craig Kelly 表示,在数据科学领域有两个平行的世界 ——数据管理和统计 ,但它们往往不重叠。“观察我们的数据科学小组的成员,他们都是优秀的数据科学家。”Kelly说。“但他们中没有重量级的数据工程师。”

data-pipe_shutterstock_posteriori-2018a-300x171.jpg

数据工程师负责建立和维护提供新鲜和准确数据的管道

为了构建强大的一对一营销机器,Overstock.com必须克服这一数据工程弱项。他们部分采用了基于云的数据分析解决方案。“我们在数据工程方面没有足够的资源来支持我们要做的事情,所以我们考虑了Snowflake和Databricks弥补了这个不足——不是数据工程方面的专业知识,而是数据工程所需的硬件资源,所以数据科学家可以在不用太依赖其他团队的情况下完成工作。”

实时流分析软件供应商Striim的首席技术官兼创始人史蒂夫·威尔克斯(Steve Wilkes)表示,企业对收集到的数据越来越挑剔,因此他们在做数据整合的前期工作,而不是将数据集成到数据湖中。这正在改变他们如何部署他们的人员以及对人员的工作内容安排 。在某些情况下,数据科学家被要求承担更多的数据工程角色。

“我们更多看到的是数据科学家正在参与最初的数据收集,并开始在数据准备方面有更多的发言权(在它落地之前而不是在落地之后),包括在内存中进行数据准备,以正确的形式获取数据,进行特征提取。” Wilkes说。

工程的成功

Umbel的Safford表示,即使是最好的数据科学项目,数据工程专业知识的短缺也可能导致数据丢失。

他说:“你必须同时解决这两个问题才能取得成功,因为如果花费大量的时间和精力来管理你的数据,而你却无法利用它,那么这将成为巨大的痛点和巨大的成本。与此同时,如果没有非常小心准备、管理和维护一个对所需解决的问题有重要作用的数据集,那么分析团队将无的放矢。”

shutterstock_computer-engieneer_gyn9037-300x199.jpg

工程师正在成为大数据项目的重要团队成员

Safford已经看到许多数据项目因为数据工程执行不力而陷入困境。他说:“构建数据应用程序与构建大规模Web应用程序相比,需要完全不同的专业知识。就像不应该聘请一个建筑商来建造甲板,或者去找一个机械师来照顾你的生活。你不仅仅需要为节约自己的时间而付出成本,还要雇佣专家确保你避免做一些根本错误的事情,这些事情往往在发生之前你都不会注意到,一旦到发生的时就会让你陷入深深的困扰之中。

组织通常认为他们可以在项目工作中获得数据工程的经验。他们通常是错误的,Umbel说。

“必须要辛苦获得在建立数据管道、数据管理系统、数据分析和所有中间代码方面的实践经验,才能使数据可用和可访问,并确保数据是正确的,以确保你所做的分析是正确的,”他说,“如果没有这方面的专业知识,就会自以为随着工作进行就能搞懂这些东西。而且我看到很多人这样想。他们几乎都是错的,而且他们总在犯同样的错误。”

  • 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 部门之间的关系更加紧密,建立起强大的协作关系来赋能业务部门的关键业务创新。从数据分析技术本身,我们也看到了众多新技术,例如机器学习技术已经被用在数据治理过程当中来数据化关键过程,并且量化管控效果及价值。 随着技术与工具的发展,更多的企业已经开始了数据治理能力的建设,相信数据治理将会从大型企业的样板工程逐步成为企业的标配,实现对数据驱动企业的全面支持。  

  • Feb 09 / 2018
  • 0
Data

锐眼洞察 | 用大数据帮助创业公司成长的三个方法(翻译)

作者:Volodymyr Fedak

原文:3 ways to use Big Data to help your startup grow

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

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

译者注: 本文内容没有太多新意,但对大数据目前使用的场景与行业洞察、竞争对手洞察以及客户洞察进行了高度总结,可供参考。

持续成长是创业公司能够生存下去的唯一方法。为了达到这个目标,尽管你愿意贡献你全部的心血和眼泪来努力工作,但有时这些并不足够。大数据可能是你取得胜利的钥匙。 一个常见的误解是,大数据是Google、Facebook、Amazon这些IT巨头的特权。新朋友推荐、照片标签建议、“购买了这些产品的顾客也购买了……”以及其他可被观察到的大数据分析的结果,是来自于构建基础设施、开发工具以及训练机器学习模型等等巨额投资的成果,因此只有大公司才能有资源去做这些。

然而,有趣的是大多数人的认知并不代表真相。事实的真相是,大数据挖掘工具快速发展以及多种流行的大数据可视化工具可供选择,让大数据分析变得更加的方便和实惠,使得它们变成了每个创业公司工具包中非常重要的组成部分。这种方式可以帮助企业发现成长的空间以及产品改进的空间,指出客户的趋势和购买习惯或者发现市场空白,更不用说还能够优化成本。 需要谨记的是使用大数据分析应该有一个清晰的目标,并且优化成本不应该成为唯一的主要目标。

该如何正确的使用大数据分析呢?如下是使用大数据来帮助你的创业公司成长的三个方法。

利用大数据了解你的行业

在你能想到的每一个市场,都有多个公开的数据来源。对于你想了解的任何问题,都有大量的信息,包括公司发布季度报告、分析机构汇总数据,整理为清晰的表格并指出趋势。但是使用传统的商业智能方法或者手动分析可能会耗费你大量的时间、金钱或者二者兼而有之。最好的方法是借助机器学习算法来实现。完成训练之后,它可以利用无服务器计算技术(AWS Lambda或者微软Azure Functions)按需提供当前行业现状的快照。或者,可以构建一个监控工具,针对当前市场趋势和模式的提供持续的监控以及历史数据。

像这样的方案仍旧不能以标准软件包的形式来提供,而必须从有经验的承包商进行服务订购。同时,鉴于第一波炒作期已经过去,在过去几年这种类型的服务价格已大幅度下降,并且也有很多公司开始提供大数据科学服务。

利用大数据了解你的竞争对手

你的竞争对手所提供的产品和服务、以及所强调的功能,他们的客户留下的反馈和指出的缺陷,在各种论坛和社交媒体上都有很多讨论和建议,可以作为类似产品和服务发展方向的参考。 分析这个数据金矿将帮助您找出改善空间、市场空白以及不同的趋势,避免与竞争对手犯同样的错误,并提供目标受众所需的功能和服务。

这是一个持续的过程,需要利用大数据分析和机器学习算法去帮助企业保持耳聪目明,从而能够对市场情况变化进行快速反应。

利用大数据了解你的客户

忠诚的客户是任何企业的主要资产(当然,除了一个强大而充满激情的团队之外)。客户忠诚度是随着时间的推移而建立起来的,包括许多小的因素和效果,如折扣券、VIP俱乐部特权、忠诚奖金等等。然而,这其中很多被认为是理所当然的标准配置,创业公司还应该发明新的方法来赢得和维持客户的忠诚度,并带来品牌宣传和口碑的提升。

其中一种方法是使用大数据来跟踪客户的购买流程,就像我们在之前的文章中所描述的那样:为什么企业应该在竞争对手之前使用大数据

简而言之,了解平均家庭主妇的购物习惯,可以让供应商发送有针对性的广告和有时间限制的优惠券,从而能够打动客户并达成购买。

同样的原则也适用于刚刚起步的创业公司,因为他们必须吸引受众,提供一些新鲜的产品或服务。可以看出,实现和超越客户的期望,正是帮助创业公司成功和成长的所在。

结论

以上是使用大数据来帮助您的创业成长和繁荣的三种方式。 如您所见,使用大数据不再是国际公司的特权。 由于市场的民主化和数据科学服务公司数量的增加,提供了负担得起的大数据分析和机器学习服务,现在创业公司可以从一开始就实现数据驱动。 除了资源的优化配置和有效的市场营销举措外,使用大数据还可以利用快速变化的市场形势来获益。

  • Jan 30 / 2018
  • 0
Enterprise

锐眼洞察 | 重塑零售业的3项技术(翻译)

作者:Talitha Loftus  

原文:3 Technologies Reshaping Retail

译者:TalkingData解决方案架构师 韩铭扬

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

从自动购物车到3D足迹扫描,新的技术继续以意想不到的方式改变零售业。毫无疑问,零售业的瓦解有了新的方向。在过去的一年里,企业在零售领域的运作方式产生了巨大变革。实体店开始越来越多地运用技术来解锁更多的机会并为顾客提供无缝的购物体验。但是,由于突破性创新占有很强的市场份额,零售商需要集中精力创造一条途径,以便整合创新的场内技术来满足顾客的需求。 受华盛顿邮报的一篇“零售业的未来已经到来的5种途径”文章的启发,你将在下文中看到我认为的正在重塑零售业的前三项技术。

自动购物车

电影迷们长期以来着迷于虚拟机器人,但他们通常不太现实… …直到现在。得益于技术的进步,Five Elements Robotics推出了Dash Robotic Shopping Cart——一个允许顾客导入购物清单并通过在商店里操作的自动购物车。

设计时所考虑到的便捷理念,使顾客可以通过Dash上的结账系统使用信用卡、苹果支付或是谷歌钱包支付,省去了排队结账的麻烦。如果你嫌还车麻烦,当你把杂货都从车里拿出来后,Dash会自动找到回商店的路。Dash同时也可通过消费数据来学习顾客购物习惯,并投放定向广告。Five Elements Robotics 的CEO Wendy Roberts称之为零售业的游戏规则改写者:“Dash自动购物车必然将转变我们购物的方式。当这些机器人被投放进商店,我们甚至都无法回想没有它们之前我们是如何购物的”。 像沃尔玛这样的大零售商已经准备好在2018年部署这些自动购物车,这个领域将值得持续关注。

动态场内定价

在网上购物时,你是否发现有些你正要买的商品在几秒的时间内就降价了的经历?好消息是,这般的敏感度正在慢慢步入实体店中。商品的价格不再只依赖于供需关系以及地理位置,动态定价通过对商品的深入分析,以及更重要的,对顾客的分析,来为店铺经理确定最佳的定价。 依据Crealytics:“动态定价是一个运用多种定价方式而非典型的固定定价方式的电子商务和零售策略。随着更多的数据分析,商品或服务的最优价格被重新计算。价格变化的时间间隔取决于业务和商品本身,但可以做到像是每天或是每小时这样频繁。

零售商现在可以通过点击一个按钮,对数千个商店的价格进行大规模的更改。举例来说,如果某家商店有四瓶橙汁,店铺经理可以在下批货到店之前进行提价。或者,如果店里面包存货过多,商家可以通过推出秒杀活动以减少浪费并提高销量。

3D足部扫描

你知道你的鞋的准确尺寸是多少吗?很可能你并不清楚,你只是知道一个码数,通常你把这个数字告诉销售人员,希望他们可以给你拿来一双刚好合适的鞋。在现实中,一个人的两只脚并不是完全相同的大小,甚至可能相差一个码的大小。这就更不用说鞋子制造商,他们就像服装制造商一样,对鞋的大小有着非常不一致的看法。但是,一家瑞典公司Volumental开发的技术,可能使不合脚鞋子的困扰成为过去。

Volumental为零售商提供了一个设计精美的硬件和软件解决方案,使其可以通过3D技术扫描顾客的脚并通过由AI驱动的试衣引擎(Fit Engine)提供鞋类建议。扫描结果之后被送到Volumental平台以捕捉多个数据点,包括长度、高度以及顾客脚掌的宽度。一旦扫描结束,它们就被立即发送到一个连接的平板,便于销售人员为顾客找到最合适的鞋。此外,这个软件还可以检查库存并告知其他门店是否有货。

第一批Volumental足部扫描仪已经在多地部署,包括零售巨头新百伦(New Balance)。“Volumental的产品提供了一种与客户互动的全新方式。它把新百伦独特的试穿故事通过个性化、合适的方式带到了人们的生活中。顾客喜欢它,我们的员工也喜欢它,”新百伦国际零售总监Jonathan Clark说道。

零售商正在运用先进的技术解决方案,为消费者提供快捷个性化的购物体验。验证技术公司SheerID的CEO Jake Weatherly说道:“当我们步入新的一年,我们将看到多渠道零售的持续发展;但是,企业将同时在他们的用户体验和可帮助其更深入了解用户的技术上投入更多。”

聊完技术重新定义实体店的几种途径之后,我们需要知道还有上千种新技术正在应用于解决真正的零售问题。与此同时,自动购物车正在推动自动化体验,而动态定价模型既提高了消费者的价格感知能力,又提升了零售商的盈利能力。对于所有零售商来说,最关键的将是找到合适的技术来解决他们最大的摩擦点,以改善顾客在店内的体验。    

  • 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的重要特性是提供大量并行化的能力。 这使系统能够处理“非常”大的大数据集。

开源硬件

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

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