【机器学习】半监督学习
傳統(tǒng)的機器學習技術(shù)分為兩類,一類是無監(jiān)督學習,一類是監(jiān)督學習。
無監(jiān)督學習只利用未標記的樣本集,而監(jiān)督學習則只利用標記的樣本集進行學習。
但在很多實際問題中,只有少量的帶有標記的數(shù)據(jù),因為對數(shù)據(jù)進行標記的代價有時很高,比如在生物學中,對某種蛋白質(zhì)的結(jié)構(gòu)分析或者功能鑒定,可能會花上生物學家很多年的工作,而大量的未標記的數(shù)據(jù)卻很容易得到。
這就促使能同時利用標記樣本和未標記樣本的半監(jiān)督學習技術(shù)迅速發(fā)展起來。
半監(jiān)督學習理論簡述:
半監(jiān)督學習有兩個樣本集,一個有標記,一個沒有標記.分別記作
Lable={(xi,yi)},Unlabled={(xi)}.并且數(shù)量上,L<<U.
1.單獨使用有標記樣本,我們能夠生成有監(jiān)督分類算法
2.單獨使用無標記樣本,我們能夠生成無監(jiān)督聚類算法
3.兩者都使用,我們希望在1中加入無標記樣本,增強有監(jiān)督分類的效果;同樣的,我們希望在2中加入有標記樣本,增強無監(jiān)督聚類的效果.
一般而言,半監(jiān)督學習側(cè)重于在有監(jiān)督的分類算法中加入無標記樣本來實現(xiàn)半監(jiān)督分類.也就是在1中加入無標記樣本,增強分類效果.
半監(jiān)督學習的動力,motivation
某人討論的時候,總是教導(dǎo)我們的詞,motivation.一下午四五遍地強調(diào)寫論文要有motivation.下面說說半監(jiān)督學習的motivation.
1.有標記樣本難以獲取.
需要專門的人員,特別的設(shè)備,額外的開銷等等.
2.無標記的樣本相對而言是很廉價的.
3.還有一點就是機器學習的光輝前景.
半監(jiān)督學習與直推式學習的區(qū)別:
這個網(wǎng)上也有論述.主要就是半監(jiān)督學習是歸納式的,生成的模型可用做更廣泛的樣本;而直推式學習僅僅為了當前無標記樣本的分類.
簡單的說,前者使用無標記樣本,為了以后其他樣本更好的分類.
后者只是為了分類好這些有限的無標記樣本.
下面幾個圖來生動形象地詮釋半監(jiān)督的好處:
上圖中,只有兩個標記樣本,X,O,剩下綠點是無標記的樣本.通過無標記樣本的加入,原來的分類界限從0移到了0.5處,更好地擬合了樣本的現(xiàn)實分布.
半監(jiān)督學習算法分類:
1.self-training(自訓練算法)
2.generative models生成模型
3.SVMs半監(jiān)督支持向量機
4.graph-basedmethods圖論方法
5.multiview learing多視角算法
6.其他方法
接著簡單介紹上述的幾個算法
self-training算法:
還是兩個樣本集合:Labled={(xi,yi)};Unlabled= {xj}.
執(zhí)行如下算法
Repeat:
1.用L生成分類策略F;
2.用F分類U,計算誤差
3.選取U的子集u,即誤差小的,加入標記.L=L+u;
重復(fù)上述步驟,直到U為空集.
上面的算法中,L通過不斷在U中,選擇表現(xiàn)良好的樣本加入,并且不斷更新子集的算法F,最后得到一個最有的F.
Self-training的一個具體實例:最近鄰算法
記d(x1,x2)為兩個樣本的歐式距離,執(zhí)行如下算法:
Repeat:
1.用L生成分類策略F;
2. 選擇x = argmin d(x, x0). 其中x∈U,min x0∈L.也就是選擇離標記樣本最近的無標記樣本.
2.用F給x定一個類別F(x).
3.把(x,F(x))加入L中
重復(fù)上述步驟,直到U為空集.
上面算法中,也就是定義了self-training的”誤差最小”,也就是用歐式距離來定義”表現(xiàn)最好的無標記樣本”,再用F給個標記,加入L中,并且也動態(tài)更新F.
下面是這種算法的效果圖:
上圖從兩個點出發(fā),不斷加入最近鄰點,不斷更新F.
上面的算法表現(xiàn)良好,當然更多的是表現(xiàn)不好.如下:
生成模型
生成算法來源于假設(shè),比如我們假設(shè)原樣本滿足高斯分布,然后用最大釋然的概率思想來擬合一個高斯分布,也就是常用的高斯混合模型(GMM).
簡單介紹下高斯混合模型:
假設(shè)如下的樣本分布:
我們假設(shè)他們滿足高斯分布.
高斯分布的參數(shù)有: θ = {w1, w2, μ1, μ2, Σ1, Σ2}
利用最大釋然的思想,最大化如下概率:
p(x, y|θ) = p(y|θ)p(x|y, θ).
得到如下的假設(shè)分布:
順便貼一個介紹高斯混合模型日志:
http://blog.csdn.net/zouxy09/article/details/8537620
接著是我們的半監(jiān)督生成算法:
樣本分布如下:
算法過后,得到如下分布:
對比這兩個圖,說明下高斯混合模型與半監(jiān)督生成模型的區(qū)別:
這兩種方法的釋然函數(shù)不同,前者最大化標記樣本出現(xiàn)概率,后者加入了無標記樣本出現(xiàn)概率.
算法的具體實現(xiàn),請參見E-M算法.
這樣生成的算法也有許多不良表現(xiàn),如下:
假設(shè)原始的分布式這樣的:
通過GMM,它變成了這樣:
幾個需要注意的地方:
1.高斯混合的局部收斂性
2.減少無標記樣本的權(quán)值
半監(jiān)督SVM,圖算法模型,流行模型等.
SVM的理論不再贅述,就是一個最優(yōu)超平面:
偷一張很牛逼的SVM圖:
這些內(nèi)容涵蓋比較廣泛,一篇日志裝不下.有興趣地可以進一步了解.
最后是小結(jié)
上兩張圖:
基于生成式模型的半監(jiān)督學習方法
該類方法通常是把未標記樣本屬于每個類別的概率看成一組缺失參數(shù),然后采用EM (expectation-maximization)算法對生成式模型的參數(shù)進行極大似然估計。不同方法的區(qū)別在于選擇了不同的生成式模型作為基分類器,例如混合高斯(mixture
of Gaussians)[3]、混合專家(mixture
of experts)[1]、樸素貝葉斯(na ve
Bayes)[4]。雖然基于生成式模型的半監(jiān)督學習方法簡單、直觀,并且在訓練樣本,特別是有標記樣本極少時能夠取得比判別式模型更好的性能,但是當模型假設(shè)與數(shù)據(jù)分布不一致時,使用大量的未標記數(shù)據(jù)來估計模型參數(shù)反而會降低學得模型的泛化能力[5]。由于尋找合適的生成式模型來為數(shù)據(jù)建模需要大量領(lǐng)域知識,這使得基于生成式模型的半監(jiān)督學習在實際問題中的應(yīng)用有限。
基于低密度劃分的半監(jiān)督學習方法
該類方法要求決策邊界盡量通過數(shù)據(jù)較為稀疏區(qū)域,以免把聚類中稠密的數(shù)據(jù)點分到?jīng)Q策邊界兩側(cè)。基于該思想,Joachims[6]提出了TSVM算法(如圖2所示,其中實線為TSVM的分類邊界、虛線為不考慮未標記數(shù)據(jù)的SVM分類邊界)。在訓練過程中,TSVM算法首先利用有標記的數(shù)據(jù)訓練一個SVM并估計未標記數(shù)據(jù)的標記,然后基于最大化間隔準則,迭代式地交換分類邊界兩側(cè)樣本的標記,使得間隔最大化,并以此更新當前預(yù)測模型,從而實現(xiàn)在盡量正確分類有標記數(shù)據(jù)的同時,將決策邊界“推”向數(shù)據(jù)分布相對稀疏的區(qū)域。然而,TSVM的損失函數(shù)非凸,學習過程會因此陷入局部極小點,從而影響泛化能力。為此,多種TSVM的變體方法被提出,以緩解非凸損失函數(shù)對優(yōu)化過程造成的影響,典型方法包括確定性退火[7]、CCCP直接優(yōu)化[8]等。此外,低密度劃分思想還被用于TSVM以外的半監(jiān)督學習方法的設(shè)計,例如通過使用熵對半監(jiān)督學習進行正則化,迫使學習到的分類邊界避開數(shù)據(jù)稠密區(qū)域[9]。
圖2TSVM算法示意圖[6]
基于圖的半監(jiān)督學習方法
該類方法利用有標記和未標記數(shù)據(jù)構(gòu)建數(shù)據(jù)圖,并且基于圖上的鄰接關(guān)系將標記從有標記的數(shù)據(jù)點向未標記數(shù)據(jù)點傳播(如圖3所示,其中淺灰色和黑色結(jié)點分別為不同類別的有標記樣本、空心結(jié)點為未標記樣本)。根據(jù)標記傳播方式可將基于圖的半監(jiān)督學習方法分為兩大類,一類方法通過定義滿足某種性質(zhì)的標記傳播方式來實現(xiàn)顯式標記傳播,例如基于高斯隨機場與諧函數(shù)的標記傳播[10]、基于全局和局部一致性的標記傳播[11]等;另一類方法則是通過定義在圖上的正則化項實現(xiàn)隱式標記傳播,例如通過定義流形正則化項,強制預(yù)測函數(shù)對圖中的近鄰給出相似輸出,從而將標記從有標記樣本隱式地傳播至未標記樣本[12]。事實上,標記傳播方法對學習性能的影響遠比不上數(shù)據(jù)圖構(gòu)建方法對學習性能的影響大。如果數(shù)據(jù)圖的性質(zhì)與數(shù)據(jù)內(nèi)在規(guī)律相背離,無論采用何種標記傳播方法,都難以獲得滿意的學習結(jié)果。然而,要構(gòu)建反映數(shù)據(jù)內(nèi)在關(guān)系的數(shù)據(jù)圖,往往需要依賴大量領(lǐng)域知識。所幸,在某些情況下,仍可根據(jù)數(shù)據(jù)性質(zhì)進行處理,以獲得魯棒性更高的數(shù)據(jù)圖,例如當數(shù)據(jù)圖不滿足度量性時,可以根據(jù)圖譜將非度量圖分解成多個度量圖,分別進行標記傳播,從而可克服非度量圖對標記傳播造成的負面影響[13]。基于圖的半監(jiān)督學習方法有良好的數(shù)學基礎(chǔ),但是,由于學習算法的時間復(fù)雜度大都為O(n3) ,故難以滿足對大規(guī)模未標記數(shù)據(jù)進行半監(jiān)督學習的應(yīng)用需求。
圖3標記傳播示意圖
協(xié)同訓練(co-training)的半監(jiān)督算法
他們假設(shè)數(shù)據(jù)集有兩個充分冗余(sufficient and redundant)的視圖(view),即兩個滿足下述條件的屬性集:第一,每個屬性集都足以描述該問題,也就是說,如果訓練例足夠,在每個屬性集上都足以學得一個強學習器;第二,在給定標記時,每個屬性集都條件獨立于另一個屬性集。,然后,在協(xié)同訓練過程中,每個分類器從未標記示例中挑選出若干標記置信度(即對示例賦予正確標記的置信度)較高的示例進行標記,并把標記后的示例加入另一個分類器的有標記訓練集中,以便對方利用這些新標記的示例進行更新。協(xié)同訓練過程不斷迭代進行,直到達到某個停止條件。
此類算法隱含地利用了聚類假設(shè)或流形假設(shè),它們使用兩個或多個學習器,在學習過程中,這些學習器挑選若干個置信度高的未標記示例進行相互標記,從而使得模型得以更新。
總結(jié)
以上是生活随笔為你收集整理的【机器学习】半监督学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle+ddl+执行很慢,Orac
- 下一篇: oracle 共享硬盘主从,oracle