- 第2章 Spark ML数学基础
- 2.1 矩阵向量计算
- 2.1.1 Breeze 创建函数
- 2.1.2 Breeze 元素访问
- 2.1.3 Breeze 其他函数
- 2.2 BLAS 介绍 (一个线性代数计算库)
- 2.2.1 BLAS 向量-向量运算
- 2.2.2 BLAS 矩阵-向量运算
- 2.2.3 BLAS 矩阵-矩阵运算
- 2.3 分类效果评估指标
- 2.3.1 评估指标 (度量指标)
- 2.3.2 评估指标实例
- 2.4 机器学习案例
- 2.4.1 二元分类案例—使用 Spark ML 的逻辑回归来预测乳腺癌
- 2.4.2 多元分类案例—使用 Spark ML 的逻辑回归来预测音乐标签
- Spark MLlib底层的向量、矩阵运算使用了 Breeze库,Breeze库提供了 Vector/Matrix 的实现以及相应计算的接口 (Linalg)。但是在MLlib里面同时也提供了Vector和Linalg等的实现。
-
(1) 在使用 Breeze 库时,需要导入相关包:
import breeze.linalg._
import breeze.numerics._ -
(2) API:
http://www.scalanlp.org/api/breeze/index.html#breeze.linalg.package
Breeze 三角函数、Breeze 对数和指数函数等。详情略。
2.2 BLAS 介绍 (一个线性代数计算库)
BLAS按照功能被分为三个级别:
- Level 1:矢量-矢量运算,比如点积 (ddot),加法和数乘(daxpy),绝对值的和(dastum),等等;
- Level 2:矩阵-矢量运算,最重要的函数是一般的矩阵向量乘法(dgemv);
- Level 3:矩阵-矩阵运算,最重要的函数是一般的矩阵乘法 (dgemm);
注: 每一种函数操作都区分不同数据类型 (单精度、双精度、复数)
2.2.1 BLAS 向量-向量运算 2.2.2 BLAS 矩阵-向量运算 2.2.3 BLAS 矩阵-矩阵运算API: http://www.netlib.org/blas/
2.3 分类效果评估指标
在有监督分类问题中, 存在每个数据点的真实输出,以及模型生成的预测输出。因此, 每个数据点的结果均可分配到如下四个类别中:
- 真正类(True positive): 标签是正类并且被预测成正类。
- 假正类(False positive): 标签是负类并且被预测成正类。
- 真负类(True negative): 标签是负类并且被预测成负类。
- 假负类(false negative): 标签是正类并且被预测成负类。
在对分类器进行评估时, 通常有以下几个评估指标:
- 准确率(P: Precision): accuracy = (TP)/ (TP + FP)。
- 召回率(R: Recall): recall = TP / (P) = TP / (TP +FP)。
准确率表示模型中判为正的样本中有多少是真正的正样本。另外,召回率则展示了测试在检测正类方面有多好。在大多数应用中,准确率和召回率之间存在一个可以接受的平衡。可将两者进行合并,从而得到一个单一度量,称为 F值(F-Measure, 又称F-Score):
// 为模型评估初始化一个多类度量 (metrics包含模型的各种度量信息) val metrics = new MulticlassMetrics(scoreAndLabels) // Precision by label (准确率) val labels = metrics.labels labels.foreach( l => println(s"Precision($l) = " + metrics.precision(l)) ) // Recall by label (召回率) labels.foreach( l => println(s"Recall($l) = " + metrics.recall(l)) ) // False positive rate by label (假正类比例) labels.foreach( l => println(s"FPR($l) = " + metrics.falsePositiveRate(l)) ) // F-measure by label (F1分数) labels.foreach( l => println(s"F1-Score($l) = " + metrics.fMeasure(l)) )
2.4 机器学习案例 2.4.1 二元分类案例—使用 Spark ML 的逻辑回归来预测乳腺癌
- 该案例的详细描述请参考: 使用Spark ML的逻辑回归来预测乳腺癌。
- 该案例的详细描述请参考: 使用Spark ML的逻辑回归来预测音乐标签。



