由於要準備面試,本文以李航的《統計學習方法》爲主,結合西瓜書等其餘資料對機器學習知識作一個整理.html
知識點
- 進程和線程:進程和線程都是一個時間段的描述,是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較大時速度較慢
![](http://static.javashuo.com/static/loading.gif)
- 隨機梯度降低(SGD):每次只使用一個樣原本更新,訓練速度快,可是噪音較多,不容易找到全局最優解,以損失很小的一部分精確度和增長必定數量的迭代次數爲代價,換取了整體的優化效率的提高.注意控制步長縮小,減小震盪.
![](http://static.javashuo.com/static/loading.gif)
- 小批量梯度降低(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知足
,
,例如取
,
,就獲得迭代公式![](http://static.javashuo.com/static/loading.gif)
-
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樹.
![](http://static.javashuo.com/static/loading.gif)
- 搜索:從根節點出發,若目標點x當前維的座標小於切分點的座標則移動到左子結點,不然移動到右子結點,直到子結點爲葉結點爲止.以此葉結點爲"當前最近點",遞歸地向上回退,在每一個結點:(a)若是該結點比當前最近點距離目標點更近,則以該結點爲"當前最近點"(b)"當前最近點"必定存在於該結點一個子結點對應的區域,檢查該結點的另外一子結點對應的區域是否與以目標點爲球心,以目標點與"當前最近點"間的距離爲半徑的超球體相交.若是相交,移動到另外一個子結點,若是不相交,向上回退.持續這個過程直到回退到根結點,最後的"當前最近點"即爲最近鄰點.
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
樸素貝葉斯
- 樸素貝葉斯是基於貝葉斯定理和特徵條件獨立假設的分類方法.首先學習輸入/輸出的聯合機率分佈,而後基於此模型,對給定的輸入x,利用貝葉斯定理求出後驗機率最大的輸出y.屬於生成模型.
- 模型:首先學習先驗機率分佈
,而後學習條件機率分佈
.若是估計實際,須要指數級的計算,因此樸素貝葉斯法對條件機率分佈做了條件獨立性的假設,上式變成
.在分類時,經過學習到的模型計算後驗機率分佈,由貝葉斯定理獲得
,將條件獨立性假設獲得的等式代入,而且注意到分母都是相同的,因此獲得樸素貝葉斯分類器:![](http://static.javashuo.com/static/loading.gif)
- 樸素貝葉斯將實例分到後驗機率最大的類中,這等價於指望風險最小化.
- 算法:使用極大似然估計法估計相應的先驗機率
和條件機率
,計算條件獨立性假設下的實例各個取值的可能性
,選取其中的最大值做爲輸出.
- 用極大似然估計可能會出現所要估計的機率值爲0的狀況,在累乘後會影響後驗機率的計算結果,使分類產生誤差.能夠採用貝葉斯估計,在隨機變量各個取值的頻數上賦予一個正數.
.Sj爲j屬性可能取值數量,當λ=0時就是極大似然估計.常取λ=1,稱爲拉普拉斯平滑.
- 若是是連續值的狀況,能夠假設連續變量服從高斯分佈,而後用訓練數據估計參數.
決策樹
- 決策樹是一種基本的分類與迴歸方法.它能夠認爲是if-then規則的集合,也能夠認爲是定義在特徵空間與類空間上的條件機率分佈.主要優勢是模型具備可讀性,分類速度快.
- 模型:分類決策樹由結點和有向邊組成.結點分爲內部結點(表示一個特徵或屬性)和葉結點(表示一個類).決策樹的路徑具備互斥且完備的性質.
- 策略:決策樹學習本質上是從訓練數據集中概括出一組分類規則.咱們須要的是一個與訓練數據矛盾較小,同時具備很好的泛化能力的決策樹.從全部可能的決策樹中選取最優決策樹是NP徹底問題,因此現實中常採用啓發式方法近似求解.
- 算法:決策樹學習算法包含特徵選擇,決策樹的生成與決策樹的剪枝過程.生成只考慮局部最優,剪枝則考慮全局最優.
- 特徵選擇:若是利用一個特徵進行分類的結果與隨機分類的結果沒有很大差異,則稱這個特徵是沒有分類能力的.扔掉這樣的特徵對決策樹學習的精度影響不大.
- 信息熵:熵是衡量隨機變量不肯定性的度量.熵越大,隨機變量的不肯定性就越大.信息熵是信息量的指望
.條件熵表示在已知隨機變量X的條件下隨機變量Y的不肯定性.![](http://static.javashuo.com/static/loading.gif)
- 信息增益:表示得知特徵X的信息而使得類Y的信息的不肯定性減小的程度.定義爲集合D的經驗熵與特徵A在給定條件下D的經驗條件熵之差
,也就是訓練數據集中類與特徵的互信息.
- 信息增益算法:計算數據集D的經驗熵
,計算特徵A對數據集D的經驗條件熵
,計算信息增益,選取信息增益最大的特徵.
- 信息增益比:信息增益值的大小是相對於訓練數據集而言的,並沒有絕對意義.使用信息增益比
能夠對這一問題進行校訂.
- ID3算法:核心是在決策樹各個結點上應用信息增益準則選擇信息增益最大且大於閾值的特徵,遞歸地構建決策樹.ID3至關於用極大似然法進行機率模型的選擇.因爲算法只有樹的生成,因此容易產生過擬合.
- C4.5算法:C4.5算法與ID3算法類似,改用信息增益比來選擇特徵.
- 在學習時過多考慮如何提升對訓練數據的正確分類,從而構建出過於複雜的決策樹,產生過擬合現象.解決方法是對已生成的決策樹進行簡化,稱爲剪枝.
- 設樹的葉結點個數爲|T|,每一個葉結點有Nt個樣本點,其中k類樣本點有Ntk個,剪枝每每經過極小化決策樹總體的損失函數
來實現,其中經驗熵
.剪枝經過加入a|T|項來考慮模型複雜度,實際上就是用正則化的極大似然估計進行模型選擇.
- 剪枝算法:剪去某一子結點,若是生成的新的總體樹的損失函數值小於原樹,則進行剪枝,直到不能繼續爲止.具體能夠由動態規劃實現.
- 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稱爲間隔邊界.在決定分離超平面時只有支持向量起做用,因此支持向量機是由不多的"重要的"訓練樣本肯定的.由對偶問題一樣能夠獲得支持向量必定在間隔邊界上.![](http://static.javashuo.com/static/loading.gif)
-
對偶算法: 引進拉格朗日乘子,定義拉格朗日函數
,根據拉格朗日對偶性,原始問題的對偶問題是極大極小問題:
.先求對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稱爲支持向量.軟間隔的支持向量或者在間隔邊界上,或者在間隔邊界與分類超平面之間,或者再分離超平面誤分一側.![](http://static.javashuo.com/static/loading.gif)
-
合頁損失函數:能夠認爲是0-1損失函數的上界,而線性支持向量機能夠認爲是優化合頁損失函數構成的目標函數.![](http://static.javashuo.com/static/loading.gif)
- 若是分類問題是非線性的,就要使用非線性支持向量機.主要特色是使用核技巧.
- 非線性分類問題:用線性分類方法求解非線性分類問題分爲兩步:首先使用一個變換將原空間的數據映射到新空間,而後在新空間裏用線性分類學習方法從訓練數據中學習分類模型.
- 核函數:設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是一種快速求解凸二次規劃問題
的算法.基本思路是:若是全部變量都知足此優化問題的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次迭代的參數的估計值
![](http://static.javashuo.com/static/loading.gif)
- 重複2和3直到收斂,通常是對較小的正數ε1和ε2知足
則中止迭代.
-
取參數的初始值開始迭代
-
E步:計算分模型k對觀測數據yj的響應度![](http://static.javashuo.com/static/loading.gif)
-
M步:計算新一輪迭代的模型參數![](http://static.javashuo.com/static/loading.gif)
-
重複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,
,獲得
.
- 監督學習:估計轉移機率
和觀測機率
.初始狀態機率πi的估計爲S個樣本中初始狀態爲qi的頻率.
-
非監督學習(Baum-Welch算法):將觀測序列數據看做觀測數據O,狀態序列數據看做不可觀測的隱數據I.首先肯定徹底數據的對數似然函數
.求Q函數
,用拉格朗日乘子法極大化Q函數求模型參數
,
,
.
-
近似算法: 在每一個時刻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個質心都沒有發生變化爲止.
- 從輸入樣本點中隨機選擇一個點做爲第一個質心.
- 計算每個樣本點到已選擇的質心中最近質心的距離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是經常使用的挖掘出數據關聯規則的算法,用於找出數據值中頻繁出現的數據集合.通常使用支持度或者支持度與置信度的組合做爲評估標準.
- 支持度:幾個關聯的數據在數據集中出現的次數佔總數據集的比重
![](http://static.javashuo.com/static/loading.gif)
- 置信度:一個數據出現後.另外一個數據出現的機率
![](http://static.javashuo.com/static/loading.gif)
- Apriori算法的目標是找到最大的K項頻繁集.假設使用支持度來做爲評估標準,首先搜索出候選1項集及對應的支持度,剪枝去掉低於支持度的1項集,獲得頻繁1項集.而後對剩下的頻繁1項集進行鏈接,獲得候選的頻繁2項集......以此類推,不斷迭代,直到沒法找到頻繁k+1項集爲止,對應的頻繁k項集的集合即爲輸出結果.
降維方法
- 主成分分析(PCA):降維,不斷選擇與已有座標軸正交且方差最大的座標軸.
- 奇異值分解(SVD):矩陣分解,降維,推薦系統.
- 線性判別分析(LDA)
引用
- 如何理解神經網絡裏面的反向傳播算法? - 陳惟源的回答 - 知乎
- 劉建平Pinard-博客園