推荐系统是为用户推荐所需商品的软件工具和技术。也即是向用户建议有用物品的软件工具和技术。这种建议适用于多种决策过程,如购买什么物品、听什么音乐、在网上浏览什么新闻等。
2.数据挖掘的过程一般由三个连续执行的步骤组成:
数据预处理、数据分析、结果解释。
2.1数据预处理
我们把数据定义为一组对象及其属性的集合,其中属性定义为性质或者对象的特征。对象的其他名称包括记录、物品、得分、样本、观察值或者实例。属性也可以称为变量、字段、特性或者特征。
真实数据通常需要经过预处理,以便于机器学习技术在分析阶段使用。
2.1.1相似度度量方法
在一些只有二进制属性的物品案例中,可以采用几个相似度度量方法。首先计算M01、M10等的数量,其中M01代表x是0同时y是1这个属性的数量,以此类推,根据这些数值,可以计算得到简单匹配系数SMC=M11+M00/M01+M10+M00+M11
2.1.2抽样
抽样是数据挖掘从大数据集中选择相关数据子集的主要技术。它可以被用来创建训练和测试数据集。训练集被用于分析阶段学习参数或配置算法。而测试集被用来评估训练阶段获得的模型或者配置,确保它在将来产生的未知数据上运行良好。抽样的关键是发现具有整个原始数据集代表性的子集,也就是说,其具有与整个数据集大概类似的兴趣属性。有随机抽样,分层抽样(数据基于特殊特征被分成几个部分,之后对每个部分独立进行随机抽样。
在分离训练集和测试集时,通常是使用无替代的标准随机抽样,并且是80/20的训练集和测试集比例,一般来说,超过2/3的任何值作为训练集是合适的。
抽样可能导致过特殊划分的训练和测试数据集。因此,训练过程可以重复好几次,采用n折K次交叉验证,然后求K次学习模型的平均性能。
2.1.3降维
推荐系统中不仅有定义高维空间特征的数据集,而且在空间中信息非常稀疏,例如,每个对象就那么几个有限的特征有值。应用降维技术可以直接适用于计算推荐的预测值,应用降维技术可以带来这样的结果,即它可以作为推荐系统设计的方法,而不仅是数据预处理技术。
2.1.3.1在推荐系统中最相关的降维方法:主成分分析(PCA)和奇异值分解(SVD)
主成分分析可以获得获得一组有序的成分列表,其根据最小平方误差计算出变化最大的值。列表中第一个成分所代表的变化量要比第二个成分所代表的变化量大,以此类推,我们可以通过忽略这些对变化贡献较小的成分来降低维度。
SVD分解中的关键问题是发现低维特征空间,这些新特征代表概念以及在集合内容中的每一个概念强度都是可以计算的。因为SVD可以自动获取到低维空间上的语义概念,它可以被用来,当作潜在语义分析的基础,潜在语义分析是一种在信息检索中非常受欢迎的文本分类技术。奇异值矩阵中的奇异值是按特征值的平方根有序递减的。因此,初始矩阵可以通过截取前K个特征值来近似构造。被截取的SVD代表降维成K维空间后的潜在结构,这一般意味着特征向量中的噪声被降低。
SVD可以用来发现用户和产品之间的潜在关系,为了完成这个目的,他们首先用物品平均评分值去填充用户—物品矩阵的0值项,然后通过减去用户对所有物品平均评分值来正规化这些矩阵。SVD分解最基本的想法是把评分矩阵分解成两个部分:一个部分包含描述用户的特征,另一个部分包含描述物品的特征。
2.1.4去噪
数据挖掘中采集的数据可能会有各种噪声,如缺失数据,或者是异常数据,去噪是非常重要的预处理步骤,其目的是在最大化信息量时去除掉不必要的影响。
在一般意义上,我们把噪声定义为数据收集阶段收集到的一些可能影响数据分析和解释结果的伪造数据。
2.2分类
分类器是从特征空间到标签空间的映射,其中,特征代表需要分类的元素属性,标签代表类别。例如,餐厅推荐系统能够通过分类器来实现,其分类器基于许多特征描述把餐厅分成两类中的一类9(好的,不好的)
2.2.1最近邻
基于样本的分类通过存储训练记录并使用它们来预测未知样本的标签类别。一个常见的例子是所谓的死记硬背学习。这种分类器记住了所有的训练集,并且只有在新记录的属性与训练集中样本完全匹配时才会分类。一个更加精确和通用的基于样本的分类是近邻分类。给出一个要分类的点,K近邻分类器能够从训练记录中发现k个最近的点。然后按照它最近邻的类标签来确定所属类标签。算法的基本思想是,如果一个样本落入由一个类标签主导的领域,是因为这个样本可能属于这个类。
2.2.2决策树
推荐系统中的决策树可以用在基于模型的方法里,一种可能是用内容特征建立决策树模型,对描述用户偏好的所有变量建模。建立一个试图解释决策过程中所有参数的决策树是非常困难以及不现实的,但是决策树可以被用来模拟系统的一个特殊部分。
在推荐系统中另一个使用决策树的选择是使用它们作为物品排序的工具。使用决策树来排序已经在一些环境下被研究。
2.2.3基于规则的分类
基于规则分类器是通过一组“IF......THEN"的规则集合划分数据,规则的前提或条件是属性连词的表达式,规则的结论是一个正或者负的分类。
为了建立一个基于规则的分类器,我们可以用从数据中直接抽取规则的直接方法,另一方面,使用间接的方法从其他分类模型中抽取规则很常见。他的优点是,他们表示很明确,因为它们是符号化的并且可以在没有任何转化的情况下操作数据的属性,并且可以有效的分类新的对象。
2.2.4贝叶斯分类器
贝叶斯分类器是解决分类问题的一个概率框架。它基于条件概率定义和贝叶斯理论。贝叶斯统计学派使用概率来代表从数据中学习到的关系的不确定性。
一个特殊但是最常用的分类器是朴素贝叶斯分类器。
2.2.5人工神经网络(ANN)
人工神经网络由一组内连接点和带权链接组成,其想法来自于生物大脑的结构,ANN中的节点称为神经元,类似于生物神经。这些简单的功能单元组成网络,网络在用有效数据训练之后能够学习分类问题。
ANN的最简单模型是感知器模型,如果把激活函数特指为简单的阈值函数,则输出的就是根据每条链接的权重将输入值累加,然后和某个阈值相比较,感知模型是具有简单和有效学习算法的线性聚分类器,但是还有几种其他对于激活函数通用的选择,如正切双曲等。输出函数有0和1两个值。
今天中午吃完饭看到了不想看到的一幕,不要想了,不要想了,这个社会,还是不要把什么事都想的那么美好,包括人,坦然一点,成长一点,好好上班,这才是现在最应该干的。
ANN可以有许多的层,在ANN中的层被分成三种类型:输入、隐藏、输出,输入层的单元响应进入网络的数据。隐藏层接受从输入单元中的带权输出。输出层响应隐藏层中的带权输出并且产生最终的网络输出。使用神经元作为原子功能单元,在网络中有许多种可能的架构来把它们结合在一起。
ANN最主要的优点是(取决于激活函数)能做非线性分类任务,并且由于并行属性,它们高效甚至能够在部分网络受损的情况下操做。ANN属于一种次符号分类器,也就是说,在推理知识的时候不提供任何语义知识,说白了,这是一种黑盒方法。
2.2.6支持向量机
支持向量机分类的目标是发现数据的线性超平面(决策边界),以边界最大化的方式分离数据。如果决策边界是非线性的,我们需要转换数据到高维的空间,这个转换的完成得益于核函数。
2.2.7分类器的集成
使用分类器集成背后的最基本的思想是,从训练数据构造一系列的分类器,并通过聚集预测值来预测类标签。只要我们能假设这些分类器都是独立的,分类器集成就有效。
2.2.8评估分类器
推荐系统中被接受最常用的指标是预测兴趣(评分)和测量值的均方差或均方根误差。如果把推荐看作分类问题,就可以使用评估分类器的著名指标,如准确度和召回率。
为了评估一个模型,我们一般考虑以下指标:真正(TP):分到类A且真的属于类A的实例数量;真负(TN):没有分到类A且真的不属于类A的实例数量;假正(FP):分到类A但不属于类A的实例数量;假负(FN):没有分到类A,但属于类A的实例数量。
最常用来衡量模型性能是定义正确分类的实例和总的实例数量之间的比率叫精确度。但是这里就会存在类不平衡的问题。
模型性能的其他常用指标,特别是在信息检索中,是准确率和召回率,准确率是分样本到类A中犯错误的指标。召回率是衡量没有留下本应该划分到类中的样本的程度。在大部分的例子中,当我们单独使用这两种指标时是有误导的。通过不分给任何的样本到类A可以建立有完美预测准确性的分类器,相反,通过分配所有的样本到类A中可以建立完美召回率的分类器。事实上,有一种结合了预测和召回率到一个单一指标中的指标F1=2TP/2TP+FN+FP
有时候我们会比较几个相互竞争的模型,而不是单独评估它们的性能。用ROC曲线也已经在评估推荐系统时使用,将ROC曲线下的面积作为评估的指标。
2.3聚类分析
扩展CF分类器的最大问题时计算距离时的操作量,即发现最好的K近邻。聚类可以提高效率,但是它不像降维方法那样可以提高精确度。因此,在设计推荐系统时必须谨慎使用聚类,必须小心的衡量提高效率和降低精确度之间的平衡。
聚类算法有两个主要的类别:分层和划分,划分聚类算法把数据划分成非重合的聚类,使得每一个数据项确切在一个聚类中。分层聚类算法在已知聚类上继续聚合物品,生成聚类的嵌套集合,组成一个层级树。
2.3.1k-means
k-means聚类是一种分块方法。基础的k-means是极其简单和有效的算法。但是,它有几个缺陷:1.为了选择合适的k值,假定有先验的数据知识。2.最终的聚类对于初始对于初始的中心点非常敏感。3.它会产生空聚类。k-means也有几个关于数据的缺陷:当聚类是不同的大小、密度、非球状形状时,就会有问题,并且当数据包含异常值时它会有问题。
到时候我们的推荐系统包括这几个步骤...跟国内其他大厂的差不多.....
你到时候需要理一下每个步骤的模型/算法/评估等./
召回: 基于相似用户、相似物品、画像属性、上下文等进行召回;
融合: 决定召回策略比例并截取物品数形成初步结果集,融合器有加权融合、概率融合、规则融合等等;
填充: 通过一些热门填充、规则填充,在工程上保证物品的数量,通过试投保证保证推荐的新颖度;
过滤: 通过用户历史、行为让推荐可以保证不出重复及无状态服务的手段、同时还有负反馈计算;
重排: 通过模型、规则排序,提高点击率的同时保证用户体验。