论文部分内容阅读
摘要:在互联网迅速发展的时代,各种信息接踵而来,给人们获得信息带来便利的同时,也造成了不可避免的困扰:信息种类繁多,难以甄别;增速太快,难以准确获得自己所需要的信息,从而对信息的利用率降低,难以体现出信息时代给大家带来的优越性。由于信息超载的现象广泛存在,那么解决办法之一可以选择个性化推荐系统。它是根据用户的信息需求、兴趣等,将用户感兴趣的信息、产品等推荐给用户的一个个性化信息推荐系统。推荐系统通过研究用户数据,进行个性化计算,发现用户的兴趣偏好,从而引导用户发现自己的信息需求,准确找到信息资源,提高信息的利用价值。即个性化推荐系统是根据用户的兴趣爱好,推荐符合用户个性的信息或产品。
关键词:协同过滤;个性化推荐;应用
一、协同过滤算法的定义
协同过滤技术的基本思想是:利用一些兴趣爱好相似、拥有相同经验群体的偏好给目标用户推荐可能感兴趣的项目。协同过滤算法的实现大致分为构建用户,形成项目矩阵,寻找最近邻居,产生最相似推荐数据三个步骤。目前主要有两类协同过滤推荐算法:基于用户的协同过滤推荐算法和基于项目的协同过滤推荐算法。基于用户的协同过滤推荐算法是根据目标用户的最相似的若干用户对某个项目的评分,从中找到与目标用户最相似的用户,参考其对目标项目的评分,从而决定是否推荐给目标用户;基于项目的协同过滤推荐算法其总体思路就是根据用户的评价数据,为每个物品计算出与其评价最为相近的其他项目。然后,当我们想要为目标用户提供推荐的时候,就可以查看他曾经评分过的项目,并从中选出排位靠前的项目,再根据相关加权函數构建出一个加权列表,其中包含了与这些选中项目最为相近的其他项目。得到项目之间的相似性后,可以将与用户评价过的相似度较高的项目推荐给目标用户。
二、协同过滤算法的应用
随着图书馆馆藏图书资源的增多,以及计算机和网络技术的高速发展,各高校都建立起自己的图书借阅管理系统,利用积累的图书借阅历史资料,对符合学生兴趣并且适合个性发展的图书进行推荐,从而提高图书的利用率,减少学生寻找资料的时间,提高学习效率。
图书馆的推荐系统通过将学生读者的兴趣、借阅图书等信息与图书中的属性进行匹配,选择基于物品的协同过滤推荐算法,为学生提供相应的推荐图书。
首先构建学生信息数据库、图书信息数据库、借阅图书记录;然后,建立学生-图书评分矩阵;其次,判断用户是否有借阅记录,然后在根据不同的协同过滤推荐算法对学生进行图书的推荐。具体如下:
(一)根据数据库中的学生信息表(学生的基本信息以及喜欢的书籍类型等)及借阅信息,构建属于学生读者的特征向量,即学生读者模型;
(二)结合由(一)得到的学生读者模型和图书信息,构建图书模型,建立对应的特征向量;
(三)判断当前用户是新用户或老用户,若用户有借阅信息记录则为老用户,否则为新用户;
(四)对于老用户,若参考借阅信息记录,则由基于用户的协同过滤算法进行推荐;如果不参考借阅信息记录,则利用基于项目的协同过滤推荐算法进行推荐;
(五)对新用户,采用基于属性值偏好矩阵的最近邻推荐;
三、协同过滤算法在图书馆推荐系统应用的体现
图书推荐功能主要是根据学生的评分作为项,形成一个矩阵。当登录用户即学生读者对已经借阅的图书进行的评价与另一个学生用户已经借阅的图书的评价比较相似,那么就认为该用户与另一个学生用户是相似用户,也就是他的邻居。根据学生邻居集获得他们评分较高的图书集合,进而把这些图书集合推荐给相应学生,并显示到图书列表中。这样可以让学生直观地查看推荐图书情况。
所有这些功能的实现都是由以下代码所体现:
User 兴趣 ID
Book 书名
Evaluation 评价 书名 用户
User user = new User(userId);
//通过用户查询评价
List evaList = this.getEvaluation(user);
List bookList = new ArrayList();
if(null==evaList){
//新用户
bookList = this.getBooksByInterest(user.getInterest());
//按评价数对书籍进行排序
bookList = this.sortByEvaluation();
}else{
//有评价用户
List userList = this.getUsersByDistance(user);//获得最相近邻居的学生集
evaList = this.getBooksByDistance(userList);//获得最近邻居成绩记录
//按评价数进行排序
evaList = this.sortByEvaluation();
//将排序后的图书进行装载
for(Evaluation evaluation :evaList){
Book book = evaluation.getBook();
bookList.add(book);
}
}
//推荐评价高的书籍本数
int num=10;
List recommendBooks = new ArrayList();
if(null!=bookList){
for(int i=0;i recommendBooks.add(book);
}
}
return recommendBooks;
四、总结
协同过滤推荐算法是基于用户和项目的数据评分矩阵对用户信息进行表示,但是对于图书推荐系统而言的话,随着用户和图书项目数量的不断增加,协同过滤面临严峻的用户评分数据稀疏性问题,导致推荐质量迅速下降;对于图书推荐系统中的新用户而言,系统无法得知其兴趣爱好,无法推荐其相似用户,那么新用户是无法获得推荐书目的,从而导致冷启动问题的产生。所以要尽快解决这些问题的存在,改进算法,使得图书推荐系统可以更好地为学生服务,推荐高质量的图书。(作者单位:河北大学)
参考文献:
[1]李雅辉.基于协同推荐的高校个性化图书推荐系统.[J].2015(7)
[2]徐天伟.基于协同过滤的个性化推荐选课系统研究.[J].现代教育技术,2014,(6)
[3]李惠.一种新颖的协同推荐算法研究.[J].微电子学与计算机,2012(3)
[4]李聪,梁昌勇,马丽.基于领域最近邻的协同过滤推荐算法[J].计算机研究与发展,2008,45(9):1532-1538.
[5]Schafer.J.,et al.Collaborative filtering recommender systems.The adaptive web,2007.291-324.
关键词:协同过滤;个性化推荐;应用
一、协同过滤算法的定义
协同过滤技术的基本思想是:利用一些兴趣爱好相似、拥有相同经验群体的偏好给目标用户推荐可能感兴趣的项目。协同过滤算法的实现大致分为构建用户,形成项目矩阵,寻找最近邻居,产生最相似推荐数据三个步骤。目前主要有两类协同过滤推荐算法:基于用户的协同过滤推荐算法和基于项目的协同过滤推荐算法。基于用户的协同过滤推荐算法是根据目标用户的最相似的若干用户对某个项目的评分,从中找到与目标用户最相似的用户,参考其对目标项目的评分,从而决定是否推荐给目标用户;基于项目的协同过滤推荐算法其总体思路就是根据用户的评价数据,为每个物品计算出与其评价最为相近的其他项目。然后,当我们想要为目标用户提供推荐的时候,就可以查看他曾经评分过的项目,并从中选出排位靠前的项目,再根据相关加权函數构建出一个加权列表,其中包含了与这些选中项目最为相近的其他项目。得到项目之间的相似性后,可以将与用户评价过的相似度较高的项目推荐给目标用户。
二、协同过滤算法的应用
随着图书馆馆藏图书资源的增多,以及计算机和网络技术的高速发展,各高校都建立起自己的图书借阅管理系统,利用积累的图书借阅历史资料,对符合学生兴趣并且适合个性发展的图书进行推荐,从而提高图书的利用率,减少学生寻找资料的时间,提高学习效率。
图书馆的推荐系统通过将学生读者的兴趣、借阅图书等信息与图书中的属性进行匹配,选择基于物品的协同过滤推荐算法,为学生提供相应的推荐图书。
首先构建学生信息数据库、图书信息数据库、借阅图书记录;然后,建立学生-图书评分矩阵;其次,判断用户是否有借阅记录,然后在根据不同的协同过滤推荐算法对学生进行图书的推荐。具体如下:
(一)根据数据库中的学生信息表(学生的基本信息以及喜欢的书籍类型等)及借阅信息,构建属于学生读者的特征向量,即学生读者模型;
(二)结合由(一)得到的学生读者模型和图书信息,构建图书模型,建立对应的特征向量;
(三)判断当前用户是新用户或老用户,若用户有借阅信息记录则为老用户,否则为新用户;
(四)对于老用户,若参考借阅信息记录,则由基于用户的协同过滤算法进行推荐;如果不参考借阅信息记录,则利用基于项目的协同过滤推荐算法进行推荐;
(五)对新用户,采用基于属性值偏好矩阵的最近邻推荐;
三、协同过滤算法在图书馆推荐系统应用的体现
图书推荐功能主要是根据学生的评分作为项,形成一个矩阵。当登录用户即学生读者对已经借阅的图书进行的评价与另一个学生用户已经借阅的图书的评价比较相似,那么就认为该用户与另一个学生用户是相似用户,也就是他的邻居。根据学生邻居集获得他们评分较高的图书集合,进而把这些图书集合推荐给相应学生,并显示到图书列表中。这样可以让学生直观地查看推荐图书情况。
所有这些功能的实现都是由以下代码所体现:
User 兴趣 ID
Book 书名
Evaluation 评价 书名 用户
User user = new User(userId);
//通过用户查询评价
List
List
if(null==evaList){
//新用户
bookList = this.getBooksByInterest(user.getInterest());
//按评价数对书籍进行排序
bookList = this.sortByEvaluation();
}else{
//有评价用户
List
evaList = this.getBooksByDistance(userList);//获得最近邻居成绩记录
//按评价数进行排序
evaList = this.sortByEvaluation();
//将排序后的图书进行装载
for(Evaluation evaluation :evaList){
Book book = evaluation.getBook();
bookList.add(book);
}
}
//推荐评价高的书籍本数
int num=10;
List
if(null!=bookList){
for(int i=0;i
}
}
return recommendBooks;
四、总结
协同过滤推荐算法是基于用户和项目的数据评分矩阵对用户信息进行表示,但是对于图书推荐系统而言的话,随着用户和图书项目数量的不断增加,协同过滤面临严峻的用户评分数据稀疏性问题,导致推荐质量迅速下降;对于图书推荐系统中的新用户而言,系统无法得知其兴趣爱好,无法推荐其相似用户,那么新用户是无法获得推荐书目的,从而导致冷启动问题的产生。所以要尽快解决这些问题的存在,改进算法,使得图书推荐系统可以更好地为学生服务,推荐高质量的图书。(作者单位:河北大学)
参考文献:
[1]李雅辉.基于协同推荐的高校个性化图书推荐系统.[J].2015(7)
[2]徐天伟.基于协同过滤的个性化推荐选课系统研究.[J].现代教育技术,2014,(6)
[3]李惠.一种新颖的协同推荐算法研究.[J].微电子学与计算机,2012(3)
[4]李聪,梁昌勇,马丽.基于领域最近邻的协同过滤推荐算法[J].计算机研究与发展,2008,45(9):1532-1538.
[5]Schafer.J.,et al.Collaborative filtering recommender systems.The adaptive web,2007.291-324.