模型分析框架为数据科学家提供了以下工具: 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 |
可在的方法中定义评估器 application.properties 中的文件 recipe
文件夹。 示例代码启用 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 |
— 精度 -Recall — 混淆矩阵 -F分数 — 精度 — 接收器工作特性 — 接收器下的区域工作特性 |
-PRECISION - RECALL - CONFUSION_MATRIX - FSCORE - ACCURACY - ROC - AUROC |
DefaultMultiClassificationEvaluator |
— 精度 -Recall — 混淆矩阵 -F分数 — 精度 — 接收器工作特性 — 接收器下的区域工作特性 |
-PRECISION - RECALL - CONFUSION_MATRIX - FSCORE - ACCURACY - ROC - AUROC |
RecommendationsEvaluator |
— 平均平均精度(MAP) — 标准化折现累积收益 — 平均倒数排名 — 量度K |
-MEAN_AVERAGE_PRECISION - NDCG - MRR - METRIC_K |
通过扩展以下项的界面,可提供自定义求值器: MLEvaluator.scala
在您的 Evaluator.scala
文件。 在本例中 Evaluator.scale 文件,我们定义自定义 split()
和 evaluate()
函数。 我们的 split()
函数以8:2的比率随机拆分我们的数据,并且 evaluate()
函数定义和返回3个量度:MAPE、MAE和RMSE。
对于 MLMetric
类,请勿使用 "measures"
对象 valueType
创建新时 MLMetric
否则该量度将不会填充到自定义评估量度表中。
执行此操作: metrics.add(new MLMetric("MAPE", mape, "double"))
不是这样: metrics.add(new MLMetric("MAPE", mape, "measures"))
一旦在方法中定义了,下一步就是要在方法中启用它。 此操作可在 application.properties 项目中的文件 resources
文件夹。 此处 evaluation.class
设置为 Evaluator
中定义的类 Evaluator.scala
evaluation.class=com.adobe.platform.ml.Evaluator
在 Data Science Workspace,用户将能够在实验页面的“评估量度”选项卡中查看见解。
截至目前,还没有针对以下项的默认评估指标 Python 或 Tensorflow. 因此,要获得以下项的评估指标 Python 或 Tensorflow,您需要创建一个自定义评估指标。 这可以通过实施 Evaluator
类。
对于自定义评估量度,需要为评估器实施以下两种主要方法: split()
和 evaluate()
.
对象 Python,这些方法将定义在 evaluator.py 对于 Evaluator
类。 请遵循 evaluator.py 链接中的示例 Evaluator
.
在中创建评估指标 Python 要求用户实施 evaluate()
和 split()
方法。
此 evaluate()
方法返回指标对象,该指标对象包含指标对象的数组,其属性为 name
, value
、和 valueType
.
目的 split()
方法是输入数据,输出训练数据集和测试数据集。 在我们的示例中, split()
方法输入数据时,使用 DataSetReader
SDK,然后通过删除不相关的列来清理数据。 从那里,使用数据中的现有原始功能创建其他功能。
此 split()
方法应返回训练和测试数据流,然后由使用 pipeline()
用于训练和测试ML模型的方法。
对象 Tensorflow,类似于 Python,方法 evaluate()
和 split()
在 Evaluator
类需要实现。 对象 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. 从那里,数据被清理和工程化以适合机器学习模型。 最后,利用该模型对数据集进行预测,根据预测值和实际值计算指标。 在这种情况下,MAPE、MAE和RMSE定义并返回 metrics
对象。
此 Sensei Model Insights Framework 将为每种类型的机器学习算法支持一个默认模板。 下表显示了常见的高级机器学习算法类以及相应的评估指标和可视化图表。
ML算法类型 | 评估指标 | 可视化图表 |
---|---|---|
回归 | - RMSE - MAPI - MASE - MAE |
预测值与实际值叠加曲线 |
二进制分类 | — 混淆矩阵 — 精确回调 — 准确性 - F分数(尤其是F1、F2) - AUC - ROC |
ROC曲线和混淆矩阵 |
多类分类 | — 混淆矩阵 — 对于每个类: — 查准率 - F分数(尤其是F1、F2) |
ROC曲线和混淆矩阵 |
聚类(包含基本事实) | - NMI(归一化互信息分数)、AMI(调整后的互信息分数) - RI(兰德指数)、ARI(调整后兰德指数) — 同质性分数、完整性分数和V-measure - FMI(Fowlkes-Mallows指数) — 纯度 - Jaccard索引 |
簇图显示簇和反映簇内数据点的相对簇大小的质心 |
群集(不含地面真实值) | — 惯性 — 侧面影像系数 - CHI (Calinski-Harabaz指数) - DBI(Davies-Bouldin索引) - Dunn索引 |
簇图显示簇和反映簇内数据点的相对簇大小的质心 |
推荐 | — 平均平均精度(MAP) — 标准化折现累积收益 — 平均倒数排名 — 量度K |
待定 |
TensorFlow用例 | 张量流模型分析(TFMA) | 深度比较神经网络模型比较/可视化 |
其他/错误捕获机制 | 模型作者定义的自定义量度逻辑(以及相应的评估图表)。 在模板不匹配的情况下正常处理错误 | 具有评估量度的键值对的表 |