k-Means——经典聚类算法实验(Matlab实现)

聚类算法—k-Means实验

k-平均(k-Means),也被称为k-均值,是一种得到最广泛使用的聚类算法[1]. k-Means算法以k为参数,把n个对象分为k个簇,使得簇内具有较高的相似度。

实验目的

  1. 了解常用聚类算法及其优缺点;
  2. 掌握k-Means聚类算法对数据进行聚类分析的基本原理和划分方法;
  3. 利用k-Means聚类算法对数据集进行聚类实验;
  4. 熟悉使用Matlab进行算法的实现。

聚类算法的主要思想

主要思想

给定一个有n个对象的数据集,划分聚类技术将构造数据k个划分,每一个划分就代表一个簇,k≤nk\le nkn. 每一个簇至少包含一个对象,每一个对象属于且仅属于一个簇。

对于给定的k,算法首先给出一个初始的划分方法,以后通过反复迭代的方法改变划分,使得每一次改进之后的划分较前一次更好。

评价函数

更好的标准是:同一簇中的对象越接近越好,而不同簇中的对象越远越好,目标是最小化所有对象与其簇中心之间相异度之和。

各个簇应该是紧凑的,各个簇间的距离应当尽可能远。因此,用聚类C的类内差异(Within cluster variation)w(C)w(C)w(C) 和类间差异(Between cluster variation)b(C)b(C)b(C) 分别衡量上述两要求。

w(C)=∑i=1kw(Ci)=∑i=1k∑x∈Cid(x,xi‾)2w(C)=\sum_{i=1}^{k}w(C_i)=\sum_{i=1}^{k}\sum_{x\in C_i}d(x,\overline{x_i})^2w(C)=i=1kw(Ci)=i=1kxCid(x,xi)2

b(C)=∑1≤j≤i≤kd(xj‾,xi‾)2b(C)=\sum_{1\le j\le i\le k}d(\overline{x_j},\overline{x_i})^2b(C)=1jikd(xj,xi)2

其中,xi‾\overline{x_i}xi 是类 CiC_iCi 的聚类中心,d 为距离函数。聚类C的总体质量可以被定义为 b(C)w(C)\frac{b(C)}{w(C)}w(C)b(C).

k-Means算法原理

k-Means算法用类内均值作为聚类中心、用欧氏距离定义d,并使上述 w(C)w(C)w(C) 最小化。

优化目标

arg⁡max⁡C∑i=1k∑x∈Ci∥x−xi‾∥2\mathop{\arg\max}\limits_{C} \sum_{i=1}^k \sum_{x\in C_i} \parallel x-\overline{x_i}\parallel ^2Cargmaxi=1kxCixxi2

表示选取合适的C使得所有对象的平方误差总和最小,其中x是空间中的点,xi‾\overline{x_i}xi 是簇 CiC_iCi 的平均值,这个优化目标可以保证生成的结果簇尽可能的紧凑和独立。

算法描述

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

k-Means算法分析

优点

  • 对处理大数据集,该算法是相对可伸缩和高效率的,时间复杂度约为 O(k⋅n⋅t)\mathcal{O} (k\cdot n\cdot t)O(knt),t是迭代次数。k-Means算法经常以局部最优结束;
  • 算法尝试找出使平方误差最小的k个划分,当结果簇是密集的,而簇与簇之间区别明显时,k-Means的效果较好。

缺点

  • 若涉及离散属性,其平均值无法定义,无法使用k-Means聚类;
  • 必须事先给出参数k,k的选取对聚类质量和效果影响很大;
  • k-Means算法不适合发现非凸面形状的簇,或者大小差别很大的簇。而且对于“噪声”和孤立点数据是敏感的,少量的该类数据对平均值产生较大影响。

算法改进

k-模算法:将k-Means的应用扩大到离散数据。k-原型可以对离散与数值属性两种混合的数据进行聚类,在k-原型中定义了一个对数值与离散属性都计算的相异性度量标准。[2]

k-中心点算法:解决了k-Means算法对孤立点敏感的问题,不采用簇中的平均值作为参照点,而使用簇中位置最靠近中心的对象作为参照点。基本思路是反复用非代表对象来替代代表对象,以改进聚类的质量。PAM(Partition Around Medoid)是最早提出的k-中心点算法之一。[3]

代码

clc;clear;
k = 2;
data = [1 1; 2 1; 1 2; 2 2; 4 3; 5 3; 4 4; 5 4;];
eps = 0.1;
epochs = 100;
[n,~] = size(data);
% initialize the last column of data as classes
data(:,end+1) = 0;
% assign initial value for means
rng('default') % For reproducibility
clusters = data(randperm(n,k),1:end-1);
% initialize E
E = inf; 
% save means steps
cnt = 0; % counter
cls_steps = [];
while epochs>0% to save means stepscnt = cnt + 1;cT = clusters';cls_steps(cnt,:) = cT(:)';% assign each xj to the cluster which has the closet meanD = pdist2(data(:,1:end-1),clusters);[~,I] = min(D');data(:,end) = I';% calculate new means for each classesclusters = grpstats(data(:,1:end-1),data(:,end));% calculate criterion function ElastE = E;E = .0;for i=1:nE = E + pdist2(data(i,1:end-1),clusters(data(i,end),:));endif lastE-E<=epsbreakendepochs = epochs - 1;
end

Matlab2021a

结果验证

结果数据

在data.csv数据集上运行上述代码,得到结果如下:

Clusters: 聚类中心

x1x2
1.51.5
4.53.5

E = 5.65685424949238

cls_steps: 聚类中心移动记录

c1x1c1x2c2x1c2x2
4353
2.333333332.1666666753.5
1.51.54.53.5

结果图像

kMeans

其中,蓝色/黄色实心点表示不同分类下的数据点,空心橙色/紫色圆环表示k-Means聚类中心的变化情况。

附录(data.csv)

IndexAttr1Attr2
111
221
312
422
543
653
744
854

参考

  1. 毛国君、段立娟, 《数据挖掘原理与算法》, 清华大学出版社, 2016-01-01, ISBN:9787302415817
  2. Ramasubramanian P , Kumar S P , Anandam D . Experimental work on Data Clustering using Enhanced Random KMode Algorithm. 2020.
  3. Bhat A . K-Medoids Clustering Using Partitioning Around Medoids for Performing Face Recognition. 2014.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484655.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这5个数学猜想最早在30年前提出,如今AI证明它们都错了

来源&#xff1a;AI科技评论编译&#xff1a;琰琰编辑&#xff1a;青暮近日&#xff0c;以色列特拉维夫大学研究团队在预印论文库提交了一篇名为“Constructions in combinatorics via neural networks“的论文&#xff0c;在这篇论文中&#xff0c;研究人员通过机器学习算法证…

Java AQS 核心数据结构-CLH 锁及优化

Java AQS 核心数据结构-CLH 锁 什么是CLH锁 CLH 锁是对自旋锁的一种改进&#xff0c;有效的解决了以上的两个缺点。 第一个是锁饥饿问题。在锁竞争激烈的情况下&#xff0c;可能存在一个线程一直被其他线程”插队“而一直获取不到锁的情况。第二是性能问题。在实际的多处理上…

M/M/m排队模型 (单队列多服务台并联服务模型)数学建模: 基于生灭过程的理论计算和基于事件推进的Matlab模拟仿真思路

M/M/m排队模型 (单队列多服务台并联服务模型) 数学建模: 基于生灭过程的理论计算和基于事件推进的Matlab模拟仿真思路 原创文章&#xff0c;转载文章请注明出处&#xff1a;©️Sylvan Ding &#x1f389;&#x1f389;&#x1f389; 摘要 本文研究M/M/m单队列多服务台并…

用物理学来为生命技术及制度的演化找出规律-读《为什么世界不会失控》

来源&#xff1a;混沌巡洋舰物理学的规律是最底层的最永恒的&#xff0c;但能够对抗变化&#xff0c;维持自身结构的活系统&#xff0c;其规律则是最丰富的。“The physics of life”这本书&#xff0c;则是用能量的产生和耗散为视角&#xff0c;解释一切活系统&#xff0c;包括…

collection 多态 会自动转型为子类 继承多态需要显示转型

转载于:https://www.cnblogs.com/classmethond/p/10057670.html

深入地下,实地探访!不用人挖煤的智能煤矿长什么样?

来源&#xff1a;脑极体未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城市&#xff09;云脑研究计划&#xff0c;构建互联网&#xff08;城市&#xff09;云脑技术和企业图谱&a…

这些行业,将率先落地AI芯片 | 星前沿

来源&#xff1a;联想之星广义上&#xff0c;所有面向AI应用的芯片都可以称为AI芯片。目前一般认为是针对AI算法做了特殊加速设计的芯片。现阶段&#xff0c;这些人工智能算法一般以深度学习算法为主&#xff0c;也可以包括其他浅层机器学习算法。人工智能芯片分类一般有按技术…

[NOI2007]社交网络

题目描述 在社交网络&#xff08;social network&#xff09;的研究中&#xff0c;我们常常使用图论概念去解释一些社会现象。不妨看这样的一个问题。在一个社交圈子里有n个人&#xff0c;人与人之间有不同程度的关系。我 们将这个关系网络对应到一个n个结点的无向图上&#xf…

vueJs的简单入门以及基础语法

vue的api vue官网API 1基础语法 1-1基本数据绑定 <div id"app">{{ msg }} </div> //script new Vue({el:"#app",//代表vue的范围data:{msg:hello Vue //数据} }) 在这个例子中我们可以进行赋值 var app new Vue(...); app.msg 初探vue; //那…

应用数学的强大威力

来源&#xff1a;数学中国 应用数学思想是科研当中非常重要的一种思维方式以及研究方法。今天我们就借助戴世强教授的三篇有关应用数学的文章来详细了解一下这些问题&#xff1a;什么是“应用数学思维”&#xff1f;我们如何在研究中使用应用数学思维&#xff1f;应用数学思维…

正则化实现降噪,分别使用最小二乘、定步长梯度下降和回溯法的梯度下降求解最优解

正则化实现降噪&#xff0c;分别使用最小二乘、定步长梯度下降和回溯法的梯度下降求解最优解 原创文章&#xff01;转载需注明来源&#xff1a;©️ Sylvan Ding’s Blog ❤️ 实验目的 参考 INTRODUCTION TO NONELINEAR OPTIMIZATION. Amir Beck. 2014 的 3.4 Denoising …

双向 RNN

1.基本理论 双向 RNN 结合时间上从序列起点开始移动的 RNN 和另一个时间上从序列末尾开始移动的 RNN 2.逻辑图 其中 h (t) 代表通过时间向前移动的子 RNN 的状态&#xff0c;g (t) 代表通过时间向后移动的子 RNN 的状态 允许输出单元 o (t) 能够计算同时依赖于过去和未来且对时…

Hadoop伪分布式配置和搭建,hadoop单机安装,wordcount实例测试,hadoop安装java目录怎么找,问题及问题解决方法

Hadoop伪分布式配置和搭建&#xff0c;hadoop单机安装&#xff0c;wordcount实例测试&#xff0c;hadoop安装java目录怎么找&#xff0c;问题及问题解决方法 环境说明 系统&#xff1a;ubuntu18.04 主机名&#xff1a;test1 用户名&#xff1a;sylvan hadoop单机安装 换源操作…

AI时代竟有智能化鸿沟,具备哪些条件才能跨过?

来源&#xff1a;CSDN移动互联网“早古”时期&#xff0c;普通人因为收入差距问题而无法做到人手一部智能手机&#xff0c;从而导致数字鸿沟。同样&#xff0c;在当前这个AI&#xff0c;也就是人工智能扮演越来越关键作用的时代&#xff0c;企业也站在了类似的抉择交接线上——…

[js] 渲染树构建、布局及绘制

渲染树构建、布局及绘制 转载于:https://www.cnblogs.com/iiiiiher/p/10065345.html

INTRODUCTION TO NONELINEAR OPTIMIZATION Excise 5.2 Freudenstein and Roth Test Function

Amir Beck’s INTRODUCTION TO NONELINEAR OPTIMIZATION Theory, Algorithms, and Applications with MATLAB Excise 5.2 INTRODUCTION TO NONELINEAR OPTIMIZATION Theory, Algorithms, and Applications with MATLAB. Amir Beck. 2014 本文主要涉及题目(ii)的MATLAB部分&…

石正丽/周鹏团队发表冠状病毒新研究,进一步证明新冠非实验室泄漏

来源&#xff1a;中国生物技术网 新冠病毒SARS-CoV-2造成了近一个世纪以来最具破坏性的大流行COVID-19&#xff0c;而其中尚未解决的科学问题之一是这种病毒的自然来源。近日&#xff0c;来自中科院武汉病毒所、中国科学院大学的研究人员在预印本网站BioRxiv上提交了一篇论文&…

L1正则化降噪,对偶函数的构造,求解含L1正则项的优化问题,梯度投影法

L1正则化降噪&#xff0c;对偶函数的构造&#xff0c;求解含L1正则项的优化问题&#xff0c;梯度投影法 本文主要实现L1正则化降噪&#xff0c;L2 正则化降噪的文章在&#xff1a; https://blog.csdn.net/IYXUAN/article/details/121565229 原创文章&#xff01;转载需注明来源…

HBase之Table.put客户端流程(续)

上篇博文中已经谈到&#xff0c;有两个流程没有讲到。一个是MetaTableAccessor.getRegionLocations&#xff0c;另外一个是ConnectionImplementation.cacheLocation。这一节&#xff0c;就让我们单独来介绍这两个流程。首先让我们来到MetaTableAccessor.getRegionLocations。1.…

普华永道:AI规模化应用,基础知识先行

来源&#xff1a;Forbes作者&#xff1a;Cindy Gordon编译&#xff1a;科技行者人工智能&#xff08;AI&#xff09;是正在改变很多行业的游戏规则。据统计&#xff0c;人工智能有望为2030年的全球经济贡献高达15.7万亿美元&#xff0c;比中国和印度目前的产出之和还要多。其中…