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

模型前瞻分析架構為資料科學家提供Data Science Workspace工具,讓他們快速且知情地選擇以實驗為基礎的最佳機器學習模型。 該框架將提高機器學習工作流的速度和效率,並提高資料科學家的易用性。 這是通過為每個機器學習算法類型提供預設模板來幫助進行模型調整來完成的。 最終結果使資料科學家和公民資料科學家能夠為最終客戶做出更好的模型優化決策。

什麼是量度?

在實作和訓練模型之後,資料科學家接下來要做的就是找出模型的效能。 各種量度可用來找出模型與其他量度相比的成效。 使用的量度範例包括:

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

配置方式代碼

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

配方的范常式式碼位於recipes下的experience-platform-dsw-reference存放庫。 本教學課程將參照此存放庫中的特定檔案。

斯卡拉

有兩種方式可將量度帶入方式。 一種是使用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
注意

如果未定義量度,預設量度將會作用中。

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

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

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

evaluator.class 預設量度 evaluation.metric
DefaultBinaryClassificationEvaluator -Precision
-Recall
— 混淆矩陣
-F-Score
— 精度
— 接收機工作特性
— 接收機工作特性下的區域
-PRECISION
-RECALL
-CONFUSION_MATRIX
-FSCORE
-ACCURACY
-ROC
-AUROC
DefaultMultiClassificationEvaluator -Precision
-Recall
— 混淆矩陣
-F-Score
— 精度
— 接收機工作特性
— 接收機工作特性下的區域
-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。

重要

對於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沒有預設評估量度。 因此,若要取得Python或Tensorflow的評估量度,您需要建立自訂的評估量度。 這可透過實作Evaluator類別來完成。

Python的自訂評估量度

對於自訂評估量度,有兩種主要方法需要為評估器實施:split()evaluate()

對於Python,這些方法將定義在Evaluator類的evaluator.py中。 如需Evaluator的範例,請遵循evaluator.py連結。

在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的評估度量,您需要將applicationEvaluator類定義為配方的一部分。

R的自訂評估量度

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

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

  • 載入資料
  • 資料準備/特徵工程
  • 檢索保存的模型並評估

資料會先從retail.config.json中定義的來源載入至資料集。 從那裡,資料會經過清理和設計,以符合機器學習模型。 最後,利用資料集進行預測,並根據預測值和實際值計算度量。 在這種情況下,MAPE、MAE和RMSE在metrics對象中定義並返回。

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

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

ML演算法類型 評估量度 視覺效果
回歸 - RMSE
- MAPE
- MASE
- MAE
預測值與實際值覆蓋曲線
二進位分類 — 混淆矩陣
- Precision-recall
— 準確度
- F分數(具體而言是F1,F2)
- AUC
- ROC
ROC曲線與混淆矩陣
多類分類 — 混淆矩陣
— 對於每個類:
- precision-recall準確度
- F分數(具體為F1、F2)
ROC曲線與混淆矩陣
聚類(含地面真值) - NMI(標準化互資訊分數)、AMI(調整互資訊分數)
- RI(蘭德指數)、ARI(調整後的蘭德指數)
— 同質性分數、完整性分數和V-measure
- FMI(Fowlkes-Mallows指數)
— 純度
- Jaccard指數
簇圖,顯示簇和中心線,其相對簇大小反映掉在簇內的資料點
群集(無地面真值) — 慣性
— 側面影像系數
- CHI(Calinski-Harabaz指數)
- DBI(Davies-Bouldin指數)
- Dunn指數
簇圖,顯示簇和中心線,其相對簇大小反映掉在簇內的資料點
建議 — 平均平均精度(MAP)
— 標準化折扣累積增益
— 平均倒數排名
— 量度K
TBD
TensorFlow使用案例 張量流模型分析(TFMA) 深度比較神經網路模型比較/可視化
其他/錯誤捕獲機制 由模型作者定義的自訂量度邏輯(和對應的評估圖表)。 模板不匹配時的順利錯誤處理 含評估量度索引鍵值組的表格

本頁內容