原文:
annas-archive.org/md5/42d9640be578d0082a7e1589f07dd9bf
译者:飞龙
第九章:使用历史降价数据预测销售
许多零售商别无选择,只能跟随行业趋势,增加折扣和特别促销活动,以维持在当今过度饱和市场中的竞争优势。这是因为大多数新客户更加敏感价格,会在多个网站上比价,寻找特定商品的最佳优惠。
然而,折扣也有其弊端。虽然促销活动能加速销售,但企业在没有进行充分研究的情况下提供折扣,也面临着进一步利润损失的风险。零售数据建模的一大挑战是需要根据有限的历史数据做出决策。如果圣诞节一年只有一次,那么看到战略决策对底线的影响的机会也只有一次。
本章我们将深入研究行业领先者最新的降价和折扣营销策略,并展示如何在保持利润率的同时实施这些策略。我们将使用来自 45 家超市的历史销售信息,这些超市分布在多个区域。虽然普遍认为这些降价对销售有影响,但很难预见到哪些部门会受到影响,以及影响的程度。因此,我们的目标是预测每个商店中各个部门的销售情况,这些商店有多个部门。选定的假期降价事件也被纳入数据集,以增加难度。
本章中,我们将学习以下内容:
-
考虑所有影响销售的因素,确定销售表现
-
探索销售数据,确定影响销售的因素
-
研究促销降价在假期期间对销售的影响
-
在特定降价应用下预测销售
我们将使用反映实际真实数据的数据,尽量接近现实情况。
技术要求
为了能够跟随本章中的步骤,你需要满足以下要求:
-
一个运行 Python 3.7 及以上版本的 Jupyter notebook 实例。如果你有 Google Drive 账户,你也可以使用 Google Colab notebook 来运行这些步骤。
-
理解基本的数学和统计概念
创建有效的降价策略
降价是指产品因未能以原定售价售出而进行的降价处理。一个折扣的例子是,如果你有一件商品,经过一个月的销售低迷后,你决定降价 20%。即使你只是失去了收入,这也会吸引更多人以更低的价格购买它。由于该商品原本销售不佳,提供一个合适的折扣价格通常会导致原本不会发生的销售。然而,你会发现,通常需要根据销售低迷来调整你的降价策略,可能会将折扣从 20% 调整到 30%、40% 等等。时机尤其重要,因为你希望在商品仍然符合季节、趋势等背景时卖出它。
Markdown 与折扣需要区分。在零售中,折扣是根据购买者的客户类型对商品或交易价格的降低。例如员工折扣、老年人折扣和常客折扣就是几种例子。由于获得折扣,许多零售商认为这使得顾客更有可能回到他们的商店,而不是去竞争对手的店。
在本章中,我们将使用位于美国不同地点的商店的历史销售数据。每个商店有多个部门,我们将预测整个部门的销售情况。此外,公司全年举办多次促销 markdown 销售活动,其中超级碗、劳动节、感恩节和圣诞节是四个最大节假日。
此外,沃尔玛全年会举行几次促销性 markdown 活动。这些 markdown 活动通常会在重要节假日前进行,其中四个最大的节假日分别是超级碗、劳动节、感恩节和圣诞节。包括这些假期的周数在评估中比非假期周数的权重高五倍。此竞赛面临的挑战之一是,在没有完整/理想的历史数据的情况下,如何建模假期周数中 markdown 对销售的影响。
在接下来的部分,我们将分析数据以理解变量及其分布,并将其结构化以便于可视化和用于机器学习。
数据分析
我们提供了 3 个文件,分别包含关于 45 家商店的匿名信息,指出商店的类型和规模、涵盖 2010-02-05 至 2012-11-01 的历史训练数据,以及一个包含与给定日期的商店、部门和区域活动相关的附加数据的文件。
在下一个示例中,使用了以下 Python 模块:
-
pandas:一个用于数据分析和数据处理的 Python 包
-
NumPy:这是一个库,支持大规模的多维数组和矩阵,并提供丰富的高阶数学函数用于对这些数组进行操作。
-
Seaborn 和 Matplotlib:用于有效数据可视化的 Python 包
-
我们将通过导入库开始分析,并通过读取所有文件并使用
read_csv
pandas 函数的parse_date
选项解析Date
列来开始分析数据:import pandas as pd # data processing
import matplotlib.pyplot as plt # visualization
import seaborn as sns # visualization
train=pd.read_csv("/content/train.csv",
parse_dates=["Date"])
features=pd.read_csv("/content/features.csv",
parse_dates=["Date"])
stores=pd.read_csv("/content/stores.csv")
-
现在所有文件已加载完毕,我们可以通过查看训练文件的前几行开始:
train.head()
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_1.jpg
图 9.1:商店、日期和部门的每周销售训练文件
该文件包含每个商店和部门的每周销售数据,并标明该日是否为假期。
我们还将引入一些日期变量,以便使分析更为简便:
train['Year']=train['Date'].dt.year
train['Month']=train['Date'].dt.month
train['Week']=train['Date'].dt.week
train['Day']=train['Date'].dt.day
-
我们将要查看的下一个文件包含关于每家商店类型和规模的信息。我们可以稍后使用这些信息来评估降价的效果是否会根据商店特征的不同而有所变化:
stores.head()
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_2.jpg
图 9.2:商店类型和规模数据
-
我们可以通过使用 Seaborn 的箱形图,开始可视化销售类型和规模的分布。在接下来的代码块中,我们将创建一个数据子集,将商店数据的类型和规模列进行拼接。然后,我们使用 Matplotlib 创建一个 8x6 英寸的图形,图形中将包含 Seaborn 图:
data = pd.concat([stores['Type'], stores['Size']], axis=1)
f, ax = plt.subplots(figsize=(8, 6))
fig = sns.boxplot(x='Type', y='Size', data=data)
代码将展示商店规模的分布情况。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_3.jpg
图 9.3:商店类型和规模数据
在规模方面,我们可以看到有三种类型的商店,其中 A 类型是最大的。看到分位数之间的变化以及异常值是很有趣的。
-
最后,接下来的文件包含更多关于每一天和商店的上下文数据。这些信息包括温度、燃料价格、应用的不同降价类型,分为五种类型,还有消费者物价指数、失业率,以及关于该天是否是节假日的信息:
features.head()
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_4.jpg
图 9.4:按商店分类的上下文数据
我们将在 train
的 pandas DataFrame 中使用 merge
方法,来附加关于日期、商店规模和类型的信息,这些数据来源于商店的 DataFrame:
train=train.merge(stores, on='Store', how='left')
train.head()
之前的代码将合并数据并显示前几行。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_5.jpg
图 9.5:带有节假日、商店类型和规模信息的每周销售数据
我们现在可以通过商店类型的分布来可视化每周销售数据。我们将创建一个包含类型和每周销售列的数据子集,创建一个 8x6 英寸的 Matplotlib 图形,然后填充一个 Seaborn 箱形图:
data = pd.concat([train['Type'], train['Weekly_Sales']], axis=1)
f, ax = plt.subplots(figsize=(8, 6))
fig = sns.boxplot(x='Type', y='Weekly_Sales', data=data, showfliers=False)
这将根据商店类型生成箱形图的可视化。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_6.jpg
图 9.6:按类型的每周销售数据箱形图
关于商店的类型,我们可以看到,尽管 A 类型是最小的,但它的销售中位数却是最高的。
-
我们现在将创建一个按商店 ID 分布的销售数据箱形图。我们从训练数据中提取商店和每周销售列,创建一个 25x8 英寸的 Matplotlib 图形,然后显示一个 Seaborn 箱形图,x 轴为商店 ID,按类型进行颜色区分:
data = pd.concat([train['Store'], train['Weekly_Sales'], train['Type']], axis=1)
f, ax = plt.subplots(figsize=(25, 8))
fig = sns.boxplot(x='Store', y='Weekly_Sales', data=data, showfliers=False, hue="Type")
该代码将生成每周按商店分布的箱形图。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_7.jpg
图 9.7:按商店 ID 和类型的每周销售数据
从箱线图中,我们可以看出,门店可能是提供销售信息的变量,因为在所有类型中,销售的上边界有一致的高值模式。这表明在某些时刻,需求在短时间内增加。此外,数据中没有出现需求在中位数以下大幅下降的情况。
门店数据中包含了许多关于类型、规模和部门的内在信息。因此,我们将探讨节假日如何影响销售。
-
我们重复相同的步骤:创建数据子集、绘制 Matplotlib 图形和 seaborn 箱线图,但现在的 hue 变量设置为IsHoliday列:
data = pd.concat([train['Store'], train['Weekly_Sales'], train['IsHoliday']], axis=1)
f, ax = plt.subplots(figsize=(25, 8))
fig = sns.boxplot(x='Store', y='Weekly_Sales', data=data, showfliers=False, hue="IsHoliday")
这段代码将展示更多层次的销售信息分布。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_8.jpg
图 9.8:按门店 ID 划分的每周销售数据,包括节假日与不包括节假日
从数据中可以看出,Holiday 和 Store 之间没有显著的关系,除了在节假日当天销售略有上升。这可能意味着大部分销售是在节假日前几天完成的。
-
现在,让我们深入探讨按部门类型划分的销售差异。为此,我们将创建一个数据子集,作为每个部门每周销售的分组,然后计算均值并重置索引。我们使用条形图展示数据,因为如果使用箱线图,难以一眼看出部门之间的差异,原因是部门数量太多:
data= train[['Dept','Weekly_Sales']].groupby('Dept').mean().reset_index()
f, ax = plt.subplots(figsize=(25, 8))
fig = sns.barplot(x='Dept', y='Weekly_Sales', data=data)
这项可视化将为我们提供按部门划分的销售视角。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_9.jpg
图 9.9:按部门划分的每周中位销售额
我们可以看到不同部门的销售存在差异。某些部门的收入高度集中,这可能促使我们考虑排除那些销售较小的部门。但这可能并不合适,因为这些部门可能吸引那些只需要特定商品的顾客前来,并最终购买其他商品。你可以使用如 Apriori 算法等方法进一步研究这一点。
-
接下来,我们将可视化按月份划分的每周销售,以窥探数据的季节性。我们创建包含相关列的数据子集,并使用箱线图可视化数据:
data = pd.concat([train['Month'], train['Weekly_Sales']], axis=1)
f, ax = plt.subplots(figsize=(8, 6))
fig = sns.boxplot(x='Month', y="Weekly_Sales", data=data, showfliers=False)
以下是月度销售的分布情况。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_10.jpg
图 9.10:按月份划分的每周销售数据
我们可以通过可视化节假日在月度销售中的表现,进一步探索月度销售数据。我们通过将箱线图的 hue 值设置为IsHoliday
来实现这一点:
data = pd.concat([train['Month'], train[
'Weekly_Sales'],train['IsHoliday']], axis=1)
f, ax = plt.subplots(figsize=(8, 6))
fig = sns.boxplot(x='Month', y="Weekly_Sales", data=data, showfliers=False, hue='IsHoliday')
以下图表展示了按月份和节假日划分的销售分布。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_11.jpg
图 9.11:按月份区分节假日的每周销售数据
对于大多数节假日,假期当天的销售稍高于常规日,圣诞节除外,圣诞节是在 12 月。
现在,我们可以创建一个 seaborn 的 relplot 来按周可视化数据:
data = pd.concat([train['Week'], train['Weekly_Sales'],train['Type']], axis=1)
sns.relplot(x='Week', y="Weekly_Sales", data=data, hue='Type',kind='line',height=8, aspect=2.2)
这个图表显示了中位数和置信区间。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_12.jpg
图 9.12: 随时间变化的每周销售
通过查看 relplot,我们可以看到第 40 周到第 50 周之间销售的急剧增长。
-
我们可以使用箱线图来可视化每周销售数据,将
Week
放在 x 轴,将Weekly_Sales
列放在 y 轴:data = pd.concat([train['Week'], train['Weekly_Sales']], axis=1)
f, ax = plt.subplots(figsize=(20, 6))
fig = sns.boxplot(x='Week', y="Weekly_Sales", data=data, showfliers=False)
该图表显示了每年按周的中位数和置信区间。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_13.jpg
图 9.13: 每年按周的销售
我们现在可以看到,年初的假期带来了小幅增长,而年末的假期则带来了最大的销售增长,包括随后的一个星期的急剧下降。
-
我们现在可以使用 seaborn 的 relplot 绘制数据,使用日期和每周销售数据,并通过 hue 参数按商店类型进行区分:
data = pd.concat([train['Date'], train[
'Weekly_Sales'],train['Type']], axis=1)
sns.relplot(x='Date', y="Weekly_Sales", data=data, hue='Type',kind='line',height=8, aspect=2.2)
上述代码绘制了带有置信带的数据。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_14.jpg
图 9.14: 随时间变化的每周销售
我们可以观察到,两个年份中的数据呈现出相同的模式,这可以通过进一步分析数据的季节性来解释。季节性是指在某些时间段内反复出现的模式。购买模式的周期在每年末重复,并在圣诞节前几周出现急剧增长。
-
我们的下一步将是分析每周销售的均值,按周和应用的降价进行区分。为此,首先我们将每周销售按周进行分组并计算均值,然后打印形状进行合理性测试:
data_store = train[['Week','Weekly_Sales']].groupby(['Week']).mean().reset_index()
data_store.shape
>>>(52, 2)
然后,我们可以从特征数据框中获取有关该特定周应用的降价信息,并计算均值:
data_features = features[['Week','MarkDown1','MarkDown2',
'MarkDown3','MarkDown4','MarkDown5']].groupby(['Week']).mean().reset_index()
data_features.shape
>>>(52, 6)
-
现在,我们可以合并两个数据框,并获得每周的中位销售信息以及所应用的降价类型:
data_store = data_store.merge(data_features,on=['Week'],how='left').fillna(.0)
data_store.index = data_store['Week']
data_store = data_store.drop(['Week'],axis=1)
data_store.head()
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_15.jpg
图 9.15: 每周中位数销售和每周降价
使用这些信息,我们现在可以绘制数据,查看折扣与每周销售之间的影响:
data_store.plot(figsize=(20,8))
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_16.jpg
图 9.16: 每周中位数销售和每周降价
从数据中我们可以看到,许多降价是在圣诞节前立即实施的,然后在接下来的几周内继续进行。其原因可能是,这些降价是为了减少在假期期间未售出的库存。
-
现在,我们将查看销售与描述每一天和每个商店条件的特征之间的关系。为此,我们按周对销售数据进行分组并计算均值。然后,我们对特征数据执行相同操作,最后将两个 DataFrame 合并:
data_features = features.drop(['Store','Date','MarkDown1',
'MarkDown2','MarkDown3','MarkDown4','MarkDown5'],axis=1).groupby(['Week']).mean().reset_index()
data_store = train[['Week','Weekly_Sales']].groupby(['Week']).mean().reset_index()
data_store = data_store.merge(data_features,on=['Week'],how='left').fillna(.0)
data_store.head()
前面的代码将展示我们合并后的数据。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_17.jpg
图 9.17:每周中位数上下文数据
-
我们现在可以利用这些信息构建一个 seaborn 配对图来可视化任何关系。我们排除了
Week
和IsHoliday
变量,后者是因为类别变量难以通过这种类型的图进行可视化:sns.pairplot(data_store.drop(['Week','IsHoliday'],axis=1))
代码将创建一个显示数值变量之间关系的图表。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_18.jpg
图 9.18:特征配对图
我们可以看到,尽管我们能够更好地理解这些关系,但大部分每周销售的均值每周相似,这使得与 CPI、失业率或油价之间的有意义关系难以区分。我们应该不对数据进行分组,重新进行此操作,这样会得到更多信息,但需要更多的处理时间。
- 为了预测销售,首先,我们需要处理数据并做出一些决策。第一个决策是我们希望在哪个时间层级进行预测。在我们的案例中,我们将使用
predict
进行每周销售的预测。我们会将所有数据合并到一个 DataFrame 中,在该 DataFrame 中,每个数据点都附加了关于商店以及那天条件的信息。
我们还将 Type 列转换为一-hot 向量表示,使用 pd.get_dummies
函数:
data = train.drop(['Year','Month','Week'],axis=1).merge(features.drop(['IsHoliday','Week'],axis=1),on=['Store','Date'])
data = pd.concat([data.drop(['Type'],axis=1),
pd.get_dummies(data['Type'])],axis=1).fillna(0)
data['IsHoliday'] = data['IsHoliday'].astype(int)
data.head()
我们可以看到 DataFrame 中创建的列。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_19.jpg
图 9.19:没有编码变量的数据集
这种数据配置使我们能够扩展探索,分析变量之间的相关性,进而为使用数据预测销售奠定基础。
下一段代码将使用 pandas
DataFrame 的 corr()
方法分析变量之间的相关性,我们将使用 numpy
包来屏蔽冗余的值,最后使用 seaborn 的 heatmap
可视化工具绘制数据:
import numpy as np
df_corr = data.drop(['Date'],axis=1).corr()
mask = np.triu(np.ones_like(df_corr, dtype=bool))
df_corr = df_corr.mask(mask).round(3)
fig, ax = plt.subplots(figsize=(16,16))
sns.heatmap(df_corr, annot=True,ax=ax)
上述代码将创建变量相关性的可视化图。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_20.jpg
图 9.20:变量相关性
我们可以看到一些有趣的相关性,例如,折扣 2 和 3 的大小与商店大小之间的正相关性,以及折扣 1 和 4 的大小之间的正相关性。
-
最后,我们可以展示变量与每周销售之间的相关性程度:
f, ax = plt.subplots(figsize=(20, 6))
data = df_corr['Weekly_Sales'].dropna().sort_values(ascending=False)
sns.barplot(x=data.index,y=data)
以下条形图将展示我们最相关的变量。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_21.jpg
图 9.21:排序后的变量相关性
我们可以看到每周销售受商店大小的正向影响最大,其次是 markdowns 5 和 1。它与失业率和消费者价格指数(CPI)呈负相关,这也是合理的。
现在我们对数据有了更好的理解,我们将开始进行每周销售预测的过程。
使用 Prophet 预测销售
预测时间序列可能是一个具有挑战性的任务,因为你可以使用许多不同的方法,并且每种方法都有许多不同的超参数。Prophet 库是一个开源库,旨在为单变量时间序列数据集进行预测。它易于使用,并设计为自动找到一组良好的超参数,使模型能够为具有标准趋势和季节性结构的数据做出有竞争力的预测。我们将学习如何使用 Facebook Prophet 包来预测每周销售时间序列:
-
首先,我们将导入库并创建一个包含所有描述为连续变量或独热表示的特征的数据集:
from fbprophet import Prophet
data = train.drop(['Year','Month','Week'],axis=1).merge(features.drop(['IsHoliday','Week'],axis=1),on=['Store','Date'])
data = pd.concat([data.drop(['Type'],axis=1),
pd.get_dummies(data['Type'])],axis=1).fillna(0)
data['IsHoliday'] = data['IsHoliday'].astype(int)
-
过滤 Store 1 的结果,因为我们将训练一个能够学习每个特定商店行为的模型:
data = data[data.Store==1]
-
对于 Prophet 包,我们需要准备一些具有特定数据类型的预期列名。在这种情况下,我们需要传递
ds
和y
变量,第一个是datetime
类型的列:data['ds']= pd.to_datetime(data['Date'])
data = data.sort_values(['ds'],ascending='True')
data['y']=data['Weekly_Sales']
现在我们已经创建了具有正确数据类型的列,我们可以删除冗余列并显示前几行:
data = data.drop(['Date','Weekly_Sales'],axis=1).reset_index(drop=True)
data.head()
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_22.jpg
图 9.22:用于模型训练的数据
现在我们可以将数据分为训练数据集和测试数据集。
x_train = data[:-1000]
x_test = data[-1000:]
-
最后,我们可以定义将使用的模型。在这种情况下,我们需要建立线性增长和乘法季节性。在这种情况下,我们还包括了每周季节性:
model = Prophet(changepoint_prior_scale=0.05,
interval_width=0.95,
growth = 'linear',
seasonality_mode = 'multiplicative',
weekly_seasonality=True,
changepoint_range=0.9)
在训练预测模型之前,我们可以添加使用附加变量的回归器。
这里,add_regressor
参数是训练数据框中附加变量的列名:
for c in ['Dept','IsHoliday',
'CPI','Fuel_Price','MarkDown1',
'MarkDown2','MarkDown3','MarkDown4','MarkDown5', 'Unemployment']:
print(c)
model.add_regressor(name=c, prior_scale=None, standardize='auto', mode='additive')
请注意,这里我们正在将附加变量作为回归器添加到模型中。这些变量应具有未来(测试)数据的值。一个关键因素是,我们对所有变量使用相同的参数,而建议的做法是对每个变量单独进行调优,尽管根据每个变量的具体情况来选择这些参数超出了本分析的范围。
最后,我们可以拟合模型:
model.fit(data[['ds','y','Dept','IsHoliday','CPI',
'Fuel_Price','MarkDown1','MarkDown2','MarkDown3',
'MarkDown4','MarkDown5', 'Unemployment']])
-
模型训练完成后,我们可以使用它对测试数据进行预测,以评估预测的表现:
forecast = model.predict(x_test[['ds','Dept','IsHoliday','
CPI','Fuel_Price','MarkDown1','MarkDown2','MarkDown3',
'MarkDown4','MarkDown5', 'Unemployment']])
我们可以访问结果预测,展示每个日期的预测值,以及上下边界:
print(forecast[['ds', 'yhat', 'yhat_lower',
'yhat_upper']].head())
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_23.jpg
图 9.23:预测数据
-
现在,我们可以将这些结果与测试数据中 y 的实际值连接起来,以可视化结果。为便于可视化,生成的曲线采用七天滞后的滚动平均进行平滑处理:
forecast_data = pd.concat([forecast[['yhat',
'yhat_lower', 'yhat_upper']],
x_test['y'].reset_index(drop=True)],axis=1)
forecast_data.rolling(window=7).mean().plot(figsize=(20,8))
上述代码将生成一个可视化图,我们可以看到实际销售与实际结果的对比。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_09_24.jpg
图 9.24:预测数据与实际值对比
我们可以看到,除了个别情况外,大多数情况下,预测值与实际值接近,极少出现超出上限的情况,但从未低于下限。
总结
本章我们已深入探讨了销售分析和降价应用的细节。如前所述,降低商品价格以增加销售和减少库存相关成本之间存在一定的权衡,而这种降价会导致一定的收入损失。在零售的情况下,这些结果受到多个因素的影响,其中包括某个店铺的位置、环境和经济条件,以及季节性因素,正如我们通过不同节假日销售分析所看到的那样。
销售和降价的分析与预测可以帮助微调应用的降价策略,从而维持盈利性和销售之间的平衡,并深入理解涉及的变量及其相对影响,这有助于设计更好的降价策略。
在下一章,我们将深入探讨电子商务零售商如何学习消费者行为、理解消费者细分、预测消费者生命周期价值,以及预测哪些用户最终会购买。
第十章:网页分析优化。
数据驱动的营销优化是一种重视能够通过可信和可验证数据支持的决策的营销分析方法。它高度重视那些可以通过实证证据证明的选择,无论是流量来源、页面浏览量,还是每次会话的时间。数据收集、处理和解释的有效性对最大化营销结果是数据驱动方法成功的关键因素。
在本章中,我们将学习以下内容:
-
理解网页分析是什么。
-
如何使用网页分析数据来改善业务运营。
-
基于网页分析数据计算用户的客户生命周期价值(CLV)。
-
基于这些历史数据预测用户的 CLV。
让我们确定了解这些步骤并跟随本章所需的要求。
本章涵盖以下主题:
-
理解网页分析。
-
使用网页分析来改善商业决策。
-
探索数据。
-
计算 CLV。
-
预测客户收入。
技术要求。
为了能够跟随本章中的步骤,你需要满足以下要求:
-
一个运行 Python 3.7 及以上版本的 Jupyter Notebook 实例。如果你有 Google Drive 账户,也可以使用 Google Colab 笔记本来运行这些步骤。
-
理解基本的数学和统计学概念。
理解网页分析。
对于电子商务,理解用户行为至关重要。网页分析的数据通常显示在可以根据用户画像或时间段等因素调整的仪表板上。这些仪表板随后用于做出产品和市场决策,因此这些数据的准确性至关重要。数据可以分为多个组别,包括以下内容:
-
通过检查访问次数、新访客与回访者的比例、访客来源,以及他们使用的浏览器或设备(桌面与移动设备),可以了解受众数据。
-
常见的登录页面、常访页面、常退出页面、每次访问所花费的时间、每次访问的页面数量以及跳出率,都可以用于研究受众行为。
-
活动数据用于了解哪些活动带来了最多的流量,哪些网站作为推荐来源表现最佳,哪些关键词搜索导致了访问,以及活动媒介的细分,如电子邮件与社交媒体的对比。
然后,销售、产品和营销团队可以使用这些信息了解用户如何与产品互动,如何定制信息,以及如何改进产品。
用于跟踪和分析网站流量的最佳和最有效的工具之一是 Google Analytics。您可以从中了解到关于您网站访问者的大量信息,包括他们是谁、他们在寻找什么以及他们是如何找到您的。每家希望开发和改善其在线存在的公司都应该使用 Google Analytics。
Google Analytics 将为您提供的最重要信息列在此处:
-
您的访问者来自哪里——如果您针对特定受众,这一点非常重要。
-
人们如何找到您的网站是了解您的努力是否成功的关键信息。它表明用户是直接访问您的网站,通过另一个网站的链接(如 Twitter 或 Facebook),还是通过搜索引擎到达的。
-
访问者使用的浏览器——通过了解他们使用的浏览器,您可以决定应该集中注意力的浏览器。
-
人们用来找到您的网站的搜索引擎术语是 SEO 的重要信息。了解人们如何通过搜索引擎找到您的网站的搜索术语有助于评估您的进展。
在接下来的部分,我们将深入探讨如何利用 Google Analytics 数据来了解我们的客户群体。
使用网络分析来改善业务运营
通过利用数字分析和用户输入的见解,我们可以通过转化率优化增加我们的网站和应用程序的性能。通过利用当前的流量并最大化它,以期提高销售、线索或任何其他目标。
借助数字分析仪表板和分析,我们可以监控用户活动,包括他们的来源、他们在我们的网站或应用程序上浏览的页面,以及他们如何在各个页面之间移动。通过内容和用户行为分析,我们可以确定哪里有最大的潜力,以及需要进行哪些变更来实现指定的目标和目标。
通过定义和执行测量计划,企业网站或应用的标签具有上下文意义。这使得公司可以进行优势、劣势、机会和威胁(SWOT)分析,从而明确目标和目标,并指示必须通过特定内容和消息来定位内外网站或应用的用户细分。
当识别出机会或威胁时,也可以进行 A/B 或多元测试。通过这种方式,我们可以向不同用户群体展示网站功能的两个(或多个)不同迭代版本,然后评估哪个表现更好。我们可以使用这种方法做出基于数据的决策,而忽略季节性影响等因素。
现在我们已经了解了应用程序的背景,请从查看数据集并了解我们的需求、我们的目标以及分析的局限性开始。
探索数据
在下一个示例中,我们将使用以下 Python 模块:
-
pandas:用于数据分析和数据操作的 Python 包。
-
NumPy: 这是一个支持大规模多维数组和矩阵的库,并提供了一大批高层次的数学函数来操作这些数组。
-
Statsmodels
: 一个 Python 包,提供了对 SciPy 的补充,用于统计计算,包括描述性统计和统计模型的估计与推断。它提供了许多不同统计模型的估计类和函数。 -
Seaborn 和 Matplotlib: 用于有效数据可视化的 Python 包。
我们将按以下步骤开始:
-
以下代码块将加载所有必需的包,加载数据并显示前五行。为了提高可读性,我们将限制显示的最大行数为
20
,将最大列数限制为50
,并将浮动数字显示为2
位小数:import pandas as pd
pd.options.display.max_rows = 20
pd.options.display.max_columns = 50
pd.options.display.precision = 2
df = pd.read_csv('google_analytics_clean_data.csv')
df["date"] = pd.to_datetime(df["date"], format="%Y%m%d") # seting the column as pandas datetime
df.head()
上面的代码将加载文件,将日期列转换为正确的数据类型,并提示我们查看前几行。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_10_1.jpg
图 10.1:Google Analytics 示例数据
我们可以看到,这是一个可以从 Google Analytics 获得的数据演示,因为某些列不可用。
-
我们将探索这组列:
df.columns
这行代码将显示文件中所有列的名称。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_10_2.jpg
图 10.2:列名
根据我们从 Kaggle 竞赛中获得的有关列和数据的信息,我们可以描述数据集中的列:
-
fullVisitorId
: 每个用户的标识符。 -
channelGrouping
: 客户被重定向的渠道。 -
date
: 访问的日期。 -
Device
: 使用的设备类型。 -
geoNetwork
: 客户的位置。 -
socialEngagementType
: 客户是否在社交媒体上参与互动? -
trafficSource
: 该字段显示流量来源。 -
visitId
: 特定访问的标识符。 -
visitNumber
: 特定客户的会话计数。
-
现在我们已经有了有关列的信息,可以绘制收入列以查看它们的分布:
df['totals.transactionRevenue'].plot(figsize=(12,4))
这行代码将使用 pandas 的 plot
方法显示列的分布。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_10_3.jpg
图 10.3:收入分布
许多公司发现 80/20 法则是成立的:只有一小部分客户创造了大部分收入,通过查看数据我们可以验证这一点,少数客户创造了大部分收入。营销团队面临的问题是如何将适当的资金分配到促销活动中。在这种情况下,比例明显更低。
- 数据点之间的统计关联通过关系图展示。数据可视化对于发现趋势和模式至关重要。这张图为用户提供了额外的轴级函数,利用语义子集映射,可以展示两个变量之间的关系。以长格式模式传递整个数据集将对重复值(每年)进行汇总,以展示均值和 95%的置信区间。
在这里,我们使用seaborn
包创建一个带有 95%置信区间区域的关系图,展示收入列:
import seaborn as sns
sns.relplot(x='date', y='totals.transactionRevenue', data=df,kind='line',height=8, aspect=2.2)
这展示了带有置信区间的交易分布,如下所示:
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_10_4.jpg
图 10.4:带有置信区间的收入分布
这里我们看到的一个问题是,由于数值差异,数据难以观察,因此我们将实现对数尺度。对于广泛的数值范围,通常会使用一种非线性尺度,称为对数尺度。每个区间的增量是以对数的底数为因子的,而不是等量增加。常用的对数尺度有以 10 为底和以 e 为底的尺度。
有时,显示的数据比其余数据大得多或小得多——当值之间的百分比变化显著时,对数尺度也可能很有帮助。如果可视化中的数据范围非常广泛,我们可以使用对数尺度。
另一个好处是,当显示较小的价格上涨或下跌时,对数定价尺度比线性定价尺度表现得更好。它们可以帮助你确定价格必须上涨或下跌多少,才能达到买入或卖出的目标。然而,如果价格接近,对数价格尺度可能会变得拥挤且难以读取。使用对数尺度时,当值之间的百分比变化相同时,尺度上的价格之间的垂直距离是相等的。
-
在这里,我们将使用
numpy
库在收入列上实现对数尺度:import numpy as np
df['totals.transactionRevenue'] = np.log(df['totals.transactionRevenue'])
df['totals.transactionRevenue'].plot(figsize=(12,4))
在这里,我们可以看到在对数尺度上的交易。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_10_5.jpg
图 10.5:对数尺度收入
-
我们现在可以使用关系图更好地可视化带有置信区间的对数交易值:
sns.relplot(x='date', y='totals.transactionRevenue', data=df,kind='line',height=8, aspect=2.2)
我们可以通过relplot
获得更好的可视性,它将绘制均值数据为一条线,并显示 95%的数据所在的置信区间。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_10_6.jpg
图 10.6:带有置信区间的对数尺度收入
-
另一种可视化方法是使用散点图,这对于识别离群值非常有用:
import matplotlib.pyplot as plt # visualization
data = df.groupby("fullVisitorId")["totals.transactionRevenue"].sum().reset_index()
f, ax = plt.subplots(figsize=(12, 6))
fig =sns.scatterplot(x='fullVisitorId', y='totals.transactionRevenue',size=4,alpha=.8,color='red', data=data)
散点图向我们展示了有一些离群值。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_10_7.jpg
图 10.7:作为散点图的交易
在这里,我们可以更清楚地看到,只有少数几个用户通过他们的订单创造了极高的收入。
-
现在,我们可以看看前 50 名客户的支出模式:
top_50_customers = data.sort_values(['totals.transactionRevenue'],ascending=False).head(50)
top_50_customers['totals.transactionRevenue'].plot.bar(figsize=(15,6))
接下来是一个关于前几大客户的条形图。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_10_8.jpg
图 10.8:最高收入的用户
从这张图中我们可以确认,用户26437是我们最大的客户。
-
使用 Google Analytics 查找商品和服务的潜在市场是该工具的另一个精彩应用。你可以查看按国家分列的访问量和转化率,选择重点关注的地区,并决定在哪些地方扩展,尤其是在你的业务面向全球或考虑全球化时。在这里,我们可以分析用户群体中的主要国家:
global_countries = df['geoNetwork.country'].value_counts().head(20)
global_countries.plot.bar(figsize=(16,6))
上面的代码将展示用户来自的国家。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_10_9.jpg
图 10.9:所有国家
我们可以看到,绝大多数用户集中在美国。
-
现在,让我们关注一下我们的顶级客户,并查看他们来自哪些地方。我们可以通过遮罩在前 50 名用户名单中的用户,然后复制前面的图形来实现:
top_50_data = df[df.fullVisitorId.isin(top_50_customers.fullVisitorId)]
top_50_countries = top_50_data['geoNetwork.country'].value_counts()
top_50_countries.plot.bar(figsize=(12,6))
上面的代码将以条形图的形式展示前几大国家。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_10_10.jpg
图 10.10:最大客户的国家
再次,我们可以确认最大的客户来自美国,其次是肯尼亚和日本。
-
现在,我们将分析有多少访客实际上进行了转化,也就是他们实际购买了某些商品:
zero_revenue_users = (data["totals.transactionRevenue"]==0).sum()
print("Number of unique customers with non-zero revenue: ", len(data)-zero_revenue_users, "and the ratio is: ", zero_revenue_users / len(data))
>>> Number of unique customers with non-zero revenue: 6876 and the ratio is: 0.9264536003080478
比例上,约有 8% 的用户实际在网站上进行了购买,这个比例不错。
-
现在,我们将开始清理数据的过程,首先查找只有一个值的分类列。这些列没有提供有效数据,我们将将其删除:
const_cols = [c for c in df.columns if df[c].nunique(dropna=False)==1 ]
Const_cols
>>> ['socialEngagementType', 'totals.visits']
df = df.drop(const_cols, axis=1)
-
现在,我们将通过删除一些不使用的列来简化数据:
drop_cols = ['sessionId','visitId','visitStartTime',
'geoNetwork.continent','geoNetwork.subContinent',
'geoNetwork.region','geoNetwork.metro',
'geoNetwork.city','geoNetwork.networkDomain']
df = df.drop(drop_cols, axis=1)
df.columns
以下截图展示了我们当前拥有的列:
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_10_11.jpg
图 10.11:最终列集合
-
我们的列现在已经精简为我们实际需要的列。接下来,让我们探索
campaign
列,看看哪一项活动更成功:df['trafficSource.campaign'].value_counts().plot.bar(figsize=(10,6),rot=30)
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_10_12.jpg
图 10.12:活动数据
从活动数据中我们可以看出,大部分流量并非来自活动,而且一些活动表现不佳。这些信息可以帮助营销团队优化这些活动并节省费用。
计算 CLV
客户生命周期价值(CLV)是一项指标,用于描述公司在客户保持关系期间,可以从一个典型客户身上获得的总收入。CLV 是公司从典型客户身上赚取的总金额,它在营销中被用来预测客户未来整个关系过程中将产生的净利润。
了解客户的 CLV 至关重要,因为它能帮助我们决定花多少钱来吸引新客户以及保持现有客户。计算 CLV 最简单的方法是将每次购买的平均值乘以客户每年购买的次数,再乘以客户关系的平均持续时间(按年或月计算)。
通过计算不同客户的 CLV(客户生命周期价值),可以获得许多好处,其中最关键的是商业决策。了解你的 CLV 能帮助你发现如下内容:
-
你可以花费多少资金,依然能与类似的客户保持盈利的关系
-
高 CLV 客户所青睐的产品种类
-
哪些产品的盈利性最高
-
你的最盈利的客户类型是谁
将资源花费在现有客户群体的销售上是关键,因为现有客户的购买概率为 60%到 70%,而新客户的购买概率只有 5%到 20%。有几种策略能增加消费者再次购买的可能性,其中一些方法如下:
-
让客户更容易退还他们购买的商品,因为如果让顾客退货变得困难或昂贵,将大幅降低他们再次购买的可能性。
-
设定交货日期的预期目标,并通过建立安全边际超越这些预期。例如,承诺在 5 月 20 日交货,然后在 5 月 1 日提前交货,而不是反过来。
-
创建一个有实际可得且有吸引力的激励措施的计划,鼓励用户进行重复购买。
-
提供激励措施以鼓励客户继续选择你的品牌。
-
与长期客户保持联系,确保他们知道你依然在关心他们,同时提供简单的方式让他们联系到你。
-
专注于获取并保持回头客,这些顾客将推动你的品牌发展,以及长期客户。
更具体地说,计算 CLV 的步骤如下:
-
将数据分割为每三个月一组。
-
汇总每位客户在过去 3 个月的收入。
-
生成类似“自上次购买以来的天数”、“购买间隔的平均天数”等列。
我们将通过以下步骤来进行:
-
为了应用这一方法,我们将定义一些辅助函数,并与
pandas
的聚合方法一起使用,以确定我们用户的 CLV:def groupby_mean(x):
return x.mean()
def groupby_count(x):
return x.count()
def purchase_duration(x):
return (x.max() - x.min()).days
def avg_frequency(x):
return (x.max() - x.min()).days/x.count()
-
我们希望将分析的时间范围设定为 3 个月,因此我们将创建一个变量来确定这一点:
clv_freq = '3M'
-
需要注意的是,我们将使用
__name__
属性来确定 Python 中函数的名称,并保持列名整洁。要访问__name__
属性,只需在函数名后不加括号并使用__name__
属性即可。它将返回函数名的字符串:groupby_mean.__name__ = 'avg'
groupby_count.__name__ = 'count'
purchase_duration.__name__ = 'purchase_duration'
avg_frequency.__name__ = 'purchase_frequency'
-
现在,我们可以通过应用
groupby
方法并使用之前定义的函数来聚合值,从而创建我们的汇总数据框:summary_df = df.reset_index().groupby('fullVisitorId').agg({
'totals.transactionRevenue': [min, max, sum, groupby_mean, groupby_count],
'date': [min, max, purchase_duration, avg_frequency]
})
-
最后,我们将对列名进行一些调整,以提高可读性:
summary_df.columns = ['_'.join(col).lower() for col in summary_df.columns]
我们可以检查数据框的最终大小:
summary_df.shape
>>> (93492, 9)
我们还可以通过describe
方法检查值的分布:
summary_df.describe()
在这里,我们调用了pandas
的统计摘要:
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_10_13.jpg
图 10.13:计算的用户 CLV
-
现在,让我们通过查看购买日期来筛选出那些实际购买了商品的用户:
summary_df = summary_df.loc[summary_
df['date_purchase_duration'] > 0]
之后,我们大大减少了数据集中的用户数量:
summary_df.shape
>>> (66168, 9)
-
我们可以通过绘制分组后的结果,使用交易计数来可视化这些结果:
import matplotlib.pyplot as plt
ax = summary_df.groupby('totals.transactionrevenue_count').count()['totals.transactionrevenue_avg'][:20].plot(
kind='bar',
color='blue',
figsize=(12,7),
grid=True
)
ax.set_ylabel('count')
plt.show()
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_10_14.jpg
图 10.14:交易收入计数
- 现在,最常见的交易次数是2,呈抛物线方式减少。这为我们提供了足够的信息,以便在客户第二次交易后向他们提供激励措施,鼓励他们继续购买。
现在,让我们来看看交易之间的天数:
ax = summary_df['date_purchase_frequency'].hist(
bins=20,
color='blue',
rwidth=0.7,
figsize=(12,7)
)
ax.set_xlabel('avg. number of days between purchases')
ax.set_ylabel('count')
plt.show()
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_10_15.jpg
图 10.15:购买之间的时间
这些信息告诉我们,客户在 25 天后再次购买的情况很少,因此我们可以利用这些信息在交易间隔超过某个阈值时保持用户活跃。这帮助我们减少客户流失并提高忠诚度。
现在,我们已经确定了如何计算 CLV,这将帮助我们制定更好的营销策略,精确了解我们可以为获取每个客户花费多少。
预测客户收入
通过利用我们公司历史上的交易数据,我们试图预测在特定时间点从客户那里获得的未来收入。当你能够准确预测收入时,规划如何实现收入目标会更简单,在许多情况下,营销团队会被分配收入目标,特别是在初创行业的融资轮之后。
B2B 营销聚焦于目标,这时历史预测(通过历史数据预测我们的收入)一直非常成功。因为精准的历史收入和管道数据为你以前的收入创造提供了宝贵的洞察。你可以利用这些洞察预测为实现收入目标所需的条件。为营销团队提供更好的信息的因素可以总结为四个指标,在你开始计算预期收入之前:
-
你需要多长时间才能产生收入
-
每个管道阶段的交易平均停留时间
-
以往交易的数量
-
在这个时间段内产生的收入
这些指标通常是你预测收入的基础,并且能够帮助创建更加明确的营销计划。
像“用户需要多长时间才能开始赚钱”这样的问题要求你收集这些指标。了解用户的收入时间(从创建账户到用户完成购买所需的时间)是第一步。这是因为收入时间决定了你通常需要多长时间才能创造收入,并收回为获得这个客户所做的投资。如果忽略了这些指标,你的收入周期和估算将失去同步,没有这个参数,可能会导致你错失目标并错误分配资金。事实上,你必须了解你的收入时间。
同样,唯一准确衡量这一点的方法是从一个匿名用户首次与你互动的那一刻开始,直到该账户转化为客户。如果没有识别首次接触,你的测量将不准确,并且再次低估了你实际上需要多长时间才能获得收入:
-
我们将通过导入将要使用的包开始分析,包括
LightGBM
分类。需要注意的是,我们会将交易中的 NaN 值替换为零:from sklearn import model_selection, preprocessing, metrics
import lightgbm as lgb
# Impute 0 for missing target values
df["totals.transactionRevenue"].fillna(0, inplace=True)
y = df["totals.transactionRevenue"].values
id = df["fullVisitorId"].values
为了使分类数据能供各种模型使用,必须通过编码过程将分类数据转换为整数表示。在数据科学领域,数据准备是建模之前的必要步骤——那么,如何在数据科学中处理分类数据呢?常用的方法如下:
-
使用 Python 的
category_encoding
库进行独热编码 -
Scikit-learn 预处理
-
get_dummies
在 pandas 中的使用 -
二进制编码
-
频率编码
-
标签编码
-
序数编码
当数据无法以其现有格式跨系统或应用程序传输时,这种方法通常会被采用,以确保数据的完整性和可用性。数据保护和安全性并不使用编码,因为解码很简单。
将类别特征的水平转换为数值的一个非常有效的方法是使用标签,这些标签的值介于 0 和 n 类 - 1 之间,其中 n 是不同标签的数量。在这里,我们使用LabelEncoder
对变量进行编码。重复的标签会分配与第一次相同的值。
-
我们将列出需要编码的类别列。这里,列表是硬编码的,但我们本可以使用
pandas
的数据类型来确定对象列:cat_cols = ['channelGrouping','device.browser','device.deviceCategory','device.operatingSystem','geoNetwork.country','trafficSource.campaign','trafficSource.keyword','trafficSource.medium','trafficSource.referralPath','trafficSource.source','trafficSource.isTrueDirect']
-
现在,我们将遍历它们并使用
LabelEncoder
进行编码:for col in cat_cols:
print(col)
lbl = preprocessing.LabelEncoder()
lbl.fit(list(df[col].values.astype('str')))
df[col] = lbl.transform(list(df[col].values.astype('str')))
-
现在,类别列已经转换完成,我们将继续将数值列转换为浮动类型,以满足 LightGBM 的要求。
接下来是我们将要处理的列:
num_cols = ['totals.hits',
'totals.pageviews',
'visitNumber',
'totals.bounces',
'totals.newVisits']
-
下一步,我们使用
astype
pandas 方法将这些数据类型转换为浮动类型:for col in num_cols:
print(col)
df[col] = df[col].astype(float)
-
现在,我们可以根据时间将训练数据集划分为开发集(
dev
)和验证集(val
):import datetime
dev_df = df[df['date']<='2017-05-31']
val_df = df[df['date']>'2017-05-31']
-
对收入变量应用对数变换:
dev_y = np.log1p(dev_df["totals.transactionRevenue"].values)
val_y = np.log1p(val_df["totals.transactionRevenue"].values)
-
接下来,我们将类别列和数值列进行连接:
dev_X = dev_df[cat_cols + num_cols]
val_X = val_df[cat_cols + num_cols]
开发数据框的最终形状如下所示:
dev_df.shape
>>> (237158, 20)
验证数据框的最终形状如下所示:
val_df.shape
>>> (45820, 20)
为了预测每个用户的 CLV,我们将使用之前指定的 LightGBM 回归模型。该算法是表现最好的算法之一,且它是一种决策树算法。
决策树是一种监督学习工具,可以根据过去对查询的回答来分类或预测数据。监督学习的一个例子是决策树模型,它在具有所需类别的数据集上进行训练和测试。决策树用于分类和回归应用,是一种非参数方法。它的结构是层次化的,包含根节点、分支、内部节点和叶节点。
LightGBM 是一种基于决策树的梯度提升算法,它在提高模型性能的同时,使用更少的内存。LightGBM
是一个 Python 中的开源梯度提升实现,旨在与现有的实现一样有效,甚至更高效。这个软件库、机器学习方法和开源项目统称为 LightGBM。
LightGBM 的优点包括更快的训练速度和更高的效率:LightGBM 采用基于直方图的方法,通过将连续特征值分到离散的区间中,从而加速训练过程。这种技术还将连续值转化为离散区间,减少了内存的使用。
-
为了简化训练流程,我们将实现一个自定义函数来运行 LightGBM 模型。此函数具有预定义的参数,我们可以根据获得的性能进行调整。这些参数作为字典传递,文档中可以进一步介绍它们:
def run_lgb(train_X, train_y, val_X, val_y):
params = {
"objective" : "regression",
"metric" : "rmse",
"num_leaves" : 50,
"learning_rate" : 0.1,
"bagging_fraction" : 0.7,
"feature_fraction" : 0.5,
"bagging_frequency" : 5,
"verbosity" : -1
}
lg_train = lgb.Dataset(train_X, label=train_y)
lg_val = lgb.Dataset(val_X, label=val_y)
model = lgb.train(params, lg_train , 1000,
valid_sets=[lg_val ], early_stopping_rounds=100,
verbose_eval=100)
pred_val_y = model.predict(val_X,
num_iteration=model.best_iteration)
return model, pred_val_y
在这里,函数使用Dataset
方法加载训练和开发数据集,并在 1,000 步中使用指定的参数训练模型。开发数据集用于验证,因为它能提供有关模型整体表现的信息。
-
现在,我们可以开始训练模型:
model, pred_val = run_lgb(dev_X, dev_y, val_X, val_y)
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_10_16.jpg
图 10.16:每用户收入的 RMSE 值
结果显示,模型的表现可以得到提升,这需要我们微调参数,直到达到一个在我们置信区间内的表现水平。
总结
网络分析使我们能够优化在线销售的产品和服务的表现。通过深入了解客户及其消费模式,我们能够改进与客户的沟通方式。 在本章中,我们深入了解了这些数据,并探讨了如何使用这些数据来确定客户的客户生命周期价值(CLV)、了解其特征以及识别关键指标,从而制定成功的数字营销计划。
下一章将探讨几位行业专家在如何将数据、机器学习和商业智能(BI)应用于现实商业场景以改善运营方面的考虑。
第十一章:在商业中创建数据驱动文化
将组织转型为数据驱动型不仅仅需要可以实施的解决方案来解决特定问题。从那些已经走过这条路径、并通过使用数据使组织更高效、更成功的人身上,我们可以学到很多。在本章中,我们将深入了解数据领导者的经验,并学习以下内容:
-
他们是如何开始自己的数据职业生涯的
-
成为成功的数据领导者所需掌握的技能
-
技术和数据的意义以及它们在商业环境中的应用
-
如何在组织中实施数据驱动文化
希望他们的经验能够指导你成为数据领导者的转型,同时推动组织转型,成为数据驱动型企业。
将分享他们观点的受邀领导者包括:
- 帕特里克·克林克:ONBRDNG 的总经理和创始人,这是一家帮助公司进行数字化转型的荷兰公司,他是一位经验丰富的数据领导者和先驱。帕特里克的经验使他成为荷兰市场和国际市场上最受欢迎的数字转型和增长专家之一,因为他帮助公司从传统企业转型为全面数字化公司:
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_11_1.jpg
在 ONBRDNG 之前,帕特里克曾是 RTL 的产品和技术总监,并且是广播、内容和数字领域的国际领导者,涉及 60 个电视频道。他还曾为多个公司提供支持,担任产品/数据/技术主管或 CTO。帕特里克还担任多个规模化企业的监事会成员,并为这些公司提供风险投资。
- 迈克尔·库里:他是一位总经理、首席产品官、战略领导者以及品牌和产品讲述者。凭借 30 年的企业间商业软件各个方面的经验,他是技术产品专家,拥有产品管理、市场营销、开发、实施和销售方面的技能和经验。此外,他还是金融服务和医疗保健行业的专家,并且是一位成功的演讲者,曾在哈佛大学和宾夕法尼亚州立大学担任客座讲师:
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_11_2.jpg
迈克尔在 IBM 工作了 17 年,曾担任 IBM Watson Health 的副总裁。他领导了 Watson Health 业务向 Francisco Partners 的出售,帮助将 30 多个产品简化为六个主要产品领域,并在单一开发领导者下重组开发,减少了开发运行成本和 SaaS 运营成本,幅度达到两位数。他还领导了向公共云的转型,将 EBITDA 提高了三位数,同时改善了 NP,并领导了 Watson Health 业务的出售。
- 弗洛里安·普雷姆:拥有超过 20 年的数据和分析经验,弗洛里安是瑞士苏黎世德勤技术的首席数据官(CDO):
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_11_3.jpg
Florian 是德勤技术领导团队的一员,担任首任 CDO。德勤技术是德勤咨询的部门,是一个全球一体化的技术组织,覆盖 85 个以上的国家,拥有超过 10,000 名专业人员。
在成为全球 CDO 之前,Florian 曾担任德勤瑞士首席数据官(CDO),负责数据战略、治理、风险与安全、数据管理、数据分析与 AI、自动化、协作以及文档和记录管理平台。
- Micaela Kulesz:一位行为数据科学家,拥有 AI、实验经济学和消费者行为的经验。她是数据科学的负责人,是数据与创新领域的领导者,也是机器学习工程师(在 AI 团队中)。目前,她是数据与创新领域的首席数据科学家,专注于零售技术,为零售行业开发解决方案:
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_11_4.jpg
她拥有布宜诺斯艾利斯大学的经济学背景,随后在不来梅大学获得了实验经济学、行为经济学、应用博弈论和实验计量学的博士学位。此后,她曾在瑞典农业科学大学担任研究员,之后转型为数据科学家。
她选择与诚实、直接和善良的人合作,并且将数据科学视为一种伪艺术,涉及与同事以及所有人进行创意对话。
- Jack Godau:数据领袖,目前是德国柏林 Doctorly 公司的首席技术官(CTO)。他喜欢谈论创业公司、医疗保健、招聘、未来的工作以及数字化转型:
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_11_5.jpg
Jack 是一位富有同理心、合作精神和热情的领导者,他在作为技术专家的基础上,具备强大的销售技能,建立了坚实的职业生涯。他与各种类型和规模的组织合作,通过提供技术和战略领导、指导和培训,帮助他们管理数字化转型。Jack 在团队建设方面非常熟练,致力于培养包容性文化,帮助本地和远程团队取得成功,且他在国际层面成功建立并发展了战略合作伙伴关系。
- Julio Rodriguez Martino:一位充满活力的领导者,拥有超过 15 年的经验,致力于建立、发展和领导高绩效的全球多元化团队。Julio 是一名分析师/数据科学家/机器学习/人工智能专家,具备团队管理技能和经验,同时也是一位作家和导师:
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_11_6.jpg
Julio 凭借扎实的物理学教育背景解决了过于复杂的问题,从而开发出创新解决方案。他在各种功能领域,包括分析、人工智能、机器学习、数据科学和工程方面都是团队领导者。Julio 是一个引人入胜的沟通者,精通与关键利益相关者互动,将业务需求转化为技术需求,并作为技术专家为高级管理层提供建议。他具备推动创新和跨功能内部部门知识共享的强大能力,Julio 是一个终身学习者,对研究和开发充满激情,并且始终保持对人工智能和机器学习领域最新发展的关注。
- Agustina Garcia Hernandez:安海斯-布希英博集团的数据与战略总监。她是一位经济学家和分析先锋,具备出色的战略思维模式,将商业和技术数据紧密结合。她专注于赋权来自不同文化和背景的团队,以实现共同富裕的影响结果。她在跨国公司中开发了深厚的管理和指导专业知识,领导本地及国际项目,形成了扎实的项目管理专长,为她的管理职业生涯增添了不少价值。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_11_7.jpg
Agustina 利用她将商业知识和数据结合的关键优势;她在带领团队、领导项目和获得综合结果方面有丰富经验。她专注于在不失大局的情况下创造机会,富有同理心,理解需求并将其转化为解决方案。她通过富有吸引力的口头和图形展示桥接团队和利益相关者,激发行动和结果。她的流程将直觉性的商业知识与基于数据的洞察力对齐,以改进决策过程,同时连接不同领域专家的各个方面,将复杂性转化为简单且可执行的答案。Agustina 利用不同的方法论,如焦点小组、民意调查、分割和机器学习/人工智能,提出优化使用多种学科的业务解决方案。
- Bob Wuisman:拥有人力资源和商业背景的 Bob,利用他在业务流程方面的经验,成为了荷兰乌得勒支 Ebiquity 数字创新中心的数据运营总监。
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_11_8.jpg
建立在他作为业务流程顾问多年经验的基础上,Bob 成功在不同企业建立了商业智能环境。凭借全局视野和流程驱动的思维模式,Bob 擅长团队建设和可持续发展的数据驱动运营,具备专业的人力资源、流程和项目管理技能和经验。
- 温·范·德·梅尔:温专注于可持续发展和水资源管理,他是荷兰阿珀尔多恩瓦特谢普·法莱与费卢韦的首席数据官(CDO):
https://github.com/OpenDocCN/freelearn-ds-pt4-zh/raw/master/docs/art-dtdvn-biz/img/B19026_11_9.jpg
温曾是瓦特谢普·法莱与费卢韦的数字化转型项目经理,负责开发数据驱动的网络组织。作为项目领导者,温监督了《环境法》许可的实施、监督和执行工作,并曾担任水务检查员。他的背景涵盖水资源管理、法律和敏捷组织。
让我们从这些领袖们的路径开始,看看他们是如何开始从事数据工作的。
开始与数据打交道
开始成为数据领袖的旅程需要提升你的技能,涵盖一些能力,这些能力不仅让你理解描述性可视化、基础统计概念,以及技术和数据概念,还能培养出领导团队和理解业务需求的能力。
本节内容是我们询问数据领袖们关于成为成功的数据领袖需要哪些技能和能力时得到的答案。
胡里奥·罗德里格斯·马蒂诺
- 你是如何进入数据科学和工程领域的?
我拥有科学学位,并将我的科研生涯专注于实验物理学。拥有数据分析、统计学和问题解决经验,使得在转向行业时,数据科学成为了一个自然的选择。
- 为了达到这个目标,你在哪些领域需要付出最多的努力?
机器学习和 Python。我在这两者上的经验都很少。
- 如果你重新开始成为数据领袖的旅程,你会如何应对?
我不会改变任何一件事。
迈克尔·库里
- 你能告诉我们为什么你对数据工作产生了兴趣吗?
在我职业生涯初期,我在一家数据集成公司担任产品角色。在这个角色中,我亲眼见证了数据战略对企业的巨大影响。那些在数据集成、整理和分析方面表现卓越的公司,往往是市场表现最好的公司。它们在服务客户、销售、产品开发和投资管理方面都表现得更好。从这段经历中,我意识到数据将成为我职业生涯中每一步的关键工具。
- 你为了成为数据领袖,必须发展哪些技能?
数据目录整理和策划、数据分析、数据可视化和数据治理。
- 商业决策者和分析师如何为使用数据科学和分析做好准备?
企业决策者需要定义那些能带来最大数据回报的问题领域。哪些特定的见解能最大程度地影响业务?是帮助你的销售团队更好地定位新客户,还是优化产品开发流程?有哪些数据盲点可以消除,从而帮助改善决策和运营?这些都是企业决策者需要回答的问题,只有这样,他们才能定义他们希望达成的成果。
米凯拉·库莱兹
- 你是如何进入数据科学和工程领域的?
我的背景是应用定量方法,拥有经济学博士学位。进入数据科学领域,再到数据工程领域,推动创新是一个自然的步骤。
- 能告诉我们为什么你对从事数据工作产生兴趣吗?
数据是事实。松散的解释是可行的,但不可扩展的。“事实是什么?”是我们首先要问自己的问题。只有在此之后,才是我们从事实中读取到的信息。这是推动繁荣社会的普遍态度。
数据中藏有文字,你可以挖掘它们,只要时间允许。数据就是魔法。
- 成为数据领导者,你需要发展哪些技能?
投入和自律是成为专家的关键。然而,要成为一名领导者,我还必须发展耐心和专注力。数据团队需要目标,就像任何团队一样。然而,随着数据量的增加,很容易迷失其中:领导者需要确保在每个时刻都保持专注。
- 你在哪些领域最需要努力,才能到达今天的位置?
我会说我的“多用途”编程技能。我能很好地使用 R、STATA 和 bash(sh,zsh)编程,但为了在数据科学领域成长,多用途语言有着巨大的帮助。它有助于与其他团队和背景的人沟通,但最重要的是,它让我们的想法随着这个领域一起成长。
- 企业决策者和分析师如何准备好使用数据科学和分析?
一旦讨论开始接触数据——即事实——创新的想法便会随之而来,变化也将一点一点地开始。这是最好的准备:讨论和倾听。
- 如果你重新开始你的数据领导者之旅,你会如何应对?
我会更多地参与聚会和黑客马拉松。
鲍勃·维斯曼
- 你是如何进入数据科学和工程领域的?
我擅长 Excel,作为一名业务分析师,我参与了一个新的 CRM 系统(Microsoft Dynamics AX)实施项目。没有人想到要构建跟踪操作的报告。我举起了手,指出了这个程序中的缺失部分,并接手了这个项目。一个月后,我意识到我不知道自己报名参与的是什么,但我喜欢它,并开始在 Google 上查找 SQL 服务器是什么。
- 你在哪些领域最需要努力,才能到达今天的位置?
学习 SQL Server、QlikView、数据仓库概念、ETL 以及数据的一般知识。一切与技术和数据相关的内容。
- 如果你重新开始成为数据领袖的旅程,你会如何应对?
从领域的角度来看——如果你的角色是从数据中提取业务价值。
- 能告诉我们为什么你开始对数据工作产生兴趣吗?
从数据中获得的洞察让我能够清晰地了解那些过于复杂的课题,例如从第一杯咖啡到发票的端到端供应链。
- 成为数据领袖,你需要培养哪些技能?
主要是技术技能和概念,因为我已经在业务流程、文化、架构等方面有了强大的组织背景。我学习了 SQL 来提取数据、转化数据,并将其加载到数据库中,还能进行查询和数据合并。数据建模帮助我学习了如何将数据进行关联,并为我提供了数据可视化工具,如 QlikView 和 PowerBI。Python 的基础知识,现如今主要使用的语言,以及理解每个决策和代码对下游步骤的全面影响也有所帮助。
- 企业决策者和分析师如何为使用数据科学和分析做好准备?
它本身不是一个目标。首先要弄清楚你为什么要使用数据科学和分析,以及它将为你带来什么。拥有数据科学并不是成功的捷径。
Wim Van Der
- 能告诉我们为什么你开始对数据工作产生兴趣吗?
作为一个在水域领域的政府组织,我们在气候变化和水质问题上面临巨大挑战,特别是在荷兰这样的国家,我们生活在海平面以下三分之一的地方。我们需要数据和技术来帮助我们理解这些复杂性,并为未来的解决方案建模。
- 成为数据领袖,你需要培养哪些技能?
基本的技术知识。变更管理。伦理学。该做和不该做的事。
- 企业决策者和分析师如何为使用数据科学和分析做好准备?
开始培训那些了解你业务的人,并让他们意识到数据和技术的可能性。从那里开始扩展,例如,建立 DevOps 团队。
Florian Prem
- 能告诉我们为什么你开始对数据工作产生兴趣吗?
这是解决业务问题、获得洞察和找到根本原因的最佳方法,在我的职业工作中尤其如此。
- 你是如何进入数据科学和工程领域的?
通过应用跨领域的实践知识(例如,在金融领域 20 多年前就开始做分析),结合法学、信息技术和管理的合规/治理背景,以及完成一系列数字化转型、人工智能/机器学习、数据管理和 IT 现代化项目。
- 为了达到这个目标,你在哪些领域需要投入最多精力?
我必须不断努力,保持技术和法规方面的最新知识。
- 成为数据领袖,你需要培养哪些技能?
数据治理、合规性、法规知识;数据管理和分析/人工智能与机器学习/技术技能;项目、产品和变革管理技能,以及软技能。
- 企业决策者和分析师如何为使用数据科学和分析做好准备?
变得更加精通技术,了解数据/在运营、决策、产品和流程中使用数据的重要性。
今天的数据领导者大多数都是从不同的职位转型而来,这些职位不仅要求他们创建收集和展示数据的系统,还需要管理高度专业化的数据团队。从他们的回答中,我们可以看到每位领导者在成为领导者的过程中,如何重塑自己并学会所需的技能,以在这些领导职位上蓬勃发展。
在接下来的部分,我们将听取他们对当前组织中如何利用数据以及他们关注的重点的看法。
在组织中使用数据
每位受访的领导者目前都担任着需要将其组织转型为数据驱动型公司或提升现有数据价值提取方式的职位。
让我们来看看他们对公司和组织中当前数据状态的看法。
弗洛里安·普雷姆
- 公司如何利用数据来改善运营?
在他们的业务和运营模式中,围绕客户、运营和员工的端到端关注,但大多数仍然只是孤立的。
- 对公司而言,成为数据驱动型公司有多重要?
今天很重要;明天,它将成为生死存亡的话题。
- 企业通过存储大量数据能获得什么好处?
存储大量数据本身没有直接的好处。价值只来自于能够转化为资产的洞察和背景。
- 根据你的经验,企业是否意识到并愿意探索数据的新用途?
有些已经开始了,大多数则刚刚起步——这些领导者已将其商业和运营模式围绕数据构建。
- 公司需要什么基础设施?
除了这一个答案:不要从基础设施/技术入手——技术是由商业需求来定义的,别无他法。
- 哪些业务领域更需要处理大量数据?
这取决于你的行业——运营、财务以及客户/产品。
- 这个数据需要多频繁更新?
这取决于数据和你想要实现的洞察/使用场景——从实时到每天/每周/每月/每年,或者按具体案例(例如地址变更)。
米凯拉·库雷兹
- 企业通过存储大量数据能获得什么好处?
到目前为止,这仅仅是一个当前的成本和潜在的收益。不幸的是,数据科学资源非常稀缺,而且该领域的进展主要由非结构化数据驱动,这反过来又吸引了那里仅有的少数资源。
- 根据你的经验,企业是否意识到并愿意探索数据的新用途?
还不足以推动持续的变革。
- 企业如何应对建立数据团队和维护复杂基础设施的挑战?
这取决于公司的规模和关注点。
- 企业需要什么基础设施?
这取决于规模和行业。
- 哪些业务领域更需要处理大量数据?
他们都需要这样做;始终如此。
- 这些数据需要更新的频率是怎样的?
这取决于他们如何使用它。
- 这些公司中的哪些领域可以从使用数据科学和工程中受益最多?
创新和发现。这个领域可以与公司的其他部分并行运作。一个蓝绿开发,专注于提升数据驱动的文化。
- 在经济收缩的背景下,如何利用数据推动收入增长?
提高盈利能力的利润率。同时,不需要太多努力来维持甚至增加利润。在危机时期,我们需要在限制范围内工作。在这里,数据是关键。
- 在供应链成本上升的背景下,如何利用数据来降低运营成本?
我希望提高当前模型的性能。但要构建新的模型,我认为数据量并不是必须的。
- 企业如何利用数据来改善运营?
他们开始尝试一些小型产品,以改善用户体验。
- 对企业来说,成为数据驱动型企业有多重要?
关键。我认为这将决定他们在未来 5 年中的市场地位。
- 企业如何利用数据来了解客户的行为模式?
A/B 测试非常普及,是接近行为的主要工具。然而,正如我之前提到的,结构化数据仍有很大的改进空间。
Wim Van Der
- 企业如何利用数据来改善运营?
在这个阶段,主要是提高流程效率、减少能源使用、获取更好的输出、开发新软件并创建气候情景模型。
- 对企业来说,成为数据驱动型企业有多重要?
不是。保持以人为本很重要,但人类需要学习如何利用数据来帮助自己。
Julio Rodriguez Martino
- 企业存储大量数据能带来什么好处?
质量比数量更重要。大量无用的数据不会帮助解决任何问题。
- 根据你的经验,企业是否意识到并愿意探索数据的新用途?
他们是有意识的并且愿意尝试,但并非总能做到。企业通常需要帮助才能开始。
- 企业如何应对建立数据团队和维护复杂基础设施的挑战?
我见过各种各样处理数据团队的方法。许多年前,企业雇佣数据科学家时并不知道他们的价值。后来,他们意识到雇佣第三方团队做具体项目更容易。当明确知道创建的知识没有被保留在公司时,转向了混合模式:公司内部的小团队得到外部专业人士的帮助。
- 公司需要什么样的基础设施?
拥有云计算的访问权限,我认为在大多数情况下不需要特定的基础设施。
- 哪些业务领域通常需要处理大量数据?
任何处理事务性数据的业务单元。其他领域通常管理较少的数据。
- 这些数据需要多频繁地更新?
这取决于分析的类型。在某些情况下,更新频率会很低;在其他情况下,可能需要几乎实时的更新频率。
Michael Curry
- 公司如何利用数据改善运营?
我见过数据在各个方面的运营管理中得到了有效应用。在我的职业生涯中,我通过数据推动了转型,找出了最需要改进的领域。我还通过数据发现了新市场或现有客户群体中的新机会。我还使用数据预测了哪些产品在未来可能会看到需求的增长。
- 公司变得数据驱动有多重要?
一个组织越是数据驱动,它通常就越成功。这是经过一项又一项研究验证的直线关系。与其依赖假设和直觉,不如依赖数据,因为这样通常会导致时间和金钱的浪费。今天,凭借机器学习的强大能力,我们能够比以往更好地利用数据。那些始终走在投资前沿的公司,将超越其同行。
- 在商业中创建数据驱动文化的主要挑战是什么?
数据的获取具有挑战性,且通常存在质量或时效性问题。此外,人们常常难以理解他们在数据中看到的内容。因此,基于假设和直觉做决策往往更加容易。例如,与客户的最后一次对话,往往会过度影响许多决策。创建一种文化,使得决策时默认依赖于深入分析数据,需要着重确保必要的数据可用、易于理解且值得信赖。这些都需要巨大的投资,而许多公司并不愿意做出这样的投资。
- 数字化公司从一开始就将数据分析和机器学习嵌入到其业务核心中。更传统的公司在这些技术在日常运营中的应用上是否滞后?
当然,有些公司是这样的。然而,即便是传统公司也在数据、分析和机器学习方面进行了大量投资。纯数字化公司在这一点上有优势,因为它们的整个供应链通常都是数字化的,这使得获取决策所需的数据变得更容易,但传统公司通常拥有更多直接相关的数据、更大的现有客户基础和更多的历史数据,因此,在数据分析和人工智能方面的有效投资有时能带来更好的结果。问题在于,传统公司是否能够克服文化惯性,转型为数据驱动型公司。
- 这些公司在哪些领域可以最大程度地受益于数据科学和工程的应用?
没有任何领域是无法从数据科学和工程中受益的。然而,最显著的进展发生在企业的市场营销和销售方面。利用分析理解客户行为并更好地为客户提供精准的优惠已经变得非常普遍。近期的许多数据科学投资更多集中在企业的生产领域,这可能带来更大的回报——帮助制药公司加速药物发现,帮助农业公司提高作物产量,帮助化工公司更快速地生产新型化合物。利用数据减少长时间、昂贵的投资并提高产量,具有显著提升各行各业生产力的潜力。
Bob Wuisman
- 企业通过存储大量数据能获得什么好处?
没有。它只会花费资金,关键在于公司的质量和价值。
- 根据你的经验,企业是否意识到并愿意探索数据的新用途?
是的,但当你通过数据分析将实际结果透明化,并指出某人过度美化了结果时,往往会出现政治上的复杂问题。这种情况无论内部还是外部都会发生。
- 公司需要什么样的基础设施?
精英和高效团队都使用云端或多个云平台;可以查看谷歌进行的 Dora 研究。
- 哪些业务领域通常需要处理大量数据?
所有具有数据流组件的行业。
- 这个数据需要多频繁更新一次?
这一点没有普遍规则可适用。有时是每纳秒更新一次;有时是一年更新一次。
Jack Godau
- 企业通过存储大量数据能获得什么好处?
我的思路与你稍微不同。它始于愿景、组织目标以及在这些方面的强大共识。只有当这些存在时,才应该开始努力确定做出决策所需的信息,之后再去发现数据源并提取所需的信息。
我会用采矿来做类比(不是数据,而是挖掘地下的东西)。我们并不是简单地砍伐森林和挖掘整个山脉去“看看能找到什么”。我们会专门提取最低成本和最少努力下需要的资源——这是“数据团队”经常忽视的,所以就会投入大量精力去“让我们保留一切”,“让我们做一些分析,看看它告诉我们什么。”从商业角度看,这样是没有用的,也不可行。
只有有目的地使用数据,才能获得益处。囤积数据——特别是那些没有价值的数据——可能是一个代价高昂的错误。
数据不应与信息混淆。
你需要真正清楚你在组织中追求的目标,然后确定你需要的信息;接着,你可以确定这些信息的数据来源。当然,这比“聘请一个数据团队让他们自己解决”要难得多。
现在我们已经了解了团队在公司内实施成功的数据驱动策略的工作方式,在接下来的部分,我们将重点讨论为什么这些公司认为实施成功的数据策略具有重要意义。
数据驱动的好处
将组织转型为数据驱动型组织并非易事。这需要明确我们想要实现的目标,因为这种转型需要大量资源,并且在改变现有流程以利用数据做出明智决策时,会带来很多不便。
Wim Van Der
- 这些公司中,哪些领域最能从数据科学和工程的应用中受益?
这取决于公司及其身份;我认为没有一种适用于所有公司的解决方案。
- 数据如何在经济收缩的背景下推动收入增长?
经济收入不再应该是公司发展的核心驱动力。更广泛的价值才是。所以,不要只盯着巨额的经济收入;也要看一下生态收入。
- 数据如何在供应链成本上升的背景下帮助减少运营成本?
从一个 DevOps 团队开始,分析你的业务流程,并给他们一个开放的任务,提升效率。
- 公司如何利用数据来理解客户的行为模式?
流程挖掘仍然是成功制定客户旅程的有效工具。
迈克尔·库里
- 数据如何在经济收缩的背景下推动收入增长?
即便在市场放缓的情况下,企业、政府和个人依然在花费资金。数据是揭示这些资金流向和原因的秘密,这样企业可以更有效地争取这些资金。例如,了解在经济形势变化时,优先级如何变化,是数据可以揭示的内容。数据还可以用来帮助调整定价和包装,以优化买方需求的变化。
- 数据如何在供应链成本上升的背景下帮助减少运营成本?
优化供应链一直是数据分析的重点。更好的需求预测和更合理的资源分配可以在不牺牲收入的情况下帮助最小化成本。
- 企业如何利用数据来理解客户的行为模式?
客户行为分析是过去十年中公司进行的最大投资之一。这一进程因人们在数字环境中留下的自然数据足迹而加速。这些数据足迹能比纯粹的模拟环境中获得的洞察力更深刻地理解个体的行为和动机。因此,数字追踪变得无处不在(同时也带来了反对声)。例如,家庭保险公司希望知道人们何时可能在新的邮政编码区寻找房屋,以便将相关优惠推送给他们。
- 更传统的公司习惯将市场研究外包给咨询公司。社交媒体、网站分析和搜索引擎数据的使用是否正在取代这些方法?
在很大程度上,这正变得越来越真实。曾经只有少数非常熟练的数据分析师才能使用的工具(因此集中在咨询公司手中)现在已经更加普及,更多的人能够使用。此外,数据分析已成为一种更为普遍的技能,越来越多的商业人士正在学习,而用于丰富内部数据的外部数据如今对于甚至是普通的商业分析师也变得更加可访问。因此,对昂贵外部顾问的依赖已被减少。
杰克·戈道
- 根据您的经验,企业是否意识到并愿意探索数据的新用途?
不。
- 企业成为数据驱动型公司有多重要?
零百分比——我们需要数据来做决策,但企业必须主导愿景和战略。单纯依靠数据并“自下而上”来做决策并不可行。的确,亚马逊利用其数据帮助销售更多产品——但它的愿景是成为最好的在线商店。数据使这一目标成为可能,但单靠数据并不足以实现这一目标。战略和愿景必须先行,并且必须得到清晰的阐述。
鲍勃·维斯曼
- 企业如何应对创建数据团队和维护复杂基础设施的复杂性?
这在很大程度上取决于 C 级领导的数字化素养和公司文化。企业向数据驱动型组织转型所做的尝试次数也非常重要。在第一次尝试时,企业拥有比后续尝试更多的自由度和责任委托。
弗洛里安·普雷姆
- 这些公司在哪些领域最能从数据科学和工程的应用中受益?
客户、员工和产品——每个公司都有不同的痛点和需求。
- 在经济收缩的背景下,数据如何推动收入增长?
超越竞争对手,了解客户,实施成本节约。
- 在供应链成本上升的背景下,如何利用数据减少运营成本?
这取决于你的行业和供应链——没有单一的答案。
- 公司如何利用数据来了解客户的行为模式?
我认为最好的方式是数据驱动的端到端客户旅程。
现在我们有了一个视角,了解这些领导者认为组织如何通过实施数据驱动的策略受益。在接下来的部分,我们将深入探讨这些转型所面临的挑战。
数据驱动战略的挑战
我们没有现成的策略可以实施来推动公司进行数据驱动的转型,因此这些策略需要根据组织的需求量身定制。
我们询问了数据领导者,在将这些组织转型为快速发展的数据驱动公司时,他们通常面临哪些挑战。
Bob Wuisman
- 创建数据驱动文化在商业中面临的主要挑战是什么?
70%的时间,这样的尝试都会失败。文化和政治,部门之间的隔阂,不愿意合作的部门文化,权力导向的文化,技术的不足,数据质量得不到保障,技术过于集中而非组织绩效导向。
项目由 CIO、CTO 或 CFO 领导。CDO 或类似职位应该领导并向 CEO 或 COO 汇报。
- 创建数据驱动文化在商业中面临的主要技术挑战是什么?
成为稳定、可靠和值得信赖的。兑现你的承诺,并指出必要投资的优势。
Florian Prem
- 公司如何应对创建数据团队和维护复杂基础设施的复杂性?
做得不好——他们最好雇佣并授权一位懂技术和商业的 CDO,并在高层支持下启动数字化转型项目。
商业决策者如何与高度专业化的数据团队合作,以满足公司的需求?
将数据团队整合成 CDO/公司数据办公室,让 CDO 及其团队领导处理——这需要比数据团队通常所需的不同技能。
- 创建数据驱动文化在商业中面临的主要挑战是什么?
政治、人员、流程和解决方案,以及缺乏高层支持/推动。
- 创建数据驱动文化在商业中面临的主要技术挑战是什么?
人员,但也包括现有的解决方案/技术负债/孤岛。
- 数字化公司从一开始就将数据分析和机器学习作为其业务的核心。传统公司在日常运营中采纳这些技术是否滞后?
是的,数据必须融入其运营和商业模式中。
- 传统公司习惯于将市场调研外包给咨询公司。社交媒体、网页分析和搜索引擎数据是否正在取代这些方法?
不过,端到端的分析平台可能很快会使这一过程变得更容易——但你仍然需要具备理解数据和市场洞察等方面的能力与工具。
温·范·德尔
- 在企业中建立数据驱动文化的主要挑战是什么?
从底层开始,创造小的成功。让人们讲述他们的成功故事。不要从最新的技术开始;人们首先需要学习并调整心态。
- 数字化公司从一开始就将数据分析和机器学习嵌入其业务核心。更传统的公司在日常运营中是否落后于这些技术的应用?
问题依然存在:你的企业价值观是什么,你所追求的身份是什么?然后,从技术入手。那些现在看似领先的公司,可能很快就会落后——不是在技术层面,而是在伦理层面。
杰克·戈道
- 在企业中建立数据驱动文化的主要技术挑战是什么?
这个问题是错的——现实世界中没有人真正想要一个数据驱动的文化。这里正是数据与商业之间存在巨大不对称的地方。以医疗保健为例——数据挖掘正确的信息可以为病人的治疗带来巨大的好处。但在现实世界中,每个人都明白,组织的焦点应该是治疗病人,而不是拥有数据。使数据中的信息更容易获取和呈现以便于治疗是件好事,但这并不是数据驱动的文化。
米凯拉·库莱斯
- 在企业中建立数据驱动文化的主要技术挑战是什么?
大型公司需要流程,而流程需要时间来在规模上落地。小型公司更灵活,但也缺乏预算来投资创新技术。确实是个挑战!但总的来说,答案是“人”。
- 在企业中建立数据驱动文化的主要挑战是什么?
员工害怕失去工作,自动化威胁着人权,算法公平性挑战了人类权益,公司则担心失去对数据使用的控制权。恐惧无处不在。让公司更积极地采取数据驱动行动将有助于克服这种恐惧。
- 数字化公司从一开始就将数据分析和机器学习嵌入其业务核心。更传统的公司在日常运营中是否落后于这些技术的应用?
较大的非数字化公司是最滞后的。 一方面,它们的规模使得变革本身就复杂。另一方面,直到现在,数据有着特定的用途和目标,这些目标和意义正开始受到挑战。
- 更传统的公司习惯将市场研究外包给咨询公司。社交媒体、网页分析和搜索引擎数据是否正在取代这些方法?
我不这么认为:它们增加了竞争格局,迫使公司进行创新。
胡里奥·罗德里格斯·马蒂诺
- 企业需要什么样的基础设施?
获取云计算资源。大多数情况下,我认为没有必要为此提供特定的基础设施。
- 创建以数据为驱动的商业文化的主要技术挑战是什么?
我认为挑战不在于技术。最重要的挑战是改变整个组织对数据的看法。极其重要的是向每个人展示数据的价值,让他们明白生成高质量数据并确保其安全是多么重要。
对我们在推动数据倡议时可能面临的挑战有一个清晰的愿景,帮助我们制定能够促进数据战略采纳和持续执行的策略。
在接下来的部分,我们的问题将集中在如何创建能够支持组织转型的数据团队。
创建高效的数据团队
数据倡议需要实施具备专业技能的数据团队,并且需要采取跨学科的方法,因为支持数据战略的技术位于商业战略之上。
我们向数据领导者询问了他们对数据团队的看法;以下是他们的回答。
Florian Prem
- 一个优秀的数据团队应该是什么样的?
这取决于首席数据官(CDO)的职责范围。我通常会组织为治理、数据分析和数据价值创造/产品三个部分。然后,我会为敏捷产品交付组建跨领域的团队(IT、业务和数据)。
- 领导数据团队时需要考虑哪些最重要的议题?
了解你的团队,了解你的业务,了解你的技术。
- 商业决策者与高度专业化的数据团队合作的最佳实践是什么?
请参阅我之前所说的,雇佣一位既懂技术又懂业务的 CDO,并建立跨企业的/多个相互关联的数据办公室。
Michael Curry
- 商业决策者与高度专业化的数据团队合作的最佳实践是什么?
最重要的最佳实践是建立一个数据组织。这个组织的目标应该是定义并执行整个业务的数据整理流程,将数据与业务需求对齐,并管理数据的使用方式。
Micaela Kulesz
- 一个优秀的数据团队应该是什么样的?
三到四名成员:一位数据科学家负责人、一位初级/中级数据科学家、一位来自 IT 背景的数据工程师,以及如果可能的话,加入一位产品经理。这样的团队组成非常有活力,能够解决许多——如果不是大多数——业务问题。我认为需要强调的是,至少有一位成员必须来自 IT 背景,另一个来自业务背景。
- 领导数据团队时需要考虑哪些最重要的议题?
-
确保团队内部的活力。
-
理解是一种特权。团队大约 15%的时间用于研究最新的发展,且大多数由初级/中级人员执行。
-
高级人员负责为项目提供明确的背景,他们必须具备编码能力。
-
花时间讨论并明确待解决的问题,不要偏离它。
- 商业决策者与高度专业化的数据团队合作,服务公司需求的最佳方式是什么?
商业决策者有一个明显明确的关注点和优化功能。在这里,数据团队可以为业务提供数据服务,帮助他们增加关注点,或者没有。如果有,他们就会成为公司的一项操作性服务,失去独立性。然而,由于数据团队还比较新,因此也在公司中寻找自身的定位,把自己定位为“数据操作员”或“数据提供者”并不是他们所期望的。如果他们接受自己是“数据服务员”,我认为最理想的方式是,商业方花时间将问题和痛点讲清楚,直到彻底明白,而数据团队则必须为这些痛点带来具体的解决方案。既不多也不少。
Bob Wuisman
- 一个好的数据团队是什么样子的?
一个好的数据团队是一个对公司战略有清晰视野,并知道如何快速做出贡献的团队。他们所做的每一件事都有明确的商业目标,即便是在基础设施层面。采用 DevOps 方法论是关键。
- 领导数据团队时最需要考虑的最重要的议题是什么?
拥有一个透明且有组织的待办事项清单,得到高级经理和高层执行人员的支持、认可和重视。确保工程师在工作中没有任何约束。理想情况下,他们应该能够在没有外部支持的情况下独立工作。需要庆祝成果,并将“错误”视为学习的机会。
- 商业决策者与高度专业化的数据团队合作的最佳实践是什么?
采用 DevOps 方法,并拥有清晰的战略、目标、关键绩效指标(KPI)、流程和 IT 系统,以捕捉正确的数据。熟悉数据概念,并深入了解商业管理。不要过度推销或提出过高要求。
Jack Godau
- 商业决策者与高度专业化的数据团队合作,服务公司需求的最佳方式是什么?
拥有清晰的愿景和需求,并将其传达给团队,确保他们理解组织目标。定期反馈,和团队一起了解他们的成果,并将这些成果与实际案例进行验证。之后,执行所有标准工作——经典的团队赋能、避免微观管理、提供良好的工具等。
Julio Rodriguez Martino
- 一个好的数据团队是什么样子的?
一个好的团队由来自不同背景的多种角色组成。团队成员应该渴望学习,并通过互相帮助来教学。
- 领导数据团队时最需要考虑的最重要的议题是什么?
以身作则。领导者必须亲自了解每个成员面临的挑战:学习新主题并与具有不同背景和经验的同事合作。领导者还应了解每个项目的细节,至少要掌握该主题的基本知识。
- 商业决策者与高度专业化的数据团队合作以满足公司需求的最佳方式是什么?
帮助识别可以通过数据解决的业务问题,并且能带来价值。此外,要准备好与数据团队合作,理解并解释分析结果。
温·范·德
- 商业决策者与高度专业化的数据团队合作的最佳实践是什么?
扩展现实、区块链和数字双胞胎,但这取决于具体的业务。然而,DevOps 团队在恰当的位置上是已知会取得成功的。
创建和支持高效的数据团队,以制定成功的数据战略,对组织至关重要,并且需要的不仅仅是硬技能。
在下一部分,我们将请数据领域的领导者分享他们对这些组织未来数据发展方向的看法。
未来数据的可视化
数据已经成为那些希望发掘业务价值潜力的公司的核心支柱,这也是现代技术将塑造组织未来的原因。
我们询问了数据领域的领导者他们对未来技术的看法。
迈克尔·库里
- 你认为哪些未来的技术将塑造在商业中使用数据的未来?
数据集成、数据质量和数据治理依然昂贵且过于依赖手工操作,然而它们仍然是公司无法充分利用数据的最大障碍。我预计在这些领域会有显著的进展,利用新的基于人工智能的方法来减少人工工作量。
弗洛里安·普雷姆
- 你认为哪些未来的技术将塑造在商业中使用数据的未来?
可解释的人工智能、设备对设备通信/物联网 -> 预测分析、自动化、端到端分析平台,以及新的自然语言处理和图像/视频处理模型——一旦这些技术作为产品和平台问世,它们将被更广泛地使用。
鲍勃·维斯曼
- 你认为哪些技术将塑造数据科学和工程的未来?
下一步将是量子计算。在那之前,已有更多、更快速的云平台出现,并提供更为细分的服务。
米凯拉·库勒兹
- 你认为哪些技术将塑造数据科学和工程的未来?
在数据科学中,这些技术与增加对大规模结构化数据的理解和建模密切相关。
在工程领域,这涉及到改进算法;我们已经知道如何执行快速而简单的任务。
胡里奥·罗德里格斯·马尔蒂诺
- 你认为哪些技术将塑造数据科学和工程的未来?
我猜无代码和 AutoML 技术将变得越来越流行。未来只有复杂的分析才需要编程。
塑造组织中数据的未来需要灵活应对新挑战和新技术的变化。希望我们数据领导者的视角能为你提供一些关于哪些技术将塑造数据未来的思路。
下一节将专门探讨那些在多个组织中致力于推动数字化和数据转型的领导者的经验。
实施数据驱动文化
数据已经在公司领导和经理的讨论桌上占据了核心地位。通过实施数据战略,提升运营绩效、以优化的方式与客户互动并寻找新的收入来源,这些都是值得追求的目标,但这些转型并非没有挑战。
在本节中,我们采访了数据领域的领导者 Patrick Flink,他的公司专注于将组织转型为数字化组织,以及 Agustina Hernandez,她曾为世界上一些最大型的公司从零开始建立全球数据团队。
Agustina Hernandez
Agustina 有计量经济学背景,曾担任计量经济模型师,并决定在职业生涯初期追随她的热情,即使这意味着薪水减少。她的其他兴趣是辅导和摄影。她曾参与多个项目,为顶级快速消费品公司创造洞察,并领导团队在品牌价值、媒体投资回报、产品组合等主题上创造洞察。她的主要关注点之一是深入理解客户需求,以实现业务收入和 EBITA 的目标。
在为多个客户账户工作后,她加入了一家顶级化妆品公司,担任全球数据分析负责人,并负责为该公司建立数据团队,提供数据驱动的解决方案,并在组织中创造一种更加专注于数据的文化变革。
她的领导策略可以看作是将所有不同领域和背景的数据团队利益相关者纳入讨论桌中。她促进团队内部的沟通,而不是强加某种特定的观点,更多的是通过了解客户需求来集中精力完成任务,确保团队拥有继续前进所需的所有资源,并专注于改善沟通。
她对数据团队的愿景是,它是一个负责改变现实的团队,企业可以通过理解创建数据驱动文化的必要性来提升运营,从而提高技能,并采取自上而下的方法。大多数情况下,这需要一个能够融入当前组织并通过大量工作推动这些变化的团队,重点是改变行为。对阿古斯蒂娜而言,数据在企业中的爆发可以看作是一项推动任何变革的技术,神奇地解决和改善所有指标。数据战略建立在现有战略之上,以便能够扩大我们可以用来做出更好决策的知识范围。
- 在组织中有效实施数据驱动转型的方式是什么?
实现有效转型有多种方式。创建灯塔小组,这些是有抱负的团队,代表他们希望实现的转型示范,来引导转型是不够的,因为之后,这些团队会遇到与他们工作条件不同的现实。这是因为这些团队拥有比其他团队更多的资源,而这与公司其他部分的实际情况有所不同。
灯塔模式与并行组织模式相对立,后者负责转型公司的流程。通过设立转型目标和明确的激励措施(如中期的可变奖金)来强力实施。这会产生内部冲突,但会持续在新文化的生命期内。这也意味着需要资源,并且这项转型就像是组织的青春期一样,会经历阵痛。
一些组织拥有较大的利润空间,可以通过为每个部门创建转型团队来重复配置资源,这些团队随后加入那些寻求改进的团队和部门。这个问题在于,虽然资源得以重复,但这些资源中的所有团队并没有能力推动这项转型。
- 管理层对这些转型的看法是什么?
中层管理者最难说服,因为采用新战略意味着他们需要同时做两件事。虽然一些中层管理者对变革感到兴奋,但一切都是依赖于双手和资源来定义的,执行转型需要转移变革流程并从运营中转移资源,这会影响这些中层管理者被评判的绩效指标。当那些应该使用数据的人没有改变他们的流程,以将这些指标或洞察力融入到他们的决策和日常运营中时,实施有效的数据战略就会与现实发生冲突。这些人通常是接近运营的中层管理者,他们没有时间或技能来领导转型或推动数据的使用。
- 这些组织从数据驱动转型中可以期待什么样的好处?
如果流程没有改变,数据就毫无意义;如果不考虑设备和流程,收集到的数据将没有用途或影响。数据驱动并不是意味着减少资源。这是来自 IT 领域的一种误解,IT 领域总是寻求降低运营成本。数据驱动战略应关注公司中创造收入的部分。依赖于 IT 或运营的首席数据官(CDO)旨在节省成本,但这行不通。数据既不代表较少的成本,也不意味着较少的时间——它涉及发现价值机会。举个例子,促销或降价,如果没有足够的客户和产品数据,往往会给那些已经准备购买的消费者提供补贴。如果我们利用数据,我们可以计算促销弹性,并根据每个买家群体的需求进行定制,促使他们购买更多,但不会产生贸易支出的节省。随着组织的成熟和对数据战略真正角色的理解,这一数据战略将成为销售部门、战略部门或总经理的责任。或者,您需要做到 C 级管理。
- 数据故事讲述如何融入数据驱动的转型中?
这项数据战略必须具备支持战略的故事性,并清晰传达组织中每个参与者的角色。这一战略必须从上至下实施,因为如果恰恰相反,战略从每个团队或部门开始,便会产生碎片化,因此需要进行有效的对齐,逐步展示并传达获得的好处。
- 成功的数据驱动战略的要素有哪些?
数据战略的要素包括明确的目标——即切实可行的目标、一个将每个人聚集在这些目标背后的文化,以及执行这种转型所需的资源和毅力。
- 人们如何融入数据驱动的战略中?
在人员方面,重要的是考虑每个人的技能和能力。有些人擅长分析,有些人擅长将战略付诸实践,还有一些人两者都做得很好。通常,数据团队具备战略开发能力和领域知识来执行数据战略。这是因为单纯的硬性知识是不够的,数据是补充那些需要了解的现实的,因此必须具备领域知识,以补充数据的使用,从而做出有效决策。这些领域知识存在于这些靠近操作的中层,他们必须向数据科学家学习,数据科学家是负责团队中与首席数据官(CDO)协调并推进这些开发的人员。如果仅有一个集中化的部门为整个组织提供数据,这种方式是行不通的。
- 在这一转型过程中,技术的角色是什么?
在技术方面,技术是一个使战略得以执行的推动力,但这种技术是建立在数据战略之上的,而数据战略又是建立在商业战略之上的,绝不是反过来。解决数据问题以解决业务问题时,应始终寻求最低复杂度的解决方案。这是通过数据工程师、MLOps、DataOps 等团队来实现的,始终控制开发质量,确保信息的可靠性以及系统的规则和能力。
Patrick Flink
Patrick 是变革性战略实施的专家。他高度关注从数据中提取可操作的价值,并通过最小化的方法迅速实现价值。他的公司 ONBRDNG 是一家荷兰公司,专注于数字化转型,不仅强调数据驱动的战略,还注重执行力。
拥有商业和管理背景,他采用多学科的方式来学习必要的工具和技能,从数据中提取价值,并优先考虑可操作的成果。他曾担任首席技术官(CTO)和首席数据官(CDO),并与荷兰的媒体公司合作开发创新的产品和解决方案。
Patrick 既务实又富有创造力。他是一个结果导向的战略家,喜欢与组织各个层级进行沟通,并将公司从传统企业重建为全面数字化的公司。
- 你是如何准备自己具备成为数据领导者的技能的?
是的,我是一个终身学习者。当然,我自己做了一些事情,也花了很多时间和我们的开发人员及分析师一起工作。我花了很多时间就坐在他们旁边。因此,成为跨学科的人总是很好的;这样,你可以看到与来自不同领域的专业人士一起工作所带来的价值。这通常包括问很多问题,从不同的角度看问题等等。所以,是的,这就是我开始的地方。我们还做了很多关于媒体的工作,这个领域的好处是,媒体公司总是关注如何不断增加客户和消费者的参与度。最新的功能、特性和产品也会在这里展示,因为每个人都知道他们对新事物极其开放。他们会生成大量关于行为的数据,比如他们喜欢什么、不喜欢什么,等等。你可以利用这些信息来制定出一个合适的策略。
- 你们使用什么样的方法论来发掘数据中的价值?
我们有一种方法,正在朝着方法论的方向发展。但根据我的经验,大多数时候,每个人都使用相同的示例。而且他们没有考虑到在该领域成功所需的所有重要因素,常常忽视了要深入了解整个故事。因此,这不仅仅是收集各种数据然后通过它变得更好,而是要看到并理解他们如何做 —— 比什么做更重要,因为你知道那可能会有所不同。我们喜欢我们的方法,是因为我们把它做得小而简洁。我们利用数据来告诉我们发生了什么,然后我们看看能做些什么,大家都说数据驱动或数据决策之类的,但更多的是在人性和创造力方面。如果你看看那些最具数据驱动的公司,当然他们使用数据,但同样还是依赖创造力、直觉和赌注,同时保持非常诚实。我见过太多公司招聘大量的数据工程师、数据科学家等,并花费大量资金在基础设施上。我们利用数据来看我们的赌注是否正确,以及我们是否在推动改变。我们使用大量数据,且在没有客户的情况下,我们也会进行大量数据冲刺,以保持专注。
我们跟踪客户的整个旅程,从头到尾。所有这些都是可能的,但每个人都忙于许多事情,所以我们尽量简化。因此,我们在数据冲刺中做了很多工作,通常持续几周 —— 没有人告诉你,很多时候,为了利用数据并从中获得价值,你不需要太多人。
- 在与公司中的数据团队合作时,你遇到过哪些挑战?
其中一个挑战是公司雇佣了太多员工。我自己经历过这种情况;我问一个负责客户洞察的数据经理,我们需要一个客户流失预测模型,然后几周或几个月后,我们问进展如何。他们说,商业需求不明确,但我们可以做面部识别。然而,这不是我们要求的。我们可以构建推荐引擎,但我们已经有了推荐系统,所以现在不需要这个。所以,更多员工并不是我们最大的问题。有许多公司有太多人在一个话题上工作,但这并没有带来好处或可行的成果,而且我们也没有从中获得真正的价值。
- 你是如何进行成功数据项目的构建的?
我们所做的是尽量将它做得极其小。所以,从一个数字开始。假设,我们要做数据驱动的工作。好的,答案是什么?我们的第一个假设是什么?让我们看看我们在做什么,正在发现什么,正在经历什么——这 90%的工作是数据清洗。我们在整理数据,获取正确的标签、正确的数据和正确的定义。但没有人谈论这些。所以,我们可能会尝试将它简化,然后真正面对现实。这种数据冲刺的概念是我们工作领域的一种视角。有时它是非常碎片化的;例如,它是一个单体系统还是一个大范围的工作场景?然后,我们问,商业是什么?我们对客户承诺什么?我们是如何赚钱的?接下来,我们尝试了解客户的端到端旅程。从这里开始。我们的主要挑战是什么?关键问题是什么?是增长吗?是客户流失吗?是流程自动化吗?这也与决策相关。我们是否想要自动化各种事务?那么,我们必须从假设开始,并从那里出发。我们必须始终在 6 周内——仅仅 6 周——尽力从中获取一些价值。我们评估基础设施和商业模式,并观察客户旅程中的各个渠道。然后,我们必须根据这 6 周设定目标,组成一个小团队。这个团队应该是跨学科的,并且是公司的一部分。那是你的团队。当然,我们为客户做这些工作。当然,这总是一个混合型的跨学科团队。
- 你如何设定优先级,并与公司中的数据团队合作?
团队的重点当然取决于高层管理层。如果它关注的是数字化流程自动化,目标将会是某种类型。如果它是一个工厂,例如,或一个电子商务公司,它将专注于转化率。当然,当涉及到体验或者关注点时,这个问题会有所不同,这取决于公司。所以,有时候这会有所变化,但我们始终协助并与客户合作。我们使用主平台,同时也拥有我们的数据平台,因此我们的客户在五个遗留系统中遇到困难。然后,我们有我们的数据平台,在这里我们对某些系统中的数据进行景观分析。然后,我们可以说,“把这个系统中的元素提供给我们,这样我们就可以创建某种初步视图。”我们还使用全球技术栈和一些工具,如脚本。平台上也有专家。不过,我们的数据平台的使用确保了我们能够加速。
- 数据驱动转型的目标应该是什么?
所以,平均而言,我认为如果你谈论数据驱动,你应该更多地与客户交流。接着,你应该谈论你在数据中看到的内容,以及其他人看到的内容。然后,你应该谈论你的收入、成本和你希望获得的结果。最终,很多公司只是在谈论这些组成部分。如果你是数据驱动的,那么你可以预测你的结果,因为你已经在客户行为中看到了它。你会看到结果在未来的某个时刻,而不仅仅是下一个季度。我认为,最终你总会承诺实现你的承诺,而这是对客户非常重要的。
将公司转变为数据驱动型组织需要深刻的文化变革,这一变革需要通过自上而下的方法来实施,由能够创造叙事来支持数据战略并适应组织需求和目标的领导者来主导。这一转型不仅仅关乎技术,更关乎人和流程。我感激 Agustina 和 Patrick 的观点,并希望他们的经验能够帮助你们创造有效的文化转型。
总结
在这一章中,我们探讨了构成数据转型的不同部分,这些部分帮助希望通过利用具有广泛知识和经验的数据领导者的观点和经验,成为数据驱动的公司。
这些方法不仅使公司能够转型,还使领导者和经理能够适应实现成功数据战略所需的新技能和新流程。通过这样做,他们可以明确了解公司将如何从这些努力中受益,如何创建和领导数据团队,以及如何考虑赋能数字化和数据转型的影响。
总体而言,本书的目标是帮助商业领袖、经理和爱好者们实施现成的解决方案,探索关于消费者、他们的行为模式、他们如何看待价格、如何有效地提出推荐以及如何将管理经济学应用于 Python 来补充商业战略等方面的见解。
我借鉴了程序员、经理和专家们的知识,正是他们给了我灵感,让我写下了这本书。书中所有被修改和使用的代码与数据均属于各自的所有者和生产者,我对此表示感谢。最重要的是,我要感谢那些数据领域的领导者,尽管他们的日常工作异常繁忙,仍抽出时间回答了本章提出的问题。
我感谢你花时间阅读这本书,希望它能够激发你利用数据达成目标,同时在享受过程的同时也能收获乐趣。