zoukankan      html  css  js  c++  java
  • 推荐系统冷启动问题

    冷启动问题:
    1、用户冷启动;
    2、物品冷启动;
    2、系统冷启动。

    解决问题方法:

    用户冷启动

    提供非个性化推荐。

    1、利用用户的注册信息,针对用户注册信息获取用户的特征,根据特征粒度选择当前特征范围内最热门的商品进行推荐。一般而言,特征粒度越细,召回率,准确率和覆盖率都会越高。

    用户注册信息:
    1、人口统计学信息;
    2、用户兴趣; 3、从其他网站获取的用户站外行为信息(其他社交网站账号登陆)。
    流程:
    a、获取用户的注册信息;
    b、根据用户的注册信息对用户分类;
    c、给用户推荐他所属分类种用户最喜欢的物品。

    2、选择合适的物品启动用户的兴趣。也就是在用户注册之后,不立即推荐结果,而给用户提供一些物品,让用户反应对这些物品的兴趣。

    启动兴趣的物品特征:
    1、比较热门:基本上用户都知道,这样用户评价的时候结论才会有效;
    2、具有代表性和区分性: 不能够选择任何人都喜欢的物品,这样就无法获得有效的用户区分信息,无法区分用户个性化的兴趣;
    3、启动物品集合具有多样性:需要提供覆盖率很高的物品集合供用户选择,保证能够匹配用户兴趣的多样新。e.g.可以首先提供大类供用户选择,然后再提供物品集合供用户选择。
    可以用决策树来解决物品集合启动问题。
    通过计算用户的兴趣方差来获得用户的兴趣是否一致。

    $ sigma_{u} in U^{'}$是用户集合$U^{'}$所有评分的方差。
    物品区分度度量:
    $$ D(i) = sigma_{u in N^{+}(i)} + sigma_{u in N^{-}(i)} + sigma_{u in overline{N}(i)} $$
    $N^{+}(i)$是对喜欢物品i的用户集合, $N^{-}(i)$是不喜欢物品i的用户集合,$overline{N}(i)$是没有对物品i评分的用户的集合。$sigma_{u in N^{+}(i)}$表示喜欢物品i的用户对于其他物品评分的方差。如果说这三类用户集合内的用户对其他物品兴趣很不一致,说明物品i具有较高的区分度。

    以上就是树的分支的标准,找到物品区分度最大的物品,对用户进行分类,然后再根据这个标准继续进行分支,最后生成树。
    通过这个生成树的规则,对用户进行兴趣的划分。

    物品冷启动(在新闻网站等时效性强的网站很重要)

    3、利用物品的内容信息。

    1、UserCF当中,只要用户对新的物品有行为,推荐系统就可以根据用户的相似度推荐这个新物品。所以在这个算法当中要解决的是新物品的推动的问题,也就是第一推动力的问题。
    最简单的算法:将新物品随机展示给用户,但是这个展示不够个性化,所以考虑物品的内容信息,推荐给喜欢过和这个物品内容相似的用户。

    2、ItemCF:这里物品冷启动的问题比较严重,因为这个是根据用户的历史数据计算物品之间的相似度。物品之间相似度计算量大,更新速度不快,所以新物品可能不存在这个列表当中,也就无法为用户提供这个新物品,而无法根据用户的历史行为记录计算这个新物品的相似度。
    解决方法: 利用物品的内容信息计算物品相关表,并且频繁更新这个表单。
    基于内容的过滤算法在内容特征非常强的情况下是由于ItemCF的,但是这要求内容过滤算法有很强的内容特征。 一般而言如果内容特征的影响没有那么大,ItemCF的准确度和召回率都要是高于内容过滤算法的,基于内容特征的过滤算法可以通过计算相似度做KNN来实现分类。
    一般内容过滤算法的覆盖率比ItemCF大,流行度比ItemCF要低。因为内容过滤算法忽略了用户的行为,所以忽视了物品的流行度以及用户行为当中包含的规律。
    基于文本的内容过滤算法可以通过LDA实现(三元素:文档,话题,词语)。
    也可以基于KL散度来判断相似度,KL散度越大,相似度越低:

    $$ D_{KL}(p|| q) = sum_{i}p(i)ln(frac{p(i)}{q(i)}) $$

    系统冷启动:

    没有用户行为数据,也没有重组的物品内容信息计算准确的物品的相似度。
    通过专家进行物品特征的标注,从而计算出物品之间的相似度。
    Pandora:全部数据通过专家标注,形成特征向量。
    jinni:通过人工标注部分数据,再通过机器学习的方法学习标注另外没有进行标注的样本。

  • 相关阅读:
    ASP.NET:在一般处理程序中通过 Session 保存验证码却无法显示图片?
    HTML中哪些标签的值会被提交到服务器呢?
    Java泛型之Type体系
    Java 调用 shell 脚本详解
    quartz详解2:quartz由浅入深
    Java 服务端监控方案(四. Java 篇)
    Apache Storm 学习资料
    开源框架是如何通过JMX来做监控的(一)
    Kafka Streams简介: 让流处理变得更简单
    linux 技巧:使用 screen 管理你的远程会话
  • 原文地址:https://www.cnblogs.com/luxuriance-lily/p/8899537.html
Copyright © 2011-2022 走看看