<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【數(shù)據(jù)競賽】盤點數(shù)據(jù)挖掘競賽中的泄露(Leak)

          共 7466字,需瀏覽 15分鐘

           ·

          2020-12-22 17:27


          作者:姬哀,江離數(shù)據(jù)挖掘俱樂部

          文是姬哀同學總結(jié)的泄露案例和識別方法,非常值得閱讀和學習文章較長建議收藏。

          0 前言

          泄露是常見的。

          如果在一場比賽的中后期,有一些隊伍的成績異常,明顯超出常規(guī)方案所能達到的成績,那么他們有可能找到了(或者無意中撞到了)泄露(除此之外還有可能是水平遠超其它隊伍、運氣遠超其它隊伍、評測錯誤、多小號單測等)。

          如果你認真做了很久仍然和前面的隊伍有很大的差距,那么別灰心,你可以嘗試著找找泄露。事實上,國內(nèi)的數(shù)據(jù)挖掘競賽中,大約有一半的賽題包含泄露,國外的比賽也常有泄露出現(xiàn)(當然,可能存在部分比賽包含無人發(fā)現(xiàn)的泄露)。

          泄露是有趣的。

          挖掘泄露是一件十分有趣的事情,有時甚至比完成原本賽題任務還要有趣。當然泄露的意義也不只存在于比賽之中。比賽的賽題通常是對真實業(yè)務問題的模擬。我常見到有數(shù)據(jù)挖掘工作者在解決真實業(yè)務問題時,設計的測試方案包含泄露,導致他們的方案的評測效果能夠輕松達到99%,但實際效果不佳。

          挖掘和利用泄露常需要較強的數(shù)據(jù)理解能力和分析能力,需要利用我們所掌握的各種信息來分析可能存在的問題,并想辦法證實和加以利用。挖掘和利用泄露的能力應該是數(shù)據(jù)挖掘者的基本技能之一,這種能力與解決真實業(yè)務場景中的一般數(shù)據(jù)挖掘問題的能力是相仿的,找泄露和找特征并沒有很大的區(qū)別,分析數(shù)據(jù)也是正常的數(shù)據(jù)挖掘流程中的必要步驟。

          本文將對數(shù)據(jù)挖掘競賽中出現(xiàn)的泄露進行總結(jié),并列舉這些泄露案例。 其中一部分是我及其他江離數(shù)據(jù)挖掘俱樂部成員參加過的、用過的泄露,也有一些是其他人提供給我們的泄露(這部分泄露已注明提供者和提供地點)。部分泄露略為復雜,需要對賽題有一定的理解才能明白。

          1 緒論

          泄露(xièlòu,也作泄漏、洩露、洩漏,也可以讀作xièlù;英文leakage,也作leak)。數(shù)據(jù)挖掘競賽的泄露:

          • 我給出的定義是「數(shù)據(jù)挖掘競賽中, 因為賽題方的失誤 ,參賽選手可以取得的意料之外的信息」 ;
          • 另一個常見的定義是「數(shù)據(jù)挖掘競賽中, 不能應用于真實業(yè)務場景的信息」;

          這兩個定義有時會有差別。我更傾向于前一個定義。因為我認為賽題方不希望參賽者掌握的信息,即便可以應用于真實業(yè)務場景,也應屬于泄露。

          反之亦然;如果在參賽者發(fā)現(xiàn)了一個疑似的泄露之后,賽題方出來說「我們本來就希望你們能夠掌握這個信息」,那么就應該不算泄露。本文以下說的泄露,包含這兩種定義下的泄露,因而可能包含一些有爭議的泄露。

          有些比賽的泄露可以大幅提升成績,也有些比賽的泄露對成績影響不大。有些比賽中排名靠前的所有隊伍都用了泄露,也有些比賽只有個別隊伍發(fā)現(xiàn)了泄露并偷偷利用。

          有些比賽的泄露非常明顯,一不小心就會撞到;也有些比賽的泄露十分隱蔽,要從一些反常之處出發(fā)仔細分析才能挖掘出。有的比賽在泄露被指出后,賽題方及時更新賽題或數(shù)據(jù),消除了泄露;也有的比賽,賽題方默許參賽者使用泄露;還有的比賽自始至終始終沒有人指出泄露,但個別或者大量隊伍在默默地使用。

          泄露的分類是一個比較復雜的問題。本文將嘗試對泄露做一些簡單的分類。

          對泄露的態(tài)度

          比賽中的泄露是賽題方不認真、不專業(yè)造成的,應由賽題方自行負責。對于參賽者來說,泄露信息只是普通的、可以利用的信息,和其它信息并沒有區(qū)別。

          參賽者沒有義務去區(qū)分哪些是普通信息、哪些信息是泄露信息,也沒有義務幫賽題方找泄露、解決泄露,或是自覺不使用泄露,更沒有義務幫賽題方隱瞞泄露。

          參賽者既可以私下里和主辦方溝通,指出泄露,也可以直接將泄露公布到比賽討論群或是論壇中,還可以不告訴任何人,自己偷偷地使用,而不需要有任何心理負擔。要求參賽者在發(fā)現(xiàn)泄露后及時公開或是主動自覺地不使用是一種道德綁架。

          在一些比賽中,賽題方在泄露被指出后,要求參賽者自覺不使用泄露,這是一個十分無理的要求。正確的做法應該是更換數(shù)據(jù),自行消除泄露。

          比賽中使用泄露不應該被認為是作弊。參賽者憑借自己的數(shù)據(jù)分析和業(yè)務理解能力找到泄露,用來提升成績無可厚非,并沒有違反比賽規(guī)則;而在很多比賽中,泄露事實上是公開的,排名靠前的隊伍也并非是靠泄露取勝的。我們不應該對在包含泄露的比賽中取得名次的隊伍有什么特別的想法。

          但要指出的是,部分參賽者憑借泄露取得了較好的成績,卻在分享他們的方案時隱瞞了這個事實,這是需要受到批評的。這種做法可能會誤導其他參賽選手,使他們錯誤地關注一些并沒有出色效果的方案。

          我在此前一些比賽中的做法也存在這類問題;我已經(jīng)做了反思,并會在今后加以注意。由于我堅決反對數(shù)據(jù)挖掘競賽的答辯,我不會對答辯中陳述自己方案時的任何隱瞞或欺騙行為加以指責;但如果是靠泄露取得成績的,在答辯后應如實地給大家講清楚。

          如何挖掘泄露

          那么如果我們懷疑某場比賽有泄露,我們?nèi)绾瓮诔鏊麄兡兀?/p>

          很遺憾,我也并不特別擅長挖掘泄露,我用過的很多泄露都是來自他人的指點,因而不能向大家傳授更多的經(jīng)驗。我只能建議大家:可以多分析歷史比賽的泄露案例,根據(jù)這些案例尋找類似的泄露;或是從一些數(shù)據(jù)的異常分布、成績的異常變化入手,順藤摸瓜地找出泄露。

          標識類泄露

          這是最低級的泄露了,通常由于主辦方未正確進行脫敏而導致。

          標識泄露

          標識中包含的泄露,通常各種標識(如用戶標識、商品標識等)中不應該包含任何有效信息,如果某些標識包含了有效信息,那么很有可能屬于「賽題方不希望參賽者掌握的信息」。(當然有些賽題中標識包含的信息是主辦方希望參賽者掌握的,這種應該不屬于泄露)

          • 案例:客戶用電異常行為分析

          這場比賽的用戶標識為一個整數(shù),這個整數(shù)和標簽強相關,并且遠強于常規(guī)特征。直接將這個整數(shù)的每一位作為特征來訓練就能得到較高的成績。

          然后復賽時賽題方對用戶標識做了MD5處理,但由于預先知道是原始標識是整數(shù),直接遍歷整數(shù)的MD5就很容易逆推出原始標識(有大神直接分享了逆推的結(jié)果);最終主辦方放棄了對這個問題解決,默許了選手使用這個泄露。

          這里脫敏的正確的做法應該是打亂之后取序號作為新的標識。

          • 案例:津南數(shù)字制造算法挑戰(zhàn)賽

          這場比賽的數(shù)據(jù)中,id相鄰的樣本標簽一般會比較接近。后來這場比賽中途更換了一份不包含id的數(shù)據(jù),去掉了這個泄露。

          • 案例:AI戰(zhàn)疫·成藥屬性預測大賽

          泄露情況暫未知。

          主辦方發(fā)文承認泄露并更新數(shù)據(jù)和清空排行榜,是正確的處理辦法;但「因部分選手將id列算做有效特征」一句將問題歸于選手的態(tài)度卻不夠端正。正確的態(tài)度應該類似這樣。

          行(Row)號泄露

          (對Row和Column的翻譯一向很混亂,這里的行指Row。)即行號中包含的泄露。有些比賽在提取數(shù)據(jù)之后未進行正確的打亂,導致行號和標簽相關。

          • 案例:OGeek算法挑戰(zhàn)賽(2018)

          這場比賽的數(shù)據(jù)結(jié)構如下:

          其中訓練集和測試集可能會有完全相同的樣本,但這并不是泄露,因為相同的樣本可能是不同用戶做出的相同查詢,也可能是相同用戶做出的兩次查詢,因而標簽并不一定相同。這也符合正常的業(yè)務場景。

          這場比賽的泄露在于,如果訓練集和測試集的相同行號的樣本恰好相同,那么它們極有可能是同一個樣本,并有相同的標簽。例如,訓練集和測試集都有樣本("花小皮", 《花小皮女裝攻略》),它們未必有相同的標簽;但如果它們分別是各自的1357行,那么它們大概率標簽相同。這個泄露的原因不明,留給大家思考和想象。

          • 案例:ACCV 2020 Webly-Supervised Fine-Grained Recognition Challenge

          這場比賽給出的提交樣例沒有打亂順序,其順序就是測試集類別的順序。只需要按照每類20張圖,對于提交樣例的文件順序進行切分,就能獲得測試集所有的真實標簽。

          這場比賽后來換了新的測試集,但是沒有公布老測試集的標簽;相當于發(fā)現(xiàn)泄露的人多10w干凈的訓練數(shù)據(jù),體現(xiàn)在排行榜上就是68直接到71。如冠軍方案解讀所述,第一名使用「不再贅述」的其他技巧直接提升將近6個點。

          • 案例:房產(chǎn)行業(yè)聊天問答匹配

          標簽中存在連續(xù)的1,因為構造數(shù)據(jù)沒有shuffle,連續(xù)的回答question的answser緊靠在一起,并且都是同一個answer。所以這不僅僅是個NLP的問題,當然這也是聊天中存在的問題,就是有人習慣一個問題,分好幾句來回答。

          元信息泄露

          一些文件的元信息,如時間戳等,也包含和答案有關的信息。

          • 案例:Two Sigma Connect: Rental Listing Inquiries

          這場比賽表格數(shù)據(jù)沒有泄露,但是給出的圖片數(shù)據(jù)的保存時間戳含有部分信息量。這場比賽進行的過程中,有人指出這個泄露,主辦方默許大家使用。

          • 案例:混凝土泵車砼活塞故障預警

          這場比賽可以根據(jù)時間戳區(qū)分正負樣本。這場比賽后來更換了數(shù)據(jù),消除了泄露。

          每條樣本都是一個設備一段時間內(nèi)的若干條傳感器采樣數(shù)據(jù),單獨存放一個csv文件,就會有很多csv文件,然后正樣本的文件創(chuàng)建時間和負樣本的是先后關系沒打散。

          • 案例:“華為?昇騰杯”AI+行人重識別(2020)

          這場比賽的數(shù)據(jù)是一些從監(jiān)控視頻中截取的圖片。對于每張待測圖片,要求參賽者識別出包含相同行人的圖片。

          經(jīng)過觀察可以發(fā)現(xiàn),**圖片的ID已經(jīng)被打亂順序,但圖片的時間戳并沒有被重置。按時間戳對圖片進行排序,可以發(fā)現(xiàn)相同的行人會出現(xiàn)在時間相近的圖片中。**可以利用這一點輕易找出包含相同行人的圖片。

          數(shù)據(jù)分布類泄露

          這種比較常見。由于賽題方?jīng)]有正確地處理數(shù)據(jù)而導致。

          穿越泄露

          大概屬于最常見的數(shù)據(jù)分布類泄露了吧。測試樣本的答案(或是一些有用的、原本得不到的信息),被泄露給了參賽者。有兩種常見的情況:

          • 某條測試樣本的標簽(或相關特征)被包含在其它測試樣本中;
          • 某條測試樣本的標簽(或相關特征)被包含在本應該無關訓練樣本中。

          穿越泄露常由不正確的時間劃分導致。 例如給出5月份的10000條樣本,要求預測6月份的10000條樣本。那么我們在預測6月1日的數(shù)據(jù)時,可以利用6月2日的測試樣本所包含的信息;又或者我們將5月份的樣本隨機分成兩份,用其中的5000條去預測另外5000條,那么我們也同樣可以在訓練集中找到泄露信息。

          有些同學在做線下測試時,由于沒有確保線下訓練數(shù)據(jù)和線下測試特征數(shù)據(jù)中不包含線下測試數(shù)據(jù)的標簽信息,引起了類似穿越泄露的問題,這通常表現(xiàn)為線下效果極好,但線上效果極差。

          對于有時間先后順序的問題,最可靠的做法就是卡時間,比如卡7月3日,給出7月3日之前的數(shù)據(jù)做訓練樣本,7月3日一天的數(shù)據(jù)做測試樣本;如果一天之內(nèi)還泄露,那么就卡小時、卡分鐘。如果這樣的數(shù)據(jù)量太少,那么就應該辦成代碼賽,選手調(diào)用賽題方提供的接口獲取數(shù)據(jù),提交這一份數(shù)據(jù)的預測結(jié)果才能獲取到下一份測試數(shù)據(jù)。

          另外還有一些影響比較小的泄露。例如很多賽題的特征可以將訓練集和測試集放到一起歸一化,這應該也屬于穿越泄露(可能有爭議)。這種泄露比較廣泛,但影響很小,這里就不舉例子了。

          • 案例:生活大實惠:O2O優(yōu)惠券預測

          這場比賽是一個二分類問題。給出3, 4, 5, 6月份的用戶領券數(shù)據(jù)及消費數(shù)據(jù),以及7月份的用戶領券數(shù)據(jù),要求參賽者預測7月份的用戶消費情況。

          這場比賽包含了典型的穿越泄露。比如一個用戶7月16日領了優(yōu)惠券,我們可以利用該用戶7月17日、18日等的數(shù)據(jù)來做預測,例如我們可以提取距離下次領券時間、后續(xù)領券次數(shù)、后續(xù)消費次數(shù)等泄露特征。

          這場比賽進行的過程中,沒有人指出這個泄露,主辦方也沒有對這個泄露做任何處理。不過排名靠前的隊伍大概都用到了這個泄露。

          • 案例:用戶預訂售賣房型概率預測

          這場比賽的數(shù)據(jù)結(jié)構如下:

          題目要求預測7天的數(shù)據(jù),所以前6天的數(shù)據(jù)在這些特征上是穿越的。我們可以訓練兩個模型來分別預測前6天和第7天。

          • 案例:“達觀杯”個性化推薦算法挑戰(zhàn)賽

          這場比賽的目標是利用一批用戶和候選資訊內(nèi)容數(shù)據(jù),預測每個用戶在第4天(記為第N+1天)會產(chǎn)生行為的資訊列表。

          賽題方另外提供了一份公開測試數(shù)據(jù)供下載測試,公開測試數(shù)據(jù)不包含計算排行榜時用到的用戶。但這份公開測試數(shù)據(jù)給我們提供了一個比較好的候選資訊,相當于本題額外給了一些其他用戶在第4天的行為。

          這場比賽中大家基本都是通過這份公開測試數(shù)據(jù)來構造候選集。

          • 案例:摩拜杯算法挑戰(zhàn)賽

          這場比賽給出用戶的騎行的起點,要求預測用戶當次騎行的停車地點。其中有部分用戶可以從給出的騎行記錄中獲得下次騎行的起點以及時間,并將這些信息作為特征。

          這場比賽中途有人指出這個泄露。賽題方過濾掉了出現(xiàn)過多次的用戶,消除了泄露。

          • 案例:TalkingData AdTracking Fraud Detection Challenge

          • 案例:IJCAI-18 阿里媽媽搜索廣告預測

          題目都是常規(guī)的點擊率預估(CTR)或是轉(zhuǎn)化率預估(CVR)類題目。這類題目要求預測用戶是否點擊或是轉(zhuǎn)化,通常會給出用戶在一段時間內(nèi)的所有記錄,于是我們就可以利用未來的數(shù)據(jù)來統(tǒng)計當次距離下次、下下次等的時間間隔、記錄數(shù)等特征。

          這類泄露一般都被默許使用。

          • 案例PAKDD2020 阿里巴巴智能運維算法大賽

          賽題方給出了20170731-20180831的硬盤SMART數(shù)據(jù)(各種狀態(tài))及這期間故障的數(shù)據(jù);然后給出了20180901-20180930的硬盤SMART數(shù)據(jù),要求我們利用這些SMART數(shù)據(jù)預測哪些硬盤在哪一天會發(fā)生故障。

          我們可以注意到硬盤在故障之后就不會有SMART數(shù)據(jù),因此我們可以直接將硬盤最后一次出現(xiàn)的日期預測為故障(當然實際上是利用這個泄露來選取候選)。

          這場比賽的賽題方在這個泄露被指出后要求選手不得使用這個泄露,并承諾會在比賽結(jié)束后仔細核查選手的代碼,但實際上可能并未做任何相關的檢查。

          • 案例:CCF 路況狀態(tài)時空預測

          這場比賽的數(shù)據(jù)結(jié)構如下:

          注意每個待測樣本都給出了近n個時間片的路況信息。比如某路段當前時間是12:00,待測時間是12:20,那么就會給出11:50~12:00內(nèi)的路況信息; 如果這個路段同時還要求預測11:50這個時間的路況,那么我們就可以直接得到答案。

          (20201118日更新)賽題方已更新測試集數(shù)據(jù)。新數(shù)據(jù)不再有「某一路段待測時間或其鄰近時間的路況出現(xiàn)在其它測試樣本中」的情況。暫未發(fā)現(xiàn)新數(shù)據(jù)中包含可以影響成績的泄露。

          采樣泄露

          這種泄露是由賽題方采樣時用到測試集的標簽信息導致的。這種不恰當?shù)牟蓸臃绞娇赡軙箻撕炐畔⒃跀?shù)據(jù)分布中留下痕跡,我們可以根據(jù)數(shù)據(jù)分布來逆推出標簽。

          • 案例:Byte Cup國際機器學習競賽

          這場比賽的樣本是(用戶, 問題),即邀請一個用戶回答一個問題,要求預測用戶是否真的會回答這個問題。一個用戶可能被多次邀請回答同一個問題,因此訓練集和測試集中有一些重復的(用戶, 問題)。

          泄露在于,用戶被多次邀請回答同一個問題時,最多只能回答一次。 因此對于一個待測樣本,如果這個用戶在訓練集中已經(jīng)回答了這個問題,那么測試集中的標簽便一定是0。

          賽題方在B榜數(shù)據(jù)中悄悄地去掉了訓練集中回答過的樣本,消除了這個泄露。

          • 案例:某比賽

          這場比賽給出了500萬條行為記錄數(shù)據(jù)和20萬件商品信息數(shù)據(jù);這20萬件商品中,有19萬多件都在行為記錄中出現(xiàn),唯有300件商品十分突兀地出現(xiàn)在了商品信息數(shù)據(jù)中。

          那么這300件商品來自哪里呢?不難猜出,它們來自測試集的答案。因此我們預測的時候,將這300件作為候選,就能得到較高的分數(shù)。

          這場比賽復賽中由于賽題的改變,這個泄露消失了。

          • 案例:某比賽

          這場比賽的正樣本的占比很小,因此賽題方對測試集的負樣本進行了1/10采樣,正樣本沒有采樣。可是經(jīng)過對數(shù)據(jù)的分析,我們發(fā)現(xiàn),正樣本都是成類目出現(xiàn)的(也就是說,如果某一個樣本是正樣本,那么它的同類目樣本也很有可能是正樣本)。

          于是我們只要找出出現(xiàn)較多的類目,并把這一類目的樣本預測為正樣本就可以了(因為出現(xiàn)較少的類目很有可能是被采樣了,因而是負樣本)。

          不確定這場比賽是否包含這個泄露,更不確定是否有人用到。

          • 案例:阿里巴巴高德地圖AMAP-TECH算法大賽

          這場比賽中,每個樣本給出了幾張車載視頻圖片,要求我們判斷圖中的路況是暢通還是擁堵;此外每張圖片還給出了時間,原意是希望參賽者們利用時間信息,例如高峰時間的路況更容易出現(xiàn)擁堵。

          但很快有同學通過分析數(shù)據(jù)發(fā)現(xiàn),大部分樣本中,不同圖片之間的時間間隔都是5秒;然而有部分樣本的圖片間時間間隔超過5秒,而這部分樣本絕大部分都是擁堵。 這是一個很強的特征,比圖片特征要強得多。

          這個泄露產(chǎn)生的原因,推測是人工打標簽的時候,擁堵的時候多確認了幾張圖片,造成給出的圖片被向后移動,導致時間間隔變大。

          這場比賽的賽題方在這一泄露被指出之后,在復賽中沒有給出圖片的時間信息,消除了這一泄露。

          直接給出的泄露

          還有一些題目,數(shù)據(jù)中直接給出了本不該給出的信息,有時甚至直接給出了標簽。

          • 案例:安泰杯跨境電商智能算法大賽

          安泰杯的主辦方十分虛心,而且在很多方面都做得非常專業(yè),超過大部分其它的天池比賽。但這場比賽有兩個較為明顯泄露。

          這場比賽給了一批訓練用戶,給出他們在一段時間內(nèi)的交互商品序列;又給了一批測試用戶,給出他們在一段時間內(nèi)的交互商品序列,要求預測這些用戶接下來一次購買的商品。

          我們可以以用戶前面交互過的商品為候選,以是否是接下來購買的商品作為標簽,訓練一個二分類模型。 然后我們可以注意到,數(shù)據(jù)中的buy_flag不是這次記錄是否購買,而是當天是否購買了這件商品!而接下來一次的購買日期,大概率就是給出的序列中的最后一天,那么我們可以直接從候選商品中排除掉最后一天出現(xiàn)且buy_flag為0的商品。

          另一個泄露見下圖:

          給出這樣的特點描述確實難能可貴。但是我們注意看第3條。很多測試用戶瀏覽過的商品,原本可能作為候選被預測,但由于沒有出現(xiàn)在訓練集中,而可以被我們直接排除。

          這兩個泄露都不是正常的業(yè)務中能取得的,而且都有明顯的提升。在比賽過程中,沒有人向主辦方指出這些泄露。排名靠前的隊伍可能用了它們。

          往期精彩回顧





          獲取本站知識星球優(yōu)惠券,復制鏈接直接打開:

          https://t.zsxq.com/qFiUFMV

          本站qq群704220115。

          加入微信群請掃碼:

          瀏覽 35
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人免费乱码大片a毛片蜜芽 | 五月香人人| 国产精品美女毛片真酒店 | 人人操操人人 | 九九热91 |