最近改論文業(yè)余玩的一個(gè)比賽芙粱。我是在最后10幾天開(kāi)始玩的祭玉,雖然最后名次不高,但是還是挺有意義的一次比賽春畔。
題目:預(yù)測(cè)在線評(píng)論網(wǎng)站的搜索結(jié)果評(píng)分脱货。
數(shù)據(jù):查詢(query)、產(chǎn)品title律姨、產(chǎn)品描述
我加入的時(shí)候已經(jīng)有1000+只隊(duì)伍/個(gè)人參與了振峻。這是一個(gè)文本相關(guān)的預(yù)測(cè)任務(wù),我們需要通過(guò)給出的查詢线召、產(chǎn)品文本信息铺韧,預(yù)測(cè)用戶(多個(gè))對(duì)查詢結(jié)果的評(píng)分的中位數(shù),即查詢與結(jié)果的相關(guān)系數(shù)缓淹。
評(píng)估標(biāo)準(zhǔn)是quadratic weighted kappa[1]
Benchmark&其他選手提供的Script的一個(gè)簡(jiǎn)單思路就是將文本連接在一起哈打,用tfidf刻畫(huà)每個(gè)Doc,再通過(guò)svd分解成低維的矩陣讯壶,以相關(guān)系數(shù)作為label料仗,作為多分類問(wèn)題放入分類算法。
這里怎么處理文本是一個(gè)很有門(mén)道的活伏蚊,關(guān)于文本的預(yù)處理的工作主要以及主要工具:
- 去除HTML標(biāo)簽立轧,使用的BeautifulSoup
- 去除停用詞
- 詞干提取,nltk.PorterStemmer
這里介紹兩個(gè)script作為benchmark:
記為modelA,無(wú)預(yù)處理氛改,查詢+產(chǎn)品title->tfidf->SVD(400)->標(biāo)準(zhǔn)化->SVM
這個(gè)方法帐萎,沒(méi)有對(duì)文本預(yù)處理,直接將查詢和產(chǎn)品title連接在一起胜卤。LB0.579+記為modelB疆导,完整的文本預(yù)處理->tfidf->SVD(400)->標(biāo)準(zhǔn)化->SVM
這個(gè)方法使用了產(chǎn)品描述,并進(jìn)行了預(yù)處理工作葛躏。LB0.600+
有一個(gè)人對(duì)上述兩個(gè)方法使用了簡(jiǎn)單的線性stacking learning[2]澈段,在LB上得到了0.626的成績(jī)。
以上使用的是CV來(lái)搜索參數(shù)和防止過(guò)擬舰攒。
我使用的是8:2的線下訓(xùn)練集/驗(yàn)證集劃分败富,這樣做的原因是結(jié)果比較穩(wěn)定。
我的思路是尋求其它一套具有物理意義的特征體系摩窃。
- 我發(fā)現(xiàn)訓(xùn)練集和測(cè)試集的查詢(query)是一樣的兽叮,一共260個(gè)。因此可以利用label給每個(gè)查詢做一套特征猾愿,主要是每個(gè)查詢label的統(tǒng)計(jì)(均值充择、max、min和標(biāo)準(zhǔn)差)匪蟀、每個(gè)label值(1,2,3,4)占比、以及占比的威爾遜區(qū)間[3]下限以及下限乘以占比宰僧、還有l(wèi)abel標(biāo)準(zhǔn)差的統(tǒng)計(jì)(均值材彪、max、min和標(biāo)準(zhǔn)差)琴儿。
- 單詞粒度的統(tǒng)計(jì)信息:查詢段化、產(chǎn)品title、產(chǎn)品描述的單詞計(jì)數(shù)造成,查詢中的單詞出現(xiàn)在title中的數(shù)量以及占比等等显熏。
這套特征體系LB0.57左右,記為modelX
接下來(lái)一段時(shí)間就是做modelA+modelB+modelX的stacking learning晒屎,結(jié)果一直在0.62~0.64左右徘徊喘蟆。期間嘗試過(guò)
- 對(duì)relevance variance(一條記錄label的標(biāo)準(zhǔn)差)零和非零做分層學(xué)習(xí),即產(chǎn)生兩個(gè)model再做ensemble鼓鲁,線下確實(shí)提升了蕴轨,但是線上卻下降,原因不明骇吭。
- 將modelA和modelB的輸出概率作為特征加入modelX橙弱,結(jié)果不好。
最后的幾天,改變ensemble的方法棘脐,改用modelA svd分解的后的特征+modelX特征作為modelA+斜筐,同理得到modelB+,這兩個(gè)模型再做stack learning蛀缝,調(diào)參后LB0.669.
最后一天顷链,嘗試了Word2vec[4],使用gensim訓(xùn)練了(query+product title+product description)組成的語(yǔ)料内斯,輸出了300維的word2vec蕴潦,再通過(guò)average的方法得到了每個(gè)doc的300維特征以此作為modelC的特征。與modelX結(jié)合俘闯,線下取得了比modelA+好的成績(jī)潭苞。
最后一次提交使用的是modelA+ + modelB+ + modelC+,LB是0.669(但比之前那個(gè)略差)真朗,我想應(yīng)該是欠擬合的緣故此疹,應(yīng)該會(huì)比之前有提高的。
最后成績(jī)并不理想遮婶,public LB rank 105蝗碎, private LB rank 85.
體會(huì):
- 最后有點(diǎn)遺憾,應(yīng)該早點(diǎn)使用word2vec旗扑,google提前訓(xùn)練好的vector沒(méi)有下載下來(lái)= =蹦骑。
- 可以看出來(lái)我并沒(méi)有做很細(xì)致的工作,幾乎都是benchmark上做ensemble臀防。
- stacking learning很簡(jiǎn)單眠菇,卻很實(shí)用。
Reference