一种基于网络流的Web用户点击目标识别的方法与流程

文档序号:16246282发布日期:2018-12-11 23:36阅读:294来源:国知局
一种基于网络流的Web用户点击目标识别的方法与流程

本发明涉及网络技术领域,更具体地,涉及一种基于网络流的web用户点击目标识别的方法。

背景技术

万维网(worldwideweb,www)是一种基于超文本传输协议(hypertexttransferprotocol,http)的分布式信息系统。它采用浏览器-服务器(browser-server,bs)架构实现跨平台的全球性动态信息交互。在这个系统中,服务器端负责文件、数据的存取管理以及为客户提供基于web的服务,客户端通过浏览器实现所请求的服务及应用。

传统的web服务主要用于提供网页信息的访问,例如:网站访问、电子商务/政务、电子银行、电子邮件、云服务等。随着浏览器功能的日益强大,以及web服务具有穿透常规防火墙的能力等原因,越来越多的网络服务与应用从以往的“独立运行模式”迁移到bs模式,通过web的方式为位于防火墙内的用户提供服务,包括:网页游戏、在线多媒体、社交应用等。在这种趋势下,了解并掌握用户的web访问行为规律、偏好与习惯具有重要意义,它不但可以用于提高与改善各种web服务的质量与性能,而且可以为web威胁的检测与防御提供必要的参考。

当用户使用web服务时,客户端会向服务端发起请求,创建一个tcp连接,指定端口号,然后连接到服务器工作。服务器在这个端口监听客户端请求,一旦监听到请求,并分析其类型后,服务器会向客户端返回一个响应状态,同时会返回特定的数据内容,如请求的资源,错误代码,其它状态信息等。

这种请求若由用户行为所触发,则被称作用户点击,包括但不限于点击页面url链接、在浏览器地址栏键入url以及使用浏览器的书签功能。现代web页面非常复杂,包含许多html文件、框架、javascript脚本、多媒体对象、动态生成的内容,对这些内容的请求,大部分是由浏览器自动发出的,所以这种请求被称作自动请求。此外,一些非交互的应用程序(如云存储、操作系统更新等)也会产生自动请求。

由于web是一种用户驱动型服务,实现上述目标的主要手段是识别出用户的点击流序列,通过点击流进一步挖掘、分析用户的web访问行为规律。然而,由于用户点击产生的web对象和自动请求产生的web对象常常混杂在一起,而且现代网站的高度复杂性也导致自动请求产生的web对象在数量上远远大于用户点击所产生的web对象数量。因此,在现有技术条件下,从web流中有效地识别用户点击的触发对象是当前面临的主要挑战。

现有识别用户点击的方法按照数据源主要可以分为三类:1、服务器端的用户点击识别,2、客户端的用户点击识别,3、网络侧的用户点击识别。

1、服务器端的用户点击识别

当web服务器的资源被请求时,服务器会自动生成日志记录,这些记录常被用于分析用户行为,通过对这些日志进行分析,可以识别用户点击。http(s)要求从web服务器请求的每个文件都有一个单独的链接,通过该链接可以访问到该文件或其对应的资源,所以当用户点击发生时,该点击请求的资源以及自动请求的资源的相关记录均会被记载在服务器日志中。

对服务器端的用户点击识别,一种方法是基于文件类型,即将那些明显不是用户点击请求的文件去除掉,这类文件的后缀通常是gif、jpeg、gif、jpeg、jpg、jpg、css、js、map等,如参考文献“cooley,r.,b.mobasher,andj.srivastava,datapreparationforminingworldwidewebbrowsingpatterns.knowledgeandinformationsystems,1999.1(1):p.5-2.”公开的技术内容,其它一些像“count.cgi”(一个非常流行的web站点跟踪统计程序)的文件也可以被忽略,如参考文件“huiying,z.andl.wei,anintelligentalgorithmofdatapre-processinginwebusagemining.2004.3119-3123vol.4.”、“thanamani,v.c.a.d.a.s.,article:anoveltechniqueforsessionsidentificationinwebusageminingpreprocessing.internationaljournalofcomputerapplications,2011.34:p.24-28.”公开的技术。此外,在服务器端进行识别时,还要除去搜索引擎的爬虫所发出的请求,如参考文献“anand,s.andr.raniaggarwal,anefficientalgorithmfordatacleaningoflogfileusingfileextensions.internationaljournalofcomputerapplications,2012.48(8):p.13-18.”公开的技术。这种方法在过滤掉明显不是用户点击请求的文件后,将所有没有过滤的文件均视为用户点击。基于文件类型的方法来识别用户点击通常只发生在数据预处理阶段,通过文件后缀来减少数据量,以便使用者可以更好得开展之后的数据分析工作。

另一种方法是服务器提供的web服务可以直接记录用户的操作行为,如参考文献“silverstein,c.,etal.,analysisofaverylargewebsearchenginequerylog.sigirforum,1999.33(1):p.6-12.”和“spink,a.,etal.,multitaskingwebsearchonvivisimo.com,inproceedingsoftheinternationalconferenceoninformationtechnology:codingandcomputing(itcc'05)-volumeii-volume02.2005,ieeecomputersociety.p.486-490.”公开的方法是对搜索引擎所属的服务器日志进行分析,根据服务器端存储的用户搜索记录来分析用户行为,在该方法中,用户在搜索引擎中的搜索行为、对结果页面的点击行为等均会被记录到服务器日志中;如参考文献“rafter,r.andb.smyth,passiveprofilingfromserverlogsinanonlinerecruitmentenvironment.2001.”公开的方法是对求职网站的服务器日志进行分析,该网站记录用户在网站中进行点击等各种行为,将数据存储在服务器日志中。

2、客户端的用户点击识别

在客户端进行用户点击识别,如参考文献“weinreich,h.,etal.,offthebeatentracks:exploringthreeaspectsofwebnavigation,inproceedingsofthe15thinternationalconferenceonworldwideweb.2006,acm:edinburgh,scotland.p.133-142.”、“kammenhuber,n.,etal.,websearchclickstreams,inproceedingsofthe6thacmsigcommconferenceoninternetmeasurement.2006,acm:riodejaneriro,brazil.p.245-250.”公开的方法主要是通过javascript脚本、浏览器插件以及web代理来实现。在用户与浏览器之间增加一个web代理,用于过滤所有经此传输的页面,它的作用是给这些页面添加javascript代码。当js代码运行时,它们会读取所需要的浏览器参数,并与web代理进行交互。因此,与用户点击相关的各种数据均可被获取并用于分析。

论文“陈潇,张晋兴,胡玉胜,识别用户点击行为的方法及网关设备.2014:中国.”公开的方法通过在客户端部署相关设备,获取用户访问的页面html数据,通过提取其中的url并解析其类型,生成链接url列表和资源url列表,将这两个列表分别作为用户点击和自动请求对应的集合。之后识别对应于所述页面的get请求中的url,若所述get请求中的url在链接url列表中或者所述get请求中的url不在资源url列表中,则将所述get请求识别为一次用户点击行为。

3、网络侧的用户点击识别

在网络侧通过抓取数据包来获得用户点击和自动请求的数据,是一种被动测量的方式,不会被用户所感知。

论文“xie,g.,etal.,resurf:reconstructingweb-surfingactivityfromnetworktraffic.2013.1-9.”公开的方法对采集到的数据进行处理,将其以请求-回复对的形式呈现,即每个http请求与其对应的响应构成一条数据,可以通过http头部信息获取该数据的相关信息,如content-type(文件类型)、统一资源标识符(uniformresourceidentifier,或uri),referer(该请求的父请求的url)等。接着,根据referer构建出所有数据的父子关系图,每个节点代表一个请求-回复对;之后根据以下规则来确定用户点击:1)该节点content-type的取值必须是“text/html”、“text/xhtml”、“text/xml”、“application/xhtml”、“application/xml”五项之一;2)该节点请求的对象必须大于v字节;3)该节点在关系图中至少需要有k个孩子;4)该节点与其父亲节点发出请求的时间差应大于t;5)该节点uri中不包含ad-server、ads、widget、embed、banner等字段;6)该节点的父节点是用户点击或者没有父节点。

论文“rizothanasis,g.,n.carlsson,anda.mahanti,identifyinguseractionsfromhttp(s)traffic.2016.555-558.”公开的方法使用分类器进行识别,该分类器有三个部分,previous(p):一个http请求如果与它上一个http请求的时间间隔大于某个临界值,则该请求被视为用户点击;repetition(r):如果同一个url在一段时间内的访问次数大于某个临界值,则该url对应的请求被视为用户点击;next(n):两次点击之间会有明显的时间间隔,所以该分类器可以把相关的用户点击和自动请求聚集在一起。对于http数据,还有另外三个分类器可以使用。url(u):排除掉url中包含具有自动请求特征关键词的http请求;content(c):考虑到用户点击最有可能请求html文件,所以可以通过http请求对象的类型来筛选出候选的用户点击;referer:自动请求的头部中referer很可能会指向用户点击,因此被高频指向的请求可能为用户点击。

论文“vassio,l.,i.drago,andm.mellia,detectinguseractionsfromhttptraces:towardanautomaticapproach.2016.50-55.”公开的方法按照请求-回复对来处理数据,根据1)请求之间的父子关系、2)数据相关的时间戳、3)与响应相关的性质、4)与url相关的性质来提取各种特征,之后根据信息增益的值对所有特征排序。最后使用不同的机器学习算法来进行学习、识别,常用的算法有:决策树、随机森林、贝叶斯网络和多层感知神经网络。

上述现有技术,在服务器端进行用户点击识别的操作通常发生在数据预处理阶段,主要目的是减少数据量,若以识别用户点击作为最终目标,则准确性还相对较低:1.一些web站点中包含图片存档,即图片文件就是用户想要访问的目标,所以使用者可能并不想消除gif、jpeg等类型的文件;2.若想使用该方法精准地消除自动请求的文件,则需要一个包含所有可能是自动请求的文件类型的集合,但因为web站点千差万别,所以要找到这样一个通用的集合并不容易;3.除上述所列文件类型外,一些特定的文件既可以是用户点击,也可以是自动请求,所以单纯地消除拥有某种类型的文件,会导致消除真正的用户点击,从而降低了准确性。

在服务器对应的网站上部署脚本记录用户的行为,虽然可以精准地识别用户点击等操作,但单一服务器的数据无法记录用户在一次web浏览中完整的访问行为,同时网络中各级代理、浏览器缓存等也会使服务器端的数据不完整,此外还要考虑搜索引擎爬虫的影响。对于普通网络研究人员,服务器的数据也并不易获取。所以相比服务器端,在客户端进行用户点击的识别,相关数据更加完整,可以刻画用户完整的web浏览行为,且识别的准确率较高。但其对应的缺点也是明显的,在客户端部署web代理或添加浏览器插件等均需要得到用户的授权,故无法进行大范围部署。

在网络侧进行识别可以弥补在服务器端、客户端识别时的劣势,这种方式降低了数据采集难度、提升了用户点击数据的完整性。但针对具体方法,“xie,g.,etal.,resurf:reconstructingweb-surfingactivityfromnetworktraffic.2013.1-9.”和“rizothanasis,g.,n.carlsson,anda.mahanti,identifyinguseractionsfromhttp(s)traffic.2016.555-558.”公开的方法也有不足的地方:1.随着网络复杂程度的提高,用户请求的文件可能不局限于某种类型(如html);2.自动请求所对应的uri、url中包含的关键词并不总是一成不变的,即无法找到一个通用的集合;3.某些网站出于安全的考虑,可能会隐藏referer字段。相比“xie,g.,etal.,resurf:reconstructingweb-surfingactivityfromnetworktraffic.2013.1-9.”和“rizothanasis,g.,n.carlsson,anda.mahanti,identifyinguseractionsfromhttp(s)traffic.2016.555-558.”公开的方法,“vassio,l.,i.drago,andm.mellia,detectinguseractionsfromhttptraces:towardanautomaticapproach.2016.50-55.”公开的方法的优势是明显的,它不用特意选择特征,且效果相对较好;但该方法也有局限性:1.需要定期更新分类器模型以跟上互联网的发展;2.需要试验更多的算法和参数,以防止发生过拟合;3.对用户点击产生的物理过程缺乏解释性。

此外,上述这些方法对用户点击的识别仅在“点”上进行,即把用户点击和自动请求看成一个一个的数据点来进行识别。实际上,无论是用户点击还是自动请求,均是一个动态的、变化的、整体的过程,忽略了这个过程,可能就忽略了一些重要的特征。



技术实现要素:

本发明的目的在于克服现有用于识别用户点击的方法的部分不足,提出一种基于网络流的web用户点击目标识别的方法;是在网络侧,利用进出网络边界的ip流,根据http(s)请求产生的过程,从混杂的web数据流中区分出用户点击和自动请求分别产生的http(s)请求所对应的ip数据包,从而达到对用户点击的有效识别。

为了达到上述目的,本发明的技术方案如下:

一种基于网络流的web用户点击目标识别的方法,包括模型训练阶段和网络流识别阶段,其中:

模型训练阶段的过程为:

step1:在网络侧采集网络流数据;

step2:使用采集到的网络流数据构造训练样本;

step3:训练用户点击和自动请求的模型;

网络流识别阶段的过程为:

step4:提取需要识别的网络流的观测值;

step5:将观测值组成的观测序列输入到由step3训练好的模型;识别出网络流。

优选的,step1所述的在网络侧采集网络流数据,其过程为:在网络侧通过数据包采集软件抓取用户在进行web浏览过程中的网络数据包,若包含多个用户同时访问,则根据源ip地址对用户进行区分;

对于用于训练模型的网络流数据,需要获得每个请求对应的标签,具体是:通过浏览器插件获得用户的真实点击行为,再根据请求目标的url与网络流数据中相应的字段进行对比,以标记数据。

优选的,step2所述构造训练样本是:使用其后续的相邻两个请求间的时间差序列,来描述该请求产生的过程,同时使用z分数标准化这个序列,使所有用于描述过程的观测值落在固定的数值区间内;在构造描述此过程的序列时,取当前请求及其之后的5个请求构造描述过程的时间差序列时效果最好。此外,再使用当前请求与其前后请求的时间间隔,与上述标准化后的序列共同组成该段网络流的观测序列o1:t=o1o2o3…ot,其中o1,o2,o3…ot∈o。

优选的,step3所述的训练用户点击和自动请求的模型是基于hmm,通过对用户点击和自动请求产生的过程分别建模,其过程为:

对所有观测值进行聚类即可得到每条观测序列所对应的隐含状态序列s1:t=s1s2s3…st,其中s1,s2,s3…st∈s,且根据点击过程可知si的值取决于前面有限个状态;根据step1、step2中的描述,标准化之后的观测值会落在某个特定的数值区间内,则用s1表示在标准化后的数值区间内大于平均值的观测值对应的状态,用s2表示该区间内小于平均值的观测值对应的状态,s3表示rtt的数值大于10秒所对应的状态,s4表示rtt所对应的状态,s5表示rtt的数值小于0.1秒所对应的状态,s6表示剩下一些无法确定的数值所对应的状态;

hmm的参数为λ=(a,b,π),其中a为状态转移矩阵,表示状态间的转移关系,ai,j是矩阵a的第i行、第j列元素,表示si转移到sj的概率;b矩阵描述的是状态与观测值的对应关系,bi,j是矩阵b的第i行、第j列元素,表示si生成oj的概率;π为初始状态概率;

在此步骤中,需要训练两个模型,用户点击对应的模型λ1和自动请求对应的模型λ2,根据在step1中采集到的用户真实浏览行为,能对step2中构造的观测序列进行标记,将其分为其中为训练λ1的训练样本,为训练λ2的训练样本;具体训练过程如下:

(1)使用k-means聚类算法对训练样本中的所有观测值进行聚类,得到q个状态,以及对应的状态序列

(2)统计中时刻t处于状态i,在时刻t+1转移到状态j的频数为ai,j,则状态转移概率矩阵a的初始值为:

(3)为了便于实际工程应用,在计算过程中使用频率近似概率,计算前需要对观测值进行离散化,所以在所有观测值的最大值与最小值之间等间隔取k-1个点,产生k个区间,观测值落在每个区间的数量则为该区间的频数,此时便将连续的观测值转换成了k个离散值,则训练样本中状态为j,观测值为o,且o落在第k个区间的频数用bj,k(o)表示,其中k∈[1,k],那么观测概率矩阵b为:

(4)初始状态概率π为每个状态在n个状态序列中作为初始状态的概率;

(5)根据初始参数使用维特比算法重新计算对应的状态序列再重复步骤(2)、(3)、(4)获得新的模型参数λ(*),其中维特比算法如下所示:

维特比算法根据模型参数和观测序列,计算出对应的最优状态序列,也能将其看成状态转移的最优路径;首先导入两个变量δ和ψ,定义在时刻t状态为i的所有单个路径(i1,i2,…,it)中概率最大值为:

由定义可得变量δ的递推公式为:

定义在时刻t状态为i的所有单个路径(i1,i2,…,it-1,it)中概率最大的路径的第t-1个结点为:

首先进行初始化:

δ1(i)=πibi,k(o1),i=1,2,…,q

ψ1(i)=0,i=1,2,…,q

接着是递推;对t=2,3,…,t

终止

最优路径回溯;对t=t-1,t-2,…,1

求得最优路径即该观测序列在现有模型中对应的最佳状态序列;

(6)使用第(5)步中获得的新的模型参数λ(*),和训练样本通过维特比算法重新计算对应的状态序列再根据(2)、(3)、(4)重新估计模型参数λ(**);使用λ(**)替代λ(*)重复迭代此过程,当达到设定的最大迭代次数或迭代后观测序列相对于模型似然概率的差值小于设定阈值,即时,则停止迭代,获得最终的hmm模型参数λ=(a,b,π);

所以在经过step3后,会得到λ1和λ2;至此,就完成了对模型的训练。

优选的,网络流识别阶段的过程为:

根据step1采集需要识别的网络流数据,再根据step2中构造观测序列的方法提取采集到的数据的观测值,并组成观测序列该序列无标签;

分别输入到λ1和λ2,其中n∈[1,n],能计算在模型λ下观测序列o1:t出现的概率p(o1:t|λ),使用前向算法进行计算:

给定隐马尔科夫模型λ,定义到时刻t,观测到部分观测序列o1:t且状态为i的概率为前向概率,记作αi(t)=p(o1=o1,…,ot=ot,st=i|λ),能递推地求得:

αi(1)=πibi,k(o1)

则该观测序列对应的请求为用户点击产生,反之,则为自动请求;遍历完所有观测序列后,就完成了对该网络流的识别。

与现有技术相比,本发明技术方案的有益效果是:使用当前请求与前后请求时间差、当前请求与后续多个请求两两之间的时间差作为观测序列,从而达到建模或识别的目的。本发明所使用的方法基于过程,它克服了现有方法只在数据点层面进行识别的缺点,通过描述用户点击和自动请求产生的过程来进行识别,且适用于加密与非加密http流。在相同条件下,基于本发明设计的方法在识别效果上优于现有方法。

附图说明

图1为本发明方法总体流程示意简图。

图2为web流典型模式(模式一)示意图。

图3为web流典型模式(模式二)示意图。

图4为web流典型模式(模式三、四)示意图。

图5为web流典型模式对比(模式一、四)示意图。

图6为web流模式一与前一请求的时间间隔示意图。

图7为构造观测序列示意图。

图8为用户点击和自动请求可能的状态序列示意图。

图9为本发明方法总体具体流程示意图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;

对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。下面结合附图和实施例对本发明的技术方案做进一步的说明。

本方法总体流程示意图如图1所示,包括六个步骤,分别为:

步骤step1,在网络侧采集数据;

步骤step2,使用采集到的网络流数据构造训练样本;

步骤step3,训练用户点击和自动请求的模型;

步骤step4,提取需要识别的网络流的观测值;

步骤step5,将观测值组成的观测序列输入训练好的模型;

步骤step6,成功识别网络流。

本发明基于隐马尔科夫模型(hiddenmarkovmodel,hmm),通过对用户点击和自动请求产生的过程分别建模,最终达到识别任意一段网络流的目的。

相比其它方法,本方法的创新点在于:

1.通过单个特征来描述用户点击和自动请求的过程;

2.适用于加密与非加密http流;

3.基于网络流识别用户点击,有利于分析用户的完整web行为,不局限于特定服务器。因此,在相同复杂度的情况下,该发明技术在识别用户点击方面比其它现有方法拥有更好的性能。

下面结合图1,对本方法各个步骤内容进行详细说明。

step1:在网络侧采集数据

本发明在网络侧通过wireshark等数据包采集软件抓取用户在进行web浏览过程中的网络数据包。若包含多个用户同时访问,则需要根据源ip地址对用户进行区分。对于用于训练模型的网络流数据,需要获得每个请求对应的标签。本实施例通过浏览器插件获得用户的真实点击行为,再根据请求目标的url与网络流数据中相应的字段进行对比,以标记数据。

根据对采集到的web流进行分析,可以发现其具有以下几种典型的结构:

模式一如图2(省略了自动请求对应的响应)所示,为用户点击所产生的一般情况。当用户点击发生时,浏览器会发出一个携带相应url的http(s)请求,以请求下载该页面文件,在经过一个往返时间(round-triptime,rtt)后会收到与该请求对应的http(s)响应。收到响应后,浏览器会解析该页面,每当遇到嵌入在该页面文件中的资源(如图片、javascript脚本、css等)时,浏览器会自动发出相应的url以获取这些资源,生成最终页面。根据对数据的观察,用户点击发生之后的自动请求,呈现分批发出的形态,且根据页面复杂程度和网络延迟的不同,每次点击所产生自动请求的数量会不同,并且不同批次自动请求之间的时间间隔也会不同。

模式二如图3(省略了所有响应)所示,也为用户点击所产生的模式。在这种模式中,用户点击之后只有极少的自动请求或没有自动请求产生。有两种原因会导致这种情况:1.用户点击的为结构较简单的页面,如纯文本页面,这种页面在获得响应后即可获得全部资源,无需再加载其它页面内容;2.需要自动请求加载的页面已被缓存在浏览器中。

自动请求产生的模式比较复杂,本实施例以图2为例进行描述。在图2中,对于自动请求,如果从任意一个自动请求开始,取任意长度的请求序列,即可得到不同的模式。图4虚线框所示为自动请求产生的两种典型的模式。

模式三是指所有的自动请求均来自于同一批次,在这种模式下,所有请求在宏观上可以看成是具有并发性的,相邻自动请求间的时间间隔非常小,且这些时间间隔在数值上呈现一致性。这种请求发出的模式与模式二具有相似性,均为在相等时间间隔后发出下一个请求,区别只是时间间隔数值上的不同。

模式四是指前一批的自动请求的最后一个请求与后一批自动请求所产生的模式。如图5所示,这种模式与模式一具有相似性,均为在一个请求发出后,经过一个相对较大的时间间隔,又有n个批次的自动请求发出,且每批次中自动请求间的时间间隔值也可能相同。

step2:构造训练样本

构造训练样本和训练模型两步骤中需要用到的数据,已经用数学符号的形式抽象出来,相关的符号及定义在表1中给出。

表1相关数学符号

根据step1中所述四种模式,本实施例使用当前请求后续的相邻两个请求间的时间差序列,来描述该请求产生的过程,但由于模式一与模式四、模式二与模式三均具有相似性,所以需要使用当前请求与其前后请求的时间差作为区分标准。研究论文“vassio,l.,i.drago,andm.mellia,detectinguseractionsfromhttptraces:towardanautomaticapproach.2016.50-55.”表明,在一般情况下,两次点击的时间间隔服从均值为32秒的指数分布,这个时间已经足以使网站完全或将主要框架及内容加载成功,而所有的自动请求也会在相对较短的时间内全部完成。对于模式一,如图6所示,用户点击产生的请求与前一次点击的最后一个自动请求的时间间隔值远大于rtt,该请求与其下一个自动请求的时间间隔值约等于rtt;对于模式二,用户点击产生的请求与其前后请求的时间间隔值均远大于rtt;对于模式三,自动请求与其前一请求的时间间隔会随着该请求所在位置的不同而有所不同,但该请求与其后一请求只有极短的时间间隔;对于模式四,与模式三相反,自动请求与其后一请求的时间间隔会随着该请求所在位置的不同而有所不同,但该请求与其前一请求只有极短的时间间隔。

根据以上分析,对于当前请求,本发明使用其后续的相邻两个请求间的时间差序列,来描述该请求产生的过程,同时使用z分数标准化这个序列,使所有用于描述过程的观测值落在固定的数值区间内;在构造描述此过程的序列时,为了防止自动请求可能产生较多模式而影响训练效果,本发明在构造该序列时使用尽可能少的请求,经过反复测试对比,在请求数尽可能小的情况下,取当前请求及其之后的5个请求构造描述过程的时间差序列时效果最好。此外,再使用当前请求与其前后请求的时间间隔,与上述标准化后的序列共同组成该段网络流的观测序列o1:t=o1o2o3…ot,其中o1,o2,o3…ot∈o。

具体操作需要首先根据请求发出的目标ip对所有请求进行分组,在每个ip组上构造观测序列;后续操作如图7所示,横坐标代表时间,字母表示不同的请求,本实施例以构造请求a的观测序列为例。构造该序列需要取7个观测值,oi表示相邻两个请求发出时间的时间差。在组成观测序列之前,需要对o3:7进行标准化,以描述该请求发生后产生的过程,o1、o2为绝对数值。最后,观测序列o1:7的标签与请求a相同,即若a请求为用户点击,则该序列就为用户点击的训练数据,反之亦然。

step3:训练模型

本发明基于hmm,通过对用户点击和自动请求产生的过程分别建模,最终达到识别任意一段网络流的目的。

对所有观测值进行聚类即可得到每条观测序列所对应的隐含状态序列s1:t=s1s2s3…st,其中s1,s2,s3…st∈s,且根据点击过程可知si的值取决于前面有限个状态。根据step1、step2中的描述,标准化之后的观测值会落在某个特定的数值区间内,所以本实施例用s1表示经过标准化后的数值较大的观测值对应的状态,用s2表示经过标准化后的数值较小的观测值对应的状态,s3表示远大于rtt的数值所对应的状态,s4表示rtt所对应的状态,s5表示极小的数值所对应的状态,s6表示剩下一些无法确定的数值所对应的状态。所以,用户点击和自动请求可能的状态链如图8所示。

hmm的参数为λ=(a,b,π),其中a为状态转移矩阵,表示状态间的转移关系,ai,j是矩阵a的第i行、第j列元素,表示si转移到sj的概率;b矩阵描述的是状态与观测值的对应关系,bi,j是矩阵b的第i行、第j列元素,表示si生成oj的概率;π为初始状态概率。

在此步骤中,需要训练两个模型,用户点击对应的模型λ1和自动请求对应的模型λ2,根据在step1中通过浏览器插件采集到的用户真实浏览行为,可以对step2中构造的观测序列进行标记,将其分为其中为训练λ1的训练样本,为训练λ2的训练样本。具体训练过程如下:

(1)使用k-means聚类算法对训练样本中的所有观测值进行聚类,可以得到q个状态,以及对应的状态序列

(2)统计中时刻t处于状态i,在时刻t+1转移到状态j的频数为ai,j,则状态转移概率矩阵a的初始值为:

(3)为了便于实际工程应用,本方法在计算过程中使用频率近似概率,计算前需要对观测值进行离散化,所以在所有观测值的最大值与最小值之间等间隔取k-1个点,产生k个区间,观测值落在每个区间的数量则为该区间的频数,此时便将连续的观测值转换成了k个离散值,则训练样本中状态为j,观测值为o,且o落在第k个区间的频数用bj,k(o)表示,其中k∈[1,k],那么观测概率矩阵b为:

(4)初始状态概率π为每个状态在n个状态序列中作为初始状态的概率;

(5)根据初始参数λ(0)=(a(0),b(0)(0))和使用维特比算法重新计算对应的状态序列再根据式(2)、(3)、(4)获得新的模型参数λ(*),其中维特比算法如下所示:

维特比算法可以根据模型参数和观测序列,计算出对应的最优状态序列,也可以将其看成状态转移的最优路径。首先导入两个变量δ和ψ,定义在时刻t状态为i的所有单个路径(i1,i2,…,it)中概率最大值为:

由定义可得变量δ的递推公式为:

定义在时刻t状态为i的所有单个路径(i1,i2,…,it-1,it)中概率最大的路径的第t-1个结点为:

首先进行初始化:

δ1(i)=πibi,k(o1),i=1,2,…,q

ψ1(i)=0,i=1,2,…,q

接着是递推。对t=2,3,…,t

终止

最优路径回溯。对t=t-1,t-2,…,1

求得最优路径即该观测序列在现有模型中对应的最佳状态序列。

(6)使用第(5)步中获得的新的模型参数λ(*),和训练样本通过维特比算法重新计算对应的状态序列再根据(2)、(3)、(4)重新估计模型参数λ(**)。使用λ(**)替代λ(*)重复迭代此过程,当达到设定的最大迭代次数或迭代后观测序列相对于模型似然概率的差值小于设定阈值,即时,则停止迭代,获得最终的hmm模型参数λ=(a,b,π)。

所以在经过step3后,会得到λ1和λ2。至此,就完成了对模型的训练。

step4-6:对任意网络流的识别

根据step1采集需要识别的数据,再根据step2中构造观测序列的方法提取采集到的数据的观测值,并组成观测序列该序列无标签。

分别输入到λ1和λ2,其中n∈[1,n],可以计算在模型λ下观测序列o1:t出现的概率p(o1:t|λ),使用前向算法进行计算:

给定隐马尔科夫模型λ,定义到时刻t,观测到部分观测序列o1:t且状态为i的概率为前向概率,记作αi(t)=p(o1=o1,…,ot=ot,st=i|λ),可以递推地求得:

αi(1)=πibi,k(o1)

则该观测序列对应的请求为用户点击产生,反之,则为自动请求。遍历完所有观测序列后,就完成了对该网络流的识别。

上述六个步骤更加具体的流程如图9所示。

识别效果的展示及对比

对国内某高校网站进行web浏览,同时在网络侧采集浏览数据,之后使用本发明的方案提取采集到的数据的观测序列作为训练样本,共得到775个观测序列,其中为用户点击的有149个,为自动请求的有626个。将这些数据按照7:3的比例随机分为训练集和验证集,按照本发明的方案使用训练集进行训练,之后分别将训练集与验证集输入模型,对于得到的结果,使用查准率p和查全率r的调和均值来评价。查准率是指对于给定的测试数据集,预测结果为正例中的真正例比例;查全率是指对于给定的测试数据集,真实情况为正例中的真正例比例。在该结果中,用户点击为正例,自动请求为反例。查准率和查全率的调和均值又称f1,计算公式为:

对于训练集,使用本发明的方案得到的p、r、f1分别为0.910、0.991、0.949;对于验证集,使用本发明的方案得到的p、r、f1分别为0.947、0.973、0.960。效果较好。

还使用kappa系数来对结果进行评价,该指标用于衡量分类精度,计算公式为:

其中p0是观察到分类正确的比例,pe是由于随机性产生的分类正确的比例,训练集和验证集的kappa系数分别为0.936和0.950,可以认为与分类模型几乎完全一致。

对于相同数据集,还使用了服务器端基于文件类型识别用户点击的方法进行识别,去除文件后缀为gif、jpeg、gif、jpeg、jpg、jpg、css、js、map等的请求,将剩下的全部标记为用户点击;也使用了在网络侧效果最好的基于机器学习的方法对进行识别,但该方法需要依赖的特征较多,是从多个特征中共同学习到的结果,其中信息增益最高的特征只可在非加密的http流中提取到。上述两种方法与本发明所述方法的识别效果如表2所示。

表2各方法识别效果对比

本发明根据用户点击和自动请求产生的过程建模,所以会舍弃一些位于过程尾部的数据点,而这些数据点绝大部分是自动请求,对识别用户点击几乎没有影响。综合比较(表2),本发明选用单一特征,可用于加密流,且f1和kappa系数较高,所以本发明设计的方法性能更好。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1