李 涵,傅文鸿,范昱煊,焦宇航,胡雪巍,党 赫
(北京信息科技大学理学院,北京 100096)
随着信息技术的高速发展,计算机技术已经被运用到各个领域,极大促进了生产力的提升,也在高等院校的信息化管理中凸显了极大的便利。宿舍作为高校进行系统化管理的重要组成单位,是高校学生最主要的生活场所,宿舍管理事关一所学校的校风与学生的生活体验。近年来高校招生人数的不断增加,宿舍间人际关系问题日益浮现,传统管理方式也显现出其弊端所在。传统管理方式不能很好胜任宿舍日常管理需求,因此越来越多的高校都已经逐渐开始将信息化技术应用于校园管理中。当前绝大多数高校普遍依靠性别、专业、班级、学号等进行宿舍分配,没有更多考虑学生个性发展的多样化因素,如何利用计算机强大的数据分析能力实现智能化宿舍分配是当下宿舍管理中相当值得思考的问题[1-2]。在此设计实现一款基于数据挖掘技术的宿舍智能分配系统,对解决上述问题做出尝试。
数据挖掘[3]针对隐含于某个大数据集中的先前未知的并具有潜在价值信息。数据挖掘技术是涉及到机器学习、统计学和数据库系统的交叉方法,是计算机科学和统计学的一个跨学科子领域,其总体目标是通过智能化方法从数据集中提取信息,并将这些信息转换为可理解的结构以供进一步使用。数据挖掘包括聚类分析、异常检测、关联规则挖掘、顺序模式挖掘等内容。完整的数据挖掘流程如图1。
图1 数据挖掘流程图
1967年James MacQueen提出的k均值聚类算法(k-Means Clustering Algorithm)是一种迭代求解的聚类分析算法[4-5]。数据被分为k组,随机选取k个对象作为初始的聚类中心,计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类、没有(或最小数目)聚类中心再发生变化、误差平方和局部最小。
k-means聚类算法思想分析及数学分析如下[6]:
输入:簇的数目k和含有n个数据对象的数据集。
处理流程:从数据集中选择k个对象作为初始聚类中心→计算每个聚类对象到聚类中心的距离来划分→再次计算每个聚类中心→计算的标准测量功能。如果达到最大迭代次数,停止,否则继续。
k-means聚类算法操作简单、运算速度较快,能够有效地处理中小型数据集。但是也存在缺点:kmeans聚类算法的初始聚类中心是随机选择的,因此初始中心点选取的好坏会导致最终的聚类效果不同。选择不同的初始聚类中心将改变由最终集群获得的集群。另外,k-means聚类一般算法使用准则函数作为目标函数,并且仅存在一个全局最小和N最小值的准则函数[7],这使得算法在运算过程中将陷入局部极小,所以最后的结果是不是全局最优解还不确定。除此之外,k-means聚类算法中k表示聚簇的个数,聚类结果取决于k值的选取[8],然而k值的选取需要根据实际的需求来确定,通常情况下并不知道要将数据集聚为多少个类簇最为合适,因此针对k值的选取问题依然有待解决。
在此设计并实现一款基于数据挖掘技术的宿舍智能分配系统。在理想情况下,能够实现每个宿舍中的学生的生活作息大致相同,性格类似且爱好相通。
在进行聚类之前需要获取数据。设计采用调查问卷的方式,获取新生的基本信息,并进行预处理。调查问卷设计分为三个步骤:
1)对学生的姓名、性别、学院、专业、班级、生活等基本信息进行采集,并收取各种生活习惯数据,如睡觉的时间等。对于学生宿舍分类,将得到的数据先按性别、校区、学院等梯度分类,再将“某学院”这一梯度的学生的生活作息时间划分为一个个区间。
2)采集详细的性格特征。性格包括:大方外向、自制力、敏感、责任心、卫生五个方面。在调查问卷中,这五个大方向共有20道小题,每个大方向有四个小题,每个小题有四个选项,选项根据得分按序排列,分数赋值提前按照顺序排列好,从A到D分别是1到4分,生成表格时按序号生成,那么每个序号就对应了相应的得分。
3)爱好选择。此部分应用了5道多项选择题,分别为每个人喜欢的运动、剧种、书籍、游戏、音乐类别。当导出为表格时,此部分的表格每一列的列名变为题目的选项,表格元素也不再是选项的序号,而改用0或者1来表示是否有此爱好。在后续聚类过程中,假若第二次分类时,有宿舍人数达到饱和,学生得分相近,那么就要依靠此部分将学生进行详细拆分,筛选爱好相对差异较小的学生。
对前一步调查问卷得到的信息进行导出,存入数据库中。由于调查问卷的问题内容过于冗长,需要先修改列名以使语句精简。修改完成后,将数据进行分层处理。修改完的数据表生成为原始层的数据表,再用查询语句生成数据运营层(Operational Data Store,ODS)。实际语句如图2所示。
图2 性格得分处理语句
图中语句处理的是问卷第二部分。将每个性格的得分汇总,并只生成五列,对应五个性格。随后从ODS层提取数据,形成新的表,当做新的一层数据仓库(Data Warehouse,DW)层,部分语句如图3。
图3 仓库层处理相关部分语句
这一层分为三个表,每个表的主键都是学生的学号,在聚类时,先根据基本信息表进行梯度分类,再按照性格表和爱好表进行聚类。其中,性格为聚类的主要依据,爱好为次要依据,如超出一个宿舍最大容量的人数性格相似,可再按照爱好分类。最终表的分层结构如图4所示。
图4 数据库表结构
k值的选取根据给学生安排的宿舍个数自行填写,这样聚类得出的每一个簇即为一个宿舍。若有m个学生填写了问卷,每个宿舍可安排n个人入住,则k=m/n,暂设n=6。
初始聚类中心的选择是根据性格表(dw_nature)当中的五个性格特点(outgoing,selfcontrol,sensitive,responsibility,health)作为一个五维向量基,取所有学生中的前k个学生的性格特点构成的五维向量为初始的k个聚类中心。计算每一个学生的性格向量与聚类中心的欧氏距离,根据k-means算法的思想迭代运算,即可得到每个学生与簇心的距离,最接近某一簇心的n个学生即分配到同一宿舍。聚类过程如图5所示。
图5 k-means聚类过程
当聚类完成之后,有可能会出现极端值的情况,比如该簇已经聚入了5个学生,但是之后又出现了5个学生与簇心距离相同,但是一个簇里只能有6个学生,这时就需要剔除4个学生。此时应以如下方法处理:
先将n个元素分成x1,x2,...,xn,然后计算x1到x2、x3、……xn各点的距离l1i。这是将爱好多选题中的每个选项取出,将x1与xi之间的选项求异或(选项为多选,其中的内容都是为0,1的int型元素),把各个异或的数值进行相加,得出的距离就是x1与xi之间的距离l1i。
对系统进行实验测试。在实验中,由学生通过填写调查问卷,为聚类提供数据。部分调查问卷如图6所示。
图6 调查问卷形式
从问卷收集到的信息并不是直接进行聚类,而是先按照事先分配的性别和学院,将原本的数据进行初步分类,如分类得到“理学院男”、“理学院女”、“计算机学院男”、“计算机学院女”等类别。在每个小类别中,利用k-means算法进行聚类。其中k值为宿舍的数量,k初值选取为小类中前k个学生信息,距离是通过性格的五维向量计算得来的欧氏距离。其中聚类结果与簇内距离如图7所示。
图7 聚类结果
完成宿舍智能分配后,可以通过前台界面查询结果,如图8所示。
图8 查询结果图
通过在数据库中查看聚类结果及簇内距离,也能证明以该方法进行宿舍分类是有效的、可行的。
使用数据挖掘技术和k-means聚类思想,结合SQL server数据库,研究并实现了高校宿舍智能分配系统。该方案将基本信息、性格、爱好等各项属性相近的学生安排至同一个房间,充分尊重了学生的个体差异,系统的功能模块基本覆盖了宿舍分配中可能遇到的各种问题,界面友好,操作简单,具有可拓展性好、开发成本较低的特点,有效提高了学生对于宿舍分配的满足感,为学生营造了温馨和谐且更加人性化的宿舍氛围,也为智慧校园的建设提供了具有价值的参考方案。