【问题标题】:Python sklearn.mixture.GMM not robust to scale?Python sklearn.mixture.GMM 对扩展不健壮?
【发布时间】:2012-10-31 15:55:24
【问题描述】:

我在 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

原则上,我认为整体数据缩放并不重要,总对数似然每次都应该相似。但也许我忽略了一个实施问题?

【问题讨论】:

    标签: python machine-learning gaussian scikit-learn


    【解决方案1】:

    我有an answer via the scikit-learn mailing list:在我的代码示例中,对数似然应该确实随规模变化(因为我们正在评估点似然性,而不是积分),与以下因素有关log(scale)。所以我认为我的代码示例实际上表明 GMM 给出了正确的结果。

    【讨论】:

    • 我在这里遇到了同样的问题并试图理解。也许该线程中的这句话需要考虑“一般来说,在拟合混合模型之前,将所有内容均值居中并归一化是很好的。”我不明白为什么在我的模型中,我得到一个非常接近 1 的责任,而其余的几乎为零,然后我查看了对数概率,logsumexp 返回一列,因为其他列非常负。
    【解决方案2】:

    我认为 GMM 是尺度相关的(例如 k-means),因此建议按照the preprocessing chapter of the documentation 中的说明对输入进行标准化。

    【讨论】:

    • 但是为什么呢?最大似然 GMM 拟合的思想是找到使数据的似然最大化的分布 GMM。由于我的代码中的三种情况仅在总体规模上有所不同,因此不应出现可能性差异。如果输入标准化会改变维度之间的关系,那么它肯定会产生影响,但是我的代码将所有维度重新缩放相同的数量。
    • 如果您知道为什么将 predict_proba 与 GMM 一起使用时,我可能会在一个类中得到几乎 1,而在其他类中接近 0,我将不胜感激?我还在整个模型上使用了预处理,但它也没有帮助。无论关于集群的测试落在哪里,似乎都会发生这种情况。
    • 你有多少功能?也许你正遭受维度的诅咒。您可以尝试使用RandomizedPCA 进行降维,看看概率是否更平滑。
    • @ogrisel 谢谢,我实际上从高维度(超过 100 个)开始,但在 PCA 和 LDA 之后,每个类只有 3 个特征(比如 10 个类),而我有大约 100 个样本从每个班级。 GMM 只看到降维。此外,当我绘制协方差矩阵的椭圆体(围绕它们的均值)时,簇是相当独立的。
    猜你喜欢
    • 1970-01-01
    • 2014-05-02
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多