数据, 术→技巧

用户旅程分析工具与应用思考

钱魏Way · · 21 次浏览

什么是用户旅程分析?

客户旅程分析(Customer Journey Analytics)是指客户随着时间的推移与之交互的每个接触点的编织。用户旅程分析一开始主要由市场营销人员使用,主要分析的用户来源渠道间的变化。随后该方法被产品经理掌握,用于分析用户在平台上的交互行为。当前的用户旅程分析的应用场景主要是通过分析数百万个数据点发现最重要的客户旅程,并优先考虑那些显着影响业务目标的机会,如增加收入,减少客户流失和改善客户体验。

客户旅行分析通常采用的呈现模式类似桑基图(Sankey Diagram):

上面展示了一个非常简单的用户旅程,实际上用户的操作点可能更多,具体的旅程可能更加复杂。通过用户旅程分析,可以帮助我们发现一些复杂问题的答案,例如:

  • 有多少百分比的用户使用这种路径?
  • 最终购买产品的用户采取了都做了些什么?
  • 未购买产品的用户都做了些什么?
  • 何时是与给定用户进行交互的最佳时间?
  • 与用户互动的最佳渠道是什么?
  • 客户还使用了哪些其他路径?
  • 每种用户采取的路径有什么不同?
  • 我们如何在给定的上下文中为增加每个用户价值?

用户旅程分析需要有的功能

想要进行用户旅程分析,除了使用第三方工具外,也可以自己搭建。不管采用哪种方式都需要确定你期望用户旅程分析帮助你解决什么样的问题。以下内容根据功能点进行展开。

旅程发现

用户旅程分析工具首先需要达到的目的是:

  • 了解用户的实际旅程
  • 发现行为细分
  • 衡量客户行为对KPI的影响

旅程发现是客户旅程分析的一种定量方法,通过对客户行为数据在接触点和不同时间进行分析,发现有意义的行为细分以及他们为实现特定目标所采取的路径。借助旅程发现,我们可以发现并可视化频繁、费力、有问题或有前景的客户旅程,可以确定在特定旅程的每个步骤中参与的客户数量,并受特定问题的影响。此数据可帮助我们可视化特定行为,例如放弃、跳过步骤、重复步骤、持续时间、痛点和频道切换等。

旅程地图

旅程地图是一种在客户寻求实现特定目标时可视化和传达客户跨接触点和经验的体验的方式。通常创建客户旅程地图以可视化特定部分或角色的特定体验。主要目的:

  • 建立对用户当前体验的全面理解
  • 确定整个旅程中关键的“成就”或“破坏”时刻
  • 确定并优先考虑改善客户体验的机会
  • 围绕以客户为中心的模型进行沟通和调整策略
  • 充当用户体验变更管理和治理工具

旅程编排

在用户旅程的基础上,我们可以通过介入特定的用户旅程来提升用户体验:

  • 在特定旅程步骤中添加自动化交互
  • 协调跨渠道的互动
  • 使用有关客户的信息以及他们在旅程中的位置来个性化营销

当前的营销主要是针对单个渠道或单个页面进行的,有了旅程工具,我们就可以为不同的跨渠道、跨页面的旅程进行进行优化。

  • 基于触发器:通过在旅程中的任何事件中嵌入触发器,在所有接触点上实时自动交互。
  • 实时个性化:通过对特定旅行用户的识别,针对性的调整图像、文本和内容。

用户旅程分析的搭建

搭建用户旅程分析工具通常使用桑基图(Sankey diagram)来实现。桑基图即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,通常应用于能源、材料成分、金融等数据的可视化分析。因1898年Matthew Henry Phineas Riall Sankey绘制的”蒸汽机的能源效率图”而闻名,此后便以其名字命名为”桑基图”。

搭建用户旅程分析工具,个人认为最大的难点:

  • 数据埋点(符合流量分析的需求)
  • 使用埋点数据绘制桑基图

数据埋点需要注意事项:

  • 按页面进行分析可能存在遗漏的情况
  • 按时间进行分析可能存在冗余的情况

所以需要针对旅程分析确定哪些是重要的,哪些可以忽略的。

绘制桑基图注意事项:

  • 用户交互存在反复问题(桑基图很难实现)

可采取的方式,按照实践的先后顺序进行平铺

桑基图的Python实现

使用plot.ly绘制桑基图

import plotly

data = dict(
    type='sankey',
    node=dict(
        label=["原料1", "原料2", "中间产物1", "中间产物2", "成果", "损耗"],
        color=["blue", "blue", "green", "green", "black", "red"]
    ),
    link=dict(
        source=[0, 1, 0, 2, 3, 3, 2],
        target=[2, 3, 3, 4, 4, 5, 5],
        value=[8, 4, 2, 6, 4, 2, 2]
    ))

layout = dict(title="原料转化路径图")
fig = dict(data=[data], layout=layout)  # 注意这里的data被转化为数据,可以支持同时绘制多个图形
plotly.offline.plot(fig, validate=False)

使用Pyecharts绘制桑基图

from pyecharts.charts import Sankey
from pyecharts import options as opts

sankey = (
    Sankey().add(series_name='毕业生流向',
                 nodes=[{'name': '北京'}, {'name': '湖南'}, {'name': '清华'}, {'name': '北大'}, {'name': '人大'}, {'name': '浙大'},
                        {'name': '复旦'}, {'name': '中山'}, {'name': '厦大'}, {'name': '武大'}, {'name': '川大'}, {'name': '工作1'},
                        {'name': '工作2'}, {'name': '工作3'}, {'name': '工作4'}
                        ],
                 links=[
                     {'source': '北京', 'target': '清华', 'value': 50}
                     , {'source': '北京', 'target': '北大', 'value': 60}
                     , {'source': '北京', 'target': '人大', 'value': 40}
                     , {'source': '北京', 'target': '复旦', 'value': 60}
                     , {'source': '北京', 'target': '中山', 'value': 30}
                     , {'source': '北京', 'target': '浙大', 'value': 33}
                     , {'source': '北京', 'target': '厦大', 'value': 22}
                     , {'source': '北京', 'target': '武大', 'value': 5}
                     , {'source': '北京', 'target': '川大', 'value': 12}
                     , {'source': '湖南', 'target': '清华', 'value': 30}
                     , {'source': '湖南', 'target': '北大', 'value': 40}
                     , {'source': '湖南', 'target': '人大', 'value': 20}
                     , {'source': '湖南', 'target': '复旦', 'value': 40}
                     , {'source': '湖南', 'target': '中山', 'value': 10}
                     , {'source': '湖南', 'target': '浙大', 'value': 13}
                     , {'source': '湖南', 'target': '厦大', 'value': 9}
                     , {'source': '湖南', 'target': '武大', 'value': 30}
                     , {'source': '湖南', 'target': '川大', 'value': 25}
                     , {'source': '清华', 'target': '工作1', 'value': 80}
                     , {'source': '北大', 'target': '工作3', 'value': 100}
                     , {'source': '人大', 'target': '工作2', 'value': 60}
                     , {'source': '复旦', 'target': '工作2', 'value': 100}
                     , {'source': '中山', 'target': '工作4', 'value': 40}
                     , {'source': '浙大', 'target': '工作3', 'value': 46}
                     , {'source': '厦大', 'target': '工作4', 'value': 31}
                     , {'source': '武大', 'target': '工作3', 'value': 35}
                     , {'source': '川大', 'target': '工作2', 'value': 37}

                 ],
                 linestyle_opt=opts.LineStyleOpts(opacity=0.2, curve=0.5, color="source"),
                 label_opts=opts.LabelOpts(font_size=16, position='left'),
                 levels=[opts.SankeyLevelsOpts(depth=0, itemstyle_opts=opts.ItemStyleOpts(color="#fbb4ae"),
                                               linestyle_opts=opts.LineStyleOpts(color="source", opacity=0.2,
                                                                                 curve=0.5)),
                         opts.SankeyLevelsOpts(depth=1,
                                               itemstyle_opts=opts.ItemStyleOpts(color="#b3cde3"),  ##节点格式的配置
                                               linestyle_opts=opts.LineStyleOpts(color="source", opacity=0.2,
                                                                                 curve=0.5)),
                         opts.SankeyLevelsOpts(depth=2,
                                               itemstyle_opts=opts.ItemStyleOpts(color="#ccebc5"),  ##节点格式的配置
                                               linestyle_opts=opts.LineStyleOpts(color="source", opacity=0.2,
                                                                                 curve=0.5))

                         ]
                 )
)

sankey.render('学生流向.html')

参考链接:

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注