用蚁群算法用于数据挖掘

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

用蚁群算法用于数据挖掘

一.数据挖掘背景介绍:

数据挖掘和知识发现(Date Mining and Knowledge Discovery,简称DMKD)技术是指从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中提取隐含的、未知的、潜在的、有用的信息的过程。

随着计算机技术迅速发展,数据库技术也得到了广泛的应用。现在的数据库系统可以高效地实现数据的录入、查询、统计计算等功能。如果用数据库管理系统来存储数据,用机器算法来分析数据,挖掘数据背后的知识,这样就产生了数据库中的知识发现(即KDD)和数据挖掘(即DM)。KDD和DM是指识别出存在于数据库中有效的、新颖的、具有潜在效用的、最终可理解的模式的非平凡过程。

数据挖掘的任务分成很多种,包括数据描述(characterization)、数据分类(classification)、数据关联(association)、区别分析(discrimination)、数据回归、数据聚类(clustering)、数据预测(prediction)。

我们这里要用蚁群算法解决的是数据分类这样一个问题:我们预先定义一组类,然后把数据系中的每一个数据根据该数据的属性,归入这些类中的一个。

比如说病情诊断:在医院里,病人感觉不适,进行检查,并且医生对一些以前的状况进行询问,可以得到很多各种方面的参数,比方对于SARS病情,可以得到的一些相关参数:体温,咳嗽,肺部X照射是否有阴影,以及各种症状持续时间,病人前一段时间接触过何种人群等等,这些大量的数据比较容易得到,但是如何根据这些大量的病人的病情参数来判断是否确实为SARS病症并不是一件很简单的事情,这就是我们的数据分类工作要做的事情。

我们要对数据进行分类,首先要有进行分类的规则,我们把判别规则表示为如下形式:IF < conditions > THEN < class >

其中判别规则的前导部分(IF 部分)是一个条件项的集合.条件项就是一个只有<属性,关系符,属性取值>三个元素的简单的条件。不同的条件项用逻辑运算符连接,一般是AND。所以规则的前导部分就是一个由许多简单的条件由逻辑连接而成的复合条件。符合这个条件的数据将被纳入规则后部的class中。

从规则有意义和可理解性来考虑,简单条件不能太多,而属于规则的数目也不能太多。

二.蚁群算法简单介绍:

蚁群算法的几个要点:

1.要把每一个蚂蚁寻的路和原问题的一个解对应;

2.每个蚂蚁在它走过的路上留下的信息量正比于路的好坏,好的路有更大的信息量,才会吸引以后的蚂蚁选择这条路,因此是一个在计算过程中不断进行自适应调控的过程;

3.当蚂蚁在走出每一步前,它选择怎样的走法,决定于当前它可以走的各条路的信息量分布。由每条路的信息量的大小,来决定选择这条路的概率,信息量大的路有更大的被选择的机会,也代表着前面的蚂蚁选出的较优路径。

对一个实际问题采用蚁群算法的几个比较关键的地方:

1.正确的把问题数学模型化,将问题的解对应于蚂蚁的路;

2.寻找构造可行解的方法;

3.解的评价函数;

4.建立选择下一步的启发式规则;

5.更新信息量的规则(自我调整);

6.适当的终止条件。

三.蚁工——蚁群算法在数据挖掘上的改进:

通过对蚁群算法作适合数据挖掘的改进,得到了蚁工算法,下面根据蚁群算法的几个关键的地方对蚁工算法进行介绍:

1.确的把问题数学模型化,将问题的解对应于蚂蚁的路;

a.规则表示为如下形式:

IF< term1 AND term2 AND … > THEN < class >

规则的IF部分由很多term组成,每个term是一个三元组三个元素的简单的条件,如果属性的取值是连续的,在程序运行前,必

须先对其作离散和分级预处理。

条件项之间由AND逻辑连接而成的规则的IF部分。符合这个条件的数据将被纳入规则后部的class中。

并且规定每种属性只能出现在一个条件项中,一定不允许出现诸如:

“IF(Sex=male)AND(Sex=famale)”。这样,可以把蚂蚁走过的路和一个这样的规则联系起来,每个属性可以作一个结点,蚂蚁可以每次选择一个结点作为它的行进方向,选择一条到达该结点费用最小的路。这样,最后的解就和一条连接部分结点的路联系起来了。

2.寻找构造可行解的方法;

按照上面的方式生成的解,每次生成的解必然是可行解;

解形式:把一旦一个具体问题给出,我们就知道问题的属性数目和每种属性的取值分类数目,然后记录改种属性是否已经包含在条件项内了,而且取的是哪个数值,可以用一个一维数组表示,每个项表示一个属性

而每项的数据写成二进制形式,就是表示对数值的选择,如:

000100,表示有6个可取数值,取其中的第三个等级。

而每个蚂蚁当前的路径表如下:

route[k]={0,4,0,0,8,1,0,0,0,0};

这样一个解表示了一共有10个属性,其中已经选择除了第2,5,6个属性,并且第2个属性取自己的离散定义域第3个数值,第5个属性取第4个数值,第6个数值取第1个数值。

3.解的评价函数;

一旦构建起一个规则,需要对规则的性能进行评价,这里我们采用评价函数:

TN

FP TN FN TP TP Q +⋅+= 其中:

TP :true positives 属于该类的待检验数据被判断为该类的数目;

TN :true negatives 属于该类的待检验数据被判为不属于该类的数目;

FP :false positives 不属于该类的待检验数据被判为不属于该类的数目; FN :false negatives 不属于该类的待检验数据被判为属于该类的数目。

可以看出,Q 的数值一定在[0,1]之间,而且Q 的数值越接近1,则表面规则对该类的判断越准确。

FN

TP TP +:敏感度(sensitivity),代表该规则判断为属于该类的待检验数据中确实属于该类的比例;

相关文档
最新文档