推荐系统(RS)是个典型的基于数据挖掘的应用场景。所以,通常我们在搭建一个推荐系统之前,要进行数据的预处理。
真实的数据经过预处理之后,可以让机器学习技术在分析阶段使用。我们将围绕推荐系统设计三个重要的问题展开:1、相似度(或者距离度量方式)2、抽样问题 3、降维的使用
/背景知识:关于数据的属性/
我们把数据定义为一组对象及属性的集合,其中属性定义为性质或者是对象的特征。对象的其他名称包括记录、物品、得分、样本、观察值或者实例。属性也可以称之为变量、字段、特征和特性。
我们截取了某电商网站一个笔记本电脑的部分参数、以及一个背包的参数,并结合实例和算法的说明,两者是如何结合到一起,实现被推荐的。
如上图展示,一个笔记本电脑其实涉及非常多的参数,cpu型号、速度、屏幕尺寸、重量等,多达上百个。这些用来描述物品属性的值,在算法中也被称之为“维”。
即使是一个普通的背包,细分之后也有几十个参数,包括名称、重量、产地、风格、材质、性能等级、适合人群等。
/推荐系统的数学原理实现-相似度/
在经过对物品信息的抽象和提炼之后,我们会得到类似于一个属性值的表。因为,如果没有这样的表,就缺少结构化数据,你拿两个物品各500字的文字描述是无法实现相关性的测算,进而实现推荐。(推荐的数学基础,就是看物品之间是否存在相似性)
在计算两个物品之间的相似度时,最简单、最常用的距离度量是欧几里得距离。
什么是欧几里得算法?
百科的解释:
是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。
其中,n代表维数(属性数),Xk和Yk分别是数据对象x和y的第k个属性值(分量)。
后来,在欧几里得算法的基础上,改进后有了闵科夫斯基距离公式:
后来又出现了马氏距离算法,他和欧氏(欧几里得)距离最大的不同,在于考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的(scale-invariant),即独立于测量尺度。
//有兴趣了解马氏距离、欧氏距离的(度量公式),我们改天再开文章讨论。//
另一种常用的方法,是把物品看做n维空间的文档向量,并且计算他们相似度作为形成夹角的余弦值(在数学上,夹角越小,余弦值接近于1,方向更加吻合,越相似),其公式如下:
当然,物品之间的相似度还可以使用相关度来进行计算,用以度量对象间的线性关系,这里要请出我们的皮尔逊系数,他是最常用的。
如果纯粹讨论距离度量的公式,其实没有特别大的意义。就以本文中电脑和背包的参数,如果你来设计推荐算法,哪些参数你应该要考虑?
1、背包的尺寸和电脑的尺寸吻合(放得下);
2、背包的风格和电脑的用途吻合(风格搭);
3、价格合理区间(买个3K笔记本的,你推荐给他TUMI 也不合适);
4、其他参数(还要给予客户画像来影响算法的结果);
在实际应用中,推荐系统一般采用余弦相似度或者皮尔逊相关性(或者基于此的变种方案)。但是,从国外的一些实验和实践经验看,余弦相似度是其中效果最好的度量方法(作者持保留意见)。
总结,在一般的案例中,推荐系统的预测精确性不受相似度度量方法选择的影响。使用随机的相似度度量有时会产生比使用已知任何众所周知的方法更好的结果。
领取专属 10元无门槛券
私享最新 技术干货