推荐系统中的数据挖掘方法

Posted AINLP

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐系统中的数据挖掘方法相关的知识,希望对你有一定的参考价值。


哈喽,大家好~机器学习和数据挖掘大家应该都已经很熟悉了,今天我们的标题是推荐系统中的数据挖掘方法,但是重心会倾向于一些数据挖掘算法在推荐系统领域中的影响。希望可以给大家带来一些学习工作中的灵感~


推荐系统中的数据挖掘方法




推荐系统中的数据挖掘方法




首先我们会介绍一下数据预处理的一些方式,以及对推荐结果(数据挖掘结果)的评估方法;然后介绍数据挖掘中的哪些方法在推荐系统中比较适合应用,会分别从监督学习和无监督学习来介绍。


对机器学习比较了解的同学应该会很容易理解内容,并无太多难度,但是给出的一些经验性的总结可能会对您有帮助。


推荐系统中的数据挖掘方法


数据预处理

记得去年秋招面试的时候就和面试官聊到数据预处理,我说在学校期间都是用标准数据集,干净整洁有条理,很少考虑预处理的问题。在去了平安科技和IBM实习后,才发现在数据预处理部分真的是花时间。




A) 相似度度量方法

具体的定义我们前面的文章中介绍过很多,最简单的就是欧几里得距离了,除此之外,马氏距离,余弦相似度,皮尔逊相关性也是很常见的相似度度量的一些方法。


对于相似度的使用在推荐系统中非常常见,协同过滤就可以看作是相似度方法的一个应用。此外相似度也可以加入到样本对于模型贡献的权重中去。


比较有意思的一个点在于有一些工作【1】验证了这些相似度的效果,发现在推荐系统中余弦相似度可能表现更好,甚至在有的工作【2】中发现,相似度的变化对推荐结果并没有什么显著的影响




B) 抽样

抽样在数据挖掘中是非常常见的一个步骤,从众多的数据集中选择出来一个子集,核心是要具有原始数据集的代表性,这也是为了缓解在处理完整数据集计算开销过大的情况。


抽样可以有放回和无放回的抽样,经验上将抽取到的数据按照 4:1 的比例划分为训练集和测试集,当然有时候也会选择加入验证集来学习超参数。


抽样的方法已经有很多种了,当然还是要看具体的应用场景,比如是和时序相关的场景,则需要重点考虑最近的数据。




C) 降维

在当今时代,降维是一个非常常见且重要的操作了,因为现有网络上的数据体量实在太大了。同样的,推荐系统中数据稀疏和维度灾难也是反复遇到的问题。通过有效的降维可以缓解上述情况。


最熟悉的降维算法当属 PCA 和 矩阵分解了吧。PCA 通过计算特征向量,可以按照特征值的大小来选择哪些特征向量更作为新的维度空间的坐标轴,实现对高维空间的降维。


SVD(奇异值分解)也是一个强大的降维工具。具体的内容我们在前面的文章中介绍过,这里做一些经验性的总结。首先 SVD 的关键问题是发现低维特征空间,这些新特征代表一个个“概念”,而且每个“概念”在概念集合中的重要性都可以量化。


所以 SVD 可以用来发现用户与产品之间的潜在关系,同样也有一些增量算法来计算近似的分解【3】。因此矩阵分解方法不仅可以作为预处理和降维的方法,因为整个推荐问题都可以看作是一个评分矩阵的填充问题,所以矩阵分解的方法就可以独立完成推荐的过程。


推荐系统中的数据挖掘方法


监督学习

A) 分类方法

分类在很多领域都有应用,而推荐系统问题本身也可以看作是一个分类,对每个物品分类为用户是否会喜欢或选择。下面我们简单说一下一些分类方法在推荐系统的应用中值得留意的点。


首先 knn 是最简单的分类算法,它和之前文章中介绍的基于领域的协同过滤息息相关,核心思路都是选择最相似的内容。


决策树是按照属性值进行逐层划分的方法。在推荐系统中常见应用在基于模型的方法中,不过纯粹使用决策树进行完成的推荐系统往往效果不佳,但是决策树可以被用来模拟系统的一个特殊部分,比如先获得初始的带推荐人群。


贝叶斯分类器也是获得一个简易推荐系统的常见方法。朴素贝叶斯在冷启动时可以有效的提高性能;直接利用贝叶斯分类器进行推荐也是一种;还有利用贝叶斯网络进行推荐;此外分层的贝叶斯网络也在一些环境下可以被使用。


逻辑回归将所有数据点都考虑进去寻找一个分类超平面,优点是简单,不利之处在于容易被异常点干扰。支持向量机则是以边界最大化来寻找分类超平面,关于 SVM 已经有很成熟的技术,并且也的确有一些工作应用它在推荐系统中。


人工神经网络伴随着深度学习的兴起又重新回到了人们的视野中,利用神经网络的拟合能力,对特征的提取非常有效,尤其是在时序信息中,前两天有身边的同学在他的号上写了利用 CNN 来提起时序特征的文章。现有的很多工作都是结合传统的机器学习方法和深度学习来共同提取特征信息,合作完成最终的推荐。




B)集成与评估

利用集成学习的思路,上述的分类器可以集成合作完成分类任务,常见的集成学习方法有 Bagging 和 Boosting。在 Netflix 的获奖方案中结合使用了 107 种方法【4】。


另一方面,对推荐结果的评估方法大家也有很多看法。对精度方面的评估,和数据挖掘中的常见精度衡量方式基本一致,如 precision,recall,F1,ROC 和 AUC 等。在之前的文章中我们介绍了常见的评估方法,介绍了很多指标的意义,都浅显易懂。


但是具体的指标的重要性,肯定要视不同的场景而定。


推荐系统中的数据挖掘方法


无监督学习

无监督学习也就是以聚类为代表的方法,将数据中的规律交给模型来自己总结。聚类主要的内容也就是分层和划分。


要说聚类,最熟悉的就是 k-means 算法,通过聚类得到一些相似物品的集合。有工作利用这种方法来为协同过滤获得初始的领域选项。


当然 k-means 也有一些缺陷,对 k 的设置,最初的聚类对于初始中心点非常敏感,会产生空聚类,对聚类是不同大小、密度、非球状的数据处理不佳。但是同样有了很多相关工作来完善这些缺点并在推荐系统中进行应用。


如基于局部敏感哈希(LSH),贝叶斯非参数模型等。其中 LSH 因为性能好且具有可伸缩性,在工业界推荐系统的预处理阶段被用来分组相似用户。


推荐系统中的数据挖掘方法


总结

本周的文章我们介绍了一些常见的数据挖掘技术在推荐系统中的应用,我们没有拘泥于具体的算法细节,而是尽可能的从推荐系统的角度来看待这些技术会产生什么样的作用。


在设计一个推荐系统时,选择合适的数据挖掘技术本身就是一个复杂的任务,会受到具体应用场景的许多约束。希望本周的文章可以给大家在做决策时带来一些帮助。


推荐系统中的数据挖掘方法


参考文献

[1] Evaluating similarity measures: A large-scale study in the orkut social network.

[2] The effect of correlation coefficients on communities of recommenders.

[3] Incremental svd-based algorithms for highly scalable recommender systems.

[4] The bellkor solution to the netflix prize.


推荐系统中的数据挖掘方法

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心推荐系统中的数据挖掘方法

欢迎加入推荐系统交流群
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注推荐系统

推荐阅读












关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧

以上是关于推荐系统中的数据挖掘方法的主要内容,如果未能解决你的问题,请参考以下文章

推荐系统评测方法和指标分析

论文精选 | 推荐系统——供应链管理中的重要技术方法

基于矩阵分解原理的推荐系统

推荐系统中的矩阵分解演变方式

推荐系统笔记:基于潜在因子模型的协同过滤(latent factor model)

推荐系统中的稀疏矩阵处理