使用模型深入分析框架最佳化模型

模型深入分析架構提供資料科學家在Data Science Workspace中的工具,以便根據實驗快速且明智地選擇最佳機器學習模型。 此架構將提高機器學習工作流程的速度和有效性,並改善資料科學家的易用性。 為每個機器學習演演算法型別提供預設範本,以協助模型調整,藉此完成調整。 最終結果可讓資料科學家和公民資料科學家為其最終客戶做出更好的模型最佳化決策。

什麼是量度?

實作和訓練模型後,資料科學家的下一步是找出模型執行的效果。 您可使用各種量度來瞭解模型與其他量度相比時的效能。 所使用量度的部分範例包括:

  • 分類準確度
  • 曲線下的區域
  • 混淆矩陣
  • 分類報告

設定配方代碼

目前,模型深入分析架構支援下列執行階段:

您可以在recipes下的experience-platform-dsw-reference存放庫中找到配方範常式式碼。 在本教學課程中,將會參考此存放庫中的特定檔案。

Scala scala

有兩種方式可將量度帶入配方。 一種是使用SDK提供的預設評估量度,另一種是撰寫自訂評估量度。

Scala的預設評估量度

預設評估作為分類演演算法的一部分進行計算。 以下是目前已實作之評估器的部分預設值:

評估器類別
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
NOTE
如果未定義量度,預設量度將會啟用。

變更evaluation.metrics.com的值即可啟用特定量度。 在以下範例中,會啟用F分數量度。

evaluation.metrics=com.adobe.platform.ml.impl.Constants.FSCORE

下表列出每個類別的預設度量。 使用者也可以使用evaluation.metric欄中的值來啟用特定量度。

evaluator.class
預設量度
evaluation.metric
DefaultBinaryClassificationEvaluator
— 精確度
— 召回
— 混淆矩陣
-F分數
— 精確度
— 接收器操作特性下的接收器操作特性
— 區域
-PRECISION
-RECALL
-CONFUSION_MATRIX
-FSCORE
-ACCURACY
-ROC
-AUROC
DefaultMultiClassificationEvaluator
— 精確度
— 召回
— 混淆矩陣
-F分數
— 精確度
— 接收器操作特性下的接收器操作特性
— 區域
-PRECISION
-RECALL
-CONFUSION_MATRIX
-FSCORE
-ACCURACY
-ROC
-AUROC
RecommendationsEvaluator
— 平均平均精確度(MAP)
— 標準化折現累積增益
— 平均倒數排名
— 量度K
-MEAN_AVERAGE_PRECISION
-NDCG
-MRR
-METRIC_K

Scala的自訂評估量度

可藉由延伸Evaluator.scala檔案中的MLEvaluator.scala介面來提供自訂評估器。 在範例Evaluator.scala檔案中,我們定義了自訂split()evaluate()函式。 我們的split()函式以8:2的比率隨機分割資料,我們的evaluate()函式定義並傳回3個量度:MAPE、MAE和RMSE。

IMPORTANT
對於MLMetric類別,在建立新的MLMetric時不要對valueType使用"measures",否則量度將不會填入自訂評估量度表格中。
執行此動作: 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 pythontensorflow

截至目前,Python或Tensorflow沒有預設的評估量度。 因此,若要取得Python或Tensorflow的評估量度,您必須建立自訂評估量度。 這可透過實作Evaluator類別來完成。

Python的自訂評估量度

對於自訂評估量度,有兩個主要方法需要針對評估器實作: split()evaluate()

對於Python,這些方法將在Evaluator類別的evaluator.py中定義。 請依照evaluator.py連結來取得Evaluator的範例。

在Python中建立評估度量需要使用者實作evaluate()split()方法。

evaluate()方法傳回量度物件,該物件包含屬性為namevaluevalueType的量度物件陣列。

split()方法的目的是輸入資料,並輸出訓練與測試資料集。 在我們的範例中,split()方法使用DataSetReader SDK輸入資料,然後移除不相關的欄來清除資料。 從那裡,系統會根據資料中現有的原始功能建立其他功能。

split()方法應傳回訓練和測試資料流,然後pipeline()方法會使用此資料流來訓練和測試ML模型。

Tensorflow的自訂評估量度

對於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

R目前沒有預設的評估量度。因此,若要取得R的評估量度,您必須將applicationEvaluator類別定義為配方的一部分。

R的自訂評估量度

applicationEvaluator的主要用途是傳回包含量度索引鍵值配對的JSON物件。

applicationEvaluator.R可作為範例使用。 在此範例中,applicationEvaluator分為三個相似的區段:

  • 載入資料
  • 資料準備/功能工程
  • 擷取已儲存的模型並評估

資料會先從retail.config.json中定義的來源載入到資料集。 從那裡,資料經過清理和工程,以適合機器學習模型。 最後,此模型可用我們的資料集進行預測,並根據預測值和實際值計算量度。 在此案例中,MAPE、MAE和RMSE已定義並傳回metrics物件。

使用預先建立的量度和視覺效果圖表

Sensei Model Insights Framework將為每種型別的機器學習演演算法支援一個預設範本。 下表顯示常見的高階機器學習演演算法類別以及對應的評估量度和視覺效果。

ML演演算法型別
評估量度
視覺效果
迴歸
- RMSE
- MAPE
- MASE
- MAE
預測值與實際值覆蓋曲線
二進位分類
— 混淆矩陣
— 精確召回
— 精確度
- F分數(特別的是F1,F2)
- AUC
- ROC
ROC曲線和混淆矩陣
多類別分類
— 混淆矩陣
— 針對每個類別:
— 精確召回率
- F分數(尤其是F1、F2)
ROC曲線和混淆矩陣
叢集(含基本事實)
- NMI (標準化互資訊分數)、AMI (調整互資訊分數)
- RI (蘭德指數)、ARI (調整蘭德指數)
— 同質性分數、完整性分數和V-measure
- FMI (福克斯 — 馬洛指數)
— 純度
- Jaccard指數
顯示叢集與質心的叢集圖,其相對叢集大小反映落於叢集內的資料點
叢集(不含地面真實值)
— 慣性
— 剪影係數
- CHI (Calinski-Harabaz索引)
- DBI (Davies-Bouldin索引)
- Dunn索引
顯示叢集與質心的叢集圖,其相對叢集大小反映落於叢集內的資料點
建議
— 平均平均精確度(MAP)
— 標準化折現累積增益
— 平均倒數排名
— 量度K
待定
TensorFlow使用案例
張量流量模型分析(TFMA)
Deepcompare神經網路模型比較/視覺效果
其他/錯誤擷取機制
模型作者定義的自訂量度邏輯(以及對應的評估圖表)。 在範本不符的情況下正常處理錯誤
包含評估量度的索引鍵值配對的表格
recommendation-more-help
cc79fe26-64da-411e-a6b9-5b650f53e4e9