推荐算法冷启动及推荐算法简介~

推荐系统的冷启动问题

  • 推荐系统冷启动概念

    • ⽤户冷启动:如何为新⽤户做个性化推荐

    • 物品冷启动:如何将新物品推荐给⽤户(协同过滤)

    • 系统冷启动:⽤户冷启动+物品冷启动

    • 本质是推荐系统依赖历史数据,没有历史数据⽆法预测⽤户偏好

  • 用户冷启动

    • 1.收集⽤户特征

      • ⽤户注册信息:性别、年龄、地域

      • 设备信息:定位、⼿机型号、app列表

      • 社交信息、推⼴素材、安装来源

    • 2 引导用户填写兴趣

    • 3 使用其它站点的行为数据, 例如腾讯视频&QQ音乐 今日头条&抖音

    • 4 新老用户推荐策略的差异

      • 新⽤户在冷启动阶段更倾向于热门排⾏榜,⽼⽤户会更加需要长尾推荐

      • Explore Exploit⼒度

      • 使⽤单独的特征和模型预估

    • 举例 性别与电视剧的关系

  • 物品冷启动

    • 给物品打标签

    • 利用物品的内容信息,将新物品先投放给曾经喜欢过和它内容相似的其他物品的用户。

  • 系统冷启动

    • 基于内容的推荐 系统早期

    • 基于内容的推荐逐渐过渡到协同过滤

    • 基于内容的推荐和协同过滤的推荐结果都计算出来 加权求和得到最终推荐结果

Model-Based 协同过滤算法

随着机器学习技术的逐渐发展与完善,推荐系统也逐渐运用机器学习的思想来进行推荐。将机器学习应用到推荐系统中的方案真是不胜枚举。以下对Model-Based CF算法做一个大致的分类:

  • 基于分类算法、回归算法、聚类算法

  • 基于矩阵分解的推荐

  • 基于神经网络算法

  • 基于图模型算法

接下来我们重点学习以下几种应用较多的方案:

  • 基于K最近邻的协同过滤推荐

  • 基于回归模型的协同过滤推荐

  • 基于矩阵分解的协同过滤推荐

基于K最近邻的协同过滤推荐

基于K最近邻的协同过滤推荐其实本质上就是MemoryBased CF,只不过在选取近邻的时候,加上K最近邻的限制。

这里我们直接根据MemoryBased CF的代码实现

修改以下地方

class CollaborativeFiltering(object):

    based = None

    def __init__(self, k=40, rules=None, use_cache=False, standard=None):
        '''
        :param k: 取K个最近邻来进行预测
        :param rules: 过滤规则,四选一,否则将抛异常:"unhot", "rated", ["unhot","rated"], None
        :param use_cache: 相似度计算结果是否开启缓存
        :param standard: 评分标准化方法,None表示不使用、mean表示均值中心化、zscore表示Z-Score标准化
        '''
        self.k = 40
        self.rules = rules
        self.use_cache = use_cache
        self.standard = standard

修改所有的选取近邻的地方的代码,根据相似度来选取K个最近邻

similar_users = self.similar[uid].drop([uid]).dropna().sort_values(ascending=False)[:self.k]

similar_items = self.similar[iid].drop([iid]).dropna().sort_values(ascending=False)[:self.k]

但由于我们的原始数据较少,这里我们的KNN方法的效果会比纯粹的MemoryBasedCF要差

你可能感兴趣的:(人工智能,算法,人工智能,推荐算法)