数据挖掘读书笔记一——数据认识
最近偏重看数据挖掘方面的知识,整了本韩家炜的《数据挖掘》慢慢研究,特整理此系列作为读书随笔。
第一篇是数据的相关知识,对应书上的第二章,主要讲述了数据有关基础的内容,和统计线性代数相关。
Part1,数据基础
一,数据属性与类别
属性简介
从广义上来讲,数据集中包含了每一个数据对象,每一个数据对象代表了一个实体,这倒颇有一点OO的思想。
对于任何一个数据,如果没有属性依托,则这个数据仅仅是一个数值而没有任何意义,属性表征了数据的特征。同时属性也是数据对象的组成部分,数据对象由一个个属性构成。在不同领域中,属性有不同的标识,统计领域称为“变量”,机器学习领域称为“特征”,数据仓库则是“维”,这些说的都是同一个概念。
借用数学中的向量概念,一个数据对象的属性集被称为属性向量或特征向量,只有一个属性的称为单属性数据,两个属性的则为双属性数据,乃至多属性数据。
属性分类
属性也有具体的分类,主要是由其所有的数值所决定,主要分为标称、二元、序数和数值属性。
标称属性:类似于编程语言里的枚举类型,这种属性通常是无序的,由几个明确的值组成集合(通常是在某一个特定的数据集中)。例如hair_color属性,可分为balck、yellow、red等,虽然有很多中可能,但对于某一个特定的数据训练集,一定是有限的,我们可以通过标记0,1,2、、、来标识各属性值。
二元属性:类似于bool类型。该属性只有两种取值可能。例如性别。同时,二元属性还可以分为对称二元属性和非对称二元属性。在足够大的随机样本中,性别的取值分布就是一个对称二元属性。而如果对于取样中比如hiv化验的结果,就是一个非对称二元属性,因为显然,不可能阴性和阳性是等概率分布的。
序数属性:类似于标称属性,不过通常是有序的,各值之间有一定的联系,称其为ranking。例如学生成绩的一种划分,可以分为A+,A,A-,B等等,呈一个有序的排列。但是也是有限的。通常处理也是映射为离散值,0、1、2.、、、,便于处理。
数值属性:狭义上的属性值,是一种可定量的属性。例如一年中每天的气温值,这是连续可定量标识的。后面的统计描述数据也是基于这个的,因为只有基于这个的各统计运算是有意义的。
事实上,在更抽象程度上来说,属性可以分为两类:数值与非数值的,或者说是离散和连续的,由于计算机处理的特殊性,需要我们将自然语言转化为机器语言,这就需要将类似标称序数之类的属性转化为离散数值来度量。更简单点,将各种自然非自然属性转化为特征向量,这样便于后续处理。
二,统计学描述数据
数据中心趋势度量
主要反映了数据的中心分布或平均情况。主要有如下几个度量方式:均值、中位数、众数。一般来说,统计描述的数据是那些具有数值属性的数据,这样统计运算才有意义。
均值:一般来说是指算术平均值,在特定的应用中可以指定为加权算术均值。

中位数:一个数据集按大小排序,中间的数值。如果是奇数个,就是中间一个数,偶数则为中间两个数的均值。
众数:一个数据集中出现次数最多的数,当有多个数出现次数一样多时,均为众数。
数据中心趋势度量的几个指标都是我们在基础的统计学里最先接触到的概念。反映了某一个数据集的集中分布趋势,或者说是数据集的,但是也存在一些无法度量的部分,例如无法反应数据集的全局分布情况。这里就要用到了数据分布度量的几个指标。
数据分布度量
主要反映了数据整体的趋势,主要有几个指标:极差,四分位数、方差,标准差等。这些指标反映了整体数据集的散布情况。
极差:是指某一个数据集上最大值和最小值之差。该指标反映了数据集的范围。
四分位数:是指数据集上把数据集分为四个大小基本相等的子集合的点。更广泛的概念是分位数。分为数是指将数据集分为大小基本相等的子集合的数值点。
第一个四分位数将数据集的前25%划分,之前的中位数其实就是第二个四分位点。以此类推。
方差:方差反映了数据集的波动强度。方差越大,表示数据集波动越大。反之则越稳定。

标准差:标准差是方差的平方根,是为了便于统一量纲。
盒图:
此外还有偏差,离差等概念。这些可以在统计的一般教材中找到。都是用来刻画数据集的分散情况的。
总的来说,数据分布度量反映了整个数据集的散布特征和波动特征。
数据图表显示
数据总是枯燥的,特别是面对大量的数字,符号时。这时图表显示就显得比较直观了。这些图表主要包括分位数图、分位数-分位数图、直方图和散点图。其中前三个是一元图模型,散点图是二元图模型。
1、分位数图。通过之前给出的分位数概念,构建出一元属性的分位数图,纵坐标为属性数据,横坐标为0~1的百分比,表示纵坐标各数据在整体数据集中所占的分位。
2、分位数-分位数图(q-q图),对某属性的两个观测集,分别作出其分位数图,之后结合,即纵坐标和横坐标分别为不同观测集的分位数。这样可以发现某属性在不同观测集中的分布趋势。
3,直方图:这个就不多说了,有统计基础的应该都知道~~
4,散点图:对不同的数据集之间关系的刻画。纵坐标和横坐标分别代表不同属性的数据集(同一属性的不同观测集也可以,不过这样就没有太大意义)。比如销售量和单价的散点图,就反映了单价和销售量的某关系。
数据图表显示说到底其实是对数据分析的另一种表示,便于对数据的分析。特别是对数据趋势和分布的把握上比较好。
三,数据可视化
数据可视化关注的是如何将数据向用户呈现出来。旨在通过图形表示清晰有效地表达数据。主要技术有基于像素的技术、几何投影技术、基于图符的技术以及层次的和基于图形的技术。这一部分简单介绍一下,个人感觉这个更多的显示而不是处理数据。或者术语表示就是可视化挖掘。
基于像素的技术:对于一个m维数据集,在屏幕上创建m个窗口,每维一个。记录m个维值映射到这些窗口中对应位置上的m个像素。像素的颜色反映对应的值。主要是对一维值的可视化处理。
几何投影技术:这个就需要联系到之前的散点图。散点图是显示二维数据,其实也可以显示三维数据。通常选定两维作为XY坐标,第三位可以用不同的形状或图标来显示。但是当维数增加时该方法不可行。此时可以使用散点图矩阵或平行坐标来表示高维(>4)数据。
基于图符的技术:主要是两种——切尔诺夫脸和人物线条画。主要思想是通过某一种图案的不同变化来表示多维数据。
层次的可视化技术:和前面讨论的可视化不同,层次化技术先将所有维划分为子集(即子空间),这些子空间按层次可视化。代表方法为n-Vision,又叫“世界中的世界(Worlds-within-Worlds)”。假设我们需要将6维数据集可视化,设为F,X1,X2。。。X5,我们需要观察F维数据,则我们可以先将X1,X2,X3固定为某选定的值,然后可以使用一个三维图对其他三个维,F,X4,X5进行可视化。即内部的三维世界其实是外部三维世界的一个点。这颇有一点宗教思想(须弥和芥子,呵呵)。也许我们的宇宙就是这样的?
最近新兴的各种非数值数据的可视化也是一个热门的话题,一般在社交化网络中有这些应用,例如微博中的标签,其实就是一种非数值数据的可视化。更正式的是标签云,即用户产生的标签的统计量的可视化。
四,数据度量
数据度量是数据挖掘中一个重要的环节。特别是在聚类、离散点分析等数据应用中,我们需要评估对象之间的相似度或相异度。或者统称为邻近性(proximity)。
数据矩阵和相异性矩阵
数据矩阵,或者称为对象-属性结构:用关系表的方式或n×p矩阵存放n个对象。每一行代表一个对象,一共n个对象,每个对象有p个属性值。

相异性矩阵:存放n个对象两两之间的邻近度。通常是n×n矩阵表示。
几种属性的度量方式
之前我们讨论了属性的不同分类,下面讨论不同属性如何度量其邻近性。
标称属性:
标称属性可以取两个或多个状态,设某对象的一个标称属性有M个状态。可以用数值或字符来表示。则对于这样的两个对象i和j,其相异性可以用不匹配率来计算:

其中,m是匹配的数目(即状态相同的属性数)。或者相似性可用如下计算:

二元属性:
二元属性只有两种状态0、1,因此可以采用列联表来计算其邻近性。
对于两个对象i,i,假设有如下的一个列联表:
| 对象j | ||||
|---|---|---|---|---|
| 对象i | 1 | 0 | Sum | |
| 1 | q | r | q+r | |
| 0 | s | t | s+t | |
| Sum | q+s | r+t | p |
对于对称的二元属性,其相异性称为对称的二元相异性。计算方式为:

对于非对称的二元属性,对应的成为非对称的二元相异性,计算方式为:

该结果亦被称为Jaccard系数。当对称和非对称二元属性都存在时,可以使用下面介绍的混合属性方法。
数值属性:
对于数值属性,这个计算方式比较熟悉,就是距离度量,也就是向量之间的距离运算。
最流行的是欧几里德距离,令对象
,
,则欧几里德距离被定义为:

另一个独立方法称为曼哈顿距离,即对应属性的差的绝对值之和:

更一般的我们称之为闵可夫斯基距离,其计算方式为:

又被称为范数,前面的欧几里德和曼哈顿分别是二阶范数和一阶范数。此外还有上确界距离

序数属性:序数属性的值通常是有意义的序或排位,一般可以通过对数值属性的值进行区域划分离散化得到。因此,序数属性的邻近性非常相似。假设f是用于描述n个对象的一组序数属性之一。相异性计算设计如下:
1,第i个对象的f值为
,属性f有Mf个有序的状态,表示排位1,。。。Mf。用对应的排位
取代 
2,由于每个序数属性都可以有不同的状态数,所以通常需要将每个属性的值域映射到
上,以便每个属性都有相同的权重。我们通过用
代替第i个对象的
来实现数据规格化,其中:

3,相异性可以使用之前介绍的数值属性的距离度量计算,使用
作为第i个对象的f值。
混合属性:在许多实际的数据库中,对象是被混合类型的属性描述的。所以,实际情况下,我们需要对混合类型的数据进行相异性度量。
一种方法是将每种类型的属性分成一组,分别进行数据挖掘分析,如果分析结果兼容,则是可以的,然而不兼容的情况更多。此时有一个更优方案。
该方法是将所有的属性类型一起处理,只做一次分析。一种这样的技术将不同的属性组合在单个相异性矩阵中,把所有有意义的属性转换到共同的区间
上。
假设数据集包含p个混合类型的属性,对象i和j之间的向异性d(i,j)定义为:

其中 ,指示符
,如果
或
缺失(即对象i或对象j没有属性f的度量值),或者
,并且f是非对称的二元属性;否则,
。属性f对i和j之间的相异性的贡献
根据它的类型计算:
1)f是数值的:
,其中h遍取属性f的所有非缺失对象。
2)f是标称或二元的:如果
,则
;否则
。
3)f是序数的:计算排位
和
,并将
作为数值属性对待。
余弦相似性
现在介绍一个在文本分类中应用比较多的相似性方法。在吴军博士的《数学之美》一书中也有涉及。就是余弦相似性。
前面讲的度量一个向量的一般方法是计算它们的距离,欧氏距离或曼哈顿距离。但可能有这样一个情况,如果一个向量维度较大,而且是稀疏的,此时计算距离并不是一个好的办法,这个时候,余弦相似性算法就可以用来度量了。
一个较常见的场景是文档的相似性。一个文档可能有数千词,我们可以对每个文档用一个词频向量来表示,即定义一组关键词,然后看每个文档里是否存在某关键词,如果存在,则该文档的词频向量中该关键词处记录存在的次数。否则为0.。这样,我们可以为每个文档建立一个特有的词频向量。
下面是余弦度量。使用向量的余弦值作为相似度:

这里,||x||是x的二阶范数(欧几里德范数),几何上来说就是向量的长度。||y||类似。
如果值越大,说明这两个向量的夹角越小,即越接近,也就是说越匹配。
当属性是二值属性时,余弦度量有一个变种处理:

这是x和y所共有的属性个数与x或y所具有的属性个数之间的比率,这个函数被称为Tanimoto系数或Tanimoto距离,常用在信息检索和生物学分类中。
