kaggle ​Foursquare冠軍方案分享(含Code)

Foursquare - Location Matching冠軍(jun) 方案

簡 介

Foursquare - Location Matching是一個(ge) POI匹配大賽,平時當我們(men) 尋找附近的餐館或計劃在未知地區出差時,我們(men) 期望得到相關(guan) 的、準確的信息。在全球範圍內(nei) 維護高質量的數據是一項挑戰,其影響超越了導航。企業(ye) 決(jue) 定在新網站上進行市場擴張,分析競爭(zheng) 格局,並根據位置數據顯示相關(guan) 廣告等等。

本次比賽中,選手需要使用一個(ge) 包含150多萬(wan) 個(ge) 地點的數據集,條目經過大量修改,包括噪音、重複、無關(guan) 或不正確的信息,我們(men) 需要生成一個(ge) 算法,預測哪些地點條目代表相同的興(xing) 趣點。每個(ge) 地點條目包括名稱、街道地址和坐標等屬性,最後將以最大的準確性確定匹配項。

更詳細的比賽內(nei) 容介紹大家可以參考比賽官網。

https://www.kaggle.com/competitions/foursquare-location-matching/overview/description

此處,我們(men) 按照第一名的方案分享,進行學習(xi) ,整體(ti) 的流程很傳(chuan) 統,

從(cong) 候選集的構建(最大化recall)到中間提升精度(最大化precision),通過模型的融合以及後處理進行進一步的效果提升,已經最終通過leak再進一步大幅提升效果。

第一名的分享中除了流程的學習(xi) 以及中間模型特征的細節,關(guan) 於(yu) 賽事Leak的發現也非常值得學習(xi) 。

目前代碼已經開源,有興(xing) 趣的朋友可以通過下麵的鏈接進行完整的學習(xi) :https://www.kaggle.com/code/takoihiraokazu/sub-ex73-74-75-ex104-115-90-101-merge-train3

第一名方案介紹

方案的框架如下。

kaggle Foursquare冠軍(jun) 方案分享(含Code)

整個(ge) 方案的流程可以大致分成4部分。

  1. 構建候選集;
  2. 降低候選集的數目;
  3. 提升模型京都;
  4. 後處理;
  5. Leak信息處理;

候選集構建

通過經緯度的信息以及描述信息分別篩選出100個(ge) 候選集合。

對於(yu) 每個(ge) id,我們(men) 為(wei) 以下兩(liang) 種方法中的每種方法選擇了100個(ge) 候選項

  • 經緯度歐幾裏得距離

  • 名稱Embedding的Cos相似性

    • 模型:基於(yu) bert的多語言未分類

    • knn:cuml

為(wei) 候選對象生成特征。此處,為(wei) 了節省內(nei) 存,隻生成了幾個(ge) 特征,例如名稱的jaro距離和類別的jaro距離。

使用LightGBM,對上述兩(liang) 種模式中的每一種進行了預測,兩(liang) 種情況分別剩下前20個(ge) 候選,總共約40個(ge) 候選。為(wei) 了減少推理時間,此處使用了Forestinference。

  • 最大IOU:0.979

精化候選數

構建大約120+特征,主要基於(yu) 開源的Notebook,https://www.kaggle.com/code/ryotayoshinobu/foursquare-lightgbm-baseline,包括:

  • 特征相似性特征,如Levenshtein距離和Jaro-winkler距離;
  • 使用id作為鍵的字符相似性統計(最大、最小、平均);
  • 這些統計數據的比例;
  • 使用經緯度的歐幾裏得距離
  • 基於奇異值分解的名稱embedding降維
    • 模型:基於bert的多語言未分類

LightGBM(推理:Forestinference)

  • CV:0.875
  • 閾值:0.01

候選數減少到10%左右。

提升精度

xlm-roberta-large and mdeberta-v3-base and Catboost

我們(men) 懷疑訓練和測試之間存在重疊,但沒有直接證據,因此我們(men) 創建了訓練過度擬合模型以增加LB,同時創建了增加CV的模型。在找到訓練集和測試集重疊的證據後,我們(men) 隻需要專(zhuan) 注於(yu) 提高僅(jin) 存在於(yu) 測試中的數據的準確性,因此我們(men) 最終使用了CV最高且不過度擬合訓練數據的模型(例如,不要增加epoches,使用FGM等)

  • catboost

    • 使用了與第二個步一樣的特征
    • CV:0.878
  • xlm-roberta-large

    • 文本:name + categories + address + city + state

    • 結合2nd的一些功能(約70)

    • 3個(ge) epoch

  • mdeberta-v3-base

    • manhattan distance, harversinie distance, etc
    • 文本:name + categories + address + city + state
    • 結合第二步的特征和一些新的特征(約90)
    • 使用FGM和EMA訓練

    • 4個(ge) 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從任意一側超過50%,則合並兩個id的匹配
  • 使用xlm-roberta-large對上述新創建的配對進行預測。
  • 閾值:0.02
  • CV:0.9166

Leak&效果

  • 和train合並,通過name,lat,lon將訓練集和測試集合並;

  • 增加TP(true positive),

    • 創建以POI為key的所有真正pairs(1);
  • 降低FP(false positive)

    • 移除和訓練數據id綁定的ID(2);
    • 移除和訓練數據id綁定的ID以及和訓練數據不綁定的數據(3);
  • 通過使用LB的信息,驗證增加train-train TP,移除train-train FP,移除train-test FP的結論;

不和訓練集進行merge : 0.900

  • (1) : 0.943
  • (1) + (2) : 0.957
  • (1) + (2) + (3) : 0.971

由於(yu) 我們(men) 不確定(3)是否適用於(yu) Private數據,我們(men) 選擇(1)+(2)和(1)+(2)+(3)作為(wei) 最終提交。

 關(guan) 於(yu) Leak的發現

出於(yu) 以下多種原因懷疑Leak:

  • CV和LB之間有一個很大的差距。最大IOU已經很高,因此這種幅度的差距是不正常的;
  • 過度擬合等模型LB分數更高。例如,沒有dropout或多個epoch的培訓。多epoch訓練會導致CV分數下降。
  • 隨著CV的增加,CV/LB相關性消失。通過使用FGM訓練NNs,我們的CV有了很大的改善,但LB更差。
  • 主辦方說:“我們包含了從測試集中選擇的幾個示例實例。”五個樣本記錄中的兩個存在於訓練數據中。

參考文獻

  1. 1st place solution
  2. https://www.kaggle.com/code/takoihiraokazu/sub-ex73-74-75-ex104-115-90-101-merge-train3

【競賽報名/項目谘詢+微信:mollywei007】

下一篇

入讀美國文理學院真實體驗是怎樣的?畢業後發展如何?

你也可能喜歡

  • 暫無相關文章!

評論已經被關(guan) 閉。

插入圖片
返回頂部