• 数据测量与相似性分析


           这篇文章中主要记录如何分析样本间相似性的内容,相似性分析在分类算法(如K最邻近分类)和聚类任务中会涉及到。相似性分析基于样本属性取值,因此对于样本属性类型及其取值的特征也有必要说明。

    1.数据测量及属性分类

           测量某个对象得到数据的过程实质上是描述该对象的属性(特征)、并将该属性映射到某个值上,在这些值上一般可以定义如下几种操作:

    • 相异性      = 、
eq
    • 序             <leq>geqslant
    • 加减          +-
    • 乘除          astdiv

           依据测量值能进行的操作类型,可以将属性分为:标称型(nominal)、序数型(ordinal)、区间型(interval)和比率型(ratio),不同类型的定义及区别见下表

                             
           从属性取值个数方面,可以将属性分为:属性型(binary attribute)、离散型(discrete)、连续型(continuous)。取值为属性型时,其值只能为两个,如真/假、是/否、男/女、0/1等,这种取值的属性称为二元属性。标称型、序数型数据的含义比较直观,而对于区间型数据,就以日历日期为例说明,现有两个日期值2017(年)、2018(年),二者之间的差值可以理解为间隔一年,但是二者间乘或除得到的值则毫无意义,这就是区间值的特征。对于比率型数据,以体重为例,100kg的人可以说是50kg的人体重的两倍,这是有现实直观意义的。有的数据类型可能兼具多种操作方法(如体重可以加减,也可以除),可能在属性类型分类上不那么明显,但需要强调的是:属性归类问题不重要,重要的是明确哪些操作是有意义的。

           除了从以上几个方面对属性进行分类与定义外,还可以按属性取值对称与否来分类。非对称的属性其不同取值间权重不一致,例如艾滋病检验的结果可为阳性和阴性,但是显然我们更关注是否为阳性,该值对判断是否患艾滋病更为关键。对称的属性其取值权重就一致了,例如某路段一定时间内通过的车辆数。

    2.样本相似性分析

           样本相似性分析常用于分类、聚类任务中。相似性肯定要依据样本属性取值来分析的,这其中关键就在属性值的处理相似性度量标准上。

         2.1属性值的处理

           2.1.1 二元化

           在一些算法中(如发现关联模式的算法)要求数据的属性为二元属性,二元化处理就是将数据的属性从“多元”转化为“二元”的过程。二元化的过程为:假设属性取值有m个,则将整数区间 left [0,m-1 
ight ]中的每个值唯一的赋予该属性的每个取值,如果该属性的取值是有序的,则赋值的过程也必须按顺序赋值,然后将这m个值用二进制表示,共需要 left lceil log_{2}m 
ight 
ceil(结果向上取整)个二进制位。

          二元化的过程是用多个二元属性来表示一个多元属性,例如一个具有5个取值的属性{awful,poor,ok,good,great}可以用3个二元属性x_{1}x_{2}x_{3}表示

                                                                 

            以上的二元化过程可能会导致属性间关系复杂化,例如上表中属性x_{2}x_{3}是相关的,因为“good”值需要这两个属性来表示。这种情况下可以为每一个取值引入一个二元属性,比如下表中的方式

                                               

           当一个属性取值数量较多时(这里暂指离散取值的情况),这种做法会引入过多的属性值,此时可以在二元化之前先离散化属性的取值。

          2.1.2 离散化

          离散化一般针对取值为连续的情况,但是当取值为离散序数、取值间隔小且多时也可以考虑离散化。离散化的过程需要考虑两个问题:分类值个数设定、如何将属性连续取值映射到这些分类值上。离散化过程可以分为非监督离散化监督离散化,区别就在于是否使用数据的类信息(分类、聚类任务中)。

          非监督离散化主要有等宽等频率K均值方法,有时候画图之后目测也是一种不错的方法。等宽离散化是将属性的值域等宽得划分成有限的区间,区间个数由用户指定,这种方法可能受离群点(远离一般取值范围的数据点,也可以称为奇异点)影响而导致性能不佳;等频离散化在指定划分区间个数时,保证每个区间内数据点个数相同;K均值离散化则是使用了K均值聚类方法的思想来划分区间。下图是用以上几种方法对一组数据进行离散化的结果,区间划分个数均为4。

                       

           监督离散化方法一般要比非监督离散化方法产生的效果要好,因为使用了类信息,因此能使区间内数据的类更纯,所以一种简单的概念上的方法是“极大化区间内数据类别纯度”来确定分割点,在该类方法中,首先要确定一个类别纯度的度量指标,然后确定最优区间划分过程搜索方案。

          2.1.3 变换与规范化

          变换是将属性值域映射到另外一个值域上的过程,例如常见的函数变换 x^{2}log_{2}x 等,在统计学中,也通常会通过变换(中心极限定理)构造服从正态分布的统计量。变换的需求与方式与具体的任务紧密相关,例如数据压缩时会采用对数变换,将数据量从10^{9}压缩为9。变换时尤其要注意,不能改变数据的特性,所以说一定要依据具体的任务来确定变换方式。例如在非线性SVM模型中,就用到了这种方式,将输入空间通过非线性映射到特征空间。

          规范化也可以看做一种变换方式,其目标是使属性的取值具有特定的性质,主要包括以下几种方法

          标准化:标准化的过程是将样本均值变为0,标准差变为1。设变量x的均值为ar{x},标准差为s_{x},则可以创建一个新的变量{x}'

                                                                                           {x}'=(x-ar{x})/s_{x}

          归一化:将数据取值范围处理到[0,1]范围内(有的场合下也会处理到[-1,1]范围),方便不同取值范围属性间比较。一般的处理方式为

                                                                                          {x}'=frac{x-x_{min}}{x_{max}-x_{min}}

           如果取值范围为[0,infty],则可以考虑以下形式

                                                                                            {x}'=frac{x}{1+x}

           具体的规范化方法需要结合实际的应用来,在考虑任务需求及数据特性情况下选择可行的方法。

    2.2 相似性度量标准

          与相似性相反的概念称为相异形,二者描述的是同一种关系,通常会用邻近度来描述相似或相异性。先介绍几种度量标准,然后从简单的单属性数据间相似性分析着手,一点一点将情况复杂化。

          2.2.1 邻近度度量标准
         

          欧氏距离

          欧氏距离是一种比较常见的度量标准,对于包含有n个属性值的数据 x 和 y,其欧氏距离d(x,y)定义为

                                                                                    d(x,y)=sqrt{sum_{i=1}^{n}(x_{i}-y_{i})^2}

          欧氏距离有如下几个性质是成立的

    • 非负性,d(x,y)geq 0
    • 对称性,d(x,y)=d(y,x)
    • 三角不等式,对于数据 x 、yz,有d(x,y)+d(y,z)geq d(x,z)

           在使用欧氏距离时,要考虑不同属性间取值范围差异的问题,例如年龄与收入,在计算欧氏距离前先要将所有属性取值进行规范化。

           曼哈顿距离

           曼哈顿距离在几何学中指坐标系中两个点各向坐标差值绝对值的和,如下图所示,在二维空间中,红线即表示曼哈顿距离,绿线表示欧氏距离。

                                                                                 

           对于具有n个属性的数据 x 和 y,曼哈顿距离指其各个属性值差值的绝对值的和,定义为

                                                                                      d(x,y)=sum_{i=1}^{n}|(x_{i}-y_{i})|

           余弦相似度

           当属性为多元属性时,也有一些情况下不考虑f_{00}的情况,此时可以使用余弦相似度,设数据 x 和 y均具有n个多元属性,则余弦相似度定义为

                                                                                   cos(x,y)=frac{sum_{i=1}^{n}x_{i}y_{i}}{left | x 
ight | left | y 
ight |}

          left | x 
ight |=sqrt{sum_{i=1}^{n}x_{i}^{2}}left | y 
ight |=sqrt{sum_{i=1}^{n}y_{i}^{2}}

          从几何角度看,余弦相似度就是两个向量间的夹角。

           简单匹配系数

           该度量标准常用于具有二元属性数据间的相似性度量。设数据 x 和 y均具有n个二元属性,用f_{00}表示x取0且y取0的属性个数,用f_{01}表示x取0且y取1的属性个数,用f_{10}表示x取1且y取0的属性个数,用f_{11}表示x取1且y取1的属性个数,则简单匹配系数SMC定义为

                                                                                 SMC=frac{f_{00}+f_{11}}{f_{00}+f_{01}+f_{10}+f_{11}}

            对于非对称的二元属性来说,更关注的是取1的情况,因此有些情况下将f_{00}纳入计算是不合理的情况,例如两个学生选课问题,1表示选修了某门课程,0表示未选修,而一个学生只需要选修一定数量的课程,还有大部分课程是不需要选修的,因此f_{00}的情况会比较多,这种情况下考虑f_{00}就不太合理。

           Jaccord系数

           Jaccard系数是简单匹配系数中不考虑f_{00}的情况,其定义为

                                                                           J=frac{f_{11}}{f_{01}+f_{10}+f_{11}}     

          皮尔森相关系数

          皮尔森相关系数可以用于具有连续取值属性对象间的相似性度量,该参数在统计学中一般简称为相关系数,设数据 x 和 y均具有n个连续取值属性,则相关系数定义为

                                                                          corr(x,y)=frac{s_{xy}}{s_{x}s_{y} }

                                                                     s_{xy}=frac{1}{n-1}sum_{i=1}^{n}(x_{i}-ar{x})(y_{i}-ar{y})

                                                                       s_{x}=sqrt{frac{1}{n-1}sum_{i=1}^{n}(x_{i}-ar{x})^{2}}

                                                                       s_{y}=sqrt{frac{1}{n-1}sum_{i=1}^{n}(y_{i}-ar{y})^{2}}

                                                                        ar{x}=frac{1}{n}sum_{i=1}^{n}x_{i}

                                                                        ar{y}=frac{1}{n}sum_{i=1}^{n}y_{i}

          皮尔森相关系数的取值范围为[-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"间的差相同吗?但是在实践中一般手段有限,因此对于这种情况,可以将两个序数间的相似性定义为

                                                                         sim(v_{1},v_{2})=frac{left |v_{1}-v_{2} 
ight |}{v_{max}-v_{min}}

           当属性为区间和比率类型时,一般用差值的绝对值来度量相似性。特别的,对于区间型属性,若是取值区间有限,则也可以使用

                                                                        sim(v_{1},v_{2})=frac{left |v_{1}-v_{2} 
ight |}{v_{max}-v_{min}}

    的相似性定义形式。

            2.2.3 多属性数据相似性分析

            多属性的情况,一般的做法是将每个属性取值按照以上介绍的方法处理之后,再选择一个度量标准分析相似性,在一些场合下也对不同的属性进行加权处理,但是也存在一些特殊情况,例如部分属性为非对称属性。

             对于部分属性为非对称属性的情况,则可以按照以下公式计算

                                                                    similarity(x,y)=frac{sum_{i=1}^{k}delta_{k}s_{k}(x,y) }{sum_{i=1}^{k}delta_{k}}

             上式中k表示数据xy的属性个数,s_{k}(x,y)表示在第k个属性上计算的xy相似度(按照2.2.2节中方式计算),delta _{k}定义为:当第k个属性为非对称属性,且xy在该属性上取值均为0,或者其中一个属性值缺失,则delta _{k}=0,否则为1。

          

          

           

            

  • 相关阅读:
    MySQL锁系列3 MDL锁
    MySQL锁系列2 表锁
    MySQL锁系列1
    MySQL open table
    MySQL优化器join顺序
    MySQL优化器cost计算
    MySQL源码 优化器
    MySQL源码 解析器
    MySQL源码 数据结构hash
    微信小程序爬坑日记
  • 原文地址:https://www.cnblogs.com/hgz-dm/p/10886100.html
Copyright © 2020-2023  润新知