聚類筆記/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.pswp.cn/news/166161.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166161.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166161.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java Excel Poi 單元格內置的數據格式

位置 //在類 org.apache.poi.ss.usermodel.BuiltinFormats 中的私有成員變量_formats中 private static final String[] _formats new String[]{"General", "0", "0.00", "#,##0", "#,##0.00", "\"$\"#,##…

【ARM CoreLink 系列 3.2 -- CCI-400,CCI-500, CCI-550 差異】

文章目錄 CCI-400 和 CCI-500 差異ARM CCI-400ARM CCI-500ARM CCI-550CCI-400 和 CCI-500 差異 ARM的 CCI(Cache Coherent Interconnect)系列產品是用于多核處理器之間的高性能緩存一致性互連。CCI-400 和 CCI-500 是該系列中的兩種設計,它們旨在允許多個處理器核心和其他資…

TopNet-(CVPR2023)前背景圖像合成

文章目錄 摘要引言算法架構結構損失函數 實驗數據集評估SOTA比較模型是否過擬合到修復區域泛化到真實圖片消融實驗 討論及結論限制 參考文獻 摘要 作者調研自動放置目標到背景進行圖像合成的問題。提供背景圖、分割的目標,訓練模型預測合理放置信息(位置…

JavaScript文檔加載和文檔準備的區別

你可能已經聽說過JavaScript中的“文檔加載”和“文檔準備”這兩個術語。雖然它們聽起來很相似,但它們實際上有一些重要的區別。在本文中,我們將深入探討這兩個概念的區別,以及它們在實際編碼中的應用。 引言 在開始討論JS文檔加載和文檔準備…

批量添加PPT備注

我一直都覺得,用python高效辦公,是件沒必要的事。。。 但直到最近寫課做PPT,做了80多頁PPT,要把每一頁PPT的備注粘貼進去時 我覺得,有什么關系呢,一頁一頁粘 但是粘到5頁,我感覺ctlc\v頻率有點兒…

程序員接單,寶藏好平臺抄底攻略清單!五大平臺精選。

前陣子“雙十一”購物節狂歡促銷,各種好貨清單席卷而來。 程序員購不購物我不知道,但是這個兼職、接單清單相信你一定用得著。 搜羅海量信息,整理大量數據與評價,挖出了5個寶藏平臺,絕對個個精選,保證量大…

圖片轉換成pdf格式的軟件ABBYY16

ABBYY PDF這款提供多種圖像處理選項,可提高源圖像的質量,便于準確地識別光學字符。我們掃描紙質文檔或從圖像文件創建 PDF 時,務必選擇合適的圖像處理選項。而在ABBYY PDF 中包含下列圖像處理選項。 識別文本 — 選擇此選項會將文本層放在圖…

(保姆級教程)Mysql中索引、觸發器、存儲過程、存儲函數的概念、作用,以及如何使用索引、存儲過程,代碼操作演示

講解 MySQL 中索引、觸發器、存儲過程、存儲函數的使用 文章目錄 1. 索引1.1 索引的分類1.2 索引的設計原則1.3 如何使用(create index) 2. 觸發器2.1 觸發器的分類2.2 如何使用(create trigger) 3. 存儲過程3.1 如何使用&#xf…

SpringBoot調用HTTP接口

1. RestTemplate 首先引入依賴 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> 編寫配置類 Configuration public class RestTemplateConfig {Beanpublic Re…

Git拉取遠程倉庫代碼覆蓋本地,也就是放棄本地修改

git撤銷本地 、強制拉取遠程代碼覆蓋本地-CSDN博客 說的最多的是用&#xff1a;git fetch --all 但是親測是無效的&#xff0c;并不能將本地不存在但遠程倉庫存在的文件取回來。就是git fetch 項目地址&#xff0c;也是沒用的&#xff01; 就算是重新pull整個項目&#xff0…

Django中間件

目錄 一.介紹 1.什么是Django中間件 2.作用&#xff1a; 3.示例 二.Django請求生命周期流程圖 三.Django中間件是Django的門戶 四.中間件方法 1.必須掌握的中間件方法 &#xff08;1&#xff09;process_request: 示例&#xff1a; 2.需要了解的中間件方法 &#x…

新生兒散光:原因、科普和注意事項

引言&#xff1a; 散光是一種常見的眼睛問題&#xff0c;雖然在新生兒時期相對較少見&#xff0c;但了解其原因、科普相關知識&#xff0c;并提供一些建議的注意事項&#xff0c;對于嬰兒的視力健康至關重要。本文將深入探討新生兒散光的原因、相關科普知識&#xff0c;并為父…

大廠前沿技術導航

百度Geek說 - 知乎 騰訊技術 - 知乎 美團技術團隊

YaRN方法:無需微調,高效擴展語言模型上下文窗口/螞蟻集團與浙大發布原生安全框架v1.0,引領企業網絡安全新時代 |魔法半周報

我有魔法?為你劈開信息大海? 高效獲取AIGC的熱門事件&#x1f525;&#xff0c;更新AIGC的最新動態&#xff0c;生成相應的魔法簡報&#xff0c;節省閱讀時間&#x1f47b; &#x1f525;資訊預覽 YaRN方法&#xff1a;無需微調&#xff0c;高效擴展語言模型上下文窗口 螞蟻…

2023 hnust 湖南科技大學 信息安全管理課程 期中考試 復習資料

前言 ※老師沒畫重點的補充內容★往年試卷中多次出現或老師提過的&#xff0c;很可能考該筆記是奔著及格線去的&#xff0c;不是奔著90由于沒有聽過課&#xff0c;部分知識點不一定全&#xff0c;答案不一定完全正確 題型 試卷有很多題是原題 判斷題&#xff08;PPT&#xff…

python-冒泡排序

冒泡排序 &#xff08;穩定&#xff09; O(n^2) (穩定&#xff1a;表示相等的數&#xff0c;相對位置會不會改變) 冒泡排序&#xff08;Bubble Sort&#xff09;是一種簡單的排序算法&#xff0c;它通過多次遍歷待排序的元素&#xff0c;比較相鄰兩個元素的大小并交換它們&…

Kafka 常用功能總結(不斷更新中....)

kafka 用途 業務中我們經常用來兩個方面 1.發送消息 2.發送日志記錄 kafka 結構組成 broker&#xff1a;可以理解成一個單獨的服務器&#xff0c;所有的東西都歸屬到broker中 partation&#xff1a;為了增加并發度而做的拆分&#xff0c;相當于把broker拆分成不同的小塊&…

黨建信息管理系統源碼 支持在線交黨費 附帶完整的搭建教程

傳統的黨建管理模式通常采用手工方式&#xff0c;不僅效率低下&#xff0c;而且容易出錯。隨著組織規模的擴大和黨員數量的增加&#xff0c;這種管理方式已經無法滿足現實需求。此外&#xff0c;傳統的黨建管理模式缺乏在線交黨費功能&#xff0c;給黨員帶來不便。因此&#xf…

Kubernetes 離線部署 Spinnaker

離線部署 Spinnaker 離線部署 spinnaker 需要提前準備以下依賴項 halyard 安裝工具&#xff1a;該hal命令的apt源地址https://us-apt.pkg.dev/projects/spinnaker-community位于國外halyard boms物料清單&#xff1a;Spinnaker 將其halyard boms配置存儲在公共谷歌云存儲 ( g…

Divisibility Trick

Dmitry最近學會了一個簡單的規則來檢查一個整數是否可以被3整除。如果一個整數的位數之和可以被3整除&#xff0c;那么它就可以被3所整除。 后來他還了解到&#xff0c;同樣的規則也可以用來檢查一個整數是否可以被9整除。如果一個整數的位數之和可以被9整除&#xff0c;那么它…