如何在没有大量用户数据的状况下设计个性化推荐系统并让用户对推荐结果满意从而愿意使用推荐系统,就是冷启动问题。 算法
解决冷启动问题方法概述: 网络
用户注册时附带信息:网站
基于注册信息的个性化推荐流程基本以下:spa
(1) 获取用户的注册信息;设计
(2) 根据用户的注册信息对用户分类;3d
(3) 给用户推荐他所属分类中用户喜欢的物品;blog
(4) 若没法找到合适的物品,推荐热门排行榜。内存
注:该方法中须要统计物品对分类的热门程度,经过以下公式:开发
P(f,i) = |N(i) ∩ U(f)| (期中N(i)是喜欢物品的用户集合,U(f) 是具备某种特征的用户集合) 文档
这种方法对热门商品的热门程度每每比较大,在分母中增长一项: |N(i) + α|
选择合适的物品启动用户的兴趣
解决用户冷启动问题的另外一个方法是在新用户第一次访问推荐系统时,不当即给用户展现推荐结果,而是给用户提供一些物品,让用户反馈他们对这些物品的兴趣,而后根据用户反馈给提供个性化推荐。
通常来讲,可以用来启动用户兴趣的物品须要具备如下特色:
(1)比较热门。若是要让用户对一个物品进行反馈,前提是用户知道这个物品是什么东西;
(2) 具备表明性和区分性。启动用户兴趣的物品不能是大众化或老小咸宜的,由于这样的物品对用户的兴趣没有区分性;
(3)启动物品集合须要有多样性。在冷启动时,咱们不知道用户的兴趣,而用户兴趣的可能性很是多,为了匹配多样的兴趣,咱们须要提供具备很高覆盖率的启动物品集合,这些物品能覆盖几乎全部主流的用户兴趣。
物品冷启动须要解决的问题是如何将新加入的物品推荐给对它感兴趣的用户,这时候能够经过物品之间的语义来计算其类似度,经常使用的算法有cos类似度和TF-IDF。
物品冷启动在新闻网站等时效性很强的网站中很是重要,由于那些网站中时时刻刻都有新加入的物品,并且每一个物品必须可以在第一时间展示给用户,不然通过一段时间后,物品的价值就大大下降了。
以前咱们介绍了UserCF算法和ItemCF算法。UserCF算法并不对新物品很敏感,在不少网站中,推荐列表并非给用户展现物品的惟一列表。当一个用户在某个地方发现了新加的物品并对其进行了反馈。经过UserCF算法给相似具备相同兴趣的用户推荐这个物品。这样新加的物品就会源源不断的扩散开来。
可是有些网站中推荐列表就是用户获取新加物品惟一的或者是主要途径。这时就要解决第一推进力的问题。也便是第一个用户在哪发现新加物品的问题。解决这个问题的最简单的办法就是将新加的物品随机的展现给用户,可是这样作显然并不个性化。所以能够考虑利用物品内容信息,将新物品投放给曾经喜欢过和他相似内容的其余物品的用户,这相似于ItemCF思想。不过这是先经过ItemCF找到一个可能对物品感兴趣的用户,而后再经过USerCF推荐给与此用户兴趣相似的其余用户。
若是用ItemCF算法解决物品冷启动问题,就有点麻烦了,由于ItemCF经过用户行为对物品进行类似度的计算,造成物品类似度矩阵。再根据这个类似度矩阵把物品推荐给喜欢过相似这个物品的用户。这个物品类似度矩阵是线下计算好,线上放进内存。从而新物品不会出如今物品类似度矩阵中。解决的办法是频繁的更新类似度矩阵。这是一件很是耗时的事情。为此咱们只能经过物品内容来计算物品类似度矩阵。
这里涉及到物品类似度的计算,和ItemCf中物品类似度计算不一样的是,对于新物品这里并无用户数据,因此通常经过物品内容计算类似度。
通常来讲,物品的内容能够用向量空间模型表示,该模型会把物品表示成一个关键词向量。对于物品d,他的内容表示成一个关键词向量以下:
其中e是关键词,w是这个词对于权重,其中w的计算公式就是著名的TF-IDF公式,该公式的计算见后文中具体介绍。
在给定物品内容的关键词向量后,物品内容响度能够经过向量之间的余弦类似度计算:
《推荐系统实战》中具体比较了内容过滤算法和协同过滤算法在推荐系统中的实际效果(有准确率、召回率、覆盖率等数据)。
主要思想是:若是某个词或短语在一篇文章中出现的频率TF高,而且在其余文章中不多出现,则认为此词或者短语具备很好的类别区分能力,适合用来分类。
TFIDF其实是:
TF词频(Term Frequency):表示词条在文档d中出现的频率
IDF逆向文件频率(Inverse Document Frequency):若是包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具备很好的类别区分能力。
由于不一样的文章长度不同,须要进行标准化:
IDF计算公式:
TF-IDF值:
参考:
https://baike.baidu.com/item/tf-idf/8816134?fr=aladdin