推荐引擎—算法策略讲解1|学习笔记

简介: 快速学习推荐引擎—算法策略讲解1

开发者学堂课程【阿里云推荐引擎使用教程推荐引擎—算法策略讲解1】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/409/detail/5259


推荐引擎—算法策略讲解1


内容介绍:

一、基于内容的推荐

二、物品冷启动

三、具备用户标签的物品冷启动

四、无用户标签的冷启动


一、基于内容的推荐

1、算法执行流程

下图描述了该推荐的部分内容,其描述内容如下:从物品的原信息(ITEM_META)通过物品特征工程,以此来生成物品的特征(ITEM_FEATURE),再根据该特征生成推荐物品与物品之间的相关性列表(REC_SETitem-items)。在此基础上,后续的过程与其他推荐相同,即根据用户的行为加上物品之间的推荐列表来生成用户的物品推荐。

image.png

2、数据分析

进入推荐引擎控制台的调试页面,即可看到相关推荐对应的数据配置信息。其中包含输入数据与输出数据。

(1)输入数据

在输入数据中用户源信息,用户行为和 REC_ITEM_INFO(可推荐物品表)都是必选项,ITEM_MEGACONFIG(物品属性维度表)根据选择算法不同选择,有的算法要求其是可选的。

(2)输出数据

输出数据中有两个多类目型的输出,即 OFFLINE_MULTICLASS_ITEM_ITEM_REC 与OFFLINE_MULTICLASS_USER_ITEM_REC,其与参数有关,如果参数对多类目型的输出进行了配置,这两个多类目型的输出数据就会输出。而剩余两个输出数据,即OFFLINE_ITEM_ITEM_REC与OFFLINE_USER_ITEM_REC 则为必输出项,其输出的是物品跟物品之间的相似度列表和用户的推荐候选集,后者是我们主要使用的内容。在该页面可以进行参数设置。

3、参数设置

(1)物品特征工程

最重要的参数是物品特征工程,其中包含了三项内容,即特征抽取算法、特征变换算法与分词词库。特征抽取算法中预先提供了三种抽取算法,即 tfidf 抽取算法、物品属性特征抽取算法(properties_if)与 keywords 特征属性抽取算法(keywor ds_if)。tfidf 抽取算法主要是从 item_meta_description 字段中去抽取,也就是从正文中抽取其 tfidf 特征,它会配合分词算法来使用。对于分词算法,可以根据提供的参数选择分词词库,其中包括四个行业,即一个标准词库加三个行业词库。prop erties_if 是把用户的属性对应抽取为特征,主要是item_meta_properties 字段中抽取。keywords_if 主要是从 keywords 字段的特征。每种算法都有公共的参数以供选择,可以选择将其规一化的算法,也可以选择另一个特征变化的算法。目前我们只提供一个标准特征变化算法(discretize),以后会提供多个标准离散换算法。离散化算法中包括两个值,第一个值(discreteMethod)是指离散化的不同的方式,一种是等宽的 distance,一种是等频的 distance;另外一个参数描述的是离散化区间的个数。

(2)相似度计算方法

要计算两个物品间的相似度需使用相似度计算方法。相似度计算方法中系统为我们提供了三种方式,即用户行为时间跨度、行为权重和推荐结果数。其中用户行为时间跨度和行为权重是来做用户行为建模的信息,用户行为权重是指使用用户的哪些行为作为用户的评分,时间跨度是指用多长时间的用户行为来生成用户评分,我们会把用户n天的行为合并成以用户 ID 和物品 id 为 key 的 K/V 对,同时生成用户评分。

(3)多分类推荐

多分类推荐默认情况下不输出的,如果勾选 true,则输出多分类的模板,对应传入多分类的参数即可得到不同分类下的推荐结果。比如说新闻的多个栏目,或者是帖子的多个主题。其中包括两个参数,即物品类别数据来源和多分类组合。

物品类别数据来源中可通过不同的字段进行分类,即根据 ITEM_META_catagory 字段或REC_ITEM_INFO_class 字段或者组合前两种字段进而得到不同的类别。

多分类组合仅限“类别来源”包含 REC_ITEM_INFO 时生效。如果某个字段是可枚举的,比如有三个类目,要输出到两两类目之间的推荐结果,在该界面就可以选true,不过最多可以组合四项。保存设置,即可完成算法策略的配置。同时我们可以去试着生成在线流程。在线流程设置中,由于多分选择了 true,故此处有四种推荐方式可供选择的候选集。如果要做用户推荐,我们可以直接选择最后一种“用户对推荐物品的候选集”。点击“保存”,保存在线流程。


二、物品冷启动

该种算法策略适用于用户上传了新的物品,如何快速的将我们想要的结果也就是新的物品进行推荐出来的情况。

1、算法执行流程

该种算法策略如下图所示:

image.png

对于一个新的物品,在进线阶段,通过特征工程生成新物品的特征,通过特征计算simhash,最终得到 key 为 simhash,value 使 item 列表的推荐候选池,该推荐候选池的key是相当于是 item 聚类的 id,因为通过 simhash 会自动的把用户聚成 n 个类。我们可以 通过设置 simhash 的位数来选择聚类的大小。

等到用户请求的时候,我们可以通过用户之前看过的 item 计算这些 item 聚类属性,也就是通过用户的 feature 生成的新物品得到的新的聚类,即可得到用户相应的物品的聚类,再通过已经有的推荐列表聚类的 id 查询实时的聚类列表。这样即可获得个性化的新物品候选池进而将这些新物品推荐给用户。

2、参数设置

进入推荐引擎控制台的调试页面,即可看到相关推荐对应的数据配置信息。

物品冷启动输入数据界面中,ITEM_META、USER_BEHAVIOR 与 REC_ITEM_INFO必选的,其中 ITEM_META 来计算物品特征,USER_BEHAVIOR 用来生成用户基础的物品推荐列表。REAITIME_LOG(实时行为日志)是必需的,如果不选择该项,虽然系统不会报错,但是生成的数据可能为空。物品维度表也是物品特征工程,也是可选的,其会生成新的物品推荐集合。在该页面也可以设置参数。

(1)推荐结果个数

与基于内容推荐相同,不多作赘述。

(2)行为时间跨度与行为权重

这两者可以用来控制默认的推荐候选集

(3)UV阈值

该项是为了生成用户推荐列表所设置的参数

(4)物品特征工程子模板

该部分不多作介绍,与基于内容推荐中情况相同,用来设置特征工程部分的参数。


三、具备用户标签的物品冷启动

这种算法其实是一种用户的冷启动,即新用户过来该如何推荐。

1、算法执行流程

以下为该算法策略的流程图:

image.png

该种算法其实也与物品冷启动类似,它是先对用户做聚类然后新用户通过进线的特征工程来抽取用户的特征,通过分派即可计算到该用户所属的聚类,然后在该聚类中查询其中老用户的推荐列表进而组合形成新用户的推荐列表。

(1)数据分析

“输入数据”中,其中 USER_BEHAVIOR、REC_ITEM_INFO、ITEM_META 与USER_META_CONFIG 都是必选数据,因为该算法要求具备用户标签,而用户标签的定义是在 USER_META_CONFIG 中。USER_BEHAVIOR 是用户行为,最终结果是要生成用户能启动的候选集。

(2)参数设置

参数同样包括推荐结果个数、行为时间跨度、行为权重、UV 阈值和特征工程子模板。

前四个参数与物品冷启动的参数相同,均用来生成老用户的候选集,此处可对用户特征工程子模板作简单介绍。用户特征工程子模板有两个参数,其与物品冷启动类似,即特征抽取算法和特征变换算法。物品特征抽取仅提供了一种算法,即基于用户标签的特征抽取,即把用户 user_meta_tax 字段抽成特征。

若同时选择三种算法策略,新建在线流程,可以看到此时有许多项目备选。在选择时,可以将用户基础作为P1优先级;若为新用户,可以将新用户的物品推荐候选集作为 P2 优先级,如果没有新用户,就会进入第二优先候选集进行抽取推荐;也可以把物品的冷启动放到第一优先级,如果有新物品上传,会优先推荐新的物品,再推荐个性化物品,最后推荐新用户。


四、无用户标签的冷启动

这是一种更为通用的算法,大多数情况下没有用户标签,此时可以基于用户的一些历史行为,就其行为来实时来生成他的兴趣偏好,逐渐来寻找他的行为习惯,生成他的推荐列表。

1、算法流程

以下为该算法的流程图:

image.png

通过用户的行为生成用户物品的特征,然后将物品进行聚类,可以查询到某个用户之前点击的商品实时日志,点击关联商品,查找他点击商品的对应的聚类的信息。之后的话通过 Bandit 算法实时地更新用户对物品聚类的偏好值,通过偏好值再加上每个聚类下的物品来生成用户的推荐列表。

2、参数设置

ITEM_META、REC_ITEM_INFO 是必选内容,因为我们需要对物品进行聚类,ITEM_META_CONFIG 是可选项,需要选择合适的特征工程。该项包含两个参数,ee算法和特征工程子模板,其中特征工程子模板与上面学到的相同。

ee 算法是指选择的Bandit算法来计算用户对聚类的偏好值。一般是有两个算法,UCB 算法和 Beta 算法。

对于 Beta 算法,有一些常见的一些参数,第一个参数中,“topn”是指保持的聚类数目,操作过程中并不是要保留所有聚类的值,而只会保留 topn 的值;“posBhv”指定正向行为,比如可以把 heat 当作正向行为,也可以将 like 当作正常行为。第二个参数中,“topn”是指在线流程中保留推荐结果的数目。两种算法都中有两个参数可以配置。

带有用户标签的冷启动与不带用户标签的冷启动一般不会共用,当然也可以保存,相当于利用另外一种方式来获取推荐集。此时,在线流程中的推荐方式中就会增加一条推荐候选集。可以将其添加进去作为推荐的最低优先级,点击“保存”。在另外一条比较复杂的流程配置ABtest的占比,就可以生成基于 PV 分配的两个流程。

相关文章
|
26天前
|
数据采集 存储 算法
Python 中的数据结构和算法优化策略
Python中的数据结构和算法如何进行优化?
|
23天前
|
算法
通过matlab分别对比PSO,反向学习PSO,多策略改进反向学习PSO三种优化算法
本项目使用MATLAB2022A版本,对比分析了PSO、反向学习PSO及多策略改进反向学习PSO三种优化算法的性能,主要通过优化收敛曲线进行直观展示。核心代码实现了标准PSO算法流程,加入反向学习机制及多种改进策略,以提升算法跳出局部最优的能力,增强全局搜索效率。
|
25天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
56 1
|
1月前
|
算法
优化策略:揭秘钢条切割与饼干分发的算法艺术
本文探讨了钢条切割与饼干分发两个经典算法问题,展示了算法在解决实际问题中的应用。钢条切割问题通过动态规划方法,计算出不同长度钢条的最大盈利切割方式,考虑焊接成本后问题更为复杂。饼干分发问题则采用贪心算法,旨在尽可能多的喂饱孩子,分别讨论了每个孩子一块饼干和最多两块饼干的情况。这些问题不仅体现了数学的精妙,也展示了工程师的智慧与创造力。
38 4
|
2月前
|
数据采集 缓存 算法
算法优化的常见策略有哪些
【10月更文挑战第20天】算法优化的常见策略有哪些
|
4月前
|
缓存 算法 前端开发
深入理解缓存淘汰策略:LRU和LFU算法的解析与应用
【8月更文挑战第25天】在计算机科学领域,高效管理资源对于提升系统性能至关重要。内存缓存作为一种加速数据读取的有效方法,其管理策略直接影响整体性能。本文重点介绍两种常用的缓存淘汰算法:LRU(最近最少使用)和LFU(最不经常使用)。LRU算法依据数据最近是否被访问来进行淘汰决策;而LFU算法则根据数据的访问频率做出判断。这两种算法各有特点,适用于不同的应用场景。通过深入分析这两种算法的原理、实现方式及适用场景,本文旨在帮助开发者更好地理解缓存管理机制,从而在实际应用中作出更合理的选择,有效提升系统性能和用户体验。
224 1
|
4月前
|
算法 语音技术
支付宝商业化广告算法问题之在ODL模型优化过程中,采取什么策略来提高模型的泛化能力呢
支付宝商业化广告算法问题之在ODL模型优化过程中,采取什么策略来提高模型的泛化能力呢
|
5月前
|
机器学习/深度学习 数据采集 算法
推荐引擎离线算法与在线算法的探索与实践
推荐引擎是现代互联网产品中至关重要的组成部分。离线算法和在线算法分别负责处理大量数据的预处理和模型训练,以及快速响应用户的实时请求。通过合理的架构设计和算法选择,可以构建出高效且个性化的推荐系统,从而提升用户体验,增加用户满意度和留存率。未来,随着技术的发展,推荐引擎将更加智能化和个性化,为用户提供更加精准的服务。
|
5月前
|
机器学习/深度学习 数据采集 算法
Python实现ISSA融合反向学习与Levy飞行策略的改进麻雀优化算法优化支持向量机回归模型(SVR算法)项目实战
Python实现ISSA融合反向学习与Levy飞行策略的改进麻雀优化算法优化支持向量机回归模型(SVR算法)项目实战
|
4月前
|
算法 Java 应用服务中间件
探索JVM垃圾回收算法:选择适合你应用的最佳GC策略
探索JVM垃圾回收算法:选择适合你应用的最佳GC策略