实验报告-使用直方图离散化数据

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验题目: 直方图进行数据离散化 1 实验目的

直方图使用分箱来近似数据分布,是数据规约的一种形式。通过本实验,需要掌握不同直方图的数学原理和构造方法。同时,掌握使用不同直方图对数据进行离散化的原理和方法。最后,利用实验数据实现一种直方图并进行评估。

2 实验步骤

2.1 算法原理

首先,假设有N 个自然数的集合U={x | x ∈N },其中最大值为m ax N 。

(1)等宽度直方图 对数据进行分箱。假设按等宽度的方法进行分箱(宽度w=1),则对于N 个数据,按其值i v 分别放入到相应的箱中,箱子的数目max K N =。设每个箱中的统计数据为

(1,2...,)i c i N =,按照坐标值/频率对(/i i c v )表示在二维坐标上,则可以得到该组数据的

单桶直方图。其中,i c N =∑。

一般情况下,为了进一步压缩数据,通常进行数据分箱时,每一个桶代表的是连续的属

性值,即取宽度m ax (0)w q q N =<<。在这种分箱方法下,分箱数目max /K N q

=。则

按照公式

**(1)

q j

j i i q j c c =-=

,其中1,2...,j K =,令max 0,*i c N i q j =<<

所得到的值/频率对((1)~/)j q j qj c -,1,2...,j K =的宽度为q 的直方图,即为常见的等宽度直方图。

(2)等深度直方图 与等宽度直方图相比,等深度直方图仅仅是在创建数据桶时与其不同。等深度直方图的数据桶的创建思想是:使得每个桶的频率粗略的为常数,即每个桶中包含大致相当的样本数据数目。

设分箱的数目为K

,则对于每一个桶,有m ax /i c N K

=

,其中1,2...,i K =。只有在

这种情况下,才满足m ax /i i P c N =大致相当。所要求的是每一个桶的边界i e ,1,2...,i K =。 求边界的过程:首先对该集合U 进行排序(由小到大),由于每桶的数目相等,所以每间隔c 个数据,取一次数据值,即为一个有效的边界值。对于排序后的序列,有

*(1)max

,,c i i v i K

e N i K -<⎧=⎨

=⎩。所得到的二维(/)i i P e 值对,即是等深度直方图。 2.2 算法步骤

用户输入数据分桶的数目K ,然后按如下步骤计算: (1)对样本数据进行排序 (2)计算宽度w 和c

(2)对数据进行扫描和计算等宽度直方图的数目值i c 和等深度直方图的边界i e

2.3 程序流程图

图1 等宽度直方图流程图

在图1中,数据的分桶数目是用户输入的数据,预先由用户设定。样本数据存放在文本

文件eggs.txt 中,由程序运行时读入。在实验中,通过对样本数据的考察,计算桶宽度w 的方法是max/10001*1000/w k =

+。统计结果存放在数组中,返回统计结果。

图2 等深度直方图流程图

在图2中,数据的分桶数目是用户输入的数据,预先由用户设定。样本数据存放在文本文件eggs.txt中,由程序运行时读入。每个桶的数据量c的计算公式/

,N表示原

c N k

始数据的数据个数。边界计算结果存放在数组e中,返回边界数组,计算过程结束。

3 实验结果分析

图3 等宽度直方图(K=10)统计结果

图4 等宽度直方图(K=20)统计结果

图5 等深度直方图(K=10)统计结果

图6 等深度直方图(K=20)统计结果

上面的图分别表示K=10和K=20的情况下eggs.txt 中数据的等宽度和等深度直方

图的统计结果。直方图的使用是为了离散化数据。在实验中,使用每个桶的中值来代表该桶中数据的离散结果。在K=10的情况下:使用等宽度直方图,样本数据离散值为{550,1650,2750,3850,4950,6050,7150,8250,9350,10450};使用等深度直方图,样本数据的离散值为{3,43,182,403,643,981,1378,1803,2365,6770}。在K=20的情况下,使用等宽度直方图,样本数据离散值为{275,825,1375,1650,1925,2475,3025,3575,4125,4675,5225,5775,6325,6875,7425,7975,8525,9075,9625,10175,10725};使用等深度直方图,样本数据的离散值为{0,2,17,50,108,199,308,412,539,683,842,1051,1221,1368,1552,1776,2035,2338,2742,6915}。实验表明:对于采用不同的直方图和不同的桶数目K ,得到不同的离散化结果。

4 实验结论

对于上述的四种离散化结果,如何来判定哪种离散化数据的效果更好呢?一般的,离散

后的数据越接近样本原始数据,则效果越好。数据离散化后,与原始数据肯定存在差异,一般用误差度量这种差异大小。在这里,定义平均相对误差和最大相对误差来表示离散数据逼近原始样本数据的程度,作为离散化的评判标准。 平均相对误差E 定义如下:

1

1

||||

N

i i N

i i P T E T =-=

,其中,i P 和i T 分别表示第i 个值的离散值和真实值,N 表示数据

总量。 最大相对误差M 定义如下:

||(

),(0)||

i i i P T M M ax i N T -=<<=,其中,i P ,i T ,N 的定义和平均相对误差中的相

同。

对于K=10,根据等宽度和等深度的方法,可以得到两组不同的离散值T1和T2。对于

这两组离散值,通过计算,得到平均相对误差E1=8.538418,E2=0.399769,最大相对误差M1=549.00,M2=2.00。由上述两组比较可得,在对该样本数据进行离散化时,采用等宽度直方图的方法,效果更好。

对于等宽度直方图,当K=10和K=20的情况下,可得到两组不同的离散值T1和T2。

通过上述方法计算可得,平均相对误差E1=8.538418,E2=4.261210,最大相对误差M1=549.00,M2=274.00。对于上述两组数据,对于采用直方图进行数据离散化,在桶数目多的情况下,误差较小。当K=N 时,数据即为原始数据,此时,误差E 和M 都为0。但是这样的数据离散化时无意义的,在比较K 不同时,还需要考虑另一项指标:数据压缩比率。

在实验中,对于每个桶中的数据,取离散值的方法是取中值。如果改变取值方法,比如

用桶内样本的平均值来表示离散值,则会得到不同的E 和M ,但是结论不会改变。

5 实验心得体会

1、使用程序读入文本数据方法

读入数据问题,使用的数据是从dat 文件转换过来的txt 文件,每行的数据都是换行后

的,所以可以直接通过getline 函数获取每行值,然后使用atoi 函数转换为整型数据。 2、为何在实验结论中的评价标准不使用绝对误差?

绝对误差对于离群点敏感,不能代表整体逼近效果。

3、对于一簇样本数据,应采用何种直方图划分更为合理?对于数据的划分,在实验中是采用用户的一个预设值,可以通过数学的方法获取一个较为良好的K 值吗?

参考文献

[1] 数据挖掘:概念与技术/(加)韩家炜,(加)坎伯(Kamber,M.)著;范明等译.-北

京:机械工业出版社,2001.8

附录(源代码)

//读入数据

相关文档
最新文档