使用模型深入分析框架最佳化模型
模型深入分析架構提供資料科學家在Data Science Workspace中的工具,以便根據實驗快速且明智地選擇最佳機器學習模型。 此架構將提高機器學習工作流程的速度和有效性,並改善資料科學家的易用性。 為每個機器學習演演算法型別提供預設範本,以協助模型調整,藉此完成調整。 最終結果使數據科學家和公民數據科學家能夠為其最終客戶做出更好的模型優化決策。
什麼是量度?
在實現並培訓模型之後,數據科學家要做的下一步是找到模型的性能。 使用各種指標來查找模型與其他模型相比的有效性。 可使用的一些量度範例包括:
- 分類準確性
- 曲線下的區域
- 混淆矩陣
- 分類報告
設定配方代碼
目前,模型深入分析架構支援下列執行階段:
您可以在recipes
下的experience-platform-dsw-reference存放庫中找到配方範常式式碼。 在本教學課程中,將會參考此存放庫中的特定檔案。
Scala scala
有兩種方式可將量度帶入配方。 一種是使用SDK提供的預設評估量度,另一種是撰寫自訂評估量度。
Scala的預設評估量度
預設評估作為分類演演算法的一部分進行計算。 以下是目前已實作之評估器的部分預設值:
evaluation.class
com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
com.adobe.platform.ml.impl.DefaultMultiClassificationEvaluator
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
-召回
-混淆矩陣
-F 分數
-準確性
-接收器操作特性
-接收器工作特性下的區域
PRECISION
-
RECALL
-
CONFUSION_MATRIX
-
FSCORE
-
ACCURACY
-ROC
AUROC
DefaultMultiClassificationEvaluator
— 召回
— 混淆矩陣
-F分數
— 精確度
— 接收器操作特性下的接收器操作特性
— 區域
PRECISION
-
RECALL
-
CONFUSION_MATRIX
-
FSCORE
-
ACCURACY
-
ROC
-
AUROC
RecommendationsEvaluator
— 標準化折現累積增益
— 平均倒數排名
— 量度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
時不要對valueType
使用"measures"
,否則量度將不會填入自訂評估量度表格中。metrics.add(new MLMetric("MAPE", mape, "double"))
不是這個:
metrics.add(new MLMetric("MAPE", mape, "measures"))
在配方中定義之後,下一步就是在配方中啟用它。 這是在專案資料夾resources
的 應用程式.properties 文件中完成的。此處 設為 evaluation.class
Evaluator
中定義的類別 Evaluator.scala
evaluation.class=com.adobe.platform.ml.Evaluator
在 中 Data Science Workspace,用戶可以看見實驗頁面的「評估量度」標籤中的深入分析。
Python/Tensorflow pythontensorflow
截至目前,沒有 或Tensorflow的默認Python評估指標。因此,要獲取 或Tensorflow的Python評估指標,您需要創建自定義評估量度。這可以通過實現 Evaluator
類來完成。
自訂評估量度 Python
對於自訂評估量度,有兩個主要方法需要針對評估器實作: split()
和evaluate()
。
對於Python,這些方法將在Evaluator
類別的evaluator.py中定義。 請依照evaluator.py連結來取得Evaluator
的範例。
在Python中建立評估度量需要使用者實作evaluate()
和split()
方法。
evaluate()
方法傳回量度物件,該物件包含屬性為name
、value
和valueType
的量度物件陣列。
該方法的目的是 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將為每種型別的機器學習演演算法支援一個預設範本。 下表顯示常見的高階機器學習演演算法類別以及對應的評估量度和視覺效果。
- MAPE
- MASE
- MAE
— 精確召回
— 精確度
- F分數(特別的是F1,F2)
- AUC
- ROC
— 針對每個類別:
— 精確召回率
- F分數(尤其是F1、F2)
- RI (蘭德指數)、ARI (調整蘭德指數)
— 同質性分數、完整性分數和V-measure
- FMI (福克斯 — 馬洛指數)
— 純度
- Jaccard指數
— 剪影係數
- CHI (Calinski-Harabaz索引)
- DBI (Davies-Bouldin索引)
- Dunn索引
— 標準化折現累積增益
— 平均倒數排名
— 量度K