1.简介
推荐系统使用的数据挖掘技术,包括3个部分,数据预处理、数据分析、结果可解释
2.数据预处理
数据定义为对象及其属性的集合,属性是指对象所表达的特征。现实的数据需要进行预处理(清理、过滤、转化)以便在数据分析阶段使用。因为这些数据可能存在缺失值、重复值或者噪音。
推荐系统设计中,有三个问题是需要重点考虑的。首先,数据点和数据集合之间的相似度、距离衡量。其次,通过抽样的方式减少条目的数量。最后,减少数据的维度。
2.1相似
推荐系统中广泛使用的协同过滤算法主要使用了kNN得分类算法。该算法依赖于相似度的计算。推荐系统常用的方式是cosine相似度、pearson correlation和多变量相似权重。
2.2抽样
抽样的关键问题是找到一个可以代表原始数据集的子集,改子集于全部集合有类似兴趣属性。常用的抽样方式有随机抽样、分层抽样(按照某个属性)。
2.3降维
推荐系统常见的情况是,数据的特征分布在高维空间,并且信息十分稀疏。高维数据通常会带来维灾难,常用的降维算法有PCA和SVD。
SVD分解的关键是找到一个低维的特征空间,SVD可以自动的在低维学习到一个语义特征。SVD算法的核心理论是,将矩阵A分解为U λ V T 。给定一个n*m的数据矩阵A(n个条目,m个特征),分解为n*r的矩阵U(n个items,r个concepts),r*r对角矩阵λ
、一个m*r的矩阵V(m个features,r个concepts)
对角阵包含了奇异值,这些值总是整数并且 按照降序排列。U矩阵表示为item-to-concept相似矩阵,V矩阵表示为term-to-concept相似矩阵。
稀疏和维灾难是推荐系统反复出现的问题。大量的稀疏矩阵中行列的值为0,因此降维也是自然的。SVD广泛使用的主要原因是SVD被用于发现用户和产品间的潜在关系、在kNN算法里面增加邻居信息量。
3分类
分类器将特征空间映射到标签空间,特征是将要分类的元素的参数表示,标签代表了分类值。分类器有很多种类型,一般来说分为监督和非监督的。
监督分类。已知一些标签或者分类的集合、打了标签的样本集合。我们的目标是学习一个映射mapping(分界、函数)将这些样例分到不同的标签下,这样当有一个没有标签的样例到达时,可以预测出它所在的标签或分类。
非监督分类。标签或者分类是未知的,我们学习的目标是将样本集合适当的花费到不同的标签分类下。
(好奇为什么没有提到LR)
3.1 最邻近
最邻近算法是协同过滤算法中最常用的方法。该分类算法最大的优势是和协同过滤的思想很相关,找到最相似的用户或者物品等价于找到用户或者物品的邻居。另一个优势是,kNN分类不需要学习并维护一个给定的模型。因此该算法可以适应快速的变化,不过它也需要重新计算相似矩阵。
虽然kNN算法简单直接、良好的准确性、容易改进等优势,但是这种方式的权威性正在面临基于降维技术的挑战。
3.2 决策树
推荐系统中,决策树经常在基于模型的算法中使用。一种常用的方式是,使用内容特征来构造一个决策树,这个模型考虑了用户偏好相关的变量。在构建决策树时,在决策确定程序时考虑所有相关的变量是很难实现的。但是,决策树可以在系统的某些特定部分进行建模。
3.3基于规则的分类器
基于规则的分类器和决策树类似难以实现,但是对于推荐系统来说,利用局部领域知识或者业务规则,可以有效的提升系统性能。
3.4贝叶斯分类
贝叶斯分类在基于模型的推荐系统中广泛使用,同时也在协同过滤中使用。
3.5人工神经网络
人工神经网络在基于模型的推荐系统中使用,但是目前还没有确切的研究表明这种方法能代码多少效果受益。
4.聚类分析
聚类算法是将条目分配到不同的分组中,这样可以使在同一个分组内的用户相比较同其他分组的用户更加相似,它的目的是为已知的数据发现一个自然(或者有意义)的分组。相似的度量使用条目所代表的特征向量之间的距离来衡量。聚类算法的目的是是最小化组内的距离同时最大化组间的距离。
聚类算法分为两类:分层(层次树,可重合)和划分(条目不重合)。
4.1K-Means
基本的k均值具有一些缺点:(1)假设可以根据领域知识来选择合适的k(2)最终分类和选择受初始质心的影响很大。(3)有可能产生空集群。
4.2k-means的替代者
kmeans有一些局限,但是也难有合适的方式替代。常用的有基于密度的聚类、基于消息传递聚类、层次聚类。
4.3推荐系统中的聚类算法
基于协同过滤分类的主要问题是通过计算距离来确定最优的 k个邻居,一种可能的办法是降维。然后,即使我们对feature进行了降维,我们仍然有大量的对象来计算距离。因此聚类算法有了用武之地。
由于减少了计算,聚类可以有效地提高效率,但是和降维方法不同,它不能有效的提高准确率。
5.关联分析
关联规则的挖掘可以在某些时间有效地发现未知模式和指导个性化的购物决策。但是在推荐系统里面很少使用,主要是因为这种方式和基于item的协同过滤很相似,但是需要交易事务概念,使用起来不够灵活。
6.总结
选择合适的分类算法对于推荐系统来说是很困难的。在使用协同过滤的情况下,一些结果表明使用svm或者baydsian网络分类器的基于模型的方法相比较标准的knn算法可以提高效率,对于更复杂的非线性模型,没有明确的可以证明具有更好的效率。
因此选择合适的分类器,对于特定的推荐任务来说还值得探索。一种实用的方式是从最简单的模型做起,通过确定性能增益来判断是否需要修改更为复杂的模型。性能增益需要权衡预测准确和计算效率。