资源 | 主要推荐系统算法总结及Youtube深度学习推荐算法实例概括 2017-07-09 12:23来源:机器之心 原标题:资源 | 主要推荐系统算法总结及Youtube深度学习推荐算法实例概括 选自Statsbot 机器之心编译 参与:Smith、俞云开 现如今,许多公司使用大数据来做超级相关推荐,并以此来增加收益。在海量推荐算法中,数据科学家需要根据商业限制以及需求来选择最佳算法。为使其简单化,直播,Statsbot 团队为现有的主要推荐系统算法准备了一份概述。 协同过滤 协同过滤(CF)及其变式是最常用的推荐算法之一。即使是数据科学的初学者,也能凭之建立起自己的个性化电影推荐系统,例如,一个简历项目。 当我们想要向某个用户推荐某物时,最合乎情理的事情就是找到与他/她具有相同爱好的用户,分析其行为,并且为之推荐相同的东西。或者我们可以关注那些与该用户之前购买物品相似的东西,并推荐相似的产品。 协同过滤(CF)有两种基本方法,它们分别是:基于用户的协同过滤技术和基于项目的协同过滤技术。 该推荐算法的以上情形中均包含两步: 1. 找到数据库中有多少用户/项目与目标用户/项目相似。 2. 在给定与某产品用户/项目更相似的用户/项目的总权重时,评估其它用户/项目,来预测你给用户的相关产品的评分。 在该算法中,「最为相似」意味着什么? 我们拥有的是每一位用户的偏好向量(矩阵 R 的列),以及每一个产品的用户评分的向量(矩阵 R 的行)。 首先,只留下两个向量中值都已知的元素。 举个例子,如果我们想比较 Bill 和 Jane,我们知道的信息是 Bill 没有看过泰坦尼克号,Jane 没有看过蝙蝠侠,那么我们只能通过星战来衡量他们的相似度。怎么可能会有人不看星战,对吧?(微笑) 最流行的测量相似度的方法,是测量用户/项目向量的余弦相似度(cosine similarity)或相关度(correlations)。最后一步是根据相似程度,采取加权算术平均方法,填满表中的空单元格。 用于推荐的矩阵分解 另一个有趣的方法是使用矩阵分解。这是一种优雅的推荐算法,因为通常在矩阵分解时,我们不会过多考虑结果矩阵的行列中哪些项(item)会被保留。但使用该推荐工具时,我们可以清楚地看到 u 是关于第 i 个用户的兴趣的向量,而 v 是关于第 j 部电影的参数的向量。 于是我们能够通过 u 和 v 的点积来估计 x(第 i 个用户对第 j 部电影的评分)。我们用已知的评分建立这些向量并以此预测未知的评分。 举个例子,矩阵分解后我们获得了 Ted 的向量(1.4;.9)和电影 A 的向量(1.4; .8),现在我们可以仅仅通过计算(1.4; .9)和(1.4; .8)的点积来还原电影 A-Ted 的评分,评分结果为 2.68。 聚类 以前的推荐算法比较简单并且适用于小系统。而且直到现在,我们仍把推荐问题设想成一个监督式机器学习任务。现在是时候用非监督方法来解决此类问题了。 设想一下,我们是正在建造一个大型推荐系统,在此系统中协同过滤和矩阵分解这两项工作的时间应该更长。而第一种设想就是聚类(clustering)。 在业务的开始阶段,往往是缺乏先前用户的等级划分的,而聚类则是最好的方法。 但是如果单独使用,聚类就显得有一些薄弱了,因为事实上我们所做的事情其实是对用户组别进行鉴定,并且为本组里的每一位用户推荐相同的东西。当我们拥有了足够的数据的时候,使用聚类方法作为第一步是更好的选择,这样可以减少协同过滤算法中的相关近邻(neighbor)的选择。它也可以改善复杂推荐系统的性能表现。 每一个群集(cluster)都会被分配有代表性的偏好,这是以属于该群集的用户的偏好为基础的。每一组群集的用户都会收到在群集层面上计算过的推荐结果。 推荐系统的深度学习方法 (责任编辑:本港台直播) |