因為要准備面試,本文以李航的《統計學習方法》為主,結合西瓜書等其他資料對機器學習知識做一個整理.
知識點
- 進程和線程:進程和線程都是一個時間段的描述,是CPU工作時間段的描述,不過是顆粒大小不同.進程就是包換上下文切換的程序執行時間總和 = CPU加載上下文+CPU執行+CPU保存上下文.線程是共享了進程的上下文環境的更為細小的CPU時間段。
- 判別式模型和生成式模型:
- 判別式模型直接學習決策函數f(X)或條件概率分布P(Y|X)作為預測的模型.往往准確率更高,並且可以簡化學習問題.如k近鄰法/感知機/決策樹/最大熵模型/Logistic回歸/線性判別分析(LDA)/支持向量機(SVM)/Boosting/條件隨機場算法(CRF)/線性回歸/神經網絡
- 生成式模型由數據學習聯合概率分布P(X,Y),然后由P(Y|X)=P(X,Y)/P(X)求出條件概率分布作為預測的模型,即生成模型.當存在隱變量時只能用生成方法學習.如混合高斯模型和其他混合模型/隱馬爾可夫模型(HMM)/朴素貝葉斯/依賴貝葉斯(AODE)/LDA文檔主題生成模型
- 概率質量函數,概率密度函數,累積分布函數:
- 概率質量函數 (probability mass function,PMF)是離散隨機變量在各特定取值上的概率。
- 概率密度函數(p robability density function,PDF )是對 連續隨機變量 定義的,本身不是概率,只有對連續隨機變量的取值進行積分后才是概率。
- 累積分布函數(cumulative distribution function,CDF) 能完整描述一個實數隨機變量X的概率分布,是概率密度函數的積分。對於所有實數x ,與pdf相對。
- 極大似然估計:已知某個參數能使這個樣本出現的概率最大,我們當然不會再去選擇其他小概率的樣本,所以干脆就把這個參數作為估計的真實值
- 最小二乘法:二乘的英文是least square,找一個(組)估計值,使得實際值與估計值之差的平方加總之后的值
最小.求解方式是對參數求偏導,令偏導為0即可.樣本量小時速度快.
- 梯度下降法:負梯度方向是函數值下降最快的方向,每次更新值都等於原值加學習率(步長)乘損失函數的梯度.每次都試一個步長看會不會下降一定的程度,如果沒有的話就按比例減小步長.不斷應用該公式直到收斂,可以得到局部最小值.初始值的不同組合可以得到不同局部最小值.在最優點時會有震盪.
- 批量梯度下降(BGD):每次都使用所有的m個樣本來更新,容易找到全局最優解,但是m較大時速度較慢
- 隨機梯度下降(SGD):每次只使用一個樣本來更新,訓練速度快,但是噪音較多,不容易找到全局最優解,以損失很小的一部分精確度和增加一定數量的迭代次數為代價,換取了總體的優化效率的提升.注意控制步長縮小,減少震盪.
- 小批量梯度下降(MBGD):每次使用一部分樣本來更新.
- 牛頓法:牛頓法是二次收斂,因此收斂速度快.從幾何上看是每次用一個二次曲面來擬合當前所處位置的局部曲面,而梯度下降法是用一個平面來擬合.
紅色的是牛頓法的迭代路徑,綠色的是梯度下降法的迭代路徑.牛頓法起始點不能離極小點太遠,否則很可能不會擬合.
- 黑塞矩陣是由目標函數f(x)在點X處的二階偏導數組成的n*n階對稱矩陣。
- 牛頓法:將f(x)在x(k)附近進行二階泰勒展開:
,其中gk是f(x)的梯度向量在x(k)的值,H(x(k))是f(x)的黑塞矩陣在點x(k)的值.牛頓法利用極小點的必要條件f(x)處的梯度為0,每次迭代中從點x(k)開始,假設
,對二階泰勒展開求偏導有
,代入得到
,即
,以此為迭代公式就是牛頓法.
- 擬牛頓法:用一個n階正定矩陣Gk=G(x(k))來近似代替黑塞矩陣的逆矩陣就是擬牛頓法的基本思想.在牛頓法中黑塞矩陣滿足的條件如下:
,令
,則有
,稱為擬牛頓條件.根據選擇Gk方法的不同有多種具體實現方法.
- DFP算法:假設每一步
,為使Gk+1滿足擬牛頓條件,可使Pk和Qk滿足
,
,例如取
,
,就得到迭代公式
-
BFGS算法: 最流行的擬牛頓算法.考慮用Bk逼近黑塞矩陣,此時相應的擬牛頓條件是
,假設每一步
,則Pk和Qk滿足
,
,類似得到迭代公式
.
- 先驗概率和后驗概率:
- 先驗概率就是事情發生前的預測概率.
- 后驗概率是一種條件概率,它限定了事件為隱變量取值,而條件為觀測結果。一般的條件概率,條件和事件可以是任意的.
- 貝葉斯公式P(y|x) = ( P(x|y) * P(y) ) / P(x)中,P(y|x)是后驗概率,P(x|y)是條件概率,P(y)是先驗概率.
- 偏差,方差,噪聲:
- 偏差:度量了學習算法的期望預測和真實結果偏離程度
- 方差:度量了同樣大小的訓練集的變動所導致的學習性能的變化,即刻畫了數據擾動所造成的影響
- 噪聲:可以認為是數據自身的波動性,表達了目前任何學習算法所能達到泛化誤差的下限
- 泛化誤差可以分解為偏差、方差與噪聲之和
- 對偶原理:一個優化問題可以從主問題和對偶問題兩個方面考慮.在推導對偶問題時,通過將拉格朗日函數對x求導並使導數為0來獲得對偶函數.對偶函數給出了主問題最優解的下界,因此對偶問題一般是凸問題,那么只需求解對偶函數的最優解就可以了.
- KKT條件:通常我們要求解的最優化條件有如下三種:
- 無約束優化問題:通常使用求導,使導數為零,求解候選最優值
- 有等式約束的優化問題:通常使用拉格朗日乘子法,即把等式約束用拉格朗日乘子和優化問題合並為一個式子,通過對各個變量求導使其為零,求解候選最優值.拉格朗日乘數法其實是KKT條件在等式約束優化問題的簡化版.
- 有不等式約束的優化問題:通常使用KKT條件.即把不等式約束,等式約束和優化問題合並為一個式子.假設有多個等式約束h(x)和不等式約束g(x)
,則不等式約束引入的KKT條件如下:
,實質是最優解在g(x)<0區域內時,約束條件不起作用,等價於對μ置零然后對原函數的偏導數置零;當g(x)=0時與情況2相近.結合兩種情況,那么只需要使L對x求導為零,使h(x)為零,使μg(x)為零三式即可求解候選最優值.
- 性能度量:
- 准確度,最常用,但在數據集不平衡的情況下不好
- Precision(精確度/查准率):P=TP/(TP+FP)
- Recall(召回率/查全率):R=TP/(TP+FN)
- Fβ度量:
,當β=1時退化為F1度量,是精確率和召回率的調和均值.
- TPR(真正例率):TPR=TP/(TP+FN)
- FPR(假正例率):FPR=FP/(TN+FP)
- PR曲線:縱軸為Precision,橫軸為Recall,一般使用平衡點(BEP,即Precsion=Recall的點)作為衡量標准.
- ROC(接受者操作特征)曲線:縱軸為TRP,橫軸為FPR,在繪圖時將分類閾值依次設為每個樣例的預測值,再連接各點.ROC曲線圍住的面積稱為AOC,AOC越大則學習器性能越好.
- 損失函數和風險函數:
- 損失函數度量模型一次預測的好壞.常用的損失函數有:0-1損失函數,平方損失函數,絕對損失函數,對數似然損失函數.
- 損失函數的期望是理論上模型關於聯合分布P(X,Y)的平均意義下的損失,稱為風險函數,也叫期望風險.但是聯合分布是未知的,期望風險不能直接計算.
- 當樣本容量N趨於無窮時經驗風險趨於期望風險,但現實中訓練樣本數目有限.
- 經驗風險最小化和結構風險最小化:
- 模型關於訓練數據集的平均損失稱為經驗風險.經驗風險最小化的策略就是最小化經驗風險.當樣本數量足夠大時學習效果較好.比如當模型是條件概率分布,損失函數是對數損失函數時,經驗風險最小化就等價於極大似然估計.但是當樣本容量很小時會出現過擬合.
- 結構風險最小化等於正則化.結構風險在經驗風險上加上表示模型復雜度的正則化項.比如當模型是條件概率分布,損失函數是對數損失函數,模型復雜度由模型的先驗概率表示時,結構風險最小化就等價於最大后驗概率估計.
- 過擬合是指學習時選擇的模型所包含的參數過多,以致於對已知數據預測得很好,但對未知數據預測很差的現象.模型選擇旨在避免過擬合並提高模型的預測能力.
- 正則化是模型選擇的典型方法.正則化項一般是模型復雜度的單調遞增函數,比如模型參數向量的范數.
- 交叉驗證是另一常用的模型選擇方法,可分為簡單交叉驗證,K折交叉驗證,留一交叉驗證等.
感知機
- 感知機是二類分類的線性模型,屬於判別模型.感知機學習旨在求出將訓練數據進行線性划分的分離超平面.是神經網絡和支持向量機的基礎.
- 模型:
,w叫作權值向量,b叫做偏置,sign是符號函數.
- 感知機的幾何解釋:wx+b對應於特征空間中的一個分離超平面S,其中w是S的法向量,b是S的截距.S將特征空間划分為兩個部分,位於兩個部分的點分別被分為正負兩類.
- 策略:假設訓練數據集是線性可分的,感知機的損失函數是誤分類點到超平面S的總距離.因為誤分類點到超平面S的距離是
,且對於誤分類的數據來說,總有
成立,因此不考慮1/||w||,就得到感知機的損失函數:
,其中M是誤分類點的集合.感知機學習的策略就是選取使損失函數最小的模型參數.
-
算法:感知機的最優化方法采用隨機梯度下降法.首先任意選取一個超平面w0,b0,然后不斷地極小化目標函數.在極小化過程中一次隨機選取一個誤分類點更新w,b,直到損失函數為0.
,其中η表示步長.該算法的直觀解釋是:當一個點被誤分類,就調整w,b使分離超平面向該誤分類點接近.感知機的解可以不同.
-
對偶形式:假設原始形式中的w0和b0均為0,設逐步修改w和b共n次,令a=nη,最后學習到的w,b可以表示為
.那么對偶算法就變為設初始a和b均為0,每次選取數據更新a和b直至沒有誤分類點為止.對偶形式的意義在於可以將訓練集中實例間的內積計算出來,存在Gram矩陣中,可以大大加快訓練速度.
k近鄰法
- k近鄰法根據其k個最近鄰的訓練實例的類別,通過多數表決等方式進行預測.k值的選擇,距離度量及分類決策規則是k近鄰法的三個基本要素.當k=1時稱為最近鄰算法.
- 模型:當訓練集,距離度量,k值以及分類決策規則確定后,特征空間已經根據這些要素被划分為一些子空間,且子空間里每個點所屬的類也已被確定.
- 策略:
- 距離:特征空間中兩個實例點的距離是相似程度的反映,k近鄰算法一般使用歐氏距離,也可以使用更一般的Lp距離或Minkowski距離.
- k值:k值較小時,整體模型變得復雜,容易發生過擬合.k值較大時,整體模型變得簡單.在應用中k一般取較小的值,通過交叉驗證法選取最優的k.
- 分類決策規則:k近鄰中的分類決策規則往往是多數表決,多數表決規則等價於經驗風險最小化.
- 算法:根據給定的距離度量,在訓練集中找出與x最鄰近的k個點,根據分類規則決定x的類別y.
- kd樹:
- kd樹就是一種對k維空間中的實例點進行存儲以便對其進行快速檢索的樹形數據結構.kd樹更適用於訓練實例數遠大於空間維數時的k近鄰搜索.
- 構造:可以通過如下遞歸實現:在超矩形區域上選擇一個坐標軸和此坐標軸上的一個切分點,確定一個超平面,該超平面將當前超矩形區域切分為兩個子區域.在子區域上重復切分直到子區域內沒有實例時終止.通常依次選擇坐標軸和選定坐標軸上的中位數點為切分點,這樣可以得到平衡kd樹.
- 搜索:從根節點出發,若目標點x當前維的坐標小於切分點的坐標則移動到左子結點,否則移動到右子結點,直到子結點為葉結點為止.以此葉結點為"當前最近點",遞歸地向上回退,在每個結點:(a)如果該結點比當前最近點距離目標點更近,則以該結點為"當前最近點"(b)"當前最近點"一定存在於該結點一個子結點對應的區域,檢查該結點的另一子結點對應的區域是否與以目標點為球心,以目標點與"當前最近點"間的距離為半徑的超球體相交.如果相交,移動到另一個子結點,如果不相交,向上回退.持續這個過程直到回退到根結點,最后的"當前最近點"即為最近鄰點.
朴素貝葉斯
- 朴素貝葉斯是基於貝葉斯定理和特征條件獨立假設的分類方法.首先學習輸入/輸出的聯合概率分布,然后基於此模型,對給定的輸入x,利用貝葉斯定理求出后驗概率最大的輸出y.屬於生成模型.
- 模型:首先學習先驗概率分布
,然后學習條件概率分布
.如果估計實際,需要指數級的計算,所以朴素貝葉斯法對條件概率分布作了條件獨立性的假設,上式變成
.在分類時,通過學習到的模型計算后驗概率分布,由貝葉斯定理得到
,將條件獨立性假設得到的等式代入,並且注意到分母都是相同的,所以得到朴素貝葉斯分類器:
- 朴素貝葉斯將實例分到后驗概率最大的類中,這等價於期望風險最小化.
- 算法:使用極大似然估計法估計相應的先驗概率
和條件概率
,計算條件獨立性假設下的實例各個取值的可能性
,選取其中的最大值作為輸出.
- 用極大似然估計可能會出現所要估計的概率值為0的情況,在累乘后會影響后驗概率的計算結果,使分類產生偏差.可以采用貝葉斯估計,在隨機變量各個取值的頻數上賦予一個正數.
.Sj為j屬性可能取值數量,當λ=0時就是極大似然估計.常取λ=1,稱為拉普拉斯平滑.
- 如果是連續值的情況,可以假設連續變量服從高斯分布,然后用訓練數據估計參數.
決策樹
- 決策樹是一種基本的分類與回歸方法.它可以認為是if-then規則的集合,也可以認為是定義在特征空間與類空間上的條件概率分布.主要優點是模型具有可讀性,分類速度快.
- 模型:分類決策樹由結點和有向邊組成.結點分為內部結點(表示一個特征或屬性)和葉結點(表示一個類).決策樹的路徑具有互斥且完備的性質.
- 策略:決策樹學習本質上是從訓練數據集中歸納出一組分類規則.我們需要的是一個與訓練數據矛盾較小,同時具有很好的泛化能力的決策樹.從所有可能的決策樹中選取最優決策樹是NP完全問題,所以現實中常采用啟發式方法近似求解.
- 算法:決策樹學習算法包含特征選擇,決策樹的生成與決策樹的剪枝過程.生成只考慮局部最優,剪枝則考慮全局最優.
- 特征選擇:如果利用一個特征進行分類的結果與隨機分類的結果沒有很大差別,則稱這個特征是沒有分類能力的.扔掉這樣的特征對決策樹學習的精度影響不大.
- 信息熵:熵是衡量隨機變量不確定性的度量.熵越大,隨機變量的不確定性就越大.信息熵是信息量的期望
.條件熵表示在已知隨機變量X的條件下隨機變量Y的不確定性.
- 信息增益:表示得知特征X的信息而使得類Y的信息的不確定性減少的程度.定義為集合D的經驗熵與特征A在給定條件下D的經驗條件熵之差
,也就是訓練數據集中類與特征的互信息.
- 信息增益算法:計算數據集D的經驗熵
,計算特征A對數據集D的經驗條件熵
,計算信息增益,選取信息增益最大的特征.
- 信息增益比:信息增益值的大小是相對於訓練數據集而言的,並無絕對意義.使用信息增益比
可以對這一問題進行校正.
- 決策樹的生成:
- ID3算法:核心是在決策樹各個結點上應用信息增益准則選擇信息增益最大且大於閾值的特征,遞歸地構建決策樹.ID3相當於用極大似然法進行概率模型的選擇.由於算法只有樹的生成,所以容易產生過擬合.
- C4.5算法:C4.5算法與ID3算法相似,改用信息增益比來選擇特征.
- 決策樹的剪枝:
- 在學習時過多考慮如何提高對訓練數據的正確分類,從而構建出過於復雜的決策樹,產生過擬合現象.解決方法是對已生成的決策樹進行簡化,稱為剪枝.
- 設樹的葉結點個數為|T|,每個葉結點有Nt個樣本點,其中k類樣本點有Ntk個,剪枝往往通過極小化決策樹整體的損失函數
來實現,其中經驗熵
.剪枝通過加入a|T|項來考慮模型復雜度,實際上就是用正則化的極大似然估計進行模型選擇.
- 剪枝算法:剪去某一子結點,如果生成的新的整體樹的損失函數值小於原樹,則進行剪枝,直到不能繼續為止.具體可以由動態規划實現.
- CART算法:
- CART既可以用於分類也可以用於回歸.它假設決策樹是二叉樹,內部結點特征的取值為"是"和"否".遞歸地構建二叉樹,對回歸樹用平方誤差最小化准則,對分類數用基尼指數最小化准則.
- 回歸樹的生成:在訓練數據集所在的輸入空間中,遞歸地將每個區域划分為兩個子區域.選擇第j個變量和它取的值s作為切分變量和切分點,並定義兩個區域
,遍歷變量j,對固定的j掃描切分點s,求解
.用選定的對(j,s)划分區域並決定相應的輸出值
,直到滿足停止條件.
- 基尼指數:假設有K個類,樣本屬於第k類的概率為pk,則概率分布的基尼指數為
,表示不確定性.在特征A的條件下集合D的基尼指數定義為
,表示分割后集合D的不確定性.基尼指數越大,樣本集合的不確定性也就越大.
-
分類樹的生成:從根結點開始,遞歸進行以下操作:設結點的訓練數據集為D,對每個特征A和其可能取的每個值a,計算A=a時的基尼指數,選擇基尼指數最小的特征及其對應的切分點作為最優特征與最優切分點,生成兩個子結點,直至滿足停止條件.停止條件一般是結點中的樣本個數小於閾值,或樣本集的基尼指數小於閾值,或沒有更多特征.
- CART剪枝:
Tt表示以t為根結點的子樹,|Tt|是Tt的葉結點個數.可以證明當時,Tt與t有相同的損失函數值,且t的結點少,因此t比Tt更可取,對Tt進行剪枝.自下而上地對各內部結點t計算
,並令a=min(g(t)),自上而下地訪問內部節點t,如果有g(t)=a,進行剪枝,並對t以多數表決法決定其類,得到子樹T,如此循環地生成一串子樹序列,直到新生成的T是由根結點單獨構成的樹為止.利用交叉驗證法在子樹序列中選取最優子樹.
- 如果是連續值的情況,一般用二分法作為結點來划分.
logistic回歸和最大熵模型
- 邏輯斯諦分布:
分布函數f(x)以點(μ,1/2)為中心對稱,γ的值越小,曲線在中心附近增長得越快.
- 邏輯斯諦回歸模型:對於給定的輸入x,根據
和
計算出兩個條件概率值的大小,將x分到概率值較大的那一類.將偏置b加入到權值向量w中,並在x的最后添加常數項1,得到
和
.如果某事件發生的概率是p,則該事件發生的幾率(此處幾率指該事件發生概率與不發生概率之比)是p/1-p,對數幾率是log(p/1-p),那么
,也就是說在邏輯斯諦回歸模型中,輸出Y=1的對數幾率是輸入x的線性函數,線性函數值越接近正無窮,概率值就越接近1,反之則越接近0.
- 似然估計:給定x的情況下參數θ是真實參數的可能性.
- 模型參數估計:對於給定的二分類訓練數據集,對數似然函數為
,也就是損失函數.其中P(Y=1|x)=π(x),對L(w)求極大值,就可以得到w的估計值.問題變成了以對數似然函數為目標函數的最優化問題.
-
多項邏輯斯諦回歸: 當問題是多分類問題時,可以作如下推廣:設Y有K類可能取值,
,
,實際上就是one-vs-all的思想,將其他所有類當作一個類,問題轉換為二分類問題.
-
最大熵原理:學習概率模型時,在所有可能的概率模型中,熵最大的模型是最好的模型.直觀地,最大熵原理認為模型首先要滿足已有的事實,即約束條件.在沒有更多信息的情況下,那些不確定的部分都是"等可能的".
- 最大熵模型:給定訓練數據集,可以確定聯合分布P(X,Y)的經驗分布
和邊緣分布P(X)的經驗分布
,其中v表示頻數,N表示樣本容量.用特征函數f(x,y)=1描述x與y滿足某一事實,可以得到特征函數關於P(X,Y)的經驗分布的期望值和關於模型P(Y|X)與P(X)的經驗分布的期望值,假設兩者相等,就得到了約束條件
.定義在條件概率分布P(Y|X)上的條件熵為
,則條件熵最大的模型稱為最大熵模型.
-
最大熵模型的學習就是求解最大熵模型的過程.等價於約束最優化問題
,將求最大值問題改為等價的求最小值問題
.引入拉格朗日乘子
將原始問題
轉換為無約束最優化的對偶問題
.首先求解內部的極小化問題,即求L(P,W)對P(y|x)的偏導數
,並令偏導數等於0,解得
.可以證明對偶函數等價於對數似然函數,那么對偶函數極大化等價於最大熵模型的極大似然估計
.之后可以用最優化算法求解得到w.
-
最大熵模型與邏輯斯諦回歸模型有類似的形式,它們又稱為對數線性模型.模型學習就是在給定的訓練數據條件下對模型進行極大似然估計或正則化的極大似然估計.
- 算法:似然函數是光滑的凸函數,因此多種最優化方法都適用.
- 改進的迭代尺度法(IIS):假設當前的參數向量是w,如果能找到一種方法w->w+δ使對數似然函數值變大,就可以重復使用這一方法,直到找到最大值.
- 邏輯斯諦回歸常應用梯度下降法,牛頓法或擬牛頓法.
支持向量機
- 模型:支持向量機(SVM)是一種二類分類模型.它的基本模型是定義在特征空間上的間隔最大的線性分類器.支持向量機還包括核技巧,使它成為實質上的非線性分類器.分離超平面
,分類決策函數
.
- 策略:間隔最大化,可形式化為一個求解凸二次規划的問題,也等價於正則化的合頁損失函數的最小化問題.
- 當訓練數據線性可分時,通過硬間隔最大化,學習出線性可分支持向量機.當訓練數據近似線性可分時,通過軟間隔最大化,學習出線性支持向量機.當訓練數據線性不可分時,通過使用核技巧及軟間隔最大化,學習非線性支持向量機.
- 核技巧:當輸入空間為歐式空間或離散集合,特征空間為希爾伯特空間時,核函數表示將輸入從輸入空間映射到特征空間得到的特征向量之間的內積.通過核函數學習非線性支持向量機等價於在高維的特征空間中學習線性支持向量機.這樣的方法稱為核技巧.
- 考慮一個二類分類問題,假設輸入空間與特征空間為兩個不同的空間,輸入空間為歐氏空間或離散集合,特征空間為歐氏空間或希爾伯特空間.支持向量機都將輸入映射為特征向量,所以支持向量機的學習是在特征空間進行的.
- 支持向量機的最優化問題一般通過對偶問題化為凸二次規划問題求解,具體步驟是將等式約束條件代入優化目標,通過求偏導求得優化目標在不等式約束條件下的極值.
- 線性可分支持向量機:
- 當訓練數據集線性可分時,存在無窮個分離超平面可將兩類數據正確分開.利用間隔最大化得到唯一最優分離超平面
和相應的分類決策函數
稱為線性可分支持向量機.
- 函數間隔:一般來說,一個點距離分離超平面的遠近可以表示分類預測的確信程度.在超平面
確定的情況下,|wx+b|能夠相對地表示點x距離超平面的遠近,而wx+b與y的符號是否一致能夠表示分類是否正確.所以可用
來表示分類的正確性及確信度,這就是函數間隔.注意到即使超平面不變,函數間隔仍會受w和b的絕對大小影響.
-
幾何間隔:一般地,當樣本點被超平面正確分類時,點x與超平面的距離是
,其中||w||是w的l2范數.這就是幾何間隔的定義.定義超平面關於訓練數據集T的幾何間隔為超平面關於T中所有樣本點的幾何間隔之最小值
.可知
,當||w||=1時幾何間隔和函數間隔相等.
-
硬間隔最大化:對線性可分的訓練集而言,這里的間隔最大化又稱為硬間隔最大化.直觀解釋是對訓練集找到幾何間隔最大的超平面意味着以充分大的確信度對訓練數據進行分類.求最大間隔分離超平面即約束最優化問題:
,將幾何間隔用函數間隔表示
,並且注意到函數間隔的取值並不影響最優化問題的解,不妨令函數間隔=1,並讓最大化1/||w||等價為最小化||w||^2/2,問題變為凸二次規划問題
.
-
支持向量和間隔邊界:與分離超平面距離最近的樣本點的實例稱為支持向量.支持向量是使最優化問題中的約束條件等號成立的點.因此對y=+1的正例點和y=-1的負例點,支持向量分別在超平面H1:wx+b=+1和H2:wx+b=-1.H1和H2平行,兩者之間形成一條長帶,長帶的寬度
稱為間隔,H1和H2稱為間隔邊界.在決定分離超平面時只有支持向量起作用,所以支持向量機是由很少的"重要的"訓練樣本確定的.由對偶問題同樣可以得到支持向量一定在間隔邊界上.
-
對偶算法: 引進拉格朗日乘子,定義拉格朗日函數
,根據拉格朗日對偶性,原始問題的對偶問題是極大極小問題:
.先求對w,b的極小值.將L(w,b,a)分別對w,b求偏導數並令其等於0,得
,代入拉格朗日函數得
,這就是極小值.接下來對極小值求對a的極大,即是對偶問題
.將求極大轉換為求極小
.由KKT條件成立得到
,其中j為使aj*>0的下標之一.所以問題就變為求對偶問題的解a*,再求得原始問題的解w*,b*,從而得分離超平面及分類決策函數可以看出w*和b*都只依賴訓練數據中ai*>0的樣本點(xi,yi),這些實例點xi被稱為支持向量.
- 線性支持向量機:
- 如果訓練數據是線性不可分的,那么上述方法中的不等式約束並不能都成立,需要修改硬間隔最大化,使其成為軟間隔最大化.
- 線性不可分意味着某些特異點不能滿足函數間隔大於等於1的約束條件,可以對每個樣本點引進一個松弛變量,使函數間隔加上松弛變量大於等於1,約束條件變為
,同時對每個松弛變量,支付一個代價,目標函數變為
,其中C>0稱為懲罰參數,C值越大對誤分類的懲罰也越大.新目標函數包含了兩層含義:使間隔盡量大,同時使誤分類點的個數盡量小.
-
軟間隔最大化:學習問題變成如下凸二次規划問題:
,可以證明w的解是唯一的,但b的解存在一個區間.線性支持向量機包含線性可分支持向量機,因此適用性更廣.
-
對偶算法: 原始問題的對偶問題是,構造拉格朗日函數
,先求對w,b,ξ的極小值,分別求偏導並令導數為0,得
,代入原函數,再對極小值求a的極大值,得到
,利用后三條約束消去μ,再將求極大轉換為求極小,得到對偶問題
.由KKT條件成立可以得到
,j是滿足0<aj*<C的下標之一.問題就變為選擇懲罰參數C>0,求得對偶問題(凸二次規划問題)的最優解a*,代入計算w*和b*,求得分離超平面和分類決策函數.因為b的解並不唯一,所以實際計算b*時可以取所有樣本點上的平均值.
-
支持向量:在線性不可分的情況下,將對應與ai*>0的樣本點(xi,yi)的實例點xi稱為支持向量.軟間隔的支持向量或者在間隔邊界上,或者在間隔邊界與分類超平面之間,或者再分離超平面誤分一側.
-
合頁損失函數:可以認為是0-1損失函數的上界,而線性支持向量機可以認為是優化合頁損失函數構成的目標函數.
- 非線性支持向量機:
- 如果分類問題是非線性的,就要使用非線性支持向量機.主要特點是使用核技巧.
- 非線性分類問題:用線性分類方法求解非線性分類問題分為兩步:首先使用一個變換將原空間的數據映射到新空間,然后在新空間里用線性分類學習方法從訓練數據中學習分類模型.
- 核函數:設X是輸入空間(歐式空間的子集或離散集合),H為特征空間(希爾伯特空間),一般是高維甚至無窮維的.如果存在一個從X到H的映射
使得對所有x,z屬於X,函數K(x,z)滿足條件
,點乘代表內積,則稱K(x,z)為核函數.
- 核技巧:基本思想是通過一個非線性變換將輸入空間對應於一個特征空間,使得在輸入空間中的超曲面模型對應於特征空間中的超平面模型(支持向量機).在學習和預測中只定義核函數K(x,z),而不顯式地定義映射函數.對於給定的核K(x,z),特征空間和映射函數的取法並不唯一.注意到在線性支持向量機的對偶問題中,目標函數和決策函數都只涉及輸入實例與實例之間的內積,xi`xj可以用核函數K(xi,xj)=Ф(xi)`Ф(xj)來代替.當映射函數是非線性函數時,學習到的含有核函數的支持向量機是非線性分類模型.在實際應用中,往往依賴領域知識直接選擇核函數.
- 正定核:通常所說的核函數是指正定核函數.只要滿足正定核的充要條件,那么給定的函數K(x,z)就是正定核函數.設K是定義在X*X上的對稱函數,如果任意xi屬於X,K(x,z)對應的Gram矩陣
是半正定矩陣,則稱K(x,z)是正定核.這一定義在構造核函數時很有用,但要驗證一個具體函數是否為正定核函數並不容易,所以在實際問題中往往應用已有的核函數.
- 算法:選取適當的核函數K(x,z)和適當的參數C,將線性支持向量機對偶形式中的內積換成核函數,構造並求解最優化問題
,選擇最優解a*的一個正分量0<aj*<C計算
,構造決策函數
.
- 常用核函數:
- 多項式核函數(polynomial kernel function):
,對應的支持向量機是一個p次多項式分類器,分類決策函數為
.
-
高斯核函數(Gaussian krenel function):
,對應的支持向量機是高斯徑向基函數(RBF)分類器.分類決策函數為
.
-
字符串核函數(string kernel function): 核函數不僅可以定義在歐氏空間上,還可以定義在離散數據的集合上.字符串核函數給出了字符串中長度等於n的所有子串組成的特征向量的余弦相似度.
- 序列最小最優化(SMO)算法:
- SMO是一種快速求解凸二次規划問題
的算法.基本思路是:如果所有變量都滿足此優化問題的KKT條件,那么解就得到了.否則,選擇兩個變量,固定其他變量,針對這兩個變量構建一個二次規划問題.不斷地將原問題分解為子問題並對子問題求解,就可以求解原問題.注意子問題兩個變量中只有一個是自由變量,另一個由等式約束確定.
- 兩個變量二次規划的求解方法:假設選擇的兩個變量是a1,a2,其他變量是固定的,於是得到子問題
,ε是常數,目標函數式省略了不含a1,a2的常數項.考慮不等式約束和等式約束,要求的是目標函數在一條平行於對角線的線段上的最優值
,問題變為單變量的最優化問題.假設初始可行解為aold,最優解為anew,考慮沿着約束方向未經剪輯的最優解anew,unc(即未考慮不等式約束).對該問題求偏導數,並令導數為0,代入原式,令
,得到
,經剪輯后a2的解是
,L與H是a2new所在的對角線段端點的界.並解得
.
- 變量的選擇方法:在每個子問題中選擇兩個變量優化,其中至少一個變量是違反KKT條件的.第一個變量的選取標准是違反KKT條件最嚴重的樣本點,第二個變量的選取標准是希望能使該變量有足夠大的變化,一般可以選取使對應的|E1-E2|最大的點.在每次選取完點后,更新閾值b和差值Ei.
提升方法
- 提升(boosting)是一種常用的統計學習方法,是集成學習的一種.它通過改變訓練樣本的權重(概率分布),學習多個弱分類器(基本分類器),並將這些分類器線性組合來構成一個強分類器提高分類的性能.
- AdaBoost:
- AdaBoost提高那些被前一輪弱分類器錯誤分類樣本的權值,而降低那些被正確分類樣本的權值.然后采取加權多數表決的方法組合弱分類器.
- 算法:首先假設訓練數據集具有均勻的權值分布D1,使用具有權值分布Dm的訓練數據集學習得到基本分類器Gm(x),計算分類誤差率
和Gm(x)的系數
,更新訓練數據集的權值分布
,其中
Zm是使Dm+1成為概率分布的規范化因子
.重復上述操作M次后得到M個弱分類器,構建線性組合得到最終分類器
.
- AdaBoost算法也可以理解成模型為加法模型,損失函數為指數函數,學習算法為前向分步算法的二類分類學習方法.
- 前向分步算法:考慮加法模型
,其中b(x,γm)為基函數,γm為基函數的參數,βm為基函數的系數.在給定損失函數L(y,f(x))的條件下,學習加法模型就是求解損失函數極小化問題
前向分步算法求解的想法是:從前往后,每一步只學習一個基函數及其系數,優化
,得到參數βm和γm,更新
,逐步逼近優化目標.最終得到加法模型.
- 提升樹:
- 提升樹是模型為加法模型,算法為前向分布算法,基函數為決策樹的提升方法.第m步的模型是
,通過經驗風險極小化確定下一棵決策樹的參數
.不同問題的提升樹學習算法主要區別在於使用的損失函數不同.
-
二類分類問題:只需將AdaBoost算法中的基本分類器限制為二類分類數即可.
-
回歸問題:如果將輸入空間划分為J個互不相交的區域,並且在每個區域上確定輸出的常量Cj,那么樹可表示為
,其中
.提升樹采用前向分步算法:
.當采用平方誤差損失函數時,損失變為
,其中r是當前模型擬合數據的殘差.每一步都只需擬合殘差學習一個回歸樹即可.
-
梯度提升樹(GBDT): 利用最速下降法的近似方法來實現每一步的優化,關鍵在於用損失函數的負梯度在當前模型的值
作為回歸問題中提升樹算法中的殘差的近似值,每一步以此來估計回歸樹葉結點區域以擬合殘差的近似值,並利用線性搜索估計葉結點區域的值使損失函數最小化,然后更新回歸樹即可.
- AdaBoost產生的基礎學習器有好有壞,因此加入權重.提升樹產生的基礎學習器是一個不斷減少殘差的過程,並不是一個單獨的分類器,因此一般不加權重.
- XGBoost:相比傳統GBDT有以下優點:
- 在優化時用到了二階導數信息.
- 在代價函數里加入了正則項.
- 每次迭代后都將葉子結點的權重乘上一個系數,削弱每棵樹的影響.
- 列抽樣.
- 在訓練前對數據進行排序,保存為block結構,並行地對各個特征進行增益計算.
EM算法
- EM算法是一種迭代算法,用於含有隱變量的概率模型參數的極大似然估計.每次迭代由兩步組成:E步,求期望(expectation),M步,求極大值(maximization),直至收斂為止.
- 隱變量:不能被直接觀察到,但是對系統的狀態和能觀察到的輸出存在影響的一種東西.
- 算法:
- 選擇參數的初始值θ(0),開始迭代.注意EM算法對初值是敏感的.
- E步:θ(i)為第i次迭代參數θ的估計值,在第i+1次迭代的E步,計算
,P(Z|Y,θ(i))是在給定觀測數據Y和當前參數估計θ(i)下隱變量數據Z的條件概率分布.
- M步:求使Q(θ,θ(i))極大化的θ,確定第i+1次迭代的參數的估計值
- 重復2和3直到收斂,一般是對較小的正數ε1和ε2滿足
則停止迭代.
- EM算法是通過不斷求解下界的極大化逼近求解對數似然函數極大化的算法.可以用於生成模型的非監督學習.生成模型由聯合概率分布P(X,Y)表示.X為觀測數據,Y為未觀測數據.
- 高斯混合模型(GMM):高斯混合模型是指具有如下形式的概率分布模型:
.其中
,
稱為第k個分模型.
-
高斯混合模型參數估計的EM算法:
-
取參數的初始值開始迭代
-
E步:計算分模型k對觀測數據yj的響應度
-
M步:計算新一輪迭代的模型參數
-
重復2和3直到對數似然函數
收斂.
隱馬爾可夫模型(HMM)
- 隱馬爾可夫模型是關於時序的概率模型,描述由一個隱藏的馬爾可夫鏈隨機生成不可觀測的狀態序列,再由各個狀態生成一個觀測而產生觀測隨機序列的過程.
- 設Q是所有可能的狀態的集合,V是所有可能的觀測的集合
,I是長度為T的狀態序列,O是對應的觀測序列
,A是狀態轉移概率矩陣
,aij表示在時刻t處於狀態qi的條件下在時刻t+1轉移到狀態qj的概率.B是觀測概率矩陣
,bij是在時刻t處於狀態qj的條件下生成觀測vk的概率.π是初始狀態概率向量
,πi表示時刻t=1處於狀態qi的概率.隱馬爾可夫模型由初始狀態概率向量π,狀態轉移概率矩陣A以及觀測概率矩陣B確定.π和A決定即隱藏的馬爾可夫鏈,生成不可觀測的狀態序列.B決定如何從狀態生成觀測,與狀態序列綜合確定了觀測序列.因此,隱馬爾可夫模型可以用三元符號表示
.
-
隱馬爾可夫模型作了兩個基本假設:
- 齊次馬爾可夫性假設:假設隱藏的馬爾可夫鏈在任意時刻t的狀態只依賴於其前一時刻的狀態.
- 觀測獨立性假設:假設任意時刻的觀測只依賴於該時刻的馬爾可夫鏈的狀態.
- 隱馬爾可夫模型有三個基本問題,即概率計算問題,學習問題,預測問題.
- 概率計算問題:給定模型
和觀測序列
,計算在模型λ下觀測序列O出現的概率P(O|λ).
- 直接計算法:最直接的方法是列舉所有可能長度為T的狀態序列,求各個狀態序列I與觀測序列O的聯合概率,但計算量太大,實際操作不可行.
- 前向算法:定義到時刻t部分觀測序列為o1~ot且狀態為qi的概率為前向概率,記作
.初始化前向概率
,遞推,對t=1~T-1,
,得到
.減少計算量的原因在於每一次計算直接引用前一個時刻的計算結果,避免重復計算.
-
后向算法:定義在時刻t狀態為qi的條件下,從t+1到T的部分觀測序列為oi+1~oT的概率為后向概率,記作
.初始化后向概率
,遞推,對t=T-1~1,
,得到
.
-
學習算法:已知觀測序列
,估計模型
的參數,使得在該模型下觀測序列概率P(O|λ)最大.根據訓練數據是否包括觀察序列對應的狀態序列分別由監督學習與非監督學習實現.
- 監督學習:估計轉移概率
和觀測概率
.初始狀態概率πi的估計為S個樣本中初始狀態為qi的頻率.
-
非監督學習(Baum-Welch算法):將觀測序列數據看作觀測數據O,狀態序列數據看作不可觀測的隱數據I.首先確定完全數據的對數似然函數
.求Q函數
,用拉格朗日乘子法極大化Q函數求模型參數
,
,
.
-
預測問題:也稱為解碼問題.已知模型
和觀測序列
,求對給定觀測序列條件概率P(I|O)最大的狀態序列
.
-
近似算法: 在每個時刻t選擇在該時刻最有可能出現的狀態it*,從而得到一個狀態序列作為預測的結果.優點是計算簡單,缺點是不能保證狀態序列整體是最有可能的狀態序列.
- 維特比算法:用動態規划求概率最大路徑,這一條路徑對應着一個狀態序列.從t=1開始,遞推地計算在時刻t狀態為i的各條部分路徑的最大概率,直至得到時刻t=T狀態為i的各條路徑的最大概率.時刻t=T的最大概率即為最優路徑的概率P*,最優路徑的終結點it*也同時得到,之后從終結點開始由后向前逐步求得結點,得到最優路徑.
統計學習方法總結
------------------------------------------------- 以下內容並非出自《統計學習方法》-------------------------------------------------
神經網絡
- 神經元(感知器)接收到來自n個其他神經元傳遞過來的輸入信號,這些輸入信號通過帶權重的連接進行傳遞,神經元將接收到的總輸入值與神經元的閾值進行比較,然后通過激活函數處理以產生神經元的輸出.把許多個這樣的神經元按一定的層次結構連接起來就得到了神經網絡.一般使用反向傳播(BP)算法來進行訓練.
- 反向傳播(BP)算法:
- 前向傳播:將訓練集數據輸入,經過隱藏層,到達輸出層並輸出結果.
- 計算估計值與實際值之間的誤差,並將該誤差從輸出層向輸入層反向傳播.
- 在反向傳播的過程中,根據誤差使用梯度下降與鏈式法則調整各種參數的值.
- 不斷迭代直至收斂.
- 深度神經網絡(DNN):可以理解為有很多隱藏層的神經網絡.DNN內部分為輸入層(第一層),隱藏層,輸出層(最后一層).層與層之間是全連接的.
- 卷積神經網絡(CNN):一般用於圖像識別.通過卷積核和感受野的乘積形成卷積后的輸出.在每一個卷積層之后,通常會使用一個ReLU(修正線性單元)函數來把所有的負激活都變為零.在幾個卷積層之后也許會用一個池化層(采樣層)來輸出過濾器卷積計算的每個子區域中的最大數字或平均值.
- 循環神經網絡(RNN):如果訓練樣本輸入是連續序列,則DNN和CNN不好解決.RNN假設樣本是基於序列的,對應的輸入是樣本序列中的x(t),而模型在序列索引號t位置的隱藏狀態h(t)由x(t)和h(t-1)共同決定.在任意序列索引號t有對應的模型預測輸出o(t).也就是說,RNN是包含循環的網絡,允許信息的持久化.
- 長短期記憶網絡(LSTM):一種特殊的RNN,可以學習長期依賴信息.
K-Means
- K-Means是無監督的聚類算法.思想是對於給定的樣本集,按照樣本之間的距離大小將樣本集划分為K個簇,讓簇內的點盡量緊密地連在一起,而讓簇間的距離盡量的大.
- 傳統算法:
- 用先驗知識或交叉驗證選擇一個合適的k值.
- 隨機選擇k個樣本作為初始的質心.注意初始化質心的選擇對最后的聚類結果和運行時間都有很大的影響.
- 計算每個樣本點和各個質心的距離,將樣本點標記為距離最小的質心所對應的簇.
- 重新計算每個簇的質心,取該簇中每個點位置的平均值.
- 重復2,3,4步直到k個質心都沒有發生變化為止.
- K-Means++:用於優化隨機初始化質心的方法
- 從輸入樣本點中隨機選擇一個點作為第一個質心.
- 計算每一個樣本點到已選擇的質心中最近質心的距離D(x).
- 選擇一個新的樣本點作為新的質心,選擇原則是D(x)越大的點被選中的概率越大.
- 重復2和3直到選出k個質心.
- Elkan K-Means:利用兩邊之和大於第三邊以及兩邊之差小於第三邊來減少距離的計算.不適用於特征稀疏的情況.
- Mini Batch K-Means:樣本量很大時,只用其中的一部分來做傳統的K-Means.一般多用幾次該算法,從不同的隨即采樣中選擇最優的聚類簇.
Bagging
- Bagging的弱學習器之間沒有boosting那樣的聯系,它的特點在於"隨機采樣",也就是有放回采樣.因此泛化能力很強.一般會隨機采集和訓練集樣本數一樣個數的樣本.假設有m個樣本,且采集m次,當m趨向無窮大時不被采集到的數據占1/e,也就是36.8%,稱為袋外數據,可以用來檢測模型的泛化能力.Bagging對於弱學習器沒有限制,一般采用決策樹和神經網絡.
- 算法:
- 對於t=1~T,對訓練數據進行第t次隨機采樣,共采集m次,得到包含m個樣本的采樣集Dm.
- 用采樣集Dm訓練第m個弱學習器Gm(x)
- 如果是分類,則用簡單投票法.如果是回歸,則取T個弱學習器結果的平均值.
- 隨機森林:使用CART決策樹作為弱學習器,然后每次不從n個樣本特征中選擇最優特征,而是從隨機選擇的nsub個樣本特征中來選擇.一般用交叉驗證來獲取合適的nsub值.
Apriori
- Apriori是常用的挖掘出數據關聯規則的算法,用於找出數據值中頻繁出現的數據集合.一般使用支持度或者支持度與置信度的組合作為評估標准.
- 支持度:幾個關聯的數據在數據集中出現的次數占總數據集的比重
- 置信度:一個數據出現后.另一個數據出現的概率
- Apriori算法的目標是找到最大的K項頻繁集.假設使用支持度來作為評估標准,首先搜索出候選1項集及對應的支持度,剪枝去掉低於支持度的1項集,得到頻繁1項集.然后對剩下的頻繁1項集進行連接,得到候選的頻繁2項集......以此類推,不斷迭代,直到無法找到頻繁k+1項集為止,對應的頻繁k項集的集合即為輸出結果.
降維方法
- 主成分分析(PCA):降維,不斷選擇與已有坐標軸正交且方差最大的坐標軸.
- 奇異值分解(SVD):矩陣分解,降維,推薦系統.
- 線性判別分析(LDA)