【问题标题】:How to use Spark MlLib/Pipelines to build 1 model per each user [duplicate]如何使用 Spark MlLib/Pipelines 为每个用户构建 1 个模型 [重复]
【发布时间】:2017-08-12 20:50:14
【问题描述】:

我想为我的数据集中的每个用户训练不同的模型。 Spark MlLib/Pipelines 中是否有内置支持?

如果没有,为每个用户训练多个单独模型的最简单/最简洁的方法是什么?

【问题讨论】:

    标签: scala apache-spark apache-spark-mllib


    【解决方案1】:

    不幸的是Spark-ML 不提供分离概念“单一模型 - 单一用户”的能力。但是您可以根据需要制作自定义逻辑。我看到解决此任务的两种可能变体。 解决这种情况的第一个方案是遵循下一个算法(我以一切为例 - 你会有不同的步骤,但算法在逻辑上会相似):

    • 您必须获取特定用户的训练数据 -(例如从 hdfs、s3 等读取数据 csv 文件)
    • Dataset 的训练模型取决于用户相关数据 - 让我们考虑下一种情况,您的数据集有两列 - 具体标准 X 和用户生产力 Y 和最新参数对于用户组是可变的 -例如,您必须使用 LinearRegression 训练您的模型,以便预测用户是否可以按时完成工作。
    • 接下来,根据调用训练模型将数据保存到磁盘 用户的 id、组等。

    第二种方法是训练您的模型,使其适用于每个用户,您必须选择算法选项,使其不依赖于用户组,换句话说,将训练模型的算法推广到所有用户组 -在这种情况下,你没有分离感
    “单模型--> 单用户”。如果第二种变体对您的数据集的实现更复杂,请遵循第一种方法。

    【讨论】:

    • 选项 1:为所有用户并行化模型训练的最佳方式是什么?选项 2:您能否扩展“训练您的模型以使其适用于每个用户”?
    • @Gevorg Option1 - 如果您只是指训练过程的并行化,您可以使用 ForkJoinPool 或 Akka 编写自定义逻辑,如果您指的是单个模型的并行训练过程,我建议您查看集成Keras 和 Spark Ml - github.com/maxpumperla/elephas#spark-ml-example Option2 - 建议您可以为所有用户制作通用模型 - 这是唯一的假设,因为我不知道数据集的外观
    猜你喜欢
    • 2015-10-06
    • 2020-02-23
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2017-03-24
    相关资源
    最近更新 更多