个性化音乐推荐系统设计与实现 下载本文

分),但对洒脱评价较低(仅为2分)。因此不难发现,实际上用户u1和用户u2的品味是较为接近的,用户u2就是用户u1的最近邻用户。

数学模型:

当用户变得越来越多的时候,用人工方法不可能找到用户u1的最近邻居用户,所以对算法进行数学建模让它自动寻找用户u1的最近邻居用户。事实上有很多的方法来判断这两个用户的取向是否相似。假如把上面表格中的每一行看作是一个向量,此向量就能用来表示用户取向,那么就可以有很多种方法来判断这两个用户取向的相似度,此系统用到的是其中之一的余弦相似度[15]。

余弦相似度: (4-1)

其中Cos(u1,u2)就表示用户u1与用户u2的相似度。

R就是评价矩阵,Ru1,y表示用户u1对音乐y的评分,Ru2,y表示用户u2对音乐y的评分。

分子中的y表示用户u1与用户u2评价过的音乐的交集。 分母中的y则表示用户u1与u2各自的评分集合。 (2)利用用户u1的最近邻用户预测用户u1的打分值

系统可以取值遍历所有用户,用户u1与每个人都计算出一个相似度,然后对其相似度进行排序,选择前5个相似度最接近的用户作为用户u1的最近邻居用户。用这5个最近邻居用户的评分数据来给用户u1进行推荐,此时会用到下面这个公式。

(4-2)

(3)最后向用户u1推荐音乐

将第二步得到的一些用户u1从未听过的音乐的预测分值进行排序,选择前5个分值最高的音乐推荐给用户u1。

协同过滤推荐算法是此系统的重点以及难点,现在此系统就实现了系统给用户推荐的功能。Hibernate提供的load()方法将该持久化对象取出,然后进行设置操作,最后使用的是Hibernate提供的update()方法更新该持久化对象。

实现协同过滤算法的代码如下。 图4-11 协同过滤算法推荐

5 总结

自从开始做毕业设计以来,我发现了自己对克服困难方面的能力实在太差了,但是将毕业设计做的过程当中我学到了如何成熟,如何将问题解决的能力,以前的我总是面对什么事情显露出胆小,或者是忽视的态度,但是现在对比过去有了一个很大的转变

毕业设计这门课程对大四下学期之前的我来说是一种可以忽视的课程,但是真正到了开始做毕业设计的时候,我才认识到了我的技术是多么生疏。选择一门语言做毕业设计的时候,我想了好久才将jsp作为本设计的主语言,自从选择了jsp以后我就开始了对jsp的学习。这门语言易入门,但是很难精通,所以我不得不花费大量的时间来对jsp做了学习与研究。

在学习jsp的过程中我从一家IT公司得到了录取通知书,公司那里有个培训班,里面有交各种语言的课程,当时我就直接选择了jsp。我发现去公司培训的时候公司教给我的东西远远比书上和网上的多得多,当我对这门语言的熟悉程度到了一定程度以后我开始自己做了一些小功能。开始是留言板,数据库的调用和增删改查,之后是对控制访问权限和各种小算法。日复一日,我的水平也在慢慢提高,在中期答辩的时候我还没有将毕业设计的5个功能全都做出来,此时曾培峰老师看了我的毕业设计后对我指点了很多东西,这些东西我之前是没有想出来的,过了中期答辩后我就开始按照曾培峰老师的需求重新将5个功能做了出来。

开始做毕业设计以来我都是每周一次去导师办公室给老师看我做的东西,老师看完我的设计以后每次都告诉我哪里是不对的,哪里是写得语句不够通顺,而且不仅老师帮我指点,助教学长也在一旁给我指点,对此我对老师和学长真心想说一句话谢谢。

转眼间就到了毕业设计这门课程的最后一个答辩阶段了,想想自己每天都在赶做设计,写论文,此时终于要结束了,对我来说是将一个负担卸下了。做此次毕业设计的时候我感受到的最大的是我的能力的提升,明显感受到了过去的自己和现在的自己的区别。

放眼过去,自己大学一路走来的风风雨雨,有过欢笑有过悲伤,有过努力拼搏挑灯夜战,也有过好友共聚通宵达旦。在这个时间节点里,我只想对自己说句加油,还有朋友们,也加油。

也许过些年,我会在开发岗上做很久,学习到更多的技术,解决更多的问题,尝试更多的项目。但这次毕业设计,必定是终身难忘的第一次。这里是起点,我已经出发,希望未来可以创造出更多的辉煌。

参考文献

[1] 刘京华. Java Web整合开发王者归来(JSP + Servlet + Struts + Hibernate + Spring)[M]. 北京:清华大学出版社, 2010

[2] Brogden Bill,邱仲潘,谢树锋. Java开发指南 : Servlets和JSP篇. 第一版. 北京:电子工业出版社,2001

[3] 柳永坡,刘雪梅,赵长海. JSP应用开发技术. 第一版. 北京:人民邮电出版社,2005

[4] 孙卫琴. 精通Hibernate:Java对象持久化技术详解. 第一版. 北京:电子工业出版社,2005

[5] 夏昕,曹晓钢,唐勇. 深入浅出Hibernate. 第一版. 北京:电子工业出版社,2005

[6] Deepak Alur,John Crupi,Dan Malks编. 刘天北,熊节等译. J2EE核心模式. 第二版. 北京:机械工业出版社,2005

[7] 赵强. 基于开源软件的J2EE企业级应用开发. 第一版. 北京:电子工业出版社,2005

[8] 张海藩. 软件工程导论. 第四版. 北京:清华大学出版社,2005 [9] Paul Nielsen编. 刘瑞,陈微,闫继忠,刘文等译. Microsoft Sql Server 2000宝典. 第一版. 北京:中国铁道出版社,2005

[10] 施伯乐,丁宝康. 数据库技术. 第一版. 北京:科学出版社,2002 [11] 牛丽平, 郭新志, 宋强, 杨继萍. UML面向对象设计与分析基础教程[M]. 北京:清华大学出版社, 2007

[12] 郎波. Java语言程序设计[M]. 北京:清华大学出版社, 2005

[13] Nicholas C. Zakas, 李晶, 郭凯, 张散集. 编写可维护的JavaScript[M]. 北京:人民邮电出版社, 2013

[14] Harvey M.Deitel,Paul J.Deitel. Java How to Program.The Forth Page. Upper Saddle River, N.J.:Prentice Hall,2005

[15] Harvey M.Deitel,Paul J.Deitel,Sean E.Santry. Advanced Java2 Platform How to Program. The Front Page. Upper Saddle River, N.J.:Prentice Hall,2005