统计学习方法总结
統計學習方法總結
閱讀目錄(Content)
- 0. 相關知識點
- 0x1: 監督學習
- 1. 模型假設空間
- 2. 生成模型與判別模型的聯系與區別
- 3. 學習策略
- 4. 分類問題與回歸問題
- 5. 利用模型進行預測和分析
- 0x2:模型評估與模型選擇
- 1. 訓練誤差與測試誤差
- 2. 過擬合與模型選擇
- 0x3:正則化與交叉驗證 - 緩解過擬合的發生
- 1. 正則化 - 結構風險最小化策略的一種具體實現
- 2.? 交叉驗證
- 0x4:學習算法
- 0x5:監督學習中的典型問題場景
- 1. 回歸問題
- 2. 分類問題
- 3. 標注問題
- 1. 各類算法橫向對比
- 0x1: 監督學習算法適用的場景
- 1. 分類
- 2. 標注
- 3. 回歸
- 0x2: 模型特點
- 3. 感知機
- 0x1: 適用場景
- 0x2: 模型特點
- 0x3: 學習策略
- 0x4: 學習算法
- 4. K近鄰法
- 0x1:適用場景
- 1. 多分類問題場景
- 2. 回歸問題的場景
- 0x2:模型特點
- 1. K值選擇
- 2. 距離度量
- 3. 分類決策規則
- 0x3:學習策略
- 0x4:學習算法
- 1. KD樹(kd tree)
- 2. Ball Tree搜索
- 5. 樸素貝葉斯法
- 0x1:適用場景?
- 0x2: 模型特點
- 0x3: 學習策略
- 1. 模型學習過程
- 2. 根據模型進行判斷預測
- 0x4:學習算法
- 6. 決策樹
- 0x1:適用場景
- 0x2:模型特點
- 0x3:學習策略 ?
- 0x4:學習算法
- 7. 邏輯斯蒂回歸與最大熵模型
- 0x1:適用場景
- 0x2:模型特點
- 0x3:學習策略?
- 0x4:學習算法
- 1. 損失函數
- 2. 優化算法
- 7. 支持向量機
- 0x1:適用場景?
- 0x2: 模型特點
- 0x3: 學習策略
- 0x4:學習算法
- 8. 提升方法
- 0x1:適用場景?
- 0x2: 模型特點
- 0x3: 學習策略
- 0x4:學習算法
- 9. EM算法
- 0x1:適用場景?
- 0x2: 模型特點
- 0x3: 學習策略
- 0x4:學習算法
- 10. HMM(隱馬爾可夫模型)
- 0x1:適用場景
- 0x2: 模型特點
- 0x3: 學習策略
- 0x4:學習算法
0. 相關知識點
統計學習(statistical learning)是關于計算機基于數據構建概率統計模型并運用模型對數據進行預測與分析的一門學科。統計學習的對象是數據(data),它從數據出發,提取數據的特征,抽象出數據的模型,發現數據中的知識,又回到對數據的分析與預測中去
統計學習關于數據的基本假設是同類數據具有一定的統計規律性(例如概率分布),這是統計學習的前提。對數據的預測與分析是通過構建概率統計模型來實現的,統計學習總的目標就是考慮學習什么樣的模型和如何學習模型,以使模型能夠對數據進行準確的預測與分析,同時也要盡可能地提高學習效率
統計學習的方法是基于數據構建統計模型從而對數據進行預測與分析,統計學習由下列幾種學習方法組成
1. 監督學習(supervised learning) 2. 非監督學習(unsupervised learning) 3. 半監督學習(semi-supervised learning) 4. 強化學習(reinforcement learning)0x1: 監督學習
在監督學習中,統計學習的方法可以概括如下:
1. 從給定的、有限的、用于學習的訓練數據(training data)集合出發(訓練集是人工給定的、已知label的數據集),假設數據是獨立同分布產生的; 2. 并且假設要學習的模型屬于某個函數的集合(稱為假設空間 hypothesis space); 3. 應用某個評價標準(evaluation criterion)從假設空間中選取一個最優的模型,使他對已知訓練數據及未知測試數據(test data)在給定的評價準則下有最優的預測; 4. 最優模型的選取由算法實現這樣,統計學習的方法包括模型的假設空間、模型選擇的準則、以及模型學習的算法,稱為統計學習方法的三要素,簡稱模型(model)、策略(strategy)、算法(algorithm)
實現統計學習的方法的步驟如下
1. 得到一個有限的訓練數據集合,包括樣本特征的抽取; 2. 確定包含所有可能的模型的假設空間(即學習模型的集合),對應判別模型和生成模型的訓練中,就是建立目標模型的數學公式描述 3. 確定模型選擇的準則,即學習的策略 4. 實現求解最優模型的算法,即學習的算法,這塊常常是學習策略的具體數學化表示,算法作為策略實現的手段 5. 通過學習方法選擇最優模型,這部分又可以分為直接求出解析最優解、和逐步迭代求每輪的局部最優解從而逼近全局最優解(例如SGD) 6. 利用學習的最優模型對新數據進行預測或分析監督學習(supervised learning)的任務是學習一個模型(包括生成模型和判別模型),使模型能夠對任意給定的輸入,對其相應的輸出做出一個好的預測
1. 模型假設空間
監督學習的目的在于學習一個由輸入到輸出的映射,這一映射由模型來表示。模型屬于由輸入空間到輸出空間的映射的集合,這個集合就是假設空間(hypothesis space)。監督學習的模型可以是概率模型或者非概率模型(決策函數)
概率模型:在學習的過程中,監督學習假設輸入與輸出的隨機變量X和Y滿足聯合概率分布,這是監督學習的基本假設,即數據本身的規則必須確實存在,建模訓練才能有效
決策函數(decision function):由 Y = f(X)表示
2. 生成模型與判別模型的聯系與區別
生成的聯合概率和決策函數又可以稱為生成方法(generative approach)和判別方法(discriminative approach),訓練得到的模型分別稱為生成模型(generative model)和判別模型(discriminative model)
生成方法:由數據學習學習聯合概率分布,然后求出條件概率分布作為預測的模型,即生成模型:。這樣的方法之所以稱為生成方法,是因為模型表示了給定輸入 X 產生輸出 Y 的生成關系,典型的生成模型有:樸素貝葉斯法和隱馬爾科夫模型
向生成方法輸入X,生成模型的條件概率會給出整個概率分布上所有類別Y的概率,我們根據argmax取概率最大的那一類作為預測結果
?
判別方法:由數據直接學習決策函數或者條件概率分布作為預測的模型,即判別模型。判別模型關心的對給定的輸入X,應該預測什么樣的輸出Y。典型的判別模型包括:K近鄰法、感知機、決策樹、邏輯斯蒂回歸模型、最大熵模型、支持向量機、條件隨機場等
向判別方法輸入X,判別方法會得出一個Y,然后拿這個Y與一個閾值比較,根據比較的大小結果得到屬于哪個類
生成算法嘗試去找到底這個數據是怎么生成的(產生的),然后再對一個信號進行分類。基于你的生成假設,那么那個類別最有可能產生這個信號,這個信號就屬于那個類別。判別模型不關心數據是怎么生成的,它只關心信號之間的差別,然后用差別來簡單對給定的一個信號進行分類直接學習條件概率分布 P(Y | X)或決策函數 Y = f(X)的方法為判別方法,對應的模型是判別模型。感知機、k近鄰、決策樹、邏輯斯蒂回歸、最大熵模型、支持向量機、提升方法、條件隨機場是判別方法;
首先學習聯合概率分布 P(X,Y),從而求得條件概率分布 P(Y | X)的方法是生成方法,對應的模型是生成模型。樸素貝葉斯法、隱馬爾科夫模型是生成方法。
下圖給出了部分模型之間的關系
在監督學習中,生成方法和判別方法各有優缺點,適合于不同條件下的學習問題
1. 生成方法的特點:1) 生成方法可以還原出聯合概率分布P(X,Y),而判別方法則不能2) 生成方法的學習收斂速度更快,即當樣本容量增加時,學到的模型可以更快地收斂于真實模型3) 當存在隱變量時,生成方法仍可以學習,此時判別方法則不能用4) 生成模型的模型數學定義更困難,例如常用高斯模型需要假設樣本數據特征滿足高斯分布,但是我們知道實際問題中,樣本的特征分布規律是十分復雜有時候難以用一個直觀的數學表達式進行描述5) 生成方法學習聯合概率密度分布P(X,Y),所以就可以從統計的角度表示數據的分布情況,能夠反映同類數據本身的相似度。但它不關心到底劃分各類的那個分類邊界在哪。2. 判別方法的特點:
1) 判別方法直接學習的是條件概率P(Y|X)或決策函數f(X),直接面對越策,往往學習的準確率更高
2) 由于直接學習P(Y|X)或f(X),可以對數據進行各種程度上的抽象(例如DNN多層抽象、SVM升維扭曲)、定義特征并使用特征,因此可以簡化學習問題
3) 判別模型由于不存在模型數序定義的問題,因此適合于復雜問題的場景,當樣本中的規律分布不是十分明顯滿足某個已知概率分布的時候,可以嘗試用判別模型訓練分類器
4) 判別方法直接學習的是決策函數Y=f(X)或者條件概率分布P(Y|X)。不能反映訓練數據本身的特性。但它尋找不同類別之間的最優分類面,反映的是異類數據之間的差異
從生成模型可以推導出判別模型,但是從判別模型無法反向推導。換句話,訓練樣本滿足生成模型的概率分布是一個強假設,這個強假設可以推導出一個弱假設,例如一個訓練集滿足高斯判別模型(生成模型),則這個訓練集一定能用邏輯斯蒂回歸判別模型進行分類,反之則不行
例如也是兩類w1和w2,那么我們通過生成模型求得了P(w1|X)和P(w2|X),那么實際上判別函數就可以表示為Y= P(w1|X)/P(w2|X),如果Y大于1或者某個閾值,那么X就屬于類w1,如果小于閾值就屬于類w2
本質上,分類器的設計就是在給定訓練數據的基礎上估計其概率模型P(Y|X)。如果可以估計出來,那么就可以分類了。但是一般來說,概率模型是比較難估計的,實際問題中樣本背后的概率分布數學模型(數學建模)往往是十分復雜的,我們很難或者需要花費很大精力來進行建模,所以就有了不依賴概率模型直接設計分類器呢,分類器就是一個決策函數(或決策面),它能夠從要解決的問題和訓練樣本出發直接求出判別函數,就不用估計概率模型了
例如支持向量機,我已經知道它的決策函數(分類面)是線性的了,也就是可以表示成Y=f(X)=WX+b的形式,那么我們通過訓練樣本來學習得到W和b的值就可以得到Y=f(X)了
還有一種更直接的分類方法,它不用事先設計分類器,而是只確定分類原則,根據已知樣本(訓練樣本)直接對未知樣本進行分類。包括近鄰法,它不會在進行具體的預測之前求出概率模型P(Y|X)或者決策函數Y=f(X),而是在真正預測的時候,將X與訓練數據的各類的Xi比較,和哪些比較相似,就判斷它X也屬于Xi對應的類。
舉一個由高斯生成模型推導邏輯回歸判別模型的例子
這里我們來討論一個簡單的例子,高斯生成模型,也即每個類別的數據分布都可以由高斯模型進行建模
類別概率為伯努利分布(即二類概率分布),在這個問題中,所涉及到的未知參數包括:?,Σ,μ0,μ1,參數的求解可以通過最大化聯合概率分布求得,即
最終求得的各個參數計算公式為:
我們以圖示來說明,其中,圓圈和叉號分別表示兩類數據,分別使用高斯模型對兩類數據分布進行建模,由于兩個高斯模型的協方差參數是一致的,所以這兩個高斯分布的形狀是一樣的,只是中心位置不一致
圖示中的直線表示的是高斯模型生成的決策面,表示p(y=1|x)=p(y=0|x)=0.5,表示屬于兩個類別的概率大小是一樣的,否則的話,根據數據屬于兩個類別的概率大小(閾值)決定數據所屬于的類別,這就是生成模型的預測方式
接下來,我們繼續推導,值得注意的是,高斯生成模型中,p(y=1|x;?,μ0,μ1,Σ)是可以表示為輸入變量 x 的函數的,即:
而這個形式恰好是邏輯回歸的基本模型!這說明,我們在使用高斯模型對每一類別的特征數據進行建模時,其生成式p(y|x)是符合邏輯回歸模型的,但是如果滿足有p(y|x)符合邏輯回歸模型,并不能一定得到數據特征分布是高斯分布這個結論,所以反向推導是不成立的!
實際上,當類別數據特征分布滿足如泊松分布(Poisson Distribution)時,也可以得到p(y|x)是滿足邏輯回歸模型的,同樣反向推導不成立
總的說來,GDA(高斯生成算法)對數據分布進行了一定的假設(假設數據分布是高斯分布的),當數據確實符合或近似符合高斯分布時,這種計算方法是比較高效準確的;但是當數據并不符合高斯分布時,這種計算方法的效果并不是很好,而邏輯回歸并不存在這樣的假設,所以當數據不滿足高斯分布時,邏輯回歸分類的效果要更好一些 這也就是說判別模型更適合對樣本數據概率分布未知(難以建模)的情況,判別模型能自動進行特征抽象和分類3. 學習策略
有了模型的假設空間,統計學習接著要考慮的是按照什么樣的準則學習或選擇最優的模型,統計學習的目標在于從假設空間中選取最優模型
損失函數和風險系數 - 期望風險體現當前選擇模型對待推導規律的擬合程度
監督學習問題是在假設空間中選取模型作為決策函數,對于給定的輸入X,由給出相應的輸出Y,這個輸出的預測值與真實值Y可能不一致,因此統計學習用一個損失函數(loss function)或代價函數(cost function)來度量預測錯誤的程度,損失函數是和Y的非負實值函數,記作
統計學習常用的損失函數有以下幾種:
(1)0-1損失函數(0-1 loss function):
(2)平方損失函數(quadratic loss function):
(3)絕對值損失函數(absolute loss function):
(4)對數損失函數(logarithmic loss function)或對數似然損失函數(loglikelihood loss function):
不管損失函數的形式如何,但本質來說,它們的目的都是一樣的,即損失函數值越小,模型就越好。由于模型的輸入、輸出(X,Y)是隨機變量,遵循聯合分布P(X,Y),所以損失函數的期望是:
這是理論上模型關于聯合分布P(X,Y)的平均意義下的損失,稱為風險函數(risk function)或期望損失(expected loss)
理論上來說,統計學習的目標就是選擇期望風險最小的模型,但是聯合分布P(X,Y)是未知的,事實上,聯合分布也正是我們需要通過機器學習去求得的結果(某種程度上來說,聯合分布就是規律本身)。因此,期望風險就只能是一個理論值,不具有實際工程化價值,我們需要引入經驗風險的概念
經驗風險 - 反映當前選擇的模型對樣本的擬合程度
給定一個訓練數據集:,模型關于訓練數據集的平均損失稱為經驗風險(empirical risk)或經驗損失(empirical loss):,期望風險是模型關于聯合分布的期望損失,經驗風險是模型關于訓練樣本集的平均損失。根據大數定律,當樣本量趨于無窮時,經驗風險無限趨近于期望風險,所以我們可以近似地用經驗風險估計期望風險。但是在實際中樣本數目往往是有限的甚至較少的,所以直接用經驗風險估計期望風險就會遇到不準確的問題(例如過擬合),這對需要對經驗風險進行一定的矯正,這就引出接下來要討論的2個策略:經驗風險最小化和結構風險最小化
經驗風險最小化
在假設空間、損失函數以及訓練數據集確定的情況下,經驗風險函數可以唯一確定。經驗風險最小化(empirical risk minimization ERM)的策略認為,經驗風險最小的模型就是最優的模型,根據這一策略,按照經驗風險最小化求最優模型就是求解最優化問題: 。當樣本量足夠大時,經驗風險最小化能保證有很好的學習效果,例如極大似然估計(maximum likelihood estimation)就是經驗風險最小化的一個例子
當時,當樣本容量很小時,經驗風險最小化學習的效果就會產生誤差,甚至出現“過擬合(over-fitting)”的現象
結構風險最小化?
結構風險最小化(structural risk minimization SRM)就是為了防止過擬合而提出的策略。結構風險最小化等價于正則化(regularization)。結構風險在經驗風險之上加上了表示模型復雜度的正則化項(regularizer)或懲罰項(penalty term):,式中為模型的復雜度,是定義在假設空間,模型 f 越復雜,復雜度就越大。復雜度表示了對復雜模型的懲罰。是系數,用以權衡經驗風險和模型復雜度
模型復雜度是一個泛函
1. 在生成模型中,它往往是先驗概率分布 2. 在判別模型中,它往往和模型原子單元(例如決策樹結點或神經元)結構風險最小化的策略認為結構風險最小的模型就是最優的模型,所以求最優模型,就是求解最優化問題:,這樣,監督學習問題就變成了經驗風險或結構風險函數的最優化問題。
不同算法模型中使用的損失函數在思想的一致
1)判別模型
學習策略需要通過損失函數來數學化表示。在二分類的監督學習中,支持向量機、邏輯斯蒂回歸、最大熵模型、提升方法各自使用的損失函數為:
1. 支持向量機:合頁損失函數 2. 邏輯斯蒂回歸:邏輯斯蒂損失函數 3. 最大熵模型:指數損失函數 4. 提升方法:和基函數有關這3種損失函數都是0-1損失函數的上界,具有相似的形狀,如下圖所示:
所以,可以認為支持向量機、邏輯斯蒂回歸、最大熵模型、提升方法使用不同的代理損失函數(surrogate loss function)表示分類的損失,定義經驗風險或結構風險函數,實現二類分類學習任務。學習的策略是優化以下結構風險函數:
第一項為經驗風險(經驗損失),第二項為正則化項,為損失函數,為模型的復雜項,為系數。
支持向量機用 L2 范數表示模型的復雜度。原始的邏輯斯蒂回歸與最大熵模型有沒正則化項,可以給它們加上 L2 范數正則化項。提升方法沒有顯式的正則化項,通常通過早停止(early stopping)的方法達到正則化的效果。
2)概率模型
概率模型的學習可以形式化為極大似然估計或貝葉斯的極大后驗概率估計。這時,學習的策略是極小化對數似然函數或極小化正則化的對數似然損失。對數似然損失可以寫成:
極大后驗概率估計時,正則化項是先驗概率的負對數
4. 分類問題與回歸問題
監督學習中,根據輸入變量和輸出變量的數據類型,對預測任務分為以下幾類
1. 回歸問題:輸入變量與輸出變量均為連續變量的預測問題 2. 分類問題:輸出變量為有限個離散變量的預測問題 3. 標注問題:輸入變量與輸出變量均為變量序列的預測問題但是這里需要補充一句,分類問題和回歸問題的分解并不是那么絕對, 分類模型和回歸模型本質一樣,分類模型可將回歸模型的輸出離散化,回歸模型也可將分類模型的輸出連續化
下面舉例說明它們之間的轉換關系
1. Logistic Regression 和 Linear Regression:1) Linear Regression: 輸出一個標量 wx+b,這個值是連續值,所以可以用來處理回歸問題2) Logistic Regression:把上面的 wx+b 通過 sigmoid 函數映射到(0,1)上,并劃分一個閾值,大于閾值的分為一類,小于等于分為另一類,可以用來處理二分類問題3) 更進一步: 對于N分類問題,則是先得到N組w值不同的 wx+b,然后歸一化,比如用 softmax 函數,最后變成N個類上的概率,根據argmax取概率最大的那一類為最后的預測結果,可以處理多分類問題2. Support Vector Regression 和 Support Vector Machine: SVR:
1) SVR:輸出 wx+b,即某個樣本點到分類面的距離,是連續值,所以是回歸模型
2) SVM: 把這個距離用 sign(·) 函數進行離散化處理,距離為正(在超平面一側)的樣本點是一類,為負的是另一類,所以是分類模型
3. Naive Bayes 用于分類 和 回歸:
1) 用于分類: y是離散的類別,所以得到離散的 p(y|x),給定 x ,輸出每個類上的概率
2) 用于回歸: 對上面離散的 p(y|x)求期望 ΣyP(y|x)(即得到概率密度),就得到連續值
4. 前饋神經網絡(如 CNN 系列) 用于 分類 和 回歸:
1) 用于回歸: 最后一層有m個神經元,每個神經元輸出一個標量,m個神經元的輸出可以看做向量 v,然后全部連到一個輸出神經元上,則這個神經元輸出 wv+b,是一個連續值,可以處理回歸問題,跟上面 Linear Regression 思想一樣
2) 用于N分類: 現在這m個神經元最后連接到 N 個神經元,就有 N 組w值不同的 wv+b,同理可以歸一化(比如用 softmax )變成 N個類上的概率,然后取概率最大的那一類作為N分類的預測結果
3) 用于多標簽: 如果不用 softmax,而是每個 wx+b 用一個 sigmoid,就變成多標簽問題,跟多分類的區別在于,樣本可以被打上多個標簽
5. 循環神經網絡(如 RNN 系列) 用于分類 和 回歸:
1) 用于回歸 和 分類: 跟 CNN 類似,輸出層的值 y = wv+b,可做分類可做回歸,只不過區別在于,RNN 的輸出跟時間有關,即輸出的是 {y(t), y(t+1),…}序列
回歸問題和分類問題的本質區別在于它們采用的策略不同:
1. 回歸問題的策略是:模型的擬合函數和樣本點的距離要盡可能近,優化的方向也是朝著不斷靠近的方向優化的 2. 分類問題的策略是:模型的分界面(本質也是一個函數)和樣本點的距離盡可能遠,優化的方向是朝著不斷遠離的方向優化的5. 利用模型進行預測和分析
在學習過程中,,學習系統利用給定的訓練數據集,通過學習(或訓練)得到一個模型,表示為條件概率分布或決策函數,條件概率分布或決策函數描述輸入與輸出隨機變量之間的映射關系
在預測過程中,預測系統對于給定的測試樣本集中的輸入,由模型或給出相應的輸出
0x2:模型評估與模型選擇
1. 訓練誤差與測試誤差
統計學習的目的是使學到的模型不僅對已知數據而且對未知數據都能有很好的預測能力。訓練誤差的大小,對判定給定的問題是不是一個容易學習的問題是有意義的,它表明了模型對訓練數據的擬合程度,但本質上并不重要。測試誤差反映了學習方法對未知的測試數據集的預測能力,是學習中的重要概念,通常將學習方法對未知數據的預測能力稱為泛化能力(generalization ability)
2. 過擬合與模型選擇
當假設空間含有不同復雜度(例如不同的參數個數)的模型時(例如深度深度網絡的神經元個數、或決策樹的結點個數),就要面臨模型選擇(model selection)的問題。我們希望選擇或學習一個合適的模型,如果在假設空間中存在“真”模型,那么所選擇的模型應該逼近真模型。如果一味追求提高對訓練數據的預測能力,所選模型的復雜度則往往會比真模型更高,這種現象稱為過擬合(over-fitting)。過擬合是指學習時選擇的模型所包含的參數過多,以致于出現這一模型對已知數據預測得很好,但對未知數據預測得很差的現象
下圖描述了訓練誤差和預測誤差與模型的復雜度之間的關系。當模型的復雜度增大時,訓練誤差會逐漸減小并趨向于0;而測試誤差會先減小,達到最小值后又增大。當選擇的模型復雜度過大時,過擬合現象就會發生。
這樣,在學習時就要防止過擬合,進行最優的模型選擇,即選擇復雜度適當的模型,以達到使測試誤差最小的學習目的。達到這個目的需要借助一些數學工具和工程化方法
0x3:正則化與交叉驗證 - 緩解過擬合的發生
1. 正則化 - 結構風險最小化策略的一種具體實現
模型選擇的典型方法是正則化(regularization),正則化是結構風險最小化策略的實現,是在經驗風險上加上一個正則化項(regularizer)或懲罰項(penalty term)。正則化項一般是模型復雜度的單調遞增函數,模型越復雜,正則化值就越大。正則化是對經驗風險函數的一種擴展,一般具有如下形式:
第一項是經驗風險,第二項是正則化項,為調整兩者之間關系的系數。
我們在學習具體算法的時候會頻繁看到這個函數形式或其變體,正則化是機器學習算法常用甚至標配的一種損失函數形式。值得注意的是,上面的公式是正則化項的泛表達式,根據損失函數的不同正則化項可以取不同的形式,例如回歸問題中,損失函數是平方損失,正則化項可以是參數向量的L2范數:
正則化項符合奧科姆剃刀(Occam;s razor)原理:
在所有可選的模型中,能夠很好解釋已知數據并且十分簡單才是最好的模型,也就是應該選擇的模型 1. 從貝葉斯估計的角度來看,正則化項對應模型的先驗概率,可以假設復雜的模型有較大的先驗概率,簡單的模型有較小的先驗概率 2. 從線性分類器的角度來看,正則化項對應模型的參數個數,可以假設復雜的模型有較多的參數個數,簡單的模型有較少的參數個數注意,正則化不產生新的模型,它只是幫助我們在模型空間中選擇一個盡量好的模型
2.? 交叉驗證
另一種常用的模型選擇方法是交叉驗證(across validation),在很多實際應用中我們的訓練數據往往不夠充分,為了選擇好的模型,可以采用交叉驗證方法,它的基本思想是:重復地使用數據,把給定的數據進行切分,將切分的數據集組合為訓練集與測試集,在此基礎上反復地進行訓練、測試以及模型選擇
簡單交叉驗證
1. 首先將數據分為兩部分,一部分作為訓練集(70%),另一部分作為測試集(30%); 2. 然后用訓練集在各種條件下(例如不同的參數個數)訓練模型,從而得到不同的模型; 3. 在測試集上評價各個模型的測試誤差,選出測試誤差最小的模型S折交叉驗證(S-fold cross validation)
1. 首先隨機地將數據切分為S個互不相交的大小相同的子集; 2. 然后利用 S-1 個子集的數據訓練模型,利用余下的 1 個子集測試模型; 3. 將這一過程對可能的 S 種選擇重復進行(即進行S次); 4. 最后選出 S 次測評中平均測試誤差最小的模型留一交叉驗證
S 折交叉驗證的特征情況是 S = N(N是給定數據集的容量),稱為留一交叉驗證(leaver-one-out cross validation),往往在數據缺乏的情況下使用
0x4:學習算法
統計學習的問題有了具體的形式之后,就變成了純數學上的最優化問題。
有時,最優化問題比較簡單,解析解存在,最優解可以由公式簡單計算。
但在多數情況下,最優化問題沒有解析解,需要用數值計算或啟發式的方法求解。
樸素貝葉斯法與隱馬爾科夫模型的監督學習,最優解即極大似然估計值,可以由概率計算公式直接計算;
感知機、邏輯斯蒂回歸與最大熵模型、條件隨機場的學習無法直接求得解析解,需要用到梯度下降法、擬牛頓法進行迭代優化。這些都是一般的無約束最優化問題的解法;
支持向量機學習,可以解凸二次規劃的對偶問題。有序列最小最優化算法等方法;
決策樹學習是基于啟發式算法的典型例子,可以認為特征選擇、生成、剪枝是啟發式地進行正則化的極大似然估計;
提升方法利用學習的模型是加法模型、損失函數是指數損失函數的特點,啟發式地從前向后逐步學習模型,以達到逼近優化目標函數的目的;
EM算法是一種迭代的求解含隱變量模型參數的方法,它的收斂性可以保證,但是不能保證收斂到全局最優;
0x5:監督學習中的典型問題場景
1. 回歸問題
回歸(regression)是監督學習中的一個很重要的問題。回歸用于預測輸入變量(自變量)和輸出變量(隱變量)之間的關系,特別是當輸入變量發生變化時,輸出變量的值隨之發生的變化。回歸模型正是表示從輸入變量到輸出變量之間映射的函數。
回歸問題的學習等價于函數擬合:選擇一條函數曲線使其很好地擬合已知數據且很好地預測未知數據回歸問題按照輸入變量的個數,分為一元回歸和多元回歸;按照輸入變量和輸出變量之間關系的類型即模型的類型,分為線性回歸和非線性回歸
回歸問題最常用的損失函數是平方損失函數(也可以用其他損失函數),在此情況下,回歸問題的求解就是最小二乘法(least squares)求解
2. 分類問題
分類問題是監督學習的一個核心問題,在監督學習中,當輸出變量Y取有限個離散值時,預測問題便成了分類問題,這時輸入變量X可以是離散的,也可以是連續的。監督學習從數據中學習一個分類模型或分類決策函數(分類器 classifier)
3. 標注問題
標注(tagging)也是一個監督學習問題,可以認為標注問題是分類問題的一種推廣,同時標注問題又是更復雜的結構預測(structure prediction)問題的簡單形式。標注問題的輸入是一個觀測序列,輸出是一個標記序列或狀態序列。
標注問題的目標在于學習一個模型,使它能夠對觀測序列給出標記序列作為預測,需要注意的是,可能的標記個數是有限的,但其組合所成的標記序列的個數是依序列長度呈指數級增長的。
所以,可以認為分類問題是標注問題的特殊情況,分類問題中可能的預測結果是二類或多類,而標注問題中可能的預測結果是所有的標記序列,其數目是指數級的。
Relevant Link:
http://open.163.com/movie/2008/1/A/R/M6SGF6VB4_M6SGHMFAR.html http://blog.csdn.net/u014791046/article/details/51762888 http://blog.csdn.net/daijiguo/article/details/52218207 http://www.jdon.com/bigdata/a-tour-of-machine-learning-algorithms.html https://www.zhihu.com/question/38677354?sort=created https://www.zhihu.com/question/21329754 http://blog.csdn.net/zouxy09/article/details/8195017 http://blog.csdn.net/Fishmemory/article/details/51711114 https://www.zhihu.com/question/22374366/answer/21224060 https://segmentfault.com/q/1010000000687677?_ea=963786 http://blog.csdn.net/zouxy09/article/details/8195017 http://blog.csdn.net/wolenski/article/details/7985426 http://www.jianshu.com/p/d195b887a32e http://www.cnblogs.com/fanyabo/p/4067295.html?
回到頂部(go to top)1. 各類算法橫向對比
這章節對所有算法的適用場景,模型特點,學習策略等進行框架性的橫向對比,之后的章節再深入到細節中進行細致考量
0x1: 監督學習算法適用的場景
監督學習可以認為是學習一個模型,使它能對給定的輸入預測相應的輸出。監督學習包括分類、標注、回歸
1. 分類
分類問題是從實例的特征向量到類標記的預測問題。常見的分類方法有
1. 感知機1)針對二分類的,可以將其擴展到多類分類2)具有模型直觀、方法簡單、實現容易等特點 2. k近鄰法1)常用語多分類問題2)具有模型直觀、方法簡單、實現容易等特點 3. 樸素貝葉斯法1)可以解決二分類、多類分類問題2)具有模型直觀、方法簡單、實現容易等特點 4. 決策樹1)可以解決二分類、多類分類問題2)具有模型直觀、方法簡單、實現容易等特點 5. 邏輯斯蒂回歸1)可以解決二分類、多類分類問題2)模型更復雜但更有效的分類方法,往往分類準確度更高 6. 最大熵模型1)可以解決二分類、多類分類問題2)模型更復雜但更有效的分類方法,往往分類準確度更高 7. 支持向量機1)針對二分類的,可以將其擴展到多類分類2)模型更復雜但更有效的分類方法,往往分類準確度更高 8. 提升方法2. 標注
標注問題是從觀測序列到標記序列(或狀態序列)的預測問題。可以認為分類問題是標注問題的特殊情況。分類問題中可能的預測結果是二類或多類,而標注問題中可能的序列預測結果是所有的標記序列,其數目是指數級的(序列的順序性本身也是預測的范圍,所以是類別數的指數次方)
常見的標注方法有
1. 隱馬爾可夫模型 2. 條件隨機場3. 回歸
回歸問題是實例的特征向量到一個連續性值結果的預測問題,可以認為分類問題是回歸問題的一種離散化特例
0x2: 模型特點
undone
Relevant Link:
https://www.zhihu.com/question/26726794
https://zhuanlan.zhihu.com/p/25327755?
?
回到頂部(go to top)3. 感知機
感知機(perceptron)是二類分類的線性分類模型,其輸入為樣本實例的特征向量,輸出為實例的類別,是一種判別模型,感知機得到的超分類面并不能表達出訓練樣本包含的概率分布,它只是能“盡可能好地”完成對訓練樣本的二分類任務
0x1: 適用場景
感知機模型基于超平面將實例分到超平面的某一邊,所以感知機只能用于二分類的場景
0x2: 模型特點
假設輸入空間(特征空間) 是,輸出空間是(二分類)。由輸入空間到輸出空間的如下函數:稱為感知機。其中,w(權值向量)和b(偏置)稱為感知機模型參數,表示w和x的內積,sign是符號函數,即:
感知機是一種線性分類模型,屬于判別模型。感知機模型的假設空間是定義在特征空間中的所有線性分類模型(linear classification model)或線性分類器(linear classification),即函數集合:
感知機有如下幾何解釋:
線性方程對應于特征空間中的一個超平面S,其中 w 是超平面的法向量,b 是超平面的截距。這個超平面將特征空間劃分為兩個部分,位于兩部分的點(特征向量)分別被分為正、負兩類。因此,超平面 S 稱為分離超平面(separating hyperplane)
關于權重向量w和偏置b的內在含義我們還需要深入思考下
1. 如果說w和b兩個參數確定一個超平面的話,w決定的就是這個超平面的方向,即這個超平面“傾向于”哪個維度的特征 2. 而截距b決定了分界面的數值位置,即分界點選在特征值的哪里0x3: 學習策略
假設訓練數據集是線性可分的,感知機學習的目標是:
求得一個能夠將訓練集正實例和負實例點完全分開的分離超平面,只要分對了就行,甚至都不關注被分對的那些樣本是不是太靠近分界面了(太靠近分界面意味著模型的泛化能力可能不足,預測的時候特征有一些擾動就可能產生誤報)。從這點上來看,SVM的尋找分界面的策略要優于感知機為了找到這樣一個超平面,即確定感知機模型參數w和b,需要確定一個學習策略,即定義(經驗)損失函數,并將損失函數極小化(學習策略是抽象的,我們需要數學化的定量描述)
1. 損失函數的一個可能的選擇是誤分類點的總個數,但是這樣的損失函數是一個離散函數,不是參數w和b的連續可導函數,不易進行迭代優化 2. 損失函數的另一個選擇是誤分類點到超平面S的總距離,這是感知機所采用的(這意味著損失函數需要是一個連續可導且存在極值的函數)?我們首先定義輸入空間中任一點到超平面S的距離:,這里,是w的L2范數。然后,對于誤分類的數據來說,,因此,誤分類點到超平面S的距離是:。這樣,假設超平面S的誤分類點集為M,那么所有誤分類點到超平面S的總距離為:,不考慮就得到了感知機學習的損失函數數學公式,這種純粹基于樣本推導得到的損失函數也叫做經驗風險函數,同時,給定訓練集T,損失函數是w,b的連續可導函數
感知機算法求損失函數最小值(經驗風險最小)尋找分界面的本質和極大似然求解是一樣的,都是在尋找一個有最大概率產生當前觀察樣本的模型0x4: 學習算法
感知機尋找最優超分界面的問題轉化為了求解損失函數最優解的問題,它們是等價的。感知機的損失函數是一個非常光滑的連續曲線, 因此最優化的方法是隨機梯度下降法(stochastic gradient descent)
感知機學習算法是誤分類驅動的,首先,隨機選取一個超平面w0、b0,然后用梯度下降法不斷地極小化目標函數
在一輪梯度下降迭代中,假設誤分類點集合M是固定的,那么損失函數的梯度由:給出
可以看到,權重w的調整和樣本特征以及分類結果共同決定并調整,偏置b的調整只和分類結果決定隨機選取一個誤分類點,對w,b進行更新:,式中是步長,在統計學習中又稱為學習率(learning rate)。這樣,通過迭代可以讓損失函數不斷減小
這樣的算法過程在直觀上有如下解釋:當一個實例點被誤分類,即位于分離超平面的錯誤一側時,則調整w,b的值,使分離超平面向該誤分類點的一側移動,以減少該誤分類點與超平面間的距離,直至超平面越過該誤分類點使其被正確分類
?
回到頂部(go to top)4. K近鄰法
K近鄰法(k-nearest neighbor KNN)是一種數據驅動(基于實例的算法(Instance-based Algorithms))的分類與回歸方法。它屬于一種判別模型
基于實例的算法(有時也稱為基于記憶的學習)是這樣學習算法,不是明確歸納概率分布或者分界面,而是將新的問題例子與訓練過程中見過的例子進行對比,這些見過的例子就在存儲器中。
之所以叫基于實例的算法是因為它直接從訓練實例中建構出假設。這意味這,假設的復雜度能隨著數據的增長而變化:最糟的情況是,假設是一個訓練項目列表,分類一個單獨新實例計算復雜度為 O(n)
0x1:適用場景
1. 多分類問題場景
在多分類問題中的k近鄰法,k近鄰法的輸入為實例的特征向量,對應于特征空間的點;輸出為實例的類別。k近鄰法假設給定一個訓練數據集,其中的實例類別已定,分類時,對新的實例,根據其k個最近鄰的訓練實例的類別,通過多數表決等方式進行預測。因此,k近鄰法不具有顯示的學習過程,k近鄰法實際上利用訓練數據集對特征向量空間進行劃分,并作為其分類的“模型”
2. 回歸問題的場景
KNN算法不僅可以用于分類,還可以用于回歸。通過找出一個樣本的k個最近鄰居,將這些鄰居的屬性的平均值賦給該樣本,就可以得到該樣本的屬性。更有用的方法是將不同距離的鄰居對該樣本產生的影響給予不同的權值(weight),如權值與距離成正比
0x2:模型特點
輸入訓練數據集,其中為實例的特征向量,為實例的類別。根據給定的距離度量,在訓練集中找出與 x 最鄰近的 K(需要人工設定調參) 個點,在由這 K 個點組成的鄰域中根據分類決策規則決定 x 的類別 y
k近鄰法的特殊情況是k=1的情形,稱為最近鄰算法,即對于輸入的實例點(特征向量)x,最近鄰法將訓練數據集中與x最鄰近的類作為x的類
k近鄰法沒有顯示的學習過程,作為判別模型的一種,k近鄰法的判別函數的具體形式也不是很明顯k近鄰法使用的模型實際上對應于特征空間的劃分,某種意義上來說,k近鄰的模型就是樣本特征空間本身。在k近鄰法中,當訓練集、距離度量、k值、分類決策規則確定后,對于任何一個新的輸入實例,它所屬的類唯一地確定。這相當于根據上述基本要素將特征空間劃分為一些子空間,確定子空間里的每個點所屬的類
特征空間中,對每個訓練實例點x1,距離改點比其他點更近的所有點組成一個區域,叫作單元(cell)。每個訓練實例點擁有一個單元,所有訓練實例點的單元構成對特征空間的一個劃分
k近鄰很好地體現了判別式模型的思想,k近鄰不生成概率分布函數,它只是通過三個基本要素盡可能地“捕捉”訓練樣本中的概率密度特征。之所以輸入樣本會被分到不同的類別,其本質就在于在訓練樣本中存在不均勻的概率密度分布,即某一個區域某一個類別密度占比比其他的類多
模型由三個基本要素 - k值選擇、距離度量、分類決策規則組成,下面我們逐個討論
1. K值選擇
K值的選擇會對k近鄰法的結果產生重大影響。
1. 如果選擇較小的K值,就相當于用較小的鄰域中的訓練實例進行預測1)“學習”的近似誤差(approximation error)會減少,只有與輸入實例較近的(相似的、Lp距離較小的)訓練實例才會對預測結果起作用2)但缺點是“學習”的估計誤差(estimation error)會增大,預測結果會對近鄰的實例點非常敏感,如果近鄰的實例點恰巧是噪聲,預測就會出錯,可以理解為模型的容錯性較差 換句話說,k值的減小就意味著整體模型變得復雜(因為搜索范圍小了,所以總的需要的搜索結果的存儲單元就變多了),容易發生過擬合2. 如果選擇較大的K值,就相當于用較大鄰域中的訓練實例進行預測
1)優點是可以減少學習的估計誤差,即不容易受到近鄰點的波動影響
2)但缺點是學習的近似誤差會增大,這時與輸入實例較遠的(不相似的)訓練實例也會對預測其作用,使預測發生錯誤
總體來說,K值的增大就意味著整體模型變得簡單
近似誤差和估計誤差的核心區別在于是假設臨近點的噪音擾動比較多還是遠點的噪音擾動比較多。在實際應用中,k值一般選取一個比較小的數值,即我們基本上認為近鄰點的相關性是比較大的,而原點的相關性比較小
在實際項目中,K值的選擇和樣本中的概率密度分布有關,并沒有一個定式的理論告訴我么該選什么樣的K值,好在的是這個K值的搜索空間并不是很大,通常我們可以采取一個for循環交叉驗證來搜索所有可能的K值,通過重復進行多次實驗,每次隨機選取不同的train set和validate set,查看KNN模型對train set和validate set的擬合和泛化能力來選擇一個最好的K值
2. 距離度量
特征空間中兩個實例點的距離是兩個實例點相似程度的反映。K近鄰模型的特征空間一般是n維實數向量空間,計算兩個向量之間的距離有很多種方法,注意這不是KNN獨有的算法,向量間距離模型是數學中的基礎概念
設特征空間是n維實數向量空間,,,的Lp距離定義為:
P = 1:曼哈頓距離(Manhattan distance):
P = 2:歐式距離(Euclidean distance):
P = 正無窮:各個坐標距離的最大值:
下圖給出了二維空間中p取不同值時,與原點的Lp距離為1(Lp = 1)的點的集合圖形
這張圖很好地說明了取不同的距離策略對于KNN對于緊鄰點的搜索范圍是不同的,進而影響隨后的判別分類結果
有一個例子說明由不同的距離度量所確定的最近鄰點是不同的。已知二維空間的3個點,我們來對比一下在p取不同的值時,Lp距離下X1的最近鄰點
| P值 | 和X2距離 | 和X3距離 |
| 1 | 4 | 6 |
| 2 | 4 | 4.24 |
| 3 | 4 | 3.78 |
| 4 | 4 | 3.57 |
可以看到,p = 1/2時,X2是X1的最近鄰點;P >= 3,X3是X1的最近鄰點
3. 分類決策規則
k近鄰法中的分類決策規則往往是多數表決,即由輸入實例的k個臨近的訓練實例中的多數的label決定輸入實例的類
多數表決規則(majority voting rule)有如下解釋:如果分類的損失函數為0-1損失函數,分類函數為:,那么誤分類的概率是:。對給定的實例,其最近鄰的 k 個訓練實例點構成集合,如果涵蓋的區域的類別是Cj,那么誤分類率是:
,要使誤分類率最小,即經驗風險最小,就要使最大,即模型對訓練樣本的預測準確度(擬合程度)最大。所以多數表決規則等價于經驗風險最小化
KNN中的多數表決思想和樸素貝葉斯中選擇最大后驗概率的類作為實例的類的思想是一致的,都等價于期望風險最小化關于樸素貝葉斯法預測過程中選擇最大后驗概率作為預測類別和期望風險最小化的等價推導,請參閱這篇文章(0x1:期望風險最小化)
0x3:學習策略
KNN的學習策略很簡單,就是在訓練集中尋找最近鄰的K個實例點,并進行voting,選擇最多類別的那個,即經驗風險最小化。這同樣體現了極大似然估計的核心思想
0x4:學習算法
KNN的策略非常直觀易理解,算法要解決是具體的工程化問題,即如何在高維空間中選出 k 個近鄰點,當維度很高且樣本量很大的時候,如果不采取一些高效的算法而直接暴力搜索的話是非常耗時的
解決該問題的思路就是利用特殊構造的存儲數據結構以及特殊的搜索方法來完成
1. KD樹(kd tree)
kd樹是一種對k維空間中的實例點進行存儲以便對其進行快速檢索的樹形數據結構。kd樹是二叉樹,表示對k維空間的一個劃分(partition),構造kd樹相當于不斷地用垂直于坐標軸的超平面將k維空間切分,構成一系列的k維超矩形區域。kd樹的每個結點對應于一個k維超矩形區域
構造平衡kd樹
輸入:k維空間數據集(樣本數量是N),每個樣本的維度是k,
(1)構造根節點,根節點對應于k維空間中包含所有實例點的超矩形區域
?(2)選擇為坐標軸,以數據集T中所有實例的坐標的中位數做i為切分點,將根節點對應的超矩形區域切分為兩個子區域,切分由通過切分點并與坐標軸垂直的超平面實現。由根節點生成深度為1的左,右子節點:左子結點對應坐標小于切分點的子區域,右子節點對應于坐標大于切分點的子區域
(3)重復過程(2),對深度為 j 的結點,選擇為切分的坐標軸,(取模循環不斷根據每個維度進行二叉切分),以該節點的區域中所有實例的坐標的中位數作為切分點,將該結點對應的超矩形區域切分為兩個子區域。切分由通過切分點并與坐標軸垂直的超平面實現。由該結點生成深度為 j + 1 的左、右子節點:左子節點對應坐標小于切分點的子區域;右子節點對應坐標大于切分點的子區域;將剛好落在切分超平面上的實例點保存在該結點
(4)直到兩個子區域沒有實例存在時停止(即所有實例點都在超平面上),從而形成kd樹的區域劃分,最后一次切分得到的左、右子矩形空間就是葉節點
用一個例子來說明kd樹構造過程 ,給定一個二維空間的數據集:
(1)根節點對應包含數據集 T 的超矩形區域
(2)選擇軸,6個數據點的坐標的中位數是7,以平面將空間分為左、右量子子矩形(子結點)
(3)接著,左矩形的第二個維度的中位數是4,所以以再分為兩個子矩形;右矩形以分為兩個子矩形
(4)繼續切分,知道所有的實例點都被分到一個超平面上,所切出的空間是一個不包含任何實例點的純超矩形空間為止,最后一次切分得到的左、右子矩形空間就是葉節點
搜索kd樹
完成了kd樹建樹后,接下來討論如何利用kd樹進行k近鄰搜索
輸入:根據train set構造的kd樹;目標點x 輸出:x的最近鄰1. 在kd樹中找出包含目標點x的葉節點,葉子節點尋找的過程是:從根節點出發,遞歸地向下訪問kd樹,若目標點x當前維的坐標小于切分點的坐標,則移動到左子結點,否則移動到右子節點,直到子節點為葉子節點(某個不含訓練實例的超矩形區域)為止
2. 包含目標點的葉節點對應包含目標點的最小超矩形區域,以此葉節點的實例(落在切分超平面上的點)暫時作為“當前最近點“,注意這里說暫時是因為不一定該葉節點的實例點就真的是最近鄰點了,理論上目標點的最近鄰一定在以目標點為中心并且圓周通過當前最近點的超球體內部(局部最優原理),接下來的逆向回溯的目的就是嘗試尋找在這個超球體區域內是否還存在其他葉節點內的實例點比“當前最近點”更近
3. 以此葉節點為"當前最近點"遞歸的向上回退,在每個結點(父節點)進行以下操作
1) 如果該結點保存的實例點比當前最近點距離目標點更近,則已該實例點為"當前最近點"
2) 如果該結點的另一子結點的超矩形區域與超球體相交(可能存在另一個局部最優),那么在相交的區域內尋找與目標點更近的實例點。如果存在這樣的點,將此點作為新的當前最近鄰點,算法轉到更上一級的父節點
3) 如果父節點的另一個子結點的超矩形區域與超球體不相交,說明另一個分支不存在另一個局部最優,則繼續該分支的逆向回溯
4. 重復此過程,依次回退到根節點,搜索結束,最后查看存儲的"當前最近點"即為x的最近鄰點
在回退的過程中,不斷查找與目標點最鄰近的結點,當確定不存在更近的結點時終止。這樣搜索就被限制在空間的局部區域上,效率大為提高了(這也是二叉樹的核心思想 - 分而治之)
用下圖來說明kd樹的搜索過程,根節點為A,子節點是B,C,D,E,F,G;目標實例點S,求S的最近鄰
1. 首先在kd樹中正向搜索,定位到最右下角那個矩形區域,隨后開始逆向回溯過程 2. 該矩形區域的實例點是D,所以暫時以D作為近似最近鄰。但是理論上最近鄰一定在以點S為中心通過點D的圓的內部(局部最優),因此需要繼續逆向回溯 2. 然后返回節點D的父節點B,在節點B的另一子結點F的區域內嘗試搜索,但是因為節點F的區域與超圓不相交,不可能有最近鄰點 4. 繼續返回上一級父節點A,在節點A的另一子節點C的區域內嘗試搜索,結點C的區域與圓相交,在超矩形區域在園內的實例點有點E,點E比點D更近,因此成為新的最近似點 5. 最后得到點E是點S的最近鄰2. Ball Tree搜索
kd tree的思想非常精妙,但是也存在一些問題, 形并不是用到這里最好的方式。偏斜的數據集會造成我們想要保持樹的平衡與保持區域的正方形特性的沖突。另外,矩形甚至是正方形并不是用在這里最完美的形狀,由于它的角。為了解決這些問題,引入了ball tree,即使用超球面而不是超矩形劃分區域
ball?tree就是一個k維超球面來覆蓋訓練樣本點,上圖(a)顯示了一個2維平面包含16個觀測實例的圖,圖(b)是其對應的ball?tree,其中結點中的數字表示包含的觀測點數。樹中的每個結點對應一個圓,結點的數字表示該區域保含的觀測點數,但不一定就是圖中該區域囊括的點數,因為有重疊的情況,并且一個觀測點只能屬于一個區域。實際的ball?tree的結點保存圓心和半徑。葉子結點保存它包含的觀測點。
構造ball tree
ball tree的建樹過程和kd tree大體上一致,區別在于ball tree每次的切分點都是當前超球體的圓心,選擇一個距離當前圓心最遠的觀測點i1,和距離i1最遠的觀測點?i2,將圓中所有離這兩個點最近的觀測點都賦給這兩個簇的中心,然后計算每一個簇的中心點和包含所有其所屬觀測點的最小半徑,這樣,左、右子節點又構成了新的超球體
搜索ball tree
使用ball?tree時,先自上而下找到包含target的葉子結點,從此結點中找到離它最近的觀測點。這個距離就是最近鄰的距離的上界。檢查它的兄弟結點中是否包含比這個上界更小的觀測點,和kd tree一樣,檢查的標準就是兄弟的超球體和當前結點的超球體是否有交集,如果沒有交集,則這個兄弟結點不可能包含“更近鄰點”
kdtree和balltree的區別和聯系
kd-tree基于歐氏距離的特性:
balltree基于更一般的距離特性:
因此:
kd-tree只能用于歐氏距離,并且處理高維數據效果不佳。
balltree在kd-tree能夠處理的數據范圍內要慢于kd-tree。
Relevant Link:
http://blog.csdn.net/pipisorry/article/details/53156836?
回到頂部(go to top)5. 樸素貝葉斯法
樸素貝葉斯(naive Bayes)法是基于貝葉斯定理與特征條件獨立假設的分類方法。對于給定的訓練數據集,首先基于特征條件獨立假設學習輸入/輸出的聯合概率分布;然后基于此模型,對給定的輸入x,利用貝葉斯定理求出后驗概率最大的輸出y
0x1:適用場景?
樸素貝葉斯法可以基于最大后驗概率argmax進行多分類,它適用于樣本集中不同維度之間相關性較小的情況,即大致符合條件獨立性假設的情況
0x2: 模型特點
http://www.cnblogs.com/LittleHann/p/7199242.html0x3: 學習策略
1. 模型學習過程
經驗風險最小化(最大似然估計MLE)和結構風險最小化(最大后驗概率估計MAP)
2. 根據模型進行判斷預測
期望風險最小化
樸素貝葉斯法預測過程中根據最大后驗概率argmax的結果作為預測結果的思想和KNN中選擇K近鄰的結果作為類預測結果的思想是一致的
0x4:學習算法
樸素貝葉斯法的學習算法有三種(可能不只,我了解到的只有3種),極大似然估計、貝葉斯估計、最大后驗估計(可以理解為正則化的極大似然估計),詳細的討論我在另一篇文章已經討論了
?
回到頂部(go to top)6. 決策樹
決策樹(decision tree)是一種基本的分類與回歸方法。決策樹模型呈樹形結構(二分類思想的算法模型往往都是樹形結構)
0x1:適用場景
因為它能夠生成清晰的基于特征(feature)選擇不同預測結果的樹狀結構,數據分析師希望更好的理解手上的數據的時候往往可以使用決策樹。同時它也是相對容易被攻擊的分類器。
這里的攻擊是指人為的改變一些特征,使得分類器判斷錯誤。常見于垃圾郵件躲避檢測中。因為決策樹最終在底層判斷是基于單個條件的,攻擊者往往只需要改變很少的特征就可以逃過監測。
受限于它的簡單性,決策樹更大的用處是作為一些更有用的算法的基石。
0x2:模型特點
在分類問題中,表示基于特征對實例進行分類的過程,它可以被看作是if-then的規則集合;也可以被認為是定義在特征空間與類空間上的條件概率分布
關于決策樹的模型特點,這里說一些我自己在實踐中的理解:
1. 我們的原始數據集有很多不同的字段,因為每條日志都代表了一個事件,單獨看一條記錄不一定包含有足夠的有價值信息,所以很多時候我們需要進行group by聚類處理; 2. group by聚類背后體現的就是以一個特征為索引,得到該特征在不同label的的概率密度分布數值,聚類的結果label就是特征label,count就是其概率分布數值 3. 我們可以逐一循環所有特征進行group by,從而得到所有特征的概率密度分布數值,然后根據一個主鍵將其多路join merge到一個寬表中 4. 之后的判斷就很接近決策樹的思維方式了,從不同特征進行超平面切分,對所有特征進行綜合判斷,得到分類器0x3:學習策略 ?
決策樹的建樹過程遵循了經驗風險最小化原則。決策樹的剪枝過程體現了結構風險最小化
0x4:學習算法
決策樹的學習算法,即工程化實現有ID3、C4.5、CART算法等。具體可以參閱另一篇文章
?
回到頂部(go to top)7. 邏輯斯蒂回歸與最大熵模型
0x1:適用場景
多類分類問題,因為邏輯斯蒂回歸的二項分類模型(二項條件概率)可以推廣到多項邏輯斯蒂回歸(多項條件概率)
0x2:模型特點
特征條件下類別(label)的條件概率分布,它本質上是一個對數線性模型
值得注意的是,邏輯斯蒂模型并沒有學習到特征和類別label的聯合概率密度分布,它是一個判別模型
詳細討論可以參閱這篇文章
0x3:學習策略?
極大似然估計;或正則化的極大似然估計(例如L1懲罰)
0x4:學習算法
1. 損失函數
邏輯斯蒂回歸的損失函數采用了邏輯斯蒂損失, 即對數損失,對數損失是用于最大似然估計的。一組參數在一堆數據下的似然值,等于每一條數據的概率之積。
而損失函數一般是每條數據的損失之和,為了把積變為和,就取了對數。再加個負號是為了讓最大似然值和最小損失對應起來。
可以把logloss分解成真實分布的熵+真實分布與預測分布的相對熵(KL散度),前半部分是固定的,所以最小化logloss相當于在最小化真實分布與預測分布之間的差異
2. 優化算法
改進的迭代尺度算法,梯度下降,擬牛頓法
Relevant Link:
https://www.zhihu.com/question/47744216?from=profile_question_card?
回到頂部(go to top)7. 支持向量機
支持向量機(support vector machine SVM)是一種二類分類模型。它的基本模型是定義在特征空間(feature space)上的間隔最大線性分類器
因為SVM加入了間隔最大這項約束,所以SVM有別于別的感知機,即有唯一最優解(這一約束使其具備了結構化風險最小策略特性);除此之外支持向量機還包括核技巧,這使它成為實質上的非線性分類器。
支持向量機的模型是支持向量和超分類面的距離,學習策略就是間隔最大化,求解最優解的過程的算法根據待分類問題數據集的線性性決定是否需要用到kernel trick進行非線性求解,但總的來說,求解過程即求解凸二次規劃(convex quadratic programming)問題,也等價于正則化的合頁損失函數的最小化問題
0x1:適用場景?
支持向量機方法論可以用于二類分類,也可以進行無監督異常outerlier檢測(one-class svm)
0x2: 模型特點
http://www.cnblogs.com/LittleHann/p/5717892.html0x3: 學習策略
分離超平面 -> 硬/軟間隔最小化策略;
核技巧
0x4:學習算法
序列最小最優化算法(SMO)
?
回到頂部(go to top)8. 提升方法
提升(boosting)方法是一種常用的統計學方法,在分類問題中,它通過逐輪不斷改變訓練樣本的權重,學習多個分類器,并將這些分類器進行線性組合,提高分類的性能。
0x1:適用場景?
提升方法論可以用于二類分類,也可以用在回歸擬合問題中
0x2: 模型特點
http://www.cnblogs.com/LittleHann/p/7512397.html0x3: 學習策略
極小化加法模型的指數損失,但是也可以用MSE損失和一般化損失函數,只是優化過程會有所變化
0x4:學習算法
前向分布加法算法(forward stagewise algorithm)
?
回到頂部(go to top)9. EM算法
EM算法是一種迭代算法,1977年由Dempster等人總結提出,用于含有隱變量(hidden variable)的概率模型參數的極大似然估計,或極大后驗概率估計。EM算法的每輪迭代由兩步組成:E步(求期望 expectation);M步(求極大似然),所以這一算法稱為期望極大算法(expectation maximization algorithm EM算法)
0x1:適用場景?
在包含隱變量的概率模型中,進行參數估計。
0x2: 模型特點
http://www.cnblogs.com/LittleHann/p/7565525.html http://www.cnblogs.com/LittleHann/p/8446491.html0x3: 學習策略
E(極大似然估計)、M(極大后驗概率估計)交替進行
0x4:學習算法
迭代算法
?
回到頂部(go to top)10. HMM(隱馬爾可夫模型)
隱馬爾可夫模型是關于時序的概率模型,描述有一個隱藏的馬爾柯夫鏈隨機生成不可觀測的狀態隨機序列(隱狀態序列),再由各個狀態生成一個觀測結果而產生觀測隨機序列(可見狀態序列)的過程
0x1:適用場景
解碼問題場景(例如語音解碼)、標注問題(求隱狀態序列)、似然概率求解(概率預測)
0x2: 模型特點
http://www.cnblogs.com/LittleHann/p/7609060.html
觀測序列與狀態序列的聯合概率分布模型
0x3: 學習策略
極大似然估計、極大后驗概率估計
0x4:學習算法
概率計算公式、以及EM算法
Copyright (c) 2017 LittleHann All rights reserved
分類: 概率統計與算法,機器學習 上一篇:機器學習中的特征建模(特征工程)和算法選型建模 - 以暴力破解識別為例? 下一篇:淺議極大似然估計(MLE)背后的思想原理
原文:http://www.cnblogs.com/LittleHann/p/7749661.html#_label3_0_2_1
總結
- 上一篇: 文本摘要综述-bertsum、Bottl
- 下一篇: 知识图谱简介