推荐系统主要算法总结及Youtube深度学习推荐算法实例概括

简介:

协同过滤

协同过滤(CF)及其变式是最常用的推荐算法之一。即使是数据科学的初学者,也能凭之建立起自己的个性化电影推荐系统,例如,一个简历项目。

当我们想要向某个用户推荐某物时,最合乎情理的事情就是找到与他/她具有相同爱好的用户,分析其行为,并且为之推荐相同的东西。或者我们可以关注那些与该用户之前购买物品相似的东西,并推荐相似的产品。

协同过滤(CF)有两种基本方法,它们分别是:基于用户的协同过滤技术和基于项目的协同过滤技术。

该推荐算法的以上情形中均包含两步:

1. 找到数据库中有多少用户/项目与目标用户/项目相似。

2. 在给定与某产品用户/项目更相似的用户/项目的总权重时,评估其它用户/项目,来预测你给用户的相关产品的评分。

在该算法中,「最为相似」意味着什么?

我们拥有的是每一位用户的偏好向量(矩阵 R 的列),以及每一个产品的用户评分的向量(矩阵 R 的行)。

矩阵

首先,只留下两个向量中值都已知的元素。

举个例子,如果我们想比较 Bill 和 Jane,我们知道的信息是 Bill 没有看过泰坦尼克号,Jane 没有看过蝙蝠侠,那么我们只能通过星战来衡量他们的相似度。怎么可能会有人不看星战,对吧?(微笑)

最流行的测量相似度的方法,是测量用户/项目向量的余弦相似度(cosine similarity)或相关度(correlations)。最后一步是根据相似程度,采取加权算术平均方法,填满表中的空单元格。

用于推荐的矩阵分解

另一个有趣的方法是使用矩阵分解。这是一种优雅的推荐算法,因为通常在矩阵分解时,我们不会过多考虑结果矩阵的行列中哪些项(item)会被保留。但使用该推荐工具时,我们可以清楚地看到 u 是关于第 i 个用户的兴趣的向量,而 v 是关于第 j 部电影的参数的向量。

公式1

于是我们能够通过 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)都会被分配有代表性的偏好,这是以属于该群集的用户的偏好为基础的。每一组群集的用户都会收到在群集层面上计算过的推荐结果。

推荐系统的深度学习方法

在过去十年,神经网络的发展已经有了巨大的飞跃。现在它们正被应用于各种各样的应用,并且正在逐渐代替传统的机器学习方法。下面我将展示深度学习方法是如何在 Youtube 中被使用的。

毋庸置疑,由于其规模大,语料库不断变化,以及种种不可观测的外部因素,为这样的服务项目制作推荐系统是一项极具挑战性的任务。

根据「YouTube 推荐系统的深度神经网络」的相关研究,YouTube 推荐系统算法包含两部分神经网络:一个是用于候选集生成(candidate generation),另一个则是用于排序。如果你没有足够的时间,我将在这里给你进行一个简要的概括。

概括

使用用户的历史作为输入,候选集生成网络(candidate generation network)显著地减少了视频的数量,并且可以从一个大型语料库中选取一组最相关的视频集。生成的候选集对用户来说是最为相关的,此神经网络的目的仅仅是为了通过协同过滤来提供一个宽泛的个性化服务。

神经网络

在这一步中,我们拥有了更少量的候选结果,这些结果与用户需求更加接近。我们现在的目的是仔细地分析所有候选结果,这样我们就可以做出最好的决策。此任务是由排序网络(ranking network)来完成的,它可以根据一个期望的目标函数为每一个视频都分配一个分数,这个目标函数是使用数据来对有关用户行为的视频和信息来进行描述的。

使用两阶段法(two-stage approach),我们就能够从很大的视频语料库中做出视频推荐,然而可以确信的是,这些推荐结果中只有少量是个性化的,而且是被用户真正进行应用的。这一设计也能使我们把其它资源生成的结果和这些候选结果混合在一起。

公式2

推荐任务就像是一个极端的多类别分类问题,预测问题变成了一个在给定的时间 t 下,基于用户(U)和语境(C),对语料库(V)中数百万的视频类别(i)中的一个特定视频(wt)进行精准分类的问题。

在创建你自己的推荐系统前要注意的要点:

  • 如果你拥有一个很大的数据库,并且你要用它进行在线推荐,最好的方式就是把这个问题分成两个子问题:1)选择前 N 个候选结果,2)对它们进行排序。
  • 你怎样衡量你的模型的质量?除了标准化的质量指标,还有一些用于推荐问题中特定的指标:Recall@k,Precision@k也可看一下推荐系统的最佳描述指标。
  • 如果你正在使用分类算法解决推荐问题,你应该考虑生成负样本(negative samples)。如果一个用户买了一件推荐的商品,你不应该把它当做正样本(positive sample)来进行添加,也不应该把其余作为负样本来处理。
  • 考虑一下你的算法质量的在线与离线评分。一个仅基于历史数据的训练模型可以产生简单的推荐结果,因为该算法并不会知道未来的新趋势与偏好。
作者:ZhuZhiboSmith
来源:51CTO
相关文章
|
4月前
|
机器学习/深度学习 人工智能 搜索推荐
从零构建短视频推荐系统:双塔算法架构解析与代码实现
短视频推荐看似“读心”,实则依赖双塔推荐系统:用户塔与物品塔分别将行为与内容编码为向量,通过相似度匹配实现精准推送。本文解析其架构原理、技术实现与工程挑战,揭秘抖音等平台如何用AI抓住你的注意力。
1201 7
从零构建短视频推荐系统:双塔算法架构解析与代码实现
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
1123 55
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
599 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
8月前
|
算法 Python
Apriori算法的Python实例演示
经过运行,你会看到一些集合出现,每个集合的支持度也会给出。这些集合就是你想要的,经常一起被购买的商品组合。不要忘记,`min_support`参数将决定频繁项集的数量和大小,你可以根据自己的需要进行更改。
351 18
|
10月前
|
机器学习/深度学习 存储 算法
基于MobileNet深度学习网络的活体人脸识别检测算法matlab仿真
本内容主要介绍一种基于MobileNet深度学习网络的活体人脸识别检测技术及MQAM调制类型识别方法。完整程序运行效果无水印,需使用Matlab2022a版本。核心代码包含详细中文注释与操作视频。理论概述中提到,传统人脸识别易受非活体攻击影响,而MobileNet通过轻量化的深度可分离卷积结构,在保证准确性的同时提升检测效率。活体人脸与非活体在纹理和光照上存在显著差异,MobileNet可有效提取人脸高级特征,为无线通信领域提供先进的调制类型识别方案。
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
623 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
11月前
|
机器学习/深度学习 算法 安全
基于深度学习的路面裂缝检测算法matlab仿真
本项目基于YOLOv2算法实现高效的路面裂缝检测,使用Matlab 2022a开发。完整程序运行效果无水印,核心代码配有详细中文注释及操作视频。通过深度学习技术,将目标检测转化为回归问题,直接预测裂缝位置和类别,大幅提升检测效率与准确性。适用于实时检测任务,确保道路安全维护。 简介涵盖了算法理论、数据集准备、网络训练及检测过程,采用Darknet-19卷积神经网络结构,结合随机梯度下降算法进行训练。
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的优化算法及其应用
【10月更文挑战第8天】 本文将探讨深度学习中常用的优化算法,包括梯度下降法、Adam和RMSProp等,介绍这些算法的基本原理与应用场景。通过实例分析,帮助读者更好地理解和应用这些优化算法,提高深度学习模型的训练效率与性能。
957 63
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。

热门文章

最新文章