全部产品
阿里云办公

物品冷启动

更新时间:2017-09-22 11:49:34

输入

数据 是否必选 描述
ITEM_META 必选 物品表
USER_BEHAVIOR 必选 行为表
REC_ITEM_INFO 必选 可推荐物品表
REALTIME_LOG 必选 注册新物品的实时日志
ITEM_META_CONFIG 必选 物品属性维度表

输出

数据 数据类型 描述
NEW_ITEM_REC REC_SET 用户对新物品的推荐候选集

参数

模板参数
参数名 默认值 描述
用户行为时间跨度 30 基于过去最近N天的行为数据来建模用户偏好。假设当前数据日期为20170830,设置本参数为30,直观上来看,这个参数:
1、决定了算法在运行时需要读取用户行为表(通过MaxCompute表提供或日志API上传)从当前数据日期向前多少个分区的数据,比如您配置了用户行为表为A,则会读取A表从ds=20170801到ds=20170830共30个分区的数据来进行计算。
2、决定了用户兴趣的时间窗口大小,即只有在这个窗口内的用户行为才被认为能够反映用户喜好,假设某用户的最近一次行为发生在30天之前的20170731,则该用户会被认为没有发生过任何历史行为,因此无法获得个性化推荐结果,需要用一些全局默认结果来进行抄底补足。
行为权重 view:1.0;click:0.8 用于计算用户偏好的有效行为及权重。
1、每一种行为类型匹配的是用户行为表的bhv_type字段,因此本参数需要根据您根据实际行为数据中的真实情况进行配置,否则可能导致运行出错或结果为空。
2、不同的行为类型对反映用户喜好的程度不尽相同,如购买、点赞行为相比浏览要更珍贵,因此也理应获得更高的权重,这里需要根据实际业务情况和业务经验进行配置。
3、行为权重与最终推荐效果的关系:由于行为权重会参与到用户兴趣的建模评分计算中,因此如果用户对物品集合A发生过权重较高的行为,算法会对与A中物品相似的其他物品集合A’赋予更高的推荐权重,从而更倾向于推荐A’中的物品,因此在这里我们可以有针对性地将业务中期待用户发生的目标行为(如购买)设置更高的权重,以获得更好的推荐效果。
离线产出推荐结果个数 100 最多生成多少个推荐结果,本参数会作用在离线中间结果:用户的可推荐物品表。【注:关于推荐结果数最大可以设置多少,由于不同业务中的item_id长度各异,因此没有一个固定的值,总体原则是:最终拼接生成的推荐字符串大小不超过1兆。其中推荐字符串的格式为i1\u0003s1…\u0002…in\u0003sn,i1~in为实际item_id,s1~sn为权重(一般保留小数点后4位),\u0002和\u0003为Unicode的2和3。】
UV阈值 0 生成的推荐候选集需要满足的UV约束条件(描述的是共有多少个不同的用户对物品发生过行为),即只有UV大于设置值的物品才会被放入推荐候选集,避免推荐出过于冷门的物品。【注:只要某用户对一个物品发生过“行为权重”参数中设置的任意一种行为,不论发生都少次,该用户对该物品都只有一次UV贡献】
子模板参数
  • 分词词库

    默认standard ,可选分词的领域项为e_commerce(电子商务)、law(法律)、broad_tv(直播视频)。当选择抽取物品描述(description)特征,必须需要选择一个分词词库。

  • 特征抽取算法

    默认选择抽取物品描述(description)特征,可并行扩展抽取物品关键词(keyowrds)特征、抽取物品属性(properties)特征。

    • 抽取物品描述(description)特征。
    1. 使用条件:物品表中description字段不为空;
    2. 主要功能:对description进行分词,计算词的tf-idf值,根据idf阈值,过滤出对于description来说比较重要的词语。选择不同的标准化方式,对抽取的特征进行标准化。
参数名 默认值 描述
normalize none 特征标准化方式,minmax为用最大最小值进行标准化,zscore用均值标准差进行标准化,none表示不做任何处理,默认采用none(不做任何处理)
max_idf 100 词特征筛选条件,选取小于最大idf阈值的词
min_idf 0 词特征筛选条件,选取大于最小idf阈值的词
  • 抽取物品属性(properties)特征。
  1. 使用条件:物品表中properties字段不为空。
  2. 主要功能:对properties中的属性按照item_meta_config属性维表中的属性类型,进行one-hot编码,并根据选择的标准化方式,对抽取的数值特征进行标准化。
参数名 默认值 描述
normalize none 特征标准化方式,minmax为用最大最小值进行标准化,zscore用均值标准差进行标准化,none表示不做任何处理,默认采用none(不做任何处理)
  • 抽取物品关键词(keyowrds)特征。
  1. 使用条件:物品表中keywords字段不为空。
  2. 主要功能:对keywords字段中的关键词进行one-hot编码,并根据选择的标准化方式,对抽取的数值特征进行标准化。
参数名 默认值 描述
normalize none 选择特征标准化,minmax为用最大最小值进行标准化,zscore用均值标准差进行标准化,none表示不做任何处理
  • 特征变换算法

    目前只提供对连续特征进行离散化算法。特征降维算法持续增加中。

    可设算法参数:

参数名 默认值 描述
discreteMethod SameDistance 特征离散化方法, 可取值:[SameDistance,SameFreq],其中SameDistance为等距离散,SameFreq为等频离散
maxBins 5 特征离散化区间个数

主要逻辑

  • 离线模块

    step1:根据历史行为采用itemcf算法产出用户的推荐候选物品集。详细的itemcf算法参照【基于itemcf的推荐模板】

    step2:采用参数中配置的特征工程,抽取物品表中原始特征,并把特征抽取的参数传到近线,供近线新物品特征抽取时使用。

    step3:利用step2计算的物品特征,采用kmeans算法,把物品聚成20个物品类。【这里类别的个数默认设置成20,没有开放出来给用户自定义

    step4:根据step1和step3的结果,产出用户对物品类别的偏好集合。

  • 近线模块

    step1:接受实时日志,根据离线上传的特征抽取参数,近线抽取新物品特征。

    step2:计算新物品与物品聚类的相似度(采用simhash算法计算相似度),把新物品加到最相近的物品聚类类别候选池中。

  • 在线模块

    step1: 获取用户的偏好物品类别,从类别候选池中选取新物品,作为推荐结果返回。

最佳实践

模板适用条件: 物品冷启动是针对实时日志上传的新物品,没有接入实时日志时,该模板不适用。

1、在配置<行为权重>参数时,建议首先分析一下实际行为表中的bhv_type字段的取值,避免配置不当导致结果为空。

2、推荐结果数的最大取值,上文在参数说明中已有描述,请结合自身业务数据情况进行推算。

3、建议配合一个默认推荐策略组合使用,避免出现没有推荐结果的情况。

4、视频专题讲解:点这里