3协同过滤算法简介
目前,推荐算法有很多种,可以应用于日常生活的许多领域,对大量数据进行处理和分析,然后进行分类。它将显示用户可能感兴趣的内容,这是推荐算法的主要功能之一[1]。
协同过滤算法通常包括两类:一类是基于用户的协同过滤算法,另一类是基于物品的协同过滤算法[2]。
3.1.1基于用户的协同过滤算法
根据用户的协同过滤算法的主要实现方式是,根据获取使用者的历史的一些活动统计(如使用者对职位的收集),并由此分析出使用者对某个工作类别的偏好,再根据判断用户偏好的重要程度,甚至是对某个工作类型的评价,把这种统计加以数字化,从而形成了使用者喜好的二维矩阵,同样的方法也可以用于其他应用,因此可以方便地使用找到相同的用户组,然后通过统计相似率计算用户之间的相似度,从而筛选出最相似的用户,类似用户首选且用户未收集的职位也推荐给用户[3]。然而⽤户有新⾏为,不⼀定会导致推荐结果的实时变化.
图3-1 基于用户的协同过滤原理
3.1.2基于物品的协同过滤算法
一个商品的协同过滤算法(ItemCF)是目前在业内运用得最为普遍的方法之一,在亚马逊、Netflix、以及YouTube的推荐方法的基本上都是采用ItemCF。它可以向客户介绍一个与他之前所感兴趣的东西类似的商品。比如:该方法会因你选择了《数据挖掘导论》而给你选择《机器学习》[4]。但是,ItemCF方法并不使用物体的内容属性统计物体内部的相似度,而主要是根据研究客户的行动记录统计物体内部的相似度。该方法还指出,商品A与商品B相互之间存在着较大相似度的原因,在于喜爱商品A的客户大都也喜爱商品B。
3.2 基于用户收藏的协同过滤算法实现
因为该课题是为了实现具有个性化推荐功能的校园兼职招聘平台,也因为利⽤用该⽤户的历史经验⾏为给⽤户提供了有理有据的推荐解释,如此才能够使⽤户⽐比较信服,所以本系统使用了基于物品的协同过滤算法,⽤户有新⾏为,它将导致用户的推荐结果发生实时变化[5]。基于物品的协同过滤算法的基础过程包括:
- 计算物品之间的相似度
基于余弦(Cosine-based)的计算方法,利用求二矢量间的角度余弦值来表达事物间的相似之处,方法为:其中分子是二矢量的内积,即二矢量相同距离的数字相乘。
公式 3-1
上述公式的分母是平均喜欢u项的用户数,分子是平均喜欢u项和v项的用户数。上述公式似乎非常合理,但如果V项非常流行,很多人都喜欢它,那么上面公式中的分子和分母将非常接近,w将非常接近1。也就是说,任何产品都是受欢迎的,即任何商品都和热门商品之间的相似度很高,这会导致ItemCF算法会总是推荐热门商品,这并不是一个好的设计[6]。因此可以采用下面的公式:
公式 3-2
- 按照商品的类似情况以及在校大学生的历史情况,给大学生形成选择清单
当构建起了物品的相似度矩阵以后,我们就要面对一个问题,便是怎样在多个相同的东西中选取用户最感兴趣的东西[7]。因此,ItemCF算法采用了下列公式方法统计用户u对物品j的感兴趣程度:
公式 3-3
上式中的N(u)是在校大学生喜欢的物品集合,S(j,K)是与物体j最接近的k个物体的组合,Wji是指物体j与i的接近程度,而Rui则是指在校大学生u对物体i的趣味。对上式的通俗意思是,对在校大学生u最喜欢的物品列表中的每一种物品i,都可以通过物品相似率矩阵找出与其最接近的K个物品,令为Kij,j=1,2,3,.K,然后通过物体的相同高度Wij来显示使用者对物体j的关心情况[12]。
最后将筛选出来的物品按照用户对其感兴趣程度逆序排序,取全体列表或者列表前K个物品推荐给用户,至此ItemCF算法完成[13]。
计算职位之间的相似度代码如下:
for(Recruit i:memberLove){ if(i.getId()!=j.getId()){//去重(两集合相同的职位去除掉) |
for(Recruit j:allRecruits){ |
计算推荐集代码如下:
Collections.sort(allRecruits,new CompareItTuijian()); |
获得所有用户收藏的职位集合A,去掉用户已收藏的职位形成集合B,建立职位相似度矩阵[14];计算共同喜欢职位i和j的用户数,再根据公式计算职位相似度。之后根据职位相似度计算各个职位的推荐度,计算并建立推荐集,按推荐度排序取前5个内容并且去除推荐度为0的职位。主要代码运行结果如下:
- 计算相似度部分,以一位用户为例
图3-2 相似度计算结果
- 计算推荐度部分过程,以一位用户为例
图3-3 推荐度计算结果
- 推荐结果,不同用户各不相同
第4章 概要设计
4.1 系统总体设计结构
此系统主要分为4个功能模块:
1、学生用户端模块
校园兼职招聘平台的学生用户模块包括新用户的注册登录,学生可以进行职位检索、查看详情、发布简历、收集职位、评估职位、创建和删除简历,以及查看已发布简历的状态与企业反馈的信息等操作。
2、企业用户端模块
校园兼职招聘平台的企业用户模块包括企业信息的编辑,职位的发布与删除,以及查看学生的求职简历,并且给予反馈等操作
3、系统管理员端模块
系统管理员可以控制所有用户的有关权限,同时对所有客户的有关资料和所有客户的有关资料进行控制,并能够对系统的行业信息进行控制
4、智能推荐模块
主要是协同过滤算法的实现,通过算法进行智能的为不同用户推送相应职位
功能模块图如图4-1所示:
图4-1 功能模块图