web数据挖掘在远程教育中的应用 - 下载本文

第3章 Web使用挖掘在远程教育中的应用

图 3-2 部分处理后的日志项 Figure 3-2 Some preprocessed logs

接下来是用户识别和会话识别阶段。在代码中,对于用户的识别是根据用户的IP地址和用户的系统信息来完成的,简单地说,只有IP地址和系统信息都一样的情况下才识别为一个用户。会话识别的时候采用的是面向时间的探索法,也就是通过超时技术来识别一个用户的多次会话的。在代码中,设置的超时时间为30分钟,也就是如果一个用户在30分钟内没有任何操作则认为本次会话结束,即使此人在30分钟以后的某个时间又访问了某些页面,那么也不认为属于本次会话,而是下次会话的开始。会话识别的实现采用每次从文件中读取一条Log信息,然后逐一进行处理,为了节省内存开销以处理大规模数据,当能够确定某一会话结束时,则将此会话保存到文件中。会话识别中处理一条Log的主干代码如图3-3所示:

table变量记录着当前可能的会话,采用字典的形式存储,使用用户的IP地址+系统信息作为键值,对应的值中包含当前访问者已经访问过的页面集合以及最后一次请求的时间。miniLastVisitTime变量中记录着当前table中所有最后访问者的最早的访问时间。isFirstTrans是判断当前的是否是处理的第一条Log或者当前的table变量是否为空,如果是,则miniLastVisitTime还没有赋值,需要用当前Log的时间对其复制。接下来判断当前是否已经有某些会话已经超时了,如果超时,则更新table,也就是将最后访问时间与当前Log的时间差半小时以上的会话从table中移除,同时保存到文件中。接下来判断当前访问者是否已经存

-35-

北京工业大学工程硕士学位论文 在于table中,如果是,则说明当前存在此访问者的会话,只需要将在对应的事务中添加此页面同时将最后的访问时间更新为当前的Log的时间即可。如果table中不存在当前访问者的会话,则构造一个会话加入到table中,会话中访问的页面集合只包含当前访问的页面,会后的最后访问时间为当前Log的访问时间。

图 3-3 会话识别中处理一条Log的主干代码 Figure 3-3 The main code of processing a row log

重复执行以上操作直到所有的Log都处理完毕则形成了所有的会话,需要注意的一点是在处理完最后一条会话时需要判断当前table中是否为空,如果不为空,则将当前table中的数据也一并保存到文件,保证数据的完整性。图3-4给出了程序所识别的部分会话序列:

-36-

第3章 Web使用挖掘在远程教育中的应用

图 3-4 程序识别的部分会话序列 Figure 3-4 Some of identified sessions

其中整数是页面的编号,每一行是一个会话,例如第一个会话说明访问者访问了24,26,27,28,35所代表的页面。页面的排列不是按照用户的访问序列排序的,而是按照页面对应编号的代码排列的。这样做有助于降低Apriori算法分析时的复杂性。通过对254767条log数据的分析,识别出的会话数量为53912。平均每一条会话访问的页面的数量为4.7。

到此,数据预处理部分的实现已经叙述完成,通过以上分析,本文对于数据预处理的实现代码对系统要求不高,无论数据量大小为多大,在任何时间点内存中存储的信息都是很少的,因此适合处理任意规模的Log信息,这对于具有海量信息的远程教育网站是很重要的。接下来,将介绍Apriori算法的实现。

3.3.2 使用Apriori算法发现关联规则

Apriori算法的实现完全参照3.2.2节中描述的Apriori算法的伪代码进行,算法分为两个部分:频繁项目集的生成和规则的生成。

-37-

北京工业大学工程硕士学位论文 频繁项目集的生成部分,需要设置的参数为最小支持度,表3-10显示了将支持度设置为0.001时k-频繁项目集统计:

表3-10 将支持度设置为0.001时k-频繁项目集统计 Table 3-10 The account of k-frequent itemset (sup=0.001)

k 1 2 3 4 >4

数量 506 122 46 4 0 最大出现次数 15669 5245 1389 167 0 前一节已经得出,会话的数量为53912,因此可以得出1-频繁项目集的最大支持度0.29,2-频繁项目集的最大支持度为0.097,3-频繁项目集为0.026,4-频繁项目集为0.003。可以看出,对于此数据集,频繁项目集的支持度很低,因此想要获得一定规模的频繁项目集和规则,需要将支持度设置得比较小。此外,通过对会话数量的统计,可以计算得到会话中只包含1个页面的会话数量为:26857,只包含2个页面的会话数量为:9382,只包含三个页面的会话数量为:5142。这些含有页面数量很少的会话严重影响了频繁项目集的发现,因此可以考虑对数据进行整理,去除含有页面较少的会话以增加频繁项目集的数量,图3-4中显示了去除部分会话后部分频繁项目集的数量(最小支持度仍然选择0.001)。其中横坐标轴不是项目集的频繁度,也就是k-频繁项目集的k。纵轴表示的对应的频繁项目集的数量。

从图3-4中可以看出,频繁项目集的数量随着去除的会话数量的增加而增加。诚然,这样做对于最终对于用户行为的分析是否有好处还不明确,但是单从频繁项目集的数量上看,这样做使得频繁项目集的发现数量明显变大。

-38-

第3章 Web使用挖掘在远程教育中的应用

10009008007006005004003002001000不删除会话删除<2的会话删除<3的会话删除<4的会话1234

图3-4 去除部分会话后部分频繁项目集的数量

Figure 3-4 The number of frequent itemset after removing some sessions

完成了对频繁项目集的发现,接下来要做的就是通过频繁项目集生成规则,在这部分代码的实现时,同样是按照3.2.2节中给出的伪代码进行的。首先,图3-5给出程序所生成的部分关联规则(最小支持度为0.01,最小置信度为0.5)。

图3-5 程序所生成的部分规则

Figure 3-5 Some rules generated by the program

-39-

福利:打开支付宝首页搜索“608066754”即可领取红包,吃个早点,买杯饮料肯定够了,红包加倍最高可以领取99元红包!

「觉得内容不错,打赏支持一下」

南京廖华

觉得内容不错,打赏支持一下

使用微信扫描二维码完成支付

福利:打开支付宝扫描二维码领红包,可免费下载资料 微信:17702577729