評估計量
資料集分成兩個部分:一組用於定型,而一組用於測試。 定型集是用來定型模型,而測試集則用來在定型之後作為模型的測試,以計算模型效能和評估。 系統不會透過定型程序將測試集導入模型,以確保已針對新資料上測試模型。
成功完成定型之後,就會自動觸發模型評估。 評估程序會使用已定型的模型來針對測試集中的文件預測使用者定義的類別,並將其與所提供的資料標籤比較 (而這會建立事實的基準)。 結果會傳回,讓您可以檢閱模型的效能。 進行評估時,自訂文字分類會使用下列計量:
精確度:測量模型的精確/正確程度。 這是正確識別到的肯定 (確判為真) 與所有識別到的肯定之間的比率。 精確度計量會顯示已正確標示的預測類別數目。
Precision = #True_Positive / (#True_Positive + #False_Positive)
召回率:測量模型預測實際肯定類別的能力。 這是所預測確判為真與實際標記項目之間的比率。 召回率計量會顯示有多少預測類別是正確的。
Recall = #True_Positive / (#True_Positive + #False_Negatives)
F1 分數:F1 分數是精確度和召回率的函式。 當您在精確度和召回率之間尋求平衡時,需要用到此值。
F1 Score = 2 * Precision * Recall / (Precision + Recall)
注意
精確度、召回率及 F1 分數會分別針對每個類別 (類別層級評估) 計算,也會針對整個模型 (模型層級評估) 計算。
模型層級和類別層級的評估計量
對於類別層級和模型層級的評估而言,精確度、召回率和評估的定義都相同。 不過,如下列範例所示,確判為真、誤判為真和誤否定的計數會有所不同。
下列各節會使用下列範例資料集:
文件 | 實際類別 | 預測類別 |
---|---|---|
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 是類別的數目。 矩陣會比較預期的標籤與模型所預測的標籤。 這可讓您全面了解模型的表現,以及所犯的錯誤種類。
您可以使用混淆矩陣來識別彼此太接近且通常會弄錯 (模稜兩可) 的類別。 在此情況下,請考慮將這些類別合併在一起。 如果無法這麼做,請考慮對更多文件加上兩個類別的標籤,以協助模型加以區分。
所有正確預測都位於資料表的對角線中,因此可以輕鬆地以視覺化方式檢查資料表中的預測錯誤,因為錯誤會以對角線以外的值來表示。
您可以從混淆矩陣計算類別層級和模型層級的評估計量:
- 對角線中的值是每個類別的確判為真值。
- 類別資料列中的值加總 (不包括對角線) 是模型的誤判為真。
- 類別資料行中的值加總 (不包括對角線) 是模型的誤判為假。
同樣地,
- 模型的確判為真是所有類別的確判為真加總。
- 模型的誤判為真是所有類別的誤判為真加總。
- 模型的誤判為假是所有類別的誤判為假加總。