統計機器學習——懶人總結

前言

  • 本文主要參考《統計學習方法》及其第二版,所有非手寫的截圖,如無特別說明,均來自此書,非博主的勞動成果。
  • 本文暫時謝絕轉載,如需摘錄片段,請自覺標明來源
  • 此文包含各式各樣的總結方式,有時會從書上截圖,描述我對其中內容的見解;有時會放手寫總結截圖等。因爲太忙,所以會將手寫截圖放的多億點,文章排版啥的就別指望了hhh。
儘量保持更新,學習之路,永無止境,希望和大家一起進步!
(圖源網絡)

一、基礎概念大雜燴

1,包含監督學習、非監督學習、半監督學習(semi-supervised learning)、強化學習(reinforcement learning)等;

2,統計學習三要素:模型、策略、算法。

  • (1)什麼是模型?可以這樣理解:
    模型就是所要學習的條件概率分佈或決策函數。
    需要引入假設空間(hypothesis space)的概念:模型的假設空間包含所有可能的條件概率分佈或決策函數,假設空間可以定義如下:

可以定義爲決策函數的集合,或者條件概率的集合。X代表輸入數據,Y代表輸出。

假設空間的通俗理解就是所有可能的模型的集合。

  • (2)策略則包含損失函數和風險函數等概念。

損失函數舉例:

損失函數越小,模型就越好。損失函數的期望是:

這就是風險函數(risk function)或者期望損失(expected loss),可惜的是這個式子沒法計算,因爲聯合概率P(x, y)是未知的,所以我們用經驗風險(empirical risk)或經驗損失(empirical loss)來代替之:

經驗風險最小化(empirical risk minimization, ERM)的策略認爲上式最小的模型是最優的模型,這樣最優化問題就是這樣表示:

樣本容量足夠大時,經驗風險最小化能夠保證很好的學習效果,但當樣本容量非常小的時候,經驗風險最小化就未必效果很好,會產生過擬合(over-fitting)的現象。

爲了解決過擬合,應當使用的策略是結構風險最小化(structural risk minimization,SRM),這個等價於正則化(regularization)。結構風險在經驗風險的基礎上加上了表示模型複雜度的正則化項(regularization)或罰項(penalty term):

J(f)就是模型複雜度。

結構風險最小化的策略認爲獲取最優解就是解決以下問題:

  • (3)統計學習基於訓練數據集,根據學習策略,從假設空間中選擇最優模型,最後考慮使用什麼計算方法求解最優模型。統計學習的算法就是求解最優化問題的算法。

確定模型、策略、算法就能夠確定統計學習的方法,故稱之爲統計學習的三要素。

3,模型評估與模型選擇

  • (1)給定幾種學習方法,測試誤差小的方法有更好的預測能力,是更有效的方法。

泛化能力:學習方法對未知數據的預測能力。

  • (2)過擬合(over-fitting):
    如果一味追求提高對訓練數據的預測能力,所選模型的複雜度往往比“真模型”更高,這種現象被稱爲過擬合。

過擬合往往體現爲在訓練集上表現相當好,而在測試集上表現欠佳。爲了即達到模型的複雜度適當、又達到模型的最優,在選擇模型時使用正則化交叉驗證兩種方法。

  • (3)正則化(regularization)

正則化是結構風險最小化策略的實現,一般具有的形式是:

上式第一項是經驗風險,第二項是正則化項,λ\lambda(非負)是調整兩者之間關係的係數。

正則化還可以是別的形式,比如採用參數向量的L2範數:

(注意上式中經驗風險採用的是平方損失,但也可以是別的)
也可以採用參數向量的L1範數:

正則化的作用是選擇經驗風險與模型複雜度同時較小的模型。λ\lambda越大越傾向於降低模型的複雜度。

正則化符合奧卡姆剃刀原理,即:

能夠很好地解釋已知數據並且十分簡單的模型纔是好模型

  • (4)交叉驗證(cross validation)
    如果樣本數據充足,則可以隨機將數據集分成三部分:訓練集(用來訓練模型)、驗證集(用來模型的選擇)、測試集(用來評估最終的學習方法)。

在學習到的不同複雜度的模型中,選擇對驗證集有最小預測誤差的模型。由於驗證集數據足夠多,所以這樣選擇模型是有效的。

而通常數據是不充足的,則有以下三種方式應對:

  • 簡單交叉驗證:隨機將數據分成兩部分,分別爲訓練集和測試集。訓練集在不同條件下訓練出不同模型,再用測試集選出最好的模型。
  • S折交叉驗證(S-fold cross validation):首先將數據切分成S個互不相交的子集,然後利用S-1個子集的數據訓練模型,用餘下的子集測試模型。將這一過程對可能的S種選擇重複進行,最終選出S次測試誤差最小的模型。
  • 留一交叉驗證:如果S折交叉驗證的S=N(數據集容量),那麼就稱爲留一交叉驗證。“留一”應該是指N-1條數據用於訓練,留下的一條用於測試。

4,泛化能力(generalization ability)

泛化能力是指所學到的模型對未知數據的預測能力。

現實中採用最多的辦法就是通過測試誤差來評價學習方法的泛化能力,但此法依賴測試數據集。

另一種辦法就是通過分析泛化誤差上界(generalization error bound)來分析泛化能力。泛化誤差:

實際上就是模型的期望風險,它就是下圖中1.25式的左端,這個式子的上界就是1.25式右端:

1.25式的右側就是泛化誤差上界,其由經驗風險和一個函數兩項組成。其中N是數據個數,d是假設空間容量。顯然N越大或者d越小,泛化誤差上界越小。證明1.25式需要用到Hoeffding不等式。

5,生成模型和判別模型

監督學習方法分爲生成方法(generative approach)和判別方法(discriminative approach),所學到的模型分別爲生成模型(generative model)和判別模型(discriminative model)。

  • 生成模型
    由數據學習聯合概率分佈P(X, Y),求出條件概率分佈作爲預測模型,即生成模型:

之所以稱爲生成方法,是因爲模型給出了給定輸入X產生輸出Y的生成關係。生成模型有:樸素貝葉斯法和隱馬爾可夫模型。

  • 判別模型
    由數據直接學習決策函數f(X)或者條件概率分佈P(Y|X)作爲預測的模型。關心的是給定輸入X,應該預測什麼輸出Y。包含:k近鄰法、感知機、決策樹、邏輯迴歸、最大熵模型、支持向量機、提升方法和條件隨機場等。

6,分類問題——主要介紹精確率(precision)和召回率(recall)

精確率就是所有預測結果爲正類的正確率;召回率就是所有正類被預測爲正類的概率。

還有一個概念是準確率(accuracy),是正確分類的樣本數和總樣本數之比,這是評價分類器的一般指標。

另外還有一個F1值:

7,標註(tagging)問題

這也是監督學習的一種。

輸入是一個觀測序列,輸出是一個標記序列或狀態序列:

對一個觀測序列,找到條件概率最大的標記序列。

標註常用的統計學習方法有:隱馬爾可夫模型、條件隨機場。

標註的應用場景:信息抽取、自然語言處理。

舉個例子,自然語言處理的詞性標註(part of speech tagging),就是給定一個由單詞組成的句子,輸出就是對這個句子每個單詞進行詞性標註。

信息抽取的例子,從英文文章中抽取基本名詞短語。英文單詞是一個觀測,英文句子是一個觀測序列,標記表示名詞短語的“開始”、“結束”、“其他”。信息抽取就是將標記“開始”到“結束”的名詞短語抽取出來。技術細節如圖:

8,迴歸(regression)問題

是監督問題的一種。按照輸入變量的個數分爲一元迴歸和多元迴歸。

不作詳述,一張圖搞定:

迴歸的常用損失函數是平方損失函數,這種情況下,迴歸問題可以由最小二乘法(least squares)求解。

二、感知機(perceptron)

原始形式

幾個概念:

超平面(hyperplane):wx+b=0wx+b=0

線性可分數據集(linearly separable data set):存在某個超平面能夠將數據集的正實例點和負實例點完全分開。當訓練數據集線性可分時,感知機算法存在無窮多個解,其解由不同的初值或者不同的迭代順序而可能不同。

定理:樣本集線性可分的充要條件是正實例點集所構成的凸殼和負實例點集所構成的凸殼互不相交。
凸殼定義(下圖來源於百度百科):

感知機是線性模型,不能表示複雜函數,如異或(XOR)。

  • 感知機算法和其原始形式:

在這裏插入圖片描述
以上講述的是感知機算法的原始形式,以下是相應例題:
在這裏插入圖片描述

對偶形式——結合Gram矩陣提效率的好方法

  • 感知機學習算法的對偶形式:
    在這裏插入圖片描述
    感知機算法的對偶形式練習題:
    在這裏插入圖片描述

對於線性可分數據集,感知機學習算法原始形式收斂,即經過有限次搜索可找到將訓練數據完全正確分開的分離超平面(下圖2.9式說明了誤分類次數有上界):

三、k近鄰法(k-nearest neighbor, k-NN)

幾種距離

說白了就是給定實例點,在訓練集中和這個實例點最近的k個點的多數是什麼類別,這個實例點就被判定爲什麼類別。
k近鄰法沒有顯示的學習過程。

這一章我依舊展示手寫筆記:
在這裏插入圖片描述

模型對應特徵空間的劃分,在線的這邊離這個點更近、線的另一邊離另一個點更近:

k值選擇和kd樹


上圖的最下邊,我用序號標明瞭劃分順序。

kd樹是平衡二叉樹。

構造好kd樹,下一步做什麼?
答案是根據kd樹尋找輸入實例點最鄰近的k個點。爲了方便理解,令k=1,即找出與輸入實例點最鄰近的點(k=1的k近鄰法,此法即最近鄰法)的例題如下:

上圖的理解十分重要,爲了方便理解,手寫詳細過程如下:
在這裏插入圖片描述

kd樹終究是爲了解決k近鄰法,上述例子只給出了k=1的最近鄰法,然後說明了對於k近鄰法也是類似的做法,但未提及具體如何做。博主給出了兩種猜想:
(1)進行k次檢索,給每次找出的最近鄰點加個“不再搜索”的標記,相當於下次不再搜索這個結點,這樣便找出了k個最鄰近的點;(我覺得這種方式,如果k過大,可能時間開銷會慘不忍睹)
(2)構造長度爲k的隊列…編不下去了,如果有什麼好的辦法,歡迎評論區交流!

最後再看下書上寫的分類決策規則:

幾何角度比較k=1或2的異同

第三章課後有道題需要重視,參考一位大佬的解答:


參考他文的內容開始:

我參考:
作者:劉炫320
原文:https://blog.csdn.net/qq_35082030/article/details/60965320
關於課後習題3.1的解答:
在這裏插入圖片描述
附圖3.1:

我們不去考慮k爲1的情況,因爲k爲1的情況我們可以很容易從原圖中獲取,我們來考慮k=2時候的空間劃分。
我們都知道,在2維空間中,我們通常使用的是一條線來進行2分類,這也是最優的分類方式(每次減小樣本空間一半),那麼在這個題目中,如果k=2的時候,我們考慮最近的3個點開始,其實無論是多少都沒關係的,只不過時間複雜度比較大,但是我們通常不會選取過多的候選點。
現在,這條線就是2個點的連線的垂直平分線,如下圖所示:

爲了更清楚,我把圖片放大,以至於A,B點變成了圓,l爲AB兩點連線的垂直平分線。如圖上所標,這時候只能考慮k=1d的時候的劃分。一條垂直平分線可以把平面分成兩個部分,左邊紅色的部分都會被歸結爲離A點近,右邊的藍色部分都會被歸結於B點近。
那麼如果我們考慮三個點的k近鄰,如下圖所示:

如果K=1,那麼最終的分類就會是如此,藍色的點都是被歸於點A,紅色的點都歸於點B,紫色的點都歸於點C,但是如果是K=2的時候呢?K=2的時候,只需要把垂直平分線延長就可以了,如下圖:

爲了區分歸屬,我把三個點都標上了顏色,而被劃分的6個區域,其最近的2個點的顏色都在圖上標出,其實就是一個二維層面的三次切分,取其中最近的2個點。這樣就得到了空間劃分。

參考他文的內容到此爲止


四、樸素貝葉斯法(naive Bayes)

1,基本方法

這個方法基於概率論中的貝葉斯公式:
P(cx)=P(xc)P(c)P(x)P(c|x)=\frac{P(x|c)P(c)}{P(x)}
x是輸入,c是類別。就是要判斷輸入爲X的前提下,哪個類別的條件概率最高,那麼就選哪個類別爲X的預測類別。

當然以上公式是爲了方便理解的簡單寫法,看看書上怎麼寫:

其中等號右邊分母就是P(X=x)P(X=x),這樣的展開是利用了全概率公式。P(X=xY=ck)P(X=x|Y=c_k)P(Y=ck)P(Y=c_k)分別是條件概率和先驗概率,它倆都可以通過訓練集計算所得。接下來講這個計算的具體方法。

由於輸入X是一個向量,則有:

其中X(i)X^{(i)}是向量的第i個分量。樸素貝葉斯中的“樸素”是因爲對條件概率分佈作了條件獨立性假設:

即計算輸入向量每個分量的條件概率再相乘,作爲所需條件概率。將上式帶入上上個截圖的4.4式,就能得到:

從而,貝葉斯分類器就可以表示成:

預測輸入x對應的概率就是使得P(Y=ckX=x)P(Y=c_k|X=x)(後驗概率)最大的ckc_k,這就是後驗概率最大化。

2,後驗概率最大化的含義

書上這塊內容的意思是說樸素貝葉斯分類器所用的後驗概率最大化恰恰等價於期望風險最小化,大致瞭解下證明過程即可:

首先把期望風險函數寫成如下形式,其中L是0-1損失函數。由於期望是對P(X=x,Y=c)P(X=x,Y=c)取的,它可以寫成P(Y=cX=x)P(X=x)P(Y=c|X=x)P(X=x),這樣就得到這種形式的期望風險(注意它把P(X=x)P(X=x)挪到了求和符號外,變成了ExEx):

然後逐步轉化期望風險最小化:

到上述推導的最後一行,期望風險最小化被轉化爲後驗概率最大化。

3,參數估計

根據之前講的公式,顯然只需要估計P(X(j)=ajlY=ck)P(X^{(j)}=a_{jl}|Y=c_k)P(Y=ck)P(Y=c_k)的值,就能夠計算出後驗概率。X(j)X^{(j)}是特徵的第j個分量,也就是第j個特徵,而ajla_{jl}的解釋是:

估計的方法採用極大似然估計:

I()I()的意思是括號內表達式爲真,值就爲1,反之爲0.上式就是數據集中類別爲ckc_k所佔比例)

計算好後,帶入之前說的分類器:

對這個分類器進一步簡化就是隻用考慮上式右端的分子:

4,樸素貝葉斯法例題

書上有道例題截圖在這方便溫習:

5,貝葉斯估計

用極大似然估計可能會出現所要估計概率值爲0的情況,(通過以上例題可以發現,估計的過程就是在數據集中數數的過程,如果沒數到,概率值就爲0)

所以對先驗概率和條件概率採用貝葉斯估計:

上面兩式中,SjS_j表示X(j)X^{(j)}可能的取值種數,KK表示類別數量。分子分母都加的λ\lambda是正數,這就保證了估出來的值肯定不會是0。當λ\lambda是0的時候是極大似然估計,當λ\lambda是1的時候是拉普拉斯平滑(Laplacian smoothing)(常用拉普拉斯平滑)。這樣一來,4中例題可以這樣做:

五、決策樹

從信息熵到ID3、C4.5

開門見山地說,這部分需要理解四個概念:信息量、熵和條件熵:

【信息量】:就是一個事件發生的信息量。公式爲log2p-log_2ppp是這個事件發生的概率,取值範圍[0,1][0,1]。畫出這個公式的圖像,就可以發現,事件發生的概率越低,信息量越大(接近0時爲無窮大);反之,信息量越小(百分之百發生的事件,信息量爲0)。舉個例子理解它:太陽從東邊升起的概率爲1,那麼“太陽今天從東邊升起”這個事件信息量就非常小,不會有人聽說這個事件就大驚小怪;而成都下雪的概率非常小,所以“成都今天下雪了”的信息量非常大,很多人會爲之興奮不已。

【信息熵】:公式:H(D)=k=1Npklog2pkH(D)=-\sum\limits_{k=1}^Np_klog_2p_k,D代表數據集。通俗理解就是系統中所有事件根據各自發生的概率計算信息量的加權平均。特別規定當p爲0時,pklog2pk=0-p_klog_2p_k=0。顯然,要使信息熵儘可能曉,只需每個事件發生的概率pkp_k儘可能接近1或者0,如果一個事件發生的概率十分接近0或者1,那麼我們判斷它是否發生就更爲容易一些。
信息熵只和數據分佈有關,如果分佈是伯努利分佈,熵和事件發生的概率對應關係就非常清楚,適合輔助理解:

【條件熵】:公式:H(DA)=k=1NDiDH(Di)H(D|A)=\sum\limits_{k=1}^N\frac{|D_i|}{|D|}H(D_i),A是某特徵,它能將數據集D分爲D1和D2兩部分,分別對D1和D2計算信息熵,再將兩個信息熵按D1和D2分別佔D的比例加權求和,就得到了特徵A對數據集D的條件熵。

【信息增益值】公式:g(D,A)=H(D)H(DA)g(D,A)=H(D)-H(D|A),根據之前內容,H(D)和H(D|A)都是熵,熵的計算結果標明瞭判斷事件是否發生的容易程度,熵越小,判斷越容易。這樣以來,信息增益的含義大致就是:用特徵A劃分數據集或者特徵空間,劃分前和劃分後系統“熵減”的程度。

決策樹就是要不斷選擇信息增益最大的特徵進行特徵空間的劃分,最終構建出最適合分類的決策樹(決策樹也可以解決迴歸問題,這本書只介紹用於分類的決策樹)。


【看一道書上的例題】
通過書上的例題直觀瞭解決策樹特徵選擇的方法:

一共15個樣本,輸入是某男的年齡、是否有工作、是否有房、信貸情況,輸出是他有無相親成功(寫這塊的時候沒發現是判斷貸款成功,將錯就錯吧^ ^…)。現在構造用於勸退無房男人 判斷某男是否能相親成功的決策樹:

  • 【step1】:明確特徵和類別:特徵是年齡、有工作、有房、信貸情況,類別是相親成功、相親失敗(分別對應表中“是”“否”)。

  • 【step2】:根據類別計算經驗熵H(D)。
    計算經驗熵,只需要明確輸出類別即可。類別是相親成功和相親失敗,概率分別是:
    p1=915,p2=615p_1=\frac{9}{15},p_2=\frac{6}{15}(數一數其在給定數據集中的比例就行了),
    然後套公式:

  • 【step3】:根據特徵計算信息增益值g(D,A):
    A1,A2,A3,A4A_1,A_2,A_3,A_4分別表示年齡、有工作、有房、信貸情況,然後給出g(D,A1)g(D,A_1)的計算例子:

第一行減號右端是H(D|A),計算細節是:用A1A_1可以將數據集分成青年、中年和老年3部分,對每一部分單獨計算經驗熵(方法同step1),然後將計算所得按這三部分佔整個數據集的比例求加權平均。

g(D,A2)g(D,A_2)g(D,A3)g(D,A_3)g(D,A4)g(D,A_4)也這樣計算出來,發現特徵A3A_3(有房)的信息增益值最大,所以先選擇A3A_3作爲最優特徵。

  • 【step4】構建決策樹的大致方法(之後會講ID3和C4.5這兩種生成決策樹的算法細節,先了解大概方向):由於此時選擇了A3A_3作爲最優特徵,其能將特徵空間劃分成兩部分,則爲根結點創建兩個子結點,分別爲“有房”、“無房”。然後分別單獨對這兩個子結點進行最優特徵選擇和進一步劃分,注意進一步選擇最優特徵時就不考慮A3A_3了。

以上就是決策樹的最基本內容,接下來是拓展內容。

【信息增益比】剛纔都是用信息增益值來進行最優特徵選擇,現在用信息增益比。使用理由是:信息增益值存在偏向於選擇取值較多的特徵的問題,而信息增益比是對這個問題的修正。

(公式中加D|D|代表數據集DD中數據條數;特徵AA將數據集DD劃分成了D1,D2...DnD_1,D_2...D_n

【ID3算法】
比較簡單,直接看書上:

ID3對應例題也很好理解:

兩個注意事項:1,構建決策樹不一定要用完所有特徵;2,ID3算法只有樹的生成,所以該算法生成的樹容易產生過擬合(下文的“剪枝”解決這個問題);3,採用信息增益值選擇特徵,區別於C4.5的採用信息增益比。

【C4.5算法】
和ID3算法唯一不同是採用信息增益比來選擇特徵。

【決策樹的剪枝(pruning)】
書上給了剪枝用的損失函數:

其中C(T)C(T)如下:

  • 公式解讀:
    TT是樹,T|T|是它的葉結點個數。C(T)C(T)是模型對訓練數據的預測誤差,tt是某一個葉結點,NtN_t是這個葉結點中樣本點個數,其中屬於類別kk的樣本點有NtkN_{tk}個,H(t)H(t)是這個葉結點的經驗熵。
    強調一下,C(T)C(T)的計算方法就是先計算每個葉結點的經驗熵,再將所有經驗熵和對應葉結點的樣本點個數作乘再求和。不難發現,C(T)C(T)等價於葉結點們的經驗熵的加權平均。
    顯然,損失函數的第一部分用來增加模型對訓練數據的擬合程度,第二部分就是減小模型的規模(樹的規模),α\alpha用來調整損失函數對兩個部分的偏重。

  • 剪枝的方法:
    先形象化看待剪枝

“嘗試進行剪枝,如果剪枝之後比剪枝之前損失函數更小,就保留這個剪枝。”從下向上地進行這個流程即可。如果用理論語言來描述剪枝流程就是不斷自下而上重複以下過程直到不能剪枝爲止:

Tips:剪枝可以用動態規劃算法。

CART、基尼指數

CART是classification and regression tree分類與迴歸樹的簡稱,是一種應用廣泛的決策樹學習方法。

不過這種算法用的特徵選擇等的方法和剛纔講的有所區別,所以單獨拿出來敘述。

【迴歸樹的生成】
書上對迴歸樹模型的描述:

需要解決的問題有兩個:如何劃分這M個單元和如何確定每個單元上的輸出值。

每個單元上的輸出值就是“落在”這個單元內的所有輸入實例xix_i對應的輸出值yiy_i的平均值。

而劃分這M個單元則較複雜,書上給出方法如下:

公式解讀:輸入實例xx是個向量,x(j)x^{(j)}就是向量的第jj維。切分點(j,s)(j,s)就是向量的第jj維取值爲ss,根據切分點可以將特徵空間分成兩個部分,從而將訓練集中的所有數據分成兩個部分。對於每一個部分,輸出值cc就是屬於這個部分的所有數據的yy的平均值,這樣確定好c1c_1c2c_2的值後,代入(5.19)計算出平方誤差。
遍歷輸入實例xx的每一維,對於每一維,都找到使得(5.19)式最小的值ss,然後選出最小值ss最小的那一維,即確定了最佳切分點(j,s)(j,s)

迴歸樹構建的算法流程:確定最佳切分點(j,s)(j,s),將樣本空間分成兩個區域;然後不斷對劃分所得的子區域進行尋找最佳切分點和劃分來,直到滿足停止條件。
附上書上對此算法的標準描述:

【分類樹的生成】
這個的特徵選擇不用信息增益了,而是用基尼指數。

基尼指數:

和信息熵一樣,基尼指數也用來衡量分類的確定性。上式中,pkp_k代表樣本點屬於第k類的概率,所以很明顯,基尼指數越小對應的是pkp_k儘量接近1或者接近0,換句話說就是屬於第k類的概率要麼接近1要麼接近0,這樣就很好判斷樣本點的類別。

同之前所說的條件熵一樣,這裏也有個“條件基尼指數”(現編的說法)Gini(D,A)Gini(D,A)

樣本集合DD通過特徵AA分成D1D_1D2D_2兩部分,將兩部分的基尼指數按兩部分佔整體的比例求加權平均。

CART假設決策樹是二叉樹,而對於二分類問題,基尼指數的計算公式如下:

注意下面的例題就是用這個公式。

同之前所說的按最大信息增益(最大化降低分類的不確定性)選擇特徵類似,這裏是按最小基尼指數來選擇特徵。看書上的例題就會了:

上述例題注意事項:
CART的決策樹是二叉樹,Gini(D,A1=1)Gini(D,A_1=1)的意思是利用A1=1A_1=1與否來劃分特徵空間。考慮Gini(D,Ai=j)Gini(D,A_i=j),對所有可能的i和j計算基尼指數,然後選擇基尼指數最小的i和j來劃分特徵空間(用Ai=jA_i=j與否將特徵空間一分爲二)。

⚠️CART剪枝
這可能是這章最妙的內容,我從書上截圖,然後一張張解析。

首先是這個:

這是損失函數,等號右邊第一部分是對訓練數據的預測誤差(如基尼指數),第二部分是模型複雜度,T|T|是樹T的葉結點個數。和之前一樣,α\alpha小,則偏向於控制訓練數據的預測誤差;α\alpha大,則偏向於控制模型複雜度。
考慮極端情況,α\alpha爲0則整體樹(沒剪枝的樹)是最優的(因爲只考慮在數據集上的誤差),α\alpha爲∞則根結點組成的單結點樹是最優的(因爲幾乎只考慮模型的複雜度,即樹的規模)。

上述意思就是說,TiT_iα\alpha取值在區間[ai,ai+1)[a_i,a_{i+1})內時的最優子樹。“這些子樹是嵌套的”是因爲α\alpha越大,需要減的枝就越多,子樹的規模就越小,而Breiman等人證明了,TiT_i碰巧含於Ti+1T_{i+1},後者可以在前者的基礎上剪枝而來。

α\alpha越小,損失函數越偏向於提升模型在數據集上的精確度,而TtT_t顯然比tt更能準確預測數據,所以α\alpha充分小的時候,(5.29)式成立。當α\alpha變大時,模型的複雜度被考慮的越來越多,而TtT_t顯然比tt更復雜,所以總有一個α\alpha使得(5.29)中的不等號變成等號。接續往下看書:

α\alpha等於上述值的時候,TtT_ttt的複雜度是一樣的,由於後者比前者模型複雜度低,所以後者更可取,此時就要進行剪枝,將TtT_t剪成tt

CART剪枝的思路就這些,搞清楚這個,就不難理解書上的算法流程了:

算法的最後一步,是要利用獨立的驗證集,對這個最優子樹序列進行選擇,選擇出損失(平方誤差或者基尼指數)最小的的最優決策樹。

六、邏輯斯諦迴歸與最大熵模型

從邏輯斯諦分佈到邏輯斯諦迴歸

在這裏插入圖片描述
在這裏插入圖片描述

最大熵——無約束下的等可能

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

七、簡述SVM

硬間隔和軟間隔支持向量機

繼續放手寫總結(這兩章總結字寫得有點暴躁,之後我儘量寫慢點hiahiahia~~):
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
插一句話,上圖中最後一段是拉格朗日乘數法相關的定理,這一章節總結完會插入一章專門用來總結拉格朗日乘數法的相關定理(對偶,KKT等)。
在這裏插入圖片描述
上圖最後一行字很重要:⚠️在決定分離超平面時僅支持向量起作用。
在這裏插入圖片描述
軟間隔SVM同樣可用拉格朗日乘子法,可以自己在稿紙上寫寫,不難。博主稿紙上的推導寫得太亂,就不放上來了,若不會推,可自行查看《統計學習方法》第二版的7.2.2。

核方法

由上一章,已知硬間隔支持向量機的優化問題爲:
maxαΣi=1i=Nαi12Σi=1i=NΣj=1j=Nαiαjyiyj(xixj)max_\alpha \Sigma_{i=1}^{i=N}\alpha_i-\frac{1}{2}\Sigma_{i=1}^{i=N}\Sigma_{j=1}^{j=N}\alpha_i\alpha_jy_iy_j(x_i·x_j)
s.t.Σi=1i=mαiyi=0,αi0s.t. \Sigma_{i=1}^{i=m}\alpha_iy_i=0,\alpha_i≥0

解爲:
f(x)=sign(Σi=1i=Nαiyi(xix)+b)f(x)=sign(\Sigma_{i=1}^{i=N}\alpha_i^*y_i(x_i·x)+b^*)
之前討論的支持向量機是假定數據集線性可分的,即便是軟間隔支持向量機,也只允許數據集有一點點分類錯誤的點。如果是數據集線性不可分,如何再使用支持向量機進行分類,就是核方法要解決的問題。

由cover theorem可知,高維空間比低維空間更易線性可分,所以可以將線性不可分的數據集投影到高維的空間中,從而變成線性可分的。
在這裏插入圖片描述
則優化問題變成(這裏假定了投影到高維空間後是線性可分的,不然的話αi\alpha_i還要滿足αiC\alpha_i≤C):
maxαΣi=1i=Nαi12Σi=1i=NΣj=1j=Nαiαjyiyj(Φ(xi)Φ(x))max_\alpha \Sigma_{i=1}^{i=N}\alpha_i-\frac{1}{2}\Sigma_{i=1}^{i=N}\Sigma_{j=1}^{j=N}\alpha_i\alpha_jy_iy_j(\Phi(x_i)·\Phi(x))
s.t.Σi=1i=mαiyi=0,αi0s.t. \Sigma_{i=1}^{i=m}\alpha_iy_i=0,\alpha_i≥0
解的形式爲:
f(x)=sign(Σi=1i=Nαiyi(Φ(xi)Φ(x))+b)f(x)=sign(\Sigma_{i=1}^{i=N}\alpha_i^*y_i(\Phi(x_i)·\Phi(x))+b^*)
求解xix_ixx的內積被替代爲求Φ(xi)\Phi(x_i)Φ(x)\Phi(x)的內積。但是問題來了,Φ(xi)\Phi(x_i)Φ(x)\Phi(x)的內積不是那麼好求,甚至有時Φ(x)\Phi(x)是無窮維向量,所以想避開求解Φ(x)\Phi(x),而直接求Φ(xi)Φ(x)\Phi(x_i)·\Phi(x)
κ(xi,xj)=Φ(xi)Φ(xj)定義核函數:\kappa(x_i,x_j)=\Phi(x_i)·\Phi(x_j)
則優化問題變爲:
maxαΣi=1i=Nαi12Σi=1i=NΣj=1j=Nαiαjyiyjκ(xi,x)max_\alpha \Sigma_{i=1}^{i=N}\alpha_i-\frac{1}{2}\Sigma_{i=1}^{i=N}\Sigma_{j=1}^{j=N}\alpha_i\alpha_jy_iy_j\kappa(x_i,x)
s.t.Σi=1i=mαiyi=0,αi0s.t. \Sigma_{i=1}^{i=m}\alpha_iy_i=0,\alpha_i≥0
解的形式爲:
f(x)=sign(Σi=1i=Nαiyiκ(xi,x)+b)f(x)=sign(\Sigma_{i=1}^{i=N}\alpha_i^*y_i\kappa(x_i,x)+b^*)
核函數的思想就是,碰巧有個二元函數κ(xi,xj)\kappa(x_i,x_j),它碰巧等於Φ(xi)Φ(x)\Phi(x_i)·\Phi(x),我們不需要知道Φ(x)\Phi(x)是什麼,只需要將xix_ixjx_j代入κ(xi,xj)\kappa(x_i,x_j),就能得到Φ(xi)Φ(x)\Phi(x_i)·\Phi(x)的值。

而只要滿足下面定理的函數,都可以當作核函數使用:

(上圖來自周志華的《機器學習》)
這個定理的必要性我試着證明了下,用半正定的定義(對任意xx,有xTKx0x^TKx≥0)證明非常簡單,讀者可以試試。

這樣,對於線性不可分問題,即可找滿足上述要求的核函數,代入優化問題進行求解。參考西瓜書列出的常用核函數:

(上圖來自周志華的《機器學習》)
並且,核函數的線性組合也是核函數,核函數的直積也是核函數,用任意兩個函數分別左乘、右乘核函數得到的也是核函數。

八、拉格朗日對偶、KKT相關定理

min max L中爲什麼有max

在這裏插入圖片描述

弱對偶和KKT

在這裏插入圖片描述

幾何角度看對偶

補充一個對偶關係的幾何解釋:
在這裏插入圖片描述
(上圖右下方紅字是:“弱對偶”)

最後更新於2.9,持續更新ing…

發佈了40 篇原創文章 · 獲贊 43 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章