例如,如果我使用MLlib逻辑回归来训练数据集,并且每个数据都有超过100,000,000个特征,经过数小时的训练后我们得到模型,如何使用该模型进行“实时”预测例如,网页是否以200毫秒的预测结果响应用户?
只需使用model.predict(...)
?
答案 0 :(得分:1)
对于Spark 2.0 Logistic回归仅支持二进制分类。 OP表示回归..所以我们需要跟进...
在使用Logistic Regressiob的二进制分类的任何情况下,为预测完成的工作几乎是微不足道的:
BLAS.dot(features, coefficients) + intercept
所以Spark只需要获取经过训练的权重("系数")和输入行的DOT产品。
要记住的一件事是:单行必须适合单个计算机的内存。此外,向量中的元素数量==要素数量必须保持< = 2 ^ 31。
Spark 2.0中的 进一步更新 Regression
MLlib通过GeneralizedLinearRegression
类处理,该类支持以下"系列":
计算由WeightedLeastSquares
执行,类似于LogisticRegression
BLAS.dot(features, coefficients) + intercept
因此预测的复杂度低 - 所以预测应该尽快完成加载观察预测到Spark 所需的速度,而不管它是什么尺寸。它只需要适合一台机器的内存。