評估計量
您的 數據集分成 兩個部分:一組用於定型,以及一組用於測試。 定型集是用來定型模型,而測試集會在定型之後用來做為模型的測試,以計算模型效能和評估。 測試集不會透過定型程式引入模型,以確保模型是在新的數據上測試。
成功完成定型之後,系統會自動觸發模型評估。 評估程式一開始會使用定型的模型來預測測試集中檔的使用者定義類別,並將其與所提供的數據標記進行比較(這會建立真實基準)。 系統會傳回結果,以便檢閱模型的效能。 針對評估,自定義文字分類會使用下列計量:
精確度:測量模型精確/準確程度。 這是正確識別的正數(真陽性)與所有已識別的正數之間的比率。 精確度計量會顯示已正確標示的預測類別數目。
Precision = #True_Positive / (#True_Positive + #False_Positive)
召回:測量模型預測實際正數類別的能力。 這是預測真肯定與實際標記的比率。 召回計量會顯示有多少預測類別正確。
Recall = #True_Positive / (#True_Positive + #False_Negatives)
F1 分數:F1 分數是 Precision 和 Recall 的功能。 當您在精確度與召回之間尋求平衡時,需要用到它。
F1 Score = 2 * Precision * Recall / (Precision + Recall)
注意
精確度、召回率和 F1 分數會分別針對每個類別計算(類別層級 評估)和模型集體計算(模型層級 評估)。
模型層級和類別層級評估計量
類別層級和模型層級評估的精確度、召回率和評估定義都相同。 不過,True Positive、False Positive 和 False Negative 的計數會有所不同,如下列範例所示。
下列各節使用下列範例數據集:
文件 | 實際類別 | 預測類別 |
---|---|---|
1 | 動作, 喜劇 | 喜劇 |
2 | action | action |
3 | 浪漫 | 浪漫 |
4 | 浪漫, 喜劇 | 浪漫 |
5 | 喜劇 | action |
動作類別的類別層級評估
索引鍵 | 計數 | 說明 |
---|---|---|
真肯定 | 1 | 檔 2 已正確分類為 動作。 |
誤判 | 1 | 檔 5 錯誤地分類為 動作。 |
誤否定 | 1 | 檔 1 雖然應該將其分類為 動作 。 |
有效位數 = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5
記得 = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5
F1 分數 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5
喜劇類別的類別層級評估
索引鍵 | 計數 | 說明 |
---|---|---|
確判為真 | 1 | 檔 1 已正確分類為 喜劇。 |
誤判為真 | 0 | 沒有錯誤地將檔分類為 喜劇。 |
誤判為假 | 2 | 檔5和4沒有分類為 喜劇 ,雖然他們應該有。 |
有效位數 = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1
記得 = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 2) = 0.33
F1 分數 = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 0.67) / (1 + 0.67) = 0.80
集體模型的模型層級評估
索引鍵 | 計數 | 說明 |
---|---|---|
真肯定 | 4 | 在預測時,檔 1、2、3 和 4 被指定正確的類別。 |
誤判 | 1 | 檔 5 在預測時被賦予了錯誤的類別。 |
誤否定 | 2 | 在預測時,檔 1 和 4 並未提供所有正確的類別。 |
有效位數 = #True_Positive / (#True_Positive + #False_Positive) = 4 / (4 + 1) = 0.8
記得 = #True_Positive / (#True_Positive + #False_Negatives) = 4 / (4 + 2) = 0.67
F1 分數 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.8 * 0.67) / (0.8 + 0.67) = 0.73
注意
對於單一標籤分類模型,誤判和誤判計數一律相等。 自定義單一標籤分類模型一律會預測每個檔的一個類別。 如果預測不正確,則預測類別的 FP 計數會增加一個,而實際類別的 FN 則增加一個,模型的整體 FP 和 FN 計數一律相等。 這不是多重標籤分類的情況,因為無法預測檔的其中一個類別會算作誤判。
解譯類別層級評估計量
那麼,對於特定類別來說,擁有高精確度或高召回率實際上意味著什麼?
重新叫用 | 精確度 | 解釋 |
---|---|---|
高 | 高 | 此類別完全由模型處理。 |
低 | 高 | 模型不一定能預測這個類別,但當模型確實具有高度信賴度時。 這可能是因為此類別在數據集中代表不足,因此請考慮平衡數據散發。 |
高 | 低 | 模型會妥善預測此類別,不過其信賴度很低。 這可能是因為這個類別是在數據集中表示的,所以請考慮平衡您的數據散發。 |
低 | 低 | 此類別的處理方式不佳,模型通常不會預測,而且當它是時,則不具高度信賴度。 |
自定義文字分類模型預期會同時遇到誤判和誤判。 您需要考慮每個都會如何影響整體系統,並仔細思考模型會忽略正確預測的案例,並辨識不正確的預測。 視您的案例而定, 精確度 或 召回 率可能更適合評估模型的效能。
例如,如果您的案例涉及處理技術支援票證,則預測錯誤的類別可能會導致轉寄給錯誤的部門/小組。 在此範例中,您應該考慮讓系統對誤判更敏感,而精確度會是評估的更相關計量。
另一個範例是,如果您的案例牽涉到將電子郵件分類為「重要」或「垃圾郵件」,則如果電子郵件標示為「垃圾郵件」,則不正確的預測可能會導致您錯過有用的電子郵件。 不過,如果垃圾郵件標示 為重要 ,您可以忽略它。 在此範例中,您應該考慮讓系統更敏感於誤判,而重新叫用會是更相關的評估計量。
如果您想要針對一般用途案例進行優化,或當精確度和召回率都很重要時,您可以使用 F1 分數。 評估分數是主觀的,視您的案例和驗收準則而定。 沒有適用於每個案例的絕對計量。
指引
定型模型之後,您會看到如何改善模型的一些指引和建議。 建議建立涵蓋指引區段中所有點的模型。
定型集有足夠的數據:當類別類型在定型數據中有少於15個標記的實例時,由於模型在這些案例上未充分定型,因此可能會導致精確度較低。
所有類別類型都存在於測試集中:當測試數據缺少類別類型的標記實例時,模型的測試效能可能會因為未經測試的案例而變得較不全面。
類別類型在定型和測試集內是平衡的:當取樣偏差導致類別類型頻率的不正確表示時,可能會因為模型預期該類別類型發生太頻繁或太少而降低精確度。
類別類型平均分散在定型集和測試集之間:當類別類型的混合與定型集之間不相符時,由於模型在定型方式與測試方式不同,因此可能會導致較低的測試精確度。
定型集中的類別類型明顯不同:當定型數據與多個類別類型類似時,可能會導致較低的精確度,因為類別類型可能會經常被誤分類為彼此。
混淆矩陣
重要
多卷標分類項目無法使用混淆矩陣。 混淆矩陣是用於模型效能評估的 N x N 矩陣,其中 N 是類別數目。 矩陣會比較預期的標籤與模型所預測的標籤。 這可全面檢視模型的執行效能,以及其所發生的錯誤種類。
您可以使用混淆矩陣來識別彼此太接近的類別,而且經常發生錯誤(模棱兩可)。 在此情況下,請考慮將這些類別合併在一起。 如果不可能,請考慮使用這兩個類別來標記更多檔,以協助模型區分它們。
所有正確的預測都位於數據表的對角線中,因此可以輕鬆地以視覺方式檢查數據表是否有預測錯誤,因為它們會以對角線以外的值表示。
您可以從混淆矩陣計算類別層級和模型層級評估計量:
- 對角線中的值是 每個類別的 True Positive 值。
- 類別數據列中的值總和(不包括對角線)是 模型的誤判 。
- 類別數據行中值的總和(不包括對角線)是 模型的 false 負數 。
同樣地,
- 模型的真正正數是所有類別的真肯定總和。
- 模型的誤判是所有類別的誤判總和。
- 模型的 false Negative 是所有類別的誤判總和。