半監(jiān)督學(xué)習(xí)現(xiàn)在可是火紅火熱了!那是監(jiān)督學(xué)習(xí)的成本實(shí)在是太高了阅仔,不僅要去特意標(biāo)簽數(shù)據(jù)吹散,而且還需要人工刷選弧械,而且最重要的是時(shí)間花很多,很麻煩空民。那么有沒有一些方法刃唐,既可以使用未標(biāo)簽數(shù)據(jù)又可以學(xué)習(xí)到結(jié)果?
那就是兩種——半監(jiān)督學(xué)習(xí)和Active Learning(這種方法需要的樣本量更加薪缧)
為什么Semi-supervised 可以學(xué)習(xí)画饥?
因?yàn)槲覀兪枪烙?jì)underlying distribution (response value Y),而且我們可以從數(shù)據(jù)知道的是浊猾,因?yàn)闃颖臼菑耐粋€(gè)distribution 抽取出來的抖甘,如果有相似的X,那么我們就會(huì)‘聚類’出相似的Y ,其實(shí)Semi-supervised 在ML課上面首先講的是EM算法 (Mixure Gaussian Model) ,這個(gè)我會(huì)在文章的最后補(bǔ)充葫慎。
半監(jiān)督學(xué)習(xí)現(xiàn)在主要的方法有三種:
- Transductive SVM (和Inductive SVM 相對(duì)) (這種嚴(yán)格來說不是Semi的方法了)
- Co-training: (協(xié)同訓(xùn)練)
- Label Propagation: (圖的標(biāo)簽傳播算法)
Transductive 和 Inductive(semi-supervised) SVM的區(qū)別:
Inductive 是拿training 和testing 的數(shù)據(jù)來學(xué)習(xí)參數(shù)w, 并且把參數(shù)w 用在testing set 里面衔彻,這就像我現(xiàn)從大量的現(xiàn)象提取出general idea薇宠,并且把這種general idea 用到新的范式當(dāng)中。Inductive 是用label points 和unlabeled points 一起來訓(xùn)練的分類器艰额。
Transductive 先學(xué)習(xí)training data, 然后拿unlabel data 做testing data澄港。這里還是先用training set 來做出一個(gè)classifer, 然后放進(jìn)testing set, testing set 如果靠近訓(xùn)練集就會(huì)被標(biāo)記為訓(xùn)練集柄沮。
例如上面回梧,有顏色的點(diǎn)是訓(xùn)練集(數(shù)量很小)祖搓,我們通過KNN算法來算出越靠近有標(biāo)記的點(diǎn)就會(huì)去標(biāo)記某個(gè)種類狱意。Transductive 只是用于標(biāo)記沒有標(biāo)記的數(shù)據(jù),并沒有太好的預(yù)測(cè)作用拯欧。Joachims 提出要使用TSVM的方法髓涯,在文本分類中有大量的應(yīng)用并且取得非常好的效果。例如query relevance feedback, news filtering, document collection 等等哈扮。
其實(shí)這個(gè)方法說到底也很簡(jiǎn)單纬纪,第一步用正常的方法來訓(xùn)練(training set), 然后用測(cè)試集來做regularized的方法使得模型有哦bias,然后增加bias來增加模型的準(zhǔn)確性。但是我們不能使用unlabel data 來調(diào)整參數(shù)或者選擇kernel.
Transductive Algorithm:
(1) 用training set 來訓(xùn)練SVM滑肉。
(2) Tune the parameter C (開始給出一個(gè)很小的value)
(3) increase C (slack variable)
(4) retrain the classifier
(5) nonlinear using kernel
Transductive 的優(yōu)點(diǎn)
(1) 只需要少量的測(cè)試集就可以訓(xùn)練模型
(2) 訓(xùn)練的次數(shù)快而且計(jì)算量不會(huì)太占空間包各。
缺點(diǎn):
(1)不能成為預(yù)測(cè)模型,只能對(duì)測(cè)試集進(jìn)行分類
(2) 因?yàn)闆]有訓(xùn)練出一個(gè)參數(shù)靶庙,所以每次有新的測(cè)試集進(jìn)來的時(shí)候问畅,都要重新計(jì)算一遍。
Co-Training:
協(xié)同訓(xùn)練:
協(xié)同訓(xùn)練是非常重要的半監(jiān)督學(xué)習(xí)六荒,最初是由Tom Mitchell 奠基的理論現(xiàn)在已經(jīng)成為了一個(gè)非常重要的訓(xùn)練范式护姆。其基本的思想是,通過互相訓(xùn)練條件獨(dú)立的訓(xùn)練器然后把結(jié)果進(jìn)行投票掏击。但是協(xié)同訓(xùn)練的基本前提是卵皂,訓(xùn)練集是需要在Y的情況下獨(dú)立,就是conditional indepence. 然而在某些數(shù)據(jù)的情況是不能這樣做砚亭,所以后面發(fā)展了很多協(xié)同訓(xùn)練的理論灯变,例如說Co-random forest 等等。
Tom 論文中主要的算法思想:
L 代表 有標(biāo)記訓(xùn)練集:
U 代表沒有標(biāo)記的訓(xùn)練集:
(1) 從U 中抽樣捅膘,抽出u個(gè)案例
用L去訓(xùn)練 H1 訓(xùn)練器
用L去訓(xùn)練 H2訓(xùn)練器
得到兩個(gè)參數(shù)之后:
我們用H1的參數(shù)去標(biāo)記 u的 分類添祸, p + n-
我們用H2 的參數(shù)去標(biāo)記u 的分類, p+ n-
把這些分類放到Labeled data 里面
然后在U 中選出樣本再放進(jìn) u中寻仗,補(bǔ)充u
選擇k次迭代
我們要注意的是H1,H2用的是同樣的分類器例如是Navie Bayes 或者random forest 刃泌,然后H1,H2 可以是不同的參數(shù)。
而且L對(duì)于兩個(gè)的訓(xùn)練數(shù)據(jù)可以是不一樣的。例如H1就用了weblink上面的字耙替,H2就用了context里面的內(nèi)容鲤遥。 文章里面比較了supervised learning 和unsupervised learning 的表現(xiàn)準(zhǔn)確率,發(fā)現(xiàn)H1,H1組合起來的正確率非常高林艘。
但是模型有制約性盖奈,就是有違反conditional independece 的條件,他們有很多相關(guān)性狐援,并且在設(shè)計(jì)分類器的時(shí)候钢坦,要確保分類器的差異性旦装。
Co-forest:
不同于 Tri-Training 祭往,CoForest 算法采用隨機(jī)森林(Random Forest)來保證各分類器之間的差異性。隨機(jī)森林是一個(gè)若干分類決策樹的組合身诺。它采用 Bagging 方法產(chǎn)生各異的訓(xùn)練集同時(shí)使用分類回歸樹作為元分類器镶殷。隨機(jī)森林中單顆子樹的生長過程可以概括為:首先可放回的從原標(biāo)記數(shù)據(jù)集合中隨機(jī)選取 n 個(gè)示例(采用 Bagging 算法獲得)
Co-forest: 分類器:
(1) 訓(xùn)練n顆CART樹禾酱,并且調(diào)整參數(shù)到最優(yōu)。
(2) 對(duì)于每棵樹:
加入unlabel的數(shù)據(jù)绘趋,選出在置信度區(qū)間theta里面數(shù)據(jù)并且加進(jìn)樹里面颤陶。
不斷加入unlabel 數(shù)據(jù),終止條件是這一次的迭代錯(cuò)誤率大于上一次的就終止
(3)把放進(jìn)unlabeldata 的數(shù)據(jù)重新再生成random forest
文章里面的實(shí)驗(yàn)結(jié)果是陷遮,用不同的label 和unlabel 的比例來做實(shí)驗(yàn)滓走,發(fā)現(xiàn)無論怎樣,semi的方法都是比較好的帽馋,非常robust.
這個(gè)算法的優(yōu)點(diǎn)是:隨機(jī)森林有的有點(diǎn)它基本都有了搅方,樣本可以減低模型的不穩(wěn)定性,而且測(cè)量的是out-of-bag error. 而且又能確保模型之間的差異性绽族。
Label Propogation:
這個(gè)是使用圖論的方法來做的姨涡,就是首先用所有的data 建立一個(gè)圖(Graph),然后利用隨機(jī)游走的理論來給label data 附近的點(diǎn)來initialize 一個(gè)概率吧慢,然后用min-cut 的方法來判斷出這個(gè)點(diǎn)是否屬于label附近的點(diǎn)涛漂。這個(gè)方法像KNN的方法用label data 來找到向鄰近的點(diǎn)是否同屬于一個(gè)分類。
Kaggle 比賽:
我在Forest Cover Type Prediction 當(dāng)中用了semi-supervised 的方法:
因?yàn)閠raining set: 2000
testing set over 10,000
所以加入測(cè)試集可以使performance 增加:
Elevation - Elevation in meters 高度
Aspect - Aspect in degrees azimuth 方位角
所有角度以正北方設(shè)為000°娄蔼,順時(shí)針轉(zhuǎn)一圈後的角度為360°怖喻。
因此:
正北方:000°或360°
正東方:090°
正南方:180°
正西方:270°
Slope - Slope in degrees 坡度
Horizontal_Distance_To_Hydrology - Horz Dist to nearest surface water features 到水文的距離
Vertical_Distance_To_Hydrology - Vert Dist to nearest surface water features 垂直到水文的位置
Horizontal_Distance_To_Roadways - Horz Dist to nearest roadway 到roadways 的距離
Hillshade_9am (0 to 255 index) - Hillshade index at 9am, summer solstice 光的投射度 (夏至)
Hillshade_Noon (0 to 255 index) - Hillshade index at noon, summer solstice 光的投射度 (夏至)
Hillshade_3pm (0 to 255 index) - Hillshade index at 3pm, summer solstice 光的投射度 (夏至)
Horizontal_Distance_To_Fire_Points - Horz Dist to nearest wildfire ignition points
Wilderness_Area (4 binary columns, 0 = absence or 1 = presence) - Wilderness area designation:
1 - Rawah Wilderness Area Colorado
2 - Neota Wilderness Area Colorado
3 - Comanche Peak Wilderness Area Colorado
4 - Cache la Poudre Wilderness Area
Soil_Type (40 binary columns, 0 = absence or 1 = presence) - Soil Type designation
Cover_Type (7 types, integers 1 to 7) - Forest Cover Type designation
Transformation of the data:
Aspect: 0 north eastnorth 90
distance: hillshade (the change of hillshade)
kick out some multicollineary data: hillshade 3pm hillshade 9am
find out the strong explanation of the variables: such as evaluation (Decision Tree ,single )
elimination of the outliers.
Model Building:
Using Random forest with first trial.
Gradient Boosted Machine (tree)
Add testing data to training set- co forest to train
Spruce and Lodge Poe, hard seperate, so use semi-SVM to train the data and inject biased. The existing feature can not seperate the Spruce and Lodge poe well since their environment is quite similar to each other.
(Using to build a special classifer to them)