比賽總結(jié)
初賽終于結(jié)束了姨伟,頭一次如此投入去打比賽,這一個(gè)多月以來真是痛并快樂著鞋邑。最大的感悟是:構(gòu)造線下驗(yàn)證集并沒有什么用氓辣,做了一堆工作還不如一個(gè)leak秒裕。首先取得這個(gè)成績算是給自己一個(gè)交代了,圓了之前騰訊社交算法大賽的遺憾钞啸。
在比賽過程中主要遇到的一些問題
1. 數(shù)據(jù)預(yù)處理
對缺失值進(jìn)行處理几蜻,分割某些拼接一起的特征,比如item_property_list体斩,丟棄一些沒有用的特征(缺失值非常多梭稚,或者取值幾乎一樣的)。清洗缺失值比較多的數(shù)據(jù)絮吵。
對于數(shù)據(jù)不平衡的問題弧烤,一開始我嘗試通過上采樣下采樣解決,效果變差源武。通過查資料推測是采樣方案不好導(dǎo)致的《笸剩現(xiàn)在lgb自帶用于處理不平衡數(shù)據(jù)集的采樣技術(shù),所以方便了很多粱栖。
2. 如何構(gòu)造特征
這個(gè)部分是最耗精力的。 必須要 摸清線上測試集的分布脏毯。
還有就是闹究,比如說統(tǒng)計(jì)特征對a榜無效,在b榜中起到的作用也不大食店。a榜花了大量的時(shí)間其構(gòu)造統(tǒng)計(jì)特征以及交叉特征渣淤,線下效果還不錯赏寇,線上效果很有限。這個(gè)時(shí)候就要考慮一個(gè)問題:線上測試集的分布跟線下是否不一致价认。當(dāng)時(shí)官方直播講解的時(shí)候說到測試集是按用戶抽取的嗅定,于是我就按測試集出現(xiàn)的用戶在訓(xùn)練集采樣,用來訓(xùn)練模型用踩。第二天線上直接崩了∏耍現(xiàn)在想來,當(dāng)時(shí)那幾天有些瘋狂脐彩,頗有些一不做二不休的節(jié)奏碎乃,不過整個(gè)比賽最刺激的就是這些瘋狂的嘗試,也給我打擊最大惠奸。其實(shí)即使要做采樣梅誓,也應(yīng)該另外在剩下的數(shù)據(jù)集中抽取30%合并在一起構(gòu)成a榜的訓(xùn)練集》鹉希可惜每天只能提交一次梗掰,后來有很多想法都沒來得及驗(yàn)證。
至于轉(zhuǎn)化率嗅回,做了全局的愧怜,在a榜作用不大,后來b榜提交次數(shù)太有限了沒有實(shí)驗(yàn)妈拌。下聽說是需要按天計(jì)算才起效拥坛,這個(gè)我還沒來得及試驗(yàn)。
還有就是尘分,要觀察訓(xùn)練集有沒有什么規(guī)律猜惋。說不定你會發(fā)現(xiàn)leak。b榜開始后培愁,我將所有想到的能嘗試的辦法著摔,基本上都嘗試過了,分?jǐn)?shù)勉強(qiáng)進(jìn)復(fù)賽定续。后來有個(gè)人在群里面說了句“用戶距離下一次點(diǎn)擊的時(shí)間谍咆,賊猛”,我立馬做了實(shí)驗(yàn)私股,效果非常好摹察。這讓我開始注意時(shí)序,然后發(fā)現(xiàn)了在各種比賽經(jīng)驗(yàn)上面經(jīng)常提到的leak倡鲸。我剛發(fā)現(xiàn)數(shù)據(jù)的這個(gè)規(guī)律時(shí)并不知道這是個(gè)leak供嚎,后來發(fā)現(xiàn)這個(gè)上分有點(diǎn)猛,才明白這是leak。然后就圍繞著這個(gè)leak做了許多的特征克滴,最后兩天從幾百名開外一直沖到一百多名逼争,后面就明白了前排為什么會效果這么好了。在這上面多做點(diǎn)文章劝赔,基本上就能上榜了誓焦。
3. 如何驗(yàn)證特征的有效性
- a榜前半部分使用xgb來篩選特征,結(jié)果不是十分穩(wěn)定着帽。后期使用cv來驗(yàn)證特征的有效性杂伟,取得比較好的效果。但是考慮到有些特征需要一起使用才會有效启摄,所以最好結(jié)合兩者構(gòu)造比較好的特征驗(yàn)證方案稿壁,這個(gè)非常重要。
- 特征并不是越多越好歉备,不好的特征就相當(dāng)于引入了噪聲傅是,會使結(jié)果變差。大膽的丟掉沒用的特征蕾羊,后面再挖掘它們的作用喧笔。
3. 模型融合
模型融合的方法有很多,常規(guī)的就是stacking和blending
4. 管理好代碼
維護(hù)代碼是個(gè)成本很高的工作龟再,所以在寫的時(shí)候就應(yīng)該考慮到以后的拓展和使用
5. 交流十分重要
整個(gè)初賽的轉(zhuǎn)折點(diǎn)书闸,是在加了一個(gè)跟我一樣在復(fù)賽線徘徊的選手。在跟他交流的過程中我注意到了很多我忽略的問題利凑。
不得不說交流能力真的很重要浆劲,連跟其他人扯淡都扯不下去,那么其他的情報(bào)也就不用說了哀澈。
最后
基本就是這樣了牌借。雖然不算很好,不過取得這個(gè)成績還是出乎我意料的割按。新手做比賽確實(shí)挺累的膨报,最好有個(gè)老司機(jī)帶∈嗜伲看著自己辛辛苦苦做出來的特征線下很美好现柠,線上卻崩掉的時(shí)候,是挺崩潰的弛矛,會迷茫够吩。這個(gè)時(shí)候需要堅(jiān)持,然后好好理順邏輯分析一下原因汪诉。
復(fù)賽應(yīng)該是沒時(shí)間做了废恋,這一個(gè)月以來是頂著導(dǎo)師的壓力私底下打的比賽谈秫,接下來要好好干活扒寄。秋招也快要開始了鱼鼓,要好好準(zhǔn)備,扎實(shí)的基礎(chǔ)是一切的根本该编,不管是比賽還是找工作都是的迄本。