个性化推荐中的数据稀疏性

个性化推荐中数据稀疏性怎么理解 造成的原因是什么?

每个领域对稀疏性的定义和解决方法都不一样,拿感兴趣地点推荐来说。
假定我拥有一群在上海的用户和他们最近一个月所到过的地点的记录。现在我想根据他所去过的地点来给用户推荐一个用户感兴趣的地点。通常来说有两种推荐方式:基于用户的协同过滤算法基于地点的协同过滤算法基于用户的协同过滤算法大体分如下两步来进行:找到与用户 A 最相似的用户 B推荐 B 去过而 A 没去过的地点到这里,很自然我们想问如何找到与用户 A 最相似的用户 B,一个很直接的办法就是,只要谁去过的地方和 A 所去过的地方重合的最多,那么这个用户和 A 是最为相似的。

然而,这个方法通常在现实中是行不通的(并不是说这个方法无效),为什么呢?为了阐释这个问题,我们先来看下面两条句子:”小明喜欢去太平洋咖啡喝咖啡""小天喜欢去星巴克喝咖啡"其实小天和小明都喜欢喝咖啡,但是去的地方不同,上面那个方法则会认为小明和小天并不相似。我们可以说是地理空间稀疏性(Sparseness of Geographic Spaces)导致的,而导致稀疏性的原因就是小明的地点太过于详细,太过于详细则可能无法找到相似的人,这个问题的解决办法是对所到过的地点转换成语义地点(Semantic Location)。其实所谓的语义地点,就是将地点进行贴标签分类,譬如说将”太平洋咖啡“和”星巴克咖啡“都归类为”咖啡“。将”天虹商场“和”沃尔玛“都归类为”超市“。不难理解,语义化后,就更加容易找到相似的用户了,那么,也就可以更好的推荐用户感兴趣的地点了。基于地点的协同过滤算法也是类似的处理方法。


1.交互矩阵稀疏矩阵分解协同过滤是经典的推荐算法,都可能存在交互(评分)矩阵稀疏的问题。矩阵分解需要”用户-物品”交互矩阵,这时候的数据稀疏,是由于用户的评分记录太少,交互矩阵的非零项很少。矩阵分解的优点就是相对能较好地处理数据稀疏问题。基于用户的协同过滤算法,主要思想就是相似用户有相似的喜好。当我们计算用户之间的相似度时,用户用评分向量表示,等价于计算不同用户的评分向量的相似度。如果评分向量大部分为空(几乎没有评分),没有区分度,这样的相似度衡量就不太准确。基于物品的矩阵分解类似。
2.数据高维特征个性化推荐系统特别是基于深度学习的推荐算法,必然需要引入用户和物品或上下文特征。类别特征需要one-hot处理,很容易高维稀疏,例如ID类特征。3.长尾稀疏对于长尾商品或新商品,用户历史信息较少,例如历史点击、购买记录,如果使用session-based类的推荐方法,可能会存在预测阶段物品的历史数据稀疏的问题。


现在待处理的推荐系统规模越来越大,用户和商品(也包括其他物品,譬如音乐、网页、文献……)数目动辄百千万计,两个用户之间选择的重叠非常少。如果用用户和商品之间已有的选择关系占所有可能存在的选择关系的比例来衡量系统的稀疏性,那么我们平时研究最多的MovieLens数据集的稀疏度是4.5%,Netflix是1.2%,这些其实都是非常密的数据了,Bibsonomy是0.35%,Delicious是0.046%。想想淘宝上号称有8亿商品,平均而言一个用户能浏览800件吗,我估计不能,所以稀疏度应该在百万分之一或以下的量级。数据非常稀疏,使得绝大部分基于关联分析的算法(譬如协同过滤)效果都不好。这个问题本质上是无法完全克服的,为了解决这个问题,也有很多办法,譬如可以通过扩散的算法,从原来的一阶关联(两个用户有多少相似打分或者共同购买的商品)到二阶甚至更高阶的关联(假设关联性或者说相似性本身是可以传播的)[8],也可以添加一些缺省的打分[9],从而提高相似性的分辨率。数据规模越大,一般而言越稀疏,现在能够处理稀疏数据的算法被认为是更有前途的(譬如扩散[8]、迭代寻优[10],转移相似性[11]等等)。

为了解决深度学习数据少,和数据稀疏, 目前业界的主流方法有一下5种:

1.数据增广

数据增广,主要是想,对现有的数据,添加噪声等各种其他变换,从而产生一些有意义的数据,是的数据集增加,从而解决数据稀疏的问题,提升模型性能。 特别的,如图所示,Zachary Lipton 介绍了近期他的一个工作:利用 GAN来做图像数据增广。

2.半监督学习

半监督学习的情形是指:我们拥有少量的标注样本(图中橘色部分)以及大量的未标注样本(图中蓝色部分)。

半监督学习,一般的思路是:在全部数据上去学习数据表示,在有标签的样本上去学习模型,用所有数据去加正则。

3.迁移学习

迁移学习,主要是想,在一个拥有大量样本的数据(图中蓝色部分)上去学习模型,在改动较少的情况下,将学习到的模型迁移到类似的目标数据(图中橘色部分)和任务上。

4.领域自适应

领域自适应,主要是想,在已有的标注数据p(x,y)上学习模型, 然后尝试在另一个分布上q(x,y)上去做应用。

5.主动学习

主动学习,维护了两个部分:学习引擎和选择引擎。学习引擎维护一个基准分类器,并使用监督学习算法对系统提供的已标注样例进行学习从而使该分类器的性能提高,而选择引擎负责运行样例选择算法选择一个未标注的样例并将其交由人类专家进行标注,再将标注后的样例加入到已标注样例集中。学习引擎和选择引擎交替工作,经过多次循环,基准分类器的性能逐渐提高,当满足预设条件时,过程终止。

参考文献:
[1] Li Q, Zheng Y, Xie X, et al. 2008, Mining user similarity based on location history[C], Proceedings of international conference on advances in geographic information systems, pp: 34.
[2] Xiao X, Zheng Y, Luo Q, et al. 2010, Finding similar users using category-based location history[C], Proceedings of international conference on advances in geographic information systems, pp: 442-445
[3] https://www.zhihu.com/question/38815541/answer/1126267700
[4] https://www.zhihu.com/question/38815541/answer/132325785
[5] http://blog.sciencenet.cn/home.php?mod=space&uid=3075&do=blog&id=554630
[6] http://www.elecfans.com/d/727983.html

你可能感兴趣的:(Deep,Learning,机器学习,人工智能,深度学习,大数据)