对于协同过滤算法,应用的主流方式是基于邻域的算法,主要包含基于用户的协同过滤算法和基于项目的协同过滤算法。基于邻域的两种主流算法流程上主要有两部分的内容,首先是根据输入的“用户-项目”评分矩阵计算相似度,其次是预测评分。本研究将分别对这两种算法进行模型建立与数据实验,对比二者的推荐结果,以测试更适合智能大屏的协同过滤推荐方式。
图38 基于用户的协同过滤推荐算法
基于用户的协同过滤算法其主要流程如图38所示。首先,输入用户u与目标项目i,根据“用户-项目”评分矩阵表,计算出用户的相似度。将除了u以外的用户按照相似度的大小降序排列,保存为用户集合U。随后,删除掉集合U中没有对项目i打过分的用户。判断此时用户集合U中的用户数是否大于所设定的近邻数量K,如果大于K那么就选择与用户U最相似的前K个用户组成用户u的邻居集,如果用户集合U中的用户数小于等于K,那么令K等于U中的用户数,生成用户u的邻居集。最后,根据U中的用户对项目i的评分和这些用户与用户u的相似度来计算出用户u对项目i的预测评分,输出到预测评分列表中。
图39 基于项目的协同过滤推荐算法
基于项目的协同过滤算法主要流程如图39所示。首先,输入用户u与目标项目i,根据“用户-项目”评分矩阵表,计算出项目的相似度。将除了i以外的项目按照相似度的大小降序排列,保存为项目集合I。随后,删除掉集合I中没有被用户u打过分的项目。判断此时项目集合I中的用户数是否大于所设定的近邻数量K,如果大于K那么就选择与项目I最相似的前K个项目组成项目i的邻居集,如果项目集合I中的用户数小于等于K,那么令K等于I中的项目数,生成项目i的邻居集。最后,根据I中的用户u对这些项目的评分与这些项目与项目i的相似度来计算出用户u对项目i的预测评分,输出到预测评分列表中。
协同过滤算法是一种基于用户的历史行为对用户未来行为进行预测的算法。它不需要获取用户和项目的具体信息,而是以用户对已消费项目的评分来组成“用户-项目”评分矩阵,通过此矩阵来预测用户对于未消费项目的评分。协同过滤算法的具体步骤如下:
协同过滤算法首先需要通过系统数据来生成“用户-项目”评分矩阵。设用户集合,其中m表示用户数。项目集合,其中n表示项目数。表示用户i对项目j的评分。则“用户-项目”评分矩阵如表40:
表40 协同过滤算法的“用户-项目”评分矩阵表示
(一)用户评分的获取
用户评分的获取有两种方式:显式评分和隐式评分。
显式评分的含义是用户消费项目后提供自己对项目的主观评分。显式评分能够直观地表现出用户对项目的评分,并且能简化算法后续处理评分方面的流程,在电影的个性化推荐系统中应用较多。但显式评分也有较大的应用局限。首先,显式评分由于需要用户进行额外的操作以提交评分,因此并非所有用户都愿意参与点评。显式评分的准确度也一直受到质疑,原因是用户的评分有很大的主观性,有些用户偏向于打低分,即便对于较为满意的项目也不会给出较高的评分;而有些用户则偏向于打高分,给出的分数难以有区分度。有些用户在描述自己偏好时,会倾向于向自己想要成为的样子描述,描述受到个人认知的局限,往往会产生偏差。因此显式评分的应用范围并不广泛。
隐式评分是基于对用户观看习惯不引人注目的观察,根据用户的行为数据建立模型,自动提取出用户的兴趣偏好或者评分。使用隐式评分可以减少用户进行交互行为的工作量,不会为用户增加额外的负担,因此能够较为容易地获取行为信息。当然,隐式评分也有相应的局限性。首先,隐式评分的数据收集过程不受用户主观控制。例如,在观影行为数据的收集过程中,只能假设用户在影片播放过程中始终都在聚精会神地观看影片,显然事实并非如此。隐式评分的获取不能考虑到在观影过程会出现的各种状况,因此可能会出现较大的偏差。其次,在实际应用中,将用户行为准确映射到用户的偏好或评分上,要根据实际的应用情况进行全新的数据分析与模型建立,这也是隐式评分应用最大的难题。此外,由于隐式评分是通过持续积累用户的行为信息,通过用户所有的历史行为信息构建用户的兴趣模型,因此它难以对用户兴趣的突然变化做出响应。
用户评分的获取方式要根据推荐系统的实际数据获取情况进行选取。若用户的评分信息获取较为容易,如一些专门的影评收集平台,则可以运用显式评分的方式。若用户主动评分率很低,那么显式评分就不适用。此时需要通过能够获取到的其他用户信息,采用隐式评分获取到“用户—项目”的评分矩阵。
对于智能大屏而言,OTT平台搭载在电视大屏端,交互性较弱,难以获取用户的显示评分;同时,由于OTT记录了大量的用户历史行为数据,隐式评分则更适用于OTT平台的用户评分。
(二)相似度计算
在协同过滤算法中,若使用基于用户的协同过滤算法则需要计算用户间的相似度,若使用基于项目的协同过滤算法则需要计算项目的相似度。余弦相似度是推荐系统中最为常见的相似度计算方法,它是将项目表示为向量形式,通过度量两个向量在空间上的夹角余弦值来度量它们的相似度。在协同过滤算法中,一般将用户对项目的评分作为特征向量。
在基于用户的协同过滤算法中,用户u和用户v的余弦相似度计算的公式如下:
其中,表示用户u对项目k的评分,表示用户v对项目k的评分,表示用户u已评分的项目集合,表示用户v已评分项目的集合,表示用户u和用户v共同评分的项目的集合。
在基于项目的协同过滤算法中,计算项目m与项目n的余弦相似度的公式如下:
其中,表示用户k对项目m的评分,表示用户k对项目n的评分,表示对项目m已评分的用户评分集合,表示对项目n已评分的用户评分集合,表示对项目m与n共同评分的用户评分集合。
余弦相似度计算中,向量夹角越小,相似度计算结果值越大,两个向量之间越相似。相比于单纯计算两点间直线距离的欧式距离计算方法,余弦相似度的侧重点为两个向量方向上的差异。但余弦相似度的不足之处在于,只能分辨两个向量方向上的差异,没法表示出在某一个方向上数值的差异。例如,在五分制评分中,用户A对项目X、Y为(1,2),用户B对项目X、Y的评分为(4,5)。通过计算可得,用户A、B之间的余弦相似度为0.98,接近于1,用户A、B相似度很高。但主观上从评分可以看出,用户A对项目X、Y的评分均为低分,而用户B对项目X、Y的评分均为高分,显然用户A与用户B的喜好并不相同,也就是说,A、B两个用户并不相似。这便是余弦相似度只对向量方向敏感而不注重每个方向上的大小而导致的误差。(www.daowen.com)
为了弥补余弦相似度对向量方向上数值大小的不敏感性,便出现了修正的余弦相似度计算方式。修正的余弦相似度计算方法在计算过程中引入了用户评分的平均值,来平衡用户评分在数量上的差异。利用修正余弦方法计算用户间相似性的公式如下:
其中,与分别代表用户u与用户v对全体项目评分的平均值。表示用户u已评分的项目集合,表示用户v已评分项目的集合,表示用户u和用户v共同评分的项目的集合。
基于项目的协同过滤算法中,计算项目m与项目n的余弦相似度的公式如下:
其中,代表用户k对全体项目评分的平均值。表示对项目m已评分的用户评分集合,表示对项目n已评分的用户评分集合,表示对项目m与n共同评分的用户评分集合。
可见,修正的余弦相似度避免了传统方法的问题,并且在对于向量的运算中也更加容易理解,因此本文选用修正的余弦相似度方法进行模型中的相似度计算。
(三)获取相似用户或相似项目
相似度计算能够得出用户或项目之间的相似度名单,每个用户与其他用户的相似度都可以用一个数值进行表示,每个项目与其他项目之间的相似度亦然。最常用的获取相似用户或项目的方式就是基于最近邻的方法。最近邻方法(KNN)的基本原理是从训练集的所有点中找到与测试点在距离上最近的k个点,k为预先设定值。找到k个点后,基于这些点进行预测。
最近邻方法本质上是一种基于训练数据对目标测试数据进行分类的机器学习算法。它通常用于求解分类问题,如文本分类、图像去噪等。对于集合X中的每个元素包含一个点和一个相关的类标签,其中首先,计算X中所有点与测试点的欧式距离,选择距离最近的k个点生成集合其次,根据S中的元素计算类标签的频率,然后将划分为频率最高的类。将后验概率最大的标签赋给。
原理如图40所示。在图40a中,黑点为已知数据,白点为测试点。已知k=3,在图40b中,KNN找到距离测试点最近的3个黑点。在图40c中,A和B分别为已知数据的类别。
图40 KNN算法示意图
具体原理解释为,k是一个设定值,表示希望找到的与测试点最近的点的个数。设定k=3,图40a中已知数据为黑点,测试点为白点。在图40b中,由于k=3,找到离测试点最近的3个点。然后KNN将后验概率最大的标签A赋值到测试点,如图40c所示。
(四)计算评分
在基于用户的协同过滤推荐中,计算评分就是根据用户的邻居集合来预测用户对未评价过的项目的评分。计算的公式主要有以下两个:
其中,表示用户u对项目i的预测评分,KNB为用户u的邻居集合,sim(u,v)为用户u和用户v之间的相似度,为用户v对项目i的评分值,为用户u对已评分项目的评分均值,为用户v对已评分项目的评分均值。
第一个公式的本质为加权评分,它的一个劣势是没能考虑到用户评分标准的差异。第二个公式是第一个公式的改进版,它将不同用户的评价标准引入到相似度计算过程中,进而能够提高预测的精度。
同理,在基于项目的协同过滤推荐算法中,获得未评分项目的邻居集合后,目标用户对该项目的评分就可以根据目标用户对其邻居项目的评分来预测,公式为以下两个:
其中,表示用户u对项目m的预测评分,KNB为用户m的邻居集合,sim(m,n)为项目m与项目n之间的相似度,为用户u对项目n的评分值,为项目m所获得的评分的均值。
(五)推荐项目
基于评分为用户提供推荐服务时,一般使用的方法是TOP-N推荐。TOP-N推荐就是根据“用户-项目”评分的预测矩阵来选出用户预测评分最高的前k个项目,为用户做个性化推荐。k的选取要根据实际的情况进行,例如在视频节目播放平台的推荐名单中,可以根据k的不同取值带来的推荐结果的变化来选取能带来最高准确率的k值,同时也要考虑推荐页面的承载能力和美观度。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。