2
本文作者: 汪思穎 | 2017-10-31 16:14 |
雷鋒網(wǎng) AI科技評(píng)論消息,由法國薩克雷大學(xué)主辦的2017全球高校學(xué)生數(shù)據(jù)科學(xué)大賽(Data Science Game 2017)近日落下帷幕。在初賽上,來自中國的Medicinovo Inc.(諾道醫(yī)學(xué))團(tuán)隊(duì)一路過關(guān)斬將,最終獲得全球第八、全美第一的佳績;決賽中酣戰(zhàn)20多個(gè)小時(shí),Medicinovo Inc.(諾道醫(yī)學(xué))團(tuán)隊(duì)成功擠進(jìn)全球前20強(qiáng)。
雷鋒網(wǎng) AI科技評(píng)論第一時(shí)間聯(lián)系到團(tuán)隊(duì)成員王則遠(yuǎn),就他在參賽過程中的一些訣竅和經(jīng)驗(yàn)展開了探討。
他們團(tuán)隊(duì)共有四名成員,大家都為美國史蒂文森理工大學(xué)商業(yè)智能與分析專業(yè)(數(shù)據(jù)科學(xué)方向)碩士生,其他三名隊(duì)員分別是張仁宇、劉暢、張璐。
在比賽過程中,王則遠(yuǎn)主要負(fù)責(zé)確定初步的算法思路以及數(shù)據(jù)的一些處理方式,另外的同學(xué)主要負(fù)責(zé)編寫爬蟲,實(shí)現(xiàn)并行運(yùn)算,處理缺失值和變量等。大家在比賽中分工合作,并結(jié)合自己的經(jīng)驗(yàn)進(jìn)行了充分探討。
上圖從左至右:張仁宇,張璐,王則遠(yuǎn),劉暢
試題討論
據(jù)王則遠(yuǎn)介紹,在初賽中,主辦方為選手提供了Deezer上用戶一個(gè)月的聽歌歷史數(shù)據(jù),通過分析歷史數(shù)據(jù),他們需要預(yù)測(cè)用戶是否會(huì)喜歡Deezer推薦的歌曲。這個(gè)問題被歸納為二分類問題,與廣告點(diǎn)擊率、用戶的購買行為預(yù)測(cè)等系統(tǒng)類似。
“目前業(yè)界對(duì)這類問題的關(guān)注很多,例如騰訊的社交廣告算法大賽,阿里云的廣告點(diǎn)擊率預(yù)估算法等。不過音樂跟前面提到的廣告算法其實(shí)還是有一些差別的,很典型的一點(diǎn)就是音樂需要考慮的維度更多,比如說歌曲特性、歌手特性,甚至是語言,另外還有國家、地區(qū)的特性,用戶的喜好等。這次比賽提供的數(shù)據(jù)集就覆蓋了歐洲、美洲、非洲以及一些西班牙語地區(qū)等。”
音樂推薦系統(tǒng)中需要關(guān)注的點(diǎn)有這么多,那么Medicinovo Inc.(諾道醫(yī)學(xué))團(tuán)隊(duì)在這次比賽中是如何考慮的呢?
在與雷鋒網(wǎng) AI科技評(píng)論的交流中,王則遠(yuǎn)表示,總的來說,這次比賽需要考慮的特性可以歸為用戶、歌曲和歌手這三個(gè)大的維度。此外他也向記者闡述了這次比賽與廣告算法、用戶購買推薦系統(tǒng)具體的不同點(diǎn):
音樂需要考慮到歌手的特性,而廣告算法需要考慮的可能只是廣告特性和用戶特性,大家不用考慮廣告制作人的特性。另外用戶購買行為推薦系統(tǒng)也是一樣,并不會(huì)說喜歡某個(gè)人做的推薦系統(tǒng)算法,就會(huì)喜歡這個(gè)人做的算法推薦出來的東西。
比賽過程
主辦方提供的基礎(chǔ)數(shù)據(jù)集有30多個(gè)變量,原始數(shù)據(jù)有500多萬條,這些數(shù)據(jù)大概涉及到3萬多個(gè)用戶。除了這些基礎(chǔ)數(shù)據(jù),主辦方還另外公布了一個(gè)API鏈接,里面涉及到音樂網(wǎng)站上相對(duì)而言不那么重要的數(shù)據(jù)。
“參賽選手需要編寫爬蟲下載這些數(shù)據(jù),然后再把所有的數(shù)據(jù)結(jié)合起來,得到整體數(shù)據(jù)集?!蓖鮿t遠(yuǎn)說道。
拿到整體數(shù)據(jù)集之后,他們就開始進(jìn)行一系列預(yù)處理操作了,包括缺失值的檢驗(yàn)、變量間的相互獨(dú)立性、偏斜性,還有一些異常值的檢測(cè)、降維等。
他們團(tuán)隊(duì)在降維過程中具體用到什么算法?有什么經(jīng)驗(yàn)可以分享呢?
王則遠(yuǎn)對(duì)AI科技評(píng)論講解到,
“這次比賽用的降維算法主要是PCA和高斯映射。在進(jìn)行降維時(shí)有一個(gè)小訣竅,在把各個(gè)非連續(xù)變量擬合成連續(xù)變量的時(shí)候,不要只用PC擬合出主成分,可以試一試把主成分放回到原有數(shù)據(jù)當(dāng)中,比如原來有一百個(gè)變量,擬合出一個(gè)主成分,將主成分再放回?cái)?shù)據(jù)集,變成101個(gè)變量,然后再進(jìn)行結(jié)果的預(yù)測(cè),可能會(huì)發(fā)現(xiàn)意想不到的效果。”
數(shù)據(jù)預(yù)處理之后呢?王則遠(yuǎn)表示,他們把所有數(shù)據(jù)結(jié)合起來之后,只得到了40個(gè)左右的變量?!坝眠@些變量肯定沒辦法跟其他選手進(jìn)行PK,所以需要利用變量工程挖掘出一些新的深度信息?!?/p>
他進(jìn)一步闡述到,在這次比賽當(dāng)中,變量工程主要是提取歌曲、歌手特性等?!袄缥覀冃枰獙?duì)歌手名字進(jìn)行解析,去看這個(gè)名字是屬于什么語言,然后再把歌手與國家結(jié)合起來,挖掘出一些更深度的特性。歌手的性別、風(fēng)格,在哪段時(shí)間最火,這些也要考慮到?!?/p>
歌手風(fēng)格是如何提取的呢?在推薦系統(tǒng)中能起到什么作用?王則遠(yuǎn)說道:
歌手可能會(huì)分為鄉(xiāng)村、民謠、搖滾等風(fēng)格,但我們無法提取出風(fēng)格,不過可以提取用戶在不同的時(shí)間段(如上午、下午、晚上)分別喜歡聽什么歌,然后再把歌手對(duì)應(yīng)起來。在早上上班或是精力比較旺盛的時(shí)候,大家可能會(huì)想聽一聽搖滾風(fēng)的歌手,而在晚上比較累的時(shí)候,大家可能就會(huì)想聽一些舒緩的歌,就可以為大家推薦舒緩曲風(fēng)的歌手。
談完歌手之后,他也詳述了在歌曲的處理中所使用的一些方法。
“其實(shí)歌曲和歌手的特性很接近,不過歌曲會(huì)存在專輯和播放時(shí)間的問題。歌曲的時(shí)長分布基本屬于正態(tài)分布曲線,大致集中在一到三分鐘之間。對(duì)于歌曲的時(shí)長,我們會(huì)設(shè)定一個(gè)閾值,比賽當(dāng)中設(shè)定的是小于30秒和大于十分鐘,小于30秒的歌曲全部會(huì)歸為30秒,大于十分鐘的全部歸為十分鐘?!?/p>
在變量工程中,他們還發(fā)現(xiàn)了哪些有意思的事情呢?
王則遠(yuǎn)表示,在這次比賽中,他們發(fā)現(xiàn)把歌曲在專輯中的位置跟歌曲特性結(jié)合起來,對(duì)識(shí)別主打歌作用很大。而這也帶來了新的思考:這些特性的發(fā)現(xiàn),都需要大家不斷去想,不斷去嘗試。
另外,他也提到實(shí)驗(yàn)中這一階段的一些小訣竅:
“做變量工程的時(shí)候,需要分開去試。我們?cè)趯?shí)驗(yàn)中會(huì)先提取一些深度特性,然后是一次加三個(gè)新特征,再看刪去哪一個(gè)精度會(huì)上漲,通過這種方式一點(diǎn)點(diǎn)去刪除,這樣才形成最后的那套數(shù)據(jù)集?!?/p>
變量工程是實(shí)驗(yàn)中需要重點(diǎn)考慮的一環(huán),除了變量工程,還有哪些是需要重點(diǎn)考慮到的呢?
據(jù)AI科技評(píng)論了解,這次比賽歷時(shí)只有一個(gè)多月,遠(yuǎn)遠(yuǎn)短于Kaggle上的大多數(shù)比賽,對(duì)于這種時(shí)間緊、任務(wù)重的比賽,所以也需要考慮到速度。
王則遠(yuǎn)表示,他們?cè)囘^在Kaggle比賽中使用頻率較高的XGboost,但要想跑完數(shù)據(jù)集需要30個(gè)小時(shí)左右,這樣會(huì)對(duì)后續(xù)的調(diào)參影響很大,而LightGBM能把時(shí)間壓縮到三個(gè)小時(shí),因此在模型訓(xùn)練階段最終使用的是LightGBM。另外,在Stacking階段他們也選了一些速度比較快的算法,這樣能相對(duì)快速去進(jìn)行調(diào)參。他同時(shí)也提到一點(diǎn),在選取Stacking算法的時(shí)候也需要考慮到數(shù)據(jù)集的大小以及算法的多樣性。
除了對(duì)模型和算法的考慮,他們還集合大家所有的計(jì)算資源,搭建了一個(gè)局域并行環(huán)境。
“在搭建小型局域網(wǎng)絡(luò)之后,相當(dāng)于把數(shù)據(jù)分拆成四個(gè)部分,然后分別放到四臺(tái)電腦上去。這樣去跑模型會(huì)稍微快一點(diǎn)?!彼麑?duì)AI科技評(píng)論這樣說道。
除了前面提到的這些工作,像這種大量數(shù)據(jù)集,最容易遇見的問題肯定是過擬合了。那么,為了防止過擬合,他們做了哪些工作呢?
“調(diào)參的目的是為了防止過擬合。對(duì)于過擬合問題的話,我們需要進(jìn)行正則化。加正則項(xiàng)之后,我們每次不會(huì)考慮所有的樣本,可能會(huì)抽取80%進(jìn)行考慮。在實(shí)驗(yàn)中的調(diào)參階段,我們先調(diào)的是subsample和d-level這兩個(gè)參數(shù),最后調(diào)學(xué)習(xí)率。”
他進(jìn)一步說道,“另外還有樹的深度和廣度。像這種比賽中樹的深度一般是在3、4、5這三個(gè)數(shù)之間,廣度基本上默認(rèn)的就OK?!?/p>
此外,他表示,為了防止過擬合,在實(shí)驗(yàn)中也需要跑交叉驗(yàn)證。這次實(shí)驗(yàn)他們選擇的是5-fold交叉驗(yàn)證,在數(shù)據(jù)集中,每次抽20%,連抽五份,抽出來部分的當(dāng)測(cè)試集,剩下四個(gè)當(dāng)訓(xùn)練集。
比賽中碰到的問題
在這次比賽中,會(huì)碰到哪些比較罕見的情況呢?他們又是怎么處理的?
王則遠(yuǎn)對(duì)AI科技評(píng)論說道,在這次比賽的測(cè)試集中,一個(gè)用戶只放了一個(gè)ID,不像平常是隨機(jī)抽取測(cè)試集的,這樣的話ID有可能有重復(fù),因此很容易對(duì)模型成大量干擾,產(chǎn)生過擬合。
“這種情況我們見得比較少,這可能是符合真實(shí)世界的一種情形,我們也試了很多種特征工程方法。最開始原始數(shù)據(jù)里沒有排行榜,比如歌曲的年度推薦排行榜或者月度推薦排行榜,但是里面有這首歌被聽的時(shí)間,那我們就可以提取出時(shí)間信息做出排行榜?;旧媳荣惖淖詈箅A段我們都在做特征工程,也試了很多方法,才一點(diǎn)一點(diǎn)把問題攻克掉。”
他也提到,在這種情況出現(xiàn)的時(shí)候,他們當(dāng)時(shí)還發(fā)現(xiàn)了一個(gè)神奇變量——歌曲月度推薦排行榜。加入這個(gè)變量之后,影響非常大,實(shí)驗(yàn)的精度提高了很多。
對(duì)大家的建議
在采訪的最后,他也分享了他的一些比賽經(jīng)驗(yàn):
首先來說,類似這種比賽的數(shù)據(jù)集,其實(shí)70%的努力都是在變量工程上。如果變量工程做得好,最后的結(jié)果一定不會(huì)很差,它的重要性要遠(yuǎn)比建立一個(gè)好的模型要高,所以建議大家把精力大部分都要放在變量工程上面。
如何做好變量工程呢?AI科技評(píng)論對(duì)他提出了這個(gè)問題。
這個(gè)其實(shí)也沒有定式,是要充滿想象力一些,提取出變量的深度特性。我們現(xiàn)在所有的模型都是在關(guān)注列,但要以行為基準(zhǔn)去進(jìn)行變量工程的操作。在這個(gè)過程中,還是以group by為主,把行進(jìn)行擬合變換。這是一種很好的方式。另外還有現(xiàn)在的降維算法,大家也要多多考慮。
另外,這個(gè)比賽的數(shù)據(jù)是非連續(xù)變量,非連續(xù)變量與連續(xù)變量相比,相當(dāng)于是損失了一部分信息,難度會(huì)稍微大一些。它的維度很高,對(duì)于模型的判別存在很大的干擾,噪音數(shù)據(jù)的量可能稍微大一些,降維的時(shí)候也比較費(fèi)勁??偟膩碚f非連續(xù)變量存在很多問題,提取深度特征的時(shí)候也比較難?,F(xiàn)在市面上有很多的方法,大家需要多多關(guān)注,在非連續(xù)變量有著天生缺陷的情況下,通過特征工程如何把它擬合成一個(gè)新的連續(xù)變量去處理。
最后,現(xiàn)在國內(nèi)的比賽也在慢慢變多,但我覺得大家對(duì)這種類型的比賽重視程度稍微差一些,這個(gè)比賽其實(shí)跟真實(shí)世界很像。大家后續(xù)可以多關(guān)注一下這類比賽,多多參與,多多積累經(jīng)驗(yàn)。
比賽擴(kuò)展
除了對(duì)比賽的一些經(jīng)驗(yàn)分享,他也對(duì)比賽和現(xiàn)在的實(shí)際情況提出了自己的看法:
這次比賽中遇到的問題確實(shí)是現(xiàn)在實(shí)際應(yīng)用當(dāng)中的一個(gè)痛點(diǎn),包括各大公司做的比賽也都專注在這個(gè)方面,進(jìn)行用戶個(gè)性化推薦系統(tǒng)的定制。但推薦系統(tǒng)現(xiàn)在整體的精度不是那么好,現(xiàn)在市面上一些音樂系統(tǒng)可以優(yōu)化的地方還有很多,例如在真實(shí)世界的情況下,如何做好間接性推薦,這也是對(duì)推薦精度存在著影響的一個(gè)因素。
關(guān)于諾道醫(yī)學(xué):諾道醫(yī)學(xué)是一家醫(yī)療人工智能領(lǐng)域的創(chuàng)業(yè)企業(yè),開發(fā)的人工智能輔助診斷產(chǎn)品覆蓋影像、心血管病、消化系統(tǒng)疾病、神經(jīng)病學(xué)、臨床藥學(xué)等多個(gè)領(lǐng)域。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。