数据挖掘与R语言_第1页
数据挖掘与R语言_第2页
数据挖掘与R语言_第3页
数据挖掘与R语言_第4页
数据挖掘与R语言_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于多因素的公共自行车需求量预测1选题背景近年来,公共自行车作为自行车出行模式的创新应用,不但能够促进环境可持续发展、减少空气污染,而且为用户出行提供了便利的交通方式。用户可以在起点附近的公共自行车站点租用自行车,并在终点附近的站点将其归还。最早的公共自行车项目发源于20世纪60、70年代的丹麦,欧洲公共自行车系统发展最早,运营经验丰富,目前发展到第三代,已达到较为完善的发展水平,并在美国西雅图、纽约、华盛顿等城市广泛应用。我国公共自行车发展起步虽然较晚,但大量的需求极大地推动了系统的快速发展与完善。公共自行车系统运营的关键在于满足用户对公共自行车的出行需求,在不同的自行车站点对自行车数量进行

2、合理的调度安排则是满足用户使用需求的关键途径,而且能够充分发挥公共自行车系统综合效益。目前公共自行车进入旺盛的发展周期,然而相关公共自行车需求预测的研究却寥寥无几,使得调度公共自行车的相关研究方案缺乏科学充分的理论支撑。因此,公共自行车的合理调度的问题亟待解决,本文将从公共自行车系统借还需求预测展开研究,希望通过建立多因素的预测模型对公共自行车借还需求的进行相对精确的预测从而积极推动公共自行车的普及与发展,提高公共自行车的整体使用率,推动绿色、健康的出行方式,推动低碳生活的发展。2研究方法2.1广义加性模型经典的线性回归模型假定因变量与自变量量、是线性形式:E(Y|XhX2r.,Xp)二血+內

3、兀+0風+其中,!,,|JT通过最小二乘法获得。加性模型扩展了线性模型:&nxLFx3Xp)=fo+i(x1)+52(x2)+4(Xp)其中,:y二I*P是光滑函数,注儿!二门,通过backfitting算法获得广义加性模型是广义线性模型的扩展:(川二呦+Ji(XL)4辺优分+.+Sp(XF)H二印十丁二卉(X其中,n、儿-V-1,.为线性预测值,是非参数光滑函数,它可以是光滑样条函数、核函数或者局部回归光滑函数,它的非参数形式使得模型非常灵活,揭示出自变量的非线性效应。模型不需要节对x的任何假设,由随机部分丁(randomcomponent)、加性部;(additivecomponent)及

4、联结两者的连接函数T(linkfunction)组成,反应变量厂的分布属于指数分布族,可以是二项分布、Poisson分布、Gamma分布等。2.2随机森林决策树是用树的结构来构建分类模型,每个节点代表着一个属性,根据这个属性的划分,进入这个节点的儿子节点,直至叶子节点,每个叶子节点都表征着一定的类别,从而达到分类的目的。常用的决策树有ID4,C4.5,CART等。在生成树的过程中,需要选择用那个特征进行剖分,一般来说,选取的原则是,分开后能尽可能地提升纯度,可以用信息增益,增益率,以及基尼系数等指标来衡量。如果是一棵树的话,为了避免过拟合,还要进行剪枝(prunning),取消那些可能会导致验

5、证集误差上升的节点。随机森林实际上是一种特殊的bagging方法,它将决策树用作bagging中的模型。首先,用bootstrap方法生成m个训练集,然后,对于每个训练集,构造一颗决策树,在节点找特征进行分裂的时候,并不是对所有特征找到能使得指标(如信息增益)最大的,而是在特征中随机抽取一部分特征,在抽到的特征中间找到最优解,应用于节点,进行分裂。随机森林的方法由于有了bagging,也就是集成的思想在,实际上相当于对于样本和特征都进行了采样(如果把训练数据看成矩阵,就像实际中常见的那样,那么就是一个行和列都进行采样的过程),所以可以避免过拟合。3数据集介绍这里我们选用kaggle比赛中公共自

6、行车需求量预测的一个数据集。jJl1-dat.Ef.iri01e曰刃旳nholidayvorkingdsweath日teiphuriidityiFLndEPEeccasualregistmrEUCiunt0Ci19.8414.395Bl031316辫料曲將10010213.635BO0B3240100113.635BQ052732|11v:1-1.z.i1:It:-10019.8414.395750011100293412.SB756L00320111(11)19.0213.6358002021(11)18,213.aeBi012310019.3414.39575017S11100113.12

7、17.425760B614II:皿:吋111!.iH.:-.IL-:-l-100114.T616.逓Bl15.001226so56q100117.2221.217719.0012295584-101?ZIS.3S2Z.7257Z19.歸5474T阳1ljriQ1口aQ9791=;79-iann-iQ:只711皿项目数据描述如下:datetime:代表数据日期,以年-月-日小时的形式给出。season:数据记录时的季节。1为春季,2为夏季,3为秋季,4为冬季。hodliday:当日是否为假期。1代表是,0代表不是。workingday:当日是否为工作日,即既不是周末也不是假期。1代表是,0代表不

8、是。weather:当日天气:1:天气晴朗或者少云/部分有云。2:有雾和云/风等。3:小雪/小雨,闪电及多云。4:大雨/冰雹/闪电和大雾/大雪。temp-当日摄氏温度。atemp-当日人们感觉的温度。humidity-当日湿度。windspeed-风速。casual-会员租赁自行车数registered-非会员租赁自行车数。count-总租车数,我们需要预测的值。即casual+registered数目4多因素分析4.1数据预处理在原始数据集中,我们可以看到datetime(代表数据日期),以年-月-日小时的形式给出。为了后续的分析我们将年月日与小时分离。首先我们使用read.csv函数读入我

9、们的数据。tralnIUD1011Itd.U!LII-d1liyhead(train)UULH冃1IIIIIIHJL1UU1IUAfibble:6x12datetimeaeaaonholidaywKirkingdayweathertempatemphumiditywindspeedcasualisie刖w如A2011-01-0100:00:001001.8414.403132011-01-0101:00:0010019.02S00S322011-01-0102:00:0010019.02im五S005272011-01-0103:00:0010019.8414.47503102011-01-0

10、104:00:0010019.8414.475002011-01-0105:00:0010029.8412.9756.000L从上述提升中,我们可以看到R将datetime列以datatime的形式进行解析season、holiday等列按照整数进行解析,temp、atemp等列按照浮点数进行解析。为了减轻缺失数据带来的影响,我们使用na.omit()函数。b-wi兀丄morevariaoie:c卜train-na.omit(train)我们使用factor来创建因子变量rralndseasonr,-all,,rw1TerD)tralnSwEiihc-ficto-(trainher,label

11、s-cftDod,Nomal,Bd,VeryEadtradnlhour-facto-(hou(ymd_hms(trainldatetime)j我们使用as.POSIXct()函数来将时间格式化,同时我们添加该日期属于周几的字段,用于后面的分析。tralntTlmes-rosixctfstrfr1me(yrd_lini5(tra1nldarerlre)Pformat-KH:W:?6SP,)Bformat-,r%HW%SP,)train电kdayIrannSNeekday1254冋N门1211451屈三四五亠J-n曰周凰周尽同周眉冏亠八日二三四五丸日周凰周周周周fafl亠八日二三四五亠八日周ffl

12、周周周周周.H亠八日一三四五亠八日周3周S周周周S亠八日-四aA日胃S周周.H周Hja孟日-二三五A日旦.S.3月周a号亠艸日一二三四-K日S.S.S.1周周.i.aAB二二四五亠周凰周尽同周眉冏亠八日一二三四五.亠用凰周周周周faflAB一二三四五A周咼周周周周周咼亠八日一二三四五亠.SSS用周周周S孟日一二三凹五A胃国.S1-周周H博為日-二三四五六蛊同.层用S号亠!日二二四五亠丈日一二三四五亠II罔罔周周hi;周Ja/AB一二三四五.亠周周.(9周周周周.A日一二三四五A胃as.8周周s?aAB一二三四五盒周S.S.S.S周SS一二三四五Ag.arHEj*.g.g.g.afi六日一二三四

13、五六-iHEf.i周fl周.a貢日一二三四五.亠眉周尽月周网网貢日_一一三四五亠.H3周周3周网同亠八日一二三四五亠周咼.周周周周.亠八日一二三四五亠八H厨.用H周周S4.2天气因素分析weather_sum论maxher_suniGoadNormalBadveryBad719228348591GoadNormalbadVerybad从图中我们可以看到,这两年中好天气的居多。公共自行车的使用极容易受天气条件的影响,在不同天气条件下对需求的影响不同。因此在此部分我们对天气因素进行分析,首先对这两年来每小时的自行车使用量进行分析。ddply和aggregate是R语言中两个用来整合数据的功能强大的

14、函数。ddply函数的用法如下:ddply(.data,.variables,.fun=NULL,.,.progress=none,.inform=FALSE,.drop=TRUE,.parallel=FALSE,.paropts=NULL)weather_summary-ddply(train,.(weather,hour),summarise,count=mean(count)利用ddply函数,根据weather和hour进行分组,然后求每一组的平均值。我们可以看到分组后的结果如下图1224567weatherhourcountjood01158SB158Good1八020270GOiO

15、id25.0823323aweanher_summary3/ss39404189ID1.112丄3111516Go-od32.7439446Good41.2733564Good51.6156463Good64.6438356Good711.8607143GoodB22.87B5714Good934.2435424Good1052,5000000jood1169.996+789Good1Z7S.7122S07&3iod1285.17B0E22Go-od1486.6633333Good1585.647749242斗斗斗546417484950冋5midINormalNormalNormalNorm

16、almomalNormalNormalNormalNormalNornalNormalBadBadBadJL上UWMFF丄勺ggplot(train,aesfx=hour,/=count,colonr=weather)+十geom_point(data=weather-summary,aes(group=weather)+geom_lineCdata=weather_siiuiniairy,aesCgroup=weathe+十seale_M_discrere(Hour)十4-seale_y_continuousfCount)+十匸heme_mininial+ggtitlefPeoplerent

17、bikesmci记whentheweatheriscor.nScount?trann$temp)Pearmorisproduct-momentcorrelationdata:tra-inScountandtrain$tenpt=44.?82:df=10B84?p-value-=2.2e-16alternafivehypothesis:truec&rrelafianisnotequalto095percentconfidence1nterva.1:.37847260.41019?Csampleesfimates:cor.3944526我们可以看到自行车的租赁量和温度之间的相关系数为0.39445

18、36cortest(tradn$courit,tr-ann$atemp)Pearson1sproduct-momentcorre1ationdata:traiH$countandtrain$atempt=44.157,elf=10BB4fp-valueseson_summaryggpHot(trsri门,aesCx=hour,y=count,colour=season)+geom_point(data=season_summary,aes(group=season)+geom_lineCdata=season_sunimary,aesCgroup=season)+seale_x_discrwt

19、w(Hour)+seale_y_confinuous(count,r)+theme_mindmal0+ggfitle(PeoplerentbiIkesinorEinFal1,andmuch1essinspring.nr)+theme(plot.fitle=element_textCsize=LB)430PanseasonSuinmsiWinter23斗&a78910111213141S1617181920212223Hour从图中我们可以看出,人们更喜欢在夏天租赁自行车。在春天租赁自行车相对其他季节次数较少。4.5会员和非会员因素分析我们利用boxplot分别画出注册用户租车数与小时之间的关系

20、和非注册用户租车数与小时之间的关系。:boxplot(tr耳Tn$rEgister亡日-tridn$hour,xlab=Egsterd,yab=rcount,r)boxplot(tr耳rn$casualtr耳Tn$hour,xlab=rcasual,yab=countJ01234507891D121斗16Ifl2D22012345678910121斗16192D22CH5USI从图中我们可以看出,会员集中在11时到18时进行租车,非会员集中在7时到8时,17到18时进行租车。这里我们使用density函数,首先求出分布情况,然后利用plot函数画出图。总观贾吐核密度阁N=10686Barkdw

21、dth=25.33我们可以看出总租赁量很大部分分布在100左右。会乩租値楚核匪麽图ON=10886Bandwidth-4.71我们可以看到会员租赁量量的分布在近30左右。II会钦机赁量核靈度閤0200400600800富匸*口N-10886Bandwidth-1947我们可以看到非会员租赁量量的分布在90左右。从上图我们可以看出,自行车的租赁人群中,很大一部分是非会员4.6风度因素分析原假设:风度和会员租赁自行车量是相互独立的achisq.testCtrainSwindspeed,trainScasual)Pearson5chi-squaredtestdata:trainfwindspeeda

22、ndtrainfcasualX-squared=89S3.8,df=8316,p-value=2.139e-07warnlngmessAge:Lnchisq.testCtPAinfwindspeed,tralnJ匸鼻51&1):chi-squaredii似算法有可能不难P-valuevO.Ol,所以我们拒绝了风度和会员租赁自行车量相互独立的原假设,选择了备着假设,即风度和会员租赁自行车量不相互独立。原假设:风度和非会员租赁自行车量是相互独立的chisq.test(trn$wnndspeed,trann$registered)Pearsonschi-squaredtestdat:traln$wi

23、ndspeedandtraln$reg1sxeredx-squarecl=17609,df=1710,p-vjilue=1warnnngmessage:inchisq.re5T(Train5wind5peed,rrainjreglsrered):ch-i-squard3iDlM法有可微不准P-Value0.05,所以我们接受了风度和非会员租赁自行车量相互独立的原假设histws-ggplot(data-train9ass(trainSwindspeed)i-geom_histog1111-ccxint)5breaks=seq(5a50)+seale_f1ll_grad1enL(count!Ps

24、low=np5Teelbluerrsh1gh=,FRed!r)+labs(t1tl=Histagzmforwiindspeed,r)41abs(K=,rwiindspeedr,ay=CQ4jnit,r)Histogramforwindsp&dGaunt!9DO!-iDOlrlii从图中我们可以看出,人们更喜欢在风度小于20时,租赁自行车。histAtemp=ggp1otCdata=traii,aesftrainSatenp)4-geom_histogramCaesCfil=.ccunz.cale_-f-ill_gradintCcouit1,1ow-5telblue,high-Red)+labs

25、(z-itle-H-i5Lograniforfeels1iketenpj+1dLs(x=FeelLiketemp,y=count)HistogramforfeelsliKetemp0102030HQFeelLiketemp从图中我们可以看出,人们喜欢在体感温度为10到35度时租赁自行车。4.7湿度因素分析原假设:湿度和自行车需求量的Person相关系数为0cor匸亡st(匸口廿门$liunrichty,Pearson1sproduct-momentcorrelatnondata:tralnjhuwidltyandtralnScountt=-34.915:df=10884,p-valueplot

26、(tralni$hum1ditzy,tralfifcasual)ao10Q租赁自行车。oa2D60irainShumidity从图中我们可以看到会员喜欢在湿度30到80时,JT11IVHIIIIwiIJ-JWSbI十MlXaTLMlpl。匸(匸rainShiniidity,匸raintregistered)020-4060SO1DOtraiinShunudltyon-n-8AA-S.UqoAa0_o塔8Psq从图中我们可以看出非会员喜欢在湿度35到85,租赁自行车。4.8周几因素分析aboxplotrainScasu-al-trann$Weekclay,xlab=,rcas=ual,ylab=

27、count)周日周一周二周三周四周五周龙吕旳吕l?sl吕lJ-3-JJcasual从图中我们可以看出,会员喜欢在周六周日租车,非会员在周一到周五租车较多。4.9各种因素与租赁量的相关性train.countirainribtefQdrraincasualtrainlempmain別emptrainhumidityb-am.windspead可见,count与temp、atemp是正相关,不过按照常识一般温度太高或太低,人们一般不会使用共享单车;count与registered的相关度要比casual高,registered、casual与count是正相关;count与humidity负相关,

28、说明湿度太大,单车使用次数会减少;count与windspeed关联度不太明显。4.10决策树分析为了研究非会员和小时之间的关系,我们选用决策树进行分析。train$hour1dtreedtreejcptablecpnspllx0.2B85507800.0632B14310.0612169220.0426503B30.0254545340.017707425O.DIOOOOOO6rQerrorl.aoooooo0.7114492:0.648丄石0.5B695090.54430050.51884600.5011.3B5XEror1.0002651.71165380.6474631.5875138

29、O.54500310.5198261O.5023346xstd0.0206181820.0168249250.015B634240.0134&09210.0121635590.0105037430.009727536这里cptable值中包括不同大小的树对应的预测误差。plotcpCdtree我们借助plotcp()函数画出交叉验证误差与复杂度参数的关系图。这里我们可以看最小的交叉验证误差为0.502标准差0.009,则最优树的交叉验证误差在0.493-0.51之间,因此我们选择七个终端节点。library(rpart.plot)rpartplcit(dtr芒e)hourl11013%3051

30、7%hurl=20hOLirlc1819742%rhOUM十10hour!fit-stl(tsuml)Errorinstl(t5unl):序列浚有周期,或其周期小于二t丁*h我们对其进行季节性分解,发现其并没有周期。对数据进行处理,求出每一个月的租赁量。5tl-as.charactertrannSdateyear-strsplitCstl,yearl-pHsreCsapplytyear,rE.1D,5apply(year,rE,2),sep=-,r)trainSymyearly(n_sumnarytsLw-tstyrn_summaryjcou门匸匸=c(20LL,11),frequency=L

31、2)tslanF&b23552328445633266?69MzirAprMayJunJnilAugSep387355051779713897769204883296791049476611688512OH4130957171769130220133425OctNov79522708891279121D5551Dec611839897700000ooooffisscs从图中可以看出,从总体来看每个月总的趋势是在上升的。我们对其进行季节分解进行了可视化,从图中我们可以看到,2012年每月的租赁量都比2011对应的租赁量多。4.12聚类分析为了深入研究数据,发现数据内部的关系,我们首先根据日期进行

32、分类。suml-ddplyftrain,Cdare,summarise,huaity=nwii由于数据太多不利于我们计算,因此我们选择截取前十条数据,以局部来观察总体数据。jj-_rRm|亠fUi_4|_IJf%JIIRL.4.IIIg、%-!UJdJ,7l3l|mj.Hsum?-suml1:10,1:5sCsum2-3um23datesum?-sum22:5在其样本之前距离,我们首先对数据进行标准化5um2,scale=seale(sum2)然后求样本之间距离,并进行聚类。d-cH5t(sum2.5cale)fit.average-hclusT(daniethod=avera

33、ge,r)2011-01-022ttii-oi-oa2011-01-042011-01-052011-01-062011-01-072G11-01-02oii-oi-og2011-01-102011-01-011.0263&S44.3.66501764.22451663.991795a.05.2gwB4.OH73115.106200斗.60321142O11-O1-G24.0fi964QO1-65303501-93475941-76BBD4-23B5B235O3.77196724閔404酉g4.35350342011-QI-oa2DLl-01-Qi2O11-O1-D52D11-D1-O6201

34、1-01-G72011-01-062011-01-031355C9B2(h1.03302670.62724K1.7265i2.1S7-00.W877551-5227732Ou6&SH1430.765963A0755165乙闿胡鋪1,5靠胡删0.7283714-0.73390nc-NbcllslCsuniz.scaleFd1SLance=reucl1dean,r,m1n.nc=2,ntax.nc=5,niei:hixj=averagetable(nc$Eest.icl,P023529104barplot(tableCnc$Be5t.rc丄,)xlEb=NumbEufclusteraylaj=rN

35、umberufCriLefia)C=3从图中我们可以看出,10个判定准则赞同聚类个数为3,因此在这里我们选取聚类的个数为3个。:=-clusters-cutrtiritavEr乱gftab!e(dU5ter5)clusters123253pl匸尸彳匸.average,hang=-1,cex=O.8)rec匸.hclUEtlfrt.,k=3)从图上我们可以看到2011-01-01和2011-01-02属于一类,2011-01-04、06、07、03、05属于一类。2011-01-09、08、10属于一类,总共三个聚簇。sund.rempatempcountdatehunriry1Z011-01-

36、0180583331斗.11083318.181250斗10斗1石F22011-01-0269.6087014.90260917.686S5734.8260S32011-01-0343.72727S.0R9095.47022761.3181842011-01-0459.043488.2OOOOOID.60608767.9130452011-01-0543.695659.30521711.46347869.5652262Q11-&1-0651.826098.37826111.66043569.8260372Q11-Q1-0749.869578.05739110.44195765.65217820

37、11-01-0853.583336.7650008.11270839.95833g2Q11-Q1-0943.416675.6716675.80875034.25000102011-01-1048.291676.1841677.54437555.04167从数据来看,我们可以发现第一类的湿度,温度、体感温度较高,租车人数居中,第二类的湿度集中50左右,温度在8到9度左右,体感温度在十度左右,租车人数较多,第三类湿度和温度、体感温度都较低,租车的人数也相对较少。从中我们可以发现湿度、温度、体感温度对租车人数存在着巨大的影响。从上面分析情况可知:1、共享单车秋天使用次数最多,其次时夏天,春天明显少于

38、其他季节;2、工作日早晚高峰(早8点、晚17点)使用最多,周六日主要集中在12点到17点;3、温度在20C左右,湿度在4060,共享单车使用最多;4、天气越好,单车使用越多。综上所述:对于共享单车运营公司,要在夏天、秋天、早晚高峰等需求量大的阶段,提供充足的单车,提高运营效率;在春天、坏天气等需求低谷阶段,一方面可以通过一些活动提高客户使用率,另一方面可以将重点放到车辆进行保养或更新换代。对于普通用户来说,要注意避开高峰阶段,合理选择交通工具。比如工作日可以早点出发,或乘坐公共交通等。5租赁量预测模型建立5.1回归预测这里我们使用广义相加模型进行回归预测。这样我们不用假设模型是线性回归还是非线

39、性回归。首先导入广义相加模型包libraryset.sccd(丄)然后将数据集划分为测试集和训练集sample.indextrainl-tzrainsamp!e.index,test!y-train-samp!e.indtx,-I然后进行广义相加模型的建立XLTZJI.丄一LII|r)(intercept)-3.27528g.54688-0.3430.731553seasoiriSumer2B.EB3424.777298.13946216支seasonFall23.S96966.100953.9179.05e-05glm5i:EpevianteAlt&3S6O12492S13-temp1937

40、5829592819-atemp1&38234-5592S24-winclspeecl1&402346392840-hunficlity19762835993125-season39B1DS67393158-hour231&239602397S09下图中的黑点代表实际的数据、红点代表预测的数据。GeneralizedLinearModel050D10001b0020Q02500MOOindexrdo迺匸住芯巴蛊一5.2随机森林首先我们对数据进行分割,建立测试集和训练集-11brary(randomForestz)setseed1)sample,index-sanpleCnrcywCtrann),10066*0.1,repiace=FALSE)trln丄fitfit乜Call:raimdaiTiForest(farmula二countseasoni-fhou十temp十humidity十且=tra1nl)Typeofrandomforest:regressioniNumberoftrees:500eachsplit:2vmindspeed十atemp!datNo.ofvariablestriedatMeanofsquared%va.iTresiduals:10744.46explalned:&目3;查变量的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论