2.3 日志预处理
Web日志挖掘是为了从大量的Web日志数据中快速发现用户访问Web页面的模式,通过日志挖掘的过程完成对异常的检测。日志挖掘的步骤一般包括数据预处理、模式识别和模式分析,其中,数据预处理是首要阶段,并且数据预处理的结果将直接影响日志挖掘的质量[222]。数据预处理主要包括数据清洗、用户识别、会话识别和路径补充4个部分[221]。日志挖掘过程如图2.2所示。
图2.2 日志挖掘过程
(1)数据清洗。数据清洗指的是删除与算法无关的记录。只有当处理完该步骤后才能利用算法挖掘出真正精确的用户行为。除HTTP自身错误外,还需要过滤多余的页面,如包含图片、声音、视频等的页面,因为这些页面不能反映用户的真正请求。具体操作包括:①删除图片、音频、脚本和样式等多媒体文件,保留html文件;②删除状态码不为200或404的记录,即只保留状态码为200和404的记录;③删除请求方式不为get的记录;④清洗用户IP地址、访问时间、请求资源、状态码和特殊文件(robots.txt)记录与算法不相关的字段记录。
(2)用户识别。该步骤需要从日志请求中识别出与访问请求相对应的用户。基于文献[30],可按照下述原则进行识别:①将新的IP地址用户视为新用户;②将IP地址相同但访问软件不同或操作系统不同的用户,以及版本不同的软件用户视为新用户;③当IP地址相同但访问的网址之间不存在拓扑关联时,将用户视为新用户。
(3)会话识别。根据数据预处理过程及后续算法的需要,本书产生的用户会话是一个三元组<sessionID,userID,RT>,其中sessionID是会话标识,userID是用户标识,RT表示用户在一段时间内请求记录的页面集合。RT包含用户请求页面标识PID、请求时间t、状态码sc(只能是200或404)、是否存在特殊文件标识sf(只能是0或1,sf=0表示不存在特殊文件,否则表示存在特殊文件)。其中用户的IP、页面的url地址均映射为数字。因此,用户会话序列S表示为
用户会话序列S的举例如表2.2所示。
表2.2 用户会话序列S的举例
(4)路径补充。该步骤可理解为会话识别之后的进一步优化工作。但缓存等原因会导致用户请求页面的缺失,其他文献也提到了可以借助站点信息来构建完整的路径,一般可利用网络拓扑结构和用户访问顺序来实施此步骤。