李戀 柴豪森 徐浩
摘要:在Co-trainning算法中通過兩個訓練集互相校正來達成分類,這里兩個訓練集所用的特征集對結(jié)果影響很大,選取兩個好的特征集也就可以使Co-trainning算法結(jié)果更優(yōu)。K-means算法是一種聚類算法,在對K-means算法研究和實現(xiàn)時,設計并實驗將K-means算法思想運用到Co-trainning算法特征集選取上,效果較好。
關(guān)鍵詞:K-means算法;Co-trainning算法
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2020)32-0216-02
1 引言
早在1998年,Blum于“Combining labeled and unlabeled data with co-training”一文中提出了Co-training的思想。一直以來,該方法的應用領(lǐng)域主要集中在網(wǎng)頁分類、雙向識別系統(tǒng)、移動目標檢測等。
Co-trainning算法是Self-training(自訓練)算法的改進版,簡單來說就是將一堆雜亂數(shù)據(jù)通過現(xiàn)有的一些數(shù)據(jù)特點和數(shù)據(jù)本身特點進行分類,這是一種半監(jiān)督學習算法。K-means算法是一種聚類方法,為了優(yōu)化K-means算法,人們提出了很多改進的算法,全局K均值聚類算法[1]就是一種改進方法。這里在對傳統(tǒng)K-means算法進行研究和實現(xiàn)時,通過對結(jié)果的分析與思考,研究是否有可能運用到Co-trainning算法中的特征集選擇上。
2 K-means算法
傳統(tǒng)K-means算法簡單來說就是以下幾個步驟:1)確定要將數(shù)據(jù)聚成多少類,也就是先從數(shù)據(jù)集中隨意選k個聚類中心;2)計算各個數(shù)據(jù)到k個聚類中心的距離,距離哪個中心近就分到哪個聚類中;3)計算各個聚類的平均值,使該平均值取代原來的聚類中心;4)重復二、三步,當前后兩次結(jié)果差不多時,結(jié)束算法;5)傳統(tǒng)K-means算法有著k值初始值選擇和結(jié)果存在隨機性等局限[2]。
3 Co-trainning算法
在介紹Co-trainning算法之前,需要了解一下半監(jiān)督學習的一類思想。通過圖2可以看出,圖2左邊無法判定待判別樣本是“+”還是“-”,因為,待判別樣本周邊只有一個“+”樣本和一個“-”樣本。如圖2右邊,待判別樣本周邊已知眾多“+”“-”樣本,所以,能夠根據(jù)待判別樣本的相對位置判斷該樣本到底屬于哪一個類別。
Co-trainning算法是一種典型的半監(jiān)督學習方法,其本質(zhì)就是一個交叉訓練的過程。算法步驟如下。
1)導入有標記的數(shù)據(jù)集和無標記的數(shù)據(jù)集。
2)劃分測試集和兩個訓練集,其中訓練集中有標記的樣本為少部分,大部分為無標記的數(shù)據(jù)。
3)分別用兩個訓練集中有標記樣本訓練形成兩個分類器,然后用這兩個分類器分別對各自訓練集中部分無標記樣本進行分類標記,標記后的數(shù)據(jù)加入另一個訓練集的標記樣本中。
4)重復第三步,直到分類器不再發(fā)生變化或到達設定輪數(shù)。
5)用訓練形成的最終的兩個分類器對測試集進行分類,然后通過混淆矩陣計算分類準確率[3]。
4 實驗
首先進行K-means算法的實現(xiàn)。這里取k值為3,分別對三類數(shù)據(jù)集和比較密集的數(shù)據(jù)集進行聚類算法。實驗結(jié)果如圖3、圖4和圖5所示。
由圖3和圖4可以看出傳統(tǒng)K-means算法結(jié)果的隨機性,而對于數(shù)據(jù)比較密集,數(shù)據(jù)距離跨度不大時,傳統(tǒng)K-means算法結(jié)果是穩(wěn)定的。
接下來進行典型Co-trainning算法的實現(xiàn)。這里使用的數(shù)據(jù)集合是從網(wǎng)上下載的mfeat-kar數(shù)據(jù)集。訓練集中初始有標記樣本占10%,這里有標記樣本和無標記樣本為隨機抽取得到。實驗結(jié)果如表1所示。
在進行Co-trainning算法時,選取的有標記樣本對實驗結(jié)果會有很大影響。在前面進行K-means聚類算法時,考慮將聚類思想運用到選取有標記樣本中。于是這里將有標記樣本進行一定的分配,使兩個訓練集的有標記樣本有一定的差距。這樣做主要為了使兩個訓練集更好地互相校正來達到形成更好的分類器。
基于上面的想法,下面對標記樣本進行盡量相似地放在一邊的處理后又一次進行了Co-trainning算法實驗。實驗結(jié)果如表2所示。
由表1和表2對比可知,明顯處理后準確率降低了。在對Co-trainning算法的進一步了解后,對數(shù)據(jù)集進行多次調(diào)整以及測試后發(fā)現(xiàn)了降低的原因。上面對訓練集的標記樣本選取雖然使其獨特性大了些,但是使得樣本不夠齊全。因為要想訓練出一個好的分類器,標記樣本需要盡量包含全面,而樣本不齊全情況下,訓練出的分類器反而比原先的要差。
5總結(jié)
本文對K-means算法和Co-trainning算法進行了實現(xiàn)。在將聚類思想運用到選取更有特性的標記集后,因為同時降低了能產(chǎn)生最優(yōu)分類器的信息量,所以最終結(jié)果實驗準確率反而降低了。為了提升Co-trainning算法準確率,需要學習更多知識,尋求即能保證特性又能觸及更多信息的標記數(shù)據(jù)選取方法。
參考文獻:
[1] 陶瑩,楊鋒,劉洋,等.K均值聚類算法的研究與優(yōu)化[J].計算機技術(shù)與發(fā)展,2018,28(6):90-92.
[2] 王巧玲,喬非,蔣友好.基于聚合距離參數(shù)的改進K-means算法[J/OL].計算機應用:1-6[2019-08-30].http://kns.cnki.net/kcms/detail/51.1307.TP.20190520.0947.002.html.
[3] 陳善學,尹修玄,楊亞娟.基于碼字匹配和引力篩選的半監(jiān)督協(xié)同訓練算法[J].武漢大學學報·信息科學版,2015,40(10):1386-1391,1408.
【通聯(lián)編輯:李雅琪】