自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

快速學會一個機器學習算法:高斯混合模型

發(fā)布于 2025-4-1 01:07
瀏覽
0收藏

在數(shù)據(jù)科學和機器學習領域,聚類分析是一種重要的無監(jiān)督學習方法,用于發(fā)現(xiàn)數(shù)據(jù)中的潛在模式和結(jié)構(gòu)。高斯混合模型(Gaussian Mixture Model,簡稱GMM)作為一種強大的概率模型,在聚類分析中具有廣泛的應用。本文將詳細介紹GMM聚類的算法原理、數(shù)學基礎,并通過一個案例分析展示其實際應用。

一、GMM算法簡介

        高斯混合模型(GMM)是一種基于概率的聚類方法,假設數(shù)據(jù)集由多個高斯分布(也稱為“成分”或“簇”)混合生成。與K-Means等傳統(tǒng)聚類算法不同,GMM不僅考慮簇的中心,還考慮簇的形狀和大小,通過估計每個數(shù)據(jù)點屬于各個簇的概率,實現(xiàn)更為靈活和準確的聚類效果。

GMM在以下場景中表現(xiàn)出色:

  • 復雜數(shù)據(jù)分布:適用于簇形狀不規(guī)則、大小不一的數(shù)據(jù)集。
  • 軟聚類:允許數(shù)據(jù)點屬于多個簇,適用于模糊邊界的聚類任務。
  • 概率解釋:提供每個數(shù)據(jù)點的聚類概率,有助于后續(xù)的統(tǒng)計分析和決策。

二、GMM算法原理

2.1 概率模型

快速學會一個機器學習算法:高斯混合模型-AI.x社區(qū)

2.2 期望最大化(EM)算法

GMM的參數(shù)估計通常采用期望最大化(Expectation-Maximization,EM)算法。EM算法是一種迭代優(yōu)化方法,適用于含有隱含變量或不完全數(shù)據(jù)的概率模型。

EM算法包含兩個主要步驟,E步(期望步)和M步(最大化步),反復迭代直到收斂。

  • E步(Expectation Step)

在當前參數(shù)估計值 下,計算每個數(shù)據(jù)點屬于第 個高斯成分的后驗概率(即責任度):

  • M步(Maximization Step)

基于E步計算的責任度,重新估計模型參數(shù):

  • 收斂條件

EM算法在每次迭代中都會增加似然函數(shù)的值,直到似然函數(shù)的增幅低于預設的閾值或達到最大迭代次數(shù)時停止。

三、案例分析:GMM聚類實戰(zhàn)

本文將通過一個簡單的案例,使用Python實現(xiàn)GMM聚類,展示其在模擬數(shù)據(jù)上的應用效果。

3.1 數(shù)據(jù)生成

首先,我們生成一個包含三個不同簇的二維數(shù)據(jù)集,每個簇的數(shù)據(jù)點服從不同的高斯分布。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture
import matplotlib.patches as patches
import matplotlib.colors as mcolors

# 設置隨機種子
np.random.seed(42)

# 生成三個高斯分布的樣本
n_samples = 500

# 第一個簇
mean1 = [2, 0]
cov1 = [[1, 0.2], [0.2, 1]]
X1 = np.random.multivariate_normal(mean1, cov1, n_samples)

# 第二個簇
mean2 = [3, 3]
cov2 = [[1, -0.3], [-0.3, 1]]
X2 = np.random.multivariate_normal(mean2, cov2, n_samples)

# 第三個簇
mean3 = [0, 3]
cov3 = [[1, 0], [0, 1]]
X3 = np.random.multivariate_normal(mean3, cov3, n_samples)

# 合并數(shù)據(jù)
X = np.vstack((X1, X2, X3))

# 繪制原始數(shù)據(jù)點圖
plt.figure(figsize=(10, 8))

plt.scatter(X1[:, 0], X1[:, 1], s=30, color='red', label='簇 1', alpha=0.6)
plt.scatter(X2[:, 0], X2[:, 1], s=30, color='green', label='簇 2', alpha=0.6)
plt.scatter(X3[:, 0], X3[:, 1], s=30, color='blue', label='簇 3', alpha=0.6)

plt.title('原始數(shù)據(jù)點分布', fontsize=16)
plt.xlabel('特征1', fontsize=14)
plt.ylabel('特征2', fontsize=14)
plt.legend(title='原始簇類別')
plt.grid(True, linestyle='--', alpha=0.5)
plt.tight_layout()
plt.show()

原始數(shù)據(jù)散點圖:

快速學會一個機器學習算法:高斯混合模型-AI.x社區(qū)

3.2 GMM聚類實現(xiàn)

使用Scikit-learn庫中的??GaussianMixture??類實現(xiàn)GMM聚類,并預測數(shù)據(jù)點的簇標簽。

# 定義GMM模型,假設有3個簇
gmm = GaussianMixture(n_compnotallow=3, covariance_type='full', random_state=42)

# 擬合GMM模型
gmm.fit(X)

# 預測簇標簽
labels = gmm.predict(X)

# 獲取GMM的參數(shù)
weights = gmm.weights_
means = gmm.means_
covariances = gmm.covariances_

print("GMM混合權(quán)重:", weights)
print("GMM均值:\n", means)
print("GMM協(xié)方差矩陣:\n", covariances)

輸出結(jié)果:

GMM混合權(quán)重: [0.34443739 0.3287613  0.32680131]
GMM均值:
 [[ 2.95728907  3.11741938]
 [-0.04155174  2.96571577]
 [ 1.9849524  -0.00788892]]
GMM協(xié)方差矩陣:
 [[[ 0.99816731 -0.25715754]
  [-0.25715754  1.02762528]]

 [[ 0.91888485 -0.01749   ]
  [-0.01749     0.96829226]]

 [[ 0.89100266  0.17762317]
  [ 0.17762317  0.95128116]]]

3.3 結(jié)果可視化

繪制聚類結(jié)果和高斯分布的等高線,直觀展示GMM的聚類效果。

# 定義顏色
colors = list(mcolors.TABLEAU_COLORS.values())

plt.figure(figsize=(12, 8))

# 繪制數(shù)據(jù)點
for i in range(gmm.n_components):
    plt.scatter(X[labels == i, 0], X[labels == i, 1],
                s=30, color=colors[i], label=f'簇 {i+1}', alpha=0.5)

# 繪制高斯分布的等高線
ax = plt.gca()

for i in range(gmm.n_components):
    mean = means[i]
    cov = covariances[i]
    eigenvalues, eigenvectors = np.linalg.eigh(cov)
    order = eigenvalues.argsort()[::-1]
    eigenvalues, eigenvectors = eigenvalues[order], eigenvectors[:, order]
    angle = np.degrees(np.arctan2(*eigenvectors[:,0][::-1]))
    width, height = 2 * np.sqrt(eigenvalues)
    ellipse = patches.Ellipse(mean, width, height, angle=angle,
                              edgecolor=colors[i], facecolor='none',
                              linewidth=3, linestyle='--')
    ax.add_patch(ellipse)

plt.title('GMM聚類結(jié)果', fnotallow=16)
plt.xlabel('特征1', fnotallow=14)
plt.ylabel('特征2', fnotallow=14)
plt.legend(title='簇類別')
plt.grid(True, linestyle='--', alpha=0.5)
plt.tight_layout()
plt.show()

GMM聚類結(jié)果圖:

快速學會一個機器學習算法:高斯混合模型-AI.x社區(qū)

結(jié)果分析

        通過上述代碼,我們生成了一個包含三個簇的二維數(shù)據(jù)集,并使用GMM進行聚類。結(jié)果顯示,GMM能夠準確地識別出數(shù)據(jù)中的三個簇,并通過等高線展示了各個高斯成分的分布情況。相比于K-Means,GMM在處理具有不同形狀和大小的簇時表現(xiàn)出更高的靈活性和準確性。

四、總結(jié)

        高斯混合模型(GMM)作為一種基于概率的聚類方法,能夠有效地處理復雜數(shù)據(jù)分布和模糊邊界的聚類任務。通過期望最大化(EM)算法,GMM能夠迭代地估計模型參數(shù),實現(xiàn)對數(shù)據(jù)的準確聚類。本文通過理論介紹和實戰(zhàn)案例,展示了GMM在機器學習中的應用及其優(yōu)勢。盡管GMM在處理高維數(shù)據(jù)和選擇適當?shù)拇財?shù)時可能面臨挑戰(zhàn),但其靈活性和概率解釋能力使其成為聚類分析中不可或缺的工具。

        在實際應用中,結(jié)合領域知識選擇合適的模型參數(shù)和評估指標,可以進一步提升GMM的聚類效果。同時,結(jié)合其他機器學習方法,如降維技術和特征工程,可以增強GMM在復雜數(shù)據(jù)場景下的表現(xiàn)。

本文轉(zhuǎn)載自寶寶數(shù)模AI,作者:BBSM


收藏
回復
舉報
回復
相關推薦