这几天在看Kaggle上NYC Taxi Trip Duration竞赛的Kernels(analyst们分享的数据分析/挖掘心得,可以当成tutorials来看观摩),排名第一的Kernel基于R语言,主要是EDA分析(Exploratory Data Analysis),内容翔实到可怕,我花了两天才看完,有兴趣的可以去围观。
这里我总结一下在看完那篇Kernel之后,我认为值得记录的在EDA中的一些要点:
上一篇笔记里我提到在R里做数据准备用
dplyr
包,这里我更正为tidyverse
包。dplyr
包只是数据处理的主要工具包之一,并不完整。根据R for Data Science,tidyverse
包是一系列data manipulation/wrangling工具的集合,包括了dplyr
、tidyr
、tibble
等在内,即可以通过tidyverse
一键载入所有(当然还需要结合其他的包),懒人福音。载入数据(CSV文件)时,如果数据量很大,最好不要用
read.csv()
或者read.table()
,调用read_csv()
或fread()
会更高效。载入数据之后应先检查missing values、做reformatting(比如把某些character型或integer型数据转换为factor型数据),已经分好训练集和测试集的应做Consistency check。
之后对每一个变量(或特征)做简单统计分析和可视化,以便初步了解数据。
接着分析变量与变量间的关系,主要是每个变量和目标变量(target)的关系。这一步的目的是:a) 进一步理解数据,b) 找出显著影响目标变量的特征,c) 识别异常值, d) 识别潜在的新特征,为特征工程做准备。
异常值的识别有时候需要结合两个以上的变量,且需要对与问题有关的真实世界有了解。
构建新特征主要依靠对已有特征的拆分和重组,有时候需要引入新数据集。
日期与时间变量可以用
lubridate
处理;ggplot2
包的geom_tile()
可以结合两个维度的日期/时间变量形成热感图,有时候可以据此得到很有用的结论。有关经纬度的数据应结合地图来做分析和可视化,
geosphere
包+leaflet
包,谁用谁知道:)
说句题外话,关于做EDA的时候应该是针对所有数据,还是只针对训练集数据,不同人有不同理解。我导师倾向前者,Kaggle上不少人则倾向后者。我的理解是,二者皆可行,毕竟抓到老鼠的都是好猫,至于实际项目中选择哪个,看建模的目的和对建模的理解。
以上。