模型分析框架为数据科学家提供了Data Science Workspace中的工具,以便快速、明智地选择基于实验的最佳机器学习模型。 该框架将提高机器学习工作流的速度和有效性,并提高数据科学家的易用性。 这是通过为每个机器学习算法类型提供默认模板来协助模型调整来完成的。 最终结果使数据科学家和公民数据科学家能够为其最终客户做出更好的模型优化决策。
在实施和训练模型之后,数据科学家下一步要做的就是找到模型的性能。 可使用各种量度来查找与其他量度相比,模型的效果如何。 使用的量度示例包括:
目前,模型分析框架支持以下运行时:
experience-platform-dsw-reference存储库的recipes
下可找到方法的示例代码。 在本教程中将引用此存储库中的特定文件。
可通过两种方式将量度引入方法。 一种是使用SDK提供的默认评估量度,另一种是编写自定义评估量度。
默认评估将作为分类算法的一部分进行计算。 以下是当前实施的计算器的一些默认值:
计算器类 | evaluation.class |
---|---|
DefaultBinaryClassificationEvaluator | com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator |
DefaultMultiClassificationEvaluator | com.adobe.platform.ml.impl.DefaultMultiClassificationEvaluator |
RecommendationsEvaluator | com.adobe.platform.ml.impl.RecommendationsEvaluator |
计算器可在recipe
文件夹application.properties文件的方法中定义。 下面显示了启用DefaultBinaryClassificationEvaluator
的示例代码:
evaluation.class=com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
evaluation.labelColumn=label
evaluation.predictionColumn=prediction
training.evaluate=true
启用计算器类后,在培训期间会默认计算许多量度。 可通过将以下行添加到您的application.properties
来明确声明默认量度。
evaluation.metrics.com=com.adobe.platform.ml.impl.Constants.DEFAULT
如果未定义量度,则默认量度将处于活动状态。
可通过更改evaluation.metrics.com
的值来启用特定量度。 在以下示例中,启用了F分数量度。
evaluation.metrics=com.adobe.platform.ml.impl.Constants.FSCORE
下表说明了每个类的默认量度。 用户还可以使用evaluation.metric
列中的值来启用特定量度。
evaluator.class |
默认指标 | evaluation.metric |
---|---|---|
DefaultBinaryClassificationEvaluator |
-Precision -Recall — 混淆矩阵 -F — 得分 — 准确度 — 接收器操作特征 — 接收器操作特征下的区域 |
-PRECISION - RECALL - CONFUSION_MATRIX - FSCORE - ACCURACY - ROC >- AUROC |
DefaultMultiClassificationEvaluator |
-Precision -Recall — 混淆矩阵 -F — 得分 — 准确度 — 接收器操作特征 — 接收器操作特征下的区域 |
-PRECISION - RECALL - CONFUSION_MATRIX - FSCORE - ACCURACY - ROC >- AUROC |
RecommendationsEvaluator |
— 平均平均精度(MAP) — 标准化折扣累积增益 — 平均倒数排名 — 量度K |
-MEAN_AVERAGE_PRECISION - NDCG - MRR - METRIC_K |
可通过扩展Evaluator.scala
文件中MLEvaluator.scala
的接口来提供自定义计算器。 在示例Evaluator.scala文件中,我们定义自定义split()
和evaluate()
函数。 我们的split()
函数以8:2的比率随机拆分数据,而我们的evaluate()
函数定义并返回3个量度:MAPE, MAE和RMSE。
对于MLMetric
类,在创建新的MLMetric
时,请勿将"measures"
用于valueType
,否则该量度将不会填充到自定义评估量度表中。
执行此操作:metrics.add(new MLMetric("MAPE", mape, "double"))
不是:metrics.add(new MLMetric("MAPE", mape, "measures"))
在方法中定义后,下一步是在方法中启用它。 此操作在项目resources
文件夹的application.properties文件中完成。 在此,将evaluation.class
设置为Evaluator.scala
中定义的Evaluator
类
evaluation.class=com.adobe.platform.ml.Evaluator
在Data Science Workspace中,用户将能够在实验页面的“评估量度”选项卡中看到分析。
目前,Python或Tensorflow没有默认的评估量度。 因此,要获取Python或Tensorflow的评估量度,您需要创建自定义的评估量度。 这可以通过实现Evaluator
类来完成。
对于自定义评估量度,需要为评估器实施以下两种主要方法:split()
和evaluate()
。
对于Python,这些方法将在Evaluator
类的evaluator.py中定义。 有关Evaluator
的示例,请访问evaluator.py链接。
在Python中创建评估量度时,用户需要实施evaluate()
和split()
方法。
evaluate()
方法返回量度对象,该对象包含具有name
、value
和valueType
属性的量度对象数组。
split()
方法的目的是输入数据并输出培训和测试数据集。 在我们的示例中,split()
方法使用DataSetReader
SDK输入数据,然后通过删除不相关的列来清理数据。 从此处,将根据数据中的现有原始功能创建其他功能。
split()
方法应返回训练和测试数据帧,然后由pipeline()
方法使用该数据帧来训练和测试ML模型。
对于Tensorflow,与Python类似,需要实现Evaluator
类中的evaluate()
和split()
方法。 对于evaluate()
,应返回量度,而split()
返回培训和测试数据集。
from ml.runtime.python.Interfaces.AbstractEvaluator import AbstractEvaluator
class Evaluator(AbstractEvaluator):
def __init__(self):
print ("initiate")
def evaluate(self, data=[], model={}, config={}):
return metrics
def split(self, config={}):
return 'train', 'test'
目前,R没有默认的评估量度。因此,要获取R的评估量度,您需要定义applicationEvaluator
类作为方法的一部分。
applicationEvaluator
的主要用途是返回包含量度键值对的JSON对象。
此applicationEvaluator.R可以用作示例。 在此示例中,applicationEvaluator
分为三个熟悉的部分:
数据首先从retail.config.json中定义的源加载到数据集。 从那里,将清理并设计数据以适合机器学习模型。 最后,利用模型进行预测,根据预测值和实际值计算量度。 在这种情况下,在metrics
对象中定义并返回MAPE、MAE和RMSE。
Sensei Model Insights Framework将为每种类型的机器学习算法支持一个默认模板。 下表显示了常见的高级机器学习算法类以及相应的评估量度和可视化图表。
ML算法类型 | 评估量度 | 可视化图表 |
---|---|---|
回归 | - RMSE - MAPE - MASE - MAE |
预测值与实际值叠加曲线 |
二进制分类 | — 混淆矩阵 - Precision-recall - Accuracy - F-score(特别是F1,F2) - AUC - ROC |
ROC曲线与混淆矩阵 |
多类分类 | — 混淆矩阵 — 对于每个类: - precision-recall准确度 - F分数(特别是F1、F2) |
ROC曲线与混淆矩阵 |
聚类(含地面真值) | - NMI(标准化互信息得分)、AMI(调整互信息得分) - RI(兰德指数)、ARI(调整后的兰德指数) — 同质性得分、完整性得分和V-measure - FMI(福尔克斯 — 马洛斯指数) — 纯度 - Jaccard指数 |
具有相对簇大小的簇和中心的簇图反映位于簇内的数据点 |
聚类(不含地面真值) | - Inertia — 侧面影像系数 - CHI(Calinski-Harabaz指数) - DBI(Davies-Bouldin指数) - Dunn指数 |
具有相对簇大小的簇和中心的簇图反映位于簇内的数据点 |
推荐 | — 平均平均精度(MAP) — 标准化折扣累积增益 — 平均倒数排名 — 量度K |
待定 |
TensorFlow用例 | 张量流模型分析(TFMA) | 深度比较神经网络模型比较/可视化 |
其他/错误捕获机制 | 由模型作者定义的自定义量度逻辑(和相应的评估图)。 模板不匹配时的正常错误处理 | 包含评估量度键值对的表 |