APP下载

K—means算法在大学生消费状况分析中的应用

2013-02-20贺玉珍任姚鹏

计算机时代 2013年2期
关键词:means算法聚类分析数据挖掘

贺玉珍 任姚鹏

摘 要: 以运城学院在校大学生为例,对其消费情况进行了抽样调查,并利用K-means算法对调查结果进行了聚类和分析。实验结果表明,每一类学生中影响其消费的因素是有差别的,该分析结果可作为指导各类学生消费的依据。

关键词: 数据挖掘; 聚类分析; K-means算法; 消费调查

中图分类号:TP311 文献标志码:A 文章编号:1006-8228(2013)02-19-03

Application of K-means algorithm in the analysis of consumption status of undergraduates

He Yuzhen, Ren Yaopeng

(Department of Computer Science and technology, Yuncheng University, Yuncheng, Shanxi 044000, China)

Abstract: The consumption of undergraduate students in Yuncheng University is investigated in this paper, and the K-means algorithm is used in the survey to carry out clustering analysis. The results show that the factors affecting consumption in each cluster of students are different. The analysis result may serve as a basic guidance of all kinds of students' consumption.

Key words: data mining; clustering analysis; K-means algorithm

0 引言

正确引导大学生消费是高校素质教育不可忽视的一项重要内容。影响学生消费的因素很多,因此需要进行综合分析,传统分析大部分采用统计分析的手段,得到均值、方差等一些简单的分析结果[1,2]。其实,还有一些潜在的因素,需要进一步分析,从而得出结论,为学生提供合理的消费意见与建议。许多信息无法从传统的学生消费分析方法中获得,而可以通过从20世纪90年代中期兴起的数据挖掘技术获得,进而找到影响学生消费的真实原因,制定相应措施,改善学生不合理的消费状况。

数据挖掘(Data Mining),就是从大量的、不完全的、模糊的、有噪声的、随机的数据中,提取隐含在其中的人们事先不知的,但又是潜在有用的信息和知识的过程。而聚类分析(Clustering Analysis)是数据挖掘的一种技术,它的输入是一组未标定的记录,此时输入的记录还没有被进行任何分类,其目的是根据一定的规则,合理划分记录集合,是研究“物以类聚”问题的一种多元统计方法。聚类分析实质是一种建立分类的方法,它能够将一批样本数据(或变量)按照它们在性质上的亲疏程度在没有先验知识的情况下自动进行分类,有效克服了过去人们主要靠经验和专业知识做定性分类而带有的主观性和任意性,特别是对于多因素、多指标的分类问题,定性分类更难以客观准确分类。本文对学生的消费分类就采用了聚类分析中的K-means算法。

1 K-means算法简介

1.1 K-means算法思想

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

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

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

E是数据文件中所有对象的平方误差的总和。其中k是初始聚类中心个数,x是空间中的点,表示给定的数据对象,xi是簇Ci的平均值[4]。

1.2 K-means算法流程和操作步骤

K-means算法流程为:

⑴ 输入:簇的数目k和包含n个数据文件。

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

操作步骤:

⑴ 为每个聚类确定一个初始聚类中心,这样就有K个初始聚类中心。

⑵ 将样本集中的样本按最小距离原则分配到最邻近聚类。

⑶ 使用每个聚类中的样本均值作为新的聚类中心。

⑷ 重复步骤⑵、⑶直到聚类中心不再变化。

⑸ 结束,得到K个聚类[5,6]。

2 实施步骤

2.1 问卷的发放和统计

本次调查问卷共发放100份。发放时,以运城学院计算机系、生科系、化学系、物理系、经管系、音乐系、美术系等学生为主,所有问卷发放基本做到文科、理科、工科、艺术类兼备,男女生按1:1的比例。问卷数据结果保存在EXCEL文件中。

2.2 数据预处理

K-means算法只能处理数值型的属性,遇到分类型的属性时要把它变为若干个取值为0和1的属性。因此对调查数据进行统计整理,得到矩阵X,它是一个100*9的矩阵,部分数据结果如下。

2.3 算法实现

K-means算法在Matlab中的主要实现代码如下:

function [cid,nr,centers]=kmeans(V1,k,nc)

[n,d]=size(V1);

cid=zeros(1,n); % 设置cid为分类结果显示矩阵

oldcid=ones(1,n);

nr=zeros(1,k);

maxgn=100;

iter=1;

while iter

for i=1:n %计算每个数据到聚类中心的距离

dist=sum((repmat(V1(i,:),k,1)-nc).^2,2);

[m,ind]=min(dist); %将当前聚类结果存入cid中

cid(i)=ind;

end

for i=1:k

%找到每一类的所有数据,计算它们的平均值,作为下次

计算的平均值

ind=find(cid==i);

nc(i,:)=mean(V1(ind,:));

%统计每一类的数据个数

nr(i)=length(ind);

end

iter=iter+1;

end

maxiter=2;

iter=1;

move=1;

while iter

move=0; %对所有的数据进行再次判断,需求最佳聚类结果

for i=1:n

dist=sum((repmat(V1(i,:),k,1)-nc).^2,2);

r=cid(i); %将当前数据属于的类给r

dadj=nr./(nr+1).*dist'; %计算调整后的距离

[m,ind]=min(dadj); %找到该数据距离哪个聚类中心最近

if ind~=r %如果不等则聚类中心移动

cid(i)=ind; %将新的聚类结果送给cid

ic=find(cid==ind); %重新计算调整当前类别的聚类中心

nc(ind,:)=mean(V1(ic,:));

move=1;

end

end

iter=iter+1;

end

centers=nc;

if move==0

disp('No points were moved after the initial

clustering procedure.')

else

disp('Some points were moved after the initial

clustering procedure.')

end

主函数如下(运行时调用上面函数即可):

k=4;

V1=x;

[n,d]=size(V1);

bn=round(n/k*rand); %第一个随机数在前1/K的范围内

nc=[V1(bn,:);V1(2*bn,:);V1(3*bn,:);V1(4*bn,:)] %初始聚类中心

[cid,nr,centers]=kmeans(V1,k,nc)

2.4 聚类结果

在程序中我们将数据结果聚为四类。聚为四类的学生所占比例,以及四类学生最终聚类结果如图1所示。

图1 最终聚类结果

100名学生各自归属的聚类中心如图2所示。

图2 各自归属聚类中心

3 聚类结果分析

根据上面聚类结果得到四类学生的各项消费状况,如表1所示。

表1 聚类结果分类表

[类别\&月生活费支出\&吃饭

支出\&聚会

支出\&购物

支出\&恋爱

支出\&话费

支出\&学习

支出\&娱乐

支出\&生活费节余\&簇1\&0.7357\&0.2375\&0.1143\&0.2107\&0.0464\&0.0436\&0.0789\&0.0889\&0.0214\&簇2\&0.7786\&0.2464\&0.1429\&0.2786\&0.0643\&0.0471\&0.0771\&0.2643\&0.0250\&簇3\&1.0350\&0.2763\&0.1588\&0.2675\&0.0838\&0.0537\&0.0843\&0.1968\&0.0338\&簇4\&1.4889\&0.2944\&0.1556\&0.2944\&0.0861\&0.0522\&0.0839\&0.1844\&0.0389\&]

⑴ 簇1占总实例的28%,他们的消费总支出在700元左右,该簇中女生相对较多;根据该簇里面各消费支出状况比较可以看出,吃饭支出和购物支出相对比较高。这部分学生的恋爱、话费支出、娱乐支出最低,基本上做到了在保证正常生活下不铺张浪费,生活较节俭。

⑵ 簇2占总实例的14%,他们的消费总支出在800元左右,其中男生、女生比例相当;根据该簇里面各支出状况比较可以看出,经常购买物品支出占据的份额最高,甚至超过基本的吃饭支出,说明这部分学生注重物质消费,而在这个消费领域女生支出远远大于男生,其次是娱乐支出,而在这个消费领域里面,男生又远远大于女生,他们在购物支出和娱乐支出方面的消费超过了基本的吃饭支出。

⑶ 簇3里占总实例的40%,他们的消费总支出在1000元左右,其中男生相对较多,女生较少。根据该簇中各支出状况比较可以看出,这部分学生吃饭支出占总支出比例最高。另外他们在购物方面花费也比较高,他们注重品牌,追逐时尚。另外,他们的聚会支出也有增无减。

⑷ 簇4占总实例的18%,其中男生相对较多;他们的消费总支出在1500元左右,该簇中学生吃饭和购物支出相等,其次是娱乐和聚会支出,他们各方面的消费都非常高,另外他们的恋爱支出超过了学习支出。

4 结束语

本文利用K-means算法对大学生的消费状况进行了分析,从分析结果中得到一些可以作为指导大学生理性消费依据的信息,达到了数据挖掘的效果。但对于K-means算法在该问题的应用还需进一步优化。

参考文献:

[1] 肖辉赞.高校大学生消费误区与思想政治教育的对策略论[J].社科纵横,2009.4:162-163

[2] 于影.对加强大学生消费文化教育的思考[J].长春工业大学学报,2006.3:48-50

[3] 张建萍,刘希玉.基于聚类分析的K-means算法研究及应用[J].计算机应用研究,2007.5:166-168

[4] 傅振南.聚类分析技术在招生宣传工作中的应用研究[J].福建教育学院学报,2009.2:113-115

[5] 徐勤鹏,杨志新,曾杨,黄志刚.聚类算法在设备故障诊断中的研究与应用[J].微计算机信息,2010.3:149-150

[6] 余嘉元.基于GA的K均值聚类分析在消费心理学中的应用[J].广西师范大学学报,2009.3:88-89

猜你喜欢

means算法聚类分析数据挖掘
探讨人工智能与数据挖掘发展趋势
基于并行计算的大数据挖掘在电网中的应用
农村居民家庭人均生活消费支出分析
基于省会城市经济发展程度的实证分析
基于聚类分析的互联网广告投放研究
基于K—Means聚类算法入侵检测系统研究
基于Weka的Apriori算法在原油产量预测中的应用
“县级供电企业生产经营统计一套”表辅助决策模式研究
基于HSI颜色空间的小麦粉精度自动识别研究
一种基于Hadoop的大数据挖掘云服务及应用