微信小程序>新闻>资讯>「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite
「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite-微信小程序

「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite

257

分类:新闻资讯

开发作者: 「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite

发布时间: 2019-04-02 10:57:23

更新时间: 2019-04-02 10:57:23

查看要求: 微信app最新版本

更多信息: 关于「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite

「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite-微信小程序二维码

微信扫码体验

「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite小程序介绍

「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite_作者自评:

如何评价百家号Lite小程序热议话题「数据分析秘籍在这里:Kaggle六大比赛最全面解析(上)」
雷锋网AI研习社按,Kaggle上有各式各样的数据挖掘类比赛,很多参赛者也乐于分享自己的经验,从他人的经验中进行总结归纳,对自己的实践也非常重要。
本文将以Kaggle上6个不同的比赛为例,介绍常见的三类数据(结构化数据,NLP数据,图像数据)分析经验,以助力大家提升数据分析能力。此文为上篇,主要介绍结构化数据和NLP数据,包含Titanic比赛,房价预测比赛,恶意评论分类,恐怖小说家身份识别。下篇将会介绍两个极具特色的图像类比赛——树叶分类竞赛(LeafClassification)和肺癌检测比赛(DataScienceBowl2017)。
正文如下,雷锋网AI研习社编译整理:
建立准确模型的关键是全面了解正在使用的数据,但数据通常是混乱的。在我自学机器学习的前几个月,对如何理解数据并没有很多的想法。我假设数据来自一个自底向上组织完好的包,或者至少有一组明确的步骤可以遵循。
查看别人的代码之后,我发现大家理解、可视化和分析相同数据集的方式是不同的,对此我很震惊。我决定通读几种不同的数据分析方式,找出其中的异同点,并提炼出一套理解数据集的最佳实践或策略,以便更好地利用它们进行数据分析。
数据科学家会花大量时间在数据预处理上,而不是模型优化问题上。
——lorinc本文中,我选择了一些在Kaggle上公开的探索性数据分析(EDA)。这些分析将交互式代码片段与文章结合在一起,有助于提供数据的鸟瞰图或梳理数据中的模式。
我同时研究了特征工程,这是一种获取现有数据并用一些方法将其转化,赋予数据其他含义的技术(例如,获取时间戳并提取DAY_OF_WEEK列,这些列可用于预测商店中的销售情况)。
我想看看各种不同的数据集,所以我选择了:
结构化数据NLP(自然语言)数据图像数据结构化数据
结构化数据集是包含训练和测试数据的电子表格。电子表格可能包含分类变量(颜色,如绿色、红色和蓝色),连续变量(年龄,如4、15和67)和序数变量(教育程度,如小学、高中、大学)。
训练数据表中包括一个尝试解决的目标列,这些列不会出现在测试数据中。我所研究的大部分EDA都侧重于梳理出目标变量与其他列之间的潜在关联性。
我们的主要目的是寻找不同变量之间的关联性,有很多切分数据的方法。可视化的选择更多。
特征工程可以让你充分发挥想象力,不同参赛选手在合成特征或将分类特征合并为新特征时,都有不同的方法。
让我们更深入地看看Titaniccompetition和HousePricescompetition这两项比赛。
Titanic图片来自ViaggioRoutard
Titanic比赛非常受初学者欢迎,很多Kaggle用户都不断参与这个比赛。因此,这个比赛的EDA往往写得很好,并且有详细记录,是我看到的最清晰的。
数据集包括一个训练集电子表格,其中包含一列「Survived」,表示乘客是否幸存,以及其他补充数据,如年龄、性别、票价等等。
我选择用于分析的EDA是由I,Coder提供的EDAtoPredictionDietanic,déjàvu提供的TitanicSurvivalforBeginnersEDAtoML,katerinaKokatjuhha提供的InDepthVisualisationsSimpleMethods。
所有这三种EDA都以原始指标开始。
I,Coder描述的数据集
数据预处理过程中对空值或缺失值进行处理是关键一步。本文选取的三个EDA,一个在前期处理了这一问题,另外两个在特征工程阶段进行处理。
I,Coder反对指定一个随机数来填补缺失的年龄:
正如我们前面看到的,Age特征有177个空值。要替换这些NaN值,我们可以为它们指定数据集的平均年龄。但问题是,有许多不同年龄段的人,我们不能把4岁小孩的平均年龄分配到29岁。有什么方法可以找出乘客的年龄段?我们可以检查名称特征。在这个特征中,我们可以看到像先生或夫人的称呼,我们可以将先生和夫人的平均值分配给各个年龄组。I,Coder输入的年龄
I,Coder将特征工程作为纯数据分析的一部分,然而其他两位作者认为它是一个独立的步骤。
这三位kernel作者在深入了解数据、找出数据间潜在相关性时,都非常依赖图表和可视化。他们使用的图表包括因子图、交叉表、条形图、饼图和小提琴图(结合箱线图和密度图特征的一种图)等等。
dejavu关于幸存者性别的图表
你可能对泰坦尼克号中的「女性与儿童优先」这句话很熟悉。在最初的数据分析中,对每位作者来说,年龄和性别这两个特征很重要。也可以对收入背景(如票价所示)进行一些详细的检测。
船上的男性比女性多很多。尽管如此,幸存的女性几乎是幸存男性的两倍。女性在船上的幸存率约为75%,而男性约为1819%。
——I,CoderJekaterina和I,Coder都是基于对图表和数据的视觉检测得出结论,如Jekaterina所写:
性别:女性的幸存机会更高。船舱等级:拥有头等舱票更有可能幸存。血亲关系和规模:中等规模的家庭比独自旅行的人或大家庭的幸存率更高。原因可能是单独的人会想牺牲自己去帮助别人。对于大家庭,我认为是整个家庭太难管理,因此家族成员都在寻找彼此而不是忙着上船逃生。救生船C有更高的幸存率。有趣的是,大部分头等舱的乘客乘坐的就是救生船C。
Jekaterina绘制的反映船舱等级和救生船的图表
DejaVu的EDA在分析的每一步都记录了一个准确的数字,就每个特征对最终预测的重要性提供了一个很好的反馈。
特征工程三位kernel作者的特征工程存在很多可变性。
每位作者选择不同数量的bucket作为连续变量,如年龄和票价。与此同时,他们都以不同的方式处理家庭关系,I,Coder建立了一个SibSip(血亲关系)——是独自一人还是与家人(配偶或兄弟姐妹)一起(family_size和alone),Jekaterina则列出了一个客舱bin,并提出以child(儿童)或adult(成人)作为特征。
Jekaterina列出的客舱等级字母
I,Coder在剔除不相关的列时特别激进:
名称—>我们不需要名称特征,因为它不能转换为任何分类值。
年龄—>我们有Age_band特征,所以不需要这个。
船票—>它是不能被分类的随机字符串。
票价—>我们有Fare_cat特征,所以不需要。
客舱—>有许多缺失值,也有许多乘客有多个舱位。所以这是一个无用特征。
票价范围—>我们有Fare_cat特征。
乘客身份—>无法分类。对于填补步骤,Jekaterina写道:
上的救生船:用一个主要类来填充船舱等级:因为票价中只有一个缺失值,我们将用相应船舱等级的中值进行填充年龄:有几种输入技术,我们将使用均值上下范围内的随机数进行填充
她确保新的填充数据不会破坏平均值,进行了总结了:
Jekaterina检测新输入值是否破坏均值
点评三位作者都有检查数据并描述整体形状。
I,Coder考虑了整体的缺失值,而Jekaterina在接近尾声时才开始考虑。
每个人都着眼于幸存者的分类,然后按性别分类幸存者。交叉列表、因子图和小提琴图都是常用的图表。Jekaterina还绘制了一些非常有趣的图表。
当涉及到特征工程时,作者们有些分歧。作者在构建新特征的问题上存在差异,一些人将其视为一个独立的步骤,另一些人则在初步数据分析时对其进行处理。围绕分箱的选择各不相同,随着年龄、产权和票价的不同,所收到的bucket数量都不同,并且只有Jekaterina构建了一个离散的child/adult(儿童/成人)特征。
对于缺失值的填充方法也不同。I,Coder建议查看现有数据以预测估算值,而Jekaterina确保她的估算数据不影响均值。
他们在思考和处理数据上有一些明显的相似之处,主要是在可视化和特征工程上有些差异。
房价该图由美国顾问团提供
房价预测是另一种结构化数据比赛。它比上面的Titanic比赛有更多的变量,包括分类、顺序和一些连续特征。
我所选择的用来分析的EDA是PedroMarcelino的ComprehensiveDataExplorationwithPython,Angela的DetailedDataExplorationinPython,以及SangeonPark的FunPythonEDAStepbyStep。
虽然这些数据在类型上类似Titanic,但实际上复杂得多。
在爱荷华州埃姆斯住宅问题中,有79个解释变量用来描述这些房子的方方面面。该竞赛要求你预测每间房的价格。Pedro描绘了售价
Angela和Pedro花了一些时间来研究与Titanic比赛中类似的原始数据。Angela在直方图上画出了售价,并绘制了关于这些特征的热图。而Pedro也描绘了售价,并得出了以下结论:
偏离了正态分布有明显的正偏态出现了尖峰态
之后,Pedro将自己置于买家的角度,猜测哪些特性对他来说很重要,从而来看他的选择和售价之间的关系。之后,他建立了一个热图,让自己对特征有更加客观的观察。
与售价相关的特征图
相比之下,Angela以一种更加客观的方式来描述,她通过相关关系列出了数字特征,也描绘了与售价相关的特征图,从数据中寻找模型。
Sangeon果断剔除了缺失值和离群值(并使用线性回归估算了临界线附近的异常值),之后才开始描绘与售价相关的多方面特征。
Pedro一直在寻找数据之间的相关性,以检查数据丢失问题。他提出:
丢失数据有多普遍?丢失数据是随机的还是有模式的?
这些问题的答案对于实践很重要,缺少数据可能意味着样本容量的减少。这会阻止我们进一步的分析。从真实性的角度来看,我们需要确保数据丢失不会导致偏颇。为解决这些问题,Pedro绘制了缺失单元的总数以及百分比,并选择删除了15%或是更多包含缺失数据的单元格所在的列。他再次依赖主观选择来决定移除哪些特征:
……我们会错过这些数据吗?我不这么想。这些变量似乎都不是很重要,因为它们中的大多数都不是我们在购买房子时所要考虑的方面。此外,通过仔细观察变量,比如「PoolQC」、「MiscFeature」和「fireplacery」等变量很有可能导致异常值出现,因此我们很乐意删除它们。Pedro对缺失数据的处理方法是,要么删除整个列(如果它们包含有大量缺失值),要么删除只有少数缺失值的行。他还建立了一个启发式的解决异常值的方法:
最主要是设定一个阈值来定义观测值是否为异常值。为此,我们将数据标准化。在这种情况下,数据标准化意味着将数据值转换为平均值为0,标准差为1的数据。他的结论是,从静态的角度来看,没什么可担心的。但在重新审查了数据之后,他删除了一些觉得可疑的数据点。
特征工程Sangeon检查了数据的偏态和峰度,并做了一个wilxoccrank测试。他用一个非常好看的3D图进行总结:
Sangeon的3D特征图
与此同时,Pedro讨论了这些数据的正态性、同方差性、线性度和无相关误差,他将数据归一化,并发现其他三个问题也得到了很好的解决。
点评这三个kernel的作者都没有做过多的特征工程分析,可能是因为数据集中已经有很多的特性了。
有很多策略来决定如何处理这些数据,有些作者采用了主观策略,有些则直接采用更加客观的测量。对于何时以及如何剔除缺失数据或异常值,他们没有达成明确的共识。
与之前Titanic竞赛相比,这里更多的关注于统计方法和完整性。可能是因为有更多的特征需要处理,也有可能是无效的统计结果会对整体产生更大的影响。
自然语言处理自然语言或NLP数据集包含单词或句子。虽然核心数据类型与结构化数据竞赛中的相同,但用于自然语言分析的工具——文本是特定的,这会导致不同的分析策略。
在其原始形式中,语言不易被机器学习模型识别。为了将其转换为适合神经网络的格式,需要对其进行变形。一种流行的技术是BagofWords(词袋),其中句子被有效地转换为0或1的集合,即特定单词是否出现。(不出现为0,出现为1)
由于需要转换数据,大多数Notebook的前几个步骤倾向于将文本转换为机器可读的内容,并且这一步骤都趋于相似。之后,大家的方法会出现很大差异,并对特征工程应用各种不同的可视化和技术。
恶意评论分类我看到的第一个NLP比赛是ToxicCommentClassifcationCompetition(恶意评论分类),包括一个数据集,其中大量数据来自维基百科讨论页面的评论,通过评论在等级上的得分,来区分是侮辱、淫秽,还是恶意评论等。参与者面临的挑战是预测给定评论的恶意标签。
我选择用于分析的EDA是Jagan的StoptheS@$ToxicCommentsEDA,RhodiumBeng的ClassifyingMultilabelComments和FranciscoMendez的Don'tMessWithMyMothjer。
三位作者都从描述数据集开始,随机抽取了一些评论。虽然没有缺失值,但评论中有很多噪音,并且不清楚这种噪音在最终的数据分析中是否有用。
Jagan绘制的恶意分类分布图
恶意程度在各个类别之中不是均匀分布的。因此,我们可能会遇到分类失衡问题。——JaganFrancisco剔除掉无实际意义的词(例如「and」或「the」)。他用双标图绘制出一个特定单词最适合的类别。
双标图中,大多数单词都是正常排列的,也有一些例外,肥胖与厌恶有相关性,这很令人惊讶,因为它是图表底部唯一的非种族词语,图表中有一些通用的冒犯性词语,像die(死亡)这样的词语只与威胁有关。Francisco之后提出错别字和恶意之间是否存在关联。
显然是有的,而且令人惊讶的是,当mother这个单词拼写错误的时候从来都不会跟厌恶或威胁扯上关系,但当它拼写正确时,就会有一些关于厌恶和威胁的评论。是不是人们倾向于在威胁某人或表达厌恶的时候下笔更谨慎一些呢?随着Francisco进一步的挖掘,他发现在很多情况下,恶意评论中包括一遍又一遍复制粘贴的短语。在删除重复的单词,重新分析后,他发现了一组新的相关性。
普通的恶意评论中一般使用温和的词,如母亲、地狱、枪、愚蠢、白痴和闭嘴等,一些恶意的淫秽评论中会使用fword。从双标图中也可以知道恶意和侮辱是相似的,至少是有攻击性的,而更严重就是厌恶和威胁。这三位作者都利用数据可视化取得了很好的效果。
Rhodium创建一个字符长度直方图和分类类别之间的热图,并发现了一些标签之间高度相关,例如,侮辱评论有74%的可能也是淫秽的。
Jagan绘制了一些词云、热图和交叉表,观察到:
非常恶意的评论可以被归纳为恶意标签
除了少数例外情况,其他分类似乎是恶意评论的一个子集特征工程Rhodium将文本变成小写,手动将句法结构变成事物,并手动清除标点符号。
Jagan绘制了各种与恶意相关的特征来寻找相关性。他发现,垃圾邮件经常存在恶意。
对于单个单词和单词对,Jagan和Rhodium都使用TFIDF绘制顶部单词。
点评他们似乎都遵循了所关注领域内的几个最佳实践步骤,包括小写文本、处理结构和清理标点符号。然而,也有认为这些可能是潜在的特征方向,而不仅仅是噪音(例如,Francesco发现错字和恶意之间的相关性)。
恐怖小说家身份识别SpookyAuthorIdentification(恐怖小说家身份识别)竞赛提供了三个恐怖主题作家EdgarAllanPoe,HPLovecraft和MaryWollstonecraftShelley写的一些文本片段,要求参赛者构建一个能够将作家和特定文本进行匹配的预测模型。
我选择用于分析的EDA是Anisotropic的SpookyNLPandTopicModellingTutorial,Bukun的TutorialDetailedSpookyFunEDAandModelling和HeadsorTails的TreemapHouseofHorrorSpookyEDALDAFeatures。
这个数据集的有趣之处在于它的简单性,除了作家之外,文本中几乎没有其他非结构化的数据。因此,所有的EDA都只关注用不同的方法来解析和分析语言。
大家首先检查数据集,然后挑出几行来绘制每位作家的故事数目。Bukun还研究了每位作家文章中的单词长度,而Anisotropic绘制了一张整体单词数目的条形图。
Anisotropic表示,这些词都是常见的词,不仅仅出现在三位作家的恐怖故事和小说里,还有报纸、儿童读物、宗教文本——几乎所有其他的英语文本里都可以找到。因此,我们必须找到一种方法来对数据集进行预处理。首先去掉通常不会带来太多信息的单词。
他们都构建了词云图来显示出现最频繁的单词:
HeadsorTails根据50个最常见词构建的词云
HeadsorTails也对每位作家的整体句子、单个句子和字词长度进行绘制,并发现作家之间的细微差异。
Anisotropic和Bukun讨论了分词并且移除了停用词。他表示,这个阶段的工作是尝试将类似单词的不同变体减少到一个单独的术语(一个单词不同的分支都被简化为单个词干)。因此,如果文中有「running」、「runs」和「run」,将变成「run」。(当然,会失去过去、现在或将来时态)。
在分词之后,Anisotropic删除了停用词,还原了词性并重新建立出现频次排在前50的单词的词频柱状图:
Bukun绘制了出现频次前10的单词的词频图,并发现了一个不同的集合:
HeadsorTails也这样做了,另外,还通过作家来看分词和词干化之后词频排在前面的单词。
Bukun和HeadsorTails都使用TFIDF值来查对于特定作者来说最「重要」的单词。
HeadsorTails将作者最重要的词绘制在一张不同的图表中
Bukun观察到频率最高的二元模型和三元模型(分别是两个和三个单词的集合)。
HeadsorTails绘制了二元模型之间的词关系
Bukun和HeadsorTails都进行了情绪分析,并观察了每位作家的整体负面情绪。
Bukun使用了一种叫做「NRC情感词汇」的词典来检测每个文本片段中的「恐惧」、「惊喜」和「快乐」的数量,并利用词云图、表格、条形图来可视化作家们的情绪。
Bukun绘制的与开心匹配的词云
特征工程Bukun建议增加一些可能的特性,包括逗号、分号、冒号、空格的数量以及包含大写字母的单词或是以大写字母开头的单词,并绘制每一种的图像。
HeadsorTails强调:
我们已经注意到,可以通过知名人物来识别这三位作家。MaryShelley写了「Raymond」,Lovecraft写了「HerbertWest」。但是对于一般的名字呢?一些作家在某些特定的情况下更乐意使用名字吗?这是在研究完句子或字符长度之后,我们要关注的重点。从这个角度来看,HeadsorTails依赖于babynames包,它以每年最受欢迎的名字为特征,为数据添加一个额外的特性。
Bukun和HeadsorTails都注意到作家之间性别代词的分类问题,HeadsorTails也注意到句子的主题、作者的首字母、尾字母以及特殊单词的数量、每一个句子里面特殊单词所占的比重、对话的标签和押韵。(这是一个很酷的想法)
HeadsorTails 绘制的各种测量值
HeadsorTails绘制了一张图总结,展示了特征的相互作用:
HeadsorTails的图展示了特征交互
点评这是一项值得研究的竞赛。因为文本片段更长,而且不依赖于结构化的数据。
他们倾向于利用小写单词、词干和分词等NLP常见应用,同时他们也倾向于使用比Toxic中更先进的技术,比如情感分析和二元、三元模型分析技术。
在这两个竞赛中,他们都用到了TFIDF。
在特征工程阶段,他们设计了各种各样新特征。包括每个句子的平均单词数、标点符号的选择、以及单词是否重复等。
via:thekevinscott.com
雷锋网AI研习社编译整理。
该话题由百家号作者雷锋网「简介:雷锋网——关注智能与未来!」
更多有关数据分析秘籍在这里:Kaggle六大比赛最全面解析(上)的话题讨论请访问百家号Litex小程序关注作者-雷锋网

「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite_使用指南:

步骤1:微信扫描「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite小程序码即可使用;

步骤2:微信搜索「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite小程序名称即可使用;

步骤3:微信网页访问即速商店-长按识别「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite小程序码即可使用。

「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite_服务声明:

本服务由「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite小程序开发者向微信用户提供,并对本服务信息内容、数据资料及其运营行为等的真实性、合法性及有效性承担全部责任。

"「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite"由开发者"「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite"原创首发于微信小程序商店shop.jisuapp.cn,转载请注明出处。

「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite小程序截图

「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite小程序评分

4.6

共收到5条评价

5星3条

4星2条

3星0条

2星0条

1星0条

「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite小程序评论

请给小程序评分

  • 请带上你那张虚伪的脸滚╮2020-01-29 02:16:37

    Nice,「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite微信小程序用户体验非常好

  • 十步杀一人2020-01-29 02:08:45

    这「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite微信小程序真的很实用,用这个就不用下载APP 了,直接用微信进入,很方便。

  • 噬魂阁公会2020-01-29 02:07:43

    自打用了这个「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite小程序吧,手机里的同类APP就被我卸载了~

  • 炫丨主力门派2020-01-29 02:05:57

    这个「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite小程序的页面我很喜欢,赞!

  • 狼魂丶网游公会2020-01-29 02:03:02

    「数据分析秘籍在这里:Kaggle 六大比赛最全面解析(上)」百家号Lite微信小程序功能居然这么多,而且很容易上手,还说啥,体验一下就知道。

提交小程序关注微信

海量浏览,人人体验

提交申请

入驻催审,首页推荐