聚类笔记/sklearn笔记:Affinity Propagation亲和力传播

1 算法原理

1.1 基本思想

  • 将全部数据点都当作潜在的聚类中心(称之为 exemplar )
  • 然后数据点两两之间连线构成一个网络( 相似度矩阵 )
  • 再通过网络中各条边的消息( responsibility 和 availability )传递计算出各样本的聚类中心。

1.2 主要概念

Examplar聚类中心
similarity  S(i,j)

相似度

一般使用负的欧式距离,所以 S(i,j) 越大,表示两个点距离越近,相似度也就越高

Preference
  • 点 i 作为聚类中心的参考度(不能为0),取值为 S相似度 对角线的值
  • 此值越大,则为聚类中心的可能性就越大。
  • 如果没有被设置,则一般设置为 S相似度 值的中值

Responsibility 

吸引度

  • 点 k 适合作为数据点 i 的聚类中心的程度,记为 r(i,k) 。

Availability

归属度

  • 点 i 选择点 k 作为其聚类中心的适合程度,记为 a(i,k)
  • r和a都是第二个参数的点作为聚类中心

Damping factor

阻尼系数

主要是起收敛作用

1.3 算法流程

  • 计算相似度矩阵
    • 此时对角线上的值都是0,用某种方法(固定参数/相似度矩阵的中位值/最小值等)填充对角线的值
  • 开始时:构造一个全0的归属度矩阵a
  • 以下不断迭代更新
    • 更新每一个吸引度矩阵r中的单元格值
    • 更新归属度矩阵a
    • 使用阻尼系数更新归属度a和吸引度r
      • 使用阻尼系数(damping factor)来衰减吸引度和归属度信息,以免在更新的过程中出现数值振荡
      • 上面三个公式算出来的是等号右边的a和r
  • 获取聚类中心

1.4 举例

  • 假设有如下样本:共5个维度
  • 计算相似度矩阵
    • 相似度矩阵中每个单元是用两个样本对应值的差的平方和取负值得到的,对角线上的除外
    • 当聚类中心为对角线上的单元格选择了比较小的值,那么AP算法会快速收敛并得到少量的聚类中心,反之亦然。因此。我们使用表格中最小的值 -22 去填充相似度矩阵中的 0 对角线单元格。
  • 计算吸引度矩阵r
    • eg:计算 Bob对 Alice的 吸引度(Responsibility)【Alice视Bob为聚类中心的程度,r(Alice,Bob)
      • 这里套用上面的公式即为:用S(Bob,Alice)- max(a(Alice,others)+s(Alice,others))
        • 即 -7-(-6)=-1
  • 计算归属度矩阵a
      • 以alice为例,a(Alice,Alice)就是 所有大于0的 r(others,Alice)的和,即10+11=21
      • 以Alice支持Bob作为其聚类中心为例
      • a(Alice,Bob)=min(0,r(Bob,Bob)+0)=-15 【没有r(others,Bob)大于0】
  • 假设迭代一次就结束,那么我们计算评估矩阵
    • c=r+a
    • 一般将评估矩阵中取得最大值的一些点作为聚类中心
      • Alice,Bob 和 Cary 共同组成一个聚类簇
      • Doug 和 Edna 则组成了第二个聚类

1.5 主要缺点

  • Affinity Propagation的主要缺点是其复杂性。该算法的时间复杂度为O(N^2 \times I),其中 N 是样本数量,I 是直到收敛的迭代次数
  • 如果使用密集的相似性矩阵,则内存复杂度为 O(n^2),但如果使用稀疏的相似性矩阵则可以降低。
  • 这使得Affinity Propagation最适合小到中等大小的数据集

2 sklearn实现

class sklearn.cluster.AffinityPropagation(*, damping=0.5, max_iter=200, convergence_iter=15, copy=True, preference=None, affinity='euclidean', verbose=False, random_state=None)

2.1 主要参数


damping

float,默认为0.5

阻尼因子,取值范围是[0.5, 1.0)

max_iter

int,默认为200

最大迭代次数

convergence_iter

int,默认为15

估计的簇数量没有变化的迭代次数,达到该次数则停止收敛

preference

array-like形状为(n_samples,)或浮点数,默认为None

每个点的偏好 - 具有较大偏好值的点更有可能被选择为典型样本

如果没有传递偏好作为参数,它们将被设置为输入相似度的中值。

affinity

{‘euclidean’, ‘precomputed’},默认为‘euclidean’

使用哪种亲和力。目前支持‘precomputed’和欧几里得。‘euclidean’使用点之间的负平方欧几里得距离。

2.2 主要属性

from sklearn.cluster import AffinityPropagation
import numpy as npX = np.array([[1, 2], [1, 4], [1, 0],[10, 2], [10, 4], [10, 0]])ap=AffinityPropagation(damping=0.8).fit(X)
cluster_centers_indices_

簇中心的索引

cluster_centers_

簇中心

labels_

每个点的标签

affinity_matrix_

亲和力矩阵

n_iter_

收敛所需的迭代次数

 

参考内容:AP聚类算法(Affinity propagation) - 知乎 (zhihu.com)

常见聚类算法及使用--Affinity Propagation(AP)_af nity propagation 是什么意思-CSDN博客

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

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

相关文章

Java入门级基础教学(史上最详细的整合)

目录 一:基础语法 1.“Hello word” 2.Java的运行机制 3. Java基本语法 1.注释、标识符、关键字 2.数据类型(四类八种) 4.类型转换 1.自动转换 2.强制转换 5.常量和变量 1.常量 2.变量 3.变量的作用域 6.运算符 1.算数运算符 …

Android11编译第七弹:串口文件读写

问题:需要对SIM卡进行管理,支持APP切换SIM卡。此功能需要访问串口文件,并且对串口文件进行读写。APP操作串口文件/dev/ttyUSB1时,串口文件打开失败。 2023-11-23 10:59:44.092 14264-14264 MULTI_CARD_SerialHandle com.wellnkio…

一款专为POS机设计的芯片解决方案

一、基本概述 HCM8003设计用于磁条读卡器系统。它会从F/2F恢复时钟和数据信号磁产生的数据流头HCM8003将用于数据速率从200到15000比特每秒。 二、典型电路 内部数据的采集和跟踪这个范围是自动的。可以应用于POS机终端设备、磁卡门禁系统、身份识别等场合。 三、引脚定义 四…

《洛谷深入浅出基础篇》P4017最大食物链————拓扑排序

上链接:P4017 最大食物链计数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P4017 上题干: 题目背景 你知道食物链吗?Delia 生物考试的时候,数食物链条数的题目全都错了,因为她总是…

科技与艺术如何交织出“理想之家”?三星电视给出家电行业最优解答

作者 | 曾响铃 文 | 响铃说 理想的家,是什么样子? 关于这个问题,社交媒体上有形形色色的答案。很多人的梦中情屋是原木风、奶油色,点缀着绿意盎然的植物;还有一些人的Dream house是用全屋智能将科技感拉满,再配上打…

深兰科技“汉境”入选2023年湖北省人工智能十大优秀应用案例

11月18日,央视“专精特新制造强国”城市大会在湖北武汉召开。会上,正式发布了“湖北省工业互联网标识十大优秀应用案例”,由深兰科技(武汉)股份有限公司基于AIGC多模态融合大模型技术开发打造的江汉路步行街元宇宙场景应用——汉境&#xff0…

如何使用springboot服务端接口公网远程调试——实现HTTP服务监听

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、数据结构、算法模板 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 二. 内网穿透…

ubuntu安装cuda驱动报错及解决,屡试不爽

机器重启输入nvidia-smi提示如下错误,字面意思就是驱动和库不匹配 Failed to initialize NVML: Driver/library version mismatch 查看一下nvidia相关库 sudo dpkg --list | grep nvidia-* 将所有已安装库卸载 sudo apt purge nvidia-* 重新安装驱动 sudo ./NVIDIA-Linux-…

护法革命:CIMIVO+SOTUY洗前发膜让发丝重获“芯”生

爱美之心人皆有之,经常烫染或者是在太阳下暴晒,都会对发丝造成一定的伤害,一旦发丝受损,就会导致发芯内部角蛋白流失、化学键连接断裂,进而出现各种发质问题。为此,日本知名化妆品集团NABOCUL旗下发芯修护引领品牌ENNEO创新研发两大核心成分:CIMIVO、SOTUY,能够从根源修护发芯内…

无需公网IP,使用内网穿透实现公网访问本地OpenWRT管理界面

文章目录 1.openWRT安装cpolar2.配置远程访问地址3.固定公网地址 简单几步实现在公网环境下远程访问openWRT web 管理界面,使用cpolar内网穿透创建安全隧道映射openWRT web 界面面板443端口,无需公网IP,无需设置路由器。 1.openWRT安装cpola…

【SpringBoot】 This application has no explicit mapping for 解决方法

This application has no explicit mapping for 解决方法 This application has no explicit mapping for 解决方法一、背景二、原因三、解决方案方式一:方式二: 四、解决 This application has no explicit mapping for 解决方法 一、背景 在SpringBo…

【实战精选】掌握图像风格迁移:构建基于生成对抗网络的系统

1.研究背景与意义 随着计算机技术的不断发展,图像处理和计算机视觉领域取得了长足的进步。图像风格迁移是其中一个备受关注的研究方向,它可以将一幅图像的风格特征应用到另一幅图像上,从而创造出新的图像。这项技术具有广泛的应用前景&#…