A következő legjobb alternatíva a Kmeans korlátainak leküzdésére
szia mindenkinek, hogy vagytok? hasonlóképpen ma bemutatom Önnek a klaszterezés egyik hatékony algoritmusát/modelljét, amelyet röviden Gauss-keverékmodelleknek (GMM)nek neveznek. De előtte először is értsük meg, miért a GMM a következő legjobb klaszterezési modell, összehasonlítva a Kmeans-szel.
Kmeans:
A Kmeans az elvárások maximalizálásaként ismert iteratív megközelítést alkalmazza. EM röviden.Az EM folyamata magában foglalja
- Véletlenszerűen rendeljen hozzá néhány fürtközpontot
- Addig ismételje a 3. és 4. lépést, amíg tovább nem konvergál.
- E-Step: rendeljen pontokat a legközelebbi klaszterközponthoz
- M-Step: állítsa be a klaszterközéppontokat az átlagra
Egyszerű szavakkal:
- Határozza meg a K értéket könyök módszerrel, és rendelje hozzá K-t (a klaszterek számát)
- Véletlenszerűen rendeljen minden adatpontot egy fürthöz
- Határozza meg a klaszter súlypontjait
- Határozza meg az egyes adatpontok távolságát a súlypontoktól, és rendeljen hozzá minden pontot a legközelebbi klaszter súlypontjához a minimális távolság alapján.
- Számítsa ki újra a klaszter centroidokat.
- Ismételje meg a 4. és 5. lépést, amíg el nem érjük azt a globális optimumot, ahol nincs lehetőség javításra
Gyakori hátrányok:
A Kmeans lassan működhet nagy adatkészlet esetén. Mivel a Kmeans minden iterációjának hozzá kell férnie az adatkészlet minden pontjához, így az algoritmus viszonylag lassú lesz a mintaadatok számának növekedésével.
A Kmeans egyik legnagyobb hátránya, hogy a klaszterek számát előre ki kell választani. Ez gyakori kihívás, mert a Kmeans nem tudja megtanulni a klaszterek számát az adatokból.
Mindazonáltal megoldottam a K fürtök számának meghatározását a Kmeans esetében, tekintse meg cikkemet autoelbow vagy látogassa meg a pypi.org webhelyet, és keressen rá az autoeblow
Ha előre haladunk, lássuk röviden
Mi az az elvárás-maximalizálás?
EM azaz elvárás- A maximalizálás egy statisztikai algoritmus a megfelelő modellparaméterek megtalálására. Jellemzően EM-et használunk, ha az adatokból hiányzó értékek vannak, vagyis az adatok hiányosak.
Ezeket a hiányzó értékeket/változókat látens változóknak nevezzük
Az EM megpróbálja a meglévő adatok alapján meghatározni ezeknek a változóknak az optimális értékét, majd megkeresi a modell paramétereit, és ezek alapján frissítjük a látens változó értékeit.
2 lépésből álló E-Step-et tartalmaz: a rendelkezésre álló adatok segítségével megbecsülik (kitalálják) a látens értékek értékét, és az E-lépésből származó becsült értékeken az M-Step frissíti a paramétereket.
Az elvárás-maximalizálás számos algoritmuson alapul, beleértve a Gauss-keverék modelleket és a Kmean-eket
Rengeteg cikk található az Elvárás-Maximalizálás E és M lépésének megértésére szolgáló algoritmikus módszeren.
Lássuk a gyakorlatban a GM-modelleket, hogy megtaláljuk a klasztereket
Egy Gauss-féle keverékmodell (GMM) megpróbálja megtalálni a többdimenziós Gauss-valószínűségi eloszlások keverékét. és mivel a GMM valószínűségi modellt tartalmaz, meg lehet találni az adott klaszterhez való tartozásának valószínűségét.
A GMM segít leküzdeni a rugalmasság hiányát a Kmeans klaszter alakjában, amelyet később a tanfolyam során látni fogunk, valamint a valószínűségi klaszter-hozzárendelés hiányát is.
A GMM azonban kissé nehézkes az eredmények értelmezése.
A K-Means elsősorban 2 paramétert használ: a K klaszterek számát és a centroidokat, valamint a GMM 3 paramétert: a K klaszterek számát, az átlagot és a klaszterek kovarianciait.
#create a dummy dataset X, y_true = make_blobs(n_samples=400, centers=4, cluster_std=0.60, random_state=0) X = X[:, ::-1] # flip axes for better plotting rng = np.random.RandomState(13) X_stretched = np.dot(X, rng.randn(2, 2))
A GMM alkalmazása előtt hozzon létre egy felhasználó által definiált plot függvényt, amely segít megérteni a klaszter alakját a GMM és a Kmeans segítségével
#Gmm from matplotlib.patches import Ellipse def plot_gmm(gmm, X, label=True, ax=None): def draw_ellipse(position, covariance, ax=None, **kwargs): ax = ax or plt.gca() if covariance.shape == (2, 2): U, s, Vt = np.linalg.svd(covariance) angle = np.degrees(np.arctan2(U[1, 0], U[0, 0])) width, height = 2 * np.sqrt(s) else: angle = 0 width, height = 2 * np.sqrt(covariance) for nsig in range(1, 4): ax.add_patch(Ellipse( position, nsig * width, nsig * height, angle, **kwargs )) ax = ax or plt.gca() labels = gmm.fit(X).predict(X) if label: ax.scatter(X[:, 0], X[:, 1], c=labels, s=7, cmap='viridis', zorder=2) else: ax.scatter(X[:, 0], X[:, 1], s=7, zorder=2) ax.axis('equal') w_factor = 0.2 / gmm.weights_.max() for pos, covar, w in zip(gmm.means_, gmm.covariances_, gmm.weights_): draw_ellipse(pos, covar, alpha=w * w_factor) #keams from scipy.spatial.distance import cdist def plot_kmeans(kmeans, X, ax=None): labels = kmeans.fit_predict(X) # plot the input data plt.figure(dpi=175) ax = ax or plt.gca() ax.axis('equal') ax.scatter(X[:, 0], X[:, 1], c=labels, s=7, cmap='viridis', zorder=2) # plot the representation of the k-means model centers = kmeans.cluster_centers_ radii = [ cdist(X[labels == i], [center]).max() for i, center in enumerate(centers) ] for c, r in zip(centers, radii): ax.add_patch(plt.Circle( c, r, fc='#DDDDDD', lw=3, alpha=0.5, zorder=1 ))
Kmeans
kmeans = KMeans(n_clusters=4, random_state=0).fit(X_stretched) labels_knn = kmeans.predict(X_stretched) plot_kmeans(kmeans, X_stretched)
GMM
from sklearn.mixture import GaussianMixture gmm = GaussianMixture(n_components=4, covariance_type='full', random_state=42).fit(X_stretched) labels_gmm = gmm.predict(X_stretched) plt.figure(dpi=175) plot_gmm(gmm, X_stretched)
Jól észrevehetjük a Kmeans és a GMM alakját. A Kmean-ek kör alakúra korlátozódnak.
Mivel a GMM egy valószínűségi modell, a valószínűségeket a segítségével is megkaphatjuk
probabilities = gmm.predict_proba(X_stretched) probabilities
Itt vagyunk, mind a 4 klaszter a valószínűségekkel együtt. Ez nagyon hasznos, és rugalmasságot biztosít az eredmények küszöb alapján történő kiszűréséhez.
Ez az, gratulálunk, most a GMM-et a Kmeans következő legjobb alternatívájaként adjuk elő, remélem tetszett.
Ha többet szeretne megtudni a fürtözés fejlett típusairól, kövesse a másik A-Z Klaszterezés című cikkemet
A-Z klaszterezés.
Teljes útmutató 15 különböző típusú klaszterezési módszerhez.bobrupakroy.medium.com
Néhány alternatív internetes jelenlétem: a Facebook, Instagram, Udemy, a Blogger, az Issuu és még sok más.
A Quora oldalon is elérhető @ https://www.quora.com/profile/Rupak-Bob-Roy