点击流数据中非结构化数据的挖掘——文本
非结构化数据是大数据数据多样化的的一个特点,而点击流中的数据是多样化数据的一部分。依托强大的网站分析工具,可以得到最细粒度的原始数据(Raw Data),如果这些原始数据仅仅用来看看报表,那意义太小。非结构化化数据包括文本、视频、文档、音频、甚至地理位置信息等等,本篇介绍的是点击流中的非结构化数据的文本挖掘应用——当然,核心还是如何更好的应用这些非结构化数据。
一、 点击流中的非结构化文本数据都有哪些?首先来定性什么是非结构化文本数据,这里指的是点击流原始数据中以文字形式展现的数据,包括原始LOG日志以及已经被结构化入库中的部分数据,比如Adobe Analytics的Data Feed,Webtrekk中的Raw Data。当然,有些数据虽然是文本或字符串的形式,但并不是真正意义上的非结构化,比如浏览器的类型信息、推荐来源,虽然取值为文本,但取值都有规律,这些数据在数据库中更多的是作为外键(FK)关联到维度表,因此都不算严格意义上的非结构化数据。 真正的非结构化文本数据,包括:
搜索词:我们永远无法准确定义用户的搜索词都有哪些;完整URL地址:尤其是含有特定监测Tag的地址;特定监测标签:通常鉴于以URL Tag形式进行监测的情形;页面名称:名称的规范性取决于系统配置信息;用户自定义标签:比如用户对自身的评价标签——伟岸、高富帅等;文章特定信息:如文章摘要、关键字等,跟用户一样,文章信息也是因文章而已;用户评论、咨询内容:绝对的非结构化段落;唯一设备号:如IMEI、MAC等(这部分通常会作为关联主键和唯一识别标示,不会作为规则提取的字段);这些信息的特点是:①取值通常是文本或字符串,②长度不一致,单值结果的长度可能是1个字节甚至是1000个字节不等,③无明确的值域范围。
二、 这些数据都是从哪来的?这些数据通常都是用户自定义的,另外也包括由于系统产生或收集的非结构化数据本身。
自定义非结构化文本数据。这些信息通常都是在工具中通常都是自定义的维度获取,比如webtrends中的metea、Adobe Analytics中自定义Prop和eVar、UA中的Dimension等,如Adobe Analytics中的Prop的字段是以varchar(100)的格式定义的,这意味着如果需要收集数据的单个结果长度超过100个字节,结果将被截断;而eVar的字段格式与Prop相同,但程度更长,是255,所以从底层数据支持的角度考虑,如果在自定义维度时,在不考虑路径应用的情况下尽量使用eVar来定义。
系统获取的非结构化文本数据。比如通过Adobe分类规则生成器、处理规则或JS自动复制变量值的形式都会产生。
三、 非结构化文本数据的应用场景在哪?通常情况下,非结构化的数据可以跟结构化的数据一样,作为分析的维度应用到各种报表或OLAP中;但这仅仅能发挥其一小部分作用,原因是只靠固定维度的常规分析难以挖掘非结构化数据中隐含的知识点,因此我们需要借用数据挖掘的相关技术。 以搜索词为例,站内搜索词基本上每个工具都会监测 ,但是搜索词的常规应用场景大多集中在以下几种:
对运营体系来讲,看下最近用户热搜了哪些词,哪些词有什么样的变化趋势,并结合转化效果来指导搜索词运营;对采销商品体系来讲,挖掘下购买某些品类的用户通常会通过哪些词进行搜索,以此来提高在这些展现结果页的排名以获得更好的展示和点击,创造售卖机会;对搜索产品开发而言,用户搜索后的结果数、排序功能、筛选等功能怎样,引发了用户的哪些连环反应,为产品功能优化提供参考;对SEO和SEM来讲,站内的搜索词可以作为站外SEM选词、匹配规则调整和站内页面SEO优化的参考…这些场景固然有用且实用,但其中有一个问题,除了SEO和SEM对于关键字的选择和拓展上,可以采用全量的方式应用以外,其他的业务体系都无法直接拿来复用。换句话说,SEO和SEM可以把所有关键字拿来用,但其他业务部门只能用到其中一部分,原因是大量关键词从单纯从字面上无法挖掘深层价值。 举个例子,比如家电采销需要过滤出某段时间家电相关搜索词,通过搜索某些关键词词根,然后用正则或模糊匹配来搜索结果并作进一步分析,但总有很大一部分次是业务无法提取的价值所在,比如:
“三星”和“note2”,没有经验的人是无法知晓二者是如何关的?搜索“三星”的,你并不知道他想找的是三星手机还是三星电视;我在一次访问中搜索了n多词,到底想找什么还是随便看看?作为家电品类的目标客户,通常会搜索哪些词?隐藏用户搜索词中的特定需求有哪些——比如超薄、红色还是商务特点?四、非结构化文本数据的挖掘实现默认我们都是通过Data Feed或Raw Data的形式进行挖掘,因此这里讲省略掉数据监测收集和入库的过程,只从数据挖掘的角度进行探讨。
1. 基于关联规则的文本挖掘
关联规则中最常用的是Apriori,其核心是基于两阶段频集思想的递推算法,该关联规则在分类上属于单维、单层、布尔关联规则,常用于事务性的挖掘规则中(所谓事务性规则是事件间的关联,无事件概念),比如在一次事件中通常哪两种事件或事物一起发生。 这种关联规则的问题在于缺乏时间的因素,只能判断同期内发生事件。比如用关联规则出现的问题可能是:搜索了三星的用户还搜索了苹果,这种结果应用在搜索功能体验上没有问题,但是如果应用在有强烈时间关系的场景下就有问题了:
A、B两篇文章,分别是上下文两部分,这两部分通过关联规则提示相关性必然非常强,但里面的推荐逻辑是看了A(上文)后才看B(下文),而不是先推荐看B,再看A;A、B两个商品有强烈的关联,假设A为鼠标,B为笔记本,通常是先购买笔记本,然后才是购买鼠标,如果再买了鼠标之后推荐买笔记本,显示失去了逻辑关系。诸如此类的应用场景非常多,核心是要把事物发生的先后顺序考虑在里面。因此关联规则通常适用于没有明显时间序列的业务应用场景,另外对于支持度和置信度的设置都要根据实际业务经验来调整,过低的支持度和置信度出来的规则没有意义,过高的设置又带来规则过少。 关联规则相对其他数据挖掘模型简单,更易于业务理解和应用,通常解释的是“干了某件事之后还会干什么事”,比如:
搜了某个关键字之后用户还会搜索什么?看了某页面/文章/评论之后用户还会看什么?从某个渠道进入之后通常还会从那个渠道进入?2. 序列模式挖掘
序列模式挖掘解释的关系跟关联模型相同,只不过把时间因素考虑在内,算法包括三类:
类Apriori算法:典型代表GSP算法,SPADE算法;基于划分模式的生长算法:典型代表是FreeSpan和PrefixSpan算法;基于序列比较的算法:代表为Disc-all;整体来看PrefixSpan和Disc-all在算法效率和性能表现上会更好,同时,考虑到业务对时间上的约束条件,比如我们分析发现,用户的存留周期只有1年,那么我们只想对1年内发生重复行为的用户进行针对性动作,1年就是我们的约束条件。这也是在做基于时间序列也需要考虑的因素。
3. 文本聚类挖掘
聚类分析是业务进入数据挖掘场景最基本的需求,通常的需求如,描述某类用户的基本特征,同时,这些特征可以作为进一步挖掘和分析的基本条件。聚类分析中最常用的算法是K-MEANS聚类和两步聚类,由于聚类方法简单实用,在此做分析下二者的差异点和主要应用点:
K-MEANS聚类:客户特征整体分群分析,大量会员或用户进行分群,找到不同群体突出特点。特点:①噪点过滤(但是不能控制过滤程度),②分组数自动/指定皆可,③通过标准化减少极值影响。
两步聚类:两步聚类与K均值应用场景一致,特点:①要求指定分组数,一定经验要求,②受极值、噪点影响大且不能设置,③大数据量时开销资源大,④受初始质点选择分类受影响大。
通常我们会把文本中的字段作为聚类的变量,以此来挖掘某类用户的具体特征。文本聚类常用的业务场景是:把用户分类,然后查看某类用户中哪些特征较为明显,然后针对性的做进一步细分和挖掘,比如: 把购买的用户分成3类(既可以指定,也可以系统自动分类),然后找到每类用户中的突出特点,如A类用户对优惠券、折扣的敏感度高,那么可以结合其他特征定义为价格主导型客户;B类用户对产品需求集中度高,但受价格波动和其他因素影响较小,属于产品导向型;C类用户对评论、咨询、分享的参与率高,并且明显影响其购买决策,那么这类用户属于舆论导向型。将这些用户简单分类之后,再深挖其中每类用户受其中每个变量的影响程度,比如结合决策列表和决策树深挖其购买决策影响因素,找到某类用户影响决策的最终因素。
4. 文本规则提取
所谓的文本规则提取,指的是把文本作为用户提取规则的一个变量,通常用决策树、SVM、SLRM来提取业务规则,比如要找到购买家电类的用户,他们对产品有哪些需求点,可以通过以下几种方式提取规则:
决策树:决策树挖掘模式通常使用C 5.0、C&RT、CHAID、QUEST等,决策树模型的特点是以树状展现规则,并按照规则对目标的影响程度分支,非常利于业务理解和规则提取。
文本规则提取通常也叫做分类,意思是把具备某类目标的用户中影响因素最大的几个规则提取出来。这是业务应用最常用的一种数据挖掘模型,常用于:
在已经找到的目标用户群体中,发现流失用户的集中特点,比如最后一次购买间隔超过6个月,此时可以对超过6个月的用户做流失前的挽回;要针对A类商品促销,可以针对购买了A类商品的用户进行规则挖掘,可能找到的是上次购买的是C商品,同时收入高于1000,地域是北京的用户,此时直接提取出具备该规则的用户进行精准营销;比如现在有一批新品需要推广,需要找到目标人群,可以针对已知人群进行挖掘,最终出来的结果可能是搜索搜索了黑色、筛选了“新品上架”、年龄是25岁以下的女性用户,针对具备这些规则的用户的精准营销必然具有很好的效果和拉升作用;把客户进行A/B/C分级之后,找到A类客户评论、标签和关键字中的关键字段,找到各类用户的典型情感标签。以上四类是文本数据挖掘中最常用的场景,由于文本的限制,文本不能参与到数据挖掘中对变量类型要求是数据值相关的字符集的建模中。但文本经过处理后可以作为建模的重要变量,并且该变量由于非结构化的属性,具有更多的色彩。
在文本挖掘中,充满挑战的是对文本段落的挖掘和关键字的提取,比如用户在一段评论中,如何提取大段文字中的关键字标签是关键,当然欣喜的是国内已经有些公司有实力做文本关键字的提取,同时结合SEO的方法基本能有效提炼大段文字中的关键字。
但另一个挑战是文本的“语意”。由于文本在汉语中的丰富的色彩,对文本的感情属性的判断需要根据语境,比如“很好”这个词,普通情况下是赞美的语意,但如果上文说到是负面,再结合这个词,则明显是讽刺的意思。文本语意挖掘在用户舆论风向标、用户评价积极性、用户满意度和好感度中的应用及其重要,目前尚没有有效的机器解决方案,当前更多的是结合机器算法以及人工识别是主流解决方法。
当然,随着机器学习算法的深入研究以及CPU性能的提高,机器很有可能达到或超过人脑的能力,届时可能会实现对语言的判断,另外通过人工干预预设固定场景和学习路径,也许会解决中国语言中语境的问题。