数据分析秘籍在这里:Kaggle六大比赛最全面解析(上)雷峰网

正文如下,雷锋网AI研习社编译整理:

建立准确模型的关键是全面了解正在使用的数据,但数据通常是混乱的。在我自学机器学习的前几个月,对如何理解数据并没有很多的想法。我假设数据来自一个自底向上组织完好的包,或者至少有一组明确的步骤可以遵循。

查看别人的代码之后,我发现大家理解、可视化和分析相同数据集的方式是不同的,对此我很震惊。我决定通读几种不同的数据分析方式,找出其中的异同点,并提炼出一套理解数据集的最佳实践或策略,以便更好地利用它们进行数据分析。

我想看看各种不同的数据集,所以我选择了:

结构化数据

NLP(自然语言)数据

图像数据

结构化数据集是包含训练和测试数据的电子表格。电子表格可能包含分类变量(颜色,如绿色、红色和蓝色),连续变量(年龄,如4、15和67)和序数变量(教育程度,如小学、高中、大学)。

训练数据表中包括一个尝试解决的目标列,这些列不会出现在测试数据中。我所研究的大部分EDA都侧重于梳理出目标变量与其他列之间的潜在关联性。

我们的主要目的是寻找不同变量之间的关联性,有很多切分数据的方法。可视化的选择更多。

特征工程可以让你充分发挥想象力,不同参赛选手在合成特征或将分类特征合并为新特征时,都有不同的方法。

Titanic

图片来自ViaggioRoutard

数据集包括一个训练集电子表格,其中包含一列「Survived」,表示乘客是否幸存,以及其他补充数据,如年龄、性别、票价等等。

所有这三种EDA都以原始指标开始。

I,Coder描述的数据集

数据预处理过程中对空值或缺失值进行处理是关键一步。本文选取的三个EDA,一个在前期处理了这一问题,另外两个在特征工程阶段进行处理。

I,Coder反对指定一个随机数来填补缺失的年龄:

正如我们前面看到的,Age特征有177个空值。要替换这些NaN值,我们可以为它们指定数据集的平均年龄。但问题是,有许多不同年龄段的人,我们不能把4岁小孩的平均年龄分配到29岁。有什么方法可以找出乘客的年龄段?我们可以检查名称特征。在这个特征中,我们可以看到像先生或夫人的称呼,我们可以将先生和夫人的平均值分配给各个年龄组。

I,Coder输入的年龄

I,Coder将特征工程作为纯数据分析的一部分,然而其他两位作者认为它是一个独立的步骤。

dejavu关于幸存者性别的图表

你可能对泰坦尼克号中的「女性与儿童优先」这句话很熟悉。在最初的数据分析中,对每位作者来说,年龄和性别这两个特征很重要。也可以对收入背景(如票价所示)进行一些详细的检测。

船上的男性比女性多很多。尽管如此,幸存的女性几乎是幸存男性的两倍。女性在船上的幸存率约为75%,而男性约为18-19%。

——I,Coder

Jekaterina和I,Coder都是基于对图表和数据的视觉检测得出结论,如Jekaterina所写:

性别:女性的幸存机会更高。

船舱等级:拥有头等舱票更有可能幸存。

血亲关系和规模:中等规模的家庭比独自旅行的人或大家庭的幸存率更高。原因可能是单独的人会想牺牲自己去帮助别人。对于大家庭,我认为是整个家庭太难管理,因此家族成员都在寻找彼此而不是忙着上船逃生。

救生船C有更高的幸存率。有趣的是,大部分头等舱的乘客乘坐的就是救生船C。

Jekaterina绘制的反映船舱等级和救生船的图表

DejaVu的EDA在分析的每一步都记录了一个准确的数字,就每个特征对最终预测的重要性提供了一个很好的反馈。

特征工程

三位kernel作者的特征工程存在很多可变性。

每位作者选择不同数量的bucket作为连续变量,如年龄和票价。与此同时,他们都以不同的方式处理家庭关系,I,Coder建立了一个SibSip(血亲关系)——是独自一人还是与家人(配偶或兄弟姐妹)一起(family_size和alone),Jekaterina则列出了一个客舱bin,并提出以child(儿童)或adult(成人)作为特征。

Jekaterina列出的客舱等级字母

名称—>我们不需要名称特征,因为它不能转换为任何分类值。

年龄—>我们有Age_band特征,所以不需要这个。

船票—>它是不能被分类的随机字符串。

票价—>我们有Fare_cat特征,所以不需要。

客舱—>有许多缺失值,也有许多乘客有多个舱位。所以这是一个无用特征。

票价范围—>我们有Fare_cat特征。

乘客身份—>无法分类。

对于填补步骤,Jekaterina写道:

上的救生船:用一个主要类来填充

船舱等级:因为票价中只有一个缺失值,我们将用相应船舱等级的中值进行填充

年龄:有几种输入技术,我们将使用均值上下范围内的随机数进行填充

她确保新的填充数据不会破坏平均值,进行了总结了:

Jekaterina检测新输入值是否破坏均值

点评

三位作者都有检查数据并描述整体形状。

I,Coder考虑了整体的缺失值,而Jekaterina在接近尾声时才开始考虑。

每个人都着眼于幸存者的分类,然后按性别分类幸存者。交叉列表、因子图和小提琴图都是常用的图表。Jekaterina还绘制了一些非常有趣的图表。

当涉及到特征工程时,作者们有些分歧。作者在构建新特征的问题上存在差异,一些人将其视为一个独立的步骤,另一些人则在初步数据分析时对其进行处理。围绕分箱的选择各不相同,随着年龄、产权和票价的不同,所收到的bucket数量都不同,并且只有Jekaterina构建了一个离散的child/adult(儿童/成人)特征。

对于缺失值的填充方法也不同。I,Coder建议查看现有数据以预测估算值,而Jekaterina确保她的估算数据不影响均值。

他们在思考和处理数据上有一些明显的相似之处,主要是在可视化和特征工程上有些差异。

房价

该图由美国顾问团提供

房价预测是另一种结构化数据比赛。它比上面的Titanic比赛有更多的变量,包括分类、顺序和一些连续特征。

虽然这些数据在类型上类似Titanic,但实际上复杂得多。

在爱荷华州埃姆斯住宅问题中,有79个解释变量用来描述这些房子的方方面面。该竞赛要求你预测每间房的价格。

Pedro描绘了售价

偏离了正态分布

有明显的正偏态

出现了尖峰态

之后,Pedro将自己置于买家的角度,猜测哪些特性对他来说很重要,从而来看他的选择和售价之间的关系。之后,他建立了一个热图,让自己对特征有更加客观的观察。

丢失数据有多普遍

丢失数据是随机的还是有模式的

这些问题的答案对于实践很重要,缺少数据可能意味着样本容量的减少。这会阻止我们进一步的分析。从真实性的角度来看,我们需要确保数据丢失不会导致偏颇。

为解决这些问题,Pedro绘制了缺失单元的总数以及百分比,并选择删除了15%或是更多包含缺失数据的单元格所在的列。他再次依赖主观选择来决定移除哪些特征:

……我们会错过这些数据吗?我不这么想。这些变量似乎都不是很重要,因为它们中的大多数都不是我们在购买房子时所要考虑的方面。此外,通过仔细观察变量,比如「PoolQC」、「MiscFeature」和「fireplacery」等变量很有可能导致异常值出现,因此我们很乐意删除它们。

Pedro对缺失数据的处理方法是,要么删除整个列(如果它们包含有大量缺失值),要么删除只有少数缺失值的行。他还建立了一个启发式的解决异常值的方法:

最主要是设定一个阈值来定义观测值是否为异常值。为此,我们将数据标准化。在这种情况下,数据标准化意味着将数据值转换为平均值为0,标准差为1的数据。

他的结论是,从静态的角度来看,没什么可担心的。但在重新审查了数据之后,他删除了一些觉得可疑的数据点。

Sangeon检查了数据的偏态和峰度,并做了一个wilxocc-rank测试。他用一个非常好看的3D图进行总结:

Sang-eon的3D特征图

这三个kernel的作者都没有做过多的特征工程分析,可能是因为数据集中已经有很多的特性了。

有很多策略来决定如何处理这些数据,有些作者采用了主观策略,有些则直接采用更加客观的测量。对于何时以及如何剔除缺失数据或异常值,他们没有达成明确的共识。

自然语言处理

自然语言或NLP数据集包含单词或句子。虽然核心数据类型与结构化数据竞赛中的相同,但用于自然语言分析的工具——文本是特定的,这会导致不同的分析策略。

由于需要转换数据,大多数Notebook的前几个步骤倾向于将文本转换为机器可读的内容,并且这一步骤都趋于相似。之后,大家的方法会出现很大差异,并对特征工程应用各种不同的可视化和技术。

Jagan绘制的恶意分类分布图

恶意程度在各个类别之中不是均匀分布的。因此,我们可能会遇到分类失衡问题。——Jagan

Francisco剔除掉无实际意义的词(例如「and」或「the」)。他用双标图绘制出一个特定单词最适合的类别。

Francisco之后提出错别字和恶意之间是否存在关联。

这三位作者都利用数据可视化取得了很好的效果。

Jagan绘制了一些词云、热图和交叉表,观察到:

Rhodium将文本变成小写,手动将句法结构变成事物,并手动清除标点符号。

对于单个单词和单词对,Jagan和Rhodium都使用TF-IDF绘制顶部单词。

恐怖小说家身份识别

Anisotropic表示,这些词都是常见的词,不仅仅出现在三位作家的恐怖故事和小说里,还有报纸、儿童读物、宗教文本——几乎所有其他的英语文本里都可以找到。因此,我们必须找到一种方法来对数据集进行预处理。首先去掉通常不会带来太多信息的单词。

他们都构建了词云图来显示出现最频繁的单词:

HeadsorTails根据50个最常见词构建的词云

HeadsorTails也对每位作家的整体句子、单个句子和字词长度进行绘制,并发现作家之间的细微差异。

Anisotropic和Bukun讨论了分词并且移除了停用词。他表示,这个阶段的工作是尝试将类似单词的不同变体减少到一个单独的术语(一个单词不同的分支都被简化为单个词干)。因此,如果文中有「running」、「runs」和「run」,将变成「run」。(当然,会失去过去、现在或将来时态)。

在分词之后,Anisotropic删除了停用词,还原了词性并重新建立出现频次排在前50的单词的词频柱状图:

Bukun绘制了出现频次前10的单词的词频图,并发现了一个不同的集合:

HeadsorTails也这样做了,另外,还通过作家来看分词和词干化之后词频排在前面的单词。

Bukun和HeadsorTails都使用TF-IDF值来查对于特定作者来说最「重要」的单词。

HeadsorTails将作者最重要的词绘制在一张不同的图表中

Bukun观察到频率最高的二元模型和三元模型(分别是两个和三个单词的集合)。

HeadsorTails绘制了二元模型之间的词关系

Bukun和HeadsorTails都进行了情绪分析,并观察了每位作家的整体负面情绪。

Bukun使用了一种叫做「NRC情感词汇」的词典来检测每个文本片段中的「恐惧」、「惊喜」和「快乐」的数量,并利用词云图、表格、条形图来可视化作家们的情绪。

Bukun绘制的与开心匹配的词云

Bukun建议增加一些可能的特性,包括逗号、分号、冒号、空格的数量以及包含大写字母的单词或是以大写字母开头的单词,并绘制每一种的图像。

HeadsorTails强调:

从这个角度来看,HeadsorTails依赖于babynames包,它以每年最受欢迎的名字为特征,为数据添加一个额外的特性。

Bukun和HeadsorTails都注意到作家之间性别代词的分类问题,HeadsorTails也注意到句子的主题、作者的首字母、尾字母以及特殊单词的数量、每一个句子里面特殊单词所占的比重、对话的标签和押韵。(这是一个很酷的想法)

HeadsorTails绘制的各种测量值

HeadsorTails绘制了一张图总结,展示了特征的相互作用:

HeadsorTails的图展示了特征交互

这是一项值得研究的竞赛。因为文本片段更长,而且不依赖于结构化的数据。

他们倾向于利用小写单词、词干和分词等NLP常见应用,同时他们也倾向于使用比Toxic中更先进的技术,比如情感分析和二元、三元模型分析技术。

在特征工程阶段,他们设计了各种各样新特征。包括每个句子的平均单词数、标点符号的选择、以及单词是否重复等。

THE END
1.kaggle数据集下载yuanzhoulvpikaggle数据集下载 现在做数据科学工作的,大部分都曾经在kaggle上下载过数据集。但是最近kaggle好像搞了个API接口。这样很方便下载数据集。接下来,我将分享给大家: 第一步:安装kaggle这个库,这个库是python的库,大家可以像安装python一样安装kaggle。 第二步:到自己的kaggle的账户上下载kaggle.json文件。打开My Account...https://www.cnblogs.com/yuanzhoulvpi/p/8612893.html
2.kaggle下载数据资源| 各领域公开数据集下载 本文整理了一些网上的免费数据集,分类下载地址如下,希望能节约大家找数据的时间。本篇文章来自知乎专栏赵熙的文章《各领... Jake_张江阅读 10,900评论 0赞 20 [Kaggle] 数据建模分析与竞赛平台介绍 前段时间在学习MXnet提供的样例的时候接触了一下Kaggle的两届NDSB比赛,于是就稍微调研了...https://www.jianshu.com/p/b95c8da4dca4
3.基于Kaggle心脏病数据集的数据分析和分类预测基于Kaggle?脏病数据集的数据分析和分类预测-StatisticalLearning统。。。 基于Kaggle?脏病数据集的数据分析和分类预测-StatisticalLearning统计学习实验报告 ?、实验准备 本数据来源于 aggle,包含14个维度,303个样本,具体的变量说明如下表所?。 变变量量名名 详详细细说说明明 取取值值范范围围 target 是否...https://max.book118.com/html/2023/0922/8143045036005134.shtm
1.如何在kaggle上面快速下载数据?训练好的kaggle的output怎么下载现在做数据科学工作的,大部分都曾在kaggle上下载过数据集,但是最近kaggle好像搞了个API接口,这样很方便下载数据集,具体步骤如下(参考kaggle数据集下载:https://www.cnblogs.com/yuanzhoulvpi/p/8612893.html),并以具体例子说明: 假设我们现在需要下载kaggle上面的一个图像数据集plant-seedings-classification,首先需要...https://blog.csdn.net/zichen_ziqi/article/details/80172295
2.Kaggle最受欢迎的10个竞赛数据集腾讯云开发者社区1机器学习是万能的吗?AI落地有哪些先决条件?如果你刚接触ML,或者对ML觉得很神秘,请先看下这篇文章。 2如何做才能真正提升计算速度?硬件再牛,也难以招架业务场景中产生的数据,提高算法性能和计算速度是永远的话题。 最近有人问有没有相关数据集,这几天抽时间整理了以下数据集,标题即是Kaggle竞赛题目,可以直接搜索...https://cloud.tencent.com/developer/article/1350748
3.kaggle数据可视化##Kaggle数据可视化:让数据讲述旅程故事 在数据科学领域,数据可视化是一项极为重要的工作。通过数据可视化,我们可以将抽象的数据转化为直观的图形,帮助我们更好地理解数据背后的规律和趋势。Kaggle作为全球最大的数据科学竞赛平台,提供了丰富的数据集和工具,为数据可视化提供了很好的资源和平台。 ###数据可视化的重要性数...https://blog.51cto.com/topic/5327a4c78c85486.html
4.Kaggle:YourMachineLearningandDataScienceCommunityKaggle is the world’s largest data science community with powerful tools and resources to help you achieve your data science goals.https://www.kaggle.com/
5.零基础学机器学习如果大家希望了解更多机器学习的相关内容,欢迎关注公众号“咖哥数据科学讲习所”,让我们共同进步。 最后,还必须要感谢各位机器学习领域的前辈,如吴恩达、李宏毅、莫烦等老师,他们无私分享的机器学习教学资源,以及Kaggle网站中的机器学习数据集,都是包括我在内的每一个探索者在学习之路上不可或缺的财富。感谢我的朋友...https://labs.epubit.com/bookDetails?id=UB7245bf2ca7715
6.有人一周内清理了PASCAL数据集中的17120张图像,将mAP提高了13%我们的首要任务是改进数据集。我们从 Kaggle 获得数据集,将其上传到 Hasty 平台,导入注释,并安排两次 AI CS 运行。对于那些不熟悉我们 AI CS 功能的人,该功能支持类、目标检测和实例分割审查,因此它会检查注释的类标签、边界框、多边形和掩码。在进行审查时,AI CS 会寻找额外或缺失的标签、伪影、错误类别的注释...https://www.thepaper.cn/newsDetail_forward_17829637