加入收藏
设为首页
关于我们
您现在的位置: 101美术高考网 >> 论文中心 >> 计算机 >> 计算机理论 >> 文章正文
  论生物信息学系统设计中引进推荐系统         ★★★★
论生物信息学系统设计中引进推荐系统
作者:101ms.com 文章来源:中国论文下载中心 点击数: 更新时间:2008-11-29 11:49:08

  摘要:在生物信息学系统设计中引进推荐系统,提出具有个性化服务的生物信息学网站模型,完成生物信息学推荐系统的设计和实现,体现出推荐系统在生物信息学中使用的必要性和优越性。 
  关键词:推荐系统;生物信息学 
   
  推荐系统(Recommender System) [1]是个性化信息服务的主要技术之一,它实现的是“信息找人,按需服务”;通过对用户信息需要、兴趣爱好和访问历史等的收集分析,建立用户模型,并将用户模型应用于网上信息的过滤和排序,从而为用户提供感兴趣的资源和信息。生物信息学(Bioinformatics)[2,3]是由生物学、应用数学和计算机科学相互交叉所形成的一门新型学科;其实质是利用信息科学的方法和技术来解决生物学问题。20世纪末生物信息学迅速发展,在信息的数量和质量上都极大地丰富了生物科学的数据资源,而数据资源的急剧膨胀需要寻求一种科学而有力的工具来组织它们,基于生物信息学的二次数据库[4]能比较好地规范生物数据的分类与组织,但是用户无法从大量的生物数据中寻求自己感兴趣的部分(著名的生物信息学网站NCBI(美国国立生物技术信息中心),仅仅是小孢子虫(Microsporidia)的DNA序列就达3 399种),因此在生物二次数据库上建立个性化推荐系统,能使用户快速找到自己感兴趣的生物信息。特别是在当前生物信息数据量急剧增长的情况下,生物信息学推荐系统将发挥强大的优势。 
   
  1推荐系统的工作流程 
   
  应用在不同领域的推荐系统,其体系结构也不完全相同。一般而言,推荐系统的工作流程[5]如图1所示。 
   (1)信息获取。推荐系统工作的基础是用户信息。用户信息包括用户输入的关键词、项目的有关属性、用户对项目的文本评价或等级评价及用户的行为特征等,所有这些信息均可以作为形成推荐的依据。信息获取有两种类型[6],即显式获取(Explicit)和隐式获取(Implicit),由于用户的很多行为都能暗示用户的喜好,因此隐式获取信息的准确性比显式高一些。 
  (2)信息处理。信息获取阶段所获得的用户信息,一般根据推荐技术的不同对信息进行相应的处理。用户信息的存储格式中用得最多的是基于数值的矩阵格式,最常用的是用m×n维的用户—项目矩阵R来表示,矩阵中的每个元素Rij=第i个用户对第j个项目的评价,可以当做数值处理,矩阵R被称为用户—项目矩阵。 
  (3)个性化推荐。根据形成推荐的方法的不同可以分为三种,即基于规则的系统、基于内容过滤的系统和协同过滤系统。基于规则的推荐系统和基于内容过滤的推荐系统均只能为用户推荐过去喜欢的项目和相似的项目,并不能推荐用户潜在感兴趣的项目。而协同过滤系统能推荐出用户近邻所喜欢的项目,通过用户与近邻之间的“交流”,发现用户潜在的兴趣。因此本文所用的算法是基于协同过滤的推荐算法。 
  (4)推荐结果。显示的任务是把推荐算法生成的推荐显示给用户,完成对用户的推荐。目前最常用的推荐可视化方法是Top-N列表[7],按照从大到小顺序把推荐分值最高的N个事物或者最权威的N条评价以列表的形式显示给用户。 
   
  2生物信息学推荐系统的设计 
   
  综合各种推荐技术的性能与优缺点,本文构造的生物信息学推荐系统的总体结构如图2所示。 
  生物信息学推荐系统实现的主要功能是在用户登录生物信息学网站时,所留下的登录信息通过网站传递到推荐算法部分;推荐算法根据该用户的用户名从数据库提取出推荐列表,并返回到网站的用户界面;用户访问的记录返回到数据库,系统定时调用推荐算法,对数据库中用户访问信息的数据进行分析计算,形成推荐列表。 
  本系统采用基于近邻的协同过滤推荐算法,其结构可以进一步细化为如图3所示。算法分为邻居形成和推荐形成两大部分,两部分可以独立进行。这是该推荐系统有别于其他系统的优势之一。由于信息获取后的用户—项目矩阵维数较大,使得系统的可扩展性降低。本系统采用SVD矩阵降维方法,减少用户—项目矩阵的维数,在计算用户相似度时大大降低了运算的次数,提高了推荐算法的效率。 
   (1)信息获取。用户对项目的评价是基于用户对某一个项目(为表示简单,以下提及的项目均指网站上的生物物种)的点击次数来衡量的。当一个用户注册并填写好个人情况以后,系统会自动为该用户创建一个“信息矩阵”,该矩阵保存了所有项目的ID号以及相应的用户评价,保存的格式为:S+编号+用户评价,S用于标记项目,每个项目编号及其评价都以“S”相隔开;编号是唯一的,占5位;用户评价是用户点击该项目的次数,规定其范围是0~100,系统设定当增加到100时不再变化。这样做可防止形成矩阵时矩阵评价相差值过大而使推荐结果不准确。 (2)信息处理。信息处理是将所有用户的信息矩阵转换为用户—项目矩阵,使用户信息矩阵数值化,假设系统中有M个用户和N个项目,信息处理的目的就是创建一个M×N的矩阵R,R[I][J]代表用户I对项目J的评价。 
  (3)矩阵处理。协同过滤技术的用户—项目矩阵的数据表述方法所带来的稀疏性严重制约了推荐效果,而且在系统较大的情况下,它既不能精确地产生推荐集,又忽视了数据之间潜在的关系,发现不了用户潜在的兴趣,而且庞大的矩阵增加了计算的复杂度,因此有必要对该矩阵的表述方式做优化,进行矩阵处理。维数简化是一种较好的方法,本文提出的算法应用单值分解(Singular Value Decomposition,SVD)技术[8],对用户—项目矩阵进行维数简化。 
   
  (4)相似度计算。得到降维以后的用户矩阵US,就可以寻找每个用户的近邻。近邻的确定是通过两个用户的相似度来度量的。本文采用Pearson相关度因子[9]求相似度。  (5)计算用户邻居。该方法有两种[10],即基于中心的邻居(Center-Based Neighbor)和集合邻居(Aggregate Neighbor)。本系统采用了第一种方法,直接找出与用户相似度最高的前N个用户作为邻居,邻居个数N由系统设定,比如规定N=5。 
  (6)推荐形成。推荐形成的前提是把当前用户的邻居ID号及其与当前用户的相似度保存到数据库中,而在前面的工作中已找出各用户的邻居以及与用户的相似度,推荐形成部分只需要对当前登录用户进行计算。推荐策略是:对当前用户已经访问过的项目不再进行推荐,推荐的范围是用户没有访问的项目,其目的是推荐用户潜在感兴趣的项目;考虑到系统的项目比较多,用户交互项目的数量很大,所以只筛选出推荐度最大的N个项目,形成Top-N推荐集,设定N=5。 
   
  3生物信息学推荐系统的实现 
   
  生物信息学推荐系统的实现可以用图4来表示。数据库部分主要存储用户信息和项目信息,用SQL Server 2000实现。 
  数据访问层实现了与用户交互必需的存储过程以及触发器,也使用SQL Server 2000,主要完成以下功能:初始化新用户信息矩阵;插入新项目时更新所有用户的信息矩阵;用户点击项目时更新该用户对项目的评价;删除项目时更新所有用户的信息矩阵。用户访问层主要涉及网页与用户的交互和调用数据访问层的存储过程,在这里不做详细的介绍。 
  

  推荐算法完成整个个性化推荐的任务,用Java实现。
  (1)数据连接类DataCon。该类完成与SQL Server 2000数据库的连接,在连接之前必须要下载三个与SQL Server连接相关的包,即msutil.jar、msbase.jar和mssqlserver.jar。 
  (2)数据操作类DataControl。该类负责推荐算法与数据库的数据交换,静态成员Con调用DataCon. getcon()获得数据库连接,然后对数据库进行各种操作。把所有方法编写成静态,便于推荐算法中不创建对象就可以直接调用。 
  (3)RecmmendSource与CurrentUserNeighbor。这两个类作为FCRecommand类的内部类,RecmmendSource用于保存当前用户的推荐列表,包括推荐项目号和推荐度;CurrentUserNeighbor用于保存邻居信息,包括邻居ID号、相似度及其访问信息。 
   (4)协同过滤推荐算法FCRecommand。该类实现了整个推荐算法,主要分为邻居形成方法FCArithmetic和推荐形成方法GenerateRecommend。 
  下面给出方法FCArithmetic的关键代码: 
  Matrix user_item=this.User_Item_Arry(); //获取用户—项目矩阵 
  user_item=this.SVD_Calculate(user_item); //调用SVD降维方法 
  Vector c_uservector = new Vector(); //当前用户向量 
  Vector o_uservector = new Vector(); //其他用户向量 
  Vector c_user_correlate_vector = new Vector(); 
   //当前用户与其他用户之间相似度向量 
  for(int i=0;i  for(int j=0;j  c_uservector.addElement(user_item.get(i,j)); 
  //1.获得当前用户向量 
  for(int k=0;k   o_uservector.clear(); 
  for(int l=0;l  o_uservector.addElement(user_item.get(k,l)); 
  //2.获得其他用户的向量 
  //3.计算当前用户与其他用户的相似度 
  usercorrelativity=this.Correlativity(c_uservector,o_uservector); 
  c_user_correlate_vector.addElement(usercorrelativity); 
  } 
  //4.根据当前用户与其他用户的相似度,计算其邻居 
  this.FindUserNeighbor(i,c_user_correlate_vector); 
  } 
  根据邻居

[1] [2] 下一页


文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    专 题 栏 目
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 |
    Copyright © 2006 All Rights Reserved 中国美术高考网(国内最专业的美术高考门户网) 版权所有 未经允许 不得转载!
    网站咨询/管理员:101msw#163.com, 网站编辑/作品投稿/简章发布:101msw#163.com 为防止垃圾邮件,请将"#"改为"@"