一种基于访问行为的活跃用户识别方法与流程

文档序号:11960382阅读:372来源:国知局
本发明涉及用户身份识别领域,具体而言,通过分析用户的访问行为,对用户活跃身份进行识别划分。技术背景随着互联网技术的快速发展,互联网用户的使用人数也在逐日增加,这些用户每日访问互联网网站,都会产生大量的访问信息,合理的利用这些访问信息,不仅可以挖掘用户的使用偏好,还能鉴别用户的活跃身份,使公司从中能够获得巨大的商业价值。然而,通过我们对访问量的分析发现,虽然访问总量很多,但冗余、垃圾、的访问信息依然不少,访问模块虽多,但核心模块却很有限,总的访问用户数量庞大,但活跃用户并不多。现有的技术,很难有一种系统的方法,能够依据大量的访问信息,筛选有价值的访问内容和有效的访问模块,合理的判断用户的活跃身份。技术实现要素:本发明目的是,提出一种基于访问行为的活跃用户身份识别方法,该方法可以有效的依据用户对网站各个模块的访问量,根据访问量的信息,合理判别用户身份。本发明技术方案是:一种基于访问行为的活跃用户识别方法,步骤如下:1)解析用户访问日志,访问日志来自于数据库的中日志表;解析日志的任务,提取用户的有用信息:包含用户ID、用户姓名、用户访问时间、用户访问模块URL;2)统计用户模块访问次数,首先应在数据库中建立一张访问模块信息的维表,该维表应该包含各级模块的URL地址以及各级模块之间的对应关系;访问的模块有一级至三级从高级到低级的模块结构,若一级模块名称、二级模块名称、三级模块中有上下级模块缺失(比如只有上级一级模块没有下级二级模块和三级模块,或者只有上级一、二级模块,没有下级三级模块),应进行必要的补充;然后,依据之前提取访问日志信息,匹配模块维表,统计用户每天在不同模块的访问次数;3)过滤冗余用户和访问模块,根据得到的每个用户每日模块的访问次数,由于用户的数量远远大于模块的数量,用户-模块访问组成的矩阵将会是一个高维稀疏的矩阵,对矩阵进行优化:第一是面向用户,根据访问量统计用户频数分布,把频数和访问量同时较小的用户过滤掉,第二是面向模块,利用SVD技术对模块维度进行特征抽取,舍掉不必要的特征,只留下核心模块;4)划分用户身份,采用聚类领域的相关算法对用户进行划分;考虑到只需要将用户划分成活跃用户和非活跃用户,故采用如K-means算法,其中K=2,进行活跃用户划分。进一步,具体步骤如下:S11:解析用户访问日志,根据留存的用户访问网站的历史访问日志,在对应的BI架构数据仓库系统中,访问日志通常放在数据仓库层;对数据仓库层访问日志表解析中,首先应该核心提取访问用户ID,访问用户的访问时间,访问地址URL字段;在日志处理中,限制爬虫,日志表里有限制爬虫字段,spider=1,限制非爬虫;过滤内部IP即关联内部IP表;访问链接URL解析,由于访问链接地址多种多样,采用正则表达式对地址进行有效的过滤,包括确立链接开头地址;对于无效用户同时排除;S12:统计用户模块访问次数,首先应该在数据仓库中建立好访问模块对应的维表,维表包含链接编号即主键、一级模块名称、二级模块名称、三级模块名称、地址链接字段;由于访问模块有一级至三级从高级到低级的模块结构,各个模块存在层级关系,应确立地址链接URL属于的访问模块;有的模块还会存在层级不全情况,用高级模块去补全低级模块;三级模块如果为空的话,就用“设置主打模块”去补充三级模块,如果只有一个一级“登陆”模块,就用“登陆”模块去补第二级和第三级模块;根据维表,用之前从访问日志提取的信息去匹配维表,统计用户每日访问模块次数,处理方法应根据访问日期,访问用户ID去分组,先统计底层即三级模块的访问次数,再在这基础上,统计二级、一级模块的次数,在这同时,还需统计每个用户每一级模块下所有模块的访问次数总和;S13:过滤冗余用户和访问模块,第一是对用户过滤,对用户过滤的方法用相对简单,用基本统计方法即可完成,将频率值较低和总的点击次数也比较低的用户直接过滤掉。或采用对冗余模块的过滤,即利用矩阵分析里面奇异值分解SVD技术,将矩阵分解一种类型,数学表达形式为A=U∑V,其中A是一个m*n的矩阵,就是用户-模块矩阵,通过分解,得到U(m*m),∑(m*n),V(n*n)三个矩阵,其中矩阵∑是一个对角阵,主对角线上的元素就是奇异值,通常一定比例的奇异值之和就能占据到全部奇异值和的99%以上,这里取r(r<n)个奇异值,用数学来表示,A≈U(m*r)∑(m*r)V(r*n),这里用表达式右边的部分去代替原始矩阵A,由于r(分解后的访问模块数)的值小于n(原始的访问模块数),就实行了特征降维的操作;用户-模块当成矩阵A,原始的一级模块有登陆、产品管理、会员信息11个模块,经过SVD分解之后,只剩下包括登陆、前台页面查看5个模块,降低了访问模块的冗余度;S14:划分用户身份,采用机器学习算法对用户划分大致分为两类,一类是有监督的学习:分类,另一类是无监督的学习:聚类算法采用简单的K-means算法;K-means算法以距离作为相似度,认为距离越近的两个对象,之间的相似度就越高,就应该被划分到同一类簇中;随机选取K个对象作为类簇中心,然后把剩余对象划分到与类簇中心距离最近的类簇中,然后重新计算类簇中心,重新划分对象,直到类簇不再变化。K-means算法简单高效,聚类效果较好,比较适合处理类似活跃用户划分问题。有益效果:本发明提出的一种基于访问行为的活跃用户身份识别方法,可以有效的依据用户对网站各个模块的访问量,根据访问量的信息,合理判别用户身份。本发明是一种系统的方法,能够依据大量的访问信息,筛选有价值的访问内容和有效的访问模块,合理的判断用户的活跃身份。附图说明图1本实施例的一种基于访问行为的活跃用户识别方法流程图。具体实施方案下面结合附图和实施例,对本发明的具体实施方案作进一步详细描述。参阅图1所示,本发明的实施步骤如下:S11:解析用户访问日志一般互联网公司都会留有用户访问网站的历史访问日志,在对应的BI架构数据仓库系统中,访问日志通常放在数据仓库层。对数据仓库层访问日志表解析中,首先应该核心提取访问用户ID,访问用户访问时间,访问地址URL字段。在日志处理中,还应该注意以下几个问题,比如限制爬虫(日志表里有限制爬虫字段,spider=1,限制非爬虫);过滤内部IP(关联内部IP表);访问链接URL解析,由于访问链接地址多种多样(PC端,触屏端等),应该采用如正则表达式对地址进行有效的过滤之类的,比如确立链接开头地址(http开头、m开头);对于无效用户(如访问用户ID<=0)也应同时排除。S12:统计用户模块访问次数在这个方面,首先应该在数据仓库中建立好访问模块对应的维表,维表包含链接编号(主键),一级模块名称、二级模块名称、三级模块名称、地址链接字段,维表的设计应该满足一定的要求。由于各个模块存在层级关系(访问模块有三级结构),应确立好地址链接URL属于的访问模块。有的模块还会存在层级不全情况,如下表所示,此时应该用高级模块去补全低级模块,比如一级“产品管理”模块,二级“设置主打产品模块”,三级模块如果为空的话,就用“设置主打模块”去补充三级模块。如果只有一个一级“登陆”模块,就用“登陆”模块去补第二级和第三级模块。链接编号一级模块二级模块三级模块地址链接1商机中心管理询价商机报价……2产品管理设置主打产品模块设置主打产品模块……3登陆登陆登陆……4……………………表1访问模块链接维表部分有了维表,就可以用之前从访问日志提取的信息去匹配维表,统计用户每日访问模块次数,处理方法应根据访问日期,访问用户ID去分组,先统计底层(三级)模块的访问次数,再在这基础上,统计二级、一级模块的次数,在这同时,还需统计每个用户每一级模块下所有模块的访问次数总和。S13:过滤冗余用户和访问模块有了用户及其各个模块的访问次数,就可以利用这些信息进行数据分析,然而一个比较严重问题的就是,无论是访问用户,还是访问模块,都存在大量的冗余数据,如果把用户-模块看成一个矩阵的话,它将会是一个高维稀疏的矩阵,直接对高维稀疏矩阵进行数据分析,这会很大的影响后面机器学习算法的性能,所以需要一些方法对其进行过滤。过滤分为两个方向,第一个是对用户过滤,对用户过滤的方法用相对简单,用到一些基本的统计学方法即可完成。这里以每个用户一级模块下所有模块的访问次数总和作为评价标准,可以画出一个频率分布直方密度图,把频率值较低和总的点击次数也比较低的用户直接过滤掉。对冗余模块的过滤相对复杂一点,比较简单高效的方法是利用矩阵分析里面奇异值分解(SVD)技术,它是矩阵分解一种类型,数学表达形式为A=U∑V,其中A是一个m*n的矩阵,就是我们这里的用户-模块矩阵,通过分解,它会得到U(m*m),∑(m*n),V(n*n)三个矩阵,其中矩阵∑是一个对角阵,主对角线上的元素就是奇异值,通常一定比例的奇异值之和就能占据到全部奇异值和的99%以上,这里取r(r<n)个奇异值,用数学来表示,A≈U(m*r)∑(m*r)V(r*n),这里我们可以用表达式右边的部分去代替原始矩阵A,由于r的值小于n,就实行了特征降维的操作。比如在这里,我们以用户-模块当成矩阵A,原始的一级模块有登陆、产品管理、会员信息等11个模块,经过SVD分解之后,只剩下登陆、前台页面查看等5个模块,大大降低了访问模块的冗余度。S14:划分用户身份经过前几步的操作,就进入用户划分的阶段,机器学习算法对用户划分大致分为两类,一类是有监督的学习:分类,另一类是无监督的学习:聚类。由于事先本没有现成的活跃用户和非活跃用户训练集,故应采用聚类的算法进行划分。聚类的算法也有很多,有基于层次的,基于密度的,由于只需将用户划分成活跃用户和非活跃用户,可以采用简单的K-means算法。K-means算法是一种简单高效的基于层次划分的聚类算法,它以距离作为相似度,认为距离越近的两个对象,之间的相似度就越高,就应该被划分到同一类簇中。它的大致流程是随机选取K个对象作为类簇中心,然后把剩余对象划分到与类簇中心距离最近的类簇中,然后重新计算类簇中心,重新划分对象,直到类簇不再变化。在这里,我们只需划分活跃用户和非活跃用户,所以K的值为2,我们把所有用户在某个模块下的访问次数作为特征,采用余弦相似度作为距离,经过数轮跌代之后,类簇稳定,不在变化。考虑到活跃用户的数量远小于非活跃用户,故我们取类簇中心坐标值大的类簇作为活跃用户,类簇中心坐标值小的类簇作为非活跃用户,这样就完成了对用户身份的划分。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1