推荐引擎—算法策略讲解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 分配的两个流程。

相关文章
|
13天前
|
算法 C++
c++算法学习笔记 (21) STL
c++算法学习笔记 (21) STL
|
13天前
|
算法 C++
c++算法学习笔记 (20) 哈希表
c++算法学习笔记 (20) 哈希表
|
13天前
|
算法 C++
c++算法学习笔记 (19) 堆
c++算法学习笔记 (19) 堆
|
13天前
|
人工智能 算法 C++
c++算法学习笔记 (18) 约数
c++算法学习笔记 (18) 约数
|
13天前
|
人工智能 算法 C++
c++算法学习笔记 (17) 质数
c++算法学习笔记 (17) 质数
|
13天前
|
算法 C++
c++算法学习笔记 (16) 并查集
c++算法学习笔记 (16) 并查集
|
13天前
|
算法 C++
c++算法学习笔记 (15) 单调栈与单调队列
c++算法学习笔记 (15) 单调栈与单调队列
|
13天前
|
算法 C++
c++算法学习笔记 (14) 栈与队列
c++算法学习笔记 (14) 栈与队列
|
13天前
|
算法 C++
c++算法学习笔记 (13) 链表
c++算法学习笔记 (13) 链表
|
13天前
|
算法 C++
c++算法学习笔记 (12) 区间合并
c++算法学习笔记 (12) 区间合并