【Kaggle】2021 Shopee商品分類競賽 Part5:第一名密技 INB

Iterative Neighborhood Blending 介紹

倢愷 Oscar
May 22, 2021

這是Shopee的商品分類競賽系列分析文的第5篇,如果還沒看前4篇的話推薦先回去補足基礎知識。part1part2part3part4

這會是這一個系列暫時的最後一篇,除非我找到其他值得寫的內容,而這篇的重點就是解析Shopee競賽裡面第一名的一個非常強大的技巧Iterative Neighborhood Blending(INB)。

這篇文章我就只講一個東西 Iterative Neighborhood Blending

在第三篇中,我講到了ArcFace,以及使用ArcFace的目的:讓相似的資料在特徵空間(Feature Space)中靠得更近。

那時候也放了比較圖,可以看到很明確的改進。

而實際上INB就是延續這個概念,並且在Shopee的競賽中藉由實驗達到了最佳效果。

Iterative Neighborhood Blending介紹

INB實際上是一個由第一名作者在這篇discussion中自創的名詞。而其中Neighborhood Blending的概念其實非常簡單。

Neighborhood Blending就是把每個 embedding( feature)跟它周圍的embedding做加權。

簡單來講,如果我們原本的embedding分布如下圖左側,INB會把每個點周圍的點拿來加權,然後得到新的embedding,進而變成右圖。

而因為每個點跟周圍的點的數值會加權得到新的數值,所以原本比較靠近的點,會變得更近,使群體的概念變得更清晰,如下圖

從公式來講,如果我們知道A跟B、C、D這三個點最靠近,而分別相似程度為0.94, 0.93, 0.52,則我們A點會被更新為

https://www.kaggle.com/c/shopee-product-matching/discussion/238136

具體流程結合起來如下圖。

https://www.kaggle.com/c/shopee-product-matching/discussion/238136

而就是INB,讓第一名的成績從0.776暴衝到0.793。

使用可以參考作者的code

其中要注意neighborhood_search是我們要自己寫的function,基本上跟sklearn的NearestNeighbors是類似的接口。

唯一的不同是,NearestNeighbors如果你指定要找5個最近的點,就一定會給你5個點,而在shopee的競賽中我們會設定一個距離的閾值(threshold),所以找5個最近的點,有可能只找到3個,因為後面2個沒有通過閾值。

具體怎麼挑選閾值,作者用的方法基本上就是靠CV score來挑選。具體方法可以參考part4

INB的方法簡單,但是在這個比賽效果很明顯,藉由讓群體邊界更靠近後,clustering等方法效果都提升了,是個很簡單的improvement!

最後有興趣可以看一下第一名的完整pipeline,都是我part1~part5講過的技巧。

https://www.kaggle.com/c/shopee-product-matching/discussion/238136
如果喜歡這篇文章可以幫我多拍手幾次XD,或是對於哪個類型文章有興趣都可以在留言區跟我講~ 後續會以中難度的ML/DS/AI知識為主,以及AI/HCI研究相關知識

參考資料:

--

--

倢愷 Oscar

我是倢愷,CTO at TeraThinker an AI Adaptive Learning System Company。AI/HCI研究者,超過100場的ML、DL演講、workshop經驗。主要學習如何將AI落地於業界。 有家教、演講合作,可以email跟我聯絡:axk51013@gmail.com