柚子快報(bào)激活碼778899分享:人工智能 機(jī)器學(xué)習(xí)(7)-聚類
柚子快報(bào)激活碼778899分享:人工智能 機(jī)器學(xué)習(xí)(7)-聚類
聚類(Clustering)是最常見的無(wú)監(jiān)督學(xué)習(xí)算法,指的是按照某個(gè)特定標(biāo)準(zhǔn)(如距離)把一個(gè)數(shù)據(jù)集分割成不同的類或簇,使得同一個(gè)簇內(nèi)的數(shù)據(jù)對(duì)象的相似性盡可能大,同時(shí)不在同一個(gè)簇中的數(shù)據(jù)對(duì)象的差異性也盡可能地大。也即聚類后同一類的數(shù)據(jù)盡可能聚集到一起,不同類數(shù)據(jù)盡量分離。
聚類(Clustering)和分類(Classification)的區(qū)別
聚類是一種無(wú)監(jiān)督學(xué)習(xí),而分類是一種有監(jiān)督的學(xué)習(xí)。
聚類只需要人工指定相似度的標(biāo)準(zhǔn)和類別數(shù),而分類需要從訓(xùn)練集學(xué)習(xí)分類的方法。
主流聚類算法
主流的聚類算法可以分成兩類:劃分聚類(Partitioning Clustering)和層次聚類(Hierarchical Clustering)。
劃分聚類
劃分聚類算法會(huì)給出一系列扁平結(jié)構(gòu)的簇(分開的幾個(gè)類),它們之間沒有任何顯式的結(jié)構(gòu)來表明彼此的關(guān)聯(lián)性。
層次聚類
層次聚類會(huì)輸出一個(gè)具有層次結(jié)構(gòu)的簇集合,因此能夠比劃分聚類輸出的無(wú)結(jié)構(gòu)簇集合提供更豐富的信息。層次聚類可以認(rèn)為是是嵌套的劃分聚類。
K-Means聚類算法
K-Means的含義
K : 初始中?點(diǎn)個(gè)數(shù)(計(jì)劃聚類數(shù))Means:求中?點(diǎn)到其他數(shù)據(jù)點(diǎn)距離的平均值
K-Means(K-均值)聚類算法采用EM算法迭代確定中心點(diǎn),流程如下
隨機(jī)設(shè)置K個(gè)特征空間內(nèi)的點(diǎn)作為初始的聚類中心對(duì)于其他每個(gè)點(diǎn)計(jì)算到K個(gè)中心的距離,接著其他點(diǎn)選擇最近的?個(gè)聚類中?點(diǎn)作為自己的標(biāo)記類別之后重新計(jì)算出每個(gè)聚類的新中心點(diǎn)(把每個(gè)點(diǎn)的X加起來取平均值就是新中心點(diǎn)的X,Y同理)如果計(jì)算得出的新中心點(diǎn)與原中心點(diǎn)?樣(質(zhì)心不再移動(dòng)),那么結(jié)束,否則重新進(jìn)?第2步過程
聚類模型評(píng)估
由于聚類是非監(jiān)督學(xué)習(xí),沒有y標(biāo)簽值來判斷分類是否正確,因此需要其他方式判斷算法模型的優(yōu)劣。
誤差平方和(SSE)
誤差平方和(the Sum of Squares due to Error,SSE),計(jì)算方式如下。
SSE最終的結(jié)果是對(duì)分類的松散度的衡量, 隨著聚類迭代,其值會(huì)越來越小,直到最后趨于穩(wěn)定 。如果質(zhì)心的初始值選擇不好,SSE只會(huì)達(dá)到一個(gè)不怎么好的局部最優(yōu)解。
手肘法(Elbow Method)
手肘法被用于K值的確定,過程如下
對(duì)于一個(gè)有n個(gè)點(diǎn)的數(shù)據(jù)集,從1到n迭代計(jì)算聚類個(gè)數(shù)k,每次聚類完成后計(jì)算每個(gè)點(diǎn)到其所屬的簇中心的距離誤差平方和(SSE)。SSE在聚類個(gè)數(shù)增加的過程中是會(huì)逐漸變小的,直到k==n時(shí)平方和為0,因?yàn)槊總€(gè)點(diǎn)都是它所在的簇中心本身。在這個(gè)平方和變化過程中,會(huì)出現(xiàn)一個(gè)拐點(diǎn)也即“肘”點(diǎn),下降率突然變緩時(shí)即認(rèn)為是最佳的k值。
輪廓系數(shù)法
輪廓系數(shù)(Silhouette Coefficient)結(jié)合了聚類的凝聚度(Cohesion)和分離度(Separation),用于評(píng)估聚類的效果。輪廓系數(shù)的值處于-1~1之間,值越大,表示聚類效果越好,計(jì)算如下。
其中,
計(jì)算樣本i到同簇其他樣本的平均距離ai,ai 越小樣本i的簇內(nèi)不相似度越小,說明樣本i越應(yīng)該被聚類到該簇。再計(jì)算樣本i到最近簇Cj 的所有樣本的平均距離bij,稱樣本i與最近簇Cj 的不相似度,定義為樣本i的簇間不相似度:bi =min{bi1, bi2, …, bik},bi越大,說明樣本i越不屬于其他簇。求出所有樣本的輪廓系數(shù)后再求平均值就得到了平均輪廓系數(shù)。平均輪廓系數(shù)的取值范圍為[-1,1],系數(shù)越大,聚類效果越好;簇內(nèi)樣本的距離越近,簇間樣本距離越遠(yuǎn)。
聚類-Python實(shí)踐
K-Means聚類算法
使用sklearn和sklearn的Iris數(shù)據(jù)集
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
# 加載Iris數(shù)據(jù)集
iris = load_iris()
X = iris.data
y = iris.target
# 使用K-Means進(jìn)行聚類
n_clusters = 3
kmeans = KMeans(n_clusters=n_clusters, random_state=42)
kmeans.fit(X)
y_kmeans = kmeans.predict(X)
# 使用PCA將數(shù)據(jù)降到二維以便可視化
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
# 繪制結(jié)果
plt.figure(figsize=(8, 6))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y_kmeans, s=50, cmap='viridis', marker='o', edgecolor='k')
centers = pca.transform(kmeans.cluster_centers_)
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75, marker='X')
plt.title('K-Means Clustering on Iris Dataset')
plt.xlabel('PCA Feature 1')
plt.ylabel('PCA Feature 2')
plt.show()
參考
圖解機(jī)器學(xué)習(xí)算法(13) | 聚類算法詳解(機(jī)器學(xué)習(xí)通關(guān)指南·完結(jié))_機(jī)器學(xué)習(xí)算法教程-CSDN博客聚類算法(KMeans)模型評(píng)估方法(SSE、SC)及案例_kmeans sse-CSDN博客
【聚類】K-Means聚類(優(yōu)缺點(diǎn)、手肘法、輪廓系數(shù)法、檢測(cè)異常點(diǎn)、圖像壓縮,含代碼實(shí)戰(zhàn))_kmeans手肘法-CSDN博客
柚子快報(bào)激活碼778899分享:人工智能 機(jī)器學(xué)習(xí)(7)-聚類
參考文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。