人工智能AI常见的经典K-means聚类算法原理和工作过程

简介: 人工智能AI常见的经典K-means聚类算法原理和工作过程K-means聚类算法亦称K聚类均值算法,K-means算法是硬聚类算法中的一种。
人工智能AI常见的经典K-means聚类算法原理和工作过程

K-means聚类算法亦称K聚类均值算法,K-means算法是硬聚类算法中的一种。聚类算法是一类无监督机器学习。K-means算法是计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法。K-means算法是典型的基于距离的聚类算法,以距离作为相似性的评价标准,认为两个对象的距离越近,其相似度就越大。物以类聚,人以群分。K均值算法认为簇是由距离靠近的对象组成的,因此把获得距离相近且独立的簇作为最终求解目标。
聚类算法首先要解决相异度问题。即如何定量分析两个可比较元素的相异度。通俗的说法,相异度就是两个东西差别有多大。例如人与章鱼的相异度明显大于人与黑猩猩的相异度,这是人们可以直观感受到的。但是,计算机没有这种直观感受能力,必须对相异度在数学上进行定性、定量。
凡是能把现实世界的事务属性抽象成向量,就可用K-Means算法进行分类。K-Means算法核心思想:指定算法初始点(initial centroids),作为聚类的分类(cluster),重复迭代直至算法收敛为止。
数学坐标系中的二维坐标点(x,y),是一种向量,是一种数学抽象。现实世界中很多属性都可以抽象成向量。比如,人的年龄,喜好,偏好的商品等等,抽象成向量的目的是可以让计算机知道某两个属性间的距离。假定,18岁的人与24岁的人的距离要比离12岁的距离要近。鞋子离衣服这个商品的距离要比电脑要近等等。

K均值算法的弊端
K-Means主要有两个最重大的缺陷——都和初始值有关:
(一)K是先验给定的,但是K值的选定往往非常难以估计。对于大型数据集,到底应该划分几个类群,这在算法启动前是无法准确给出的。
(二)K均值算法需要初始随机种子点启动算法,这个随机种子点很关键,选取不同的随机种子点将得到完全不同的结果和算法执行效率。

以上是关于K-means算法的抽象描述,现在结合一个实际的数据集,运用K-means算法原理进行聚类工作过程。
假设现在有一个杂乱无序数据集D = { 2 , 8 , 3 , 9 },共四个数据。即D1=2,D2=8,D3=3,D4=9。要求对数据集D聚类成两个簇,即K=2。
因为数据量小,人类可以直观的把它们划分为两个簇:{2,3} 和 {8,9},但是机器却无法直观的感受和划分,必须依据一定的算法进行计算才能归类。现在开始用K-means算法进行聚类,下面是K-means算法执行的具体工作步骤和过程:
【准备阶段】选取质心。质心的选择可以任意选取,但尽量要合理。质心可由数据集D内部产生,也可以先验选取合理的值作为质心,我在这里选取两个值center1和center2分别作为两个簇cluster1和cluster2的质心:center1=2,center2=3。

【算法执行阶段】把数据集D全部数据(本例是4个)中的每一个,分别和质心center1和center2计算相异度。相异度小的归入质心所在的簇。以欧氏距离(Euclidean distance)做为相异度。相异度小则归入该簇。


开始算法:
(第一轮循环) 初始化的质心center1=2,center2=3
对于D1=2,距离center1的欧式距离=0,距离center2的欧式距离=1,0<1,故D1归入center1所在的簇:cluster1。此时cluster1={2},cluster2={}。
对于D2=8,距离center1的欧式距离=6,距离center2的欧式距离=5,6>5,故D2归入center2所在的簇:cluster2。此时cluster1={2},cluster2={8}。
对于D3=3,距离center1的欧式距离=1,距离center2的欧式距离=0,1>0,故D3归入center2所在的簇:cluster2。此时cluster1={2},cluster2={8,3}。
对于D4=9,距离center1的欧式距离=7,距离center2的欧式距离=6,7>6,故D4归入center2所在的簇:cluster2。此时cluster1={2},cluster2={8,3,9}。
经过第一轮循环,得到cluster1={2},cluster2={8,3,9}。

(第二轮循环) 经过第一轮循环处理后,得到cluster1={2},cluster2={8,3,9}。选取新质心,此时选择质心以簇内的算术平均值为质心。那么新的cluster1质心center1=2/1=2;cluster2质心center2=(8+3+9)/3=6.67(四舍五入)。于是此时center1=2,center2=6.67。
对于D1=2,距离center1的欧式距离=0,距离center2的欧式距离=4.47,0<4.47,故D1归入center1所在的簇:cluster1。此时cluster1={2},cluster2={}。
对于D2=8,距离center1的欧式距离=6,距离center2的欧式距离=1.33,6>1.33,故D2归入center2所在的簇:cluster2。此时cluster1={2},cluster2={8}。
对于D3=3,距离center1的欧式距离=1,距离center2的欧式距离=0,1<3.37,故D3归入center1所在的簇:cluster1。此时cluster1={2,3},cluster2={8}。
对于D4=9,距离center1的欧式距离=7,距离center2的欧式距离=2.33,7>2.33,故D4归入center2所在的簇:cluster2。此时cluster1={2,3},cluster2={8,9}。
经过第二轮循环,得到cluster1={2,3},cluster2={8,9}。

(第三轮循环) 经过第二轮循环处理后,得到cluster1={2,3},cluster2={8,9}。选取新质心,此时选择质心以簇内的算术平均值为质心。那么新的cluster1质心center1=(2+3)/2=2.5;cluster2质心center2=(8+9)/2=8.5。于是此时center1=2.5,center2=8.5。
对于D1=2,距离center1的欧式距离=0.5,距离center2的欧式距离=6.5,0.5<6.5,故D1归入center1所在的簇:cluster1。此时cluster1={2},cluster2={}。
对于D2=8,距离center1的欧式距离=5.5,距离center2的欧式距离=0.5,5.5>0.5,故D2归入center2所在的簇:cluster2。此时cluster1={2},cluster2={8}。
对于D3=3,距离center1的欧式距离=0.5,距离center2的欧式距离=5.5,0.5<5.5,故D3归入center1所在的簇:cluster1。此时cluster1={2,3},cluster2={8}。
对于D4=9,距离center1的欧式距离=6.5,距离center2的欧式距离=0.5,6.5>0.5,故D4归入center2所在的簇:cluster2。此时cluster1={2,3},cluster2={8,9}。
经过第三轮循环后,得到cluster1={2,3},cluster2={8,9}。

(第四轮循环) 经过第三轮循环处理后,得到cluster1={2,3},cluster2={8,9}。选取新质心,此时选择质心以簇内的算术平均值为质心。那么新的cluster1质心center1=(2+3)/2=2.5;cluster2质心center2=(8+9)/2=8.5。于是此时center1=2.5,center2=8.5。发现新选取的质心和上一轮即第三轮使用的质心相同,说明算法已经收敛,K-means算法聚类划分完成,计算结束。最终得到的两个簇为:
cluster1={2,3}
cluster2={8,9}
是理想的聚类结果。说明算法成功完成划分。
以上循环涉及到的算法数据可以简化为:

D={2,8,3,9},即D1=2 , D2=8 , D3=3 , D4=9

循环1:
质心center1=2 ,center2= 3
cluster1={2}, cluster2={8,3,9}

循环2:
质心center1=2/1=2 ,center2= (8+3+9)/3=6.67
cluster1={2,3}, cluster2={8,9}

循环3:
质心center1=(2+3)/2=2.5 ,center2= (8+9)/2=8.5
cluster1={2,3}, cluster2={8,9}

循环4:
质心center1=(2+3)/2=2.5 ,center2= (8+9)/2=8.5
质心和上一轮循环相同,故算法收敛,计算结束。

相关文章
|
21天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
221 55
|
2天前
|
机器学习/深度学习 算法 PyTorch
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
软演员-评论家算法(Soft Actor-Critic, SAC)是深度强化学习领域的重要进展,基于最大熵框架优化策略,在探索与利用之间实现动态平衡。SAC通过双Q网络设计和自适应温度参数,提升了训练稳定性和样本效率。本文详细解析了SAC的数学原理、网络架构及PyTorch实现,涵盖演员网络的动作采样与对数概率计算、评论家网络的Q值估计及其损失函数,并介绍了完整的SAC智能体实现流程。SAC在连续动作空间中表现出色,具有高样本效率和稳定的训练过程,适合实际应用场景。
20 7
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
|
6天前
|
机器学习/深度学习 人工智能 算法
Enhance-A-Video:上海 AI Lab 推出视频生成质量增强算法,显著提升 AI 视频生成的真实度和细节表现
Enhance-A-Video 是由上海人工智能实验室、新加坡国立大学和德克萨斯大学奥斯汀分校联合推出的视频生成质量增强算法,能够显著提升视频的对比度、清晰度和细节真实性。
27 8
Enhance-A-Video:上海 AI Lab 推出视频生成质量增强算法,显著提升 AI 视频生成的真实度和细节表现
|
11天前
|
算法 Java 数据库
理解CAS算法原理
CAS(Compare and Swap,比较并交换)是一种无锁算法,用于实现多线程环境下的原子操作。它通过比较内存中的值与预期值是否相同来决定是否进行更新。JDK 5引入了基于CAS的乐观锁机制,替代了传统的synchronized独占锁,提升了并发性能。然而,CAS存在ABA问题、循环时间长开销大和只能保证单个共享变量原子性等缺点。为解决这些问题,可以使用版本号机制、合并多个变量或引入pause指令优化CPU执行效率。CAS广泛应用于JDK的原子类中,如AtomicInteger.incrementAndGet(),利用底层Unsafe库实现高效的无锁自增操作。
理解CAS算法原理
|
28天前
|
机器学习/深度学习 缓存 人工智能
【AI系统】QNNPack 算法
QNNPACK是Marat Dukhan开发的量化神经网络计算加速库,专为移动端优化,性能卓越。本文介绍QNNPACK的实现,包括间接卷积算法、内存重排和间接缓冲区等关键技术,有效解决了传统Im2Col+GEMM方法存在的空间消耗大、缓存效率低等问题,显著提升了量化神经网络的计算效率。
38 6
【AI系统】QNNPack 算法
|
28天前
|
存储 人工智能 缓存
【AI系统】Im2Col 算法
Caffe 作为早期的 AI 框架,采用 Im2Col 方法优化卷积计算。Im2Col 将卷积操作转换为矩阵乘法,通过将输入数据重排为连续内存中的矩阵,减少内存访问次数,提高计算效率。该方法首先将输入图像转换为矩阵,然后利用 GEMM 库加速计算,最后将结果转换回原格式。这种方式显著提升了卷积计算的速度,尤其适用于通道数较多的卷积层。
50 5
【AI系统】Im2Col 算法
|
28天前
|
存储 机器学习/深度学习 人工智能
【AI系统】Winograd 算法
本文详细介绍Winograd优化算法,该算法通过增加加法操作来减少乘法操作,从而加速卷积计算。文章首先回顾Im2Col技术和空间组合优化,然后深入讲解Winograd算法原理及其在一维和二维卷积中的应用,最后讨论算法的局限性和实现步骤。Winograd算法在特定卷积参数下表现优异,但其应用范围受限。
33 2
【AI系统】Winograd 算法
|
17天前
|
人工智能 算法
AI+脱口秀,笑点能靠算法创造吗
脱口秀是一种通过幽默诙谐的语言、夸张的表情与动作引发观众笑声的表演艺术。每位演员独具风格,内容涵盖个人情感、家庭琐事及社会热点。尽管我尝试用AI生成脱口秀段子,但AI缺乏真实的情感共鸣和即兴创作能力,生成的内容显得不够自然生动,难以触及人心深处的笑点。例如,AI生成的段子虽然流畅,却少了那份不期而遇的惊喜和激情,无法真正打动观众。 简介:脱口秀是通过幽默语言和夸张表演引发笑声的艺术形式,AI生成的段子虽流畅但缺乏情感共鸣和即兴创作力,难以达到真人表演的效果。
|
1月前
|
存储 人工智能 缓存
【AI系统】布局转换原理与算法
数据布局转换技术通过优化内存中数据的排布,提升程序执行效率,特别是对于缓存性能的影响显著。本文介绍了数据在内存中的排布方式,包括内存对齐、大小端存储等概念,并详细探讨了张量数据在内存中的排布,如行优先与列优先排布,以及在深度学习中常见的NCHW与NHWC两种数据布局方式。这些布局方式的选择直接影响到程序的性能,尤其是在GPU和CPU上的表现。此外,还讨论了连续与非连续张量的概念及其对性能的影响。
52 3
|
1月前
|
机器学习/深度学习 人工智能 算法
【AI系统】内存分配算法
本文探讨了AI编译器前端优化中的内存分配问题,涵盖模型与硬件内存的发展、内存划分及其优化算法。文章首先分析了神经网络模型对NPU内存需求的增长趋势,随后详细介绍了静态与动态内存的概念及其实现方式,最后重点讨论了几种节省内存的算法,如空间换内存、计算换内存、模型压缩和内存复用等,旨在提高内存使用效率,减少碎片化,提升模型训练和推理的性能。
54 1