scikit-learn主要是在单机上运行,mllib可以分布式在集群上运行,可以处理更大量的数据。
另外mllib为了处理更大量的数据减少IO通信,对算法会做一些优化,可能会牺牲一丢丢精确度。
- 基于DataFrame的API目前正在逐步取代RDD的API。
- 因为DataFrame的接口更加友好,在不同的机器学习算法和多种语言之中提供了统一的接口
DataFrame促进ML Pipelines
Basic Statistics 基本统计学知识
1、相关关系 Correlation
Pearson’s correlation
Spearman’s correlation
2、假设检验 Hypothesis testing
用于确定一个结果是否是显著的,是否是随机发生的
一般用卡方检验Chi-squared ( χ2) tests
ML Pipelines
关键概念有:
- DataFrame:存储各种数据
- Transformer:将一个DataFrame转成另外一种DataFrame 入:DataFrame => 出: Data Frame
- Estiamtor:用在DataFrame上产生Transformer的算法 入:DataFrame => 出:Transformer
- PipeLine:A Pipeline chains multiple Transformers and Estimators together to specify an ML workflow
- Parameter: Transformers和Estimators 共享的一套通用的参数API
Transformer
包含feature transformers和learned models的一个抽象 1、feature transformers Transformer一般会实现一个方法transform(),这个方法通过给DataFrame加上一些栏位, 将其转化为另一个DataFrame 2、learned models 这个模型读取DataFrame中含有特征向量的栏位,预测,输出一个新的DataFrame
(添加了一个新栏,存了预测出来的标签)
Estimators
一般会实现一个fit()方法,传入一个DataFrame,输出一个Model,即Transformer
Properties of pipeline components
Each instance of a Transformer or Estimator has a unique ID, which is useful in specifying parameters
Pipeline
How it works
training time
PipeLine,最终经LogisticRegression.fit()产生LogisticRegressionModel,这是一个Transformer
test time
PipeLineModel
Details:
1、DAG Pipelines
PipeLine的Stage,是有一个特定的顺序的。这里的例子是线性的。
但是当数据流形成了一个 Directed Acyclic Graph (DAG),PipeLines很可能是非线性的。
此时stages可能是一种拓扑的顺序
2、Runtime checking
Pipelines可以处理含多种数据类型的DataFrame,所以不能做编译时类型检查
所以Pipelines和PipelineModels做运行时检查
类型检查使用DataFrame schema
3、Unique Pipeline stages
同样的实例不能多次放入一个pipeline中去
Parameters
Param
ParamMap
向算法传递参数的两种方法:set、ParamMap
ML persistence: Saving and Loading Pipelines
Extracting, transforming and selecting features
Feature Extractors
TF-IDF:信息检索数据挖掘的常用加权技术