火花矩阵分解的预测时间

2024-07-03 08:07:43 发布

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

我有一个简单的Python应用程序。 接受评级.csv有用户标识,产品标识,等级 它包含4M记录,然后我使用Spark AlS保存模型,然后将其加载到matrixFactorization。在

我的方法预测的问题是,预测用户和产品之间的评级需要超过一秒钟。 我的服务器是32G和8核。 有什么建议可以把预测时间提高到100毫秒以下吗。 以及数据集中的多个记录与预测时间之间的关系。在

我正在做的是:

spark_config = SparkConf().setAll([('spark.executor.memory', '32g'), ('spark.cores.max', '8')]) 
als_recommender.sc = SparkContext(conf=spark_config) #training_data is array of tulips of 4 M record 
training_data = als_recommender.sc.parallelize(training_data) als_recommender.model = ALS.trainImplicit(training_data, 10, 10, nonnegative=True) 
als_recommender.model.save(als_recommender.sc, "....Ameer/als_model") 
als_recommender_model = MatrixFactorizationModel.load(als_recommender.sc, "....Ameer/als_model") 
als_recommender_model.predict(1,2913)

Tags: of用户configdatamodel产品记录training
1条回答
网友
1楼 · 发布于 2024-07-03 08:07:43

基本上,您不希望每次需要回答时都加载完整的模型。在

根据模型更新频率和预测查询的数量,我可以:

  • 将模型保存在内存中,并能够从那里回答查询。对于答案<;100ms,您需要测量每个步骤。利维是个很好的接球手,但我不确定它的开销。在
  • 输出每个用户的前X个预测,并将其存储在DB中。Redis是一个很好的候选者,因为它的fast,值可以是一个列表

相关问题 更多 >