基于Spark的用户行为分析系统框架研究

2018-02-26 08:11◆殷
网络安全技术与应用 2018年2期
关键词:日志数据挖掘预处理

◆殷 乐 姚 远 刘 辰



基于Spark的用户行为分析系统框架研究

◆殷 乐 姚 远 刘 辰

(信息工程大学四院 河南 450001)

网络日志包含了大量有价值的信息,对分析用户上网行为模式提供有力数据保障。而随着互联网及应用程序规模的不断扩大,各种日志信息同时也呈数量级的增长,一般使用单台机器处理的用户行为分析系统早已无法满足当前需求。Spark作为一个专为大规模数据处理而设计的快速通用的分布式计算引擎,具有易用性、通用性和更快的速度等优势。本文介绍了现有常用的数据挖掘技术及Spark机器学习库MLlib中的相关算法,设计了一个基于Spark平台并使用多种MLlib挖掘算法的用户行为分析系统融合框架,包括日志采集、日志预处理、用户聚类、关联规则、序列模式、可视化、任务管理等模块。

Spark;MLlib;数据挖掘;用户行为分析

0 引言

用户行为分析是指在获得网站访问日志数据的情况下,对有关数据进行统计、分析,从中发现用户访问网站的行为规律。可以将这些行为规律与网络营销策略等相结合,为后续的主动推荐服务提供依据,以满足用户个性化需求,或者应用于入侵检测系统[2]中,建立系统访问的正常行为模型,凡是不符合这个模型的行为将被断定为入侵,或者将所有可能发生的不利的、不可接受的行为进行归纳并建立模型,凡是访问者符合这个模型的行为将被断定为入侵。

用户行为分析需要数据挖掘技术做支撑,而Spark平台包含强大的机器学习库MLlib,具备用户行为分析所需的各种数据挖掘技术,另外Spark平台本身具有分布式高效的计算能力和日志处理能力[1],非常适合用于构建功能全面的用户行为分析系统。

1 数据挖掘技术

数据挖掘[3](Data Mining)是目前人工智能和数据库领域研究的热点问题,所谓数据挖掘是指从数据库的大量数据中揭示出隐含的、先前未知的并有潜在价值的信息的非平凡过程。数据挖掘常用方法主要包括分类、回归分析、聚类、关联规则、序列模式和偏差分析等。下面介绍几种常用的数据挖掘技术。

1.1分类

分类就是在数据中找出一个类别的概念描述,这个概念代表了这类数据的内涵描述,然后根据这种描述建立模型。分类是数据挖掘的基本任务,总体来说并不复杂,但它是完成其它任务的基础,只有先对数据进行分类才能够有效地完成聚类、关联等任务。常用的分类方法主要包括统计方法、机器学习方法、神经网络方法等。其中统计方法包括贝叶斯法和非参数法,机器学习方法包括决策树法和规则归纳法,神经网络法主要是以BP 算法为主。

1.2聚类

聚类就是把具有相似性的数据归纳成若干类别,相同类别的数据相似,不同类别的数据相异,聚类分析可以在分类的基础上进一步建立宏观的概念,进而发现数据的分布模式以及数据属性之间的相互关系。聚类总体来说可以分成4类:划分的方法、层次的方法、网格的方法、模型的方法。

1.3关联规则

当两个或者两个以上变量的取值直接存在某种规律性时,我们就可以称之为关联。在数据库中,关联并不是隐藏的信息,而是可被发现的信息。数据挖掘进行关联分析的主要目的是发现给定事件或记录中经常一起发生的项目,并由此识别有可能重复发生的模式。关联分析方法主要包括Apriori算法和FP-growth算法等。

1.4序列模式

序列模式和关联规则类似,只是把关联规则中一起发生的项目间关系扩展成一段时间的项目集间的关系,所以序列模式经常被看作由时间变量连起来的关联规则。序列模式挖掘的主要目的是分析长时间的相关记录,进而发现经常发生的顺序模式。

图1 Spark框架及生态

2 Spark平台及MLlib相关介绍

2.1 Spark平台

Spark是UC Berkeley AMP lab所开发的类Hadoop MapReduce的开源集群计算框架,建立在Hadoop分布式文件系统(HDFS)的上层。Spark通过构建弹性分布式数据集(RDD,Resilient Distributed DataSet)提供内存集群計算,将Job处理过程中的中间输出和结果保存在内存中,从而减少HDFS读写次数,大幅提升处理效率,使它非常适合机器学习与数据挖掘等需要迭代的算法。Spark 主要有三个特点:

(1)高级 API 剥离了对集群本身的关注,开发者可以专注于计算本身。

(2)Spark支持交互式计算和复杂算法[4]。

(3)Spark 是通用引擎,可用它来完成 SQL 查询、文本处理、机器学习等各种各样的运算。

Spark架构包括Spark Core、Spark SQL、Spark Streaming、MLlib、GraphX等功能模块。其中Spark Core包含Spark的基本功能,尤其是定义RDD的API、操作以及这两者上的动作(Action),其他Spark的库都是构建在RDD和Spark Core之上的;Spark SQL提供通过Apache Hive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API,每个数据库表被当做一个RDD,Spark SQL查询被转换为Spark操作;Spark Streaming对实时数据流进行处理和控制,允许程序能够像普通RDD一样处理实时数据;MLlib是一个常用机器学习算法库,其算法都是基于对RDD的操作,并且该库的学习算法可以扩展;GraphX是控制图、并行图操作和计算的一组算法和工具的集合,其扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作。

2.2 Spark机器学习库

MLlib(Machine Learnig lib)构建在Spark之上,一个专门针对大量数据处理的通用的、快速的引擎,是一个可以扩展的机器学习库,由通用的学习算法和工具类组成,包括分类、回归、聚类、协同过滤、降维和调优等部分。MLlib基于RDD,天生就可以与Spark SQL、GraphX、Spark Streaming无缝集成,从图2可以看出MLlib主要包含三个部分:

(1)底层基础:包括Spark的运行库、矩阵库和向量库;

(2)算法库:包含广义线性模型、推荐系统、聚类、决策树和评估的算法;

(3)实用程序:包括测试数据的生成、外部数据的读入等功能。

图2 Spark机器学习库框架

3 用户行为分析系统框架设计

基于以上相关技术的研究,充分考虑用户行为特点,针对不同类型的用户行为分析功能分别设计算法模块,根据不同分析算法完成相应的数据预处理工作,对日志数据进行数据清洗并以算法可识别的格式作为算法输入,经过挖掘算法模块处理得到用户 行为信息,再通过可视化模块清晰再现,故该系统框架设计[5]包括日志采集模块、预处理模块、用户聚类模块、关联规则模块、序列挖掘模块、可视化模块和系统管理模块等。

3.1日志采集模块

日志采集模块通过采集网络环境中的各种日志数据源,包括HDFS和外部数据,并完成数据的一致性、完整性检查,对丢失的数据进行填补,消除不必要的数据等工作。由于日志数据来源种类多样和分布式异构,采集到的日志数据并不能直接用于算法处理模块,需要进行相应的预处理。

3.2预处理模块

数据预处理[6]对于数据挖掘非常重要。在日志中存在许多对于数据挖掘无用的属性和数据,而对数据挖掘算法而言,由于数据挖掘算法通常只能处理固定格式的数据,不正确的输入数据可能导致错误或者不准确的挖掘结果,所以需要针对不同机器学习算法进行相应格式的预处理工作,以符合后续算法模块的输入要求。

3.3用户聚类模块

用户聚类[7]模块可以根据用户操作行为对用户进行聚类,通过分析用户操作日志,发掘用户群体的访问模式,用以调整站点结构、提供个性化服务并开展适当的推广活动,为用户推荐提供了良好的解决方案。运用MLlib中的聚类算法,例如K-means,可以直接处理从数据预处理模块得到的规范化输入数据,最终结果传输给可视化模块或者其他上层应用。

3.4关联规则模块

关联规则[8]模块可以通过对日志数据的挖掘,得出用户频繁访问路径间的关联规则,以获取用户潜在的兴趣和行为模式,来为用户提供个性化、智能化的信息服务,并为网站结构的优化提供指导性建议,达到提高网站点击量或企业营销利润。该模块可以采用MLlib中的Apriori算法对预处理过的日志数据进行关联规则分析,结果通过可视化模块展示或者提交其他上层应用。

3.5 序列挖掘模块

序列挖掘[9]模块通过对日志数据中用户访问记录的深入分析,找到用户经常访问的页面或者某种资源的模式,从而有效改善页面组织形式和站点架构,提高网站的整体性能,以更好地满足用户访问需求来提升用户体验。与关联规则不同的是,序列挖掘更注重事务间的顺序。较新版本的Spark加入序列模式挖掘算法PrefixSpan,可以对预处理过的日志数据进行高效的序列模式挖掘。

图3用户行为分析系统框架

3.6可视化模块

经过上述算法模块处理后,会得到分析还原的用户行为信息,再采用网页的形式展示查询后返回的结果数据,对并每个搜索分析得到的结果进行直观化图表展现,网表展示内容包括:用户聚类结果、用户行为关联结果、访问轨迹模式等。算法模块处理结果可以采用XMl形式提交参数给该模块进行展示。

3.7系统管理模块

该模块主要对各个Spark集群任务进行管理调度,包括系统配置的管理、任务配置管理、任务状态监控、任务调度管理等,保证系统任务的稳定运行。

3.8其他上层应用及扩展

由于MLlib具有良好的算法可扩展性,开发者可以基于Spark生态系统添加自定义挖掘算法,并用于相应的挖掘分析模块。另外,本系统可以作为很好的挖掘平台,通过挖掘算法得到的结果还可以作为其他上层应用的数据输入,例如主动推荐和入侵检测等。

4 结束语

本文总结了当前常用的数据挖掘技术和Spark平台框架及其生态,并通过研究Spark机器学习库MLlib中的相关挖掘算法,融合现有各类用户行为分析平台,构建了一个基于Spark平台的多功能可扩展的用户行为分析系统框架,可以提供给该领域研究人员进行系统研发做参照。

[1]IliasMavridis,HelenKaratza.Performance evaluation of cloud-based log file analysis with Apache Hadoop and Apache Spark[J]. The Journal of Systems & Software,2017.

[2]左晓军,董立勉,曲武.基于Spark框架的分布式入侵检测方法[J].计算机工程与设计,2015.

[3]王雅轩,顼聪.数据挖掘技术的综述[J].电子技术与软件工程,2015.

[4]宁永恒.基于Spark的若干数据挖掘技术研究[D].中国计量学院,2015.

[5]基于Hadoop的Web日志的分析平台的设计与实现[D]. 付伟.北京邮电大学,2015.

[6]陆丽娜,杨怡玲,管旭东,魏恒义.Web日志挖掘中的数据预处理的研究[J].计算机工程,2000.

[7]马家骏.基于Web日志挖掘的聚类算法研究及应用[D].北京工业大学,2016.

[8]李纲,李春雅,胡蓉,海岚.关联规则在Web日志挖掘中的研究与应用[J].信息资源管理学报,2015.

[9]王合清.基于序列模式的Web日志挖掘及其应用[D].华南理工大学,2014.

猜你喜欢
日志数据挖掘预处理
求解奇异线性系统的右预处理MINRES 方法
一名老党员的工作日志
探讨人工智能与数据挖掘发展趋势
高COD二噻烷生产废水预处理研究
扶贫日志
数据挖掘技术在打击倒卖OBU逃费中的应用浅析
雅皮的心情日志
游学日志
基于预处理MUSIC算法的分布式阵列DOA估计
一种基于Hadoop的大数据挖掘云服务及应用