[发明专利]一种自学习属性权重的K-means聚类方法在审
申请号: | 201910615891.4 | 申请日: | 2019-07-09 |
公开(公告)号: | CN110378402A | 公开(公告)日: | 2019-10-25 |
发明(设计)人: | 刘博;王慧娜;李星睿;黄萌萌 | 申请(专利权)人: | 北京工业大学 |
主分类号: | G06K9/62 | 分类号: | G06K9/62 |
代理公司: | 北京思海天达知识产权代理有限公司 11203 | 代理人: | 刘萍 |
地址: | 100124 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 权重 聚类质心 样本 聚类结果 聚类算法 循环执行 样本集 自学习 质心 相乘 机器学习领域 差异矩阵 聚类模型 距离最近 欧式距离 剩余数据 数据集聚 次循环 贡献率 数据集 聚类 匹配 更新 创建 | ||
1.一种自学习属性权重的K-means聚类方法,其特征在于,包含以下步骤:
步骤1:计算数据集对应的差异矩阵,根据数据集的差异矩阵计算各个样本的样本密度;
步骤2:通过计算各个样本的邻域密度,得到k-1个密度最大的样本集,以这些样本集的均值作为聚类质心,得到k-1个聚类质心,然后取剩余数据的均值作为第k聚类质心,其中k为聚类个数,k取0<k<n内的整数,n为样本总数,在第一次循环时令k=2;
步骤3:为每个质心创建权重列表;
步骤4:将各个样本的属性与每个聚类质心的权重列表对应相乘,然后计算每个样本到各个质心的欧式距离,并将各个样本匹配到距离最近的质心所在类内;
步骤5:计算各个类内的各个属性对聚类的贡献率,然后根据贡献率更新各个类内的属性权重列表;
步骤6:计算聚类模型评分;
步骤7:循环步骤1至步骤6,取模型评分不变时的聚类结果作为将数据集聚为k个类的聚类结果;
步骤8:k加1,循环步骤1至步骤7,直到聚类模型评分不变。
2.根据权利要求1所述的方法,其特征具体包括以下步骤
(1)选择聚类质心阶段
1.相关定义
1)将n个m维待聚类对象组成的数据集D表示成如下形式:
D={xl|l=1,2,...,n}
xl={xl1,xl2,...,xlm}
其中n为样本总数,样本xl由m个属性共同表示;
2)差异矩阵
差异矩阵用于描述数据对象集合D(包括n个样本)中任意两点之间的相似程度,表示方式是n*n的矩阵,如下所示:
在以上矩阵中,d(i,j)描述的是数据对象集合中样本i与样本j的差异度,在此使用数据点之间的欧式距离来度量样本之间的差异度;d(i,j)=d(j,i)且d(i,j)>0,样本i和样本j的差异越大,d(i,j)的值越大,反之亦然;
样本i与样本j之间的欧式距离计算公式如下:
其中,m为样本属性的数量;
3)设将上述n个样本所组成的数据集D划分为k个聚类,聚类质心为C={c1,c2,...,ck}
各个样本的密度计算公式为:
density(i)={j∈D|d(i,j)≤r} (2)
在上述公式中,d(i,j)表示样本i和样本j之间的欧式距离,density(i)表示样本i的密度,即数据集D中到样本i的欧式距离小于等于半径r的样本的数目;
差异矩阵反映的是样本之间的差异度,差异越大说明样本被划分为同一个类的可能性越小;因此通过样本间的最大差异值得到质心搜索区域圆半径,计算公式为:
其中,max_d(i,j)表示差异矩阵中d(i,j)的最大值,分母取k+1是为了防止r取值过大,导致圆与圆之间有重叠;
2.具体步骤如下
输入:n*m规模的数据集(n表示样本数量,m表示数据集的属性数量)
输出:聚类的k个质心:C={c1,c2,...,ck}
步骤1:根据公式(1)计算数据集的差异矩阵;
步骤2:从差异矩阵中得到max_d(i,j),并根据公式(3),计算出质心搜索半径r;
步骤3:根据公式(2)计算出各个样本的密度,得到最大密度所对应的区域圆内所有样本组成数据集F;
步骤4:计算数据集F内样本的均值,并以此作为聚类质心;
步骤5:在数据集中删除数据集F内的所有样本后得到新的数据集;
步骤6:将步骤5所得到的新的数据集循环执行k-1次步骤1至步骤4,得到k-1个质心;
步骤7:以上步骤执行完成后,将剩余数据作为第k个簇内的样本数据,将剩余数据的均值作为第k个簇的质心;
(2)聚类阶段
1.相关定义
1)各个样本到各个聚类质心的距离计算公式
第t个样本到第i质心的距离公式如下:
其中,m为样本属性的数量,xtj表示第t个样本数据的第j个属性值,cij表示第i个质心的第j个属性值;
2)第j个属性对第i个类的贡献率qj计算公式
设聚类完成后,每个类中的样本个数为:n1,n2,...,ni,...,nk,0<i<k;设第i个类内的样本为由于聚类是根据样本间相异度进行的,所以认为离散程度越大的属性对聚类的贡献越大;因此采用属性标来确定属性对聚类的贡献;第j个属性对第i个类的贡献率为:
其中,δj表示第j个属性在第i个类内的标准差,m为样本属性数量,ni表示第i个类内的样本数量,xtj表示第t个样本数据的第j个属性值;0<j<m表示在第i个类内第j个属性的均值;
3)第j个属性对类间距离的贡献率pj计算公式如下
在第j个属性上的所有类的类间距离之和为:
其中,k为聚类个数,0<i<k为第i个类内的数据在第j维上的均值,ni表示第i个类内样本数量,xlj表示第l个样本数据的第j个属性值;0<j<m为数据集在第j维上的均值,n表示全部数据集的数量;
则第j个属性对类间距离的贡献率为:
4)聚类模型得分计算公式
所有类的类内距离计算公式如下:
其中,m为属性数量,k为聚类个数,ni表示第i个类内样本数量;xit表示第i个类内第t个样本数据,μi为第i个类内数据的均值;
类间距离计算公式:
其中,k为聚类个数,μi表示第i个类样本数据的均值,μ表示全部数据集的均值;
模型得分:
一般来说,聚类算法所追求的最优结果是:类内紧凑,类间离散;对于上文所述的模型来说,in_clu越小意味着类内紧凑,out_clu取值越大意味着类间离散;因此通过二者比值定量的衡量权重对聚类结果的贡献,即贡献越大score取值越大;贡献越小score取值越小;
5)权重更新计算公式
设第一次循环后第i个类内各个属性所对应的权重为:Wi1=[w1,w2,w3,......,wm],m为属性数量,第二次循环中第i个类内各个属性对聚类的贡献率为v=[v1,v2,v3,......,vm],则第二次循环结束后第i个类内各个属性的权重计算公式如下:
Wi2=Wi1×v (11)
2.聚类过程
输入:聚类质心C={c1,c2,...,ck},n*m规模的数据集
输出:聚类个数为k的聚类结果和相应的权重列表
步骤1:为每个质心创建权重列表,权重列表初始化为1;
步骤2:将各个样本的属性与每个聚类质心的权重列表对应相乘,得到加权后的各属性数据;由于距离越小,二者相似度越大,因此通过公式(4)计算每个样本到各个质心的距离,并将各个样本匹配到距离最近的质心所在类内;
步骤3:通过公式(5)计算出各个属性对本类的贡献率qj,其中0<j<m,m为属性数量;通过公式(6)、(7)得到各个属性对类间距离的贡献率pj,最后得到各个属性对聚类的贡献率vj=qj×pj;
步骤4:根据公式(8)、(9)、(10)得到聚类模型得分;
步骤5:循环执行步骤1至3,其中步骤1内不执行初始化操作,若第二次循环模型评分score大于第一次循环所得评分,则根据公式(11)更新各个聚类质心的权重列表,以及score值,否则,不更新二者;
步骤6:迭代循环步骤1至5直至score不发生变化。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京工业大学,未经北京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910615891.4/1.html,转载请声明来源钻瓜专利网。