新特性
- 支持用户数据导入和导出
新版本支持了对用户标签的利用,因此提供了用户数据的导入导出功能。
- 统计信息保存至数据库
在之前的版本中,统计信息(用户数量、物品数量、反馈数量等信息)保存在缓存中,从本次更新开始,这些统计信息将保存至数据库。
- 支持基于IDF的相似度计算
在使用标签计算用户或者物品之间的相似度时,不同标签的信息量是不同的。基于IDF的相似度计算方法会增加出现频率低的标签的权重,降低出现频率高的标签权重,从而缓解了高频率标签对于相似度计算的干扰。
- 移除的点击反馈类型
之前版本的配置文件中有click_feedback_types一项,用来设置点击反馈类型。考虑到click_feedback_types和positive_feedback_types有一定的重合,因此在新版本中将click_feedback_types移除。同时,新版本也更新了新的点击率计算方法,只有记录相应的已读反馈的正向反馈才会被计入点击率计算中。
- 基于相似用户的推荐
之前的版本已经提供了协同过滤、相似物品这两种个性化召回推荐算法(点击率预测用于推荐结果二次排序),而基于相似用户的推荐算法首先找出和当前用户相似的用户,将相似用户的喜爱物品推荐给当前用户。笔者是Go/C++/Python开发者,因此基于相似用户的推荐算法给笔者推荐了和这些语言开发关注的项目。
- 使用AUC评估点击率预测模型
之前的版本使用准确率来评估点击率预测模型的性能,新版本采用AUC评估点击率预测模型。AUC更加关注模型在排序上的能力,更加适合推荐系统二次排序场景。
- 实现了多路召回推荐
新版本开始使用多种推荐算法从茫茫物品库中获取推荐物品,然后使用点击率预测模型进行二次排序之后推荐给用户。其中,相似物品推荐以来物品标签、相似用户推荐依赖用户标签,点击率预测依赖用户标签或物品标签,如果数据集无法提供标签,建议将对应的推荐算法关闭。
修复问题
- 修复了出现重复物品会触发的panic
之前版本一处实现假设从数据库读取用户或者物品的时候不会出现ID相同的用户或者物品,然而在支持ClickHouse之后假设不再成立。对ClickHouse中的物品信息进行更新之后,如果ClickHouse还没进行合并,那么就会出现读取到相同ID物品的情况。
升级指南
本次更新修改了配置文件。
- 推荐算法降级
fallback_recommend用来设置当缓存中的推荐结果消耗完毕之后的推荐方法,目前改为数组。
# The fallback recommendation method for cold-start users:
# item_based: Recommend similar items to cold-start users.
# popular: Recommend popular items to cold-start users.
# latest: Recommend latest items to cold-start users.
# The default values is ["latest"].
fallback_recommend = ["item_based", "latest"]
- 相似度类型设置
上个版本中的neighbor_type替换为item_neighbor_type和user_neighbor_type两项,可以对用户相似度类型和物品相似度类型进行分别设置。
# The type of neighbors for items. There are three types:
# similar: Neighbors are found by number of common labels.
# related: Neighbors are found by number of common users.
# auto: If a item have labels, neighbors are found by number of common labels.
# If this item have no labels, neighbors are found by number of common users.
# The default values is "auto".
item_neighbor_type = "similar"
# The type of neighbors for users. There are three types:
# similar: Neighbors are found by number of common labels.
# related: Neighbors are found by number of common liked items.
# auto: If a user have labels, neighbors are found by number of common labels.
# If this user have no labels, neighbors are found by number of common liked items.
# The default values is "auto".
user_neighbor_type = "similar"
- 推荐算法开关 多路召回中的五种推荐算法可以在配置文件中开启或者关闭。
# Enable latest recommendation during offline recommendation. The default values is false.
enable_latest_recommend = true
# Enable popular recommendation during offline recommendation. The default values is false.
enable_popular_recommend = true
# Enable user-based similarity recommendation during offline recommendation. The default values is false.
enable_user_based_recommend = true
# Enable item-based similarity recommendation during offline recommendation. The default values is false.
enable_item_based_recommend = false
# Enable collaborative filtering recommendation during offline recommendation. The default values is true.
enable_collaborative_recommend = true