[english][all](請注意:中文版本並未隨英文版本同步更新!)
以下將就 GMM 的使用範例進行說明。
在下列範例中,我們將 GMM 用於一維的資料:
在上述範例中,原來的資料是由中心點為 -2, 0, 2 的三個高斯機率密度函數所產生(請見 dcData.m 的內容),第一個圖是資料的質方圖(Histogram),第二個圖是 log probability 在訓練過程中的變化。由上述範例可以看出:
- 所計算出來的中心點和原先資料的理想中心點很接近。
- 對數機率在訓練過程中,會一路爬升或持平,不會下降。
若要看到訓練後的機率密度函數,可以使用下列範例:
在上述範例中,可以很明顯的看出來,資料的質方圖和 GMM 所算出來的機率密度函數,非常接近。這是由於下列三個條件都成立:
- 資料量夠大。(上述範例有 600 筆資料!)
- 事先能夠猜對高斯機率密度函數的個數。
- 資料的確是由高斯機率密度函數所產生。
但是在實際世界中,這三種條件未必都成立,因此我們的對應方案是:
- 資料蒐集是越多越好。
- 執行 GMM 訓練多次,以便找到高斯機率密度函數的最佳個數。
- 可用事後驗證,看看資料分佈是否符合我們的假設。
下面這個範例,我們將 GMM 用於二維的「甜甜圈」資料,如下:
在執行上述範例時,可以看到動畫展示,非常有趣,請各位讀者自己試試看!
GMM 的訓練,並不是每次都會產生理想的結果,請見下列範例:
在上述範例中,由資料分佈來看,理想中應該有三個高斯機率密度函數,分別負責三組資料的產生,其中在左上角的兩組很密集,而在中間的一組則比較分散。但實際進行訓練時,常常會發生「大圓包小圓」的情況,代表 GMM 的訓練,掉入了局部最大點而無法跳出。(由於資料是亂數產生,所以每次訓練的結果都不相同。如果讀者們跑出的結果和此範例不同,請多試幾次,就可以看到這種「大圓包小圓」的情況。)
以下是另一個範例,使用GMM(包含4個高斯PDF)來對2D的資料進行建模:
Data Clustering and Pattern Recognition (資料分群與樣式辨認)