(2)数据--基本概念

数据

数据集通常表示成数据个体(Data Object)的集合。一条数据记录就是一个个体。常见的数据表示方式可以是表格的:

Student ID

Gender

Score

1

Male

4

2

Female

5

3

female

3.5

上表中横向的一行就是一个Data Object了,而 Student ID,Gender,Score则是三种属性(Attribute)。表中的3.5就是第三个Data Object的Score属性的值。(这里要区分属性和属性的值,比如性别是一种属性,而男女是属性的值)。

属性的分类

      首先要明确啥是物理值。比如一支笔,是实实在在的占用一定空间的,它所占用的空间的大小就是物理上的值。而当我们说这支笔有10厘米长,其实我们已经把物理长度映射成了一个数值。另外比如人类的性别,通常来说就两种,这两种都是物理上的值,而我们把其中一种性别称为男,把另一种称为女,实际上也是讲性别的两种物理值映射成了文字这种符号。这种映射是不唯一的,比如还可以把笔的长度映射为3.94英尺,再比如英语里把一种性别映射为male,另一种性别映射为female。

      回到属性的分类。通常把属性分为nominal,ordinal,inteval和ratio。nominal和ordinal都是用来定性的,作为对比,后两种则是定量的。定性类的属性,有很多直观的例子,性别是男是女,磁极是南是北,成绩的优良中差或ABCD...

      对第一种定性属性nominal,将物理量映射出数值或者符号,目的仅仅是区分不同的可能的值(种类),我们不关心这些值之间的先后顺序或者优劣。比如性别,男女平等,比如磁极,南北也没有孰优孰劣。对于磁极,我们可以将可能的值映射为0,1这两个数字,也可以用S,N这俩字母来表示,很随意啦...对于两个nominal变量而言,基本操作就是比较看是否相等了。可以使用任意一种一一映射来将一种表示转换成另一种表示。

      第二种是ordinal,看名字就思义嘛,这里虽然是定性的量,但是不同值之间有个顺序或者优劣之分。比如成绩的ABCDEF,A better than B better than C...同样有很多种映射方式。由于有顺序可言,那么就可以用>和<等来比较两个量了。可以使用那些顺序不变的映射把一种表示转换成另一种表示,比如最开始的物理值被映射成了{1,2,3}这种表示,那我1—>0.5   2—>1    3—>10 映射成了{0.5,1,10}这种表示也是可以的嘛。

      接下来是两类定量的属性。这两类属性都用数值来表示,同时也支持大部分的数值操作。要注意,定量属性也可以是离散的,比如计数变量是ratio的。对于interval类型而言,可以将一种映射通过线性变换转换成另一种映射而不改变属性的意义。形式化表示为:new=old*a+b。最后一种是ratio,可以接受成比例的映射,比如前面提到的用不懂长度单位来衡量一支笔的长度,10厘米,1分米,0.1米...

属性的值的分类

  属性的值的分类并不能作为属性分类的依据,因此单独讨论属性的值的分类是有必要的。

  属性的值就分为两类,离散的和连续的。

  属性和属性值分类,完之后就会有这样的说法:离散的ratio属性,比如计数变量;连续的interval变量,比如温度的摄氏或华氏度。当然有的组合是不能make sense的,比如连续的nominal属性。

One more thing...非对称属性是啥

  非对称属性是离散的,更确切地讲是二分的。比如在一个文档-单词表中,一行表示一个文档,一列表示一个单词,一个单词在,某个文档中出现了,用1表示,否则用0表示。由于单词有十几万个,而一篇文章所涵盖的单词数可能就只有几千个,那么这个表格是很稀疏很稀疏的。而这里我们只关心某个单词的出现,即1。也就是说0和1这两个nominal的属性值不是平等地位的,这就是所谓的非对称。确定非对称属性是很有意义的,比如我们要根据上面讲的这个表来衡量两个文档的相似程度如果不定义非对称属性,将0,1同等对待,那由于一行(表示文档)的大部分位置都是0的,那随便抓两个文档过来一比,得到的结论都是它们很相似。这显然是不行的...

数据集

      数据集的组织形式有很多种。基本特征包括有:维度,稀疏性,粒度(Resolution)。

      维度,就是说一个数据集用多少个属性来描述数据个体。当数据集的维度过高时,就会引发维度灾难(Curse of Dimensionality)。解决的办法之一就是降维(Dimensionality Reduction),常用的降维方法如PCA,SVD等,之后会作详细讨论。稀疏性对应非对称属性Issue。稀疏性也会被认为是一种优势,因为只需存储和处理那些非零值。关于粒度,比如监测温度的时候是一分钟测一次呢还是一小时测一次,当然也可以每分钟监测,求得一个每小时的均值等,总之是衡量的scale不一样了。如果粒度过细,就会缺少大局观,所谓不识庐山真面目,只缘身在此山中。而粒度过粗就像在火星上裸眼看地球找庐山,也是找不到的(其实我也没找过)。

数据集的分类

记录型数据

      很多数据挖掘算法都是建立在记录型数据的基础上的,直观地讲就是前面那种表格的形式,可以存在文件或者数据库里库里库里,XJBT的库里...歪楼了。

会话型(购物篮)数据

      每条记录是一个包含各种Item的会话,其实也可以看做是记录型的非对称数据。

。。。貌似还有很多种滥糟的数据集。。。Anyway,最重要的一点是,想办法把不是记录型数据集的数据集改造成记录型数据集。

数据的质量(Quality)

      数据收集的手段肯定是不完美的,辣么收集来的数据的好坏就参差不齐。数据挖掘要做的事情首先是想办法检测和提高手边的数据的质量(这一步叫数据清洗),然后寻求一些对数据质量容忍度较高的数据挖掘算法。那么我们先来看下影响数据质量的因素都有哪些。

      首先是,在数据收集过程中,数据收集技术水平受限,因此测得的数据与真实值会存在误差。(也就是物理值映射为数值,用数值来衡量,是会有误差的)另外还可能因为忽视某些数据个体或者重复记录数据个体,也会影响数据的质量。前一种叫测量误差,后一种叫数据收集误差。导致测量误差的因素通常是随机噪声,当噪声的magnitude过大了,有用的pattern就被掩盖了。消除噪声通常是比较困难的,因此要想办法设计出鲁棒性强的算法,来寻求可接受的解。相比于随机的噪声,还有一类干扰源是比较确定性的,这类称为artifact。对数据的测量和收集的结果好坏,有一些评价的标准:Precision,bias,accuracy。

      然后是异常的数据个体,或者个体的某个属性的值。这里要区分开噪声和异常(应该说是不同寻常)。比如测量一个班同学的身高,大家都是1米7左右,测到小明的时候,发现他身高居然有2米26。这个异常通常是很有意义的,首先,长这么高是合法的被允许的,其次如果你要为篮球队选拔人才,小明应该是比较合适的人选。哦对了,小明他姓姚...

      接下来,是某些数据个体,可能缺失了一部分属性值。比如你的数据是在街上问卷调查得来的,填表人很可能没耐性给你一项项全填完。这些问卷缺了一两项,但你又不能随意放弃辛苦得来的宝贵数据。(这里衍生出一个问题,如何处理缺失值)

      再然后,某些数据个体可能是被重复收集的。如果重复个体会影响你选择的算法的结果,那最好剔除掉多余的个体,或者把相同个体看成一个组,拿一个元素来代表这个组。这里要注意,有的个体尽管各个属性值都是相同的,但它们实际上是不同的个体,这种情况下“重复”是合法的。

原文地址:https://www.cnblogs.com/acetseng/p/4496552.html