使用Model Insights框架優化模型

模型洞察框架為資料科學家提供Data Science Workspace工具,讓他們快速且知情地選擇以實驗為基礎的最佳機器學習模型。 該框架將提高機器學習工作流程的速度和效率,並改善資料科學家的使用便利性。 這是透過為每個機器學習演算法類型提供預設範本來協助模型調整來完成。 最終結果使資料科學家和公民資料科學家能夠為其最終客戶做出更好的模型優化決策。

什麼是量度?

在建置和訓練模型後,資料科學家下一步要做的就是找出模型的效能。 使用各種度量來尋找模型與其他模型相比的效果。 使用的量度範例包括:

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

設定方式代碼

目前,Model Insights Framework支援下列執行時期:

配方的范常式式碼可在experience-platform-dsw-reference儲存庫的recipes下找到。 本教程將引用此儲存庫中的特定檔案。

斯卡拉

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

Scala的預設評估量度

預設評估會計算為分類演算法的一部分。 以下是目前實作的評估工具的一些預設值:

| 求值器類 | evaluation.class |

DefaultBinaryClassificationEvaluator
DefaultMultiClassificationEvaluator
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
-Communsing Matrix
-F-Score
-Accuracy
-Receiver操作特性下的
-Area | -PRECISION
-RECALL
-CONFUSION_MATRIX-
-FSCORE
-ACCURACY-
-ROC
-AUROC |
| DefaultMultiClassificationEvaluator | -Precision
-Recall
-Communsing Matrix
-F-Score
-Accuracy
-Receiver操作特性下的
-Area | -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.py中,用於Evaluator類。 如需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中定義的來源載入資料集。 在此基礎上,整理並設計資料以符合機器學習模型。 最後,利用該模型進行預測,從預測值和實際值出發,計算度量。 在這種情況下,在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-score(具體是F1, F2) | ROC曲線與混淆矩陣 |
| 叢集(含地面真值) | - NMI(標準化互資訊得分)、AMI(調整後互資訊得分)
- RI(Rand指數)、ARI(調整後蘭德指數)
-同質性得分、完整性得分和V-measure
- FMI(Fowlkes-Mallows指數)
-純度
ard指數 | 具有相對簇大小的簇和中心的簇圖反映了簇內的資料點 |
| 群集(無地面真值) | - Inertia
- Silhouette系數
- CHI(Calinski-Harabaz指數)
- DBI(Davies-Bouldin指數)
- Dunn指數 | 具有相對簇大小的簇和中心的簇圖反映了簇內的資料點 |
| 建議 | -平均平均精確度(MAP)
-標準化的折扣累積增益
-平均倒數排名
-量度K | TBD |
| TensorFlow使用案例 | 張量流模型分析(TFMA) | 深度比較神經網路模型比較/可視化 |
| 其他/錯誤擷取機制 | 模型作者定義的自訂量度邏輯(及對應的評估圖表)。 範本不相符時的流暢錯誤處理 | 具有評估度量關鍵值配對的表格 |

本頁內容

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now