高斯混合模型:Spark MLlib和scikitlearn的区别

2024-04-25 13:25:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在一个数据集的样本上使用高斯混合模型。 我同时使用了MLlib(与pyspark)和{},得到了非常不同的结果,scikit-learn看起来更真实。在

from pyspark.mllib.clustering import GaussianMixture as SparkGaussianMixture
from sklearn.mixture import GaussianMixture
from pyspark.mllib.linalg import Vectors

Scikit学习

^{pr2}$

MLLib

model2 = SparkGaussianMixture.train(
    sc.createDataFrame(local).rdd.map(lambda x: Vectors.dense(x.field)),
    k=3,
    convergenceTol=1e-4,
    maxIterations=100
)

model2.gaussians
[MultivariateGaussian(mu=DenseVector([28736.5113]), sigma=DenseMatrix(1, 1, [1094083795.0001], 0)),
 MultivariateGaussian(mu=DenseVector([7839059.9208]), sigma=DenseMatrix(1, 1, [38775218707109.83], 0)),
 MultivariateGaussian(mu=DenseVector([43.8723]), sigma=DenseMatrix(1, 1, [608204.4711], 0))]

但是,我对通过模型运行整个数据集很感兴趣,我担心这需要并行化(因此使用MLlib)来在有限时间内得到结果。我是不是做错了什么/遗漏了什么?在

数据

完整的数据有一个非常长的尾巴,看起来像: enter image description here

然而,数据有一个明显的正常距离,接近由scikit-learn聚集的数据:

enter image description here

我使用的是Spark 2.3.0(AWS EMR)。在

编辑:初始化参数:

local = pd.DataFrame([ x.asDict() for x in df.sample(0.0001).collect() ])
model1 = GaussianMixture(n_components=3, init_params='random')
model1.fit([ [x] for x in local['field'].tolist() ])

model1.means_
array([[2.17611913e+04],
   [8.03184505e+06],
   [7.56871801e+00]])

model1.covariances_
rray([[[1.01835902e+09]],
   [[3.98552130e+13]],
   [[6.95161493e+00]]])

Tags: 数据from模型importlocalscikitsigmapyspark
2条回答

我真的不知道在scikit-learnSpark中使用了哪种类型的EM alghoritm,但我确信如果他们使用SEM(随机期望最大化),它应该比EM覆盖得更快(see this)。在

然而,为了避免鞍点或局部极大值,通常建议采用多次起动技术。在

我真的不明白你的情节,它们的比例不一样,第二个是第一个的放大吗?顺便说一句,我建议你用BIC(Bayesian Information criteria)来选择k的个数,并用这个度量来选择组件的个数。在

这本身不是python的问题。IMO,这似乎更像是一个机器学习/数据验证/数据分割的问题,也就是说,你认为你必须并行化你的工作是正确的,但是你用什么方式来做才重要。在你的模型中有一些类似8位量化和模型并行性的东西,你可以通过研究来帮助你得到你想要的:在不牺牲数据质量或保真度的前提下,及时地在大型数据集上训练模型。在

这是一篇关于量化的博客:https://petewarden.com/2016/05/03/how-to-quantize-neural-networks-with-tensorflow/

这是一篇关于模型并行性和8位量化的博文:http://timdettmers.com/2017/04/09/which-gpu-for-deep-learning/

以及相关文件:https://arxiv.org/pdf/1511.04561.pdf

尽管您需要记住,根据您的GPU上的FP操作,您可能不会从该路径中看到实质性的好处:https://blog.inten.to/hardware-for-deep-learning-part-3-gpu-8906c1644664

HTH和YMMV。在

另外,你可能想研究数据折叠,但不记得细节,也不记得我在这个时候读过的论文。我会把这个放在这里记住的。在

相关问题 更多 >

    热门问题