《機器學習》(一)——《西瓜書》1、2章

語言: CN / TW / HK

第一章

1.1 基本術語

  1. 數據集
  2. 示例、樣本
  3. 屬性、特徵
  4. 屬性值
  5. 屬性空間、樣本空間、輸入空間
  6. 特徵向量
  7. 維數
  8. 訓練數據、訓練樣本、訓練集
  9. 標記(Label)
  10. 樣例(Example)

根據訓練數據是否擁有標記信息,學習任務可大致劃分為兩大類: - “監督學習”(supervised learning) - “無監督學習”(unsupervised learning)

分類和迴歸是前者的代表,而聚類則是後者的代表.

需注意的是,機器學習的目標是使學得的模型能很好地適用於“新樣本”而不是僅僅在訓練樣本上工作得很好。學得模型適用於新樣本的能力,稱為“泛化" (generalization)能力。具有強泛化能力的模型能很好地適用於整個樣本空間。

第二章

2.1 經驗誤差與過擬合

錯誤率: 分類錯誤的樣本數a佔樣本總數m的比例 E=a/m

精度=1-錯誤率

誤差: 學習器的實際預測輸出與樣本的真實輸出之間的差異

“訓練誤差”或“經驗誤差”: 學習器在訓練集上的誤差

“泛化誤差”: 在新樣本上的誤差

有多種因素可能導致過擬合,其中最常見的情況是由於學習能力過於強大,以至於把訓練樣本所包含的不太一般的特性都學到了,而欠擬合則通常是由於學習能力低下而造成的。欠擬合比較容易克服,例如在決策樹學習中擴展分支、在神經網絡學習中增加訓練輪數等,而過擬合則很麻煩。過擬合是機器學習面臨的關鍵障礙。

image.png

2.2 評估方法

通常,我們可通過實驗測試來對學習器的泛化誤差進行評估並進而做出選擇。為此,需使用一個“測試集”(testingset)來測試學習器對新樣本的判別能力,然後以測試集上的“測試誤差”(testingerror)作為泛化誤差的近似。

通過對數據集進行適當的處理,從中產生出訓練集S和測試集T。下面介紹幾種常見的做法。

2.2.1 留出法

留出法直接將數據集D劃分為兩個互斥的部分,其中一部分作為訓練集S,另一部分用作測試集T。

通常訓練集和測試集的比例為70%:30%。同時,訓練集測試集的劃分有兩個注意事項:

  1. 儘可能保持數據分佈的一致性。避免因數據劃分過程引入的額外偏差而對最終結果產生影響。在分類任務中,保留類別比例的採樣方法稱為“分層採樣”(stratified sampling)。
  2. 採用若干次隨機劃分避免單次使用留出法的不穩定性。
  3. 注意訓練集和測試集的劃分比例

2.2.2 交叉驗證法

交叉驗證法先將數據集D劃分為k個大小相似的互斥子集,每次採用k − 1個子集的並集作為訓練集,剩下的那個子集作為測試集。進行k次訓練和測試,最終返回k個測試結果的均值。又稱為“k折交叉驗證”(k-fold cross validation)。

image.png

留一法是k折交叉驗證k = m(m為樣本數)時候的特殊情況。即每次只用一個樣本作測試集。該方法計算開銷較大。

2.2.3 自助法

自助法以自助採樣為基礎(有放回採樣)。每次隨機從D中挑選一個樣本,放入D′中,然後將樣本放回D中,重複m次之後,得到了包含m個樣本的數據集。

image.png

這樣,仍然使用m個訓練樣本,但約有1/3未出現在訓練集中的樣本被用作測試集。

優點: - 自助法在數據集較小、難以有效劃分訓練/測試集時很有用。 - 自助法能從初始數據集產生多個不同的訓練集,這對集成學習等方法有很大好處

缺點: - 然而自助法改變了初始數據集的分佈,這回引入估計偏差。

在初始數據量足夠時,留出法交叉驗證法更常用

2.2.4 調參與最終模型

調參主要是對每種參數選定一個範圍變化步長,從劃分出的候選參數中選擇合適的參數。

2.3 性能度量

對學習器的泛化性能進行評估,不僅需要有效可行的實驗估計方法,還需要有衡量模型泛化能力的評價標準,這就是性能度量。性能度量反映的任務需求,所以模型的“好壞”是相對的,不僅取決於數據與算法,也取決於任務需求是什麼。

image.png

迴歸任務最常用的性能度量是“均方誤差”

image.png

下面主要介紹分類任務常用的性能度量

2.3.1 錯誤率與精度

錯誤率與精度常用於分類任務,錯誤率是測試樣本中分類錯誤的樣本數佔總樣本數的比例,精度是測試樣本中分類正確的樣本數佔總樣本數的比例。

分類錯誤率:

image.png

精度:

image.png

若測試數據集的精度高或者錯誤率小,則模型的泛化能力強;反之,則泛化能力弱。

用測試數據集的精度來表示模型的泛化能力在正負樣本比例相差較大的時候就不適用了。 運用精度來表示測試數據集的泛化能力,測試數據集的正負樣本比例應該均衡(1:1)。

2.3.2 查準率、查全率與F1

例如在信息檢索中,我們經常會關心”檢索出來的信息中有多少比例是用户感興趣的“,”用户感興趣的信息中有多少被檢索出來了“;在視頻監控中,我們關注的是”人臉識別的罪犯中有多少比例是真的罪犯“,”所有罪犯中有多少比例被識別出來“。

錯誤率計算較籠統,查準率和查全率是更為適用於此類需求的性能度量。

查準率關注的問題是篩選的樣本中是正樣本的比例

查全率關注的問題是篩選的樣本中有多少比例的正樣本被篩選出來了

混淆矩陣是計算查準率和查全率或其他模型性能評估方法的基礎。

混淆矩陣的定義:

image.png

TP:真正例(true positive),即真實結果和預測結果都是正例。(預測的是真的,實際也是真的)\ FP:假正例(false positive),即真實結果是反例,預測結果是正例。(預測是真的,實際是假的)\ TN:真反例(true negative),即真實結果和預測結果都是反例。(預測是假的,實際是真的)\ FN:假反例(false negative),即真實結果是正例,預測結果是反例。(預測是假的、實際也是假的)

TP+FP+TN+FN=樣例總數

查準率P(Precision)與查全率R(Recall)分別定義為:

image.png 預測(篩選)出來的例子裏,有多少是預測為真的

image.png預測為真的數量,在真實情況下真數量中所佔比例

因此,學習模型P(Y=1|X)對測試數據集輸出一系列為正樣本的概率,根據概率由大到小排列,然後依次設置閾值,若大於該閾值,則為正樣本;反之則為負樣本。每次閾值的設置都有對應的查準率和查全率,因此以查全率為橫座標,查準率為縱座標,就可以得到查準率-查全率曲線,檢測“P-R”曲線。

image.png

根據P-R曲線來評估模型的性能:\ (1) 若一個學習模型的P-R曲線完全包住了另一個學習模型的P-R曲線,則前者的性能優於後者。即查全率相同的情況下,查準率越高模型的泛化性能越好,如模型A優於模型B。\ (2) 若兩個學習模型的P-R曲線互相交叉,則可通過“平衡點”(Break-Event Point,簡稱BEP)來評價模型的優劣,BEP是“查準率=查全率"的數值。由上圖可知,模型A的平衡點大於模型B的平衡點,即模型A優於B。\ (3) 由於BEP過於簡化,更常用的是F1度量:

image.png F1越大,性能越好。\ (4) F1度量認為查全率和查準率的重要性程度一樣,若考慮到查全率和查準率的重要性程度不一樣,如推薦給用户的信息儘可能是用户感興趣的,那麼查準率更重要;抓捕逃犯時更希望儘可能少漏掉逃犯,此時查全率更重要。\ 為了描述查準率和查全率的相對重要程度,則用F1度量的一般形式$F\beta$

image.png

其中, [公式] 度量了查全率對查準率的相對重要性, [公式] 時退化為標準的F1; [公式] 時查全率更重要; [公式] 時,查準率更重要。

很多時候我們有多個二分類混淆矩陣,例如進行多次訓練/測試,每次得到 一個混淆矩陣;或是在多個數據集上進行訓練/測試,希望估計算法的“全局” 性能;甚或是執行多分類任務,每兩兩類別的組合都對應一個混淆矩陣;..... 總之,我們希望在n個二分類混淆矩陣上綜合考察查準率和查全率。

QQ截圖20211116142345.png

2.3.3 ROC與AUC

ROC

在不同的任務中,我們根據不同任務需求採取不同的截斷點。若更重視“查準率”(想要查的更準確),應該在排序靠前的位置進行截斷(找到正例更有把握);若更重視“查全率”(想把正例查的更全),應該在排序靠後的位置進行截斷。

P-R曲線是從查準率和查全率的角度去衡量學習模型的泛化性能,ROC曲線則是從更一般的情況下去衡量學習模型的泛化性能,若沒有任何先驗條件的限制情況下,推薦用ROC曲線去衡量模型的泛化性能。\ 繪製ROC曲線的思想與P-R曲線一致,對學習模型估計測試樣本為正樣本的概率從大到小排序,然後根據概率大小依次設置閾值,認為大於閾值的測試樣本為正樣本,小於閾值的測試樣本為負樣本,每一次閾值設置都計算”真正例率“(True Positive Rate,簡稱TPR)和”假正例率“(False Positive Rate,簡稱FPR)。

TPR和FPR的定義如下:

image.png

image.png

ROC曲線橫座標為假正例率,縱座標為真正例率,曲線圖如下:

image.png

本文對ROC曲線的首末兩點進行解釋:\ 測試數據集包含N例正樣本和M例負樣本,若閾值設置的最大,則學習模型對所有測試樣本都預測為負樣本,混淆矩陣如下:

image.png TPR = TP / (TP + FN) = 0 / (0 + N) = 0\ FPR = FP / (TN + FP) = 0 / (0 + M) = 0\ 因此,當閾值設置最大時,TPR與FPR均為0\

若閾值小於所有模型估計測試樣本為正樣本的數值時,則測試樣本均為正樣本,混淆矩陣如下:

image.png

TPR = TP / (TP + FN) = N / (N + 0) = 1\ FPR = FP / (TN + FP) = M / (M + 0) = 1

因此,當閾值設置最小時,TPR與FPR均為1。

AUC(Area Under Curve)為ROC曲線的面積,面積可以通過梯形面積法求解。

AUC值的定義

AUC值為ROC曲線所覆蓋的區域面積,顯然,AUC越大,分類器分類效果越好。

AUC = 1,是完美分類器,採用這個預測模型時,不管設定什麼閾值都能得出完美預測。絕大多數預測的場合,不存在完美分類器。

0.5 < AUC < 1,優於隨機猜測。這個分類器(模型)妥善設定閾值的話,能有預測價值。

AUC = 0.5,跟隨機猜測一樣(例:丟銅板),模型沒有預測價值。

AUC < 0.5,比隨機猜測還差;但只要總是反預測而行,就優於隨機猜測。

AUC值的物理意義

假設分類器的輸出是樣本屬於正類的socre(置信度),則AUC的物理意義為,任取一對(正、負)樣本,正樣本的score大於負樣本的score的概率。

AUC值的計算

(1)第一種方法:AUC為ROC曲線下的面積,那我們直接計算面積可得。面積為一個個小的梯形面積之和,計算的精度與閾值的精度有關。

(2)第二種方法:根據AUC的物理意義,我們計算正樣本score大於負樣本的score的概率。取NM(N為正樣本數,M為負樣本數)個二元組,比較score,最後得到AUC。時間複雜度為O(NM)。

(3)第三種方法:與第二種方法相似,直接計算正樣本score大於負樣本的score的概率。我們首先把所有樣本按照score排序,依次用rank表示他們,如最大score的樣本,rank=n(n=N+M),其次為n-1。那麼對於正樣本中rank最大的樣本(rank_max),有M-1個其他正樣本比他score小,那麼就有(rank_max-1)-(M-1)個負樣本比他score小。其次為(rank_second-1)-(M-2)。最後我們得到正樣本大於負樣本的概率為:

2.3.4 代價敏感錯誤率與代價曲線

代價敏感錯誤率

若在評價學習模型性能時考慮不同類分類錯誤所造成不同損失代價的因素時,稱為代價敏感錯誤率評估方法。\ 假設訓練數據集D包含正例子集D+和負例子集D-。若分類錯誤的損失代價相同,即均等代價。代價矩陣如下:

image.png

模型的代價敏感錯誤率:

image.png

II(.)是指示函數,若*為真則為1,否則為0

分類錯誤的損失代價不相同,即非均等代價。如下圖,其中costij表示將第i類樣本預測為第j類樣本的代價。\ 代價矩陣如下:

image.png

模型的代價敏感錯誤率:

image.png

II( )是指示函數,若*為真則為1,否則為0

該定義是計算模型損失代價的一般化,若分類錯誤的損失代價相同,令 [公式] ,則與之前的代價敏感錯誤率表達式一致。

不管是使用何種損失代價函數,構建模型最優化等價於最小化代價敏感錯誤率。

代價曲線

ROC曲線在均等代價(分類錯誤的損失代價相同)的前提下反映學習模型的泛化能力,"代價曲線"是在非均等代價的前提下反映學習模型的期望總體代價。期望總體代價越小,則模型的泛化能力越強。

代價曲線的橫座標是樣例為歸一化的正例概率代價,正例概率為p,給定的正例概率為先驗概率,範圍為0~1,縱軸是歸一化的損失代價。代價曲線研究的是正樣本先驗概率和損失代價的關係。

歸一化的正例概率代價:

image.png

代價曲線如下圖:

image.png

其中,灰色的陰影部分為模型的期望總體代價,期望總體代價越小,則模型的泛化性能越好;反之,模型泛化性能越差。

期望總體代價的意義:正例先驗概率下學習模型的最小損失代價,並對所有正例先驗概率下的最小損失代價求和。

參考鏈接:

  • https://zhuanlan.zhihu.com/p/53692548
  • https://zhuanlan.zhihu.com/p/53781144