我一直在玩Spark/mllib提供的高斯混合模型。Spark/Mllib以分佈式方式訓練許多GaussianMixture模型
我發現它非常好的載體轉/分的巨大數量產生一GaussianMixture。然而,ML並非總是如此。很多時候,您不需要從無數向量生成模型,而是從少數向量生成無數模型(即爲每個數百個用戶創建一個數據庫用戶的GMM)。
在這一點上,我不知道如何與mllib繼續,因爲我看不到一個簡單的方法由用戶和數據都分配。
實施例:
Let featuresByUser = RDD[user, List[Vectors]],
the natural way to train a GMM for each user might be something like
featuresByUser.mapValues(
feats => new GaussianMixture.set(nGaussians).run(sc.parallelize(feats))
)
然而,衆所周知,這是在火花禁止的。裏面的sc.parallelize不在驅動程序中,所以這會導致錯誤。
所以現在的問題是,
應Mllib方法接受序列[載體]作爲輸入,除了 RDD [矢量]因此,程序員可以選擇其他根據問題之一。
有沒有辦法,我缺少處理這種情況下(使用mllib)任何其他解決辦法?
感謝您寶貴和快速的答案。當擁有大量用戶時,選項2在我看來更合適一些;但是,確實很遺憾Mllib會限制這種情況。希望這將在將來以他在scala中以ML爲事實標準轉換圖書館的方式得到解決。 – Javier
似乎他們對這個用例是開放的,只是沒有人對它做過工作。正在考慮考慮如何自己整合它,但不認爲我會有時間,現在替代解決方案可以正常工作。如果您認爲它解決了您的問題,請隨時接受我的答案。 – sgvd