今天开始记录自己开发鲸音小程序推荐系统的全过程,一切从零开始。
推荐算法考虑的是CB(content-based)和CF(collaborative filtering)结合。
用户反馈方式考虑显示的二元制(喜欢,无偏好,不喜欢)评价,结合关联用户和物品的标签,隐式评价播放、浏览记录等。
暂不考虑问题,噪声和新鲜度的问题。
首先考虑CB算法
基于内容的推荐算法试图去给用户推荐用户曾经喜欢过的物品。
这里我们约定一下将我们的物品统称为对象(其他名称包括记录、物品、得分、样本、观察值、实例),将其特征统称为属性(其他名称包括变量、字段、特征、特性)。
CB算法推荐过程分为三步:
1)内容分析
内容分析主要是对象的属性值的获取,将对象的属性值处理成一定的格式,以便下一步阶段的处理。
这里我们对音频主要属性提取情况如下(暂时考虑的或者考虑考虑的):
主要属性:主类别(7种,离散值,没有近邻关系)
热度属性:点赞数、评论数、转发数、播放数
暂时不知道怎么处理的属性:标签
环境属性,暂时也不知道怎么处理:上传地理位置、作者性别、作者社区
这里考虑将其处理成向量的形式便于使用余弦相似度来度量用户对其喜好程度。
其中:a,b,c,d,e,f,g代表七种类别,h代表热度属性整合值
2)信息学习
关于用户特征的学习考虑使用梯度下降法来学习:
其中:μ为学习系数,δ为反馈指数
3)过滤
过滤主要由余弦相似度来度量
CB的优缺点分析:
优点:①用户独立(CF中需要根据近邻来提供信息)②透明度(CF是一个黑盒子,用户无法得知推荐的解释)③新物品(CF存在新物品的冷启动问题)
缺点:①过度特化(惊喜度问题)②新用户(需要用户足够的数据)