這兩年:我的數(shù)據(jù)競(jìng)賽之路
大家好,我是魚(yú)遇雨欲語(yǔ)與余,本次我將帶來(lái)不一樣的分享,這將是我的個(gè)人競(jìng)賽歷程。將從三個(gè)部分展開(kāi)分享,主要競(jìng)賽經(jīng)歷、關(guān)于我的競(jìng)賽和未來(lái)競(jìng)賽的我。一位競(jìng)賽小白是如何一路打怪升級(jí),然后取得不錯(cuò)成績(jī)的,到后來(lái)一年獲得“兩冠四亞一季”的佳績(jī)。這里我嘗試記錄這兩年主要做過(guò)的事情和其中的感想,希望對(duì)大家有所啟發(fā)。
首先感謝在這兩年競(jìng)賽道路上幫助過(guò)我的人,@所有人
回想過(guò)去的兩年,是折騰的兩年,也是自我感悟和提升的兩年。
主要競(jìng)賽經(jīng)歷
2018,[印象鹽城]數(shù)創(chuàng)未來(lái)大數(shù)據(jù)競(jìng)賽 - 乘用車零售量預(yù)測(cè),Rank53
2018,IJCAI-18 阿里媽媽搜索廣告轉(zhuǎn)化預(yù)測(cè),Rank29
2018,騰訊廣告算法大賽,Rank11
2018,JDATA-如期而至-用戶行為預(yù)測(cè),Rank9
2018,科大訊飛營(yíng)銷算法大賽,冠軍
2019,消費(fèi)者人群畫(huà)像—信用智能評(píng)分,Rank5
2019,TIANCHI-OGeek算法挑戰(zhàn)賽,亞軍
2019,TIANCHI-全球城市AI挑戰(zhàn)賽,季軍
2019,JDATA-用戶對(duì)品類下店鋪的購(gòu)買預(yù)測(cè),亞軍
2019,騰訊廣告算法大賽,冠軍
2019,KDD Cup: Context-Aware Multi-Modal Transportation Recommendation,亞軍
2019,第四屆魔鏡杯大賽數(shù)據(jù)應(yīng)用大賽,亞軍
初次接觸競(jìng)賽
這是我第一次參加的數(shù)據(jù)競(jìng)賽,不得不說(shuō),印象深刻,不斷的顛覆我的認(rèn)知。
在經(jīng)歷過(guò)機(jī)器學(xué)習(xí)的理論學(xué)習(xí),然后到Kaggle入門賽Titanic: Machine Learning from Disaster的學(xué)習(xí),給我最初的觀念是比賽需要各種各樣的數(shù)據(jù)分析和模型的堆疊。帶著這樣一種觀念,我選擇在天池進(jìn)行第一場(chǎng)比賽,“鹽城-乘用車零售量預(yù)測(cè)”。官網(wǎng)論壇中并沒(méi)有太多的分享,所有只能參照Kaggle那套,便開(kāi)始了我的數(shù)據(jù)分析之路。
(如果參賽時(shí)能看到這樣一篇分析文章,可能我能進(jìn)top20也說(shuō)不定呢)
數(shù)據(jù)分析
當(dāng)時(shí)的數(shù)據(jù)分析還比較局限,因?yàn)椴⒉恢缹?duì)于時(shí)間序列相關(guān)問(wèn)題的著重點(diǎn)和解決方案。并且收到大量異常值的影響,導(dǎo)致重心放在了異常值的處理。對(duì)于賽題的目標(biāo)是預(yù)測(cè)每一車型的銷量,再次出現(xiàn)了糾結(jié)的問(wèn)題,同一車型的變速器檔位、變速器形式、排量可能不同。我當(dāng)時(shí)的做法就是用最多的替換。然后還分析了每種車型每月的銷量情況,每月的總銷量情況。
每月銷量分析
規(guī)則初探
數(shù)據(jù)的分析并未給我?guī)?lái)太多的提升,主要還是不明白分析的方向。比如時(shí)間序列問(wèn)題,應(yīng)該考慮趨勢(shì)性、周期性、循環(huán)性。接下來(lái)我就想到了一個(gè)點(diǎn)子,我就直接用上一個(gè)月*120%,直接到了前排。然后之后再也沒(méi)有超過(guò)那個(gè)分?jǐn)?shù),因?yàn)楹竺娑际悄P团艹鰜?lái)的分?jǐn)?shù)。
模型選擇
接下來(lái)的目標(biāo)就是超過(guò)規(guī)則,只能搞模型了?梢钥闯鰜(lái),我在特征工程部分做的是非常少的,所作的預(yù)處理也是給數(shù)據(jù)增加噪音和影響準(zhǔn)確性的,幫上的只是幫倒忙。模型最終使用的是XGBoost,下面貼出我的遠(yuǎn)古代碼:
import xgboost as xgb
xgboost_model = xgb.XGBRegressor(colsample_bytree=0.4603, gamma=0.0468,
learning_rate=0.05, max_depth=3,
min_child_weight=1.7817, n_estimators=2200,
reg_alpha=0.4640, reg_lambda=0.8571,
subsample=0.5213, silent=1,
random_state =7, nthread = -1)
xc = ['sale_quantity']+['brand_id']+['sale_month']+['sale_year']
xtrain = merge_train[merge_train['diff_quantity'].notnull()]
xtr = xtrain[:][xc]
xtest = merge_train[merge_train['diff_quantity'].isnull()]
xte = xtest[:][xc]
y_diff_train = merge_train['diff_quantity'][merge_train['diff_quantity'].notnull()]
y_grow_train = merge_train['growth_rate'][merge_train['diff_quantity'].notnull()]
xgboost_model.fit(xtr, y_diff_train)
diff = xgboost_model.predict(xte)
xgboost_model.fit(xtr, y_grow_train)
grow = xgboost_model.predict(xte)
xtest['diff_quantity'] = diff
xtest['growth_rate'] = grow
for idx in all_class_id:
merge_train['diff_quantity'].loc[(merge_train['class_id']==idx)&(merge_train['diff_quantity'].isnull())]=xtest['diff_quantity'][xtest['class_id']==idx]
merge_train['growth_rate'].loc[(merge_train['class_id']==idx)&(merge_train['growth_rate'].isnull())]=xtest['growth_rate'][xtest['class_id']==idx]
不要問(wèn)我模型參數(shù)為何能夠這么精準(zhǔn),因?yàn)槿荎aggle上粘貼復(fù)制的,再次感謝Kaggle幫我入門比賽。
能夠再次證明我的代碼是粘貼復(fù)制Kaggle的圖片
乘用車銷量預(yù)測(cè)方案代碼
https://github.com/bettenW/Automobile-sale-predict
第一次答辯現(xiàn)場(chǎng)
我的第一次去答辯現(xiàn)場(chǎng),是在半年后,在我競(jìng)賽的第一個(gè)半年,經(jīng)歷了6場(chǎng)比賽。2018年騰訊廣告算法大賽,我的隊(duì)友是鵬哥和宇翔,也算是我半路上車,因?yàn)槭?ldquo;IJCAI18-阿里媽媽”結(jié)束后才加入隊(duì)伍。這次比賽也算是投入非常大的,首先就是復(fù)賽前團(tuán)隊(duì)租了個(gè)服務(wù)器,價(jià)值兩千,然后是最后一周都在宿舍度過(guò),過(guò)著黑白顛倒,沒(méi)有固定休息時(shí)間的生活,隨時(shí)與隊(duì)友保持聯(lián)系。
去年騰訊廣告算法大賽的方案分享文章
強(qiáng)大隊(duì)友
這次比賽使我見(jiàn)識(shí)到了鵬哥的強(qiáng)大,在進(jìn)行IJCAI18的時(shí)候,鵬哥總是會(huì)找我討論問(wèn)題,然后到了騰訊賽完全被帶的節(jié)奏。這也是我認(rèn)識(shí)的第一位大腿,在之后的故事,鵬哥還會(huì)頻頻出現(xiàn)。
言歸正傳,這次比賽我又是怎么做的呢,已經(jīng)可以構(gòu)造出很多有效的特征,并且考慮多個(gè)維度下。我們還做了一件事情,就是進(jìn)行啟發(fā)式的特征選擇。來(lái)看看當(dāng)初的代碼如何:
def evalsLoss(cols):
print('Runing...')
s = time.time()
clf.fit(train_part_x[:,cols],train_part_y)
ypre = clf.predict_proba(evals_x[:,cols])[:,1]
print(time.time()-s,"s")
return roc_auc_score(evals_y[0].values,ypre)
print('開(kāi)始進(jìn)行特征選擇計(jì)算...')
all_num = int(len(se)/100)*100
print('共有',all_num,'個(gè)待計(jì)算特征')
loss = []
break_num = 0
for i in range(100,all_num,100):
loss.append(evalsLoss(col[:i]))
if loss[-1]>baseloss:
best_num = i
baseloss = loss[-1]
break_num+=1
print('前',i,'個(gè)特征的得分為',loss[-1],'而全量得分',baseloss)
print('\n')
if break_num==2:
break
print('篩選出來(lái)zui.佳特征個(gè)數(shù)為',best_num,'這下子訓(xùn)練速度終于可以大大提升了')
最后時(shí)刻
參加本次比賽的人都知道,在比賽的最后發(fā)生了兩件極具影響排行榜的事件。
第一件,郭大開(kāi)源nffm代碼。在這之前,我們以為L(zhǎng)ightGBM能夠穩(wěn)定Top10,沒(méi)想到代碼一出,立即變天。無(wú)奈之下也只好用我們的特征去跑nffm模型,中途出現(xiàn)bug,還向郭大請(qǐng)教,真的是有問(wèn)必答。
第二件,A榜數(shù)據(jù)可用。此消息在群里一透露,立馬炸鍋。到底要不要重新跑代碼,如果跑的話,就只能賭上最后這次結(jié)果了。
然后,又出現(xiàn)了意外,服務(wù)器機(jī)房斷電,跑了半天的代碼,又得重新跑。最后時(shí)刻真的是又緊張又刺激。
最后雖然以Rank11結(jié)束比賽,但也收到了主辦方的邀請(qǐng),前去深圳觀摩選手答辯。
2018騰訊廣告算法大賽Rank11方案代碼
https://github.com/liupengsay/2018-Tencent-social-advertising-algorithm-contest
第一次答辯
就在從深圳回來(lái)不久,我也進(jìn)行了第一次比賽答辯,2018“JDATA-如期而至-用戶行為預(yù)測(cè)”。
五人大團(tuán)隊(duì)
本次隊(duì)伍成員達(dá)到五人(張浪浪、王超、劉好、趙超杰),是由兩個(gè)團(tuán)隊(duì)B榜前的結(jié)合,更巧的是有一個(gè)跟我是校友,同時(shí)我們五個(gè)人都剛開(kāi)始打比賽不久,而且都參加了“IJCAI18-阿里媽媽”的比賽。答辯前,他們到了北京,為盡地主之誼,我請(qǐng)他們?cè)趪?guó)貿(mào)吃了頓(真的很貴,量又很少)。
在B榜結(jié)束后,我們團(tuán)隊(duì)是Rank11,意外的是,前排兩個(gè)小號(hào),致使我們到了Rank9,獲得前去答辯的機(jī)會(huì)。
比賽方案
那么這次比賽,我又學(xué)到了什么呢,主要的是數(shù)據(jù)分析和滑窗提取特征。下面是根據(jù)預(yù)測(cè)目標(biāo)而考慮的分析方向。
用戶購(gòu)買間隔
有收藏行為的用戶購(gòu)買間隔天數(shù)
有瀏覽行為的用戶購(gòu)買間隔天數(shù)(分為促銷和非促銷)
每月流量情況
根據(jù)這些分析,能夠做出相應(yīng)的數(shù)據(jù)預(yù)處理。
對(duì)訂單表和行為表去重,減少了噪聲
缺失值填充:離散特征眾數(shù)填充,連續(xù)特征均值填充
刪除缺失值較多的特征,例如sex特征,近一個(gè)千分點(diǎn)的提升
看下邊的圖表,可以看出618,雙十一和雙十二的流量出現(xiàn)異常,因此我們做s2時(shí)去掉了一些節(jié)日
滑窗提取特征是時(shí)間序列問(wèn)題必要的特征提取方式,主要來(lái)反映歷史情況,或長(zhǎng)或短。
不同于其它比賽,本次比賽有兩個(gè)評(píng)價(jià)指標(biāo)。第一個(gè),預(yù)測(cè)下個(gè)月可能購(gòu)買的用戶;第二個(gè),相應(yīng)用戶第一次購(gòu)買的時(shí)間。
建模上,我們將兩個(gè)評(píng)價(jià)指標(biāo)分開(kāi)來(lái)做,最后將其進(jìn)行融合。
初識(shí)李老師
還有就是遇到了招我進(jìn)京東的李老師,有幸能在賽前與李老師進(jìn)行簡(jiǎn)單的交流和指導(dǎo),這也是促使我畢業(yè)來(lái)的京東的原因。
第一次冠軍
再次合體,完美配合
這是我與鵬哥第二次合作的比賽,初識(shí)隊(duì)友阿水,2018“科大訊飛營(yíng)銷算法大賽”?梢哉f(shuō)是比賽前就跟鵬哥商量好的,也是從比賽初期進(jìn)入到比賽,一直肝到最后一天。雖說(shuō)拿到了冠軍,可還是收到了威脅,那就是林有夕和小兔子乖乖團(tuán)隊(duì),他們團(tuán)隊(duì)初賽和復(fù)賽A榜都是第一,只是運(yùn)氣不佳,B榜均被我們反超。
首次分享
本次比賽,我也進(jìn)行了第一次baseline的分享,雖然分?jǐn)?shù)一般,但可以幫助快速進(jìn)入到比賽。同時(shí),結(jié)合之前相關(guān)比賽的方法,能得到不錯(cuò)的分?jǐn)?shù)。
文章中也推薦了相關(guān)的比賽,因?yàn)?ldquo;歷史總是那么相似的”,所以結(jié)合歷史比賽,總會(huì)帶來(lái)一些比賽上的幫助。所以多總結(jié)相關(guān)比賽,以備以后更好的應(yīng)對(duì)問(wèn)題。
相約合肥
合肥之約記憶尤新,科大訊飛安排的也很充實(shí),答辯、1024開(kāi)發(fā)者節(jié)、音樂(lè)節(jié)。趁這次機(jī)會(huì)與鵬哥、林有夕、小兔子乖乖一起小酌一杯,比賽答辯不只是答辯,更多的是交流學(xué)習(xí),朋友聚會(huì)。
比賽方案
經(jīng)過(guò)之前比賽的積累和總結(jié),本次比賽顯得更加得心應(yīng)手。本次比賽,除了傳統(tǒng)的CTR特征外,我們團(tuán)隊(duì)還構(gòu)造stacking特征,來(lái)獲取更多信息,同時(shí)節(jié)省內(nèi)存的消耗。一起來(lái)看看去年的代碼:
交叉統(tǒng)計(jì)特征太多內(nèi)存不夠怎么辦?
如何才能在減少特征維度的同時(shí)最大限度地保留所有特征的區(qū)分度信息?
# 通過(guò)stacking獲取新的特征,減少內(nèi)存的同時(shí),又能保留完整特征的信息
def getStackFeature(df_,seed_):
skf = StratifiedKFold(n_splits=5,random_state=seed_,shuffle=True)
train = df_.loc[train_index]
test = df_.loc[test_index]
train_user = pd.Series()
test_user = pd.Series(0,index=list(range(test_x.shape[0])))
for train_part_index,evals_index in skf.split(train,train_y):
EVAL_RESULT = {}
train_part = lgb.Dataset(train.loc[train_part_index],label=train_y.loc[train_part_index])
evals = lgb.Dataset(train.loc[evals_index],label=train_y.loc[evals_index])
bst = lgb.train(params_initial,train_part,
num_boost_round=NBR, valid_sets=[train_part,evals],
valid_names=['train','evals'],early_stopping_rounds=ESR,
evals_result=EVAL_RESULT, verbose_eval=VBE)
train_user = train_user.append(pd.Series(bst.predict(train.loc[evals_index]),index=evals_index))
test_user = test_user+pd.Series(bst.predict(test))
return train_user,test_user
我們團(tuán)隊(duì)在建模過(guò)程中充分考慮了用戶標(biāo)簽與其他信息的交互作用,并采用Stacking抽取特征信息的方式減少維度與內(nèi)存的使用,對(duì)廣告與用戶交互信息的充分挖掘,也使得模型在AB榜測(cè)試相對(duì)穩(wěn)定。
同時(shí),用戶標(biāo)簽集中含有很多的人工填充標(biāo)簽,對(duì)數(shù)據(jù)帶來(lái)了很大的噪音,簡(jiǎn)單的filter特征選擇并不能很好的過(guò)濾掉。這里呢,我們使用的是特征重要性對(duì)其進(jìn)行篩選TopK個(gè)標(biāo)簽,保證標(biāo)簽的質(zhì)量。
山有龍魚(yú)首站
“三人合體,山有龍魚(yú)首秀”
在“TIANCHI-全球城市AI挑戰(zhàn)賽”中我與好友杰少、林有夕組隊(duì)參賽,并起名“山有龍魚(yú)”。十分榮幸能與天池?cái)?shù)據(jù)科學(xué)家的杰少,以及競(jìng)賽圈的網(wǎng)紅林有夕一同比賽。杰少的競(jìng)賽經(jīng)驗(yàn),林有夕的各種思路想法(騷操作),以及我的...emmm...,好吧,我就是個(gè)劃水的,獲得A榜第一,C榜第二的成績(jī)。雖然發(fā)生了一些意外,但也不影響我們的默契合作以及超強(qiáng)實(shí)力的發(fā)揮。
緊張時(shí)刻
不得不說(shuō),在B榜代碼提交的時(shí)候,當(dāng)晚我還在火車上,在無(wú)法給筆記本充電的情況下,最后一刻完成代碼提交,或許差幾分鐘,我們團(tuán)隊(duì)就無(wú)法提交。
不過(guò)還是記得,杰少就提交一次,直接前排的場(chǎng)景。還是非常遺憾沒(méi)能去決賽現(xiàn)場(chǎng),錯(cuò)失見(jiàn)到杰少的機(jī)會(huì),不能與林有夕再次相聚。
比賽方案
本次比賽是時(shí)間序列問(wèn)題,我們團(tuán)隊(duì)使用了三種方案,分別是傳統(tǒng)方案、平滑趨勢(shì)和時(shí)序stacking。最后將這三個(gè)方案預(yù)測(cè)的結(jié)果根據(jù)線下驗(yàn)證集的分?jǐn)?shù)進(jìn)行加權(quán)融合。
平滑趨勢(shì):我們?cè)O(shè)計(jì)了一種處理奇異值的方法,也就是第二個(gè)方案平滑趨勢(shì)。方案思想是,對(duì)于周內(nèi)分布大體相同的日期,如果相同時(shí)刻流量出現(xiàn)異常波動(dòng),那么我們將其定義為奇異值。然后選取與測(cè)試集有強(qiáng)相關(guān)性的日期作為基準(zhǔn),比如C榜測(cè)試集為31號(hào),那么選擇24號(hào)作為基準(zhǔn),對(duì)比24號(hào)與其它日期的相對(duì)應(yīng)時(shí)刻的站點(diǎn)流量情況。這里我們構(gòu)造其它日期對(duì)應(yīng)24號(hào)時(shí)刻流量的趨勢(shì)比,根據(jù)這個(gè)趨勢(shì)比去修改對(duì)應(yīng)時(shí)刻中每個(gè)10分鐘的流量。因?yàn)樾r(shí)的流量更具穩(wěn)定,所以根據(jù)小時(shí)確定趨勢(shì)比,再修改小時(shí)內(nèi)10分鐘的流量。對(duì)流量進(jìn)行修改后再進(jìn)行傳統(tǒng)方案的建模,這里我們會(huì)保留周一和周二的數(shù)據(jù)。
時(shí)序stacking:因?yàn)闅v史數(shù)據(jù)中存在一些未知的奇異值,例如某些大型活動(dòng)會(huì)導(dǎo)致某些站點(diǎn)在某些時(shí)刻流量增加,這些數(shù)據(jù)的影響很大,為了減小此類數(shù)據(jù)的影響,我們用了時(shí)序stacking的方式進(jìn)行解決,如果模型預(yù)測(cè)結(jié)果和我們的真實(shí)結(jié)果相差較大,那么此類數(shù)據(jù)就是異常的,方案的可視化如下,通過(guò)下面的操作,我們線下和線上都能得到穩(wěn)定的提升。
TIANCHI-全球城市計(jì)算挑戰(zhàn)賽-完整方案
https://zhuanlan.zhihu.com/p/62257700
第二次冠軍
圓滿的經(jīng)歷
這應(yīng)該是我所獲得的最具分量的獎(jiǎng)項(xiàng),2019“騰訊廣告算法大賽”,從報(bào)名的萬(wàn)人中奪得冠軍,其中進(jìn)入復(fù)賽的TOP 20隊(duì)伍就涵蓋了清華大學(xué)、華南理工大學(xué)、浙江大學(xué)、東南大學(xué)、北京大學(xué)、西安電子科技大學(xué)、北京航空航天大學(xué)、廈門大學(xué)等16所頂尖院校的37名學(xué)生,此外還有14名來(lái)自海內(nèi)外工業(yè)界的精英選手。這是我以前不敢想的事情,還記得剛剛踏入比賽圈,懷著進(jìn)復(fù)賽就好的心態(tài),一路走到現(xiàn)在。
感謝隊(duì)友
這也是我與郭大、劉育源第一次組隊(duì)。賽前就與郭大商量一起組隊(duì),郭大是非常有實(shí)力的,可是運(yùn)氣不佳沒(méi)能奪得過(guò)冠軍。記得跟林有夕聊的時(shí)候,我說(shuō)“我運(yùn)氣好,或許有我在,助郭大奪得冠軍也說(shuō)不定呢”。再然后劉育源的加入,讓奪冠之路更近一步。雖說(shuō)單模就能奪冠,但是隊(duì)伍少了誰(shuí),都是很難奪得冠軍的,感謝給力隊(duì)友,感謝我們實(shí)力的配合。
比賽方案
更為細(xì)致的特征工程、貼近業(yè)務(wù)的統(tǒng)計(jì)策略、具備差異性的模型,促成我們?nèi)〉霉谲。本次嘗試了新的方法"遠(yuǎn)程監(jiān)督",還有就是優(yōu)化了訓(xùn)練目標(biāo),保證最終結(jié)果符合單調(diào)性,不需要人為調(diào)整。
2019騰訊廣告算法大賽方案分享
https://zhuanlan.zhihu.com/p/73062485
分享之路
我的分享是從2017年10月14號(hào)開(kāi)始,累計(jì)文章48篇,內(nèi)容并不多,但也能看到分享內(nèi)容發(fā)生的變化。最近的一年半主要是比賽方案分享為主,不斷的自我總結(jié)。當(dāng)然,這也是我與更多選手交流的一個(gè)平臺(tái),是一個(gè)相互學(xué)習(xí)提升的機(jī)會(huì)。
記得在最初比賽的時(shí)候,能夠找到的競(jìng)賽分享是比較少的,更別說(shuō)baseline和方案代碼。一路走來(lái)磕磕絆絆,思維局限,有過(guò)這些經(jīng)歷,才讓我有了這樣的想法,做競(jìng)賽分享,與選手在文章中進(jìn)行交流,同時(shí)也將整理比賽代碼,進(jìn)行開(kāi)源。
分享之路上并不覺(jué)得孤獨(dú),因?yàn)榻芨缫苍诜窒,我也總能從他的文章中學(xué)習(xí)到不一樣的思路。借用朋友的一句話,“開(kāi)放,歸零,無(wú)極限”。
學(xué)習(xí)之路
這里我想與大家分享關(guān)于我的學(xué)習(xí)之路,這是很多人都問(wèn)過(guò)我的一件事,“如何從普通三本到武大研究生,再到各種競(jìng)賽Top,收到滿意offer”?梢哉f(shuō)我的前半生是一個(gè)三本學(xué)院的普通人,后半生通過(guò)知識(shí)改變命運(yùn),然后一路逆襲。
我這原因歸結(jié)于三點(diǎn),考研、競(jìng)賽、分享,然后就是制定明確的計(jì)劃,去逐個(gè)完成。當(dāng)然這里我注重分享我是如何從零基礎(chǔ)入門機(jī)器學(xué)習(xí),然后取得數(shù)據(jù)競(jìng)賽冠軍,收獲大廠算法崗offer。
基礎(chǔ)必備
基礎(chǔ)必備就是必須要掌握的內(nèi)容,分為機(jī)器學(xué)習(xí)理論和編程基礎(chǔ)。
刷題的話,我是劍指offer和leetcode一起刷的,沒(méi)必要刷太難的題,中等為主。大多數(shù)互聯(lián)網(wǎng)公司很少出太難的題,畢竟能把中等難度的題都做會(huì)的人也不多。
理論基礎(chǔ)就是以看書(shū)為主,我在基礎(chǔ)競(jìng)賽前看了一遍,當(dāng)時(shí)也沒(méi)糾結(jié)太深入,主要是熟悉理論體系,了解基本的內(nèi)容,實(shí)在看不懂的也就跳過(guò)了。然后春招前又看了一遍,這次主要是結(jié)合熱點(diǎn)問(wèn)題去看的。
項(xiàng)目經(jīng)歷
這里可以是實(shí)驗(yàn)室的項(xiàng)目,也可以競(jìng)賽經(jīng)歷。我主要以競(jìng)賽為主。當(dāng)然也有很多人問(wèn)我,論文和競(jìng)賽該如何選擇,我給出的答案如下:
(1)如果實(shí)驗(yàn)室方向很不錯(cuò),而且科研氛圍濃厚,以發(fā)論文為主,可以利用閑暇時(shí)間也可參加一兩個(gè)比賽。
(2)很多跨專業(yè),實(shí)驗(yàn)室放羊,方向不算太主流,我的建議可以打比賽為主,以此作為項(xiàng)目經(jīng)歷
既然是以找工作為主,競(jìng)賽作為項(xiàng)目經(jīng)歷,不必太糾結(jié)名次,主要是全身心投入到比賽,嘗試不同的思路方案,認(rèn)真總結(jié)前排的方法思路,找出與之差別之處,自身不足之處。大家也可以看到出來(lái)在我的項(xiàng)目經(jīng)歷中,三個(gè)比賽的名次也沒(méi)有獲得Top5,名次是一方面,最主要還是面試時(shí)的表現(xiàn),對(duì)你項(xiàng)目的理解程度。
學(xué)習(xí)方法
接下來(lái)說(shuō)說(shuō)我是如何學(xué)習(xí)的,這里以統(tǒng)計(jì)學(xué)習(xí)方法為主,那么對(duì)于每個(gè)算法或模型,需要做幾件事情:
(1)首先看一遍書(shū)上理論推導(dǎo),這時(shí)會(huì)出現(xiàn)很多不理解的地方,可以上網(wǎng)搜一下。
(2)然后蓋上書(shū),在紙上推導(dǎo)一遍,忘了接著看書(shū),然后接著蓋上書(shū)重來(lái)一遍,我在春招的時(shí)候,每天到圖書(shū)館第一件事就是不看書(shū)先手推一邊模型。
(3)接下來(lái)就要了解算法的優(yōu)缺點(diǎn),以GBDT和XGBoost為主,他們倆的優(yōu)缺點(diǎn),有什么差異, xgboost為什么快?xgboost如何支持并行?等等。
未來(lái)競(jìng)賽的我
繼續(xù)競(jìng)賽
兩年的時(shí)間20場(chǎng)比賽,接下來(lái)主要選擇合適的比賽參加,就比如最近想了解推薦方面的知識(shí),我就參加了CIKM和安泰杯,在比賽的同時(shí),學(xué)習(xí)學(xué)習(xí)如何做召回,如何做排序,看看YouTube深度學(xué)習(xí)推薦系統(tǒng)。借助比賽來(lái)學(xué)習(xí)也是提升自己的一種方式,接下在還會(huì)繼續(xù)活躍在競(jìng)賽圈,歡迎來(lái)撩。
繼續(xù)分享
“將分享繼續(xù)到底,將開(kāi)源傳承下去”
之后還會(huì)在知乎進(jìn)行分享,這也作為我的寫(xiě)字的地方,進(jìn)行學(xué)習(xí)總結(jié)。因?yàn)槲野l(fā)現(xiàn),分享知識(shí),不僅會(huì)給自身帶來(lái)了提升,同時(shí)也幫助了更多的人。這也能讓更多人看到你,了解你,提升自身影響力,這些對(duì)自己的求職和未來(lái)工作都有很大的幫助。
梳理與擴(kuò)展
兩年來(lái)接觸太多的領(lǐng)域知識(shí),需要對(duì)知識(shí)進(jìn)行沉淀總結(jié)。所以接下來(lái)的日子,我會(huì)對(duì)之前所學(xué)進(jìn)行梳理總結(jié),當(dāng)然這些內(nèi)容我也會(huì)在知乎進(jìn)行分享。目前所學(xué)知識(shí)還有一些淺顯,需要深入學(xué)習(xí),并且進(jìn)行知識(shí)的擴(kuò)展,要學(xué)的東西還很多。
最后用一句話來(lái)勉勵(lì)你我,“路漫漫其修遠(yuǎn)兮,吾將上下而求索”。
寫(xiě)在最后
競(jìng)賽社區(qū)
前不久我和Datawhale的晶晶,還有杰少一起計(jì)劃推出有關(guān)數(shù)據(jù)競(jìng)賽的高質(zhì)量社區(qū),并邀請(qǐng)了圈內(nèi)大咖,有Kaggle上的Grand Master,也有天池的數(shù)據(jù)科學(xué)家,還有頂會(huì)科研大佬;I備社區(qū)前,我們也一直考慮如何提供更好的體驗(yàn)和學(xué)習(xí)服務(wù),為此做出大量的籌劃,力求為學(xué)習(xí)者提供數(shù)據(jù)競(jìng)賽的一站式服務(wù)。
知識(shí)星球嘉賓 (部分)
范晶晶:開(kāi)源組織Datawhale創(chuàng)始人
張 杰:南京大學(xué)LAMDA碩士,天池?cái)?shù)據(jù)科學(xué)家,KDD2019全球亞軍
談志旋:北京大學(xué)碩士,社交app算法負(fù)責(zé)人
劉 洋:在讀博士,IJCAI/KDD/ICME等頂會(huì)比賽前三,天池?cái)?shù)據(jù)科學(xué)家
錢 乾:資深算法工程師,Kaggle Grand Master
本站(databaseit.com)部分圖文轉(zhuǎn)自網(wǎng)絡(luò),刊登本文僅為傳播信息之用,絕不代表贊同其觀點(diǎn)或擔(dān)保其真實(shí)性。若有來(lái)源標(biāo)注錯(cuò)誤或侵犯了您的合法權(quán)益,請(qǐng)作者持權(quán)屬證明與本網(wǎng)聯(lián)系(底部郵箱),我們將及時(shí)更正、刪除,謝謝