Spark-MLlib
[TOC]
机器学习基础


有监督学习
有监督的学习方法
在样本标签已知的情况下,可以统计出各类训练样本不 同的描述量,如其概率分布,或在特征空间分布的区域 等,利用这些参数进行分类器设计,称为有监督的学习 方法。
无监督学习
无监督学习
然而在实际应用中,不少情况下无法预先知道样本的标
签,也就是说没有训练样本
因而只能从原先没有样本标签的样本集开始进行分类器 设计,这就是通常说的无监督学习方法。
对一个具体问题来说有监督与无监督的作法是不相同的
机器学习实时过程

Spark MLlib
MLlib 是 Apache Spark中的组件之一,专注 于机器学习:
MLlib是Spark中的核心机器学习库
由AMPLab实验室的Mlbase团队开发
由来个各个机构的超过80个代码贡献者
支持Scala, Python, Java 和R语言
为什么使用MLlib
弹性扩容
性能好
文档友好
维护开销底
scikit-lean 为python的一个机器学习包,但是是单机的

MLlib构成
两个算法包
spark.mllib:包含原始API,构建在RDD之上
spark.ml:基于DataFrame构建的高级API
如何选择
spark.ml 具备更优的性能和更好的扩展性,建议优先选用;
Spark.mllib仍将继续更新,且目前包含更多(相 比于spark.ml)的算法
目前所有的spark框架,都在想dataframe和dataset转移,spark streaming 中的structure streaming就是基于dataframe来做的实时框架, spark.ml也是基于dataframe来的机器学习框架
数据类型(Data Type)
向量,带类别的向量,矩阵等
数学统计计算库
基本统计量(min, max, average等),相关分析,随机数产生器,假设检验等
机器学习管道(pipeline)
Transformer
Estimator
Parameter
机器学习算法
分类算法
回归算法
聚类算法
协同过滤
数据类型
Vector
Dense vector
Sparse vector
Labeled point
Matrix
Local Matrix
Distributed Matrix
Dense & Sparse


Labeled Point

LOCAL Matrix

Distributed Matrix




数据统计计算库
Spark ML Pipeline
机器学习管道(Pipeline)
由一系列阶段构成,每个阶段是Transformer或Estimator,它们串联到一起按照顺序执行。
数据管道组件构成
Transformer:算法可以把一个DataFrame转换成另一个 DataFrame。
特征转换器(feature transformer):读取输入数据集中的一列(比如 text),将产生新的特征列
学习模型(learning model),将一个有特征列的DataFrame转换成一 个有预测信息的DataFrame
Estimator:Estimator就是一种机器学习算法,会从输入数据 中进行学习,并产生一个训练模型(Transformer)。

Transformer与Estimator
Transformer:transform()方法
Estimator:fit()方法
Feature Extractors
TF-IDF
Word2Vec
CountVectorizer
Feature Transformers
Tokenizer
StopWordsRemover
$n$-gram
Binarizer
PCA
PolynomialExpansion
Discrete Cosine Transform (DCT)
StringIndexer
IndexToString
OneHotEncoder
VectorIndexer
Interaction
Normalizer
StandardScaler
MinMaxScaler
MaxAbsScaler
Bucketizer
ElementwiseProduct
SQLTransformer
VectorAssembler
QuantileDiscretizer
Feature Selectors
VectorSlicer
RFormula
ChiSqSelector
Locality Sensitive Hashing
LSH Operations
Feature Transformation
Approximate Similarity Join
Approximate Nearest Neighbor Search
LSH Algorithms
Bucketed Random Projection for Euclidean Distance
MinHash for Jaccard Distance
测试
BinaryClassificationMetrics
计算ROC、AUC
MulticlassMetrics
计算准确率、召回率、F1 score
RegressionMetrics
均方差、R2等
例如:
val fullPredictions = model.transform(testdata).cache()
val predictions = fullPredictions.select("prediction").rdd.map(_.getDouble(0))
val labels = fullPredictions.select(labelColName).rdd.map(_.getDouble(0))
val metrics = new MulticlassMetrics(predictions.zip(labels))
val accuracy = metrics.accuracy val recall = metrics.recall
ML中的分类和回归算法
Classification
Logistic regression
Binomial logistic regression
Multinomial logistic regression
Decision tree classifier
Random forest classifier
Gradient-boosted tree classifier
Multilayer perceptron classifier
One-vs-Rest classifier (a.k.a. One-vs-All)
Naive Bayes
Regression
Linear regression
Generalized linear regression
Available families
Decision tree regression
Random forest regression
Gradient-boosted tree regression
Survival regression
Isotonic regression
Examples
Linear methods
Decision trees
Inputs and Outputs
Input Columns
Output Columns
Tree Ensembles
Random Forests
Inputs and Outputs
Input Columns
Output Columns (Predictions)
Gradient-Boosted Trees (GBTs)
Inputs and Outputs
Input Columns
Output Columns (Predictions)
推荐算法
协同过滤(Collaborative Filtering,简称CF)推 荐算法,CF的基本思想是根据用户之前的喜好
以及其他兴趣相近的用户的选择来给用户推荐物
品。
CF算法分类
User-based:基于用户对物品的偏好找到相邻邻居用户,然后将邻居用户喜欢的推荐给当前用户。
Item-based:基于用户对物品的偏好找到相似的物品 然后根据用户的历史偏好,推荐相似的物品给他。
Last updated
Was this helpful?