这篇文章中主要记录如何分析样本间相似性的内容,相似性分析在分类算法(如K最邻近分类)和聚类任务中会涉及到。相似性分析基于样本属性取值,因此对于样本属性类型及其取值的特征也有必要说明。
1.数据测量及属性分类
测量某个对象得到数据的过程实质上是描述该对象的属性(特征)、并将该属性映射到某个值上,在这些值上一般可以定义如下几种操作:
- 相异性 、
- 序 、、、
- 加减 、
- 乘除 、
依据测量值能进行的操作类型,可以将属性分为:标称型(nominal)、序数型(ordinal)、区间型(interval)和比率型(ratio),不同类型的定义及区别见下表
除了从以上几个方面对属性进行分类与定义外,还可以按属性取值对称与否来分类。非对称的属性其不同取值间权重不一致,例如艾滋病检验的结果可为阳性和阴性,但是显然我们更关注是否为阳性,该值对判断是否患艾滋病更为关键。对称的属性其取值权重就一致了,例如某路段一定时间内通过的车辆数。
2.样本相似性分析
样本相似性分析常用于分类、聚类任务中。相似性肯定要依据样本属性取值来分析的,这其中关键就在属性值的处理、相似性度量标准上。
2.1属性值的处理
2.1.1 二元化
在一些算法中(如发现关联模式的算法)要求数据的属性为二元属性,二元化处理就是将数据的属性从“多元”转化为“二元”的过程。二元化的过程为:假设属性取值有个,则将整数区间 中的每个值唯一的赋予该属性的每个取值,如果该属性的取值是有序的,则赋值的过程也必须按顺序赋值,然后将这个值用二进制表示,共需要 (结果向上取整)个二进制位。
二元化的过程是用多个二元属性来表示一个多元属性,例如一个具有5个取值的属性{awful,poor,ok,good,great}可以用3个二元属性、、表示
以上的二元化过程可能会导致属性间关系复杂化,例如上表中属性和是相关的,因为“good”值需要这两个属性来表示。这种情况下可以为每一个取值引入一个二元属性,比如下表中的方式
当一个属性取值数量较多时(这里暂指离散取值的情况),这种做法会引入过多的属性值,此时可以在二元化之前先离散化属性的取值。
2.1.2 离散化
离散化一般针对取值为连续的情况,但是当取值为离散序数、取值间隔小且多时也可以考虑离散化。离散化的过程需要考虑两个问题:分类值个数设定、如何将属性连续取值映射到这些分类值上。离散化过程可以分为非监督离散化和监督离散化,区别就在于是否使用数据的类信息(分类、聚类任务中)。
非监督离散化主要有等宽、等频率和K均值方法,有时候画图之后目测也是一种不错的方法。等宽离散化是将属性的值域等宽得划分成有限的区间,区间个数由用户指定,这种方法可能受离群点(远离一般取值范围的数据点,也可以称为奇异点)影响而导致性能不佳;等频离散化在指定划分区间个数时,保证每个区间内数据点个数相同;K均值离散化则是使用了K均值聚类方法的思想来划分区间。下图是用以上几种方法对一组数据进行离散化的结果,区间划分个数均为4。
监督离散化方法一般要比非监督离散化方法产生的效果要好,因为使用了类信息,因此能使区间内数据的类更纯,所以一种简单的概念上的方法是“极大化区间内数据类别纯度”来确定分割点,在该类方法中,首先要确定一个类别纯度的度量指标,然后确定最优区间划分过程搜索方案。
2.1.3 变换与规范化
变换是将属性值域映射到另外一个值域上的过程,例如常见的函数变换 、 等,在统计学中,也通常会通过变换(中心极限定理)构造服从正态分布的统计量。变换的需求与方式与具体的任务紧密相关,例如数据压缩时会采用对数变换,将数据量从压缩为。变换时尤其要注意,不能改变数据的特性,所以说一定要依据具体的任务来确定变换方式。例如在非线性SVM模型中,就用到了这种方式,将输入空间通过非线性映射到特征空间。
规范化也可以看做一种变换方式,其目标是使属性的取值具有特定的性质,主要包括以下几种方法
标准化:标准化的过程是将样本均值变为0,标准差变为1。设变量的均值为,标准差为,则可以创建一个新的变量
归一化:将数据取值范围处理到[0,1]范围内(有的场合下也会处理到[-1,1]范围),方便不同取值范围属性间比较。一般的处理方式为
如果取值范围为[0,],则可以考虑以下形式
具体的规范化方法需要结合实际的应用来,在考虑任务需求及数据特性情况下选择可行的方法。
2.2 相似性度量标准
与相似性相反的概念称为相异形,二者描述的是同一种关系,通常会用邻近度来描述相似或相异性。先介绍几种度量标准,然后从简单的单属性数据间相似性分析着手,一点一点将情况复杂化。
2.2.1 邻近度度量标准
欧氏距离
欧氏距离是一种比较常见的度量标准,对于包含有n个属性值的数据 和 ,其欧氏距离定义为
欧氏距离有如下几个性质是成立的
- 非负性,
- 对称性,
- 三角不等式,对于数据 、、,有
在使用欧氏距离时,要考虑不同属性间取值范围差异的问题,例如年龄与收入,在计算欧氏距离前先要将所有属性取值进行规范化。
曼哈顿距离
曼哈顿距离在几何学中指坐标系中两个点各向坐标差值绝对值的和,如下图所示,在二维空间中,红线即表示曼哈顿距离,绿线表示欧氏距离。
对于具有n个属性的数据 和 ,曼哈顿距离指其各个属性值差值的绝对值的和,定义为
余弦相似度
当属性为多元属性时,也有一些情况下不考虑的情况,此时可以使用余弦相似度,设数据 和 均具有n个多元属性,则余弦相似度定义为
,
从几何角度看,余弦相似度就是两个向量间的夹角。
简单匹配系数
该度量标准常用于具有二元属性数据间的相似性度量。设数据 和 均具有n个二元属性,用表示取0且取0的属性个数,用表示取0且取1的属性个数,用表示取1且取0的属性个数,用表示取1且取1的属性个数,则简单匹配系数定义为
对于非对称的二元属性来说,更关注的是取1的情况,因此有些情况下将纳入计算是不合理的情况,例如两个学生选课问题,1表示选修了某门课程,0表示未选修,而一个学生只需要选修一定数量的课程,还有大部分课程是不需要选修的,因此的情况会比较多,这种情况下考虑就不太合理。
Jaccord系数
系数是简单匹配系数中不考虑的情况,其定义为
皮尔森相关系数
皮尔森相关系数可以用于具有连续取值属性对象间的相似性度量,该参数在统计学中一般简称为相关系数,设数据 和 均具有n个连续取值属性,则相关系数定义为
皮尔森相关系数的取值范围为[-1,1],0表示不相关,1表示正相关,-1表示负相关,该系数上的加、减、乘、除操作均无意义,只有序数操作是有意义的。在讨论相似性的条件下,负相关表示的“不相似”程度可能比不相关更严重,当然这个还得在实际的任务中去判断。
2.2.2 单属性数据相似性分析
当属性为标称类型时,如路人甲头发颜色为黑色,路人乙头发颜色为黄色,仅依据头发颜色分析二人之间相似性,给出的结论只能是不相似,假如用区间[0,1]之间的值来表示相似程度,0表示不相似,1表示相似,则这种情况相似度为0,但若路人甲与路人乙头发颜色相同,则相似度为1。因此,在属性为标称类型情况下,相似度只能取0和1中的一种。
当属性为序数类型时,则需考虑序数信息,例如2.1.1节中的例子,属性的取值为{awful,poor,ok,good,great},一个明显的结论是,相对于"ok","great"更接近"good",但是在分析相似性时一般需要将其量化,这里可以量化为 {awful=0,poor=1,ok=2,good=3,great-4}。依据第1节中对序数类型属性的描述,可知其减法操作是没有意义的,又或者说“ok”与"good"间的差真的与“good”与"great"间的差相同吗?但是在实践中一般手段有限,因此对于这种情况,可以将两个序数间的相似性定义为
当属性为区间和比率类型时,一般用差值的绝对值来度量相似性。特别的,对于区间型属性,若是取值区间有限,则也可以使用
的相似性定义形式。
2.2.3 多属性数据相似性分析
多属性的情况,一般的做法是将每个属性取值按照以上介绍的方法处理之后,再选择一个度量标准分析相似性,在一些场合下也对不同的属性进行加权处理,但是也存在一些特殊情况,例如部分属性为非对称属性。
对于部分属性为非对称属性的情况,则可以按照以下公式计算
上式中表示数据、的属性个数,表示在第个属性上计算的、相似度(按照2.2.2节中方式计算),定义为:当第个属性为非对称属性,且、在该属性上取值均为0,或者其中一个属性值缺失,则=0,否则为1。