基于用户行为模式的渠道组合管理——选自《电商流量数据化运营》
“通过识别服务器日志与URL参数的流量来源,利用Python的PrefixSpan库进行序列关联分析,可有效挖掘用户先后访问的高频渠道组合规则,进而优化广告投放策略。尽管存在多设备干扰与Cookie失效等限制,但借助唯一ID关联跨设备行为,能进一步实现针对高意向群体的跨端渠道组合投放,提升整体转化效果。”
基于用户访问行为的渠道组合策略挖掘与应用
渠道组合投放的启发与概述
在做渠道组合投放管理时,从用户的实际访问行为中获得启发,尤其是在考虑少量渠道的组合应用时非常有效。
例如,用户经常从 A 渠道进入网站后,再次从 B 渠道进入网站,那么渠道 A 和 B 之间可能具有用户先后序列访问的行为模式。
基于此规律,可以考虑将二者进行组合投放,这是一种行之有效的投放组合策略。
如何识别用户访问的来源渠道
用户访问的来源渠道识别通常有两种核心模式:
模式一:基于服务器日志的引荐信息(免费流量)
第一种模式是根据每次用户进入网站中服务器日志的**“引荐信息”**获得,其中包含的引荐 URL 信息可用于识别流量来源。
默认情况下,无需对这部分流量做额外特殊跟踪,网站分析工具都能自动监测流量来源。其主要用于免费流量(包括直接流量、SEO、普通引荐)的识别。下面的服务器日志中显示了该流量来源于搜狗搜索(SEO),其中带有下划线的代码部分即引荐来源信息:
code
模式二:基于站外 URL 参数标记(付费流量)
第二种模式是根据站外 URL 的参数标记实现的来源跟踪,这是监测站外付费广告投放的标准实施方法。
该方式需要广告投放人员在站外的广告落地页链接中进行特殊参数标记。以某网站的百度品专投放链接为例,其落地页 URL 中使用了 utm 参数标记来源渠道、媒介、广告活动、关键字等信息:
code
当上述自定义标记完成并有流量进入网站后,在网站分析工具中可以看到如图 3-23 的渠道流量报告。该报告在 Google Analytics 中的“流量获取”-“所有流量”-“渠道”中,主要维度是**“来源/媒介”**,其中包含了付费流量(例如 google/cpc、facebook/ocpm 等)和免费流量(例如 (direct)/(none)、google/organic)。

通过序列关联模式挖掘渠道组合策略
本案例以网站分析系统(Google Analytics)的流量数据为例,分析其中是否存在较强的渠道组合模式。
案例背景与环境准备
该案例借助于 Python 的第三方库 prefixspan 实现。有关 Python 环境的准备以及附件压缩包的配置,请见“附录 2 通过 Anaconda 准备 Python 环境”。
- 点击图 3-24 中的 ①“Anaconda Powershell Prompt (Anaconda3)”,在新打开的 shell 窗口中,输入
pip install prefixspan来通过 pip 方法安装prefixspan库,安装完成后会出现“Successfully”字样。 - 再点击 ②“Jupyter Notebook (Anaconda3)”在浏览器中进入 Jupyter 环境。

按照“附录 2 通过 Anaconda 准备 Python 环境”中的“2. 将附件压缩包解压到 C:\Users\Administrator 目录”配置完成后,会出现图 3-25 中“流量数据化运营_附件”入口,点击进入目录会出现附件文件列表,点击“第 3 章.ipynb”查看本案例代码及执行结果。

Python 实现过程
第 1 步:导入库
python
- 代码①:导入
prefixspan中的PrefixSpan方法,后续使用其来实现序列模式的挖掘。 - 代码②:导入
Pandas库并指定别名为pd,后续使用pd来代替 Pandas 实现数据处理。
第 2 步:读取数据
python
- 代码①:使用
pandas的read_excel方法,从“第 3 章.xlsx”中 sheet 名为 3-7 的工作簿中读取所有数据。 - 代码②:使用
print方法打印读取结果,df.head方法默认展示前 5 行结果。打印展示的目的是查看数据是否读取正常(包括字段正常识别、中文是否有乱码、值是否正确等)。经过查看如下结果,数据读取正常:
code
- 代码③:
print结合df.info()方法打印数据框的详细信息,主要用于查看字段类型、缺失值情况等。关键信息包括:数据框中共有数据记录 260 条,一共四个字段且都没有缺失值(non-null),CookieID为数值型(int64),时间戳为日期时间类型(datetime64[ns]),渠道类型和渠道是字符串型(object)。
code
第 3 步:按时间戳排序
该步骤的意义是基于用户的访问时间戳,对来源渠道进行排序。该步骤需要确保时间戳是日期时间类型,而不能是字符串类型,否则用户实际访问渠道可能无法正确排序。
python
- 代码①:使用数据框的
sort_values方法基于CookieID和时间戳排序,通过ascending=True指定为正序排序,即时间早的值在前面。 - 代码②:打印排序后的数据的前 5 条结果如下:
code
上述结果可以看到数据已经正确排序。当用户出现多个渠道记录时,越早的记录越靠前。
第 4 步:将用户的渠道数据从事务性记录格式转换为序列格式
该模型要求数据的格式必须是基于列表的序列格式,因此需要转换原始事务性记录格式。
python
- 代码①:目标是获得所有用户的
CookieID的集合。先通过data['CookieID'].unique()获得用户CookieID的唯一值,并通过tolist()方法转换为列表格式。 - 代码②:目标是获得所有用户访问渠道的序列集合。通过列表推导式,将每个用户的所有渠道数据取出来并转化为列表格式,由此形成了列表嵌套(外层列表为所有用户的集合,内层列表是每个用户访问渠道的序列集合)。其中
data[data['CookieID'] == i]['渠道'].tolist()的含义是从data数据框中将CookieID等于i的用户的渠道过滤出来,然后转换为列表格式。 - 代码③:目标是将访问了超过 2 个渠道的列表保存下来,目的是降低后续计算量并提高运行效率。
- 代码④:打印处理后的列表的前 2 条记录:
code
结果中的第一个列表表示用户 A 先后 5 次都从 baidu 进入网站;第二个列表表示用户 B 先后 2 次都从 baidu 进入网站。
第 5 步:建立序列模型并查找规则
该步骤实现序列模式的提取和挖掘,从中提取频繁的用户访问渠道的规则。
python
- 代码①:通过
PrefixSpan建模序列挖掘模型对象ps。 - 代码②:通过
ps的maxlen和minlen设置挖掘频繁项集时项目的数量为 2。这样做的目的是只分析 2 个渠道之间的相互关系,而把超过 2 个渠道的规则去掉,避免规则重叠。 - 代码③:使用
ps的topk方法提取最频繁的前 100 个序列关联规则。 - 代码④:打印输出前 4 个结果:
code
top_rules 中的每个规则结果都包含三个要素,以 (9, ['baidu', 'baidu']) 为例,这是一个元组,第一个元素是支持度,第二个元素是由前项和后项组成的规则。支持度越高,说明规则本身越频繁。
第 6 步:将数据转换为数据框
上述列表格式不便于查看和处理数据,我们将其转换为数据框。
python
- 代码①:将元组的第二个元素(规则)中的前项和后项拆分为单独的元素。
- 代码②:使用
pd.DataFrame建立新的数据框,指定列名为SCORE(支持度)、ITEM1(前项渠道)和ITEM2(后项渠道)。 - 代码③:使用数据框的
sort_values方法对ITEM1和SCORE排序,通过ascending=False指定倒序排序。 - 代码④:基于支持度数值计算规则出现的比率,用于分析不同规则出现的“频率”。
- 代码⑤:打印前 5 条记录查看结果:
code
由此我们得到了序列关联分析结果。该结果在使用时,可按照特定渠道单独筛选其可能的组合渠道,例如通过 print(sequences[sequences['ITEM1']=='baidu'].head()) 打印出可以与百度(前项)一起投放组合的 TOP 渠道:
code
也可以基于 SCORE 的支持度总排名,将支持度最高的渠道组合先拿出来,再做后续投放分析,代码为 print(sequences.sort_values(['SCORE'], ascending=False).head()):
code
渠道组合策略的限制条件
基于用户访问行为的渠道组合策略依赖于用户的到站和渠道识别,如果用户仅仅在站外产生广告曝光但没有进入网站,那么无法产生流量数据。除此以外,这种行为模式还可能存在以下问题:
- 多设备、多浏览器的行为模式干扰:例如用户先从手机访问百度进入网站,再从电脑上通过信息流广告进入网站,正常的用户行为模式应该被识别为“百度 → 信息流”。但由于不同设备会生成不同的 Cookie,导致用户的跨设备行为无法直接关联匹配,在报告中将显示为两个不同的人及其对应的渠道数据。
- Cookie 的失效问题:Cookie 失效指 Cookie 无法正确工作并用于识别匿名用户。潜在问题场景包括:浏览器禁用 Cookie 跟踪、Cookie 过期(超过默认时间会生成新 Cookie)、用户手动清除 Cookie、特定第三方工具删除或清理 Cookie 及缓存等。
- 企业投放的媒体覆盖度不够:受限于广告预算以及媒体碎片化问题,很多企业无法投放大量的广告媒体并从中获得直接可参考的数据,这会导致无法产生有效的序列关联规则。
知识拓展:跨设备领域的渠道组合策略
前文提到了多设备、多浏览器的行为模式会干扰序列规则的产生。但企业可以通过激励措施引导用户留下唯一联系信息,实现多个设备信息的 Mapping。
典型的唯一信息包括:登陆 ID(同 CRM 中的用户 ID)、手机号、Email、设备 ID(在手机 App 上的 MAC 地址、手机串号等)。在一定时间内,这些 ID 不会频繁变动,因此只要能获取到这些信息,在企业后台就能建立一个全局用户 ID 来将 CookieID 与这些 ID 关联起来。
在实际数据中,能够获得多个渠道关联 ID 信息的用户量相对总体用户来看占比较少(例如普通自营电商网站登陆用户的比例大概占总访问用户的 10% 左右)。但是,我们仍然可以将这 10% 的群体作为典型研究用户,因为这些用户的后续转化价值相对较高。
研究高意向群体的用户行为模式,将更有利于将转化目标(高转化率)与流量目标(渠道组合投放引流)结合起来。
得到了用户跨设备的关联访问路径,可以在渠道投放组合中产生更多的玩法。例如:将 PC 端流量渠道 A 与 Mobile 端的渠道 B 组合,具体策略可能是先在 PC 端投放 A 渠道 3 天,然后再在 Mobile 端投放渠道 B。这样就能将原来局限于相同平台或设备的投放策略延伸到跨设备投放策略上去,这种基于数据的组合投放策略将更利于效果达成。