第二节、数据

下一节:总结:https://blog.csdn.net/Carl_changxin/article/details/88528303

1、本节简述

数据类型:数据对象的属性可以具有不同的数据类型,数据类型决定了可以使用何种工具和技术来分析数据,此外新的数据挖掘研究常常是由适应新的应用领域和新的数据类型的需要推动的。

数据的质量:数据质量问题包括存在噪声和离群点,数据遗漏,数据不一致或重复,数据有偏差,数据不能代表描述所设想的现象。注重理解和提高数据质量可以改进分析结果的质量。

使数据更适合数据挖掘的预处理技术:通常原始数据必须进行处理,使之更适合于分析。如提高数据的质量,关注修改数据,使之更好地适应特定的数据挖掘技术或工具。比如将连续型属性(长度)转换成离散的分类值(长、短),以便使用特定的技术。再如,将数据集属性的数目减少,通常会使技术更加有效。

根据数据联系分析数据:数据分析的一种方法是找出数据对象之间的联系,然后使用这些联系而不是数据本身进行其余的分析。比如我们计算对象之间的相似度或距离,然后根据这种相似度或距离进行分析(聚类,分类或异常检测)。

2、数据类型

数据集是数据对象的集合;数据对象用一组刻画对象的基本特性的属性描述。而数据对象的属性可以具有不同的数据类型。

2.1属性

1、属性(也称特征或变量)

属性:是对象的性质,属性因对象而异,或随时间而变化(如温度)。

测量标度:是将数值或符号值和对象的属性相关联的规则。比如将人分成男女就是使用测量标度(规则可以是辨别是否有喉结)将一个值(男或女)同一个特定对象的特定属性(某人的性别)相关联。

2、属性类型

通常称测量标度的类型

属性类型的定义:比如长度作为属性,有数值的许多性质,如按照长度比较,长度的差和比例等等。可以用数值的性质(即操作)来对属性进行分类。

3、用值的个数描述属性

离散的:离散属性具有有限个或无限个可数值。离散属性可以是分类的,比如ID号;也可以是数值的,比如计数。二元属性(0-1)是离散属性的一种特殊情况。

连续的:比如温度,高度或重量等属性。

注:任何测量标度类型是可以和属性值个数的任意类型组合的。然而,有些组合是没有意义的。

注:通常,标称和序数属性是二元或离散的,而区间和比率属性是连续的。然而,计数属性是离散的也是比率属性。

4、非对称属性

对于非对称属性,出现非零属性值是最重要的。比如,数据集中的每个对象都是学生,每个属性记录了学生是否选修了某门课程,选了该门课程即为1,否则即为0。由于学生只选修可选课程的很小一部分,这种数据集大部分值都为0。因此关注非0值将更加有意义,更有效。只有非0值才重要的二元属性是非对称的二元属性。

2.2数据集的类型

1、数据集的一般特性

维度:是指数据集中的对象具有的属性数目。高维数据难以处理,因此数据预处理的一个重要动机是维规约。

稀疏度:对于一些数据集,如具有非对称特征的数据集,一个对象的大部分属性上的值都是0,非0项不到1%,由于只有非零值才需要存储和处理,因此稀疏性是一个优点。

分辨率:在不同的分辨率下的到的数据性质不同。比如在数米的分辨率下,地球表面看上去很不平坦,但在数十公里的分辨率下却相对平坦。再如小时标度下的气压变化可以反应风暴的移动,而在月标度下就检测不到。

为方便起见,将数据集类型分成三组:记录数据,基于图形的数据和有序的数据。这些分类不可能涵盖所有的可能,存在其它可能的分类。

2、记录数据

许多数据挖掘任务都假定数据集是记录(也即数据对象)的汇集,每个记录包含固定的数据字段集(即属性集)。如图a

不同类型的记录数据如下:

  1. 事务数据或购物篮数据:事务数据中的每个记录(事务)涉及一个项的集合。如客户购买商品的集合,每个商品就是一个项。如图b
  2. 数据矩阵(模式矩阵):若一个数据集族中的所有数据对象都具有相同的数值属性集,则数据对象可以看作多维空间中的点(向量),其中每个维代表描述对象的一个不同属性。数据矩阵是记录数据的变体,由于它是数值属性组成,可以使用标准的矩阵操作对数据进行变换和操作,因对于大部分统计数据,数据矩阵是一种标准的数据格式。如图c
  3. 稀疏数据矩阵:是数据矩阵的一种特殊情况。该种类型的记录数据中只有非零值才是最重要的。事务数据是仅含0-1元素的稀疏数据矩阵的一个例子。如图d

1

3、基于图形的数据

  1. 图形捕获数据对象之间的联系:数据对象映射到图上的结点,对象之间的联系用链的方向和权值等链性质表示。
  2. 数据对象本身用图形表示:若对象具有结构,即对象包含具有联系的子对象,则这样的对象常用图形表示。

4、有序数据

  1. 时序数据(时间数据):每个数据包含一个与之相关的时间
  2. 序列数据:个体项的序列
  3. 时间序列数据:特殊的时序数据,每个记录都是时间序列
  4. 空间数据:对象处理具有其它类型的属性,还有空间属性,如位置和区域。

3、数据质量

与数据质量相关的概念:

1、测量和数据收集问题

测量误差:测量过程中导致记录的值和实际值不同,测量值和实际值的差称为误差

数据收集错误:比如遗漏数据对象或属性值,不正确的包含数据对象等错误

2、噪声:许多数据挖掘工作都关注设计鲁棒算法,即使存在噪声也能产生可以接受的结果。

3、离群点

4、遗漏值

处理遗漏值的策略:

  • 删除数据对象或属性:只能在数据集中有少量的对象具有遗漏值时采用该策略
  • 估计遗漏值
  • 在分析时忽略遗漏值

5、不一致的值:纠正

6、重复数据:需要去重复

4、数据预处理

1、聚集

比如:现有一个数据集记录了一年内的在各地的商店商品日销售情况。对该数据集聚集的一种方法就是,只选择一年的某一天的商店商品销售记录,这样就把数据对象的个数降低成商店的个数。

如何创建上面的聚集事务,即对于一个特定商店的所有记录要用单个日销售记录代替,如何合并记录的每个属性。定量属性(价格)一般求和或者求平均值;定性属性(商品)可以忽略或汇总在商店销售的所有商品的集合。

聚集的好处:更具有整体性,更稳定

聚集的缺点:可能不能观测到细节,比如在月上的聚集就丢失了星期几最高销售额的信息。

2、抽样

抽样是一种选择数据对象子集进行分析的常用方法。数据挖掘中使用抽样是因为处理所有的数据费用太高、太费时间。使用抽样可以压缩数据量,使得可以使用更好但开销更大的算法。

选择一个确保以很高的概率得到有代表性的样本的抽样方案,涉及选择适当的样本尺寸和抽样技术。

如下是一些基本的抽样技术(方法):

  • 简单随机抽样的两种形式:该方法不能充分地代表不太频繁出现的对象类型。
  1. 无放回抽样
  2. 有放回抽样:保证了每个对象被选中的概率保持不变
  • 分层抽样的两种形式
  1. 在每组对象类型中抽取固定的数据对象
  2. 根据每组对象类型所占的比例抽取数据对象
  • 渐进抽样(自适应方法):从一个小样本开始,逐渐增加样本容量直至得到足够容量的样本。

3、维规约

维规约:通过创建新属性,将一些旧属性合并在一起,降低数据集的维度。通过选择旧属性的子集得到新属性称为特征子集选择或特征选择。

维规约的好处:

  • 维度(数据属性的个数)较低,许多数据挖掘算法的效果更好;因为维规约可以删除不相关的特征并降低噪声
  • 维规约可能得到更容易理解的模型;因为模型可能只涉及较少的属性
  • 维规约可以使得数据更容易可视化;
  • 维规约降低了数据挖掘算法的时间和内存需求

维灾难:随着数据维度的增加,许多数据分析变得非常困难。随着维度的增加,数据在它所占据的空间中越来越稀疏。对于分类,可能意味着没有足够的数据去创建模型,可靠地将所有可能的对象指派到一个类。对于聚类,点之间的密度和距离的定义变得不太有意义。结果是对于高维数据,许多分类和聚类算法(以及其它数据分析算法)都有麻烦,分类准确率降低,聚类质量下降。

维规约的线性代数技术:

  1. 主成分分析(PCA)是一种用于连续属性的线性代数技术,找出新的属性即主成分,这些属性是原属性的线性组合,是相互正交的,并且捕获数据的最大变差。
  2. 奇异值分解(SVD)

4、特征子集选择

冗余特征:即某个属性重复了其它属性中的部分或全部内容;比如一种产品的价格和销售税额具有许多相同的信息。

不相关特征:即某个属性的内容对数据挖掘任务起不到作用;比如学生的ID对于预测学生的总平均成无关。

冗余和不相关特征可能会降低分类的准确率或所发现的聚类的质量。

特征子集选择的理想方法:将所有可能的特征子集作为感兴趣的数据挖掘算法的输入,选择产生最好结果的子集。该方法在大部分情况下行不通,因为涉及n个属性的子集会多达2的n次方个。

因此需要其它特征子集选择策略:

  1. 嵌入方法:在数据挖掘算法运行期间,算法本身决定使用哪些属性和忽略哪些属性;构造决策树分类器的算法通常以这种方式运行
  2. 过滤方法:在数据挖掘算法运行前进行特征选择;比如选择属性的集合,他的属性对之间的相关度尽可能低。
  3. 包装方法:将目标数据挖掘算法作为黑盒,使用类似理想方法的方法,但并不枚举所有可能的子集找出最佳属性子集。

特征子集选择的流程图:

5、特征创建

三种创建新属性的方法:

  1. 特征提取:由原始数据创建新的特征集称为特征提取。注意:当数据挖掘用于一个新的邻域,一个关键任务就是开发新的特征和特征提取方法
  2. 映射数据到新的空间:以不同的视角看待数据,可能揭示重要和有趣的特征。比如时间序列数据常常包含大量周期模式,并且存在大量噪声,对该时间序列进行傅里叶变换,将它转换成频率信息明显的表示,就能检测到这些模式。
  3. 特征构造: 原始数据集的特征具有必要的信息,但其形式不适合数据挖掘算法,一个或多个由原始特征构造的新特征可能比原始特征更有用。比如某人工制造品的数据集,该数据集包括每个人工制造品的体积和质量;我们希望根据制造材料(木材,陶土,青铜,黄金)对这些人工制造品分类,就可以构造密度特征(密度=质量/体积)直接产生准确的分类。

6、离散化和二元化

二元化举例:若有m个分类值,则将每个原始值唯一地赋予区间[0,m-1]中的一个整数。再将这m个整数变换成一个二进制数。如一个具有5个值{awful,poor,OK,good,great}的分类变量需要三个二元变量x1,x2,x3。

这样的变换可能导致复杂化,如无意间建立了转换后的属性之间的联系。如属性x2和x3是相关的,因为good的值是使用这两个属性表示。此外对于关联问题,关联分析需要非对称的二元属性,即只有值为1的才是最重要的,因此需要为每个分类值引入一个二元属性,如下图。

连续属性离散化举例:一般,离散化用在分类或关联分析中使用到的属性上。连续属性离散化需要解决两个问题,首先需要分多少类,其次如何将连续属性映射到这些分类值。

非监督离散化:不使用类信息的离散化方法。例如,等宽方法将属性的值域划分成具有相同宽度的区间,而区间的个数由用户指定。这种方法可能受到离群点的影响,因此等频率(等深)方法更好。等频率方法试图将相同数量的对象放进每个区间。还有k均值等聚类方法也是一种离散化方法。

监督化离散:基于熵的方法是最有前途的离散化方法之一。

定义熵,设k是不同的类标号,mi是某划分的第i个区间中值的个数,而mij是区间i中类j的值的个数。则第i个区间的熵ei如下:

划分的中熵e是每个区间的熵的加权平均,即:

从熵的定义可知,区间的熵是区间纯度的度量。即一个区间若只有一个类的值,则其熵是0;若区间中的类值出现的频率相等(该区间尽可能不纯),则其熵最大。

划分连续属性的一种简单方法:先将初始值切分成两部分,得到两个结果区间产生的最小熵。然后选区最大熵的区间,重复切分过程,直到区间个数达到用户指定的个数。

7、变量变换

变量变换(属性变换)是指用于变量的所有值的变换。即对于每个对象,变换都作用于该对象的变量值。如取绝对值对变量进行变换

两种变量变换的类型:

  1. 简单函数变换:比如数据挖掘中,当值域很大时使用对数变换可以起到压缩作用。
  2. 规范化(标准化)变换:规范化的目标是使整个值的集合具有特定的性质。

5、相似性和相异性的度量

1、概念

在许多情况下,一旦计算出相似性和相异性,原始数据就不再需要了;这种方法可以看作将数据变换到相似性(相异性)空间,然后分析。

我们用邻近性表示相似性或相异性;邻近度是两个对象对应属性之间的邻近度的函数;邻近度度量包括相关和欧几里得距离度量,对于时间序列这样的稠密数据或二维点是有用的;还包括Jaccard和余弦相似性度量,对于文档这样的稀疏数据是有用的。

相似度的概念,是指两个对象的相似程度的数值度量。通常在[0,1]之间取值,0表示不相似,1表示完全相似。

相异度的概念,和术语距离是同意词,是两个对象差异程度的数值度量。有时在[0,1]之间取值,也可在[0,无穷]之间取值。

2、数据对象之间的相异度:

距离一般具有如下的几个性质:满足以下三个性质的测度称为度量;

  • 非负性
  1. 对于所有的x和y,d(x,y)>=0
  2. 仅当x=y时,d(x,y)=0
  • 对称性:对于所有的x和y,d(x,y)=d(y,x)
  • 三角不等式:对于所有的x,y和z,d(x,z)=<d(x,y)+d(y,z)

注意距离是一种特殊的相异度,许多相异度都不一定满足这三个性质:如非度量的相异度:集合差

3、数据对象之间的相似度:

对于相似度,三角不等式通常不成立,其它两个性质通常成立。具体如下:s(x,y)是相似度

  1. 仅当x=y时,s(x,y)=1。(0=<s<=1)
  2. 对于所有的x和y,s(x,y)=s(y,x)

4、邻近性度量的例子

例1,二元数据的相似性度量

SMC称简单匹配系数,该度量同等地,对出现和不出现计数。因此SMC可以在一个仅包含 是非题的测验中用来发现回答问题相似的学生。比如上图是两个学生的10个判断题,SMC可以计算这两个学生回答问题的相似性是70%

Jaccard系数,是针对非对称的二元属性的对象进行处理,即只关注属性为1。比如上图的x和y代表两个购物列表,1表示购买了,0表示没有买,由于没有被购买的商品远大于被购买的商品,因此这样的SMC将会判定两个事务是相似的,但在该情况下只需考虑购买了的商品。

例2,余弦相似度:文档相似性最常用的度量之一。

通常文档用向量表示,向量的每个属性代表一个特定的词在文档中出现的频率。一般文档会具有成千上万的属性(即词),但每个文档都是稀疏的,因为它具有相对较少的非零属性。这样与事务数据一样,相似性不能依赖共享0的个数,因为任意两个文档不会包含许多相同的词。因此文档的相似性不仅要像Jaccard度量一样忽略0-0匹配,而且还必须能够处理非二元向量。若x和y是两个文档向量:

拓展:广义Jaccard系数(Tanimoto系数)也可以用于文档数据,并在二元属性情况下规约为Jaccard系数。

例3,相关性:相关度在-1到1之间取值

两个具有二元变量或连续变量的数据对象之间的相关性是数据对象之间线性联系的度量。皮尔森相关系数如下定义:

拓展:Bregman散度,是一族具有共同性质的邻近函数。k均值聚类算法中便构造使用了Bregman发散函数。

Bregman散度是损失或失真函数,它可以作为相异性函数。如下图,散度就是指一个函数与该函数的线性近似之间的差。选取不同的y可以有不同的B散度。

5、邻近度计算问题

  • 属性具有不同的尺度或相关时如何处理:当属性相关,具有不同的值域(不同的方差),并且数据分布近似于高斯分布,欧几里得距离的拓广,Mahalanobis距离是有用的。定义如下:
  • 当对象包含不同类型属性时如何计算对象之间的邻近度:
  • 当属性具有不同的权重,如何处理邻近度计算:

6、选取正确的邻近性度量

  1. 对于许多稠密的、连续的数据,通常使用距离度量,如欧几里得距离等。
  2. 对于稀疏数据,通常包含非对称的属性,通常使用忽略0-0匹配的相似性度量。即相似度依赖于它们共有的性质数目,而不是都没有的性质数目。更特殊的,对于稀疏的、非对称的数据,大部分对象都只具有少量被属性描述的性质,因此如果考虑它们都不具有的性质时,它们都高度相似。可以使用余弦、Jaccard和广义Jaccard度量对这类数据处理。
  3. 相关度的使用:比如时间序列代表不同的量(如,血压和氧消耗量),通常希望确定时间序列是否具有相同的形状,这时采用相关度较好。当时间序列代表的量值是重要的(如,销售额),则可以使用欧几里得距离。

 

 

 

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第九节数据可视化主要包括以下内容: 1. 直方图 直方图是一种常用的数据可视化方式,用于显示数据的分布情况。直方图通过将数据划分成一些连续的区间(也称为“箱子”或“桶”),然后统计每个区间内的数据量,并将结果绘制为垂直条形图。 在 Python 中,我们可以使用 Matplotlib 库的 hist() 函数来绘制直方图,例如: ```python import matplotlib.pyplot as plt import numpy as np # 生成1000个随机数,服从正态分布 data = np.random.randn(1000) # 绘制直方图 plt.hist(data, bins=30, alpha=0.5, color='green') # 添加标题和标签 plt.title('Histogram of Random Data') plt.xlabel('Value') plt.ylabel('Frequency') # 显示图形 plt.show() ``` 2. 箱线图 箱线图是一种用于展示数据分布情况的图表。它由一个矩形和两条“须”组成。矩形表示数据的四分位数范围(第一四分位数、中位数和第三四分位数),上下两条“须”表示数据的最大值和最小值,以及可能的离群值。 在 Python 中,我们可以使用 Matplotlib 库的 boxplot() 函数来绘制箱线图,例如: ```python import matplotlib.pyplot as plt import numpy as np # 生成3组数据,每组100个随机数,服从正态分布 data1 = np.random.normal(0, 1, 100) data2 = np.random.normal(2, 1, 100) data3 = np.random.normal(4, 1, 100) # 绘制箱线图 plt.boxplot([data1, data2, data3], labels=['Group 1', 'Group 2', 'Group 3']) # 添加标题和标签 plt.title('Boxplot of Random Data') plt.xlabel('Group') plt.ylabel('Value') # 显示图形 plt.show() ``` 3. 热力图 热力图是一种用于展示数据密度分布情况的图表。它通常通过不同颜色的方块来表示数据的密度大小,颜色越浅表示密度越大,颜色越深表示密度越小。 在 Python 中,我们可以使用 Seaborn 库的 heatmap() 函数来绘制热力图,例如: ```python import seaborn as sns import numpy as np # 生成10x10的随机矩阵 data = np.random.rand(10, 10) # 绘制热力图 sns.heatmap(data, cmap='YlGnBu') # 添加标题和标签 plt.title('Heatmap of Random Data') plt.xlabel('X-axis') plt.ylabel('Y-axis') # 显示图形 plt.show() ``` 以上就是第九节数据可视化的内容,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值