我试图找出使用Spark + MLlib生成的模型(在这种情况下是协作过滤推荐引擎)以正确的方式快速,按需和作为服务器提供预测的正确方法。
我目前的解决方案是为此目的连续运行Spark实例,但我想知道是否有更好的解决方案,也许是一个不需要运行Spark的解决方案。也许有一种方法可以在不涉及Spark的情况下加载和使用Spark生成的模型?
答案 0 :(得分:0)
您可以通过pmml导出模型,然后获取该模型并在另一个应用程序中使用它。
答案 1 :(得分:0)
现在我找到了方法。首先,我们可以通过model.productFeatures() and Model.userFeatures()
然后我们获得这样的产品功能
209699159874445020
0.0533636957407,-0.0878632888198,0.105949401855,0.129774808884,0.0953511446714,0.16420891881,0.0558457262814,0.0587058141828
因此,我们可以在python中将产品功能和用户功能加载到两个dicts中,并通过龙卷风制作服务器以使用这两个dicts来预测评级。我将展示代码。
def predict(item_id, user_id):
ind = item_id_index[item_id]
gf = goods_features[ind,1:]
ind = user_id_index[user_id]
uf = user_features[ind,1:]
return blas.ddot(gf,uf,len(gf),0,1,0,1)
作为结论。我们需要自己坚持als模型,并不像我们想象的那么困难。欢迎任何建议。