首页 > 编程语言 >K-medoids聚类算法

K-medoids聚类算法

时间:2023-10-23 18:12:00浏览次数:30  
标签:medoids 算法 medoid 聚类 Medoid PAM

发展:

们每次选簇的平均值作为新的中心,迭代直到簇中对象分布不再变化。因此一个具有很大极端值的对象会扭曲数据分布,造成算法对极端值敏感

在聚类分析中,异常值通常会引起问题,因为它们可能会被分配到一个独立的聚类,从而干扰正常的聚类结果。这可能导致聚类算法产生不合理或不稳定的结果

定义:

K-Medoids(中心点)算法不选用平均值,转而采用 簇中位置最中心的对象,即中心点(medoids) 作为参照点,算法步骤也和 K-means 类似,其实质上是对 K-means算法的改进和优化。

medoids怎么得到的?

K-medoids使用中心点到聚类内的点的距离之和来衡量聚类的质量

 

算法步骤

  1. 初始化:选择K个数据点作为初始的中心点,这些点可以从数据集中随机选择,或者采用一些启发式方法来选择。

  2. 分配:将每个数据点分配到距离其最近的中心点所代表的聚类。

  3. 选择Medoid:对于每个聚类,计算所有数据点到其中每一个点的距离之和。然后,选择代表该聚类的数据点,以最小化这个距离之和。这个代表点就是所谓的"medoid"。

  4. 更新中心点:将选择的medoids作为新的聚类中心。

  5. 重复步骤2和步骤4,直到聚类不再发生变化或者达到预定的迭代次数。

 

衍生算法PAM

PAM算法(Partitioning Around Medoids)是为了解决K-medoid算法中的初始Medoid选择问题而出现的。K-medoid算法是一种用于聚类分析的算法,其核心概念是将数据点分为K个不同的聚类,其中每个聚类由一个数据点(Medoid)代表。这个算法需要选择初始的Medoid,以便构建聚类。

PAM算法的主要作用是改进初始Medoid的选择,以便更好地寻找数据的内在结构和生成质量更高的聚类。具体来说,PAM算法通过以下方式解决K-medoid中的问题:

  1. 初始Medoid的选择:K-medoid算法最初的Medoid选择通常是随机的,这可能会导致算法收敛到次优的聚类解决方案。PAM算法引入了更智能的Medoid初始化方法,以选择更有代表性的初始Medoids,从而改进了算法的性能。

  2. Medoid的更新:K-medoid算法中,Medoids会随着算法的迭代而更新,PAM算法采用一种更有效的方法来选择新的Medoid,以减小聚类的代价(损失函数)。

 

标签:medoids,算法,medoid,聚类,Medoid,PAM
From: https://www.cnblogs.com/mxleader/p/17783126.html

相关文章

  • 算法笔记(1)线段树
    原发表于个人博客。前言线段树,是数据结构皇冠上的明珠(我编的)。它用途广泛,被一代代的oier应用,改进,优化。本文介绍了线段树的基础知识和各种拓展(包括权值线段树,可持久化线段树),各种优化方式(包括zkw线段树,动态开点,离散化),希望能帮到更多的oier。在学习线段树前,默认你应该学会一下......
  • 算法-共识算法
    一、Paxos    基础的Paxos算法包括如下三种:BasicPaxos、MultiPaxos、FastPaxos     Paxos将系统中的角色分为提议者(Proposer),决策者(Acceptor),和最终决策学习者(Learner):    【Proposer】:提出提案(Proposal)。Proposal信息包括提案编号(ProposalID)......
  • C++U4-贪心算法1
    本节学习目标:贪心算法的概念以及对应练习题 贪心算法概念贪心算法的特点 利用贪心算法的两个性质 练习1:最优装载问题  【本题算法分析】优先把重量小的物品放进去,在容量固定的情况下,装的物品量最多。因此采用重量最轻者先装的贪心选择策略,可从局部最优达到......
  • 文心一言 VS 讯飞星火 VS chatgpt (119)-- 算法导论10.3 4题
    四、用go语言,我们往往希望双向链表的所有元素在存储器中保持紧凑,例如,在多数组表示中占用前m个下标位置。(在页式虚拟存储的计算环境下,即为这种情况。)假设除指向链表本身的指针外没有其他指针指向该链表的元素,试说明如何实现过程ALLOCATE-OBIECT和FREE-OBJECT,使得该表示保持紧凑......
  • 图书推荐与管理系统Python+协同过滤推荐算法+Django网页界面
    一、介绍图书管理与推荐系统。使用Python作为主要开发语言。前端采用HTML、CSS、BootStrap等技术搭建界面结构,后端采用Django作为逻辑处理,通过Ajax等技术实现数据交互通信。在图书推荐方面使用经典的协同过滤算法作为推荐算法模块。主要功能有:角色分为普通用户和管理员普通用户可注......
  • 磁盘调度算法
    1、FCFS调度--先来先服务例如,I/O请求块的柱面的顺序如下:98,183,37,122,14,124,65,67他请求的话,是这样一个图示:就直接根据请求序列进行调度即可,但是吧,它看起来摆动幅度就很大,这样导致这种形式的调度的性能比较差;2、SSTF调度--最短寻道时间优先还是按照上面那个请求序列:98,183......
  • 图书推荐管理系统Python+Django网页界面+协同过滤推荐算法
    一、介绍图书管理与推荐系统。使用Python作为主要开发语言。前端采用HTML、CSS、BootStrap等技术搭建界面结构,后端采用Django作为逻辑处理,通过Ajax等技术实现数据交互通信。在图书推荐方面使用经典的协同过滤算法作为推荐算法模块。主要功能有:角色分为普通用户和管理员普通用......
  • 解读 | 快速精确的体素GICP三维点云配准算法
    原创|文BFT机器人01摘要本文提出了体素化广义迭代最近点(VGICP)算法,用于快速准确的三维点云配准。所提出的方法通过体素化扩展了广义迭代最近点(GICP)方法,以避免昂贵的最近邻搜索,同时保持其准确性。与从点位置计算体素分布的正态分布变换(NDT)相反,我们通过聚合体素中每个点的分布来估......
  • 10.23算法
    缺失数字给定一个包含[0,n] 中 n 个数的数组nums,找出[0,n]这个范围内没有出现在数组中的那个数。 示例1:输入:nums=[3,0,1]输出:2解释:n=3,因为有3个数字,所以所有的数字都在范围[0,3]内。2是丢失的数字,因为它没有出现在nums中。示例2:输入:nums=[0,1]输出:2......
  • 编程导航算法通关村第 1 关 | 链表
    1.前置知识补充内容引用:https://www.hello-algo.com/数据结构数据结构如同一副稳固而多样的框架。它为数据的有序组织提供了蓝图,使算法得以在此基础上生动起来。分类1.根据逻辑类型分类逻辑结构揭示了数据元素之间的逻辑关系。在数组和链表中,数据按照顺序依次排列,体现......