re: SVM入門(十)將SVM用于多類分類 Jasper 2012-09-12 13:02
@無名
請(qǐng)注意本文發(fā)表于2009年3月;您所指的地址發(fā)表于2010年9月,整整晚了18個(gè)月,究竟誰是原創(chuàng),不需要我多解釋了吧。
不是的,在代碼中250就是數(shù)字的250,加上引號(hào)就變成字符串了。@hellwen
如果要談什么重要還是不重要,那首先要牢記評(píng)判重要的標(biāo)準(zhǔn),或者說,明確自己說的指標(biāo)針對(duì)什么問題而言重要還是不重要。文中的觀點(diǎn)是告訴大家TFIDF在特征選擇階段不重要,而在分類階段很重要。但有太多的朋友在辯駁時(shí)混淆了問題的討論范圍。您也一再強(qiáng)調(diào)TFIDF值一樣的詞對(duì)分類的影響云云,可見您其實(shí)也在用我的結(jié)論往另一個(gè)問題上套。不過學(xué)習(xí)的過程大抵如此,我們一錯(cuò)再錯(cuò),一錯(cuò)再錯(cuò),但卻越來越好,越來越好。希望能和大家一起進(jìn)步。@eric
@妞妞
可以試試卡方檢驗(yàn)(CHI Test)。
@Miao
哦,需要一個(gè)Apache的commons的jar包,可以去www.apache.org找到。
@Miao
查看一下自己使用的JDK版本,保證JDK5以后.另外我沒有測(cè)試過非開源版的ICTCLAS,但是據(jù)他們的文檔和ICTCLAS4j的作者講,非開源的版本詞庫要全得多,速度也快得多。
@tttt
請(qǐng)注意,本地的Application可以找到的資源,在Web服務(wù)器中未必找得到,所以請(qǐng)?jiān)囍袸CTCLAS的詞典文件(也就是Data文件夾)放在正確的位置才可以。
@radar
準(zhǔn)確的說,計(jì)算權(quán)重是為了能給每篇文章一個(gè)"唯一"的身份,就跟計(jì)算指紋不是為了得到指紋數(shù)據(jù)本身,而是為了得到唯一性一樣.我們需要一種指標(biāo),這種指標(biāo)能讓計(jì)算機(jī)"看到"不同的兩篇文章確實(shí)不同,并且知道不同在哪里.只有能看到這種不同,計(jì)算機(jī)才能看出同類文章相似在哪里.如果有一種指標(biāo),它衡量每篇文章時(shí)結(jié)果都一樣,顯然程序沒法在這種數(shù)據(jù)基礎(chǔ)上學(xué)習(xí)分類的.因此形成向量表示實(shí)際是一個(gè)中間目的,終極的目的是為了讓文章之間看上去彼此不同,并且這種不同有所依據(jù).
@lianghao.lee
連您自己都同意了我的觀點(diǎn),即認(rèn)為單純使用TFIDF值來判斷一個(gè)特征是否有區(qū)分度不夠,而應(yīng)該考慮該值在類間的分布,這個(gè)分布情況,不管您給它起什么名字,它一定不叫TFIDF,它只是以TFIDF值為基礎(chǔ),正如信息增益,卡方檢驗(yàn)和互信息等方法全都是以特征的文檔頻率為基礎(chǔ)一樣,它們都不叫文檔頻率方法,只有直接依據(jù)文檔頻率大小排序的方法才叫做“文檔頻率特征選擇”(而且確實(shí)有這種方法)。因?yàn)檎f到底,我們從文本中能觀察到的量其實(shí)只有兩個(gè):詞頻和文檔頻率,所有的方法一律以這兩個(gè)量為計(jì)算基礎(chǔ),但不能由此把所有的方法都叫做詞頻方法或者文檔頻率方法。TFIDF也是一種很基礎(chǔ)的量(它是由詞頻和文檔頻率計(jì)算來的),同樣它也帶來了較詞頻和文檔頻率單獨(dú)使用完全不同的效果。
如果您同意這些,您就會(huì)明白我所說的“TFIDF不能用來做特征選擇”,正是指單獨(dú)使用一個(gè)特征的TFIDF值來判斷毫無道理,卡方檢驗(yàn)完全基于文檔頻率計(jì)算,但單看文檔頻率也毫無道理(好吧,文檔頻率有那么一點(diǎn)道理,呵呵)。
另外,兩個(gè)文檔的相似度在有的分類模型里(例如支持向量機(jī))里完全沒有用處,您通過文檔在空間中的分布也可以看出來,一些位于類別邊界附近的文檔,其實(shí)與另一個(gè)類里的文檔更加相似(反而與同類的文檔不那么相似),在這種模型中,我們僅通過它所處的位置來判斷分類,而絲毫不受它與誰相似的影響。相信這一點(diǎn)您一想就能明白。當(dāng)然這里所爭(zhēng)論的乃是對(duì)分類來說文檔相似度是否一定有用(對(duì)有的方法完全沒用),而不是說TFIDF對(duì)判斷相似是否有用,我要說,對(duì)文檔相似度計(jì)算來說,TFIDF是非常有效的。
@lianghao.lee
就是因?yàn)椴煌娜嗽诜诸惖牟煌A段對(duì)“重要”的定義彼此不同,所以大家會(huì)在一項(xiàng)指標(biāo)重要還是不重要上存在分歧。注意我在談特征選擇階段特征對(duì)類別區(qū)分度方面的“重要”,而您糾結(jié)在文章向量表示時(shí)相似度判別時(shí)的“重要”。這種混淆很常見,所以也不能怪您,如果您有興趣繼續(xù)在文本分類方面深入,相信您有一天會(huì)得到不同的理解。
@koala++
如果假設(shè)各個(gè)特征項(xiàng)是獨(dú)立的,可以簡(jiǎn)單的計(jì)算每個(gè)特征的增益,然后取和。
如果假設(shè)不是獨(dú)立的,就把他們的組合看成是一個(gè)新的變量,統(tǒng)計(jì)這個(gè)新變量可能的取值,每個(gè)取值取到的概率,重復(fù)運(yùn)用信息增益的公式計(jì)算即可。
re: SVM入門(七)為何需要核函數(shù) Jasper 2009-04-19 10:08
@Lebee_leon
是,還要再回過頭來說的。
@志大才疏
遺憾的是基本沒有什么文獻(xiàn)會(huì)仔細(xì)的說,這可能是學(xué)術(shù)論文的通病吧,總希望讀者看不懂才好。
@志大才疏
注意我說過,當(dāng)你忽略類別的大小時(shí)用1除以類別總數(shù)。您的做法是考慮了類別大小的方法。
re: SVM入門(一)至(三)Refresh Jasper 2009-03-30 16:31
@swift7593
就是這個(gè)地方挺容易讓人誤解的,中間那條直線的表達(dá)式應(yīng)該是g(x)=0,它和g(x)可是兩回事哦。
re: SVM入門(九)松弛變量(續(xù)) Jasper 2009-03-24 15:32
@alemist
是的,還沒有寫完,呵呵。
@Lebee_leon
我想說三點(diǎn):
一是負(fù)特征對(duì)某些問題的分類是有幫助的,例如女性的第二性征對(duì)男性來說是負(fù)特征,但對(duì)判斷一個(gè)人是否為男性是很有幫助的,針對(duì)文本分類來說,負(fù)特征是否表征作用比正特征弱,尚沒有定論,因此不必急著剔除掉負(fù)特征.
二是負(fù)特征實(shí)際上也很容易被看出來,負(fù)特征一般特征值很大,但文檔頻率很小(因?yàn)樗淼氖腔静粫?huì)在某個(gè)類別出現(xiàn)的詞),我們特征選擇的時(shí)候,對(duì)每個(gè)類別也一般會(huì)先濾掉低頻詞(比如文檔頻率小于3的詞),這就剔除了很多的負(fù)特征.
三是從實(shí)驗(yàn)數(shù)據(jù)的觀察來看,特征值很大的那些特征,極少有負(fù)特征,這個(gè)理論上沒有依據(jù),純粹是觀察的結(jié)果.
綜合以上三點(diǎn),我個(gè)人覺得負(fù)特征不是一個(gè)很大的問題,當(dāng)然如果你的系統(tǒng)追求理論上的完備性,你也可以對(duì)此做些處理.
@yjwmylm
ICTCLAS因?yàn)橛幸粋€(gè)賣錢的商業(yè)版,所以這個(gè)開源的版本毛病還是比較多的。比如有一些詞庫中不存在的詞,就會(huì)扔空指針的錯(cuò)誤,比如“深圳”,“大阪”這樣的詞。
還有對(duì)一些特殊的字符串模式,比如單引號(hào)隔幾個(gè)字符再加一個(gè)什么什么的,就會(huì)報(bào)錯(cuò)(年代有些久遠(yuǎn),記不太清了)。還有一些特殊的字符,也會(huì)報(bào)錯(cuò)。如果不是很重視這些偏門的東西,建議還是修改一下源代碼,把這樣的異常屏蔽下就好。
@Lebee_leon
是這樣的,您稍微想一想就可以明白這代表什么樣的意義。
@leon
不好意思,沒有明白您的意思,“返回該頁沒有發(fā)現(xiàn)”是指什么?
re: SVM入門(七)為何需要核函數(shù) Jasper 2009-03-13 19:51
不是您那么理解的啦,我在原文中增加了說明,可以參考一下。
re: SVM入門(一)至(三)Refresh Jasper 2009-03-06 16:47
呵呵,您顯然忽略了我的提醒,在g(x)這個(gè)表達(dá)式中,x不是指橫坐標(biāo),這里的x 是一個(gè)二維向量,就是我們傳統(tǒng)的(x,y)(前面這個(gè)式子里的x才是橫坐標(biāo)),您代進(jìn)去看看,這個(gè)式子即有橫坐標(biāo),又有縱坐標(biāo),明明是條直線嘛(笑)……@志大才疏
我在"文本分類入門"系列文章的第十節(jié)把開方檢驗(yàn)詳細(xì)講了一遍,有興趣可以關(guān)注.@小年
呵呵,想一想為什么聲明的部分是英文?因?yàn)槿魏尉幋a中英文字符總是相同的,因此無論使用什么編碼保存的文件,系統(tǒng)總是可以讀懂聲明部分(即使文件中的其他內(nèi)容一律亂碼),因此聲明提供的信息才重要。@Matthew
哎呀呀,多虧了您這么一說,我才發(fā)現(xiàn)原來寫好的第九節(jié)沒有貼上去,呵呵……@康橋陽光
未分詞的版本整個(gè)有100兆大,您可以加我的QQ49900829,有機(jī)會(huì)在線傳給您。
啊,你提醒了我,文章中關(guān)于Data文件夾放置的位置是錯(cuò)的,正確的位置應(yīng)該是你建的Eclipse項(xiàng)目的文件夾下,而不是bin目錄下,這回應(yīng)該可以了吧。
整來整去,發(fā)現(xiàn)不會(huì)個(gè)腳本語言不行了,用Java有時(shí)候真是大炮打蚊子.開始學(xué)習(xí)Ruby!!呵呵
re: iReport的簡(jiǎn)單配置 Jasper 2008-03-04 10:52
請(qǐng)教一下iReport的問題:
我在XP操作系統(tǒng)上直接安裝iReport,安裝成功,也可以打開。
但是,在虛擬機(jī)中安裝了JDK\TOMCAT\ANT等等,并添加了一系列環(huán)境變量,再安裝iReport,反而無法打開,報(bào):
Could not find the main class. Program will exit.
請(qǐng)問問題出在哪里呢?
謝謝!
session[:good] ||= Good.find(params[:id])
:代表什么?
不加“:”不行嗎?