22

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

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzU4MDUxOTI5NA%3D%3D&%3Bmid=2247484834&%3Bidx=1&%3Bsn=e3fd0a7f2cef25e2cf532ae0a3531bf7
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

背景

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

通常,用户行为分析包含以下流程: 数据埋点 -> 数据采集 -> 数据清洗 -> 数据展现

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

  • 利用率低:埋点数据量大并且非常杂乱,通常都只是某个特定场景下,会统计某些特定埋点数据

  • 数据太“原始”:通常埋点都是某个页面曝光、某个点击事件等等,这些事件维度“低”,单用这些埋点不能表达某些“高纬”的事件,比如“点击搜索框->输入文字->进入搜索结果页->点击搜索结果”为一次完整搜索商品行为。

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

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

什么是用户行为

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

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

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

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

因此,用户行为分析,实际上也就变成了:埋点序列分析。

什么是 序列模式挖掘

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

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

MBryeaU.jpg!web

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

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

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

发现未知行为

qiEJZbI.jpg!web

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

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

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

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

案例: 发现未知“黑产”人群

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

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

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

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

  • 没有经验预设,可以快速从数据中发现新型的黑产行为模式,而不必等到大面积用户反馈以后做补漏。

  • 算法抽象出来的行为模式相比人工“总结”会更加准确。(原来的防控大多数是根据用户反馈,然后人工观察这些人的行为,并用规则去识别匹配这些行为)

发现更多同类人群

aYRjimi.jpg!web

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

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

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

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

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

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

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

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

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

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

  • 比原来的策略多产生了  57% 的黑产账号。

  • 产出的黑产账号准确率达到  99%

提供更多数据视角

reI7Rnz.jpg!web

通过挖掘所有用户的公共行为序列,我们可以得到一个行为序列表,有了这个表,我们就可以通过统计每个用户发生这些行为数据的次数,得到一份全新的数据,即“用户行为次数表”。 这样,我们可以从不同行为的次数这个视角上,挖掘更多信息。

(挖掘出的行为表,因为行为组合的多样性,所以会有很多实际意义上重复的行为序列,可以用 PCA 主成分分析法来过滤掉重复的行为序列)

比如,可以比对不同用户群,在这些行为次数上的差异(一个id为一个行为序列,如 4633):

zYbE7vM.jpg!web

当然,这种这样的数据还需要进一步挖掘才能得到实际可利用的信息,针对不同业务和问题,也有不同的利用方式,这里我们也还只是一个思路,我们也在继续尝试,希望能从这个新的数据视角挖掘到对业务有用的信息。

更多思考

当然,上述只是分享了我们利用序列模式挖掘在用户行为分析上的尝试,除了这些方法,还有更多可以应用的场景。

比如除了上述这些较大粒度的用户行为分析,序列模式挖掘还可以用在更小粒度的场景上。 比如分析单个页面内,用户行为是否有一些特定的模式(此时的行为可以定义为更细致的操作,如点击、滑动,长按等),从而进一步帮助优化用户体验,发现异常等。

对于用户行为分析和序列模式挖掘,本文的案例只是冰山一角,希望这里能够起到抛砖引玉的作用。

闲鱼团队是Flutter+Dart FaaS前后端一体化新技术的行业领军者,就是现在! 客户端/服务端java/架构/前端/质量工程师 面向社会招聘,base杭州阿里巴巴西溪园区,一起做有创想空间的社区产品、做深度顶级的开源项目,一起拓展技术边界成就极致!

*投喂简历给小闲鱼→ [email protected]

quQ3Mn7.jpg!web

ZriEn26.png!web

开源项目、峰会直击、关键洞察、深度解读

请认准 闲鱼技术


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK