序列模式挖掘在用户行为分析中的应用

背景

在互联网产品中,用户行为分析,通常是指通过统计、分析用户在产品上的各种行为事件,挖掘、发现出有用的信息,为产品的设计,运营策略提供有意义的依据。

通常,用户行为分析包含以下流程:

  1. 数据埋点
  2. 数据采集
  3. 数据清洗
  4. 数据展现

在闲鱼中,我们有海量用户埋点数据,这些数据信息量丰富,但是却很少有效地利用起来:

  1. 利用率低:埋点数据量大并且非常杂乱,通常都只是某个特定场景下,会统计某些特定埋点数据
  2. 数据太“原始”:通常埋点都是某个页面曝光、某个点击事件等等,这些事件维度“低”,单用这些埋点不能表达某些“高纬”的事件,比如“点击搜索框->输入文字->进入搜索结果页->点击搜索结果”为一次完整搜索商品行为。

那么针对这些原始埋点,我们是否能够通过算法处理,抽象出更高纬的用户行为数据,并且利用这些数据,挖掘出有用的信息呢?

本文我们将分享闲鱼在用户行为分析中,利用“序列模式挖掘”所做的的一些尝试和应用。

1.什么是“用户行为”

一般我们将用户行为定义为:由一系列的行为事件所串联成的序列。这个定义在不同的“粒度”上有不同的解释,比如粗粒度上来看,“搜索商品”->"聊天“->“下单”为一个用户行为,其中“搜索商品”是一个行为事件。

但是从细粒度上来看,“搜索商品”包含了多个更小的事件,比如“点击搜索框->输入文本->点击搜索按钮->查看搜索结果”等,从细粒度上这几个事件同样可以定义为行为事件,此时“搜索商品”就变成了一个用户行为。

因此,分析用户行为,要先看我们从哪个维度上进行分析。

在这篇文章,我们将行为事件定义为“页面跳转”和“按钮点击”两类事件,而用户行为则是“多个行为事件”根据时间顺序串联起来的序列。

对应到到数据形式上,每一个“页面跳转”都对应一个埋点,每一个“按钮点击”也都对应一个埋点, 因此,用户行为分析,实际上也就变成了:埋点序列分析。

2.什么是“序列模式挖掘”

序列模式挖掘,是数据挖掘里关联分析算法的一种,用直白的话来理解,就是:

从大量的序列数据中,挖掘出频繁出现的“子序列”



以我们埋点数据为例,用户产生的埋点数据,根据时间排列可以得到一串埋点序列(上图中埋点1到埋点7), 而序列模式挖掘的作用,就是可以从大量用户的埋点序列中,找到其中隐藏着的模式:

埋点2->埋点4->埋点7(即大量用户都出现了“埋点2->埋点4->埋点7”这种行为模式,中间可能有其它埋点)。

利用序列模式挖掘,我们可以从用户埋点数据中,发现一些可能有价值的用户行为模式。

3.如何应用

3.1 发现未知行为



利用序列模式挖掘,可以“归纳”和“总结”人群的行为共性,那么如果我们先根据行为数据对人群进行无监督聚类,然后再对聚类出的人群进行行为序列模式挖掘,就可以“归纳”出该人群的“行为特点”。

行为聚类的流程大致如下,有兴趣的朋友可以查阅相关资料,这里不再展开:


这里无监督聚类可以根据人群内在的行为特性,得到不同人群。因为没有事先进行行为定义,因此可以发现一些以前未知的人群,但是同时也产生了一个弊端,就是聚类结果可解释性差,聚类出的人群为什么被聚到一起不得而知。

而行为序列挖掘恰恰可以“解释”一个人群的公共行为序列,因此结合聚类和序列模式挖掘,既可以发现不同的人群,又可以解释这些人群被分类的“原因”。

案例:发现未知黑产人群

用上述方案,我们对闲鱼的用户埋点进行分析,发现聚类出的人群里,有一个人群的行为序列是:

“商品搜索结果页->打开某个商品->点击聊天->发送文件->返回商品搜索结果页->打开某个商品->点击聊天->发送文件”

抽样查看这群人发送的文件发现,全部都是广告视频,也就是说,这些都是黑产账号,不断的在发送广告视频给别的用户,而这些黑产行为,是我们原先“未知”的(不需要提前知道这种行为的存在)。

这种方式相比原来的“补漏”型黑产防控有以下优势:

  1. 没有经验预设,可以快速从数据中发现新型的黑产行为模式,而不必等到大面积用户反馈以后做补漏。
  2. 算法抽象出来的行为模式相比人工“总结”会更加准确。(原来的防控大多数是根据用户反馈,然后人工观察这些人的行为,并用规则去识别匹配这些行为)

3.2 发现更多同类人群



假设我们已有一个特定人群样本(比如一批黑产账号),那么如何通过这批小样本,去找到更大的一批同类样本呢?

我们可以通过序列模式挖掘,挖掘出这些人群行为的序列模式,然后再用这些序列模式匹配所有人群,这样就可以得到一个更大范围的,满足这个行为模式的人群。

案例:发现更多骚扰用户的黑产账号

在闲鱼中,针对黑产的防控,有很多已有的成熟方案,这些方案会输出很多黑产人群。

其中一个人群,是将广告放在个人简介里,然后头像换成带有“看我简介”文字的图片,最后不断发送表情给别的用户,吸引用户去看简介里的广告。

这个人群是根据原来的策略产出的,平均每天能够发现大约 1800 个左右的黑产账号。

我们利用上述方案,挖掘这个人群的公共行为:

“搜索商品-点击商品-发起聊天-发送消息-点击个人主页-关注用户”

通过这个行为模式,我们再去匹配了所有用户,得到了更大的一个人群。这些人群经过验证,都是黑产账号。

经过交叉比对和人工验证,用行为模式匹配的方式:

  1. 比原来的策略多产生了 57% 的黑产账号。
  2. 产出的黑产账号准确率达到 99%

3.3 提供新的数据视角



展开阅读全文

本文系作者在时代Java发表,未经许可,不得转载。

如有侵权,请联系nowjava@qq.com删除。

编辑于

关注时代Java

关注时代Java