经过长时间 运行 离线 Spark (MLlib) 模型训练后实时获得预测的过程是什么?

What is the procedure to get the prediction in real-time after long running off-line Spark (MLlib) model training?

比如我用MLlib logistic regression来训练数据集,每个数据都有超过1亿个特征,经过几个小时的训练我们得到了模型,如何使用模型“实时”预测” 那么,例如,网页在 200 毫秒内响应用户预测结果? 只需使用 model.predict(...)?

对于 Spark 2.0 逻辑回归仅支持 binary classification 。 OP 说回归..所以我们需要跟进..

在任何情况下,对于使用逻辑回归的二元分类,预测所做的工作几乎是微不足道的:

BLAS.dot(features, coefficients) + intercept

所以 Spark 只需要取训练权重 ("coefficients") 和输入行的点积。

要牢记一件事:单行必须适合单台机器的内存。另外向量中的元素数量==特征数量必须保持<= 2^31.

进一步更新 Regression 在 Spark 2.0 MLlib 中通过支持以下 "families" 的 GeneralizedLinearRegression class 处理:

  • 高斯
  • 二项式
  • 泊松
  • 伽玛

计算由WeightedLeastSquares执行,类似于LogisticRegression

BLAS.dot(features, coefficients) + intercept

因此预测的复杂度 - 因此预测应该完成 大约与将要预测的观察加载到 Spark ,并且不管它的大小。它只需要适合一台机器的内存。