南京邮电大学2014届本科生毕业设计(论文)
表2.1 主要推荐算法对比 推荐方法 基于内容推荐 优点 推荐写过直观,容易解释; 不需要领域知识; 协同过滤推荐 缺点 复杂属性不好处理;新用户问题; 难以挖掘新兴趣; 发现新兴趣;不需要领域知识; 稀疏问题;新用户问题; 推荐个性化、自动化程度高; 可扩展性问题; 能处理复杂的非结构化对象; 基于规则推荐 能发现新兴趣; 不需要领域知识; 规则抽取难,耗时; 产品名统一性问题; 个性化程度低; 基于效用推荐 无冷启动和稀疏问题; 对用户偏好变化敏感; 能考虑非产品特征; 用户必须输入效用函数; 推荐是静态的,灵活性差; 属性重叠问题; 基于知识推荐 能把用户需求映射到产品上; 知识难获得; 能考虑非产品属性; 推荐是静态的;
2.2基于内容的推荐算法
根据基于内容推荐原理,生成推荐的过程主要分为三步:1.提取特征信息。为项目提取出来一些特征向量来表示该项目。2.用户配置文件生成。由用户过去喜欢项目的特征,来推算用户的喜好特征。3.产生推荐。计算出用户配置文件和项目特征向量间的相似度,推荐相似度大的项目。
一.特征向量的提取
在获取信息时,最常用的方法就是TF—IDF方法。该方法是找到出现次数最多的词。但如果一个词在所有的文章中出现次数的都比较多,那么这个词很大程度上不能反映这篇文章的内容;而某个词比较少见,但是在这篇文章中出现多次,那么它就很大程度上可以反映这篇文章的内容,即我们所需要的关键词。我们需要加一个调整系数,较常见词赋予较小的权重,较少见的词赋予较大的权重。这个权重叫做“逆文档频率”(IDF)。知道了“词频”(TF)和“逆文档频率”(IDF)以后,将这两个值相乘,就得到了一个词的TF-IDF值。某个词对文章的重要性越高,它的TF-IDF值就越大。实现如下:
设有N 个文本文件, 关键词ki 在ni 个文件中出现, 设f ij 为关键词k i 在文件d j 中出现的次数, 那么ki 在d j 中的词频T Fij 定义为:
TFij?fijmaxzfzj (2.1)
其中分母的最大值可以通过计算dj 中所有关键词k z 的频率得到。在许多文件中同
- 7 -
南京邮电大学2014届本科生毕业设计(论文)
时出现的关键词对于表示文件的特性, 区分文件的关联性是没有贡献的. 因此T Fij 与这个关键词在文件中出现数的逆( ID Fi ) 一起使用, ID Fi 的定义为:
IDFi?logN (2.2) ni那么, 一个文件dj 可以表示为向量d j = ( w1 j ,w2 j , ?, wkj ) , 其中
wij?fijmaxzfzjlogN (2.3) ni
二.用户配置文件的建立
在学习用户喜好的配置文件时,也有多种方法。 1.最近邻方法(k-Nearest Neighbor,简称kNN)。对于一个新的item,最近邻方法首先找用户u已经评判过并与此新item最相似的k个item,然后依据用户u对这k个item的喜好程度来判断其对此新item的喜好程度。 2.Rocchio算法。 Rocchio算法是信息检索中处理相关反馈(Relevance Feedback)的一个著名算法。该算法获得用户u的profilewu的方法为: 1wu???|Ir|???wj?Ir1wj?????|Inr|?wk?Inr??w?k (2.4) 其中wj表示item j的属性,Ir与Inr分别表示已知的用户u喜欢与不喜欢的item集合;而?与?为正负反馈的权重,它们的值由系统给定。在获得wu后,对于某个 给定的item j,我们可以使用wu与wj的相似度来代表用户u对j的喜好程度。Rocchio算法的一个好处是wu可以根据用户的反馈实时更新,其更新代价很小。 3. 决策树算法(Decision Tree,简称DT)。当item的属性较少而且是结构化属性的时候,决策树可以产生简单直观、容易让人理解的结果。而且可以把决策树的决策过程展示给用户u,告诉他为什么这些item会被推荐。
4. 线性分类算法(Linear Classifer,简称LC)。以学习用户u的分类模型为例。
wj表示item j的属性向量,那么LC尝试在wj空间中找平面cu?wj,使得此平面
????????尽量分开用户u喜欢与不喜欢的item。其中的cu就是我们要学习的参数了。最常用的学习cu的方法就是梯度下降法了,其更新过程如下:
?(t?1)??cu:?cu??(cu?wj?yuj)wj (2.5)
- 8 -
?(t)?(t)??5. 朴素贝叶斯算法(Naive Bayes,简称NB) 现在计算配置文件问题中包括
南京邮电大学2014届本科生毕业设计(论文)
两个类别:用户u喜欢的item,以及他不喜欢的item。在给定一个item的类别后,其各个属性的取值概率互相独立。我们可以利用用户u的历史喜好数据训练NB,之后再用训练好的NB对给定的item做分类。
在本系统中,我采用统计用户曾经操作过的图书的关键字,进行词频统计,统计出来的结果取前10个词来建立用户的配置文件。
三.相似度算法
最后一步的推荐产生,如果上一步配置文件中使用的是分类模型,那么我们只要把模型预测的用户最可能感兴趣的n个item作为推荐返回给用户即可。而如果配置文件中使用的直接学习用户属性的方法(如Rocchio算法),那么只要把与用户属性最相关的n个item作为推荐返回给用户即可。如果需要计算相似度,常用的相似度的计算方法有欧氏距离,夹角余弦,汉明距离,杰卡德距离和杰卡德相似系数等。根据文献资料调研得知,在推荐系统中计算相似性一般采用余弦距离或者杰卡德系数。下面介绍两种计算方法。 1.余弦夹角
在二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式为:
cos??x1x2?y1y2x1?y122x2?y222 (2.6)
类似的,对于两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用类似于夹角余弦的概念来衡量它们间的相似程度。即:
ncos???xk?11kx2k?xk?1n21k?xk?1n (2.7)
22k夹角余弦取值范围为[-1,1]。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。
2.杰卡德相似系数
杰卡德相似系数是衡量两个集合的相似度一种指标。两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示。
J(A,B)?|A?B| (2.8)
|A?B|A与样本B是两个n维
将杰卡德相似系数用在衡量样本的相似度上时,样本
向量,而且所有维度的取值都是0或1。例如:A(0111)和B(1011)。我们将样本看成是一个集合,1表示集合包含该元素,0表示集合不包含该元素。p :样本A与
- 9 -
南京邮电大学2014届本科生毕业设计(论文)
B都是1的维度的个数;q :样本A是1,样本B是0的维度的个数;r :样本A是0,样本B是1的维度的个数;s :样本A与B都是0的维度的个数。那么样本A与B的杰卡德相似系数可以表示为:
J(A,B)?p (2.9)
p?q?r分母之所以不加s的原因在于对于杰卡德相似算法来说,它处理的都是非对称二元变量。非对称的意思是指状态的两个输出不是同等重要的,杰卡德相似度算法没有考虑向量中潜在数值的大小,而是简单的处理为0和1,不过,做了这样的处理之后,杰卡德方法的计算效率肯定是比较高的,毕竟只需要做集合操作。并且本系统对图书的内容进行分解出来的关键词很多,如果在计算相似度时采用余弦计算,那么对关键词降维是很困难的,采用杰卡德算法避免了这一麻烦。
2.3实现使用的环境工具及技术
一.开发环境
本次实现所用到的开发环境为MyEclipse 8.5,MySql数据库,tomcat。 1.MyEclipse8.5
MyEclipse(MyEclipse Enterprise Workbench ,简称MyEclipse)企业级工作平台,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,,SQL,Hibernate。同时支持AJAX,Hibernate,JSF,Struts,Spring, EJB3,JSP,JDBC,JavaServlet和数据库链接工具等多项功能。
2.MySql数据库
MySql是一个快速、多线程、多用户的SQL数据库服务器。其优点有: (1)MySql的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。用多线程和C语言实现的MySql能很容易充分利用CPU。
(2)MySql可运行在不同的操作系统下。
(3)MySql有一个非常灵活而且安全的权限和口令系统。当客户与MySql服务器连接时,他们之间所有的口令传送被加密,而且MySql支持主机认证。 (4)MySql拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性。事实上,MySql的稳定性足以应付一个超大规模的数据库。
3.Tomcat
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应
- 10 -
相关推荐: