使用模型分析框架优化模型
模型分析框架为数据科学家提供了以下工具: Data Science Workspace 通过实验对最优的机器学习模型进行快速明智的选择。 该框架将提高机器学习工作流的速度和效率,并改善数据科学家的易用性。 这是通过为每个机器学习算法类型提供默认模板来协助模型调整来完成的。 最终结果允许数据科学家和公民数据科学家为其最终客户做出更好的模型优化决策。
什么是量度?
在实施和培训模型后,数据科学家的下一步工作是确定模型表现如何。 可使用各种量度来了解模型与其他模型相比的有效性。 使用的一些量度示例包括:
- 分类准确性
- 曲线下的区域
- 混淆矩阵
- 分类报告
配置方法代码
目前,模型分析框架支持以下运行时:
可在以下位置找到方法的示例代码: experience-platform-dsw-reference 存储库位于 recipes
. 在本教程中,将引用此存储库中的特定文件。
Scala scala
可通过两种方式将量度引入配方。 一种是使用SDK提供的默认评估指标,另一种是编写自定义评估指标。
Scala的默认评估指标
默认评估作为分类算法的一部分计算。 以下是当前实施的评估器的一些默认值:
evaluation.class
com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
com.adobe.platform.ml.impl.DefaultMultiClassificationEvaluator
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
— 标准化折现累积收益
— 平均倒数排名
— 量度K
MEAN_AVERAGE_PRECISION
-
NDCG
-
MRR
-
METRIC_K
Scala的自定义评估指标
通过扩展以下项的界面,可提供自定义求值器: 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 pythontensorflow
截至目前,还没有针对以下项的默认评估指标 Python 或 Tensorflow. 因此,要获得以下项的评估指标 Python 或 Tensorflow,您需要创建一个自定义评估指标。 这可以通过实施 Evaluator
类。
自定义评估指标 Python
对于自定义评估量度,需要为评估器实施以下两种主要方法: split()
和 evaluate()
.
对象 Python,这些方法将定义在 evaluator.py 对于 Evaluator
类。 请遵循 evaluator.py 链接中的示例 Evaluator
.
在中创建评估指标 Python 要求用户实施 evaluate()
和 split()
方法。
此 evaluate()
方法返回指标对象,该指标对象包含指标对象的数组,其属性为 name
, value
、和 valueType
.
目的 split()
方法是输入数据,输出训练数据集和测试数据集。 在我们的示例中, split()
方法输入数据时,使用 DataSetReader
SDK,然后通过删除不相关的列来清理数据。 从那里,使用数据中的现有原始功能创建其他功能。
此 split()
方法应返回训练和测试数据流,然后由使用 pipeline()
用于训练和测试ML模型的方法。
Tensorflow的自定义评估指标
对象 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
截至目前,R没有默认的评估指标。因此,要获得R的评估指标,您需要定义 applicationEvaluator
分类作为配方的一部分。
R的自定义评估指标
的主要目的 applicationEvaluator
是返回包含量度键值对的JSON对象。
此 applicationEvaluator.R 可用作示例。 在此示例中, applicationEvaluator
分为三个常见部分:
- 加载数据
- 数据准备/功能工程
- 检索已保存的模型并评估
数据首先从源加载到数据集,如中所定义 retail.config.json. 从那里,数据被清理和工程化以适合机器学习模型。 最后,利用该模型对数据集进行预测,根据预测值和实际值计算指标。 在这种情况下,MAPE、MAE和RMSE定义并返回 metrics
对象。
使用预建量度和可视化图表
此 Sensei Model Insights Framework 将为每种类型的机器学习算法支持一个默认模板。 下表显示了常见的高级机器学习算法类以及相应的评估指标和可视化图表。
- MAPI
- MASE
- MAE
— 精确回调
— 准确性
- F分数(尤其是F1、F2)
- AUC
- ROC
— 对于每个类:
— 查准率
- F分数(尤其是F1、F2)
- RI(兰德指数)、ARI(调整后兰德指数)
— 同质性分数、完整性分数和V-measure
- FMI(Fowlkes-Mallows指数)
— 纯度
- Jaccard索引
— 侧面影像系数
- CHI (Calinski-Harabaz指数)
- DBI(Davies-Bouldin索引)
- Dunn索引
— 标准化折现累积收益
— 平均倒数排名
— 量度K