codeFest2018比赛的冠军解决方案——自然语言处理/计算机视觉/机器学习

标签:#机器学习##比赛# 时间:2018/09/28 15:44:16 作者:小木

Analytics Vidhya的黑客马拉松是评估您在数据科学旅程中走多远的最佳方式之一。 还有什么比让全球顶级数据科学家对您的技能进行测试更好的方法?

参与这些黑客马拉松还可以帮助您了解您需要改进的地方以及您可以学习的其他内容,以便在下一次比赛中获得更好的成绩。 每次黑客马拉松之后的一个非常受欢迎的需求是看看获胜解决方案的设计方式以及它背后的思考过程。 从中可以学到很多东西,包括如何为未来的黑客马拉松开发自己独特的框架。

我们都在倾听我们的社区,因此我们决定从我们最近结束的黑客马拉松系列codeFest中挑选出成功的方法! 这是与IIT-BHU合作的一系列三个黑客马拉松,于8月31日至9月2日期间进行。 竞争激烈,超过1,900名有抱负的数据科学家正面对面争夺最终奖项!

比赛包括三个方面

  • Linguipedia - 自然语言处理比赛
  • Enigma - 机器学习比赛
  • Vista - 计算机视觉比赛

一、Liguipedia —— 自然语言处理比赛

问题描述

参与者获得了客户关于制造和销售手机,电脑,笔记本电脑等各种科技公司的推文列表。挑战在于找到对这些公司或产品表现出负面情绪的推文。

用于评估分类模型性能的度量标准是加权F1-Score。

获胜者的方法
预处理:
  1. 将单词转换为小写
  2. 将“URL”和“@ handle”替换为“USER_MENTION”字样的网址
  3. 删除了RT(转推), - 和’
  4. 用#标签替换#hashtag
  5. 用空格替换了两个以上的点,用一个空格替换了多个空格
  6. 用EMO_POS或EMO_NEG替换了emojis
  7. 删除首尾空格,以及引号
  8. 删除了标点符号
  9. 转换超过2个字母重复到2个字母(funnnnny - > funny)
  10. 词干抽取
特征提取:
  • 在稀疏矢量表示(独热模型)的情况下取前15,000个unigrams,在密集矢量表示的情况下取90,000个
  • 在稀疏矢量表示的情况下,他们使用tf-idf方法
  • 对于密集向量,他们使用Glove嵌入(在推文上训练)
使用的分类器:
  • 朴素贝叶斯
  • 最大熵分类器
  • 决策树
  • 随机森林
  • XGBoost
  • 支持向量机
  • 多层感知器
  • 卷积神经网络(我们用1,2,3和4层实验)
  • LSTM(使用获得的最后一层进行分类)
  • LSTM(有注意机制)

他们对上述每个分类器进行了测试,发现LSTM(具有注意机制)产生了最好的结果。

嵌套
  • 他们给每个分类器一个权重 - 朴素贝叶斯,最大熵分类器,决策树,随机森林,XGBoost,SVM,多层感知器; CNN的两个权重,LSTM的三个权重(没有注意),LSTM的五个权重(注意)
  • 这些权重是在对一部分数据进行超参数调整后获得的(他们将训练集分成三部分)

二、Vista——计算机视觉

问题描述

Vista hackathon有一个非常有趣的问题。 参与者必须建立一个模型,计算给定组自拍/照片中的人数。 提供的数据集已经被分割,其中训练集由具有每个图像的边界框和人数的坐标的图像组成。

该竞赛的评估指标是在测试图像预测的人数上的RMSE(均方根误差)。

获胜者的解决方案

Deepak的方法:

由于这是一个对象检测问题,我使用Keras和TensorFlow在Python 3中实现了Mask R-CNN。 该模型为图像中的对象的每个实例生成边界框和分割掩模。 它基于特征金字塔网络(FPN)和ResNet101骨干网构建的。

Mask R-CNN和ResNet101

Mask R-CNN是一个两阶段框架:

  • 第一阶段扫描图像并生成提案(可能包含对象的区域)
  • 第二阶段对提案进行分类并生成边界框和蒙版
  • 两个阶段都连接到骨干结构。

我使用过ResNet101骨干网。Backbone是FPN风格的深度神经网络。 它由自下而上的通道,顶部底部通道和横向连接组成:

  • 自下而上的路径从原始图像中提取特征
  • 上下通道生成特征金字塔图,其大小与自下而上通道相似
  • 横向连接是卷积并在两个相应的两个路径之间添加操作
预处理

我使用默认的1024×1024图像尺寸以获得更好的精确度。除此之外,我还应用了一些数据增强技术,以避免过拟合和更好的泛化能力。

模型构建
  • 我还使用了在MS-COCO数据集上训练的预训练权重。 MS-COCO是一种大规模的物体检测、分割和captioning 数据集。 我使用迁移学习和微调预训练的权重来训练给定数据集上的自定义Mask R-CNN模型
  • 首先,仅训练“头”层。 这些包括网络的 Region Proposal Network(RPN),分类器和mask heads。 然后我从ResNet101中细化了层。 ResNet有各种各样的块,我只训练了第4块及以上的块
  • 最后,我使用加权多数投票来整合最佳模型并预测最终值

Enigma – 机器学习

问题描述

作为enigma竞赛的一部分,目标是根据提供的其他信息预测问题的upvotes数量。 对于每个问题 - 提供了其标签,收到的观看次数,答案数,用户名和作者的声誉。 使用此信息,参与者必须预测问题将收到的upvote计数。

该竞赛的评估指标是RMSE(均方根误差)。

获胜者方案
特征工程:

我的重点是特征工程,即使用现有特征创建新特征。 以下是我制作的一些主要特征:

  • 我创建的第一个特征是采用问题的查看数和答案的比例。 我认为该比率是一个比查看数或答案数更好的指标。 否则的话,具有更多答案和大量总观看次数的人比获得较少(但很好)答案且总体观点较少的人获得的信誉更多。但显然不是这样。
  • 第二个特征是声誉与答案数量的五倍之比。 我添加了因子5,因为声誉大约是答案的5倍。 这个比例直观地说得更有意义
  • 我使用查看数和信誉值创建了另一个特征。我采取了查看数和声誉之间差异的绝对值
模型构建:

我使用了具有多项式特征的线性回归模型,我将多项式的次数限制为2,因为次数过高虽然会导致更灵活的模型但也会增加过拟合的可能性

欢迎大家关注DataLearner官方微信,接受最新的AI技术推送