文本分类与SVM
1 基礎(chǔ)知識(shí)
1. 1 樣本整理
文本分類屬于有監(jiān)督的學(xué)習(xí),所以需要整理樣本。根據(jù)業(yè)務(wù)需求,確定樣本標(biāo)簽與數(shù)目,其中樣本標(biāo)簽多為整數(shù)。在svm中其中如果為二分類,樣本標(biāo)簽一般會(huì)設(shè)定為-1和1,而在樸素貝葉斯方法中,一般為0和1,但不是固定的,標(biāo)簽的設(shè)置和算法本身的性質(zhì)有關(guān)的。如下面的整理的樣本,1為正類,-1為反類(為了能便于展示,這里使用了一些即時(shí)聊天工具中的文本,里面的一些對(duì)話都是YY,并非真實(shí)的)。
表 1.1?1 一個(gè)訓(xùn)練樣本的例子
| 標(biāo)簽 | 樣本 |
| 1 | 如要購(gòu)買商品的請(qǐng)加我qq61517891聯(lián)系我購(gòu)買! |
| 1 | 聯(lián)系qq1121107282?? |
| 1 | 你好需要訂購(gòu)請(qǐng)加扣扣 |
| -1 | 索尼愛(ài)立信手機(jī)的體驗(yàn)是一個(gè)月嗎 |
| -1 | 不好意思這個(gè)價(jià)錢最便宜了 |
| -1 | 3件的那個(gè)他是高價(jià)在賣????? |
?
1.2 特征選擇
文本分類中最著名的特征提取方法就是向量空間模型(VSM),即將樣本轉(zhuǎn)換為向量的形式。為了能實(shí)現(xiàn)這種轉(zhuǎn)換,需要做兩個(gè)工作:確定特征集和提取特征。
1.2.1 確定特征集
特征集其實(shí)就是詞典,而且還需要給每個(gè)詞設(shè)定一個(gè)編號(hào)。
一般可以將所有樣本的詞都提取出來(lái)作為詞典,而詞典的編號(hào)可以隨意設(shè)置,默認(rèn)情況下,所有詞的權(quán)重都是等同的。如何從樣本中提取出一個(gè)個(gè)意義的詞呢?最常用的方法就是使用分詞工具,比如“如要購(gòu)買商品的請(qǐng)加我qq61517891聯(lián)系我購(gòu)買!”,可以分成“如^要^購(gòu)買^商品^的^請(qǐng)^加^我^qq61517891^聯(lián)系^我^購(gòu)買^!”,其中“^”是用來(lái)分割詞的。現(xiàn)在比較常見(jiàn)的分詞工具有ICTCLAS(C++),Iksegment(Java)。
下圖是一個(gè)典型的生成詞典的流程圖。
圖 1.1?1 從樣本中提取詞典流程圖
1.2.2 特征選擇
根據(jù)不同的業(yè)務(wù),文本分類中詞典的規(guī)模在萬(wàn)級(jí)到千萬(wàn)級(jí)甚至億級(jí)。而這么大的維度可能會(huì)帶來(lái)維度災(zāi)難,因此就要想辦法從大量的特征中選擇一些有代表性的特征而又不影響分類的效果(而根據(jù)文獻(xiàn)中的結(jié)果,特征選擇可以在一定程度上提高分類的效果)。特征選擇就是從特征集中選擇一些代表性的詞。而如何衡量詞的代表性呢?一般的計(jì)算方法有詞頻、卡方公式、信息增益等。當(dāng)前文獻(xiàn)中一致認(rèn)為比較好的方法是卡方公式。
下面幾個(gè)鏈接是幾篇寫(xiě)的比較詳細(xì)介紹如何進(jìn)行特征選擇的文章
1.??????http://www.blogjava.net/zhenandaci/archive/2009/04/19/266388.html?特征選擇與特征權(quán)重計(jì)算的區(qū)別
2.??????http://www.blogjava.net/zhenandaci/archive/2009/03/24/261701.html? 特征選擇方法之信息增益
3.??????http://www.blogjava.net/zhenandaci/archive/2008/08/31/225966.html? 特征選擇算法之開(kāi)方檢驗(yàn)
?
1.2.3 特征抽取
另外一種解決維度災(zāi)難的思路就是特征抽取。同樣是降維,相比特征選擇,特征抽取采用了一種高級(jí)的方法來(lái)進(jìn)行。Topic Modeling是原理就是將利用映射將高緯度空間映射到低緯空間,從而達(dá)到降維的目的。具體可以見(jiàn)2.1特征抽取部分
?
1.3 計(jì)算特征權(quán)重
給定一個(gè)樣本,如何轉(zhuǎn)換成向量呢?
首先給一張流程圖:
圖 1.1?2 計(jì)算特征權(quán)重的流程
?
流程:
1)首先,對(duì)樣本進(jìn)行分詞,提取出所有的詞。
2)根據(jù)已經(jīng)生成的詞典,如果詞典中的詞出現(xiàn),就在相應(yīng)對(duì)應(yīng)的位置填入該詞的詞頻。
3)對(duì)生成的向量進(jìn)行歸一化
上面的所示的方法是比較簡(jiǎn)單的一種,其中特征權(quán)重采用的為詞頻來(lái)表示,現(xiàn)在比較常用的特征權(quán)重的計(jì)算方式為T(mén)F*IDF,TF*RF。詳見(jiàn)2.3 特征權(quán)重
?
1.4???模型訓(xùn)練與預(yù)測(cè)
當(dāng)把文本轉(zhuǎn)換成向量的形式后,大部分的工作其實(shí)已經(jīng)做完了。后面所要做的就是利用算法進(jìn)行訓(xùn)練和預(yù)測(cè)了。
現(xiàn)在文本分類的算法很多,常見(jiàn)的有Na?ve Bayes,SVM,KNN,Logistic回歸等。其中SVM據(jù)文獻(xiàn)中說(shuō)是在工業(yè)界和學(xué)術(shù)界通吃的,不過(guò)據(jù)我了解現(xiàn)在公司里用SVM來(lái)做分類的不多 = =,而Logistic回歸則是比較常用的,因?yàn)橄鄬?duì)來(lái)說(shuō)簡(jiǎn)單,而且可以并行化訓(xùn)練。最重要是簡(jiǎn)單可依賴。
而至于這些算法具體是什么我這里也不再累述了,因?yàn)榫W(wǎng)絡(luò)上介紹相關(guān)的算法的文獻(xiàn)很多,而且源程序也很多。可以直接下來(lái)下來(lái)使用。
?
資料與程序
1.??????http://nlp.stanford.edu/IR-book/html/htmledition/naive-bayes-text-classification-1.html介紹Na?veBayes方法如何應(yīng)用在文本分類上
2.?????http://blog.163.com/jiayouweijiewj@126/blog/static/17123217720113115027394/?詳細(xì)分析了Mahout中如何實(shí)現(xiàn)Na?veBayes
3.??????http://www.csie.ntu.edu.tw/~cjlin/libsvm/? Libsvm是用來(lái)進(jìn)行SVM訓(xùn)練與預(yù)測(cè)的開(kāi)源工具。下載下來(lái)就可以直接用,作者的文檔寫(xiě)的很詳細(xì)。
4.??????http://www.blogjava.net/zhenandaci/category/31868.htmlSVM的八股介紹,講解的還是通俗易懂的
5.??????http://blog.pluskid.org/?page_id=683?介紹支持向量機(jī)的
6.??????https://code.google.com/p/tmsvm/??Tmsvm是我之前寫(xiě)的利用svm進(jìn)行文本分類的程序,涉及到文本分類的所有流程。
?
1.5 進(jìn)一步閱讀:
文本分類的技術(shù)已經(jīng)被研究了很多年,所以相關(guān)的資料也是非常多,可以進(jìn)一步閱讀下面的一些資料
1.??????http://www.blogjava.net/zhenandaci/category/31868.html?Show=All?這里有一個(gè)文本分類的入門(mén)系列,介紹的還是比較詳細(xì)的。
2.????? 《文本挖掘中若干關(guān)鍵問(wèn)題研究》,這本書(shū)很薄,但是寫(xiě)的很深入,對(duì)文本挖掘的一些重點(diǎn)問(wèn)題進(jìn)行了討論
?
2 若干問(wèn)題的討論
2.1 特征選擇
特征選擇是就是依據(jù)某種權(quán)重計(jì)算公式從詞典中選擇一些有代表性的詞。常用的特征選擇的方法有很多種,Chi、Mutual Information、Information Gain。另外TF、IDF也可以作為特征選擇的一種方法。在這個(gè)問(wèn)題上很多人做了大量的實(shí)驗(yàn),Chi方法是效果最好的一種,所以本系統(tǒng)(指的是TMSVM)中采用了這種方法。關(guān)于特征選擇無(wú)論是Wikipedia還是Paper中都有很細(xì)致的講解。
2.2 特征抽取
特征抽取和特征選擇都是為了降維。特征選擇的方法是從詞典中選出一些有代表性的詞,而特征抽取是利用映射將高緯度空間映射到低緯空間,從而達(dá)到降維的目的。最常見(jiàn)的特征抽取的方法是Latent Semantic Analysis(潛在語(yǔ)義分析),其中LSA也被稱作Topic Modeling,比較常用的Topic Modeling的方法有LSA、PLSA、LDA。之前使用的方法LSA。
假設(shè)原來(lái)的詞-文檔矩陣為,即有m個(gè)term,n篇文檔。表示第j篇文檔的向量。,經(jīng)過(guò)SVD分解后,選擇前k個(gè)特征值后。再去重組文檔的特征向量,,這樣新的文檔特征向量就由原來(lái)的m維降至k維。而一個(gè)新的文檔即可通過(guò),映射到U空間上。其實(shí)還有另外一種方法,就是,但是在實(shí)驗(yàn)中發(fā)現(xiàn),前一種映射效果會(huì)更好一點(diǎn)。另外wikipedia上對(duì)LSA也有很詳細(xì)的闡述
本系統(tǒng)將LSA用來(lái)Classification上的方法是一種叫做local relevancy weighted LSI的方法。其主要步驟為
*?????????????模型訓(xùn)練
①?????????????訓(xùn)練初始分類器C0
②?????????????對(duì)訓(xùn)練樣本預(yù)測(cè),生成初始分值
③?????????????文檔特征向量變換
④?????????????設(shè)定閾值,選擇top n文檔作為局部LSA區(qū)域
⑤?????????????對(duì)局部詞/文檔 矩陣做SVD分解。得到U、S、V矩陣
⑥?????????????將其他的訓(xùn)練樣本映射到U空間中
⑦?????????????對(duì)所有經(jīng)過(guò)變換后的訓(xùn)練樣本進(jìn)行訓(xùn)練,得到LSA分類器
*?????????????模型預(yù)測(cè)
①?????????????利用C0預(yù)測(cè)得到其初始分值
②?????????????文檔特征向量變換
③?????????????映射到U空間
④?????????????利用LSA模型進(jìn)行預(yù)測(cè)得分
?
2.3 特征權(quán)重計(jì)算
文檔特征向量的特征權(quán)重計(jì)算的一般公式為,即第i個(gè)term在第j篇文檔向量中的權(quán)重。其中Local(i,j)被稱為局部因子,與term在文檔中出現(xiàn)的次數(shù)有關(guān)。global(i)又稱為term的全局因子,與在整個(gè)訓(xùn)練集中term出現(xiàn)有關(guān)。通常我們熟悉的公式都可以轉(zhuǎn)化為這一個(gè)通用的表達(dá)式。如最常用的tf形式,tf*idf形式。因此我們就可以在構(gòu)造詞典的時(shí)候就計(jì)算term的全局因子,把這個(gè)值放在詞典中,然后在計(jì)算特征權(quán)重的時(shí)候直接調(diào)用。
具體的流程圖如下:
圖 2.3?1 特征權(quán)重的計(jì)算流程
?
在Classification中哪種特征權(quán)重的計(jì)算方式最好??tf*idf ?在文獻(xiàn)中最常用的是tf*idf,但是其效果并一定好。曾經(jīng)有人也在這上面做了一些工作,比如新加坡國(guó)立大學(xué)的Man Lan曾在ACM和AAAI上發(fā)表過(guò)文章來(lái)闡述這個(gè)問(wèn)題。Zhi-Hong Deng也對(duì)各種feature weight的方法做了系統(tǒng)的比較,最終的結(jié)論是tf*idf并不是最佳的,而最簡(jiǎn)單的tf表現(xiàn)不錯(cuò),一些具有區(qū)分性的方法比如tf*chi等效果差強(qiáng)人意。
后來(lái)Man Lan在09年發(fā)表了一篇論文,對(duì)term weighting方法做了一個(gè)綜合細(xì)致的闡述,并對(duì)其提出的tf*rf方法做了各方面的論證。
?
2.4 TSVM的模型訓(xùn)練和預(yù)測(cè)流程
訓(xùn)練過(guò)程:對(duì)文本自動(dòng)做SVM模型的訓(xùn)練。包括Libsvm、Liblinear包的選擇,分詞,詞典生成,特征選擇,SVM參數(shù)的選優(yōu),SVM模型的訓(xùn)練等都可以一步完成。示意圖見(jiàn)下面
圖 2.4?1 TMSVM模型訓(xùn)練流程
模型預(yù)測(cè)過(guò)程:
圖 2.4?2 多個(gè)模型同時(shí)預(yù)測(cè)流程
?
模型結(jié)果:
模型會(huì)返回兩個(gè)結(jié)果:label和score,其中l(wèi)abel即其預(yù)測(cè)的標(biāo)簽。而score是該樣本屬于該類的隸屬度,分值越大,代表屬于該類的置信度越大。具體的計(jì)算方式則是根據(jù)公式,,其中k為所有支持判別類得個(gè)數(shù),n為所有類別個(gè)數(shù),si 為所有支持判別類的分?jǐn)?shù)。返回score的好處是對(duì)與information filtering問(wèn)題,因?yàn)橛?xùn)練樣本的unbalance和randomly sampling 問(wèn)題,依據(jù)判別的標(biāo)簽得到的結(jié)果準(zhǔn)確率較低,因此需要通過(guò)閾值控制。
?
2.5 SVM參數(shù)選擇
Libsvm中最重要的兩個(gè)參數(shù)為C和gamma。C是懲罰系數(shù),即對(duì)誤差的寬容度。c越高,說(shuō)明越不能容忍出現(xiàn)誤差。C過(guò)大或過(guò)小,泛化能力變差。gamma是選擇RBF函數(shù)作為kernel后,該函數(shù)自帶的一個(gè)參數(shù)。隱含地決定了數(shù)據(jù)映射到新的特征空間后的分布,gamma越大,支持向量越少,gamma值越小,支持向量越多。支持向量的個(gè)數(shù)影響訓(xùn)練與預(yù)測(cè)的速度。這個(gè)問(wèn)題Chih-Jen Lin在其主頁(yè)上有詳細(xì)的介紹。
而Liblinear的C參數(shù)也是非常重要的。
因此在系統(tǒng)中會(huì)通過(guò)5-flods交叉驗(yàn)證的方法對(duì)一定范圍內(nèi)的C,gamma進(jìn)行g(shù)rid 搜索,關(guān)于grid搜索可以參考論文以及l(fā)ibsvm中tool文件夾中g(shù)rid.py源文件。grid搜索是可以得到全局最優(yōu)的參數(shù)的。
為了加快SVM參數(shù)搜索的效率,采用兩種粒度的搜索粗粒度和細(xì)粒度,兩種搜索方式的區(qū)別就是搜索步長(zhǎng)不同。粗粒度是指搜索步長(zhǎng)較大,為了能在較大的搜索范圍內(nèi)找到一個(gè)最優(yōu)解所在的大體區(qū)域。細(xì)粒度搜索搜索步長(zhǎng)較小,為了能在一個(gè)較小范圍內(nèi)找到一個(gè)精確參數(shù)。
而對(duì)與大樣本的文件,使用上面的方法仍然會(huì)比較耗費(fèi)時(shí)間。為了進(jìn)一步提高效率,同時(shí)在保證得到全局最優(yōu)的情況下,先對(duì)選擇大樣本的子集進(jìn)行粗粒度的搜索,然后得到在得到的最優(yōu)區(qū)間內(nèi)對(duì)全量樣本進(jìn)行細(xì)粒度的搜索。
?
2.6 SVM參數(shù)選擇的并行化
SVM對(duì)訓(xùn)練過(guò)程還是比較久的,尤其是為了能夠找到最合適的參數(shù)。自然就想到能不能對(duì)SVM的巡檢并行化。我之前做的方法是對(duì)參數(shù)的選擇并行化,而單個(gè)參數(shù)的訓(xùn)練還是放在一個(gè)機(jī)器上串行進(jìn)行。我把訓(xùn)練的方法放在我博客上,就不再粘貼到這里了。
2 ? ? Libs與liblinear的多分類策略
2.7 Libsvm 與liblinear的多分類策略
libsvm的多分類策略為one-againt-one。總共有k*(k-1)/2個(gè)binary classifier,對(duì)這k*(k-1)/2個(gè)binary classifier的value進(jìn)行遍歷,如果第i個(gè)類和第j個(gè)類binary 的classifier的value大于0,則會(huì)給第i個(gè)類投1票,否則給第j個(gè)類投1票。選擇最終獲得投票數(shù)最多的類作為最終的類別。
而liblinear的策略為one-against-rest。總共有k個(gè)binary classifier。從所有binary classifier中選擇值最大多對(duì)應(yīng)的類別作為最終的預(yù)測(cè)類標(biāo)簽。
? ? 重復(fù)樣本對(duì)SVM模型的影響
2.8 重復(fù)樣本對(duì)SVM模型的影響
重復(fù)樣本對(duì)于SVM模型有怎樣的影響呢?
我自己做了個(gè)實(shí)驗(yàn),用來(lái)看重復(fù)樣本的影響。
原有一個(gè)訓(xùn)練樣本共有Positive樣本1000,Negative樣本2000,然后將Positive樣本*2,構(gòu)造了一個(gè)Positive樣本2000,Negative樣本2000的訓(xùn)練樣本。然后測(cè)試一個(gè)包含Positive樣本4494 ,Negative樣本24206的樣本。最終的結(jié)果如下:
圖2.8?1重復(fù)樣本對(duì)結(jié)果影響
從結(jié)果上來(lái)看:在F值上,無(wú)重復(fù)的樣本會(huì)比重復(fù)樣本稍高(圖中保留了2位小數(shù),其實(shí)差異不超過(guò)0.5%)。而正確率上,重復(fù)樣本會(huì)比無(wú)重復(fù)樣本稍高。
然后我又把模型放入到一個(gè)包含3千萬(wàn)樣本中去測(cè)試,具體的指標(biāo)無(wú)法測(cè)算。但是感覺(jué)還是重復(fù)樣本會(huì)好一點(diǎn)。
具體分析:
1、???????一個(gè)樣本被重復(fù)的多次,意義上相當(dāng)于增加了該樣本的權(quán)重。在SVM有一種WeightedInstance。在正常樣本難免會(huì)有些誤判,如果同一條樣本同時(shí)出現(xiàn)在Positive和Negative類中,包含重復(fù)樣本的Positive類就會(huì)把Negative類誤判的樣本的影響抵消。而在SVM分類中對(duì)這些離群點(diǎn)會(huì)用懲罰函數(shù)進(jìn)行控制。
2、???????但是如果保留重復(fù)樣本,會(huì)增加樣本的量,對(duì)libsvm來(lái)說(shuō),分類的復(fù)雜度為O(Nsv3),而且如果一個(gè)樣本是支持向量,那么所有重復(fù)的樣本也都會(huì)被加入到支持向量中去。而且如果要為SVM模型選擇合適的參數(shù)的,如果在SVM選擇的是RBF核函數(shù),挑選合適的懲罰cost和RBF的參數(shù)gramma,如果在都是在[1,5,0.5]進(jìn)行挑選,則總共會(huì)有9*9=81組參數(shù)需要挑選,在每組參數(shù)下如果要進(jìn)行5-flods的交叉驗(yàn)證,則需要81*5=405次訓(xùn)練與測(cè)試的過(guò)程。如果每次訓(xùn)練與測(cè)試花費(fèi)2分鐘(在樣本達(dá)到10萬(wàn)數(shù)量級(jí)的時(shí)候,libsvm的訓(xùn)練時(shí)間差不多按分鐘計(jì)算),則總共需要405*2/60=12.3小時(shí),所以說(shuō)訓(xùn)練一個(gè)好的SVM模型十分不容易。因此如果去掉重復(fù)樣本對(duì)訓(xùn)練效率來(lái)說(shuō)大有裨益。
?2.9 將分類應(yīng)用與信息過(guò)濾
分類應(yīng)用與信息過(guò)濾,對(duì)最終效果影響最大的是什么?分類算法?詞典大小?特征選擇?模型參數(shù)?這些都會(huì)影響到最終的過(guò)濾效果,但是如果說(shuō)對(duì)過(guò)濾效果影響最大的,還是訓(xùn)練樣本的采樣。
現(xiàn)在基于機(jī)器學(xué)習(xí)的分類算法一般都是基于一個(gè)假設(shè):訓(xùn)練集和測(cè)試集的分布是一致的,這樣在訓(xùn)練集上訓(xùn)練出來(lái)的分類器應(yīng)用與測(cè)試集時(shí)其效果才會(huì)比較有效。
但是信息過(guò)濾面對(duì)的數(shù)據(jù)集一般是整個(gè)互聯(lián)網(wǎng),而互聯(lián)網(wǎng)的數(shù)據(jù)集一般很難去隨機(jī)采樣。如下圖所示:通常來(lái)說(shuō),信息過(guò)濾或其它面向全互聯(lián)網(wǎng)的應(yīng)用在分類,選擇數(shù)據(jù)集時(shí),需要包含P(Positive,即用戶感興趣的樣本),N(Negative,即用戶不關(guān)心、不敢興趣的樣本)。最理想的情況是:P選擇是用戶感興趣的,而N是全網(wǎng)中除去P,顯而易見(jiàn)N是無(wú)限大的,而且很難估計(jì)其真正的分布,即無(wú)法對(duì)其隨機(jī)取樣。
圖2.9?1樣本分布
同樣面對(duì)整個(gè)互聯(lián)網(wǎng)的應(yīng)用時(shí)網(wǎng)頁(yè)分類,網(wǎng)頁(yè)分類應(yīng)用一般會(huì)選擇Yahoo!或者是專門(mén)整理網(wǎng)頁(yè)分類專門(mén)網(wǎng)站的網(wǎng)頁(yè)作為初始訓(xùn)練樣本。
信息過(guò)濾的樣本一般來(lái)說(shuō),感興趣的樣本是很好隨機(jī)采樣的。但是與感興趣相對(duì)于的是正常樣本,這個(gè)很難去選擇。而正常樣本對(duì)全網(wǎng)測(cè)試效果是影響非常大的。我曾經(jīng)做過(guò)一個(gè)實(shí)驗(yàn):
首先,有一個(gè)包含5萬(wàn)條樣本的數(shù)據(jù)集,有2.5萬(wàn)條Positive樣本,2.5萬(wàn)條Negative樣本。這里的Negative樣本是以前用關(guān)鍵字的方法找出的不正確的樣本。用4萬(wàn)條樣本做訓(xùn)練樣本,用1萬(wàn)條樣本做測(cè)試樣本。訓(xùn)練出得模型交叉驗(yàn)證的結(jié)果可以達(dá)到97%以上。在測(cè)試樣本中的測(cè)試效果,然后選定閾值為0.9,這是的召回率可以達(dá)到93%,正確率為96%。
然后把這個(gè)模型放到一個(gè)包含3千萬(wàn)條中去測(cè)試,設(shè)置閾值為0.9,共找出疑似違規(guī)樣本300萬(wàn)條。對(duì)這個(gè)實(shí)驗(yàn)來(lái)說(shuō),召回的樣本實(shí)在是太多了,其正確率是很低的。
然后,我又更換了一下正常樣本。從這3千萬(wàn)樣本中隨機(jī)采樣出3萬(wàn)條樣本,然后經(jīng)過(guò)校驗(yàn),將其中Positive的樣本剔除掉。剩下大約2萬(wàn)7千條樣本放入到訓(xùn)練樣本重新訓(xùn)練。
把得到的新模型放到3千萬(wàn)樣本中測(cè)試,同樣設(shè)置閾值為0.9,共找出疑似樣本15萬(wàn)。正確率可以達(dá)到70%左右。所以正常樣本的隨機(jī)選擇對(duì)分類來(lái)說(shuō)同樣至關(guān)重要。
舉一個(gè)小例子:
下圖左面的圖是用P和N訓(xùn)練出得模型。右面的圖中有一個(gè)未知的類C,根據(jù)已知的模型,他應(yīng)該會(huì)被分入到P中,但是實(shí)際上他是不屬于P的。一般情況下,這種情況可以用閾值來(lái)控制。
圖2.9?2分類用于信息過(guò)濾
?
2.10? SVM解決樣本傾斜的問(wèn)題
所謂數(shù)據(jù)偏斜(unbalanced),它指的是參與分類的兩個(gè)類別(也可以指多個(gè)類別)樣本數(shù)量差異很大。比如說(shuō)正類有10,000個(gè)樣本,而負(fù)類只給了100個(gè),這會(huì)引起的問(wèn)題顯而易見(jiàn),可以看看下面的圖:
圖2.10?1樣本傾斜示例
方形的點(diǎn)是負(fù)類。H,H1,H2是根據(jù)給的樣本算出來(lái)的分類面,由于負(fù)類的樣本很少很少,所以有一些本來(lái)是負(fù)類的樣本點(diǎn)沒(méi)有提供,比如圖中兩個(gè)灰色的方形點(diǎn),如果這兩個(gè)點(diǎn)有提供的話,那算出來(lái)的分類面應(yīng)該是H’,H2’和H1,他們顯然和之前的結(jié)果有出入,實(shí)際上負(fù)類給的樣本點(diǎn)越多,就越容易出現(xiàn)在灰色點(diǎn)附近的點(diǎn),我們算出的結(jié)果也就越接近于真實(shí)的分類面。但現(xiàn)在由于偏斜的現(xiàn)象存在,使得數(shù)量多的正類可以把分類面向負(fù)類的方向“推”,因而影響了結(jié)果的準(zhǔn)確性。
具體的解決方法還是看我博客上的文章吧,這里就不單獨(dú)貼出來(lái)了。
?
2.11? 其他
文本分類的問(wèn)題點(diǎn)很多,之前還想再寫(xiě)寫(xiě)如何對(duì)短文本(比如query)進(jìn)行分類,利用利用Wikipedia的知識(shí)增強(qiáng)文本分類的效果,如何利用未標(biāo)記樣本來(lái)提高分類的效果。現(xiàn)在時(shí)間不多,等有時(shí)間了再繼續(xù)深入的寫(xiě)吧。
下面幾個(gè)鏈接是幾篇寫(xiě)的比較詳細(xì)介紹如何進(jìn)行特征選擇的文章
1.http://www.blogjava.net/zhenandaci/archive/2009/04/19/266388.html
特征選擇與特征權(quán)重計(jì)算的區(qū)別
2.http://www.blogjava.net/zhenandaci/archive/2009/03/24/261701.html
特征選擇方法之信息增益
3.http://www.blogjava.net/zhenandaci/archive/2008/08/31/225966.html
特征選擇算法之開(kāi)方檢驗(yàn)
1.http://nlp.stanford.edu/IR-book/html/htmledition/naive-bayes-text-classification-1.html
介紹Na?veBayes方法如何應(yīng)用在文本分類上
2.http://blog.163.com/jiayouweijiewj@126/blog/static/17123217720113115027394/
詳細(xì)分析了Mahout中如何實(shí)現(xiàn)Na?veBayes
3.http://www.csie.ntu.edu.tw/~cjlin/libsvm/
Libsvm是用來(lái)進(jìn)行SVM訓(xùn)練與預(yù)測(cè)的開(kāi)源工具。下載下來(lái)就可以直接用,作者的文檔寫(xiě)的很詳細(xì)。
4.http://www.blogjava.net/zhenandaci/category/31868.html
SVM的八股介紹,講解的還是通俗易懂的
5.http://blog.pluskid.org/?page_id=683
介紹支持向量機(jī)的
6.https://code.google.com/p/tmsvm/
Tmsvm是我之前寫(xiě)的
利用svm進(jìn)行文本分類的程序,涉及到文本分類的所有流程。
閱讀下面的一些資料
1.http://www.blogjava.net/zhenandaci/category/31868.html?Show=All
這里有一個(gè)文本分類的入門(mén)系列,介紹的還是比較詳細(xì)的。
2.《文本挖掘中若干關(guān)鍵問(wèn)題研究》,這本書(shū)很薄,但是寫(xiě)的很深入,對(duì)文本挖掘的一些重點(diǎn)問(wèn)題進(jìn)行了討論
總結(jié)
- 上一篇: Python之操作HBASE数据库
- 下一篇: 利用福禄克DSX2-5000 CH解决双