国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

KMeans算法與GMM混合高斯聚類

這篇具有很好參考價(jià)值的文章主要介紹了KMeans算法與GMM混合高斯聚類。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、K-Means

K-Means是GMM的特例(硬聚類,基于原型的聚類)。假設(shè)多元高斯分布的協(xié)方差為0,方差相同。
?
K-Means算法思想
對(duì)于給定的樣本集,按照樣本間的距離,將樣本集劃分為K個(gè)簇。
簇內(nèi)的點(diǎn)盡量緊密連接,而簇間的距離盡量的大。
KMeans算法與GMM混合高斯聚類
本質(zhì)上是個(gè)組合優(yōu)化問(wèn)題, 類似于將N個(gè)球分配到K個(gè)箱子。
啟發(fā)式求解(局部最優(yōu)解)
  1. 初始K個(gè)類(簇心)
  2. E步:對(duì)每個(gè)樣本,計(jì)算到K個(gè)類的歐式距離,并分配類標(biāo)簽 O(kNd)
  3. M步:基于類內(nèi)的樣本,以樣本均值更新類(均值最小化,類到類內(nèi)樣本的誤差) O(Nd)
  4. 重復(fù)2-3步,直到聚類結(jié)果不變化或收斂
迭代次數(shù)為L(zhǎng),N個(gè)d維樣本,時(shí)間復(fù)雜度 O(kLNd)
?
聚類前置處理:
特征歸一化,剔除缺失值,異常值
?
K-Means的優(yōu)點(diǎn):
  1)基于原型的聚類,實(shí)現(xiàn)簡(jiǎn)單收斂速度快。
  2)聚類效果較優(yōu)。
  3)算法的可解釋度比較強(qiáng)。
  4)主要需要調(diào)參的參數(shù)僅僅是簇?cái)?shù)k。
K-Means的缺點(diǎn):
  1)K值的選取不好把握(需要多次運(yùn)行看輪廓系數(shù), 肘部法;用層次聚類確定K值)
  2)對(duì)于不是凸的數(shù)據(jù)集比較難收斂
  3)如果各隱含類別的數(shù)據(jù)不平衡,比如各隱含類別的數(shù)據(jù)量嚴(yán)重失衡,或者各隱含類別的方差不同,則聚類效果不佳。
  4) 采用迭代方法,得到的結(jié)果只是局部最優(yōu)(本身是個(gè)NP-hard問(wèn)題,多項(xiàng)式系數(shù); 聚類結(jié)果受初始簇心影響)
  5) 對(duì)噪音和異常點(diǎn)比較的敏感。
?
# 基于Cursor生成的代碼
import numpy as np

def k_means(X, k, max_iters=100):
    # randomly initialize centroids
    centroids = X[np.random.choice(range(len(X)), k, replace=False)]
    
    for i in range(max_iters):
        # calculate distances between each point and each centroid
        distances = np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2))
        
        # assign each point to the closest centroid
        labels = np.argmin(distances, axis=0)
        
        # update centroids to be the mean of the points assigned to them
        for j in range(k):
            centroids[j] = X[labels == j].mean(axis=0)
    
    return centroids, labels

d = 3
k = 3
X = np.random.rand(100, 3)
centroids, labels = k_means(X, k, max_iters=100)

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')

ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=labels, cmap='viridis')
ax.scatter(centroids[:, 0], centroids[:, 1], centroids[:, 2], marker='*', s=300, c='r')

ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

plt.show()

?

二、GMM

?斯分布的線性組合可以給出相當(dāng)復(fù)雜的概率密度形式。
通過(guò)使??夠多的?斯分布,并且調(diào)節(jié)它們的均值和?差以及線性組合的系數(shù),?乎所有的連續(xù)概率密度都能夠以任意的精度近似。
KMeans算法與GMM混合高斯聚類
對(duì)3個(gè)高斯分布的概率密度函數(shù)進(jìn)行加權(quán)???/div>
?
慮K個(gè)?斯概率密度的疊加,形式為:
KMeans算法與GMM混合高斯聚類
KMeans算法與GMM混合高斯聚類
參數(shù)πk被稱為混合系數(shù)。
?
混合?斯(mixture of Gaussians),每?個(gè)?斯概率密度N (x | μk, Σk)被稱為混合分布的?個(gè)成分(component),并且有??的均值μk和協(xié)?差Σk。
KMeans算法與GMM混合高斯聚類
具有3個(gè)成分的混合?斯分布的輪廓線。
?
可把πk = p(k)看成選擇第k個(gè)成分的先驗(yàn)概率, 把密度N (x | μk, Σk) = p(x | k)看成以k為條件的x的概率。
?斯混合分布的形式由參數(shù)π, μ和Σ控制,其中令π ≡ {π1, . . . , πK}, μ ≡{μ1, . . . , μK}且Σ ≡ {Σ1, . . . , Σk}。
?
?種確定這些參數(shù)值的?法是使?最?似然法。根據(jù)公式),對(duì)數(shù)似然函數(shù)為:
KMeans算法與GMM混合高斯聚類
因?yàn)閷?duì)數(shù)中存在?個(gè)求和式,導(dǎo)致參數(shù)的最?似然解不再有?個(gè)封閉形式的解析解:
  • ?種最?化這個(gè)似然函數(shù)的?法是使?迭代數(shù)值優(yōu)化?法。
  • 另?種是使?EM期望最?化算法(對(duì)包含隱變量的似然進(jìn)行迭代優(yōu)化)。
?
樣本x為觀測(cè)數(shù)據(jù),混合系數(shù)為隱變量,高斯分布的參數(shù)。
當(dāng)成分為多元高斯分布時(shí)(d維),相當(dāng)于從混合多元高斯分布中生成了樣本,通過(guò)EM算法迭代地學(xué)習(xí)模型參數(shù)(均值和方差以及混合系數(shù))。
  1. 期望:根據(jù)參數(shù),更新樣本關(guān)于類的響應(yīng)度(隸屬度,相當(dāng)于分別和K個(gè)類計(jì)算距離并歸一化)。確定響應(yīng)度,就可以確定EM算法的Q函數(shù)(完全數(shù)據(jù)的對(duì)數(shù)似然關(guān)于 分布的期望),原始似然的下界。
  2. 最大化:根據(jù)響應(yīng)度,計(jì)算均值、方差。
EM算法收斂后,直接求每個(gè)樣本關(guān)于成分的響應(yīng)度即可得到聚類結(jié)果(可軟,可硬argmax)
?
當(dāng)多元高斯分布的方差相同時(shí),且每個(gè)樣本只能指定給一個(gè)類時(shí)(one-hot響應(yīng)度,argmax),GMM退化成K-means算法。
KMeans算法與GMM混合高斯聚類
import numpy as np
from sklearn import datasets
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture
from sklearn.cluster import KMeans

# 創(chuàng)建數(shù)據(jù),并可視化
X, y = datasets.make_blobs(n_samples=1500,
                             cluster_std=[1.0, 2.5, 0.5],
                             random_state=170)
plt.figure(figsize=(12,4))
plt.rcParams['font.family'] = 'STKaiti'
plt.rcParams['font.size'] = 20
plt.subplot(1,3,1)
plt.scatter(X[:,0],X[:,1],c = y)
plt.title('原始數(shù)據(jù)',pad = 20)

?

Kmeans聚類
kmeans = KMeans(3)
kmeans.fit(X)
y_ = kmeans.predict(X)
plt.subplot(1,3,2)
plt.scatter(X[:,0],X[:,1],c = y_)
plt.title('KMeans聚類效果',pad = 20)

?

GMM高斯混合模型聚類
gmm = GaussianMixture(n_components=3)
y_ = gmm.fit_predict(X)
plt.subplot(1,3,3)
plt.scatter(X[:,0],X[:,1],c = y_)
plt.title('GMM聚類效果',pad = 20)
 
plt.figtext(x = 0.51,y = 1.1,s = 'KMeans VS GMM',ha = 'center',fontsize = 30)
plt.savefig('./GMM高斯混合模型.png',dpi = 200)

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-415692.html

KMeans算法與GMM混合高斯聚類
優(yōu)點(diǎn):
  • 可以完成大部分形狀的聚類
  • 大數(shù)據(jù)集時(shí),對(duì)噪聲數(shù)據(jù)不敏感
  • 對(duì)于距離或密度聚類,更適合高維特征
缺點(diǎn):
  • 計(jì)算復(fù)雜高,速度較慢
  • 難以對(duì)圓形數(shù)據(jù)聚類
  • 需要在測(cè)試前知道類別的個(gè)數(shù)(成分個(gè)數(shù),超參數(shù))
  • 初始化參數(shù)會(huì)對(duì)聚類結(jié)果產(chǎn)生影響
參考
1.https://www.jianshu.com/p/2c42c567e893
2. PRML
3. 劉建平博客

到了這里,關(guān)于KMeans算法與GMM混合高斯聚類的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 無(wú)涯教程-聚類算法 - K-Means

    K-均值聚類算法計(jì)算質(zhì)心并進(jìn)行迭代,直到找到最佳質(zhì)心為止,它假定群集的數(shù)目是已知的,它也稱為扁平聚類算法。通過(guò)算法從數(shù)據(jù)中識(shí)別出的簇?cái)?shù)以K均值中的\\\" K\\\"表示。 在該算法中,將數(shù)據(jù)點(diǎn)分配給群集,以使數(shù)據(jù)點(diǎn)和質(zhì)心之間的平方距離之和最小。應(yīng)當(dāng)理解,簇內(nèi)的較

    2024年02月10日
    瀏覽(24)
  • 【g】聚類算法之K-means算法

    聚類算法是一種無(wú)監(jiān)督學(xué)習(xí)方法,它將相似的數(shù)據(jù)樣本劃分為一組,同時(shí)將不相似的數(shù)據(jù)樣本劃分為另一組。這個(gè)過(guò)程由計(jì)算機(jī)自動(dòng)完成,不需要任何人為的干預(yù)。 K-means算法是一種經(jīng)典的聚類算法,它的主要思想是把數(shù)據(jù)集分成k個(gè)簇,每個(gè)簇包括距離其它各簇最近的若干個(gè)

    2024年02月08日
    瀏覽(20)
  • K-means++聚類算法(matlab實(shí)現(xiàn))

    K-means++聚類算法(matlab實(shí)現(xiàn))

    K-means++算法:K-means++算法是K-means算法的改進(jìn)版,其在選擇初始質(zhì)心時(shí)采用了一種更加聰明的方法,能夠有效地避免局部最優(yōu)解。具體來(lái)說(shuō),K-means++算法的初始質(zhì)心是根據(jù)距離數(shù)據(jù)點(diǎn)最遠(yuǎn)的原則來(lái)選擇的,這樣可以保證初始質(zhì)心的分布更加廣泛,從而使得算法更容易找到全局最

    2024年02月07日
    瀏覽(26)
  • K-means聚類算法原理及實(shí)現(xiàn)

    K-means聚類算法原理及實(shí)現(xiàn)

    1.1概念 聚類分析,也稱為分割分析或分類分析,可將樣本數(shù)據(jù)分成一個(gè)個(gè)組(即簇)。同一簇中的對(duì)象是相似的,不同簇中的對(duì)象則明顯不同。 Statistics and Machine Learning Toolbox? 提供了幾種聚類方法和相似性度量(也稱為距離度量)來(lái)創(chuàng)建簇。此外,簇計(jì)算可以按照不同的計(jì)

    2024年03月18日
    瀏覽(20)
  • 機(jī)器學(xué)習(xí)之K-means聚類算法

    機(jī)器學(xué)習(xí)之K-means聚類算法

    目錄 K-means聚類算法 算法流程 優(yōu)點(diǎn) 缺點(diǎn) 隨機(jī)點(diǎn)聚類 人臉聚類 旋轉(zhuǎn)物體聚類 K-means聚類算法是一種無(wú)監(jiān)督的學(xué)習(xí)方法,通過(guò)對(duì)樣本數(shù)據(jù)進(jìn)行分組來(lái)發(fā)現(xiàn)數(shù)據(jù)內(nèi)在的結(jié)構(gòu)。K-means的基本思想是將n個(gè)實(shí)例分成k個(gè)簇,使得同一簇內(nèi)數(shù)據(jù)相似度高而不同簇之間數(shù)據(jù)相似度低。 K-means的

    2024年02月11日
    瀏覽(28)
  • K-means聚類算法的三種改進(jìn)(K-means++,ISODATA,Kernel K-means)介紹與對(duì)比

    K-means聚類算法的三種改進(jìn)(K-means++,ISODATA,Kernel K-means)介紹與對(duì)比

    ? 目錄 ?一、概述 二、經(jīng)典K-means算法 三、K-means++算法 四、ISODATA算法 六、數(shù)據(jù)集測(cè)試 ????? 在本篇文章中將對(duì)四種聚類算法(K-means,K-means++,ISODATA和Kernel K-means)進(jìn)行詳細(xì)介紹,并利用數(shù)據(jù)集來(lái)真實(shí)地反映這四種算法之間的區(qū)別。 ????? 首先需要明確的是上述四種算法都屬

    2024年01月23日
    瀏覽(17)
  • K-means聚類算法(附Python實(shí)現(xiàn)代碼)

    K-means聚類算法(附Python實(shí)現(xiàn)代碼)

    本文的代碼與數(shù)據(jù)地址已上傳至github:https://github.com/helloWorldchn/MachineLearning 1、基于劃分的聚類 劃分算法的思想是,將給定待挖掘數(shù)據(jù)集中的數(shù)據(jù)對(duì)象劃分成K組(k≤N,N代表數(shù)據(jù)集中對(duì)象數(shù)目),每一組表示一個(gè)聚類的簇。并且要滿足任何一個(gè)數(shù)據(jù)對(duì)象僅可以屬于一個(gè)聚類,

    2024年02月07日
    瀏覽(26)
  • 傳統(tǒng)機(jī)器學(xué)習(xí)(三)聚類算法K-means(一)

    傳統(tǒng)機(jī)器學(xué)習(xí)(三)聚類算法K-means(一)

    K-Means算法是無(wú)監(jiān)督的聚類算法,它實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,聚類效果也不錯(cuò),因此應(yīng)用很廣泛。K-Means基于歐式距離認(rèn)為兩個(gè)目標(biāo)距離越近,相似度越大。 1.1.1 算法流程 (1)圖a表達(dá)了初始的數(shù)據(jù)集, 假設(shè)k=2; (2)在圖b中,隨機(jī)選擇兩個(gè)k類的對(duì)應(yīng)的類別質(zhì)心,即圖中的紅色質(zhì)

    2023年04月15日
    瀏覽(17)
  • K-means聚類算法及Python代碼實(shí)現(xiàn)

    K-means聚類算法及Python代碼實(shí)現(xiàn)

    K-means聚類算法(事先數(shù)據(jù)并沒(méi)有類別之分!所有的數(shù)據(jù)都是一樣的) 1、概述 K-means算法是集簡(jiǎn)單和經(jīng)典于一身的 基于距離的聚類算法 采用距離作為相似性的評(píng)價(jià)指標(biāo),即認(rèn)為兩個(gè)對(duì)象的距離越近,其相似度就越大。 該算法認(rèn)為類簇是由距離靠近的對(duì)象組成的,因此把得到

    2023年04月24日
    瀏覽(24)
  • 【機(jī)器學(xué)習(xí)】K-means聚類算法:原理、應(yīng)用與優(yōu)化

    【機(jī)器學(xué)習(xí)】K-means聚類算法:原理、應(yīng)用與優(yōu)化

    一、引言 1、簡(jiǎn)述聚類分析的重要性及其在機(jī)器學(xué)習(xí)中的應(yīng)用 ??聚類分析,作為機(jī)器學(xué)習(xí)領(lǐng)域中的一種無(wú)監(jiān)督學(xué)習(xí)方法,在數(shù)據(jù)探索與知識(shí)發(fā)現(xiàn)過(guò)程中扮演著舉足輕重的角色。它能夠在沒(méi)有先驗(yàn)知識(shí)或標(biāo)簽信息的情況下,通過(guò)挖掘數(shù)據(jù)中的內(nèi)在結(jié)構(gòu)和規(guī)律,將數(shù)據(jù)對(duì)象自動(dòng)

    2024年04月13日
    瀏覽(36)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包