简介
公司给了一个任务,要求根据相似度匹配给教师推荐课程。正好复(预)习一下协同过滤算法。直接探索一下协同过滤应用。
目前教师档案大数据系统中存有海量的教师数据,这些数据对于教师的未来决策,预测教师发展路径,推荐教师课程等有非常广泛的应用。本节,将使用数据库中的研修学分信息表中数据,基于教师的相似度,给教师推荐研修课程。
理论介绍
协同过滤算法简介
在推荐系统的众多方法之中,基于用户的协同过滤是诞最早的,原理也比较简单。基于协同过滤的推荐算法被广泛的运用在推荐系统中,比如影视推荐、猜你喜欢等、邮件过滤等。该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤。一直到2000年,该算法都是推荐系统领域最著名的算法。
协同过滤简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。
例如,当用户A需要个性化推荐的时候,可以先找到和他兴趣详细的用户集群G,然后把G喜欢的并且A没有的商品推荐给A,这就是基于用户的协同过滤。
根据上述原理,我们可以将算法分为两个步骤:
- 找到与目标兴趣相似的用户集群
- 找到这个集合中用户喜欢的、并且目标用户没有听说过的商品推荐给目标用户。
常用的相似度计算方法
目前,机器学习中,最常用的样本相似度度量方法有以下几种:
欧式距离(Euclidean Distance)
余弦相似度(Cosine)
皮尔逊相关系数(Pearson)
修正余弦相似度(Adjusted Cosine)
汉明距离(Hamming Distance)
曼哈顿距离(Manhattan Distance)
欧式距离(Euclidean Distance)
其中最经典的是是使用欧式距离(Euclidean Distance)的欧几里得相似度。欧式距离全称是欧几里距离,是最易于理解的一种距离计算方式,源自欧式空间中两点间的距离公式。
欧几里得相似度根据欧几里得距离计算而来,距离越近相似度越高,反之相反。
平面空间内的 a ( x 1 , y 1 ) a(x_{1},y_{1}) a(x1,y1) 与 b ( x 2 , y 2 ) b(x_{2},y_{2}) b(x2,y2) 间的欧氏距离:
d = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 d=\sqrt{(x_{1}-x_{2})^{2}+(y_{1}-y_{2})^{2}} d=(x1−x2)2+(y1−y2)2
三维空间里的欧氏距离:
d = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 + ( z 1 − z 2 ) 2 d=\sqrt{(x_{1}-x_{2})^{2}+(y_{1}-y_{2})^{2}+(z_{1}-z_{2})^{2}} d=(x1−x2)2+(y1−y2)