Kaggle虾皮商品匹配大赛银牌方案复盘

简介: Kaggle虾皮商品匹配大赛银牌方案复盘

27.png


历时两个月,Shopee比赛终于落下帷幕,我们队伍ID为Team Name,队员为“兰恒强”,在Private leadboard取得44名成绩,排名top2%,非常感谢队友小白Lanzhengheng的强力付出与贡献,另外我们也很感谢那些分享了他们的想法和知识的参赛选手,特别是@chirs 和@ragnar。


28.png


1 比赛简介



2 方案总结


30.png


我们的总体思路为:

  • 图像特征: CNN+Arcface
  • 标题文本: TF-IDF 、基于ArcFace微调的Bert/Indonesian Bert
  • 后处理:将预测结果数量为1的结果扩大为2
  • 投票选择结果:根据“少数服从多数”对不同模型的预测结果进行筛选


3 图像匹配


  • 余弦相似度:Efficient-B1,Efficient-B3,Efficient-B4,Efficient-B5,Efficient-B7,Desnet 101,eca_nfnet_l1
  • 损失函数: ArcFace
  • 优化器: Adam
  • 组合:通过组合不同图像模型的特征,输入到KNN计算目标商品与候选商品的相似度


4 文本匹配


  • 余弦相似度:基于Bert-en和Indonesian(马来语) Bert提取文本的特征向量,基于TfidfVectorizer提取词袋向量,输入到KNN获取目标商品与候选商品的相似度
  • Bert微调:基于ArcFace 损失函数利用Bert进行商品类别识别训练,获取模型权重


5 后处理与投票


5.1 重新召回结果


前期根据最优lb分数的模型预测结果,我们统计结果发现存在大量没有匹配的样本,也就是匹配结果只有它,自己匹配到了自己,所以可以降低匹配标准(增加匹配距离阈值或者调小相似度阈值)

def combine_init_recall(row):
    x = (row['matches_init'] + ' ' + row['matches_recl']).split()
    # 初始预测匹配数为1再召回,否则不召回
    if 1 == len(row['matches_init'].split()):
        return ' '.join( np.unique(x) )
    else:
        return row['matches_init']
df['matches_recl'] = df.apply(vote_recall_predictions, axis=1)
df['matches'] = df.apply(combine_init_recall, axis=1)


最开始结果数量为1的样本数为:

train data matches none recall one match shape:  (5283, 24)


后期可以减少到

train data recalled twice, only one match shape:  (592, 24)


提分有:0.01+


5.2 投票选择结果


因为不同模型的预测结果不一样或者存在噪音,那么可以根据模型性能设置投票的顺序,首选利用效果好的模型得到第一次结果,如果没有匹配到再使用次优模型的投票结果,合并之后得到最后的结果。

from collections import Counter
def vote_recall_predictions(row):
    x = np.concatenate([  row['image_recall1'] , row['image_recall3'] , row['image_recall3']
                        , row['image_recall13'], row['image_recall17'], row['image_recall37']
                        , row['image_recall137']
                       ])
    collection_matches = Counter(x)
    # 存在两个以上召回两个频次最大的,否则返回自身
    try:
        new_x = collection_matches.most_common(2)[0][0] + ' ' + collection_matches.most_common(2)[1][0]
    except:
        new_x = collection_matches.most_common(1)[0][0]
    new_x = new_x.split()
    new_x = np.concatenate([ row['oof_hash'], row['text_recall_660'], new_x ])
    # bert 放在最后做召回
    if len( np.unique(new_x) ) < 2:
        new_x = np.concatenate([ row['text_bert1'] , row['text_bert3'] ])
    return ' '.join( np.unique(new_x) )


6 做过的尝试


成功的尝试有:

  1. concat embedding:拼接不同模型的向量和组合不同模型的向量
  2. vote ensemble:投票选择结果
  3. post process:重新召回数量为1的结果

试过没用的:

  1. tta
  2. meta emb
  3. ....

另外“二分类”没有提升很多,其实第二名的第二阶段用到了lgb模型。


7 比赛总结


比赛已经结束,看到了前排大佬们的方案,有些想法还是不谋而合,有些想法是想到了但是没有尝试成功(需要坚持~),还有些想法之前没有听说过,学了很多名词,还有些想法非常细,很微妙。有遗憾有收获,最后再次感谢Team Mate:Lan和zhengheng,另外欢迎大家关注小白Lan-知乎,可以获取更多比赛baseline以及比赛方案推送。

相关文章
|
6月前
|
安全 大数据 API
纵览2024年:排名靠前的项目管理软件一览!
2024年上半年项目管理软件排名揭晓,领头羊包括Zoho Projects、Microsoft Project、Nifty、Smartsheet和ClickUp。Zoho Projects因其易用性、扩展性和定制灵活性备受推崇,适合中小企业和大型企业。Microsoft Project以其与微软生态的无缝集成和丰富功能吸引用户。Nifty以其协作工具和弹性定价受青睐,适合中小团队。Smartsheet以其电子表格式界面和全面功能脱颖而出,而ClickUp则以高度自定义和协作功能闻名,适合需要全面任务管理的团队。
82 2
纵览2024年:排名靠前的项目管理软件一览!
|
6月前
|
安全
自媒体营销软文灵感思路来源——万能公式:6P方法论
自媒体营销软文灵感思路来源——万能公式:6P方法论
自媒体营销软文灵感思路来源——万能公式:6P方法论
|
人工智能 开发者 黑灰产治理
“用 AI 修复亚运珍贵史料”活动介绍及活动规则【更新获奖名单】
2023年,正值亚运110周年,也是第19届杭州亚运会即将举办之际,阿里云与亚奥理事会合作,发起“历久弥新——用 AI 修复亚运会珍贵史料”活动,开发者使用阿里云的 AI 技术对亚运会历史老照片进行修复,重燃亚运经典,为亚运助威,并有机会入选“亚运史上第一个 AI 修复特展“。
27720 5
“用 AI 修复亚运珍贵史料”活动介绍及活动规则【更新获奖名单】
|
机器学习/深度学习 传感器 安全
2023 年高教社杯C题蔬菜类商品的自动定价与补货决策思路及代码(持续更新)
2023 年高教社杯C题蔬菜类商品的自动定价与补货决策思路及代码(持续更新)
阿云漫画 | 淘宝“2021年度十大商品”,你get过几件?
编者按: 2021年还有29小时30分钟就要结束了,该用什么记录这一年?继各大平台陆续发布年度关键词、热搜、弹幕之后,国民电商平台淘宝也发布了一份特殊的年度榜单。网友看完表示,“这一年的人间烟火味都在这了。”
190 0
|
机器学习/深度学习 人工智能 安全
筛选风险词、用实体类型推断发现限售商品,阿里安全夺冠知识图谱大赛
筛选风险词、用实体类型推断发现限售商品,阿里安全夺冠知识图谱大赛
|
机器学习/深度学习 算法
量化交易分析:4000多只股票2015-2022年历史数据分享,供小伙伴们学习交流
量化交易分析:4000多只股票2015-2022年历史数据分享,供小伙伴们学习交流
量化交易分析:4000多只股票2015-2022年历史数据分享,供小伙伴们学习交流
|
开发者 达摩院
《开发者评测局》之文档智能评测活动获奖名单
文档智能评测活动获奖名单出炉啦!
《开发者评测局》之文档智能评测活动获奖名单
|
机器学习/深度学习 监控 算法
这场评分卡模型直播解答了我对于信贷风险的大部分疑问
8月4日下午15:00顶象第三期业务安全大讲堂正式开讲。本期业务安全大讲堂由顶象研发总监管胜老师进行分享,针对信贷风控,管胜老师就评分卡模型做了深入浅出的讲解,深刻剖析了评分卡模型的原理、如何构建评分卡模型以及评分卡模型如何评估、应用、跟踪等问题,不仅让大家对信用贷有了更深的理解,同时对评分卡模型的构建产生了极大关注度。
466 0
这场评分卡模型直播解答了我对于信贷风险的大部分疑问
|
搜索推荐 前端开发 UED
软文营销实战记录
最近拜读了徐茂权老师的《 网络营销决胜武器(第2版)》,下面会梳理书中的内容,记录下以后可能会用到的软文营销的技巧。