gpt4 book ai didi

apache-spark - PySpark中MatrixFactorizationModel的缓存因子

转载 作者:行者123 更新时间:2023-12-04 04:12:46 27 4
gpt4 key购买 nike

加载保存的 MatrixFactorizationModel 后,我收到警告:
MatrixFactorizationModelWrapper:产品因子没有分区器。对单个记录的预测可能很慢。
MatrixFactorizationModelWrapper:不缓存乘积因子。预测可能很慢。

并且确实计算很慢并且不能很好地扩展

如何设置分区器并缓存产品因子?

添加演示问题的代码:

from pyspark import SparkContext
import sys

sc = SparkContext("spark://hadoop-m:7077", "recommend")
from pyspark.mllib.recommendation import ALS, MatrixFactorizationModel, Rating
model = MatrixFactorizationModel.load(sc, "model")
model.productFeatures.cache()

我得到:

回溯(最近一次调用最后一次):
文件“/home/me/recommend.py”,第 7 行,在
模型.productFeatures.cache()
AttributeError: 'function' 对象没有属性 'cache'

最佳答案

关于缓存,就像我在评论框中写的那样,您可以缓存您的 rdd 执行以下操作:

rdd.cache() # for Scala, Java and Python

编辑 :userFeatures 和 productFeatures 都是 RDD[(Int, Array[Double]) 类型。 (Ref. Official Documentation )

要缓存 productFeature,您可以执行以下操作
model.productFeatures().cache() 

当然,我认为加载的模型称为模型。

例子 :
r1 = (1, 1, 1.0)
r2 = (1, 2, 2.0)
r3 = (2, 1, 2.0)

ratings = sc.parallelize([r1, r2, r3])

from pyspark.mllib.recommendation import ALS

model = ALS.trainImplicit(ratings, 1, seed=10)
model.predict(2, 2)

feats = model.productFeatures()

type(feats)

>> MapPartitionsRDD[137] at mapPartitions at PythonMLLibAPI.scala:1074
feats.cache()

至于关于分区器的警告,即使您对模型进行分区,让我们通过 .partitionBy() 的功能来平衡它,它仍然会太昂贵的性能。

有一个关于此问题的 JIRA 票证 ( SPARK-8708),应该在 Spark (1.5) 的下一个版本中解决。

尽管如此,如果您想了解更多关于分区算法的知识,我邀请您阅读这张票 SPARK-3717 中的讨论。关于在 DecisionTree 和 RandomForest 算法中按特征进行分区的争论。

关于apache-spark - PySpark中MatrixFactorizationModel的缓存因子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32205543/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com