簡體   English   中英

Python sklearn.mixture.GMM規模不穩健?

[英]Python sklearn.mixture.GMM not robust to scale?

我在Python中使用sklearn.mixture.GMM ,結果似乎依賴於數據擴展。 在下面的代碼示例中,我更改了整體縮放,但我沒有更改維度的相對縮放。 然而,在三種不同的縮放設置下,我得到完全不同的結果:

from sklearn.mixture import GMM
from numpy import array, shape
from numpy.random import randn
from random import choice

# centroids will be normally-distributed around zero:
truelumps = randn(20, 5) * 10

# data randomly sampled from the centroids:
data = array([choice(truelumps) + randn(5) for _ in xrange(1000)])

for scaler in [0.01, 1, 100]:
    scdata = data * scaler
    thegmm = GMM(n_components=10)
    thegmm.fit(scdata, n_iter=1000)
    ll = thegmm.score(scdata)
    print sum(ll)

這是我得到的輸出:

GMM(cvtype='diag', n_components=10)
7094.87886779
GMM(cvtype='diag', n_components=10)
-14681.566456
GMM(cvtype='diag', n_components=10)
-37576.4496656

原則上,我認為整體數據擴展不重要,每次總的對數似然應該相似。 但也許有一個我忽視的實施問題?

通過scikit-learn郵件列表得到了一個答案 :在我的代碼示例中,對數似然應該隨着比例(因為我們正在評估點可能性,而不是積分),通過與log(scale)相關的因子而變化。 所以我認為我的代碼示例實際上顯示GMM給出了正確的結果。

我認為GMM是依賴於比例的(例如k-means),因此建議按照文檔的預處理章節中的說明標准化輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM