您的当前位置:首页正文

常见推荐算法学习

2024-12-01 来源:个人技术集锦

常见的推荐算法包括以下:

各类推荐系统:https:///u014765410/article/details/83691763

目前考虑推荐算法的主要是基于公司的数据,公司的数据:游戏简介、玩家的信息、玩家操作信息等,其实基于此,可将本次推荐算法归类为基于内容(商品)的推荐算法

1.item-based CF算法

item-based CF算法是目前腾讯公司用户推荐的算法,item-based CF算法使用余弦相似性度量来计算一对商品之间的相似度,然后通过使用简单的加权平均值来预测目标用户对目标商品的评分。

与item-based CF比较相似的算法还有一个是user-based cf,这两者的区别在于前者是计算商品的相似度,后者是计算用户的相似度;

item-based CF是基于所有用户历史对商品的评分计算商品的相似度,把用户喜欢商品相类似的用户推荐给用户,如:商品a与商品b十分相似,因为喜欢a的用户也喜欢c,而用户user1喜欢a,则可以把c推荐给用户user1.

user-based CF是对所有用户计算相似度,如果用户A喜欢物品a,用户B喜欢物品a、b、c,用户C喜欢a和c,那么认为用户A与用户B和C相似,因为他们都喜欢a,而喜欢a的用户同时也喜欢c,所以把c推荐给用户A。

至于为什么不采用user-based CF呢?在本项目中是针对用户的召回,而采用用户的相似性可能存在的问题是:与用户最相似的用户可能没有相关的游戏记录,即:存在用户只玩1款游戏,而与最相似的用户数量可能很大,但是基于游戏用户的特性,每个玩家一般不会同时玩超过5款游戏,且由于玩家的流失比例的问题,可能采用这种方式对用户的召回可能存在问题。

item-based CF则是游戏相关的。而item-based CF在进行商品相似度计算时,是基于所有用户对商品的评分(偏好),而我们在这里采用游戏本身的属性计算游戏之间的相似度,而且因为我们的数据量比较少,采用用户评分的方式,可能会导致最终计算结果发现所有游戏都具有一定的相似度,差异化并不明显,用户量少数据少,就可能存在每个游戏都有用户喜欢,游戏之间都有一定数量的共同用户,

注意事项:

在选择相似性度量时,可根据以下几点进行选择:

• 当您的数据受用户偏好/用户的不同评分尺度影响时,请使用皮尔逊相似度

• 如果数据稀疏,则使用余弦(许多额定值未定义)

• 如果您的数据不稀疏并且属性值的大小很重要,请使用欧几里得(Euclidean)。

• 建议使用调整后的余弦(Adjusted Cosine Similarity)进行基于商品的方法来调整用户偏好。

相关好文:

详细介绍了协同过滤算法,利于理解不同协同过滤算法:https:///huagong_adu/article/details/7362908

腾讯实施精准推荐ppt:http://lamda.nju.edu.cn/conf/icml14w/Tencent.pdf

协同过滤算法的详解,描述了协同过滤算法的各种相似度计算方程和应用场景:http://blog.jobbole.com/102819/

基于协同过滤的电影推荐算法,采用了不同的相似度计算方法(knn、svd矩阵分解、皮尔僧关联度):https:///tonydz0523/article/details/84872476

详细介绍基于用户的推荐算法的实现步骤:https:///tonydz0523/article/details/84872476

详细介绍基于内容的协同过滤的步骤,每一个步骤十分详细,有利于理解和实现协同过滤:https:///HeyShHeyou/article/details/83660945

learning to rank,应用与排序场景下,可应用与协同过滤中的排序中,后续需认真研读:https:///huagong_adu/article/details/40710305

learning to rank,应用与排序场景下,可应用与协同过滤中的排序中,后续需认真研读:https://www.cda.cn/uploadfile/image/20151220/20151220115436_46293.pdf

课程相关:https:///weixin_41362649/article/details/89055808(注意研读文末的链接,经典算法文章)

腾讯实时推荐的论文(item-based CF):http://net.pku.edu.cn/~cuibin/Papers/2015SIGMOD-tencentRec.pdf

采用tensorflow实现协同过滤:https:///sinat_38682860/article/details/80486992

item协同过滤,有相关实现方法:https://cloud.tencent.com/developer/article/1095876

两种协同过滤实现对比:https:///gamer_gyt/article/details/51346159

加入用户活跃度的item—cf的实现https:///ls317842927/article/details/79072662

2.隐语义模型:
2.1LFM模型

LFM隐语义模型的核心思想是通过隐含特征(latent factor)联系用户兴趣和物品,采取基于用户行为统计的自动聚类。

隐含语义分析技术的分类来自对用户行为的统计,代表了用户对物品分类的看法。隐含语义分析技术和ItemCF在物品分类方面的思想类似,如果两个物品被很多用户同时喜欢,那么这两个物品就很有可能属于同一个类。

隐含语义分析技术给出的每个分类都不是同一个维度的,它是基于用户的共同兴趣计算出来的,如果用户的共同兴趣是某一个维度,那么LFM给出的类也是相同的维度。

LFM通过如下公式计算用户u对物品i的兴趣:

重点参考文章,包含详细的实现方式:https:///wxn704414736/article/details/80414815

简介:https:///tao_wei162/article/details/84828909

实现模型:https:///fjssharpsword/article/details/78015956

2.2knn模型

要评价一个未知的东西U,只需找k个与U相似的已知的东西,并通过k个已知的,对U进行评价。假如要预测用户1对一部电影M的评分,根据kNN的思想,我们可以先找出k个与用户1相似的,并且对M进行过评分的用户,然后再用这k个用户的评分预测用户1对M的评分。又或者先找出k个与M相似的,并且用户1评价过的电影,然后再用这k部电影的评分预测用户1对M的评分。在这个例子中,找相似用户的方法叫做user-based kNN,找相似物品的方法叫做item-based kNN。这两种方法的思想和实现都大同小异,因此下文只讨论item-based kNN,并且将其简称为kNN。

实现步骤:https:///shenbo2030/article/details/18007397

3.word2vec

其基本思想是 通过训练将每个词映射成 K 维实数向量(K 一般为模型中的超参数),通过词之间的距离(比如 cosine 相似度、欧氏距离等)来判断它们之间的语义相似度.其采用一个 三层的神经网络 ,输入层-隐层-输出层。有个核心的技术是 根据词频用Huffman编码 ,使得所有词频相似的词隐藏层激活的内容基本一致,出现频率越高的词语,他们激活的隐藏层数目越少,这样有效的降低了计算的复杂度

显示全文