美文网首页程序员
kaggle-zillows竞赛的变量分析

kaggle-zillows竞赛的变量分析

作者: 只是不在意 | 来源:发表于2017-07-20 23:02 被阅读0次

最近做了kaggle网站的zillowst竞赛,也学到了不少。这次zillows给的文件有60个变量,各种各样比如泳池,壁炉,房间数等等,一眼看过去会晕死。所以如何处理变量也是比较费心思和时间的,下面小结一下自己的一点心得。

首先把train和test合并,然后将缺失值排序。

train<-merge.data.frame(train_2016,properties_2016,by="parcelid")

res<-sapply(train,function(x) sum(is.na(x)))
miss<-sort(res,decreasing=T)
  1. 按照缺失值排列,看出很多id是大量缺失的,果断的删掉一些不重要的id,比如hashottuborspa。
train_left<-train_left[,names(train_left)!=c('hashottuborspa')] 

查看数据的相关性
从图中可以看出,很多变量本身是彼此联系的,比如跟tax有关的,跟pool有关的,跟sqfeet有关的。根据不同因素查看彼此关系。
ie 看看几个tax变量之间的关系,用corrplot可视化

tax<- data.frame(cbind(train_left$landtaxvaluedollarcnt,train_left$structuretaxvaluedollarcnt,train_left$taxvaluedollarcnt,train_left$taxamount))
corrplot(cor(tax, use="complete.obs"), type="lower"

这里的代码我写的不太好,一个个搜索再添加笨了点。应该可以用字符串tax找出相关变量,自动形成数据框。以后查下怎么写。



这里可以看出,taxamount和其他tax变量关系密切,从lm也可以做出类似分析,所以删去taxamount以免重复。类似的不再赘述。

train_left<-train[,names(train)!=c('taxamount')]
  1. 线性分析补足变量的缺失值
    zillows文件集里,对于bedroom和bathroom的变量也很啰嗦,有好几个来来回回的,比如'calculatedbathnbr'这个和bathroom类似,被我嫌弃的删除。然后其他有点关系又没有重复的几个变量,可以用lm函数,看看之间的关系。比如这里fullbathcnt和bathroomcnt,p值超小,R的平方值很多,而且bathroomcnt几乎没有缺失,所以可以用线性方程的系数补足fullbathcnt的缺失值。


train_left$fullbathcnt[is.na(train_left$fullbathcnt)]<-(-0.001002)+0.970993*train_left$bathroomcnt[is.na(train_left$calculatedbathnbr)]
  1. 某些变量用平均数或中位数补值,比如这个楼层数,以1和2层的居多,两者的平均数是1.63(虽然在现实中不存在)。
    建成的年代用中位数补值。
train_left$numberofstories[is.na(train_left$numberofstories)]<-1.63
train_left$yearbuilt[is.na(train_left$yearbuilt)]<-median(train_left$fullbath,na.rm=T)

以上这些办法,也可以利用mice包等自动插值函数,或者逐步回归等自动筛选,我这样做,是感觉自己比较能有主导性,知其然也知其所以然吧。

  1. 部分非实际数值的类型比如fips,就是66这种zillows内部代码,所以进行因子化分类。
train_left$propertylandusetypeid<-factor(train$propertylandusetypeid)
train_left$fips<-factor(train_left$fips)
  1. 对于有或无的设施,根据kaggle论坛经验,设为-1比设为1更有效果。
train_left$fireplaceflag[is.na(train_left$fireplaceflag)]<-(-1)
train_left$fireplaceflag[!is.na(train_left$fireplaceflag)]<-1
  1. 日期也进行因子化。
train_left$transactiondate<-as.Date(train$transactiondate,format="%m%d%Y")
train_left$transactiondate<-as.factor(train_left$transactiondate)

......
忙活了半天,终于可以开始运算了。
自从xgb这个大杀器出来以后,大部分的参与者都是用了这个算法,当然调参各有千秋。我在这方面大概还算是个小白。

另外影响成绩的,还有房屋地点和交易时间的分类,这步我还没有找到好的调整方法。
另外zillows只公布了一年的数据,用来预测2016-2017共六个月的数据有点立场不足。他们的对策也很搞,在截止前两周,会再发布新的日期数据。估计到时候大家又是一场手忙脚乱。


All in all, features的取舍和补值是数据分析中重要的一步,但不是最重要的一步。最近看kaggle上面巴黎银行的竞赛复盘,把其中的变量大胆的删掉了20多个,只留下13个变量,但是接下来,按照获奖者的思路,把某个变量(他怎么找到的?)与其他变量相结合,做出了magic feature的矩阵,然后用xgb运算后,也可以得到前30名。能力,时间,运气,缺一不可呀。

个人思路,供参考。

相关文章

  • kaggle-zillows竞赛的变量分析

    最近做了kaggle网站的zillowst竞赛,也学到了不少。这次zillows给的文件有60个变量,各种各样比如...

  • 曲线回归分析

    曲线回归的分析是先将因变量或者自变量进行变量转换,然后对新变量进行直线回归分析,最后将新变量还原为原变量。 案例 ...

  • (13)连续变量频率分析

    例子:对变量“年龄”进行分析。 打开数据文件,【分析】--【描述统计】--【频率】 选择要分析的变量“周岁年龄” ...

  • Python学习笔记-3群18组-杜杜狼-2017.8.11

    Lesson 16 回归分析 Regression Analysis: 研究自变量与因变量之间关系形式的分析方法,...

  • php基础知识面试点

    引用变量考察点 回顾真题什么是引用变量?在php中,用什么符号定义引用变量? 考点分析分析:考官考点PHP引用变量...

  • SPSSAU教程06:聚类权重分析指标解读

    多元分析,又称多变量分析,是用于研究多个变量数据之间的关系,包括了多重回归分析、判别分析、聚类分析、主成分分析、对...

  • 数据分析之Logistic回归

    所有的线性回归分析中,因变量的类型都是连续变量,如果需要预测的变量类型为分类变量,则需要采用回归分析中的Logis...

  • stata之中介效应分析

    本篇记录下用stata进行中介分析,其中,自变量,中介变量和因变量均为连续变量。 中介分析可以用命令sem,即进行...

  • 回归分析

    知识点普及 回归分析:研究自变量与因变量之间的关系形式的分析方法,主要是通过建立自变量y和影响他的自变量Xi(i=...

  • 相关回归常见问题

    多数情况下,变量关系研究是问卷研究的核心,变量关系研究包括相关分析,线性回归分析,中介作用分析,调节作用分析等,并...

网友评论

    本文标题:kaggle-zillows竞赛的变量分析

    本文链接:https://www.haomeiwen.com/subject/itbjkxtx.html