以GBDT和随机森林为例,它们处理数据的过程是相似的,原始数据都是经过StringIndexer、VectorAssembler和VectorIndexer这三个环节转化为训练样本,只不过GBDT最后用GBTRegressor来做回归,而随机森林用RandomForestClassifier来做分类
Spark MLlib Pipeline
Pipeline是一套基于DataFrame的高阶开发API,它让开发者以一种高效的方式,来打造端到端的机器学习流水线。
Pipeline的核心组件有两类,一类是Transformer,另一类是Estimator,这两个都属于转换器,比如StringIndexer、MinMaxScaler、Bucketizer、VectorAssembler
TransFormer
TransFormer的输入是DataFrame,输出也是DataFrame。都实现了setInputCol和setOutputCol这两个方法
优势:
- 并行计算:与 RNN 不同,Transformer 可以并行处理整个序列,显著提高训练速度。
- 长距离依赖:自注意力机制能够直接捕捉序列中任意位置之间的关系。
- 可扩展性:通过堆叠更多层或增加模型尺寸,可以显著提升性能。
Estimator
Estimator是TensorFlow中的一个高级API,用于简化机器学习模型的训练、评估和预测过程。它提供了一种封装好的方式,可以快速构建和部署模型,特别适合生产环境。对比TransFormer,Estimator要简单点,它实际上就是各类模型算法,如随机森林、线性回归等,核心接口只有一个,就是fit
优势:
Estimator的设计使得代码更易于维护和扩展。它内置了模型检查点、日志记录和分布式训练支持,减少了开发者的重复工作。Estimator还支持自定义模型,灵活性较高。
构建Pipeline
一个Pipeline可以包含多个Transformer和Estimator,但最后一个环节必须是Estimator。Pipeline fit方法的输出结果,即是训练好的机器学习模型。它的核心优势是提升机器学习应用的开发效率,并同时消除测试样本与训练样本之间不一致这一致命隐患。Pipeline可用于作业内的代码复用,或是作业间的代码复用。