前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟Kaggle大神17枚金牌得主学NLP实战

跟Kaggle大神17枚金牌得主学NLP实战

作者头像
新智元
发布2019-09-23 18:42:54
5420
发布2019-09-23 18:42:54
举报
文章被收录于专栏:新智元新智元新智元


新智元推荐

来源:图灵TOPIA

作者:Dean Sublett

编译:安然

整理编辑:元子

【新智元导读】本文作者Dean Sublett是Kaggle大神Abhishek Thakur的迷弟,通过学习Abhishek的相关教程受益良多,因此,近期他在medium上撰文对相关自然语言处理的知识做了梳理总结。

本文作者Dean Sublett是Kaggle大神Abhishek Thakur的迷弟,通过学习Abhishek的相关教程受益良多,因此,近期他在medium上撰文对相关自然语言处理的知识做了梳理总结。

提起Abhishek Thakur,很多kaggler对他都非常熟悉,2017年,他在 Linkedin 发表了一篇名为Approaching (Almost) Any Machine Learning Problem的文章,介绍他建立的一个自动的机器学习框架,几乎可以解决任何机器学习问题,这篇文章曾火遍 Kaggle。

Abhishek在Kaggle上的成就:

  • Competitions Grandmaster(17枚金牌,世界排名第3)
  • Kernels Expert (Kagglers排名前1%)
  • Discussion Grandmaster(65枚金牌,世界排名第2)

目前,Abhishek在挪威boost公司担任首席数据科学家的职位,这是一家专门从事会话人工智能的软件公司。

以下是本文作者对Abhishek的NLP实战技术学习总结:

Abhishek的NLP方法

强烈建议在阅读本文的同时阅读kernel。想要更全面掌握NLP或数据科学,请确保自己写代码时,能理解Abhishek的每一行代码。我们的任务是确定测试集中每个句子的作者。

1. 研究数据并理解问题

导入必要的Python模块和数据之后,Abhishek调用数据上的head方法,查看前五行是什么样的。

由于Abhishek是专家,并且这是一个NLP问题,与涉及数值数据的问题相比,探索性数据分析EDA)是比较浅显的问题。

数据科学的新人会从更全面的EDA中收益。对数据进行深入的研究可以发现任何缺失的值,知道需要进行多少数据清理,并在问题的后期帮你做出建模决策。

Abhishek还提醒到,我们正在解决多类文本分类问题。他指出了Kaggle将用于评分提交的评估指标。

在这次竞赛中,Kaggle使用多分类的对数损失函数来衡量提交模型的性能。理想情况下,多类分类模型的对数损失函数为0。

2. 预处理

接下来,Abhishek使用scikit-learn中的LabelEncoder方法为每个作者分配一个整数值。

通过使用整数值(0,1,2)对作者列中值的文本标签进行编码,Abhishek使其分类模型更易于理解数据。

在对作者标签进行编码之后,Abhishek使用来自scikit-learn的train_test_split将数据分成训练和验证集。

他选择了90:10的训练/验证拆分(Python数据科学中最常用的拆分通常为70:30到80:20)。

因此,他打算在数据集中的90%的句子训练模型,然后他用剩余10%的数据评估模型的准确性。

3. 建模

在创建第一个模型前,Abhishek在数据上使用了TF-IDF(Term Frequency - reverse Document Frequency)。

TF-IDF将对文本列中的句子出现的单词赋予权重。

当我们试图确定一个特定的句子是由哪个作者写的,诸如“the”这样的词对于任何作者的分类都不重要,因为“the”经常出现并没有揭示很多信息,但是在对HP编写的句子进行分类时,像“Cthulhu”这样的词会非常重要。

因此,TF-IDF将在预测作者方面,能帮助我们理解哪些词是重要的。

对数据运行TF-IDF是一种特征提取形式。在这里,我们需要得出一些重要的数据预测或特征,来帮助我们找出一个特定的句子是由哪个作者写的。

有了TF-IDF,可以对单词的重要性进行统计测量,以帮助我们预测句子的作者。

在训练集和验证集上拟合TF-IDF之后,Abhishek准备了逻辑回归模型。如果对这种分类模型不熟悉,请先阅读本文。

在拟合逻辑回归模型之后,Abhishek计算了逻辑回归模型的对数损失(回想一下,他在kernel运行初始就编写了多分类对数损失函数)。

对于逻辑回归模型,多分类对数损失函数返回对数损失值0.626。虽然拟合TF-IDF和逻辑回归模型为我们提供了一个良好的开端,但是我们可以改进这个对数损失得分。

4. 模型调整

我们不满意0.626的对数损失得分,希望优化此项评估指标。从这里开始,我们可以采取多种途径,而这正是Abhishek所做的。

在对数据进行探索和预处理之后,我们留下了许多不同的特征提取和模型拟合的组合。

例如,Abhishek使用字数来进行特征提取而不是TF-IDF。

通过这种特征提取技术,他的逻辑回归模型的对数损失得分从0.626提高到0.528 ,这是高达0.098的改进!

总结

从这一点开始,Abhishek的内核越来越详细,因此,我将让他解释其他分类模型。

这是我们讨论的内容:

EDA:如果我们想要了解数据集,探索性数据分析是至关重要的,当我们开始构建模型时,EDA可以节省我们的时间。

多类别分类问题:这类问题要求我们预测观察属于哪个类别,每个观察可能属于三个或更多类别中的任何一个类别

预处理:在构建任何模型之前,必须对数据进行预处理。在这个例子中,为了我们的模型,需要使用LabelEndcoder将文本标签转换成整数值

特征提取:无论何时我们有原始数据集(在我们的示例中是句子摘录),我们都需要派生一些预测器,来帮助我们对观察进行分类。Abhishek向我们展示了如何使用TF-IDF和字数统计。

以下是本文中提到的所有Abhishek代码

参考链接:

https://towardsdatascience.com/what-i-learned-from-abhishek-thakur-4b905ac0fd55

本文授权转载自图灵TOPIA(turingtopia)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【新智元导读】本文作者Dean Sublett是Kaggle大神Abhishek Thakur的迷弟,通过学习Abhishek的相关教程受益良多,因此,近期他在medium上撰文对相关自然语言处理的知识做了梳理总结。
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档