kaggle ?Foursquare冠軍方案分享(含Code)
作者: Takoi
Foursquare - Location Matching冠軍方案

Foursquare - Location Matching是一個POI匹配大賽,平時當我們尋找附近的餐館或計劃在未知地區(qū)出差時,我們期望得到相關(guān)的、準確的信息。在全球范圍內(nèi)維護高質(zhì)量的數(shù)據(jù)是一項挑戰(zhàn),其影響超越了導航。企業(yè)決定在新網(wǎng)站上進行市場擴張,分析競爭格局,并根據(jù)位置數(shù)據(jù)顯示相關(guān)廣告等等。
本次比賽中,選手需要使用一個包含150多萬個地點的數(shù)據(jù)集,條目經(jīng)過大量修改,包括噪音、重復(fù)、無關(guān)或不正確的信息,我們需要生成一個算法,預(yù)測哪些地點條目代表相同的興趣點。每個地點條目包括名稱、街道地址和坐標等屬性,最后將以最大的準確性確定匹配項。
更詳細的比賽內(nèi)容介紹大家可以參考比賽官網(wǎng)。
https://www.kaggle.com/competitions/foursquare-location-matching/overview/description
此處,我們按照第一名的方案分享,進行學習,整體的流程很傳統(tǒng),
從候選集的構(gòu)建(最大化recall)到中間提升精度(最大化precision),通過模型的融合以及后處理進行進一步的效果提升,已經(jīng)最終通過leak再進一步大幅提升效果。
第一名的分享中除了流程的學習以及中間模型特征的細節(jié),關(guān)于賽事Leak的發(fā)現(xiàn)也非常值得學習。
目前代碼已經(jīng)開源,有興趣的朋友可以通過下面的鏈接進行完整的學習:https://www.kaggle.com/code/takoihiraokazu/sub-ex73-74-75-ex104-115-90-101-merge-train3

方案的框架如下。

整個方案的流程可以大致分成4部分。
構(gòu)建候選集; 降低候選集的數(shù)目; 提升模型京都; 后處理; Leak信息處理;
候選集構(gòu)建
通過經(jīng)緯度的信息以及描述信息分別篩選出100個候選集合。
對于每個id,我們?yōu)橐韵聝煞N方法中的每種方法選擇了100個候選項
經(jīng)緯度歐幾里得距離
名稱Embedding的Cos相似性
模型:基于bert的多語言未分類
knn:cuml
為候選對象生成特征。此處,為了節(jié)省內(nèi)存,只生成了幾個特征,例如名稱的jaro距離和類別的jaro距離。
使用LightGBM,對上述兩種模式中的每一種進行了預(yù)測,兩種情況分別剩下前20個候選,總共約40個候選。為了減少推理時間,此處使用了Forestinference。
最大IOU:0.979
精化候選數(shù)
構(gòu)建大約120+特征,主要基于開源的Notebook,https://www.kaggle.com/code/ryotayoshinobu/foursquare-lightgbm-baseline,包括:
特征相似性特征,如Levenshtein距離和Jaro-winkler距離; 使用id作為鍵的字符相似性統(tǒng)計(最大、最小、平均); 這些統(tǒng)計數(shù)據(jù)的比例; 使用經(jīng)緯度的歐幾里得距離 基于奇異值分解的名稱embedding降維 模型:基于bert的多語言未分類
LightGBM(推理:Forestinference)
CV:0.875 閾值:0.01
候選數(shù)減少到10%左右。
提升精度
xlm-roberta-large and mdeberta-v3-base and Catboost
我們懷疑訓練和測試之間存在重疊,但沒有直接證據(jù),因此我們創(chuàng)建了訓練過度擬合模型以增加LB,同時創(chuàng)建了增加CV的模型。在找到訓練集和測試集重疊的證據(jù)后,我們只需要專注于提高僅存在于測試中的數(shù)據(jù)的準確性,因此我們最終使用了CV最高且不過度擬合訓練數(shù)據(jù)的模型(例如,不要增加epoches,使用FGM等)
catboost
使用了與第二個步一樣的特征 CV:0.878 xlm-roberta-large
文本:name + categories + address + city + state
結(jié)合2nd的一些功能(約70)
3個epoch
mdeberta-v3-base
manhattan distance, harversinie distance, etc 文本:name + categories + address + city + state 結(jié)合第二步的特征和一些新的特征(約90) 使用FGM和EMA訓練
4個epoch
CV:0.907
集成:2nd lgb * 0.01 + 3rd catboost * 0.32 + 3rd xlm-roberta-large * 0.29 + 3rd medebeta-v3-base * 0.38
CV : 0.911 閾值:0.5
后處理
比較兩個id的匹配,如果公共id從任意一側(cè)超過50%,則合并兩個id的匹配。 使用xlm-roberta-large對上述新創(chuàng)建的配對進行預(yù)測。 閾值:0.02 CV:0.9166
Leak&效果
和train合并,通過name,lat,lon將訓練集和測試集合并;
增加TP(true positive),
創(chuàng)建以POI為key的所有真正pairs(1); 降低FP(false positive)
移除和訓練數(shù)據(jù)id綁定的ID(2); 移除和訓練數(shù)據(jù)id綁定的ID以及和訓練數(shù)據(jù)不綁定的數(shù)據(jù)(3); 通過使用LB的信息,驗證增加train-train TP,移除train-train FP,移除train-test FP的結(jié)論;
不和訓練集進行merge : 0.900
(1) : 0.943 (1) + (2) : 0.957 (1) + (2) + (3) : 0.971
由于我們不確定(3)是否適用于Private數(shù)據(jù),我們選擇(1)+(2)和(1)+(2)+(3)作為最終提交。

出于以下多種原因懷疑Leak:
CV和LB之間有一個很大的差距。最大IOU已經(jīng)很高,因此這種幅度的差距是不正常的; 過度擬合等模型LB分數(shù)更高。例如,沒有dropout或多個epoch的培訓。多epoch訓練會導致CV分數(shù)下降。 隨著CV的增加,CV/LB相關(guān)性消失。通過使用FGM訓練NNs,我們的CV有了很大的改善,但LB更差。 主辦方說:“我們包含了從測試集中選擇的幾個示例實例?!蔽鍌€樣本記錄中的兩個存在于訓練數(shù)據(jù)中。

1st place solution https://www.kaggle.com/code/takoihiraokazu/sub-ex73-74-75-ex104-115-90-101-merge-train3
往期精彩回顧
適合初學者入門人工智能的路線及資料下載 (圖文+視頻)機器學習入門系列下載 中國大學慕課《機器學習》(黃海廣主講) 機器學習及深度學習筆記等資料打印 《統(tǒng)計學習方法》的代碼復(fù)現(xiàn)專輯 機器學習交流qq群955171419,加入微信群請掃碼
