AI推荐算法的演进之路

推荐算法

基于大数据和AI技术,提供全流程一站式推荐平台,协助企业构建个性化推荐应用,提升企业应用的点击率留存率和永久体验。目前,主要的推荐方法包括:基于内容推荐、协同过滤推荐、基于关联规则推荐、基于效用推荐、基于知识推荐和组合推荐。

1. 基于内容推荐

基于内容的推荐是信息过滤技术的延续与发展,它是建立在项目内容信息上作出的推荐,而不需要依据用户对项目的评价意见,更多地需要用机器学习的方法从关于内容特征描述的事例中得到用户的兴趣资料。在基于内容的推荐系统中,项目或对象是通过相关的特征的属性来定义,系统基于用户评价对象的特征,学习用户的兴趣,考察用户资料与待预测项目的相匹配程度。用户的资料模型取决于所用学习方法,常用的有决策树、神经网络和基于向量的表示方法等。基于内容的用户资料是需要有用户的历史数据,用户资料模型可能随着用户的偏好改变而发生变化。

基于内容推荐方法的优点是:
l 1)不需要其它用户的数据,没有冷开始问题和稀疏问题。
l 2)能为具有特殊兴趣爱好的用户进行推荐。
l 3)能推荐新的或不是很流行的项目,没有新项目问题。
l 4)通过列出推荐项目的内容特征,可以解释为什么推荐那些项目。
l 5)已有比较好的技术,如关于分类学习方面的技术已相当成熟。

缺点是要求内容能容易抽取成有意义的特征,要求特征内容有良好的结构性,并且用户的口味必须能够用内容特征形式来表达,不能显式地得到其它用户的判断情况。

2. 协同过滤推荐

协同过滤推荐(Collaborative Filtering Recommendation)技术是推荐系统中应用最早和最为成功的技术之一。它一般采用最近邻技术,利用用户的历史喜好信息计算用户之间的距离,然后利用目标用户的最近邻居用户对商品评价的加权评价值来预测目标用户对特定商品的喜好程度,系统从而根据这一喜好程度来对目标用户进行推荐。协同过滤最大优点是对推荐对象没有特殊的要求,能处理非结构化的复杂对象,如音乐、电影。

协同过滤是基于这样的假设:为一用户找到他真正感兴趣的内容的好方法是首先找到与此用户有相似兴趣的其他用户,然后将他们感兴趣的内容推荐给此用户。其基本思想非常易于理解,在日常生活中,我们往往会利用好朋友的推荐来进行一些选择。协同过滤正是把这一思想运用到电子商务推荐系统中来,基于其他用户对某一内容的评价来向目标用户进行推荐。

基于协同过滤的推荐系统可以说是从用户的角度来进行相应推荐的,而且是自动的,即用户获得的推荐是系统从购买模式或浏览行为等隐式获得的,不需要用户努力地找到适合自己兴趣的推荐信息,如填写一些调查表格等。和基于内容的过滤方法相比,协同过滤具有如下的优点:
l1) 能够过滤难以进行机器自动内容分析的信息,如艺术品、音乐等。
l2) 共享其他人的经验,避免了内容分析的不完全和不精确,并且能够基于一些复杂的,难以表述的概念(如信息质量、个人品味)进行过滤。
l3) 有推荐新信息的能力。可以发现内容上完全不相似的信息,用户对推荐信息的内容事先是预料不到的。这也是协同过滤和基于内容的过滤一个较大的差别,基于内容的过滤推荐很多都是用户本来就熟悉的内容,而协同过滤可以发现用户潜在的但自己尚未发现的兴趣偏好。

l4) 能够有效的使用其他相似用户的反馈信息,少数用户的反馈量,加快个性化学习的速度。

虽然协同过滤作为一种典型的推荐技术有其相当的应用,但协同过滤仍有许多的问题需要解决。最典型的问题有稀疏问题(Sparsity)和可扩展问题(Scalability)。

3. 基于关联规则推荐

基于关联规则的推荐(Association Rule-based Recommendation)是以关联规则为基础,把已购商品作为规则头,规则体为推荐对象。关联规则挖掘可以发现不同商品在销售过程中的相关性,在零售业中已经得到了成功的应用。管理规则就是在一个交易数据库中统计购买了商品集X的交易中有多大比例的交易同时购买了商品集Y,其直观的意义就是用户在购买某些商品的时候有多大倾向去购买另外一些商品。比如购买牛奶的同时很多人会同时购买面包。

算法的第一步关联规则的发现最为关键且最耗时,是算法的瓶颈,但可以离线进行。其次,商品名称的同义性问题也是关联规则的一个难点。

4. 基于效用推荐

基于效用的推荐(Utility-based Recommendation)是建立在对用户使用项目的效用情况上计算的,其核心问题是怎么样为每一个用户去创建一个效用函数,因此,用户资料模型很大程度上是由系统所采用的效用函数决定的。基于效用推荐的好处是它能把非产品的属性,如提供商的可靠性(Vendor Reliability)和产品的可得性(Product Availability)等考虑到效用计算中。

5. 基于知识推荐

基于知识的推荐(Knowledge-based Recommendation)在某种程度上可以看成是一种推理(Inference)技术,它不是建立在用户需要和偏好基础上推荐的。基于知识的方法因它们所用的功能知识不同而有明显区别。效用知识(Functional Knowledge)是一种关于一个项目如何满足某一特定用户的知识,因此能解释需要和推荐的关系,所以用户资料可以是任何能支持推理的知识结构,也可以是用户已经规范化的查询,还可以是一个更详细的用户需要的表示。

6. 组合推荐

由于各种推荐方法都有优缺点,所以在实际中,组合推荐(Hybrid Recommendation)经常被采用。研究和应用最多的是内容推荐和协同过滤推荐的组合。最简单的做法就是分别用基于内容的方法和协同过滤推荐方法去产生一个推荐预测结果,然后用某方法组合其结果。尽管从理论上有很多种推荐组合方法,但在某一具体问题中并不见得都有效,组合推荐一个最重要原则就是通过组合能避免或弥补各自推荐技术的弱点。

在组合方式上,有研究人员提出了七种组合思路:
l1)加权(Weight):加权多种推荐技术结果。
l2)变换(Switch):根据问题背景和实际情况或要求决定变换采用不同的推荐技术。
l3)混合(Mixed):同时采用多种推荐技术给出多种推荐结果为用户提供参考。
l4)特征组合(Feature combination):组合来自不同推荐数据源的特征被另一种推荐算法所采用。
l5)层叠(Cascade):先用一种推荐技术产生一种粗糙的推荐结果,第二种推荐技术在此推荐结果的基础上进一步作出更精确的推荐。
l6)特征扩充(Feature augmentation):一种技术产生附加的特征信息嵌入到另一种推荐技术的特征输入中。
l7)元级别(Meta-level):用一种推荐方法产生的模型作为另一种推荐方法的输入。

7. 主要推荐方法的对比

各种推荐方法都有其各自的优点和缺点,如下表

主要推荐方法对比

推荐方法

优点

缺点

基于内容推荐

推荐结果直观,容易解释;

不需要领域知识

稀疏问题;新用户问题;

复杂属性不好处理;

要有足够数据构造分类器

协同过滤推荐

新异兴趣发现、不需要领域知识;

随着时间推移性能提高;

推荐个性化、自动化程度高;

能处理复杂的非结构化对象

稀疏问题;

可扩展性问题;

新用户问题;

质量取决于历史数据集;

系统开始时推荐质量差;

基于规则推荐

能发现新兴趣点;

不要领域知识

规则抽取难、耗时;

产品名同义性问题;

个性化程度低;

基于效用推荐

无冷开始和稀疏问题;

对用户偏好变化敏感;

能考虑非产品特性

用户必须输入效用函数;

推荐是静态的,灵活性差;

属性重叠问题;

基于知识推荐

能把用户需求映射到产品上;

能考虑非产品属性

知识难获得;

推荐是静态的

8. 基于深度学习的推荐

    基于深度学习的推荐是将深度学习技术糅杂在传统的推荐算法(比如基于内容的推荐、协同过滤推荐)之中,或使用无监督学习方法对项目进行聚类,或使用监督学习方法对项目进行分类,是使用多层感知器、卷积神经网络、循环神经网络、递归神经网络等对数据加工处理提取特征。基于深度学习主要是体现出它使用机器学习的数据处理技术,通过组合低层特征形成更加稠密的高层语义抽象,从而自动发现数据的分布式特征表示,解决了传统机器学习中需要人工设计特征的问题。深度学习技术是要依托于传统推荐技术中,可以说是对传统推荐技术的增强。

该类型推荐多用于处理图像、文本、音频等数据。比如电子商务平台、电影售票系统等,主营项目都会附带有明显的图片介绍,这就可以根据用户当前浏览或是历史购买记录,来获取图 片信息,深度学习提取出图像的特征表示,再以此从项目数据库中比对类似特征的图像,从而推荐;像亚马逊这样的网上书店或小说平台,主营项目以文本信息为主。经过深度学习,也可以提取出文本的风格、类型、特色等特征,从而匹配推荐;对于音乐播放器这类以音频为主的系统,先将音频数据变为数字信号,再进行深度学习,用数字信息抽象表示音频特征(舒缓、嘻哈、古典等),从而可训练出用户的听曲风格。基于深度学习推荐的最优势点就是可针对多种类型的输入数据,都可以提取特征,并训练模型,可以实现多元化的推荐,但是要想得到更好的推荐效果,就需要更长的时间来训练模型。

 3. 基于深度学习的推荐系统中的常用神经网络

卷积神经网络包括输入层、卷积层、池化层、全连接层和输出层,其中卷积层和池化层组合形成了特征提取器。在卷积层中,上一个神经元不再与全部的下一层神经元全连接,只是部分连接,并且在CNN中采用了权值共享,即卷积核,这不仅有效减少了神经网络中的参数个数,还降低了过拟合的弊端。卷积神经网络多用于处理图像数据,所以经常是通过处理分析用户项目的历史图片信息来推荐类似风格和颜色布局图片的其他项目。

循环神经网络相较于普通神经网络,特殊在它各个隐藏层之间是具有连接的,体现在功能上就是能够记忆之前的信息,即在当前隐藏层的输入中不仅包括输入层的输出信息,还包括了隐藏层上一个状态(或上一个时刻)的输出。这种神经网络多用于处理序列数据,比如语音识别,要想语义翻译准确,就要根据上文环境,所以循环神经网络在处理这类问题时具有一定的优势。

传统的序列推荐算法主要依赖于矩阵分解或者因子分解的求解范式,即将高维、稀疏的用户-物品历史交互行为矩阵,或者是马氏链中的物品偏好转移概率矩阵分解为低秩的表达,抑或是将用户交互行为构建为独热编码,再使用因子分解机进行特征交互建模,用于用户行为预测与序列推荐。

这类方法虽然在一定程度上已经支持用户行为序列的建模与优化,但是难以建模更长的用户行为序列,同时在复杂特征的建模、特征交互与表征学习上存在固有的局限性。

  1. 多路召回

推荐系统内置了多种召回策略,用户可根据自身业务特点,配合融合流程,有针对性地制定或调整召回策略组合。

  1. 实时更新

通过接入实时数据,实时更新用户画像和物品画像,及时捕捉用户兴趣变化,快速反馈用户需求,为及时调整推荐策略提供依据。

  1. 精排策略

推荐系统的特征工程可从原始数据中分析历史用户画像、物品画像,自动学习特征信息以供AI模型训练。内置了多种排序算法,可根据业务需求选择适当的算法进行训练,使推荐结果以更合适的顺序呈现。

  1. 过滤规则

推荐系统提供黑名单、白名单、特定行为等过滤功能,可根据具体业务设置过滤规则,提升安全性和用户体验。

  1. 召回算法

基于深度学习的召回算法在推荐系统中取得了显著的成功,它利用深度神经网络来学习用户和物品之间的复杂关系,能够更好地捕捉数据中的隐藏模式。以下是一个基于深度学习的召回算法的基本步骤:

  • 数据准备: 收集用户行为数据,包括用户的历史点击、购买、评分等信息,以及物品的特征,例如标签、内容描述等。
  • 数据表示: 将用户和物品转化为模型可处理的向量表示。这可以通过嵌入层(Embedding Layer)来实现,将用户和物品映射到低维空间中的向量。
  • 神经网络架构: 设计深度神经网络架构,其中包含嵌入层、多个隐藏层以及激活函数。这些网络层的组合可以根据具体任务的复杂性进行调整。一些经典的深度学习模型包括多层感知机(MLP)、卷积神经网络(CNN)、循环神经网络(RNN)以及更先进的模型如Transformer。
  • 损失函数: 定义适当的损失函数,用于衡量模型输出与实际用户行为之间的差异。通常在推荐系统中,使用二元交叉熵(Binary Cross Entropy)或均方误差(Mean Squared Error)等损失函数。
  • 模型训练: 利用历史行为数据对模型进行训练。通过优化算法(如随机梯度下降)来最小化损失函数,更新模型参数。
  • 召回候选物品: 在训练完成后,可以利用模型为用户生成候选物品列表。这些物品可以根据模型输出的分数排序,然后作为后续推荐阶段的候选集合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/713639.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于阿里云平台 通过树莓派实现 1:1人脸识别

之前的学习中,曾经在香橙派上使用阿里云平台的服务实现过类型识别: 使用香橙派并基于Linux实现最终版智能垃圾桶项目 --- 下_香橙派 项目-CSDN博客 现在,尝试在树莓派上通过阿里云平台的服务实现人脸识别! 通过VScode远程连接树莓…

2024年新提出的算法|鹦鹉优化器(Parrot optimizer):算法及其在医疗问题中的应用

本期介绍一种基于训练后鹦鹉关键行为的高效优化方法——鹦鹉优化器(Parrot Optimizer, PO)。该成果于2024年2月发表在中科院2区top SCI期刊Computers in Biology and Medicine(IF7.7) 1、简介 鹦鹉优化器(PO)是一种受训练有素的…

pytest教程-13-conftest.py文件

上一小节我们学习了fixture的作用域,本小节我们学习一下pytest conftest.py文件的使用方法。 conftest.py文件的作用 conftest.py文件是pytest框架中的一个特殊文件,用于定义共享的设置、夹具(fixture)和钩子函数(hook)。 在py…

2.模拟问题——2.使用二维数组输出图形

用二维数组描述图形 首先要计算出整个输出的方框大小&#xff0c;从而判定相应关键循环点 #include <cstdio> char arr[1000][3000]; int main() {int h;//初始化&#xff0c;全部内部填空格while(scanf("%d",&h) ! EOF){for (int i 0; i < h; i) {f…

HTML---表单验证

文章目录 目录 本章目标 一.表单验证概述 二.表单选择器 属性过滤选择器 三.表单验证 表单验证的方法 总结 本章目标 掌握String对象的用法会使用表单选择器的选择页面元素会使用JQuery事件进行表单验证Ajax的概念和作用 一.表单验证概述 前端中的表单验证是在用户提交表…

图神经网络导论 - 刘知远

一、神经网络基础 近年来&#xff0c;机器学习领域的发展迅速&#xff0c;主要表现在多种神经网络架构的出现。尽管不同的神经网络架构相差甚远&#xff0c;但现有的神经网络架构可以分为几个类别&#xff1a; 卷积神经网路是前馈神经网路的特殊形式&#xff0c;FNN通常是全…

什么是VR虚拟现实|虚拟科技博物馆|VR设备购买

虚拟现实&#xff08;Virtual Reality&#xff0c;简称VR&#xff09;是一种通过计算机技术模拟出的一种全新的人机交互方式。它可以通过专门的设备&#xff08;如头戴式显示器&#xff09;将用户带入一个计算机生成的虚拟环境之中&#xff0c;使用户能够与这个虚拟环境进行交互…

Spring Boot文档目录

目录 官方文档 说明&#xff1a;本文档翻译的版本&#xff1a;2.7.18-SNAPSHOT。 1. 法规&#xff08;Legal&#xff09; 2. 获取帮助&#xff08;Getting Help&#xff09; 3. 文档概述&#xff08;Documentation Overview&#xff09; 4. 开始使用&#xff08;Getting Sta…

BUUCTF---另外一个世界1

1.这是一道杂项题&#xff0c;也是我觉得最值得记录的一道题。 2.话不多说&#xff0c;题目描述&#xff08;真的是另一个世界&#xff09; 3.下载附件&#xff0c;是一张图片 4.尝试了查看属性&#xff0c;以及在记事本中打开看看有没有什么有用的信息&#xff0c;发现没什么…

FaceBook获取广告数据

1、访问 广告管理工具 确认自己登陆的账号下面能看到户。 ​ 2、使用 图谱Api探索工具 生成用户短期口令 ​ 3、get请求(或者浏览器直接打开)访问&#xff1a; https://graph.facebook.com/v19.0/me?fieldsid,name, email&access_token{上一步生成的口令} ​ 4、短期…

c# 获取源码路径与当前程序所在路径

获取源码路径 private static string GetFilePath([CallerFilePath] string path null) {return path;}//当程序所在路径string str67 System.Environment.CurrentDirectory;//源码路径 var path GetFilePath();var directory Path.GetDirectoryName(path);参考

Vue2:用node+express写一个轻量级的后端服务

1、桌面创建demo文件夹 进入demo&#xff0c;执行如下命令 npm init输入名称&#xff1a; test_server然后一路回车 2、安装express框架 npm i express3、新建server.js 在demo文件夹中&#xff0c;新建server.js const express require(express) const app express()…

2023年12月CCF-GESP编程能力等级认证Scratch图形化编程三级真题解析

一、单选题(共15题,共30分) 第1题 现代计算机是指电子计算机,它所基于的是( )体系结构。 A:艾伦图灵 B:冯诺依曼 C:阿塔纳索夫 D:埃克特-莫克利 答案:B 第2题 默认小猫角色,执行下列程序,舞台上会看到? ( ) A: B: C: D: 答案:C

干净的语料没有免疫力吗?

干净的语料指的是没有杂音、无污染、无错误的语言材料。虽然干净的语料本身没有免疫力&#xff0c;但可以提供给机器学习算法或自然语言处理模型&#xff0c;帮助提高其性能和准确性。通过使用干净的语料&#xff0c;可以降低噪声干扰&#xff0c;减少模型的误差&#xff0c;提…

Java类加载器 和 双亲委派【详解】

一.类加载器&#xff1a; 由JDK提供的&#xff0c;用于加载一些资源文件到JVM内存里的一项技术。主要是加载class文件到内存&#xff0c;也可以加载一些资源文件。 2.JDK提供了三个类加载器&#xff1a; BootstrapClassLoader&#xff1a;引导类加载器&#xff0c; 是c语言编写…

LightGBM高级教程:高级特征工程

导言 特征工程是机器学习中至关重要的一部分&#xff0c;它直接影响到模型的性能和泛化能力。在LightGBM中进行高级特征工程可以进一步提高模型的效果。本教程将详细介绍如何在Python中使用LightGBM进行高级特征工程&#xff0c;并提供相应的代码示例。 1. 特征交叉 特征交叉…

界面控件DevExpress .NET MAUI v23.2新版亮点 - 拥有全新的彩色主题

DevExpress拥有.NET开发需要的所有平台控件&#xff0c;包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress 今年第一个重要版本v23.1正式发布&#xff0c;该版本拥有众多…

python链接数据库,实现数据增删改查

要在Python中链接数据库并实现数据的增删改查&#xff0c;需要使用数据库的API&#xff08;Application Programming Interface&#xff09;。以下是一个示例&#xff0c;演示如何使用Python的SQLite3模块连接并操作数据库&#xff1a; 安装SQLite3模块&#xff08;如未安装&a…

如何克隆树莓派系统到较小的硬盘/SD卡上(如何分区、设置修复引导)

最近有个老固态硬盘空下来了&#xff0c;虽然写入速度没那么快&#xff0c;但是足够满足千兆网络了&#xff0c;所以我就想把现在给树莓派使用的固态硬盘换下来。由于一些设置很浪费时间&#xff0c;所以我不打算重装系统。此外这个老固态是 120GB 的&#xff0c;要小于正在使用…

redis实现分布式全局唯一id

目录 一、前言二、如何通过Redis设计一个分布式全局唯一ID生成工具2.1 使用 Redis 计数器实现2.2 使用 Redis Hash结构实现 三、通过代码实现分布式全局唯一ID工具3.1 导入依赖配置3.2 配置yml文件3.3 序列化配置3.4 编写获取工具3.5 测试获取工具 四、运行结果 一、前言 在很…