数据挖掘RapidMiner工具使用----聚类K-Means案例分析

                                   这里以学校的学生成绩进行聚类分析为案例

1、背景

       随着我国经济的发展,网络已被应用到各个行业,人们对网络带来的高效率越来越重视,然而大量数据信息给人们带来方便的同时,也随之带来了许多新问题,大量数据资源的背后隐藏着许多重要的信息,人们希望能对其进行更深入的分析,以便更好地利用这些数据,从中找出潜在的规律。那么,如何从大量的数据中提取并发现有用信息以提供决策的依据,已成为一个新的研究课题。

      目前普遍使用的成绩分析方法一般只能得到均值、方差等一类信息,且仅仅是从一门课程独立数据进行的分析,但在实际教学中,比如学生在学习某一门课程时,是哪一门或者几门课程对其影响很大,包括教学以外的哪些因素对学生成绩造成了较大的影响等各种有价值的信息往往无法获知。

2、聚类分析

       在数据库中的知识发现和数据挖掘(KDDM)受到目前人工智能与数据库界的广泛重视。KDDM的目的是从海量的数据中提取人们感兴趣的、有价值的知识和重要的信息,聚类则是KDDM领域中的一个重要分支。所谓聚类是将物理或抽象的集合分组成为类似的对象组成的多个类的过程。

      聚类分析就是将一组数据分组,使其具有最大的组内相似性和最小的组间相似性。简单的说就是达到不同聚类中的数据尽可能不同,而同一聚类中的数据尽可能相似,它与分类不同,分类是对于目标数据库中存在哪些类这一信息是知道的,所要做的就是将每一条记录分别属于哪一类标记出来;而聚类是在预先不知道目标数据库到底有多少类的情况下,希望将所有的记录组成不同的簇或者说“聚类”,并且使得在这种分类情况下,以某种度量为标准的相似性,在同一聚类之间最小化,而在不同聚类之间最大化。事实上,聚类算法中很多算法的相似性都基于距离而且由于现实数据库中数据类型的多样性,关于如何度量两个含有非数值型字段的记录之间的距离的讨论有很多,并提出了相应的算法。聚类分析的算法可以分为以下几类:划分方法、层次方法、基于密度方法等。这里只描述一种:K-means算法,如下

3、K-means算法

     K均值聚类,即数据挖掘中的C均值聚类,属于聚类分析方法中一种基本的且应用最广泛的划分算法。

     K-means算法是J.B.MacQueen在1967年提出的,是聚类方法中一个基本的划分方法,也是目前诸多聚类算法中极有影响的一种技术。K-均值算法以k为参数,把N个对象分为k个簇,以使簇内具有较高的相似度。相似度的计算根据一个簇中对象的平均值来进行。

算法首先随机地选择K个对象,每个对象初始地代表了一个簇的平均值或中心。对剩余的每个对象根据其与各个簇中心的距离,将它赋给最近的簇。然后重新计算每个簇的平均值。这个过程不断重复,直到准则函数收敛。

K-Means算法的准则函数定义为:

数据挖掘RapidMiner工具使用----聚类K-Means案例分析

即E是数据库所有对象的平方误差的总和。其中x是空间中的点,表示给定的数据对象,是簇的平均值。

K-means算法描述为:

输入:簇的数目k和包含n个对象的数据库

输出:k个簇,使平方误差准则最小

(1)assigninitial value for means;  

//任意选择k个对象作为初始的簇中心

(2)REPEAT

(3)FOR j=ito n DO assign each xj to the cluster which has the closest mean;

//根据簇中对象的平均值,将每个对象赋给最类似的簇

(4)FORi=1 to k DO

数据挖掘RapidMiner工具使用----聚类K-Means案例分析

//更新簇的平均值,即计算每个对象簇中对象的平均值

(5)ComputeE;

//计算准则函数E

(6)UNTILE 不再明显地发生变化;

从上面的算法思想和算法框架,我们不难看出,K个初始聚类中心点的选取对聚类结果具有较大的影响,因为在该算法中是随机地选取任意K个点作为初始聚类中心。如果有先验知识,可以选取具有代表性的点作为初始中心点。在上面这个算法中,一次迭代中把每一个数据对象分到离它最近的聚类中心所在的类中,这个过程的时间复杂度为O(nkd),这里n指的是总的数据对象的个数,k是指定的聚类数也叫簇数,d是数据对象的维数;新的分类产生以后需要计算新的聚类中心,这个过程的时间复杂度为0(nd)。所以这个算法一次迭代需要的总的时间复杂度为O(nkd)。

4、数据准备与数据预处理

(1)聚类数据的预处理

现实世界中的数据库存在大量的噪声数据、空缺数据和不一致数据。基因表达数据也存在这种情况。有很多数据预处理技术可以去掉数据中的噪声,纠正不一致。为了提高涉及距离度量的聚类算法的精度和有效性,可以采用数据规范化的一些方法。

(2)数据清理

在实际数据库中往往存在着一些空缺值和噪音数据。对于空缺值,可以采用以下方法填写空缺值。

1)人工填写空缺值。这种方法对操作人员要求较高。并且,该方法很费时,当数据集很大时,该方法可能行不通。

2)使用该空缺值所在属性的平均值来填充。比如当进行样本聚类时,如果某个样本在某个指标值上的值空缺,可使用其它样本在该指标上的平均值来填充该空缺值。对于噪声数据,我们可以采用一些数据平滑技术来平滑数据。

3)数据规范化。如果数据库中的各属性的量纲和单位不同,在计算机对象间的距离之前,必须把不同的度量单位统一成相同的度量单位。由于属于不同概念范畴的属性具有不同的含义,把所有的属性转化成某个特定的度量单位是不可能的。常用的方法是把属性的值域映射为一个相同的区间(通常是[0,1]区间),这个过程成为属性的标准化或规范化。

准备500学生的成绩包含:数学、英语、语文、物理、化学、历史、地理等

数据挖掘RapidMiner工具使用----聚类K-Means案例分析

5、RapidMiner聚类分析

分析流程:读取数据库---->聚类分析---->存储csv文件---->结束

1、打开RapidMiner工具,进入白板界面

数据挖掘RapidMiner工具使用----聚类K-Means案例分析

2、读取数据库:拖曳---左侧中的Database--->Read Database标签,读取数据库,然后设置数据库的基本条件,点击白板中的Read Database,查看右侧信息

1)数据库连接条件:点击Connection右边的数据库连接配置按钮,输入相关信息如:数据库名称、用户名、密码、Host等,然后点击下方的测试一下连接是否成功。

数据挖掘RapidMiner工具使用----聚类K-Means案例分析

2)读取数据库中表以及相关属性数据配置:点击query右侧的图标,选择数据库下的表--属性--以及条件,可以筛选出来对应的数据

数据挖掘RapidMiner工具使用----聚类K-Means案例分析

3、聚类算法:拖曳---左侧中的Modeling--->segmentation--->K-Means标签到白板中,聚类算法插件,用于数据的聚类分析

数据挖掘RapidMiner工具使用----聚类K-Means案例分析

1)配置聚类算法的参数:簇数、迭代次数等

数据挖掘RapidMiner工具使用----聚类K-Means案例分析

4、存储文件:拖曳---左侧中的Data Access--->Files--->Write标签到白板中,存储文件插件,用于分析结果的存储

然后在右侧csv file配置存储路径

数据挖掘RapidMiner工具使用----聚类K-Means案例分析

5、分析流程图---规划,通过连接线连接整个的执行流程,并点击执行按钮

如图所示

数据挖掘RapidMiner工具使用----聚类K-Means案例分析

6、执行结果

1)、分析具体结果数据

2)、统计数据:最大、最小、平均值、聚类

3)、聚类分析图

数据挖掘RapidMiner工具使用----聚类K-Means案例分析

数据挖掘RapidMiner工具使用----聚类K-Means案例分析

数据挖掘RapidMiner工具使用----聚类K-Means案例分析

数据挖掘RapidMiner工具使用----聚类K-Means案例分析

7、结果分析:

第一个图可以看出

1)每科目的最低分、最高分、平均分等信息

2)聚类:三簇数据,每簇数据的学生个数

第二个图可以看出

1)每科分值的分布情况,看出大部分学生的成绩分布在【70-80】之间,90分以上的偏少

第三个图可以看出:

1)聚类按三簇进行聚类,也就是说分为了三类学生

2)cluster_0结合第一个图有378个学生实例,从成绩上分析学习情况:地理成绩不及格;语文、化学成绩偏差;物理、英语较好;数学最好

cluster_1结合第一个图有136个学生实例,从成绩上分析学习情况:地理成绩不及格;历史、化学成绩偏差;语文较好;物理、英语、数学最好

cluster_2结合第一个图有26个学生实例,从成绩上分析学习情况:地理成绩不及格;历史、化学成绩偏差;语文、数学、物理较好;英语最好

因此,根据分析的数据来看,这三类的学生,老师可以根据不同的情况,进行分类着重辅导。