数据挖掘报告-Kmeans算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据挖掘课程报告
班级 XXXXXX
学生姓名 XXXXXX
学号 2010100XXXXX
指导教师 XXXXXXX
日期 2013年10月15日
k-means 算法与猫群算法的聚类效果比较分析
摘要:本文在聚类个数k 值预先设定的前提下,分别应用了k-means 算法、猫群算法对储层含油性问题进行聚类分析,比较了这两种算法的聚类效果。实验结果显示:本文所采用的传统的k-means 算法常容易陷入局部最优。而猫群算法在样本数目较小时(如以表oilsk81为例时),是一种快速、高效的识别算法。当样本数目翻倍时,受实际算法代码设计的影响,识别的正确率将会下降,这也充分说明了猫群算法的运算效果受代码和样本大小的影响,有较大的不确定性。
关键词:k-means ;猫群算法;聚类分析;
1 引言
K-means 算法[1]是由J.B. Mac Queen 于1967 年提出的,该算法是一个经典的基于划分的聚类算法,因其算法效率较高,易于其它方法相结合,目前已成为数据挖掘、机器学习、模式识别和数量统计等领域应用最广的聚类算法之一。
近几年来提出了很多的群体智能算法,这些算法都是通过模仿生物界中某些动物的行为演化出来的智能算法[2]。猫群算法作为群体智能算法之一,具有良好的局部搜索和全局搜索能力[3],算法控制参数较少,通过两种模式的结合搜索,大大的提高了搜索优良解的可能性和搜索效率,较其他算法较容易实现,收敛速度快,具有较高的运算速度,易于其他算法结合。但也有出现“早熟”现象的弊端[4]。群体中个体的优化只是根据一些表层的信息,即只是通过适应度值来判断个体的好坏,缺乏深层次的理论分析和综合因素的考虑。由于猫群算法出现较晚,该算法目前主要应用于函数优化问题[5],故在聚类分析研究方面,很有必要对猫群算法进行深入研究。
传统的k-means 算法与新兴的聚类方法猫群算法相比较会有哪些异同点呢,接下来将具体阐述。
2 算法模型
2.1 K-means 算法模型
设对n 个m 维样本集进行聚类,n 个样本集表示为12{,,,}n X X X X = ,其中
12(,,,)i i i im X x x x = ,聚类成k 个分类表示为12{,,}k C C C C = ,其质心表示为1
,1,2,....j
j i
x C j
z X j k
n ∈=
=∑,
j
n 为
j
C 中包含的数据点的个数,则聚类的目标是使k 个类满
足以下条件:
1(,)i j
k
ij
i j j x C d
x z Min
=∈−−→∑∑
式中,(,)ij i j d x z 表示计算数据间距离的函数,他可以是不同的度量方式,本文选择欧氏距离度量函数来
度量,k 为聚类数目,j z 为j 类样本的聚类中心。
2.1 猫群算法模型 基本流程:
猫群算法的基本流程分为以下5步。具体流程如图1所示。 ① 初始化猫群。
② 根据分组率将猫群随机分成搜寻模式和跟踪模式两组。
③ 根据猫的模式标志位所确定的模式进行位置更新,如果猫在搜寻模式下,则执行搜寻模式的行为;否则,执行跟踪模式的行为。
④ 通过适应度函数来计算每一只猫的适应度,记录保留适应度最优的猫。
⑤ 判断是否满足终止条件,若满足则输出最优解,结束程序;否则继续执行步骤 。
3 储层含油性识别问题的聚类分析
本文从储层含油性问题入手,以Oilsk81等3口井测井解释成果为例,对储层参数分布特征通过K-means 算法、猫群算法进行了聚类分析,最后与测井原有结果对比,研究比较K-means 算法、猫群算法基于不同数据集以及不同迭代次数的分类准确率。
3.1 样本和指标的选取
实验数据来自于江汉油田某区块,该区块有oilsk81等3口井,本文选用的实验数据来分别自于oilsk81、oilsk83、oilsk85井。其中oilsk81井属性和对应的测井解释结论如表1所示。
表1 oilsk81井测井解释成果表
层号 声波
(μs/m) 中子 (%) 深测向电阻率 (Ω.m) 孔隙度 (%) 含油饱和度 (%) 渗透率 (mμm 2) 结论
1 195 7.5 13.0 6.0 0 0 干层
2 225 10.0 7.
3 11.0 0 0 水层 3 230 14.0 5.5 12.0 0 0 水层
4 220 9.0 25.0 9.0 56 1.3 油层 5
225
8.0
30.0
9.0
58
2.3
油层 算法开始
设定算法参数(如分组率、基
因位变化范围等)
计算猫的适应度值
根据分组率,一部分猫处于搜寻
模式,剩下的猫处于跟踪模式
判断猫是否处在搜寻模式
搜寻模式
跟踪模式
是否计算适应度值并保留最优解
是否满足结束条件?
输出最优解,算法
结束是
否
图1 猫群算法的基本流程
6 210 7.0 26.0 6.0 0 0 干层
7 220 8.0 26.0 10.0 60 2.4 油层
8 225 9.0 30.0 10.0 62 2.5 油层
9 195 4.0 36.0 5.5 0 0 干层
10 220 9.0 30.0 9.0 61 1.7 油层
11 217 7.5 50.0 8.0 55 1.1 油层
12 210 6.0 130.0 7.0 48 0.7 差油层
13 195 4.0 100.0 5.0 0 0 干层
14 195 4.0 70.0 5.0 0 0 干层
15 200 6.0 90.0 6.0 0 0 干层
16 200 4.0 130.0 6.0 0 0 干层
17 200 4.0 90.0 5.0 0 0 干层
18 215 9.0 25.0 9.0 54 1.6 油层
19 195 4.0 70.0 4.0 0 0 干层
20 200 6.0 55.0 6.0 0 0 干层
21 200 4.0 100.0 5.0 0 0 干层
22 240 13.5 12.0 12.0 40 2.4 油层
23 212 8.0 36.0 8.0 60 1.5 油层
24 197 6.0 50.0 6.0 0 0 干层
25 202 6.0 55.0 7.0 52 0.8 差油层
26 195 4.5 50.0 6.0 0 0 干层
27 203 5.0 45.0 7.0 46 0.6 差油层
28 195 6.0 50.0 6.0 0 0 干层
29 210 7.5 20.0 8.0 57 1.2 油层
30 201 6.0 16.0 7.0 40 0.4 差油层
31 213 9.5 12.0 9.0 61 2 油层
从表1中的数据可以看出,用于储层含油性识别的属性集合为:声波时差,中子,深测向电阻率,孔隙度,含油饱和度和渗透率。测并解释结论为:油层,差油层,水层和干层。
3.2 K-means算法的聚类分析
本文应用的是matlab软件自带的K-means函数,即传统的K-means算法。K值是已知的,值为4。在命令窗口中输入命令“[cid,C,sumD]=Kmeans(x,4)”。输出参数分别为cid,C,sumD,cid为N*1的向量,存储的是每个点的聚类标号;C为K*P的矩阵,存储的是K个聚类质心位置;sumD 1*K的和向量,存储的是类间所有点与该类质心点距离之和。x为样本数据的矩阵。
以Oilsk81为样本数据集,结果为{3 3 3 1 1 3 1 1 4 1 1 2 2 4 2 2 2 1 4 4 2 1 1 4 1 4 1 4 1 1 1}。