/**
*作者:张荣华
*日期:2008-3-9
**/
先说一说问题,不知道大家有没有这样的经验,反正我是经常碰到。
举例1,某些网站每隔几天就发邮件给我,每次发的邮件内容都是一些我根本不感兴趣的东西,我不甚其扰,对其深恶痛绝。
举例2,添加具有某功能的一个msn机器人,每天都有几次突然蹦出一个窗口,推荐一堆我根本不想知道的内容,烦不烦啊, 我只好将你阻止掉。
每一个观众只想看他感兴趣的东西,而不是一下与之无关的事物,那么如何才能知道观众的兴趣所在呢,还是数据挖掘,经过一番思考,终于有点思路,即根据用户以往的浏览历史来预测用户将来的行为,也就是基于内容的推荐。
基于内容的推荐(Content-based Recommendation)是信息过滤技术的延续与发展,它是建立在项目的内容信息上作出推荐的,而不需要依据用户对项目的评价意见,更多地需要用机器学习的方法从关于内容的特征描述的事例中得到用户的兴趣资料。在基于内容的推荐系统中,项目或对象是通过相关的特征的属性来定义,系统基于用户评价对象的特征,学习用户的兴趣,考察用户资料与待预测项目的相匹配程度。用户的资料模型取决于所用学习方法,常用的有决策树、神经网络和基于向量的表示方法等。基于内容的用户资料是需要有用户的历史数据,用户资料模型可能随着用户的偏好改变而发生变化。
基于
内容推荐方法的优点是:
1)不需要其它用户的数据,没有冷开始问题和稀疏问题。
2)能为具有特殊兴趣爱好的用户进行推荐。
3)能推荐新的或不是很流行的项目,没有新项目问题。
4)通过列出推荐项目的内容特征,可以解释为什么推荐那些项目。
5)已有比较好的技术,如关于分类学习方面的技术已相当成熟。
缺点是要求内容能容易抽取成有意义的特征,要求特征内容有良好的结构性,并且用户的口味必须能够用内容特征形式来表达,不能显式地得到其它用户的判断情况。
要实现内容推荐系统总体来说要经过4个大的步骤:
1 搜集数据,即搜集用户的行为资料,其中也包括很多方法,根据我找到的资料与以往的经验来看,web日志可以作为我们的切入点,即我们的数据来源。
2 过滤数据,web日志中有很多无用的信息,我们要把这些无用的信息排除掉,而且要区分出用户和日志数据之间的联系。
3 分析数据,利用分类聚类技术分析出这些日志数据之间的关联性,以及这些日志数据和用户之间的关联性,这也是最重要的一步。
4 输出结果。
有了这个思路之后,我们可以着手做第一步,即日志数据的收集
我们知道,大多数的web服务器都是有自己的日志记录的,比如说apache安装之后有一个logs目录,其中就有它的日志文件,一般说来它有自己的一个格式,比如说:
1浏览器所在主机的 IP 地址(ip); 2访问日期和时间(date-time);3客户机与服务器通信所用的方法(methed,get or post); 4客户机请求访问页面的 URL; 5服务器返回的状态(status); 6客户端浏览器的类型;
但是这个日志文件有一些不能克服的问题,或者我不知道如何克服,那么我先说说我的疑问,首先,这个日志文件中记录的是ip地址,据了解,网络中有很多计算机的ip地址是相同的,因为他们在一个统一的路由后面,这个比例可能达到25%。那么我们就无法根据ip地址来唯一确定一个用户。其次,一般的web服务器中都会用多个应用,那么其他应用的访问信息对我们来说有可能是多余的。再者,web服务器的日志形式比较单一,灵活性不大,可定制的余地很小,在日志数据中有效数据所占的比例较小。还有,一些静态文件的请求也会被web服务器记录下来,比如说js文件,css文件,还有图片文件,等等这些东西对内容推荐来说都是无用的资源。
基于上面3点原因,我认为可以自定义日志数据。为了解决用户唯一性,我们让应用为每一个浏览器生成一个clientId保存在对应的浏览器上,这样该浏览器只要访问网站,我们就可以确定这个浏览器的唯一性,当然我们仍然不能确定浏览器使用者的唯一性,但是我们可以更进一步,如果浏览器的使用者登陆网站的话,我们就可以使用用户id来确定用户的唯一性,不过大多数网站用户可能在使用网站的时候并不会登陆,我也是这样,没有关系,即使使用clientId问题也不会太大,随着社会的发展,计算机的拥有量逐渐增加,一般来说一个人只会使用一台固定的电脑,在公司里尤其是这样。所以我认为clientId的方案是可行的,也许有人要问,别人的浏览器禁止了cookie怎么办,那么我只能说没有办法,不过还好事实是绝大多数人都没有这样做。
接下来我们可以定义一下我们所需要的日志数据的格式,比如这样,
ip,clientId,userId,url,datetime,get or post等等。
这样数据有效性会大大提高。
在得到较为有效的数据之后,我们还需要对这些数据进行再次过滤:
1 去掉一些非内容的url,这些数据也是无效数据,这些非内容的url需要我们自己手工的统计出来,然后和日志数据中的数据进行比对,将这些非内容数据从日志数据中清除出去。
2 同时我们也需要把post请求从日志数据中清除出去,或者我们在记录日志的时候根本不应该把post请求记录下来。
经过以上步骤之后我们就可以开始第3个阶段了,统计每个用户的访问的url,对这些url进行访问,得到对应的html中所包含的数据,这些数据都是文本,将有用的文本提取出来,然后对这些有用的文本进行聚类。这样就可以得到每个用户喜欢的几个类别。
聚类完成之后我们就可以开始分类了,即把最新的文章或者内容和对应的类别进行匹配,匹配成功之后,我们可以认为这个新文章或者内容可以推荐给对应的用户。
问题:以上的流程只适用于没有使用缓存的系统,但是一般大型的网站都会使用varnish,squid等等,使用它们之后我们就无法得到用户访问的日志数据了,所以如果使用了varnish或者squid,我们不得不再次面对web服务器的日志数据。
在不考虑varnish或者squid的情况下,使用lucene+jamon+htmlparse基本就可以实现以上推荐系统。
分享到:
相关推荐
Web日志挖掘是指通过对Web服务器日志进行数据分析,揭示用户访问模式及其行为特征的一种数据挖掘方法。随着互联网的发展,Web日志挖掘成为了一个重要的研究方向,它可以帮助网站优化结构、提高性能,并为用户提供更...
毕设-基于web日志挖掘的网络教学系统的设计与实现,整个项目采用MyEclipse+MySQL+JDK1.7工具,已上传资源包括源码及sql数据库,导入可直接运行;采用SSH框架实现课程管理,作业管理,学生在线学习,交互式通信,资源...
基于web日志数据挖掘的电子商务推荐系统实现
基于Web日志挖掘的网页推荐系统通过理解用户的行为模式,提供个性化服务,帮助用户在海量信息中快速找到所需内容。这种系统依赖于有效的数据预处理和关联规则挖掘,以及对用户偏好的精确分析,从而提高用户体验和...
### 基于Web日志挖掘的网页推荐系统设计 #### 概述 随着互联网的飞速发展,网络信息量呈现出爆炸式增长的趋势。面对如此庞大的信息资源,用户需要一种高效的方式来快速找到他们真正感兴趣的内容。为了满足这一需求...
其中面向服务器Web日志的Web日志挖掘尤其得到了研究者的关注本文在Web日志挖掘技术方面开展了一些研究工作。首先系统地介绍了数据挖掘和Web数据挖掘的基本概念和方法。然后针对Web日志挖掘,重点研究了Web日志数据...
数据库系统实现论文之“数据仓库系统实现之挖掘WEB日志”
### 通用Web日志挖掘系统设计实现:...综上所述,通用Web日志挖掘系统的设计与实现不仅是一门技术的创新,更是对互联网数据价值深度挖掘的体现,对于提高网站服务质量、优化用户体验、促进电子商务发展具有重要意义。
web mining_xml web日志挖掘
在设计基于Hadoop的Web日志挖掘平台时,研究者们采用了Hadoop的集群框架,利用MapReduce编程模式来实现数据的分布式处理。这种设计能够充分利用云计算环境下的多节点计算资源,显著提升Web日志数据的处理速度和效率...
Web日志挖掘是互联网数据分析的重要组成部分,它通过分析网站服务器上记录的用户访问日志来发现用户的浏览行为模式。在Web日志挖掘领域,传统的方法往往难以准确地跟踪用户兴趣的变化,因为用户的浏览兴趣是动态变化...
综上所述,《网络日志挖掘在远程教育系统中的应用》一文通过对网络日志挖掘技术的详细讲解和实际案例分析,为我们展示了如何利用这一技术提升远程教育系统的效能,实现对学生个性化需求的精准满足,为推动远程教育向...
基于Hadoop的Web日志挖掘是指使用Hadoop大数据处理技术对Web日志进行挖掘和分析的过程。Web日志挖掘是指从Web日志中提取有价值的信息,以便更好地了解用户行为、优化网站性能和改进网站设计。 在基于Hadoop的Web...
1. 提供个性化推荐服务:图书馆可以利用Web日志挖掘技术,根据用户的阅读习惯、专业领域和研究兴趣,向用户推荐相关的栏目内容和信息。这种服务可以实现按需定制,但前提是用户愿意提供个人详细信息。 2. 增强网站...
当前Web日志挖掘研究主要分为两种方向:一是关注网页,通过统计分析发现用户对特定网页的兴趣和潜在关联;二是聚焦用户,以会话为单位进行聚类分析,揭示用户行为模式。WLM模型则试图融合这两者,兼顾长期稳定性和...
Web日志数据挖掘的个性化推荐系统的探析.pdf