当前位置: 首页 > news >正文

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)等损失函数。
  • 模型训练: 利用历史行为数据对模型进行训练。通过优化算法(如随机梯度下降)来最小化损失函数,更新模型参数。
  • 召回候选物品: 在训练完成后,可以利用模型为用户生成候选物品列表。这些物品可以根据模型输出的分数排序,然后作为后续推荐阶段的候选集合。

相关文章:

AI推荐算法的演进之路

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

Tomcat安装,配置文件、组件

一、Tomcat的基本功能 1.1.Tomcat是什么? Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。一般来说,T…...

精读《React Hooks 最佳实践》

简介 React 16.8 于 2019.2 正式发布,这是一个能提升代码质量和开发效率的特性,笔者就抛砖引玉先列出一些实践点,希望得到大家进一步讨论。 然而需要理解的是,没有一个完美的最佳实践规范,对一个高效团队来说&#x…...

varFormatter 数据格式化库 以性能优先的 快速的 内存对象格式转换

varFormatter 数据格式化 技术 开源技术栏 对象/变量格式化工具库,其支持将一个对象进行按照 JSON XML HTML 等格式进行转换,并获取到结果字符串! 目录 文章目录 varFormatter 数据格式化 技术目录介绍获取方式 使用实例格式化组件的基本使…...

基于PHP的在线英语学习平台

有需要请加文章底部Q哦 可远程调试 基于PHP的在线英语学习平台 一 介绍 此在线英语学习平台基于原生PHP开发,数据库mysql。系统角色分为学生,教师和管理员。(附带参考设计文档) 技术栈:phpmysqlphpstudyvscode 二 功能 学生 1 注册/登录/…...

基于微信小程序电影院订票选座系统 (后台JSP+JDBC+Mysql)答辩常规问题和如何回答(答辩指导)

博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…...

C++知识点总结(22):模拟算法真题 ★★★☆☆《安全警报》

安全警报 1. 审题 题目描述 Z市最大的金融公司:太平洋金融遭到了入侵,一名黑客潜入到了公司中,公司紧急启动安保程序,将大楼封锁,并安排作为安全主管的你对楼层进行搜查。所以你准备写一个程序,输入搜查楼…...

蓝桥杯练习系统(算法训练)ALGO-993 RP大冒险

资源限制 内存限制:64.0MB C/C时间限制:200ms Java时间限制:600ms Python时间限制:1.0s 问题描述 请尽情使用各种各样的函数来测试你的RP吧~~~ 输入格式 一个数N表示测点编号。 输出格式 一个0~9的数。 样例输入 0 样…...

Unity的相机跟随和第三人称视角

Unity相机跟随和第三人称视角 介绍镜头视角跟随人物方向进行旋转的镜头视角固定球和人的镜头视角 思路跟随人物方向进行旋转的镜头视角固定球和人的镜头视角 镜头旋转代码人物移动的参考代码注意 介绍 最近足球项目的镜头在做改动,观察了一下实况足球的视角&#x…...

哪个超声波清洗机品牌值得入手?销量榜品牌值得选购!

在科技日益发展的今天,超声波清洗技术以其高效、便捷和深度清洁的特点,已经深入到生活的诸多领域,从精密仪器到珠宝首饰,从眼镜框到假牙,甚至是厨房用品的日常护理,都能见到超声波清洗机的身影。面对市场上…...

Stwo:基于Circle STARK和M31的下一代STARK证明系统

1. 引言 StarkWare团队和Polygon Labs团队,历时数月,构造了基于Mersenne素数域M31的Circle STARK协议,通过使用M31 over a circle,可基于任意有限域构造高效STARKs,具体见2024年2月19日论文《Circle STARKs》。 基于…...

笔记本以太网集线器Hub充电可能导致网络异常(貌似是我把服务器网关写错了)

文章目录 笔记本以太网集线器(Hub)充电导致网络异常概述原理分析电源与信号干扰设备热度设备兼容性问题 解决方案升级固件提高设备散热效率选择兼容性好的设备 总结 今天用笔记本以太网直连服务器,一开始能连通,结果以太网hub插上…...

npm ERR! code ETIMEDOUT

在新建vue项目的时候报错 npm ERR! code ETIMEDOUT npm ERR! syscall connect npm ERR! errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.org/vue%2fcli failed, reason: connect ETIMEDOUT 104.16.2.35:443 npm ERR! network This is a problem relate…...

动态规划(算法竞赛、蓝桥杯)--分组背包DP

1、B站视频链接&#xff1a;E16 背包DP 分组背包_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N110; int v[N][N],w[N][N],s[N]; // v[i,j]:第i组第j个物品的体积 s[i]:第i组物品的个数 int f[N][N]; // f[i,j]:前i组物品&#xff0c;能放…...

太阳能供电井盖-物联网智能井盖监测系统-旭华智能

在这个日新月异的科技时代&#xff0c;城市的每一个角落都在悄然发生变化。而在这场城市升级的浪潮中&#xff0c;智能井盖以其前瞻性的科技应用和卓越的安全性能&#xff0c;正悄然崭露头角&#xff0c;变身马路上的智能“眼睛”&#xff0c;守护城市安全。 传统的井盖监测系统…...

贪心 Leetcode 455 分发饼干

分发饼干 Leetcode 455 学习记录自代码随想录 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1…...

策略开发:EMA如何计算

EMA的计算原理 EMA 是MA&#xff08;平滑移动平均线&#xff09;的另一种形式。全名“加权指数移动平均线”。 2/13就是12日移动平均线的平滑因子&#xff0c;他的意思是指&#xff1a;给予新价格 2/13的权重&#xff0c;给予过去的EMA 11/13的权重。 在计算的时候第一天的M…...

学习Android的第二十天

目录 Android Toast 吐司 常量 常用方法 例子 Android Notification 状态栏通知 Notification 的基本布局 扩展布局 Notification ( 状态栏通知 ) 相关的方法 例子&#xff1a; 参考文档 Android AlertDialog 弹出框 Android Dialog 继承图谱 AlertDialog 几种常…...

Linux技巧|centos7|重新认识和学习egrep和grep命令

前言&#xff1a; 相信提高文本检索工具&#xff0c;大家脑海里肯定有很多工具会自动跳出来&#xff0c;比如&#xff0c;grep&#xff0c;egrep&#xff0c;sed&#xff0c;cat&#xff0c;more&#xff0c;less&#xff0c;cut&#xff0c;awk&#xff0c;vim&#xff0c;vi…...

css实现背景渐变叠加

线性渐变效果图: .box{width: 100vw;height: 100vh;background:linear-gradient(to bottom,transparent,#fff 30%),linear-gradient(to right,pink,skyblue);}径像渐变效果图&#xff1a; .box{width: 100vw;height: 100vh;background:linear-gradient(to bottom,transparent,#…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...