点击上方蓝字关注“公众号”web

首先咱们会介绍一下数据预处理的一些方式,以及对推荐结果(数据挖掘结果)的评估方法;而后介绍数据挖掘中的哪些方法在推荐系统中比较适合应用,会分别从监督学习和无监督学习来介绍。算法
对机器学习比较了解的同窗应该会很容易理解内容,并没有太多难度,可是给出的一些经验性的总结可能会对您有帮助。
微信
数据预处理网络
记得去年秋招面试的时候就和面试官聊到数据预处理,我说在学校期间都是用标准数据集,干净整洁有条理,不多考虑预处理的问题。在去了平安科技和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.
往期回顾

长按关注我哟
以为内容还不错的话,给我点个“在看”呗

本文分享自微信公众号 - 机器学习与推荐系统(ml-recsys)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。