1关键技术与算法模型
1.1Web日志挖掘技术
Web日志挖掘技术是从Web服务器日志中获得有价值的用户访问模式,是对用户进行隐式跟踪技术方法之一[7]。通过分析和挖掘Web日志记录,可以分析掌握用户访问某个页面的次数、在某个页面停留的时间以及频繁访问模式,根据这些信息建立和更新用户兴趣模型进行人性化服务。Web日志挖掘要经过数据预处理、模式发现识别和模式分析3个阶段[8-10]。数据预处理的关键是要去除掉访问日志文件中的噪声,准确识别用户。模式识别是从预处理后的数据中通过关联规则、路径分析、序列模式、聚类等技术算法挖掘出潜在的访问模式,发现规则;模式分析是从模式发现识别所获得的大量信息中提取用户行为模式规则[11-12]。本系统研究与开发过程中,为了准确地分析用户访问的数据资源偏好,用户的准确识别和模式发现关联规则挖掘算法是本研究的主要关键。
1.2算法模型及改进
1.2.1IASR用户识别算法
IASR用户识别算法[13]是该研究提出的用于提高用户识别准确度的算法。准确识别用户是用户访问行为规则分析挖掘的基础。由于防火墙的设置等单纯通过IP地址、操作系统或浏览器来区别不同用户的方法不准确,影响分析挖掘的结果。为了解决上述问题,通常采用3条启发式原则判别[14-16],通过IP地址、操作系统与浏览器类型、网站拓扑结构的不同进行用户识别,但是这些方法还是有局限性,例如,当一个用户使用多种浏览器或直接在地址栏输入URL时会被认为是多个用户,具有相同IP地址的用户使用同种操作系统和浏览器也会被认为是同一个用户,造成用户识别不准确[17]。本研究提出了IASR(IPagentsessionreferrer)用户识别算法[13],引入了重写URL技术,采用会话(Session)识别机制,算法结合日志记录的IP、Agent、Session和Referrer4个字段信息联合识别用户,在前3条判别的基础上增加会话识别,识别原理如下:1)不同的IP地址代表不同的用户;2)如果IP地址相同,不同的客户端信息(操作系统、浏览器等)代表不同的用户;3)如果IP地址、客户端信息均相同,会话ID相同,则代表同一用户;4)如果IP地址、客户端信息均相同,会话ID不同,则根据网站拓扑结构来进行用户识别。如果用户请求的页面不能从其访问过的任何历史页面到达,则该用户被认为是一个新用户。重写URL用户跟踪算法,使每一条日志记录都包含会话ID标识,扩展3条启发式原则,解决用户识别过程中同一用户直接在地址栏输入URL,造成的“多用户问题”,摆脱了大多数用户识别算法都需要Cookie支持的依赖,试验表明,IASR算法将用户识别准确性提高了13%,与通用算法[13]相比速度提高了2倍,明显提高了用户识别算法的通用性和准确性。
1.2.2Apriori算法及改进
关联规则有2个表示规则强度的属性:支持度和置信度。支持度(support)是事务库中同时包含X、Y的概率,置信度(confidence)是包含X的事务中同时又包含Y的概率。Apriori算法是经典的关联规则挖掘算法[8,18],其基本思想分为2步:第一步是通过迭代,检索出事务数据库中的所有频繁项集,即支持度不低于用户设定的阈值的项集,第二步是利用频繁项集构造出满足用户最小信任度的规则。具体过程是首先找出频繁1-项集,记为F1;然后对F1进行连接运算产生候选项集C2,对C2中的项进行判定筛选得到频繁2-项集F2;依此迭代循环,直到不能找到频繁k-项集Fk。Apriori算法是一种多层迭代算法,存在2个弊端:1)连接运算产生大量的候选集,增加运算的复杂度;2)每次筛选频繁项集需要扫描整个事务数据库,增加系统I/O开销[19-21],当处理大量数据时会突显其性能的瓶颈问题。该文针对连接运算过程中产生大量候选集的问题,通过提前判断连接运算的有效性,来减少项集的连接运算和候选项集的产生数量,降低迭代运算量。连接运算有效性的判断规则是:2个频繁项集的公共元素的所有最大真子集分别与非公共元素的并集存在于当前频繁项集集合之中,则认为2个频繁集连接运算具有意义,连接形成的项集是潜在的频繁项集,否则该连接运算无意义。例如:频繁项集集合S={A,B,C},其中A={a,b,c},B={a,b,d},C={a,c,d},A和B的公共元素为{a,b},其最大真子集为:{a},{b},A和B的非公共元素为{c,d};最大真子集分别与{c,d}的并集为:{a,c,d},{b,c,d},因为S中不存在集合{b,c,d},所以A和B的连接运算无意义。图2表明改进算法在原Apriori算法流程中增加了连接判断过程,依照有效性判断规则判断连接运算是否具有意义,即是否形成潜在的频繁项集,忽略无意义的连接运算,降低迭代运算的开销,提高Apriori算法效率。
1.2.3改进算法试验与结果分析
试验主要针对Apriori算法和改进Apriori算法的效率进行对比测试,试验对象是渔业科学数据平台Web日志记录数据。测试过程中,2种算法的最小支持度,最小置信度始终保持一致。试验环境:计算机CPU为双核IntelQ6600,内存为3GB,操作系统为WindowsXP,试验算法语言Java。清理日志记录数据集合,形成以行记录形式的用户访问数据集合,从数据集合中随机抽取5组不同事务数目的数据样本,每组包含的事务数目分别为:100,200,500,1000,2000。针对每组数据样本,分别采用Apriori算法和改进算法进行算法测试,以对比测试为目的,试验主要收集和记录算法耗时和挖掘结果2个方面的数据,并从这2个方面比较Apriori算法和改进算法的执行效率,表1为试验结果。试验结果可以看出改进Apriori算法和Apriori算法的对比效果,当事务数目小于或等于500的时候,2种算法的执行效率大致相等;当事务数目大于500的时候,改进算法的执行效率远远优于Apriori算法,速度比Apriori算法提高6倍以上。
2系统实现
2.1开发环境与实现流程
编程语言:JAVA、AJAX,操作系统为WindowsXP,开发工具为MyEclipse,服务器软件Tomcat5.5,数据库SQLServer2005,采用MVC设计模式开发系统,实现流程如图3。构对规则有效性进行分析判定,对无意义的规则进行清理,确保挖掘出的规则具有实际应用价值。
2.2信息推荐功能实现
规则信息推荐以规则库作为推荐依据,当用户访问时点击某个数据资源页面时,服务器程序按照图4所示流程提取规则后件,通过元数据库解析形成主题信息关键字,结合先前获取的URL组成“关键字+链接”的相关记录,推送到当前访问的页面。数据预处理选取渔业科学数据共享平台的日志数据进行分析和挖掘,清洗去掉爬虫、js或css文件等访问记录,形成的日志记录集合,其中含有:访问用户名、页面的相对地址、页面的标题、渔业资源数据库编号及访问时间等,见表2。通过解析程序将标题、数据库编号解析出对应的数据记录、数据表名称。运用本研究创建的IASR算法进行用户识别,计算生成以用户为单位事务集合文件,每个事务包含一条或多条日志记录,对每个事务中的日志记录进行路径补全处理,形成完整有效的事务集合,再用本文中提出的改进的Apriori算法程序计算用户频繁访问模式,设置最小支持度和最小置信度,进行规则有效性判定,生成规则库,规则库采用XML文件的方式存储,每条规则包含3个字段:confidence、prefix和suffix,分别表示规则的置信度、规则的前件和规则的后件,依照推荐流程进行信息推荐。
作者:王立华 肖慧 徐硕 刘树 杜卫利 黄其泉 王宇 单位:中国水产科学研究院渔业工程研究所 中国水产科学研究院渔业信息工程研究中心 中国水产科学研究院渔业信息工程功能实验室 上海海洋大学信息学院