定義指標

定義指標 #

定義指標 (metric) 是機器學習當中最重要的一步,決定指標以後才能知道我們的模型應該要往哪個方向學習。指標必須依據我們想要解決的問題來決定,當指標越好時,模型在解決問題上的表現就應該要越好,反之亦然,如此指標才能如實反應模型的好壞。當指標決定以後,模型再根據指標設計 loss function,理想情況是,當我們 loss function 分數越好時,指標就會越好,反之亦然。在這個情況下,我們在最佳化 loss function 時,同時就是在最佳化我們想要解決的問題。

如何決定指標 #

以房價預測模型為例 #

以房價預測模型為例,因為房價是一個實數,所以直覺的想法就會是用 mean square error。我們這邊指的房價是含車位的房屋總價 (必須要有明確定義)。

\( MSE=(y - p)^2 \text{,其中 } p \text{ 是模型預測,} y \text{ 是正確答案 (房價)。} \)

我們的目標就是要最小化 MSE。最小化 MSE 的意義是什麼呢?意義在於,我們對於高估一塊錢的「不開心」等於低估一塊錢的「不開心」,而且差一塊錢的「四倍不開心」等於差兩塊錢的「不開心」。如果我們希望差一塊錢的「兩倍不開心」等於差兩塊錢的「不開心」且高估一塊錢的「不開心」等於低估一塊錢的「不開心」,那我們會選擇 mean absolute error

\( MAE=|y - p| \text{,其中 } p \text{ 是模型預測,} y \text{ 是正確答案 (房價)。} \)

如果說,我們覺得總價相差 10% 以內都算準,都當作答對,超過 10% 算答錯。答對的話,差 1% 跟差 5% 對我們的應用來說沒差,答錯的話,差 11% 跟差 90% 對我們的應用來說沒差,那我們可以用這個函式來當我們的指標:

\( score=-sign(\frac{|p - y|}{y}-0.1) \text{,其中 } p \text{ 是模型預測,} y \text{ 是正確答案 (房價)。若 } \frac{|p - y|}{y}=0.1 \text{ 則 } score=1 \)

這時候就變成「準」跟「不準」的二元分類問題。

指標根據我們實際想要得到的目標來決定,有了指標以後才能根據這個指標來決定模型的 loss function,讓模型在最佳化 loss function 的時候同時在最佳化我們的指標。

類別不平衡 #

如果我們的問題是如何從 X 光片判斷一個人有沒有肺癌,由於台灣癌症發生率約為每十萬人口 345.4 人,可以想見大部分的 X 光片都不會有癌症。這是一個類別不平衡 (class imbalanced) 的問題。這時候如果用準確率當指標 (準確率為模型預測正確的資料筆數除以全部的資料筆數)。因此,只要全部答沒有癌症,準確率就可以達到 99% 以上,基本上是完全沒有預測力的模型。但認真做預測的時候,可能有些對有些錯,難以到達 99% 的準確率。當兩個類別其中一個佔大多數的時候,就必須使用其他指標。

其中一個常見的指標為 f-score。

\(f-score=\frac{(1 + \beta^2)precision \times recall}{\beta^2 precision + recall} \newline precision = \frac{true\:positive}{true\:positive + false\:positive} \newline recall = \frac{true\:positive}{true\:positive + false\:negative}\)

\(\beta=1\) ,則表示 precision 跟 recall 一樣重要,這時候稱為 f1-score。假設有 1% 的人有癌症,此時若全部猜沒有,則 precision = 0、recall = 0.1 則 f1-score 為 0。可解決全部猜 0 比認真做預測還要高分的情況。

單一指標的重要性 #

假設我們有一個電商的推薦系統 (模型 A),每次推薦五個商品給使用者。我們希望點擊率越高越好,過了一陣子以後發現,雖然點擊率很好,但是模型只推薦熱門商品,所以被點過的商品數量很少。我們測試了一個新的模型 B,成效如下:

模型點擊率被點擊商品佔所有商品比例
A30%1%
B25%10%

A 點擊率比較高,但是 B 被點擊商品數比較多,這時候就不知道該說 A 比較好還是 B 比較好。所以我們必須定義唯一的指標來決定模型的好壞,可以是:

\(score=2\frac{\text{點擊率} \times \text{被點擊商品佔所有商品比例}}{\text{點擊率} + \text{被點擊商品佔所有商品比例}} \newline\)

或者根據我們在乎點擊率比較多,或是在乎被點擊商品數比較多,來對分數作調整。有了確定且唯一的指標以後,模型才有辦法根據這個指標設計 loss function,在最佳化 loss function 的時候同時最佳化我們想要的指標,也就是我們實際上想解決的問題。

comments powered by Disqus