数据竞赛专题 | 从赛题理解到竞赛入门基础
為了幫助更多競賽選手入門進階比賽,通過數(shù)據(jù)競賽提升理論實踐能力和團隊協(xié)作能力。DataFountain 和 Datawhale 聯(lián)合邀請了數(shù)據(jù)挖掘,CV,NLP領(lǐng)域多位競賽大咖,將從賽題理解、數(shù)據(jù)探索、數(shù)據(jù)預(yù)處理、特征工程、模型建立與參數(shù)調(diào)優(yōu)、模型融合六個方面完整解析數(shù)據(jù)競賽知識體系,幫助競賽選手從0到1入門和進階競賽。
下面是大咖分享
???
數(shù)據(jù)挖掘方向王賀?ID:魚遇雨欲語與余
簡介:武漢大學(xué)碩士,2019年騰訊廣告算法大賽冠軍選手,京東算法工程師,一年內(nèi)獲得兩冠四亞一季的佳績
不得不說賽題理解是被很多人所忽略的一個問題,作為打比賽的第一個步,我們應(yīng)該做到熟稔于心。那么怎樣才能達到這樣的效果呢,這里我們先將賽題理解分為細(xì)分為四個部分,分別是賽題背景、賽題數(shù)據(jù)、評價指標(biāo)和業(yè)務(wù)分析。下面將對其逐個介紹,幫助走好比賽的第一步。
?
賽題背景
三個問題:
(1)這個賽題是什么業(yè)務(wù)問題;
(2)具體的業(yè)務(wù)流程是什么;
(3)最終的目標(biāo)是什么。
能夠回答這三個問題,基本的賽題背景也算是了解了。
舉個例子,在2019騰訊廣告算法大賽中,三個問題分別是:
(1)本次算法大賽的題目是源于騰訊廣告業(yè)務(wù)中一個面向廣告主服務(wù)的真實業(yè)務(wù)產(chǎn)品——廣告曝光預(yù)估,那么很明顯了,廣告主服務(wù)的真實業(yè)務(wù)產(chǎn)品中的廣告曝光預(yù)估;
(2)廣告曝光預(yù)估的目的是在廣告主創(chuàng)建新廣告和修改廣告設(shè)置時,為廣告主提供未來的廣告曝光效果參考。通過這個預(yù)估參考,廣告主能避免盲目的優(yōu)化嘗試,有效縮短廣告的優(yōu)化周期,降低試錯成本,使廣告效果盡快達到廣告主的預(yù)期范圍;
(3)最終目標(biāo)預(yù)測出廣告的日曝光量。這些內(nèi)容都是可以從賽題介紹中所找到的。
?
賽題數(shù)據(jù)
對于賽題的數(shù)據(jù),就需要我們進行基本的探查,作為理解部分不需要太過深入。
(1)每種數(shù)據(jù)集之間的關(guān)系;
(2)數(shù)據(jù)中缺失值情況;
(3)類別特征和數(shù)值特征;這些可以作為我們關(guān)注基本點。
評價指標(biāo)
這里主要分為分類指標(biāo)和回歸指標(biāo),當(dāng)然還有很多主辦方會自定義評價指標(biāo)。不同于實際工作中,評價指標(biāo)需要自己來選取,競賽中會直接給出評價指標(biāo)。我們需要做的是熟悉指標(biāo)的數(shù)學(xué)性質(zhì),以及指標(biāo)的區(qū)別,你是否真的理解logloss和auc的區(qū)別,同樣是二分類指標(biāo),為什么有的比賽選擇logloss,而有的選擇auc。為什么mse對異常敏感,mae會損失掉部分異常。面對F1指標(biāo),有什么好的策略來選擇閾值。這些都應(yīng)該是競賽第一步中所考慮的問題。
?
業(yè)務(wù)分析
所有背離業(yè)務(wù)的分析都是“紙老虎”,業(yè)務(wù)分析幫助我們理解賽題,同時有助于我們進行特征工程。在我看來業(yè)務(wù)分析是連接著賽題理解與特征工程的橋梁,起到承上啟下的作用。就比如我們在電商平臺對一件商品進行下單,需要完成哪些頁面跳轉(zhuǎn),每次跳轉(zhuǎn)對最后下單都會有影響,當(dāng)然對下單影響最大的就是加入購物車的那次跳轉(zhuǎn)。再舉個例子,最近的一場比賽中,我們團隊對業(yè)務(wù)進行了充足的分析,賽題目標(biāo)是預(yù)測用戶未來一期的還款情況,那么可以從用戶的還款意愿和還款能力來考慮,有哪些因素會影響最終結(jié)果。去模擬這樣一個過程,可以看作是“角色扮演”,嘗試把自己當(dāng)作一個用戶去進行一次交易,站在他人的視角上來尋找關(guān)鍵點,從而幫助理解賽題和提取特征。
作者知乎專欄:
zhuanlan.zhihu.com/DataAI
王茂霖?ID:ML67
簡介:華中科技大學(xué)研究生,DCIC-2019風(fēng)電賽Top2選手。
數(shù)據(jù)競賽行軍打仗第一步:賽題理解(摸清敵情)
作為切入一道賽題的基礎(chǔ),賽題理解是極其重要的,對于賽題的理解甚至?xí)绊懞罄m(xù)的特征工程構(gòu)建以及模型的選擇,對了賽題背后的思想以及賽題業(yè)務(wù)邏輯的清晰,也很有利于花費更少時間構(gòu)建更為有效的特征模型。所以賽題的理解相當(dāng)于一種行軍打仗中的了解敵情,在不了解敵情的情況下,貿(mào)然進攻是不可取的。賽題理解要達到的地步是什么呢,把一道賽題轉(zhuǎn)化為一種宏觀理解的解決思路。以下將從多方面對于此進行說明。
1)賽題理解究竟是理解什么:
理解賽題是不是把一道賽題的背景介紹讀一遍就OK了呢?并不是的,理解賽題其實也是從直觀上梳理問題,分析問題是否可行的方法,有多少可行度,賽題做的價值大不大,理清一道賽題要從背后的賽題背景引發(fā)的賽題任務(wù)理解其中的任務(wù)邏輯,可能對于賽題有意義的外在數(shù)據(jù)有哪些,并對于賽題數(shù)據(jù)有一個初步了解,知道現(xiàn)在和任務(wù)的相關(guān)數(shù)據(jù)有哪些,其中數(shù)據(jù)之間的關(guān)聯(lián)邏輯是什么樣的。對于不同的問題,在處理方式上的差異是很大的。
Example:
分別對兩個問題舉例:
1.DCIC-2019風(fēng)電數(shù)據(jù)修復(fù)題:
在賽題背景以及賽題任務(wù)的閱讀上我們知道,這是一道數(shù)據(jù)缺失修復(fù)的問題(但是不清楚是離散值修復(fù),還是連續(xù)值修復(fù),方法是回歸還是分類還是其它什么方法,而這些都是需要從數(shù)據(jù)里面理解數(shù)據(jù)去得到的),涉及包括但不限于刪去某個時間段的全部數(shù)據(jù)、某臺機組在某段時間的數(shù)據(jù)、某臺機組在某段時間的部分字段信息這三種類型的缺失。但其實到這里來說,問題其實依然是模糊的,比如有多少機組,機組的相對位置信息知道么,機組數(shù)據(jù)是什么樣子的,采樣周期是多少,有多少種字段類型特征(是匿名特征還是非匿名特征),其實都還是不清楚的,所以為進一步理解賽題,還需要對于數(shù)據(jù)有一個初步認(rèn)識。
在對于數(shù)據(jù)有一個基礎(chǔ)了解上,我們才能對于賽題有著更為深入的理解。知道采樣時間段,總樣本有多少,缺失有多少,才能對于任務(wù)有更為清晰的了解(應(yīng)該怎樣選取模型),也才能更為清晰的了解賽題的大概難度。
2.智能制造預(yù)測
這是一道工業(yè)數(shù)據(jù)分析題,從背景描述和問題描述可以發(fā)現(xiàn)這是一道工業(yè)流程分析題,有反應(yīng)機臺的溫度,氣體,液體流量,功率,制成時間等因子 這樣一些特征因子,并中結(jié)合數(shù)據(jù)觀察下,我們知道這是一道可以用回歸去解決的問題,可能會存在數(shù)據(jù)異常要做處理,會有不同的加工流水線,后續(xù)這個可能是需要考慮的問題等等。
?
2)有了賽題理解后能做什么:
在對于賽題有了一定的了解后,分析清楚了問題的類型性質(zhì)和對于數(shù)據(jù)理解的這一基礎(chǔ)上,是不是賽題理解就做完了呢? 并不是的,就像摸清了敵情后,我們至少就要有一些相應(yīng)的理解分析,比如這題的難點可能在哪里,關(guān)鍵點可能在哪里,估摸可以用什么方法去解決一些什么問題,哪部分?jǐn)?shù)據(jù)應(yīng)該是關(guān)鍵數(shù)據(jù)(背景的業(yè)務(wù)邏輯下,比如CTR的題,一個尋常顧客大體會有怎么樣的購買行為邏輯規(guī)律,或者風(fēng)電那種題,如果機組比較鄰近,相關(guān)一些風(fēng)速,轉(zhuǎn)速特征是否會很近似)。這時是在一個宏觀的大體下分析的,有助于摸清整個題的思路脈絡(luò),以及后續(xù)的分析方向。
?
3)賽題理解的-評價指標(biāo):
為什么要把這部分單獨拿出來呢,因為這部分會涉及后續(xù)模型預(yù)測中兩個很重要的問題:
1.?本地模型的驗證方式,很多情況下,線上驗證是有一定的時間和次數(shù)限制的,所以在比賽中構(gòu)建一個合理的本地的驗證集和驗證的評價指標(biāo)是很關(guān)鍵的步驟,能有效的節(jié)省很多時間。
2. 不同的指標(biāo)對于同樣的預(yù)測結(jié)果是具有誤差敏感的差異性的,比如AUC,logloss, MAE,RSME,或者一些特定的評價函數(shù)。是會有很大可能會影響后續(xù)一些預(yù)測的側(cè)重點。
?
4)賽題背景中可能潛在隱藏的條件:
其實賽題中有些說明是很有利益-都可以在后續(xù)答辯中以及問題思考中所體現(xiàn)出來的,比如高效性要求,比如對于數(shù)據(jù)異常的識別處理,比如工序流程的差異性,有些的意識是可以貫穿問題思考,特征,模型以及后續(xù)處理的,也有些會對于特征構(gòu)建或者選擇模型上有很大益處,反過來如果在模型預(yù)測效果不好,其實有時也要反過來思考,是不是賽題背景有沒有哪方面理解不清晰或者什么其中的問題沒考慮到。
謝嘉元?ID:謝嘉嘉
簡介:華南理工大學(xué)博士,多次數(shù)據(jù)挖掘競賽中獲得優(yōu)異成績。
大家好,我叫謝嘉嘉,目前是一名準(zhǔn)博士研究生,在我的研究生拿過一些數(shù)據(jù)挖掘的競賽top。同時,我也是“kaggle競賽寶典”的作者之一。PS:由于我最近打比賽少了,可能方法會有過時或不對的地方,歡迎大家來討論。
時間序列問題
時間序列(或稱動態(tài)數(shù)列)是指將同一統(tǒng)計指標(biāo)的數(shù)值按其發(fā)生的時間先后順序排列而成的數(shù)列。時間序列分析的主要目的是根據(jù)已有的歷史數(shù)據(jù)對未來進行預(yù)測。根據(jù)觀察時間窗口的不同,時間序列中的時間可以是年份、月份、天或其他任何時間形式。過去比賽中有很多該類型的問題,根據(jù)統(tǒng)計指標(biāo)的數(shù)值類型的不同,包括了車流量預(yù)測,地鐵人流量預(yù)測,商鋪商品銷售量預(yù)測等等。
在理想情況下,同一周期(年份、月份、天)內(nèi)統(tǒng)計指標(biāo)的數(shù)值應(yīng)該都是平穩(wěn)、相近的。但在現(xiàn)實生活中我們統(tǒng)計指標(biāo)的數(shù)值的觀測值往往都是呈現(xiàn)出不平穩(wěn)的狀態(tài)。這是因為實際業(yè)務(wù)場景中,統(tǒng)計指標(biāo)的數(shù)值會受到很多的外部影響因素的作用,最終導(dǎo)致了數(shù)據(jù)的不平穩(wěn),如下圖所示。
以將影響因素(曜日,節(jié)假日等)構(gòu)建成數(shù)值特征,進而將其變成傳統(tǒng)的機器學(xué)習(xí)方法,利用機器學(xué)習(xí)的算法對問題進行預(yù)測。或者,我們也可以利用“規(guī)則”的方法進行解決,我們可以將原始數(shù)據(jù)剔除影響因素,剔除后的數(shù)據(jù)是趨于平穩(wěn)的,我們可以對平穩(wěn)數(shù)據(jù)的預(yù)測做的很好。簡單的流程如下所示:
如果大家對這個方法有興趣的話,大家可以移步到阿里天池直播間,我之前錄制過一期,如何用規(guī)則解決時間序列問題:
https://tianchi.aliyun.com/course/video?spm=5176.12282076.0..727a2042c2WwTo&liveId=5596的課程。最后,時間序列問題有一個小tip,預(yù)測的時間段往往會包括很奇怪的數(shù)值(如之前做肉雞銷售預(yù)測問題包括了禽流感的時期),因此,我們做問題的時間可以去看看那段時間的新聞,多讀書多看報。
?
分類問題
之前我做過的分類問題包括了購買預(yù)測,公司是否會逾期等等。每個問題都在我看來都可以抽取成三個部分“人”,“物”,“人和物的交互”。那么,我們就可以多從這三個方面來進行特征提取。
最后,按照慣例宣傳一波我們的公眾號“kaggle競賽寶典”啦啦啦~里面有你想要的關(guān)于競賽的很多內(nèi)容哦~
鐘昌盛?ID:真我小兔子乖乖
簡介:Kaggle:?Elo Merchant Category Recommendation亞軍、2019-kddcup top10、2018ccf電信套餐個性化匹配模型亞軍。
從賽題理解到競賽入門基礎(chǔ)。對于我來說,如果我是接觸了一個新的賽題,那么我可能從我接觸開始都還是那個賽題的入門階段。《倚天屠龍記》里面各大武林高手修習(xí)的武功各有千秋,每個人都有自己的心法,但誰能舉起那把屠龍刀和倚天劍就要看是否能達到那把刀的內(nèi)功了。同樣,算法一樣,我們每天都在鍵盤上修習(xí)自己的代碼能力和算法能力,到了真正競賽的時候,就看自己是否有拿上那把屠龍刀的時候。正所謂各有千秋,每個人所擅長的方向都各有不同,而我們能做的,一是發(fā)揮自己的所長,二,學(xué)習(xí)別人的長處,爭取不斷學(xué)習(xí)在這次競賽或者下次競賽中,打敗他。
每個人都有每個人的想法,所以每個人參賽的理由也不一樣,可能有的人是論文看煩了,想做做比賽看看效果;有的人希望通過競賽中找到好成績,找到自己心儀的工作。不管如何,在我們對算法解決企業(yè)難題的重視的情況下,各大平臺各大企業(yè)紛紛推出了自己的企業(yè)亟待解決的難題,甚至在參賽者們給予優(yōu)秀的方案以后拋出了橄欖枝。
可是,在數(shù)據(jù)挖掘競賽中,lgb橫行的當(dāng)代,我們是否懷念和親密接觸過原來的一些基礎(chǔ)的集成包呢?
?
基于原有的基礎(chǔ),kaggle出了一題與眾不同,甚至可以說回歸原始的賽題https://www.kaggle.com/c/instant-gratification,這一題剛好可以分析數(shù)據(jù)競賽的流程和步驟。
這題并沒有像其他 featured comppetition 一樣給出大量多種類別特征和其他業(yè)務(wù)特征等等。而是每一列都是高斯分布生成。這讓我們不得不重新審視我們手上現(xiàn)有的屠龍刀 Lgb 等和倚天劍深度學(xué)習(xí)等,這些寶刀是有大炮打小鳥的功效呢?還是你的高級武器不能遇到槍的缺點。于是,人們開始提刀開始看向遇到的難題https://www.kaggle.com/abhishek/neural-network-with-embedding-layer,可是效果并沒有預(yù)期的效果,是倚天劍不好用嗎?那么試試屠龍刀吧,https://www.kaggle.com/gouzmi/512-lgb。好像也不盡人意。
那,到底是什么問題呢?這讓大家不得不重新回去審視這題的出發(fā)點:
1.?從?sklearn.make_classification 發(fā)現(xiàn)了蛛絲馬跡,所以大家開始研習(xí)原有的東西;
2. 并知道了這個函數(shù)會生成n_features,這其中不僅包括多信息特征的個數(shù),甚至還隨機加了 n_redundant 以及一些 n_repeated;
3. 我們還知道 n_clusters_per_class 這個參數(shù)還會對生成的數(shù)據(jù)有幾個 cluster;
4. 正因為生成的數(shù)據(jù)在此,我們會重新審視決策樹模型對于這一類數(shù)據(jù)的欠擬合性以及真正適用的二分類算法;
5. 基于此,參數(shù)者們在 sklearn 上尋找適合這類問題的方法。從中就發(fā)現(xiàn)?
Linear Discriminant Analysis 和 QuadraticDiscriminant Analysis 這類方法對于解決這類問題的優(yōu)越性。
在不斷的學(xué)習(xí)過程中,我們知道了每一種分類算法的區(qū)別。
在我們不斷探索的過程中,我們知道數(shù)據(jù)中有512中不同分布的類別。并需要將不同模型生成不同模型。
不僅需要剔除原有的臟數(shù)據(jù),還需要將方差大于某些閾值的列剔除。
sel?=?VarianceThreshold(threshold=1.5).fit(train2p[cols]) train3p=?sel.transform(train2p[cols]) train3=?sel.transform(train2[cols]) test3= sel.transform(test2[cols])不同的數(shù)據(jù)模型預(yù)測出數(shù)據(jù)以后,我們還要通過觀察預(yù)測出的test的數(shù)據(jù),觀察預(yù)測數(shù)據(jù)可以知道預(yù)測結(jié)果的分布,可以通過這樣分布判斷最終評測函數(shù)是否有效。
sub=?pd.read_csv('../input/sample_submission.csv') sub['target']=?preds sub.to_csv('submission.csv',index=False) importmatplotlib.pyplot?as?plt plt.hist(preds,bins=100) plt.title('FinalTest.csv?predictions') plt.show()所以說,傳統(tǒng)機器學(xué)習(xí)數(shù)據(jù)競賽流程基本情況是:
接觸賽題-類別特征,數(shù)值特征-查看分布-篩選異常值-特征工程-有用的模型oof-特征選擇-模型再次訓(xùn)練oof-預(yù)測test
最后,引用IG這題Kaggle出的一首詩,希望大家共勉,希望從詩中找到你的賽題理解:
Silly column names abound,
but the test set is a mystery.
Careful how you pick and slice,
or be left behind by history.
短暫的分享完了,希望這樣經(jīng)驗對大家需要有所幫助。
徐光福?ID:天靈靈地靈靈
簡介:多次目標(biāo)檢測比賽第一、2018之江杯VQA比賽第二。
一個沒有參加過任何大數(shù)據(jù)競賽的新人,不知道什么原因,或許是偶然看到就參加了,或許是為了證明自己,或許只是因為看到了獎金(¥—¥),以一往無前、不知道什么是炮灰的精神第一次參加了一個比賽,他(她)除了滿腔的熱情,或許對自己將要面臨的問題一無所知,那么先說說他將要面臨的第一個問題——賽題理解。
?
首先,一般來說賽題主要分為幾個大類:挖掘類、計算機視覺類、自然語言處理類、前面幾類互相結(jié)合的類別。
每個大類需要的知識基礎(chǔ)和努力的方向是不同的,我目前參加的比賽多是計算機視覺類的,因此主要以計算機視覺方面的競賽來舉例。
計算機視覺方面的比賽再向下分的話主要有幾類:
分類、目標(biāo)檢測、分割、其它(包括但不限于圖像生成、降噪等等)
其中分類又分為普通圖像分類、多標(biāo)簽分類、零樣本或少樣本、細(xì)粒度分類等等
目標(biāo)檢測又分為2D目標(biāo)檢測、3D目標(biāo)檢測、視頻目標(biāo)檢測等等
分割又分為語義分割、實例分割、全景分割,之間又有2D和3D的區(qū)別等等
說了這么多廢話,好像說的也未必準(zhǔn)確和全面,目的是什么呢?
目的只有一個,首先你要確定你參加的這個比賽屬于哪一個大類、哪一個細(xì)類,這樣你才能進行下一步的動作。
以基于虛擬仿真環(huán)境下的自動駕駛交通標(biāo)志識別
https://www.datafountain.cn/competitions/339,這個比賽為例,這是一個比較典型的2D目標(biāo)檢測任務(wù),分類確定了,你大致的努力方向也就確定了。
?
第二,比賽的分類確定了,接下來要做的是什么,當(dāng)然是上網(wǎng)查資料,根據(jù)比賽的分類確定大概的算法和模型了,還是以交通標(biāo)志是被為例,既然是一個典型的目標(biāo)檢測比賽,首先對目標(biāo)檢測的發(fā)展歷史和目前大致的情況應(yīng)該有一些了解。
完成了這一步之后,你應(yīng)該知道了一堆的名詞和方法:單階段檢測方法、雙階段檢測方法、SSD、retinanet、yolo、CenterNet、fast rcnn、fasterrcnn、cascade rcnn、dcn……單階段的檢測方法速度快、雙階段的檢測方法精度高……
有了這些基礎(chǔ)的知識,你知道了以faster rcnn為基礎(chǔ)的雙階段檢測方法和它的各種改進版本似乎很適合這個比賽,但具體哪種算法和模型更好呢?你需要查找和了解當(dāng)前屬于這個分類的SOTA(state-of-the-art),然后你知道了SNIPER、HTC、Trident net等等。
但還是對這個比賽怎么下手有些迷茫,難道要手?jǐn)]這些算法嗎?似乎是個不可能完成的任務(wù),這個時候是github(https://github.com全球最大的同性交友網(wǎng)站)出場挽救你的時候了。通過github,你發(fā)現(xiàn)了detectron、mmdetection、simpledet等目標(biāo)檢測框架。竟然還有這種逆天的存在,你頓時有一種葵花在手,天下我有的感覺,似乎獎金在向你招手,匆匆忙忙把程序調(diào)通、訓(xùn)練、測試提交,成績出來了——進入了前100名,但離前排的目標(biāo)似乎還很遙遠,你頓時懵了,一定是哪里出了問題。
?
再次回到本文的主題——賽題理解,你再次詳細(xì)讀了一遍賽題說明及評分標(biāo)準(zhǔn),發(fā)現(xiàn)一行小字“根據(jù)用戶檢測結(jié)果和目標(biāo)框之間重疊比率大于0.90,視為合格候選”,嗯,還好不是欲練神功,必先xx,只是IOU需要大約0.9才算檢測正確,omg,這個指標(biāo)使這個比賽和其它目標(biāo)檢測比賽的努力方向完全不同了,目標(biāo)的分類基本不用擔(dān)心,因為標(biāo)志類別相對來說比較明顯,基本不會分錯,所以檢測框的回歸精度成了提分的關(guān)鍵,以0.9的IOU,檢測框的坐標(biāo)和大小相差零點幾就已經(jīng)是對與錯的差別了。
目標(biāo)是提高檢測框的回歸精度,你不停的查找相關(guān)的資料和論文,發(fā)現(xiàn)大家常用的cascade rcnn似乎是專門為這個目標(biāo)設(shè)計的,于是你嘗試了cascade rcnn,果然分?jǐn)?shù)有了明顯的提升,然后你再次讀了一遍cascade rcnn的論文,發(fā)現(xiàn)4層cascade比標(biāo)準(zhǔn)的三層對于檢測框的回歸幫助更大,于是你實驗了4層的cascade rcnn,分?jǐn)?shù)又有了一定的提升。
找到本賽題和其它賽題的不同點,也就是比賽自身的特點,非常關(guān)鍵。
?
總結(jié)一下,計算機視覺方面的競賽,在賽題理解方面主要有以下三個方面:
確定你參加的這個比賽屬于哪一個類別包括大類、細(xì)類;
根據(jù)比賽的分類確定大概的算法和模型,了解當(dāng)前分類的SOTA;
找到本賽題和其它賽題的不同點,也就是比賽自身的特點,非常關(guān)鍵。
王博?ID:000wangbo
簡介:西安電子科技大學(xué)研究生,一個不斷在CV道路上探索的小白
大家好,很開心能夠受邀作為嘉賓參加這次的活動。
首先,對于一個賽題,想要搞到前排,那么你的算法和思路需要是正確的,而這個前提必須是你對賽題的理解是透徹的。通過對賽題的理解,你可以很快確定這個題目是機器學(xué)習(xí)、深度學(xué)習(xí)、自然語言處理中的哪一類。對我個人來講,我就會過濾掉自然語言處理類的比賽,選擇自己擅長的領(lǐng)域。
讓時間轉(zhuǎn)回兩年前,我的第一個參加的比賽—— [飛粵云端2017]廣東政務(wù)數(shù)據(jù)創(chuàng)新大賽—智能算法賽,我們從零單排。作為一個萌新,我當(dāng)時根本就不懂得什么機器學(xué)習(xí)、深度學(xué)習(xí),只有滿腔熱血。
回歸到這個賽題,這個賽題的任務(wù)就是使用2015年和2017年廣東省某地的衛(wèi)星圖片,識別出兩年之間新增的人工地上建筑物(不包括道路)所占的像元圖斑,評估指標(biāo)是F1 score。
?
可想而知,作為一個萌新,這樣的任務(wù)是無從下手的。不過萬幸當(dāng)時天池的比賽已經(jīng)有了釘釘群,通過釘釘群我了解到這樣的任務(wù)是計算機視覺的分割任務(wù),于是我開始瘋狂閱讀各類有關(guān)分割任務(wù)的paper以及深度學(xué)習(xí)的書籍。即便如此,當(dāng)時的我還是擼不出來分割的代碼,簡直氣哭。直到我了解到github這個利器,通過github我找到了U-net、FCN的代碼,并且能夠通過訓(xùn)練預(yù)測得到我的答案,最終也是拿到了50多名的成績。
那么我要開始diss下自己了,當(dāng)時的我其實對賽題并沒有太過深入了解,直接將在2015和2017年遙感圖像相同位置的圖片crop出來,然后將差值圖片當(dāng)作輸入。這樣的做法會丟失掉特別多的信息,正確的做法是將2015年和2017年數(shù)據(jù)合并為8通道,再經(jīng)過輸入到神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練。通過賽題理解以及數(shù)據(jù)分析,我們還能夠發(fā)現(xiàn)很多小的trick,比如下圖,如果能夠設(shè)定閾值,去掉閾值較小的連通集和空洞,分?jǐn)?shù)也會得到提升。
總之,賽題理解分析是比賽很重要的一部分,賽題的錯誤理解很有可能導(dǎo)致你離真相越來越遠。希望大家能在每一場比賽中不斷成長,最終拿到屬于自己的Top!
張浩?ID:reborn_ZH
簡介:CCF2018供應(yīng)鏈需求預(yù)測亞軍、2019搜狐內(nèi)容識別算法大賽季軍。
大家好,很高興成為特邀嘉賓,這次我主要說一下我對nlp賽題的一些理解,如果說的有什么不對的地方,歡迎大家一起來討論。
現(xiàn)如今,深度學(xué)習(xí)方法成了解決nlp任務(wù)的首選方案,比如textCNN、LSTM、GRU、BiLSTM、Attention、BERT等等。當(dāng)然,有的nlp任務(wù)也可以用機器學(xué)習(xí)方法去解決,至于哪種任務(wù)用哪種方法,需要我們根據(jù)實際情況去選擇。就目前我接觸到的nlp賽題任務(wù)有,文本分類、情感分析、關(guān)系抽取、文本匹配、閱讀理解、問答系統(tǒng)等等,比如針對文本二分類任務(wù),我們可以把CNN、LSTM、Attention進行各種排列組合來搭建網(wǎng)絡(luò),也可以用BERT直接預(yù)測,或者使用機器學(xué)習(xí)方法,訓(xùn)練出TF-IDF,然后使用lr去預(yù)測,甚至還可以使用一些騷操作,在搭建好的深度學(xué)習(xí)網(wǎng)絡(luò)上,加入各種文本特征,構(gòu)成一個多輸入的網(wǎng)絡(luò)結(jié)構(gòu)。因此,解決一個nlp的任務(wù)可能有多種方案,但是哪一個方案更合適需要我們不斷地去分析嘗試。
當(dāng)我們拿到一個nlp賽題任務(wù)時,首先我們需要對賽題任務(wù)和給出的數(shù)據(jù)進行細(xì)致地分析,了解賽題任務(wù)具體是干什么的,并且要深入地分析理解數(shù)據(jù),知道數(shù)據(jù)的含義,這樣可以有助于我們制定解決方案,同時也有利于我們進行數(shù)據(jù)預(yù)處理,比如我們分析知道數(shù)據(jù)中包含很多鏈接、#...#標(biāo)簽和@人名這些信息,那么我們就該去考慮這些信息對于我們解決該任務(wù)是否有用,如果沒用是否該刪除這些信息,又比如我們分析知道一條樣本中的主要信息在前100個詞中,那么我們進行pad_sequences操作時,是否該考慮使截斷補齊后的文本長度為100等等,這些都需要我們對數(shù)據(jù)進行深入地分析后才能知道。然后我們需要去預(yù)處理數(shù)據(jù),我個人認(rèn)為這一步和前面的數(shù)據(jù)分析關(guān)系很強,很多預(yù)處理操作都是基于對數(shù)據(jù)的分析而來,一般我們對文本預(yù)處理包含分詞、去除停用詞、訓(xùn)練詞向量、文本序列化等等,當(dāng)然,對于有的任務(wù)還包含同義詞替換、訓(xùn)練詞權(quán)重等等。再接著就是搭建模型,具體使用什么模型得根據(jù)具體任務(wù)來定。最后就是優(yōu)化模型,常用的操作有調(diào)參、更改網(wǎng)絡(luò)結(jié)構(gòu)、針對評價指標(biāo)優(yōu)化等等。
最后推薦幾個和nlp有關(guān)的學(xué)習(xí)鏈接:
https://github.com/crownpku/Awesome-Chinese-NLP?tdsourcetag=s_pcqq_aiomsg
https://github.com/FNo0/Algorithm_Interview_Notes-Chinese/tree/master/B-自然語言處理
總結(jié)
以上是生活随笔為你收集整理的数据竞赛专题 | 从赛题理解到竞赛入门基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【DP SDOI2008 BZOJ 20
- 下一篇: 如何以HTML显示Base64图像?