西瓜書2.21 loss公式的推導過程


  1. 概念
    AUC(Area Under ROC Curve),指的是ROC曲線下面的面積,用於評估ROC曲線的性能。

  2. 計算
    其實ROC的公式挺簡單的,就是一個梯形面積的公式:

書上公式如下:

解讀如下:

xi+1 - xi為高(讀者可以把圖豎着看);
yi + yi+1為上底加下底(詳見藍色那根線);
三、loss
我個人在loss這個表達式糾結了很久,所以這里也着重說這個公式。

  1. 概念
    書上寫的lrank對應的是ROC曲線上方的面積,AUC = 1 - lrank,公式描述是:若正例預測值小於反例,則記一個“罰分”,若相等,則記0.5個“罰分”。

  2. 計算
    根據南瓜書上寫的,這個公式其實也是個矩形公式,只是不容易推導出來,推導過程我就照搬南瓜書的推導了:

這里m+是指多少個正例,m-是指多少個反例,D+代表正例集合,D-代表反例集合。

我們下面解讀就以最后一行公式解讀:

假設數據如下:
(s1, 0.77, +),(s2, 0.62, −),(s3, 0.58, +),(s4, 0.47, +),(s5, 0.47, −),(s6, 0.33, −),(s7, 0.23, +),(s8, 0.15, −)

我這里也重新畫了個圖來描述這個計算過程:

解讀如下:

這里我們就以公式最后一行來看,1 / 2就是矩陣面積中的“除以二”,1 / m+就是縱軸的一個刻度,也就是矩陣面積中的“高”,這兩個是常數項,就先知道這兩個的含義即可;
最外層的x+∈D+求和,在代碼中相當於一個for循環,遍歷所有的正例;
里層的兩個x-∈D-求和,相當於嵌套了兩個平行的for循環,遍歷所有的反例,結合解讀2,那么整個循環就是判斷每個反例是否大於或等於每個正例,也可以說成是“判斷每個正例是否小於等於每個反例”;
由於數據是從大到小進行排列的,所以我們這里把數據可以簡化為:(+, -, +, +, -, -, +, -),注意,s4與s5是相同的預測值;
於是整個遍歷結果可以表現為下面表格:

計算過程如下:

當第一遍遍歷,正例為s1,發現s2-s8沒有比s1大的,所以內層兩個求和都為0,面積為0,對應上圖為y1對應的那條紅線;
當第二遍遍歷,正例為s3,發現s2比s3大,於是內層第一個求和為1,第二個求和為0,最后運算結果為(1 / m+) · (1 / m-),對應上圖a1的面積;
當第三遍遍歷,正例為s4,發現s2比s4大,s5與s4相同,於是內層第一個求和為1,第二個求和為1,最后運算結果為 3 / (2 · m + · m-),對應上圖a2的面積;
當第四遍遍歷,正例為s7,發現s2,s5,s6都比s7大,於是內層第一個求和為3,第二個求和為0,最后運算結果為 3 / (m+ · m-),對應上圖a3的面積。

上底與下低
上低就是

四、參考
[1]@Sm1les,@archwalker.南瓜書PumpkinBook[EB/OL].https://github.com/datawhalechina/pumpkin-book,2020.
[2]周志華.機器學習[M].清華大學出版社:北京,2016:33.
參考博客:https://blog.csdn.net/qq_35357274/article/details/108147186


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM