part I 推荐系统不同于搜索引擎
推荐系统之所以不同于搜索引擎,主要在于前者为系统主动发掘用户的潜在item需求,基于item的相似度/其他用户的相似度->相似用户青睐的item集;后者基于用户的主观需求,通过key word实现item的主动搜索。
推荐系统两类基础
1)基于item的推荐 主要在发掘item之间的相似性
2)基于用户的推荐 主要在于发掘高相近的用户之间的item补集
part II 推荐系统表现的相关评判指标
1)用户满意度
用户主观评判,做个直白的样本评判;如豆瓣的推荐物品旁边都有满意和不满意的按钮。
用户使用表现,一般用点击率,停留时间,转化率。
2)预测准确度
如果是类似电影评分机制,则一般计算均方根误差/平均绝对误差。
如果是topN推荐的话,则主要计算召回率和准确率。
(p=推荐的n个物品中有多少个是对的/推荐的n个物品; R=推荐的n个物品中有多少个是对的/正确结果个数)
3)覆盖率
计算所有被推荐的商品占物品总数的比重;考虑是不是所有的商品都有被推荐的机会。
精确一点的可以信息熵和基尼系数来度量。
4)多样性
推荐结果中要体现多样性(比如既喜欢看格斗类的电影,又喜欢爱装文艺,且80%是看格斗类,20%看文艺类,那么推荐结果中最好也是这个比例)
如果推荐列表中所有物品间的相似度都比较高,往往说明都是同一类物品,缺乏多样性。
5)新颖性(某些推荐不适用,商品/产品适用)
推荐一些用户不知道的商品或者没看过没买过的item。
通常越不热门的类似物品越会让用户觉得新颖。
另外,可以从推荐系统设计的质量和完善度来评价,如流行程度,内容更新频率,抗恶意攻击能力。
part III 推荐系统内在算法
1)基于用户-item矩阵的SVD分解
A=X*B*Y
A--- 关于user-item的矩阵 B--- 对角矩阵,关于不同的user类和item类间相关性
X--- 关于列item的聚类降维 Y---关于user的聚类降维
因此,对于矩阵A进行一次奇异值分解,可以同时完成user的聚类和item的聚类,聚类的基础就是相关性大小。
2)基于LSA(隐语义分析)模型
应用于文档检索。如何通过搜索的query来寻找文档,若仅是词语的匹配,难以避免出现一词多意(多义词apple)和多词同义(同义词same/like)的问题;如果匹配的不针对单个的词,而是一类词(某一概念/主题),将词语映射到“主题/概念”空间中,每篇文档以主题/概念来表征。这种“映射”即是一种降维技术。
3)推荐系统中矩阵分解技术
A=P*T(Q)
A[u][i]----uth用户对ith物品的评分 T(Q)---Q的转置
P[u][k]---用户u对因子k的喜欢程度 Q[i][k]---物品i包含因子k的程度