títol: bicing stats autor: alejandro carol campreciós · • a catalunya hi trobem altres...
TRANSCRIPT
1
Títol: BicingStatsAutor: AlejandroCarolCampreciósData: 14deSetembrede2.016Director: XavierFranchGutiérrezDepartamentdelDirector: Enginyeriadeserveisisistemesd’informació(ESSI)Titulació: EnginyeriaInformàticaCentre: Facultatd'InformàticadeBarcelona(FIB)Universitat: UniversitatPolitècnicadeCatalunya(UPC)
BarcelonaTech
2
3
DADESDELPROJECTE
Títol: BicingStatsAutor: AlejandroCarolCampreciósData: 14deSetembrede2.016Director: XavierFranchGutiérrezDepartamentdelDirector: Enginyeriadeserveisisistemesd’informació(ESSI)Titulació: EnginyeriaInformàticaCrèdits: 37,5
Centre: Facultatd'InformàticadeBarcelona(FIB)Universitat: UniversitatPolitècnicadeCatalunya(UPC)
BarcelonaTech
MEMBRESDELTRIBUNAL(nomisignatura)
President: XavierBurguésIlla
Vocal: JuanJoséNavarroGuerrero
Secretari: XavierFranchGutiérrez
QUALIFICACIÓ
Qualificaciónumèrica:
Qualificaciódescriptiva:
4
5
Contingut
1 Introducció......................................................................................................................................7
1.1 TipusdeProjecte....................................................................................................................8
1.2 Objectiu..................................................................................................................................8
1.3 Altresaplicacions....................................................................................................................9
1.4 EstudideMercat..................................................................................................................10
2 Gestiódelprojecte........................................................................................................................14
2.1 Metodologiadedesenvolupament......................................................................................14
2.2 Pladelprojecte.....................................................................................................................16
3 Requisits........................................................................................................................................18
4 Arquitectura..................................................................................................................................21
4.1 ComponentsdelSistema......................................................................................................21
4.2 Casosd'ús.............................................................................................................................21
4.3 Arquitecturadelainformació..............................................................................................26
4.4 Basededades.......................................................................................................................27
4.5 Alternativesd'implementació..............................................................................................29
4.6 Entorndedesenvolupament................................................................................................31
5 MotordePredicció.......................................................................................................................33
5.1 ModelDeRegressióLineal...................................................................................................33
5.2 ModelDeRegressióRandomForest....................................................................................38
5.3 ModelDeRegressióRandomForestCurt/Llarg...................................................................48
6 Anàlisi............................................................................................................................................51
6.1 Anàlisidetemps...................................................................................................................51
6.2 Anàlisifinancer.....................................................................................................................52
6.3 Anàlisidecompetències.......................................................................................................53
6
7 Conclusions...................................................................................................................................54
7.1 Comparativaamblacompetència........................................................................................54
7.2 ElfuturdeBicingStats..........................................................................................................55
7.3 Opiniópersonal....................................................................................................................57
8 Bibliografia....................................................................................................................................58
7
1 Introducció
L'any2007l’AjuntamentdeBarcelonavaposarenmarxaelserveidelBicing.Ésunserveid’abonamentenelquall'usuaripotrecollirunabicicletaenunaestacióicircularpedalantfinsaunaaltraestació.
Hihaaproximadament420estacionsalaciutatdeBarcelona.Cadaestacióconsisteixenunaparellonl’usuaris’identificamitjançantlasevatargeta.Disposad’unnombrelimitatdeplacesdepàrquingiacadaplaçahihallocperunabicicleta.Quans'estacionalabicicletaalaplaça,s’activaunsensor.
Uncoprecollidalabicicletaenunaestacióésobligatorilliurar-laenmenysdedueshoresaunaaltraestació.Sil'estaciódedestídel'usuari,quans’arriba,estàplenadebicicletes,ésl'usuariquehadebuscarunaaltraestacióperdesarlabicicleta,quemaiespodràdesaralcarrer,os’exposaaunafortapenalitzacióeconòmica.
Bicingofereixunserveions'informadelesplaceslliuresenunadeterminadaestacióozonaenelmomentqueesfalaconsulta.
AquestprojectepreténsolucionarlaproblemàticaamblesqueenstrobemelsusuarisdeBicing,quenoésmésquelaincertesadequantrobarembicicletesollocslliuresperdeixarlabicicleta.
Persolucionaraquestaproblemàticahedeciditcrearunaeinaqueredueixiaquestaincertesa,proporcionantprediccionsd'ocupaciódelesestacionsal'usuaripertaldeferlasevavidaunamicamésfàcil.
Lapredicciódedisponibilitatesbasaenunconjuntdevariables,ielpesdecadascundelsfactorsescalculasegonsunprocésd'aprenentatgeautomàtic.
Lesvariablessobrelesqualsesconstrueixl’estimaciósón:
• L’ocupacióactualdel’estació.• L’historiald’ocupaciódel’estació.• Variablesmeteorològiques.
8
EsquemaGeneral
1.1 TipusdeProjecte
ElpresentdocumentcorresponalProjecteFinaldeCarreraenmodalitatA,projecterealitzatalaUPC.
1.2 Objectiu
L'objectiudelprojecteésconstruirunaaplicacióquedoniunaestimaciódelaprobabilitatdetrobarunabicicletalliureenunazonaoestaciódeBicing.
Elprojectetractadedonarrellevàncianonomésal'algorismedepredicció,sinótambéalprojected’enginyeriadesoftwarequeenvoltaaquestapredicció.
L'aplicacióseràbàsicamentfetaperdispositiusmòbils,jaques'esperaqueelsusuarisvulguinobteniraquestesdadesdurantdiferentsmomentsdeldia.
Appd'usuari
Motordepredicció
DadesHistòriques
DadesBicing
DadesMeteorològiques
9
1.3 Altresaplicacions
Elresultatdelprojecteésrealitzarunapredicciódedisponibilitatdebicicletesenunmomentdeltemps,peruntipusdeserveidelqualpodememmagatzemar-nelesdadespertaldepoderfer-neunaanàlisi.LaprincipalcaracterísticadelBicingésquenose'npotferunareservaprèvia.
Amés,elserveihadetenirunacertacoherència,ésadir,quetinguiunademandacontinuada.Perexemple,sivolempoderpredirsiquedaranentradesalavendaperundeterminatespectacleaixòdependràdel'obraquefacin,ésadir,quelapredicciósobredadesantiguesseguramentnoensserviria.
Aixídoncs,l'aplicaciód'aquestaarquitecturaésper:
• qualsevolserveirepetitiu• delquehihagiunnombrefinitderecursos• delquenoesfacinreservesprèvies• delqueesdisposindedadesaccessiblespelpúblic
Aplicacionspossibles:
• Laideadelprojecteespotaplicaraaltresserveisdebicicletescompartidesaaltresciutats.Hihamésde50ciutatsalmónambserveisdebicicletescompartides.Lescaracterístiquesdelsserveissónsimilars,esbasenenestacions,iendisponibilitatsdebicicletesillocsdisponibles.
• ACatalunyahitrobemaltresserveis,comlaGirocletadeGironaol'Ambicia'tdeGranollers• AEspanyahihamésde30ciutatsambserveissimilars(entred'altres:Madrid,Alacant,
València,Bilbao,...)• AEuropaentrobema20països(entred'altres:Anglaterra,Rússia,Alemanya,...)• Serveisdevehiclescompartitsengeneral,commotosicotxes.
Peraltrabanda,ambpoquesmodificacionsenlamaneradepredir,encaraqueambalgunsimportantsenlainterfície,podríemferservirlatecnologiadepredicciópertaldedonarcoberturaaserveisqueelpoolsiguiúnic,ésadird’unaúnicaestació.Aixídoncspodríempredir:
• Restaurantsonnofanreservaprèviadetaula.• Transbordadors.• Serveisdepàrquing,onenspodeminformardedisponibilitatsprevistesdellocsperaparcar
enunadeterminadazona.
10
1.4 EstudideMercat
ExisteixendiversesaplicacionsqueproporcioneninformaciódelserveideBicing.
Bicing(AjuntamentdeBarcelona)
Ésl'aplicacióoficialdelserveideBicingiunadelesméspopulars.Notéutilitatdepredicció.Dónaladisponibilitatactualdelesestacions.Amés,recentments'hihaintroduïtunsistemadegamificacióperincentivar-nel'ús.
Citymapper(CitymapperLimited)
Ésunaaplicaciógenèricadetransports,nonomésdelBicing,icobreixdiversesciutatsdelmón.Ésunaguiaperanard'unpuntal'altredelaciutat,ipermetescollirelmitjàdetransport,sentund’ellséselBicing.Nodónapredicciódebicicletes.Nopermettransportmultimodal.
11
RideU(CecilioTamarit)
Ésunaaplicaciódecercadebicicletesillocsd'aparcament.Dónalapossibilitatdelocalitzarunaestacióapuntant-hieldispositiuutilitzantrealitataugmentada.Noofereixpredicció.Dónaunmapaamblaubicaciódelesestacions.
EasyBicing(JuanVillaescusa)
Ésunaaplicaciósenzillaquemostraunmapadelaciutat,amblesestacions,iladisponibilitatdebicicletesiplaceslliures.Notécapacitatdepredicció.
12
CityBikes
Ésunaaplicacióquemostrabicicletesiplaceslliuresalmapa,amblapossibilitatdelocalitzarunaestacióapuntanteldispositiuambrealitataugmentada.
Bicicletes(JordiVila)
Ésunaaplicacióquemostrabicicletesiplaceslliuresalmapa,amblapossibilitatdelocalitzarunaestacióapuntanteldispositiuambrealitataugmentada.
Bicintime
ÉsunaaplicacióenHTML5,desenvolupadaperGabrieliAlex,estudiantsdelaUPF.Ésl’únicaaplicacióquefapredicció.Hanpublicatinformaciódel’algorismedepredicció,queesbasaenRandomForest.VaestarparcialmentsubvencionadaperlaUnióEuropea.
Amésd'informardelnombredebicicletes,permetespecificarorigenidestí,calculantlesestacionsderecollidaid’entregadelabici,informantdelnombredebicicletesideplaceslliuresrespectivament.
13
QuadreResumAplicació Propietari Weboficial Predicció iOS AndroidBicing Ajuntamentde
Barcelonahttps://www.bicing.cat/ No Sí Sí
Citymapper CitymapperLimited https://citymapper.com/barcelona
No Sí Sí
RideU CecilioTamarit http://cecetaca.com/rideu/en/ No Sí SíEasyBicing JuanVillaescusa http://easy-bicing.appstor.io/es/ No Sí NoCityBikes RocketLabLimited http://www.citybikesapp.com/ No Sí NoBicicletes JordiVila http://jordivila.cat/index.php/ma
in/view/bicing/es
No Sí No
Bicintime GabrielMartins,AlexBikfalvi(UPF)
http://www.bicintime.com/ Sí Navegador Navegador
Competència
L'aplicaciómésfortairobustaésBicintime,l'únicaquefaprediccionssobreladisponibilitatdebicicletes.
Delarestad'aplicacionsdisponiblesnon'hihacapquedoniunapredicció.
Peraixò,crecquehihaespaiperunaaltraaplicacióquepermetipredirladisponibilitatdebicicletesiespaisdisponiblesaunaestació.IdealmentseriaunaaplicaciónativaperIOSiperAndroidperpoderaprofitaralmàximlescaracterístiquesdelsdispositius.
14
2 Gestiódelprojecte.
2.1 Metodologiadedesenvolupament
PerdesenvoluparelprojectefaréservirunametodologiaAgile.LesmetodologiesAgile,unadelesmésconegudesésSCRUM,esbasenenrepetidesiteracionsoesprints.Enacabarcadascunad’ellesesfaunaavaluaciódelresultat.
Lesmetodologiestradicionalsdedesenvolupamentdesoftwareesbasenenunseguitdetasquesques’executenseqüencialment,unaltrenomperanomenar-lesmetodologiesencascada.Esbasaenunadefiniciómoltacuradadeldesenvolupamentarealitzar,perarribarateniraquestadefiniciónormalments’estructurenen:
• Fased'anàlisi:onl’usuariexpressaelsseusrequeriments,endefinitiva,elquedesitjadelsistema.Elsrequerimentshandesercompletsiexhaustius,noesbasenenunaideaodirecció,sinóqueésnecessariespecificareldetall.Típicamentestemparlantdequel'usuari:
o Expliquilasortidaquevolobtenirdelsistema,finsitotindicanquinainformacióvolobtenirenllistatsiconsultes.
o Expliquiquinesentradesintroduirà,odesd'onespodenobtenir.o Expliquiquinessónlesoperacionsomanipulacionsques’handeferpertald’arribar
alresultatfinal.o Expliquilesrestriccionsdelsistemaquantapermisos,seguretat,verificacions,etc…o Finsitotencertescircumstànciess'had’especificareljocdeprovesques’ha
d'executarpertaldeverificarelresultatfinaldelsistema.• Fasedeconstrucció:aquíelroldeterminanteltél'equipdedesenvolupament,queha
d'escriureeldissenydelsistemapertaldedonarcoberturaalsrequerimentsdel'usuari.Aquestafasetípicamentescaracteritzaperduestasques:
o Undissenyendetalldelasolucióaimplementar,incloent-hielsdiferentsprogramesocomponentsdelsistema,ieldissenydelmodeldedadesqueesfaràservir.
o Eldesenvolupamentdelprogramari,uncops’haverificatambl'usuariqueeldissenyplantejatpermetassolirelsrequeriments.
LesmetodologiesAgileesbaseneniteracions,ésadir,encomptesdeferunaseqüènciadetasques,esfonamentenenanarrepetintlesiteracionssegüentsfinsaarribaralresultatdesitjat:
• Unallistadetasquesadesenvoluparprioritzades• Unperíoded’execució,anomenatesprint,ons’executenaquestestasques• Unaavaluaciódelsresultats,iunare-avaluaciódelsrequeriments.
DinsdelesmetodologiesAgilevulldestacarSCRUM,quefaèmfasienlacol·laboracióentremembresdel'equip,enunacomunicacióconstant,quepermetadaptarelsesprintsalsrequerimentsdenegoci,sovintcanviants.Janoenstrobemenunmónestàtic,onlesnecessitatssóneixosquenoacostumenacanviarenunperíodellargdetemps,tampocenstrobemenunentorntecnològicquedificultaelscanvis.SCRUMesbasaenunare-definiciódelestasquesafer,enpermetrecanviarelparadigmadelsoftwaredesenvolupat,entenirresultatsdesdelprimermoment,enmantenirel
15
sistemapermanentmentdisponible,enunare-avaluaciótantdelsrequisitscomdelsresultats,enunacomunicacióconstantentreelsmembres.Elsrolstípicssón:
• ProductOwner-propietaridelprojecte,típicamentelresponsabledeldepartamentquehasol·licitatl’aplicació,iquehadecomunicaratotselscomponentsdel'equipquinaésl'estratègiailavisióquel'aplicacióhad’assolir.
• EquipdeProjecte:elconjuntdedesenvolupadorsidissenyadorsquesónelsqueportenatermelestasquesdeprogramacióidisseny.
• ScrumMàster:elfacilitadordelacomunicacióentrel’equipdeprojecteielpatrocinador.Noéselcapdeprojectetípicd'unametodologiatradicional,éselresponsabled’incentivarqueelprojecteavanci.
LadocumentacióqueesgeneraamblametodologiaSCRUMconsisteixen:
• Backlogdeproducte:lesespecificacionsd’altnivellqueelsistemahad’assolir.• Backlogd’esprint:lallistaprioritzadadetasquesarealitzarenelsegüentesprint.• Incrementdefuncionalitat:lafuncionalitatdelproducteassolidadesprésdecadaesprint.• Leshistòriesdelsusuaris,sónlesespecificacionsqueelsusuarisdemanen,iquesónlabase
deldisseny.Cadahistòriad’usuaris’hadepoderescriureenunanotatipuspost-it,ihauriadecontenirlessegüentsdades:
• Categoria:Categoriadeltipusdehistòria,siesrefereixaunrequisitd’interfície,funcional,etc
• Títol:Títoldescriptiudelahistòria• Descripció:descripciódetalladadelahistòria• Prioritat:Prioritzaciódelahistòriarespectealesaltreshistòriesdelbacklog• Instruccionspervalidar:indicacionsqueconfirmaranqueeldesenvolupamentés
correcte
Metodologiadelprojecte
Entractar-sed'unprojecteambunequipdetreballformatperunasolapersonanohetingutocasiód'aplicarunametodologiaSCRUMpura.Elquehefetésbasar-meen:
• Unallistadetemesadesenvolupar,prioritzada• Desenvolupamentdelprogramari• Avaluaciódelsresultats.
Aixímateixhetreballatconstruintunprototiponelsistema:
• S'anésperfeccionantencadaiteració,començantambfuncionalitatsbàsiques,iafegintcomplexitatcadavegada.
• Mantenirelsistemautilitzabledesdelprimermoment.
16
2.2 Pladelprojecte
Esprint Nom Data Hores Tasca Hores
1 Definició 02/11/2015 112
Definicióàmbitprojecte 16Requerimentsusuaris 16Estudidemercat 16Definiciócomponentsdelsistema 16Elecciód'einesdesenvolupament 24Elecciópremissescloud 24
2 Desenvolupament1 20/01/2016 64Desenvolupamentinterfície 32Interfícieambmapes 16Elaboracióinformeprevi 16
3 Dades 01/03/2016 72Implementacióbasededades 24CapturadadesBicing 24Capturadedadesmeteorològiques 24
4 Documentació1 02/05/2016 24 Elaboracióesborranytreball 24
5 Predicció1 01/06/2016 80 Prediccionsregressiólineal 40Prediccionsregressiópolinòmica 40
6 Predicció2 01/07/2016 132
ImplementacióRandomForest 60Creaciócontainers 16Implementaciósistema 16Provescomparativesprecisiópredicció 40
7 Documentació2 16/08/2016 56 Finalitzaciótreball 40Elaboraciópresentació 16
TotalEstimat 540
17
18
3 Requisits
Categoria Títol Descripció Prioritat Validació
Interfície SmartphoneComausuari,vullpoderaccediral’aplicaciódesdequalsevolSmartphone
3Hedepoderexecutarl’aplicacióenentornsiOSiAndroid.
Interfície Nativa
Comausuari,vullquel’aplicaciósiguinativadeldispositiu,ésadir,quepuguiaprofitarlescaracterístiquesdeldispositiuons'executi
1
Hedepoderinstal·larl'aplicacióeneldispositiudesdelesplataformesdesoftwaredeiOSiAndroid
Interfície Navegador
Comausuari,vullpoderexecutarl’aplicaciódesdelmeuordinadorpersonal,enqualsevolnavegador.
1Hedepoderaccediral’aplicaciódesdelsprincipalsnavegadors.
Interfície HistòricdeconsultesComausuari,vullguardarlesultimesconsultesfetesd’estacionsdeBicing
1
Quequanvagiaposarunaestació,puguiveurelesanteriorsestacionsconsultadesprèviamentiseleccionar-les.
Interfície MapaseleccióComausuari,quepuguiseleccionarl'estacióenunmapa
2
Quepuguimarcarunpuntenelmapa,iaixòsiguielmeupuntdepartidaperabuscarestacions
19
Categoria Títol Descripció Prioritat Validació
Interfície Zona
Comausuari,queelsistemaemtornielsresultatsdebicicletesenlesestacionsmésproperesalpuntmarcat.
2 Queemsurtinlesestacionsproperesalpuntmarcat
Interfície Horari
Comausuari,quepuguiescollirenquinmomentienquindiavullsaberlaprobabilitatdetrobarbicicleta
3
Queemdonilaprobabilitatdetrobarbicicletaenqualsevolmomentquejoesculli
Càlcul EstaciódedestíComausuari,voldriapoderinformardel’estaciódedestíonvullanar
3 Queelsistemaemdemaniunaestaciódedestí.
Càlcul TempsdeViatgeQuel'appemdiguielquetrigarépedalantd'unaaaltraestació
2Queelsistemaemdonieltempsdetrajecteestimatalavelocitatdebicicleta
Càlcul Prediccióencertada
Comusuari,voldriaquelapredicciófosacurada,tenintencomptelahistòriadel'ocupaciódebicicletesdel’estació
3 Quehihagiunpercentatged'encertssuperioral70%
Càlcul Prediccióacurttermini
Comausuari,voldriaquel'appm'informésdel'ocupacióactualdebicicletesdel’estació
3Queemdonielnombredebicicletesquearamateixhihaal’estació
20
Categoria Títol Descripció Prioritat Validació
Càlcul Prediccióesdeveniments
L'apphauràdetenirencomptesihihaalgunesdevenimentespecialquepuguialterarlesbicicletesdisponibles
3 Quehihagiunpercentatged’encertssuperioral70%
Tècnics Rapidesa Comausuari,vullunaprediccióimmediata 3 Queeltempsdelresultat
siguidemenysde3segons
Tècnics DisponibilitatComausuari,vullquel’aplicacióestiguisempredisponible
3Que95decada100copsqueexecutol’aplicació,estiguifuncionant.
Funcional FeedbackusabilitatComaowner,vullsabersil'usuariestàcontentambl’arquitecturadel’app
3Queelsistemapreguntial’usuaridemaneraaleatòriacadaNusos.
21
4 Arquitectura
4.1 ComponentsdelSistema
4.2 Casosd'ús
Seleccionarpuntdelmapa
Diaapredir
Hora
Veureresultats
22
SeleccionarPuntdelMapa
23
Introduirdiaapredir
24
Introduirlahora
25
Mostremelsresultats
26
4.3 Arquitecturadelainformació
Enelmóndelesaplicacionsmòbils,eldissenydelainterfícieésdecisiuenl'èxitdel'aplicació.Lainterfícied’usuariéselcomponentmésdecisiu,encaraquenol’únic,queensdeterminaràl’experiènciadel'usuari.
• L'experiènciad'usuari(UX)éselconcepteclaudel’aplicació.Busquem:o Senzillesa,concepteKISS,senseescenografiesexagerades,quetinguiencompteel
concepteutilitaridelanostraaplicació.o Facilitatd’utilització,creiemquel’usuaripotestarcaminantpelcarrerquanvol
comprovarsienunaestacióhihadisponibilitat.o Queencadamomentl’usuaritinguiunavisiódelesopcionsdisponibles,icaponha
d’anar.• Eldissenydelainterfícieseràinicialmentmoltsimple,mésendavantespodranafegir
elementsvisualsque,senseserunacòpia,doninaentendrelarelaciódel'aplicacióambBicing.Tractaremd’aprofitarelsestàndardsdel’arquitecturad'Android.
Pertaldecentrarl'abastilesexpectativesdelspossiblesusuarisdel’aplicació,hemtractatdedefinirelscriterisarquitectònicsdel’aplicació.
Objecte ProveirunserveidepredicciódedisponibilitatdebicicletesdelBicing.
Dirigita UsuarisdelsistemaBicing.
• Abonats:98.497• Utilitzacionsmensuals:1.027.707• Mitjanad'usosdiaris:3.333
Interacció Creiemqueelsusuarisfaranservirl’aplicaciódesd'undispositiumòbilabansdetrobarunabicicleta,normalmentquanvaginpelcarrer.Peraixòbuscaremunainteraccióelméssenzillapossible,ambbotonsgrans,centratsalapantalla,iambvalorsperdefectedelespeticionsd’informació.
Navegació Atèselscasosd’úsdel’aplicacióimplementaremunanavegaciómoltsenzilla,senseméscasuísticaquepassardeplànol-dia-horaiplànolderesultats.
Continguts Enaquestaprimerafasedel'aplicaciónotindremcapcontingut.
Alertes Enaquestaprimerafasedel’aplicaciónotindremcapalerta.
Disseny
gràfic
Enaquestaprimerafasenotenimpensantmésqueunespantallesmoltsenzilles,basant-nosenl’estàndardd'Android.EnunafaseposteriorbuscaremunpatródedissenygràficquerecordielvermelliblancdelBicingambalgunacaracterísticadistintivaquetractidesuggerirprediccióiencert.
Feedback Implementaremunsistemadefeedbackpertalquel'usuaripuguiinformardepossiblesproblemesd'usabilitat
27
4.4 Basededades
Laplataformaonelsistemaemmagatzemalesdiferentsdadesquerequereixpertaldeprocediraferelscàlculsdeprobabilitat.
Unadelestasquesquehehagutdeferésescollirunmotordebasededadesienquinamodalitatvullfer-ho,sienunamàquinaalesmevesinstal·lacions,obéenunserveidehosting.
Requeriments
• Voldrempoderaccediraunjocdedadesconcret:facilitatpertald’indexarlestaulesipoderaccedirdemaneradirecta.
• VoldremutilitzarllenguatgeSQL,perlasevafacilitatd’utilització,lasevapopularitat,iladisponibilitatifacilitatd'utilitzaciódesdeleseinesdeprogramacióescollides.
• Voldrempoderaccediralesdadesmeteorològiquesrelacionadesambunaestacióconcreta.
• Norequeriremunaespecialpotenciadefuncionalitatdemodificaciódedades,sentlesoperacionsmésfreqüentslesd’insercióiconsulta.
Dadesaemmagatzemar
Lesdadesqueemmagatzememseranlesquefaremservirpertald’estimarlapredicció,isón:
• Dadesd’ocupaciódelBicing:lesdadesd’ocupaciórealdelBicing,percadaestació.• Dadesmeteorològiques:laquantitatdeplujacategoritzadailatemperatura,• Dadesdelespeticionsrebudes:emmagatzememlespeticionsqueensestanfentels
usuaris,aixícomelsresultatsobtinguts.• Dadesdelespeticionsd’autoaprenentatgequeelsistemaprovoca,lescaracterístiques
delamostra,ielresultat.
Dimensió.
Enaquestpuntdelprojecteensinteressaferunaestimaciódelvolumdedadesquetindrem,encaranotenimelmodeldedadesdefinit,aixíquefaremunaestimacióinicial.Aquestaestimacióenshadeservirperescollirelgestordebasededades.
28
Eldatasetmésgranseràeldedadesd'ocupaciódeBicing.L’APIqueBicingofereix,téelsegüentmodeldedades:
Dada Bytes
Id 4
status 1
slots 2
bikes 2
timestamp 4
Total 13
Ésadir,quepercadalecturaquefemaldia,decadaestació,necessitarem13bytes.Aixídoncssegons:
Estacions 500
Lectures diàries 1440
Hemestimat:
Dades/dia (MB) 9,14
Dades/any (MB) 3336,33
Amésd’aquestesdades,requeriremespaiaddicionalpelsaltresdatasets,aixíquecalculemqueestaremalvoltantde4000MB/any.
ModeldeDades
29
4.5 Alternativesd'implementació
OnPremiseenversCloud
Laprimeradecisióhaestatavaluarsiinstal·larialabasededadesenunordinadorpropialesmevesinstal·lacions(OnPremise),obéunserveiextern(Cloud).
• OnPremise:Labasededades,motoridades,estanubicadesaunservidorpropi,alesinstal·lacionsd’unaoficinadeBicingStats(demomentacasameva),lestasquesd’explotaciódelsistemalasportariaatermepersonalpropideBicingStats(demomentjomateix).Elsistemanoésescalable,sielprogramaespopularitzaielfaservirmoltagenthauriad'instal·larunservidoraddicionalpertalquelarespostacontinuïsentràpida.Amesuraquevaigafeginthistòriaalabasededades,éspossiblequerequereixiespaid’emmagatzematgeaddicional,ésadir,quehauriad'afegirunitatsdedisc.
• Cloud:Labasededadesestàubicadaaunservidorextern,elservidorestàenunserveicloud,ontenenpersonalpropiperferlestasquesdemanteniment.Allàinstal·lariaelprogramarinecessariigualquepodriafer-hoalamevamàquinapersonal.PodriadisposardeCPUs,memòriaoemmagatzematgeaddicionalencasquehorequerís.
Taulacomparativa
Servei OnPremise Cloud
Espaifísic Espaipropidel’empresa. DataCenter
Comunicacions Gestionadesperl’empresa. Gestionadespeldatacenter.Normalmentamplidebandaescalable.
Servidor Propi Propietatdeldatacenter
Gestiódelservidor
(actualitzacions,backup)
Personalpropi Totalmentautomatitzat.
Escalabilitat Responsabilitatdelstècnicsdel’empresaquehandepreveurepuntesd’utilitzacióidimensionarelsrecursossegonsaquestesdemandes.
Depenentdeldatacenterseràmésomenysautomàtic
30
Alternativesconsiderades
Servei Característiques Preu Pros Contra
DigitalOcean MySQLautogestionatamblacreaciód’unentornambdocker.
6$/mes(20GB+backups)12$/mes(30GB+backups)->gratispertenircompted’estudiantfinsa100$
Jatincexperiènciaprèviaambmysql,loquefacilitaràlaimplementació.ÉsOpenSourceUtilitzatpertottipusd’aplicacions,ésbenconegudalasevarobustesa.
Requereixmonitorització
Orchestrate Soluciópropietàriadebasededades.
50€/mes,gratisessentestudiant.
Norequereixmonitorització.
Soluciónova,propietària.Nohitincexperiènciaprèvia.
Redshift GestionatperAmazon Tarifabàsica216€/mes
MonitoritzatperAmazonAPIPostgreSqlEspecialitzatenBigData
Tarifamoltalta
Relational
Database
Service(RDS)
GestionatperAmazon.MySql(encaraquetéaltressolucions).
Apartirde12€
DecisióFinal
Heescollitl'opciódeDigitalOcean:
• Funcionamentmoltsimple,permetcrearinstànciesenlesquetenimaccésderoot,pelquehipodeminstal·larqualsevolutilitatqueensfacifalta
• Tarifamoltajustada:permetmodificarlacapacitatdelesinstànciesfàcilmentienpoctemps(~10minuts),ambunatarifainicialde5$almes.
Característiques
Nomdelainstància:docker-alex
Servidor:Ubuntu14.04
Contingut:LainfraestructuraestàdivididaendiversoscontenidorsambDocker,quepermetenaïllarelsdiversoscomponentsdelsistemaiassegurarqueelsentornsons'executaelcodiaproducciósónelsmateixosqueenlocal.
31
4.6 Entorndedesenvolupament
Desplegament:
FaigservirDockercomasistemadecontenidorsperassegurarcompatibilitatdelsentornsdedesenvolupamentiproducció.Dockerésunaeinadedesplegamentmultiplataforma,quepermetdistribuiridesenvolupar.
Llenguatgesdeprogramació
Servidor
HefetservirGoperrecol·lectardadesiservirlespeticions.Goésunllenguatgemodern,quedónamoltafacilitatpercrearapisiqueéscapaçdeproporcionarunrendimentforçaaltiquefacilitaparal·lelitzartasques.
InicialmentvaigcomençarunprimerprototipenPHP(https://github.com/alexcarol/bicing-stats),queconecbé,peròvaigtoparambalgunsproblemesdememòriaalimplementarlarecol·lecciódedades,queencaraqueprobablementhauriapogutsolucionar,vaigpreferircanviaraunllenguatgeméseficient,perevitarencallar-meamblimitacionsdelllenguatge.
PerimplementarelmodeldeprediccióhefetservirelllenguatgeR,pertald’analitzarlesdadesrecol·lectadesiferprediccionssobrelespeticions.Résunllenguatgeutilitzatperl'obtenciódecàlculsigràficsestadístics,pelquepermetiterarmoltràpidamentiqueamésproporcionaunrendimentforçabotenintencomptequeésunllenguatgeinterpretat.
MésendavantpodriaplantejarsubstituirRperunaimplementacióenGodelsalgorismesqueutilitzoopotserunaltrellenguatgecomPython,quetambétémoltesllibreriesestadístiques.
Client(appAndroid)
HefetservirJava,queproporcionamoltesllibreriesperimplementarlainterfíciegràfica.Peraltrabanda,enunprimermomentvaigconsiderarferl'aplicacióenGo,pertaldepodercompartircodiambelservidor,peròvaigdesistir-neperquètalcomheplantejatl'aplicaciómaihauréd'implementarlamateixalògicaalclientialservidor(seriadiferentsiperexempleestiguésimplementantunjocambservidorautoritari,perexemple),amés,GonodisposademoltesdelesfacilitatsquedónaJavaal'horadepintarlainterfíciegràfica.
Basededades
HetriatMySQLperemmagatzemarlesdadesqueesfanservirperrealitzarlesprediccions.L'hetriatperquèésunasolucióqueconec,queesfaserviràmpliamentiquetéunrendimentbo.
32
Editors
Atomperlapartdeservidor,ésuneditorcreatperGithubitéinfinitatdepluginsperfacilitareldesenvolupamentamblamajoriadellenguatges,elqueelfaapteperprogramarpràcticamentqualsevolprojecte.
AndroidStudioperlapartdeclient.AquesteditorestàbasatenelreconegutIntelliJIDEA,deJetBrains,jaqueincorporatotelnecessaripercreariprovarunaappAndroid,incloent-hieldesplegamentenundispositiuAndroidol'emulacióenlocal.
SistemadeControldeVersions
ComacontroldeversionshedeciditferservirGit,unsistemadecontroldeversionsdistribuïtcreatperLinusTorvalds.ElcodiestrobaallotjataGitHub,queésunserveid'allotjamentderepositorisgitqueésgratuïtperprojectesOpenSource,comelmeu.Elcodil'hedividitendosrepositoris:https://github.com/alexcarol/bicing-oracle-app(appAndroid)ihttps://github.com/alexcarol/bicing-oracle(servidor).
33
5 MotordePredicció
Elmotordeprediccióéselnuclidel’aplicació,jaqueenshad'aportarelvalorafegitalprograma,persobredelainformaciódelesdadesactuals.
Pertaldesimplificarlesexplicacions,consideraremapartird’araqueelquebusquemésunabicicletaenunaestaciódeterminada.
Lesdadeshistòriquesenspodenservirperapuntartendènciesdel’estació,peròelseupeshauràdetenirencomptediferentsfactorsdepertorbació:
1. Diadelasetmana
2. Factormeteorològic
5.1 ModelDeRegressióLineal
Pertald'escollirelmodelestadísticderegressióheestatfentdiferentsproves.
Laprimeraconsisteixenregressiólinealambdadesd’ocupaciód’unaestaciódurantunperíodededosmesos.PerferaquestaregressióheempratelprogramaRcommander.
Prova1
Peraquestaprovaheemprattresvariables:
• Day.moment(tempstranscorregutdesdeles00:00)• “Labor”,unavariablediscretaqueindicasieldiaéslaborable.• Time,queesrepresentacomaEpochtime(segonspassatsdesdel'1degenerde1970).
Lestresvariablestenenunp-valormoltpetit(menora2*10-16),pelquesónestadísticamentrellevants.Elmodeltéuncoeficientdedeterminació(r2)d'aproximadamentun8%,pelquelafiabilitatd'aquestmodelaplicatalapredicciónoésgairesignificant.
Call:
lm(formula = bikes ~ Day.moment + Labor + time, data = Datos)
Residuals:
Min 1Q Median 3Q Max
-17.0691 -4.8122 0.5537 5.2220 16.1872
34
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.226e+03 2.666e+01 45.97 <2e-16 ***
Day.moment -6.314e-05 9.596e-07 -65.80 <2e-16 ***
Labor -1.143e+00 5.545e-02 -20.61 <2e-16 ***
time -8.301e-07 1.830e-08 -45.37 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 6.655 on 75282 degrees of freedom
Multiple R-squared: 0.08326, Adjusted R-squared: 0.08322
F-statistic: 2279 on 3 and 75282 DF, p-value: < 2.2e-16
Prova2
Alveurequeelprimermodelnoeraestadísticamentsignificantheprovatambunsegonmodel,enquefemservirtimeiDay.moment(quejafèiemserviralmodelanterior)iencomptesdeLaborhemoptatperferservirlavariablequalitativa"diadelasetmana",queladividiremen6variablesfictícies.
Unavegadamés,hempogutveurequeelp-valorindicaquelesvariablessónrellevants.Elcoeficientdedeterminacióésd'aproximadamentel9%,lleugeramentmillorqueenelcasanterior,peròsegueixsensepoderseraplicatperaprediccions.
Call:
lm(formula = bikes ~ Day.moment + time + Lunes + Martes + Miércoles +
Jueves + Viernes + Sábado, data = Datos)
Residuals:
Min 1Q Median 3Q Max
-17.5257 -4.8218 0.4113 5.1860 16.3727
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.204e+03 2.663e+01 45.21 <2e-16 ***
Day.moment -6.343e-05 9.564e-07 -66.32 <2e-16 ***
time -8.146e-07 1.827e-08 -44.58 <2e-16 ***
Lunes -9.979e-01 8.957e-02 -11.14 <2e-16 ***
35
Martes -1.578e+00 8.946e-02 -17.64 <2e-16 ***
Miércoles -9.843e-01 8.963e-02 -10.98 <2e-16 ***
Jueves -2.349e+00 8.984e-02 -26.14 <2e-16 ***
Viernes -2.261e+00 9.253e-02 -24.43 <2e-16 ***
Sábado -1.033e+00 9.550e-02 -10.82 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 6.631 on 75277 degrees of freedom
Multiple R-squared: 0.08995, Adjusted R-squared: 0.08985
F-statistic: 930.1 on 8 and 75277 DF, p-value: < 2.2e-16
Conclusions
Sifemungràficdelesdadesdel’estació:
36
Enelsgràficsespotobservarquenosemblaquelesdadesdelesestacionssegueixinunpatrólineal.
0
5
10
15
20
25
30
0:00:00
0:48:00
1:36:00
2:24:00
3:12:00
4:00:00
4:48:00
5:36:00
6:24:00
7:12:00
8:00:00
8:48:00
9:36:00
10:24:00
11:12:00
12:00:00
12:48:00
13:36:00
14:24:00
15:12:00
16:00:00
16:48:00
17:36:00
18:24:00
19:12:00
20:00:00
20:48:00
21:36:00
22:24:00
23:12:00
25/03/2016
37
Tambéhetractatd'aïllarlesdadesdelesestacionsenelmateixranghorari.Elsresultatssón:
Elgràficmostralesdadesmitgesdelahora,percadadiadelmes.Observemquelesdadesmitgesnosónunboníndexdepredicció,doncssempreensdonaràquetenimbicicletesdisponibles.
Veientelsresultatsd'aquestesproveshedeciditbuscarunaltremodelderegressióperrealitzarlesprediccions.
38
5.2 ModelDeRegressióRandomForest
Donatqueelmodelderegressiólinealnoensserviahembuscatunaltrequefosmésprecís.PeraixòhemtriatRandomForest,queésunalgorismequefaservirsubconjuntsdedadesidecriterisdeclassificacióperconstruirarbresdedecisióambvariaciócontrolada.
Hihaaltresalgorismesdeprediccióquepodríememprar,comlaregressiólogística,peròhemoptataferservirRandomForestperquèdónasuportavariablescategòriques(comeltempsatmosfèric),mentrequeregressiólogísticano.
Heprovatdiversesvariacionspersabersihihauriabicicletesono,elsfactorsprincipalsqueheconsideratsón:
• Laprevisiómeteorològica• Elmomentdeltempspelqualesvolrealitzarlapredicció• Eldiadelasetmana
Hemfocalitzatlesprovesen4estacionsconcretes.Hemfetunaprediccióenunmomentdeltempsenquejadisposàvemdelsresultats,demaneraquehempogutcompararamblarealitatdelnombredebicicletesqueteníem.
Elsresultatsdelesprediccionsesdonenseparatspercadascunadelesquatreestacionsdemostra,segonselssegüentscriteris:
• Sihihaviabicicletes:enquantscasosheencertatquesiquen’hihavia.• Sinohihaviabicicletes:enquantscasosheencertatquenon’hihavia.• Tambéheseparatelsresultatsdelsdiesfeinersidelscapsdesetmana.Creiemque
l'ocupaciódebicicleteselsdiesfeinersobeeixapatronsméspautatsdecomportamentquenopaselcapdesetmana.
VullremarcarquelesdadesdisponiblesdelBicingsóndesdeljuny,iquenohihapossibilitatdesol·licitardadesantigues.Aquestfetcondicional’aprenentatgedelmodel,iamésenspotinduiraconclusionsrespecteafactorsexternsqueassenyalaréencadaresultat.
39
Quadreresumprincipalsproves(v)
Variable Tipus Descripció v1 v2 v3 v4bis v5 v6
pbikes dependent indicalaprobabilitatdetrobaronobicicletesenunaestació
X X X X X
num_bikes dependent nombredebicicletesaunaestació X
weather_type categòrica eltipusdetempsquefa(sol,ennuvolat,plujasuau,intensa,...)
X X X
weather_type categòrica variablecategòricabooleanaquerepresentasihihaprecipitacionsono
X X X
temperature contínua latemperaturaengrausCelsius X X X
updatetime contínua elmomentdeltempspelqualesvollapredicció
X X X X X X
dayMoment contínua eltempsensegonsdesdel'inicideldia X X X X X X
weekday categòrica eldiadelasetmana X X X X X
weekday-bis categòrica diadelasetmana,dividiten6variables"dummy"
X
40
v1-Provabàsica
Variabledependent:
• pbikes:indicalaprobabilitatdetrobaronobicicletesenunaestació
Variablesexplicatives:
• weather_type:variablecategòricaquerepresentaeltipusdetempsquefa(sol,ennuvolat,plujasuau,intensa,...)
• updatetime:variablecontínuaquerepresentaelmomentdeltempspelqualesvollapredicció
• dayMoment:variablecontínuaquerepresentaeltempsensegonsdesdel'inicideldia
• weekday:variablecategòricaquerepresentaeldiadelasetmana
Resultats
LABORABLES FESTIUS TOTAL
Est. pBikes Encert Errors %Enc. Encerts Errors %Enc. Encerts Errors %Enc.
30 1 4.725 0 100% 1.369 0 100% 6.094 0 100,0%30 0 0 75 0% 0 26 0% 0 101 0,0%
42 1 3.828 278 93% 1.258 24 98% 5.086 302 94,4%42 0 226 468 33% 19 94 17% 245 562 30,4%
74 1 3.943 315 93% 1.268 0 100% 5.211 315 94,3%74 0 0 574 0% 0 127 0% 0 701 0,0%
366 1 3.855 0 100% 1.387 8 99% 5.242 8 99,8%366 0 26 919 3% 0 0 #DIV/0! 26 919 2,8%
1 16.351 593 97% 5.282 32 99% 21.633 625 97,2%
0 252 2.036 11% 19 247 7% 271 2.283 10,6%
16.603 2.629 86% 5.301 279 95% 21.904 2.908 88,28%
Comentaris
Encertmoltaltentotal,peròmoltbaixencasquenohihabicicleta.
41
V2-diesdelasetmana“dummies”
Variabledependent:
• pbikes:indicalaprobabilitatdetrobaronobicicletesenunaestació
Variablesexplicatives:
• weather_type:variablecategòricaquerepresentaeltipusdetempsquefa(sol,ennuvolat,plujasuau,intensa,...)
• updatetime:variablecontínuaquerepresentaelmomentdeltempspelqualesvollapredicció
• dayMoment:variablecontínuaquerepresentaeltempsensegonsdesdel'inicideldia
• weekday:variablecategòricaquerepresentaeldiadelasetmana,enaquestcasl'hemdividiten6variables"dummy"perassegurar-nosquel'algorismede
predicciólareconeixiacomavariablecategòrica.
Resultats
LABORABLES FESTIUS TOTAL
Est. pBikes Encert Errors %Enc. Encerts Errors %Enc. Encerts Errors %Enc.
30 1 4.756 0 100% 1.369 0 100% 6.125 0 100,0%30 0 0 76 0% 0 26 0% 0 102 0,0%
42 1 3.943 195 95% 1.281 1 100% 5.224 196 96,4%42 0 144 550 21% 0 113 0% 144 663 17,8%
74 1 3.795 463 89% 1.268 0 100% 5.063 463 91,6%74 0 0 574 0% 0 127 0% 0 701 0,0%
366 1 3.838 49 99% 1.307 88 94% 5.145 137 97,4%366 0 10 935 1% 0 0 #DIV/0! 10 935 1,1%
1 16.332 707 96% 5.225 89 98% 21.557 796 96,4%
0 154 2.135 7% 0 266 0% 154 2.401 6,0%
16.486 2.842 85% 5.225 355 94% 21.711 3.197 87,2%
Comentaris
o Encertmoltaltentotal,peròinferioralprimercas.Moltbaixencasquenohihabicicleta.
42
v3-Tempsbooleà(plou/noplou).
Variabledependent:
• pbikes:indicalaprobabilitatdetrobaronobicicletesenunaestació
Variablesexplicatives:
• weather_type:variablecategòricabooleanaquerepresentasihihaprecipitacionsono.Adiferènciadelscasosanteriorsaquíhemvolgutsimplificaraquestavariable
perveuresipodíem"ajudar"al'algorismedepredicció• updatetime:variablecontínuaquerepresentaelmomentdeltempspelqualesvol
lapredicció• dayMoment:variablecontínuaquerepresentaeltempsensegonsdesdel'inicidel
dia• weekday:variablecategòricaquerepresentaeldiadelasetmana
Resultats
LABORABLES FESTIUS TOTAL
Est. pBikes Encert Errors %Enc. Encerts Errors %Enc. Encerts Errors %Enc.
30 1 4.756 0 100% 1.369 0 100% 6.125 0 100,0%30 0 0 76 0% 0 26 0% 0 102 0,0%
42 1 3.916 222 95% 1.174 108 92% 5.090 330 93,9%42 0 190 504 27% 55 58 49% 245 562 30,4%
74 1 4.011 247 94% 1.268 0 100% 5.279 247 95,5%74 0 0 574 0% 0 127 0% 0 701 0,0%
366 1 3.877 10 100% 1.363 32 98% 5.240 42 99,2%366 0 20 925 2% 0 0 #DIV/0! 20 925 2,1%
1 16.560 479 97% 5.174 140 97% 21.734 619 97,2%
0 210 2.079 9% 55 211 21% 265 2.290 10,4%
16.770 2.558 87% 5.229 351 94% 21.999 2.909 88,32%
Comentaris
o Encertmoltaltentotal,continuasentbaixencasdenohaver-hibicicletes.
43
v4bis-Tempsbooleàitemperatura
Variabledependent:
• pbikes:indicalaprobabilitatdetrobaronobicicletesenunaestació
Variablesexplicatives:
• weather_type:variablecategòricabooleanaquerepresentasihihaprecipitacionsono
• temperature:variablecontínuaquerepresentalatemperaturaengrausCelsius
• updatetime:variablecontínuaquerepresentaelmomentdeltempspelqualesvollapredicció
• dayMoment:variablecontínuaquerepresentaeltempsensegonsdesdel'inicideldia
• weekday:variablecategòricaquerepresentaeldiadelasetmana
Resultats
LABORABLES FESTIUS TOTAL
Est. pBikes Encert Errors %Enc. Encerts Errors %Enc. Encerts Errors %Enc.
30 1 4.756 0 100% 1.369 0 100% 6.125 0 100,0%30 0 0 76 0% 0 26 0% 0 102 0,0%
42 1 3.882 256 94% 1.282 0 100% 5.164 256 95,3%42 0 205 489 30% 0 113 0% 205 602 25,4%
74 1 3.939 319 93% 1.268 0 100% 5.207 319 94,2%74 0 0 574 0% 0 127 0% 0 701 0,0%
366 1 3.815 72 98% 1.321 74 95% 5.136 146 97,2%366 0 47 898 5% 0 0 #DIV/0! 47 898 5,0%
1 16.392 647 96% 5.240 74 99% 21.632 721 96,8%
0 252 2.037 11% 0 266 0% 252 2.303 9,9%
16.644 2.684 86% 5.240 340 94% 21.884 3.024 87,9%
Comentaris
o Laintroducciódelatemperaturanosuposacapdiferènciarespectealsaltresmodels.Aquestfactorprobablementésmésrellevantal’hivern,quenopasal’estiu.
44
v5-TempscategoritzatiTemperatura
Variabledependent:
• pbikes:indicalaprobabilitatdetrobaronobicicletesenunaestació
Variablesexplicatives:
• weather_type:variablecategòricaquerepresentaeltipusdetempsquefa(sol,
ennuvolat,plujasuau,intensa,...)
• temperature:variablecontínuaquerepresentalatemperaturaengrausCelsius
• updatetime:variablecontínuaquerepresentaelmomentdeltempspelqualesvollapredicció
• dayMoment:variablecontínuaquerepresentaeltempsensegonsdesdel'inicideldia
• weekday:variablecategòricaquerepresentaeldiadelasetmana
Resultats
LABORABLES FESTIUS TOTAL
Est. pBikes Encert Errors %Enc. Encerts Errors %Enc. Encerts Errors %Enc.
30 1 4.756 0 100% 1.369 0 100% 6.125 0 100,0%30 0 0 76 0% 0 26 0% 0 102 0,0%
42 1 3.863 275 93% 1.282 0 100% 5.145 275 94,9%42 0 178 516 26% 0 113 0% 178 629 22,1%
74 1 3.964 294 93% 1.268 0 100% 5.232 294 94,7%74 0 0 574 0% 0 127 0% 0 701 0,0%
366 1 3.813 74 98% 1.324 71 95% 5.137 145 97,3%366 0 62 883 7% 0 0 #DIV/0! 62 883 6,6%
1 16.396 643 96% 5.243 71 99% 21.639 714 96,8%
0 240 2.049 10% 0 266 0% 240 2.315 9,4%
16.636 2.692 86% 5.243 337 94% 21.879 3.029 87,84%
• Comentaris
o Resultatsmoltsimilar,latemperaturacontinuasenseresultarrellevant.
45
v6-Predimelnombredebicicletes
Variabledependent:
• numbikes:indicaelnombredebicicletesquetrobem.
Variablesexplicatives:
• weather_type:variablecategòricaquerepresentaeltipusdetempsquefa(sol,ennuvolat,plujasuau,intensa,...)
• updatetime:variablecontínuaquerepresentaelmomentdeltempspelqualesvollapredicció
• dayMoment:variablecontínuaquerepresentaeltempsensegonsdesdel'inicideldia
• weekday:variablecategòricaquerepresentaeldiadelasetmana
Resultats-Nombredebicicletes
• Elsistemaaraprediuelnombredebicicletesquehipodenhaverenunmomentdeltemps.
• Hemconsideratunresultatcorrectequan:§ Silarealitatesquehihaalgunabici:consideremcorrectequanelnombre
debicicletesquepredimes+-20%elnombredebicicletesrealsal’estació.§ Silarealitatésquenohihabicicletesal’estació,consideremencertadala
prediccióquanelprogramaprediu0bicicletes. LABORABLES FESTIUS TOTAL
Est. pBikes Encert Errors %Enc. Encert Errors %Enc. Encert Errors %Enc.
30 1 1.223 2.111 37% 1.280 1.511 46% 2.503 3.622 40,9%30 0 0 58 0% 0 44 0% 0 102 0,0%
42 1 560 2.364 19% 261 2.235 10% 821 4.599 15,1%42 0 130 338 28% 25 314 7% 155 652 19,2%
74 1 348 2.677 12% 260 2.241 10% 608 4.918 11,0%74 0 0 367 0% 0 334 0% 0 701 0,0%
366 1 429 2.640 14% 33 2.180 1% 462 4.820 8,7%366 0 0 323 0% 0 622 0% 0 945 0,0%
1 2.560 9.792 21% 1.834 8.167 18% 4.394 17.959 19,7%
0 130 1.086 11% 25 1.314 2% 155 2.400 6,1%
2.690 10.878 20% 1.859 9.481 16% 4.549 20.359 18,26%
46
Resultats-Hihabicicletes?
• Elsistemaaraprediuelnombredebicicletesquehipodenhaverenunmomentdeltemps.
• Hemconsideratunresultatcorrectequan:§ Silarealitatesquehihaalgunabici:consideremcorrectequanelnombre
debicicletesqueprediemésde1omés.§ Silarealitatésquenohihabicicletesal’estació,consideremencertadala
prediccióquanelprogramaprediu0bicicletes. LABORABLES FESTIUS TOTAL
Est. pBikes Encert Errors %Enc. Encert Errors %Enc. Encert Errors %Enc.
30 1 3.334 0 100% 2.791 0 100% 6.125 0 100,0%30 0 0 58 0% 0 44 0% 0 102 0,0%
42 1 2.924 0 100% 2.496 0 100% 5.420 0 100,0%42 0 0 468 0% 0 339 0% 0 807 0,0%
74 1 3.025 0 100% 2.501 0 100% 5.526 0 100,0%74 0 0 367 0% 0 334 0% 0 701 0,0%
366 1 3.069 0 100% 2.213 0 100% 5.282 0 100,0%366 0 0 323 0% 0 622 0% 0 945 0,0%
1 12.352 0 100% 10.001 0 100% 22.353 0 100,0%
0 0 1.216 0% 0 1.339 0% 0 2.555 0,0%
12.352 1.216 91% 10.001 1.339 88% 22.353 2.555 89,74%
Comentari
o Encertmoltbaixenlapredicciódelnombredebicicletes,iunencertmoltaltenpredirquehihabicicletes.
o Encertnulenpredirquenohihabicicletes,elmodelsemprehapreditquehihabicicletes.
47
Resultatsglobals
LABORABLES FESTIUS TOTAL
pBikes Encert Errors %Enc. Encerts Errors %Enc. Encerts Errors %Enc.
V1 v1-Provabàsica
1 16.351 593 97% 5.282 32 99% 21.633 625 97,2%
0 252 2.036 11% 19 247 7% 271 2.283 10,6%
16.603 2.629 86% 5.301 279 95% 21.904 2.908 88,28%
V2 v2-diesdelasetmana"dummies"
1 16.332 707 96% 5.225 89 98% 21.557 796 96,4%
0 154 2.135 7% 0 266 0% 154 2.401 6,0%
16.486 2.842 85% 5.225 355 94% 21.711 3.197 87,2%
V3 v3-Tempsbooleà(plou/noplou).
1 16.560 479 97% 5.174 140 97% 21.734 619 97,2%
0 210 2.079 9% 55 211 21% 265 2.290 10,4%
16.770 2.558 87% 5.229 351 94% 21.999 2.909 88,32%
V4bis v4bis-Tempsbooleàitemperatura
1 16.392 647 96% 5.240 74 99% 21.632 721 96,8%
0 252 2.037 11% 0 266 0% 252 2.303 9,9%
16.644 2.684 86% 5.240 340 94% 21.884 3.024 87,9%
V5 v5-TempscategoritzatiTemperatura
1 16.396 643 96% 5.243 71 99% 21.639 714 96,8%
0 240 2.049 10% 0 266 0% 240 2.315 9,4%
16.636 2.692 86% 5.243 337 94% 21.879 3.029 87,84%
V6a v6-Predimelnombredebicicletes(nombre)
1 2.560 9.792 21% 1.834 8.167 18% 4.394 17.959 19,7%
0 130 1.086 11% 25 1.314 2% 155 2.400 6,1%
2.690 10.878 20% 1.859 9.481 16% 4.549 20.359 18,26%
V6b v6-Predimelnombredebicicletes
1 12.352 0 100% 10.001 0 100% 22.353 0 100,0%
0 0 1.216 0% 0 1.339 0% 0 2.555 0,0%
12.352 1.216 91% 10.001 1.339 88% 22.353 2.555 89,74%
Semblaserqueelresultatméscompensatésv3,doncsensdonalamésaltaprobabilitatd’encerts
tantquanhihabicicletescomquannon'hiha.
48
5.3 ModelDeRegressióRandomForestCurt/Llarg
Hemexploratlapossibilitatdeferunapredicciódiferentsegonselperíodedetempsenqueesdemana.LatecnologiaquefemservirperRandomForestés"R",enelquehemdecrearelmodelsobreelquefaremlapredicció.Aquestmodelesconstrueixsobredadesexistents,aixòimplicariaquecadavegadaqueunusuariensdemanaunaprediccióidealmentelreconstruiríem.Feraixòéspocpràcticeneldiaadia,jaqueelcostdeconstruirelmodelésforçaaltieltempsqueestrigaaconstruir-lotambé.
Ambelsrecursosdequedisposemnoésviablepoderferaquestareconstrucciódelmodelpercadapredicció,aixíquesemprepartimd'unmodelcalculatlanitanterior.Aixòvoldirquesiunusuariestàdemanantconèixerelnombredebicicletesd'aquí1hora,elsistemanotéencomptel'ocupacióactualdel'estació.
Aixídoncs,hempensatenaplicarunsistemalleugeramentdiferentperlesprediccionsacurttermini:
• Diferenciarcurt/llargtermini• Perunaprediccióllarg:ferservirl'algorismenormal(ambelmodelv3)• Perunapredicciócurt:
o Predirelnombredebicicletesquehihauriad’haveraramateix(ambelmodelv6)o Predirelnombredebicicletesnormalment(ambelmodelv6)o Calcularl’offsetdelesduesprediccions,ésadirsegonselmodelquantesbicicletes
guanyaremoperdrem.o Demanarelnombredebicicletesactualso Aplicarl’offsetdepredicciósobreelnombredebicicletesactualso Aquestseràelnombredebicicletesqueinformaremcomaresultatdelapredicció.
Lesprediccionss’hanfetamblesmateixesvariablesexplicativesqueelcasv3,ésadir,aplicantelmillorresultatassolit:
Variabledependent:
• pbikes:indicalaprobabilitatdetrobaronobicicletesenunaestació
Variablesexplicatives:
• weather_type:variablecategòricabooleanaquerepresentasihihaprecipitacionsono,adiferènciadelscasosanteriorsaquíhemvolgutsimplificaraquestavariableper"ajudar"al'algorismedepredicció
• updatetime:variablecontínuaquerepresentaelmomentdeltempspelqualesvollapredicció
• dayMoment:variablecontínuaquerepresentaeltempsensegonsdesdel'inicideldia
• weekday:variablecategòricaquerepresentaeldiadelasetmana
49
ModelcurtterminienversModelv3per1dia
Compararemelsresultatsobtingutsd'executarlapredicciósobrelesdadesd’undia,ihocompararemambelmillormodelv3d’unsoldia.Ésadir,tractaremd’esbrinarsilaprediccióacurtterminiésmillorsiestàfetaambl'últimnombredebicicletesdisponibleabansdelapredicció:
Resultatsdelmodelacurtterminicomparatambv3
Hihabici Nohihabici Total
Model Encert Errors %Enc. Encert Errors %Enc. Encert Errors %Enc.
30min 4.147 374 91,73% 178 345 34,03% 4.325 719 85,75%
60min 4.135 386 91,46% 163 360 31,17% 4.298 746 85,21%
90min 4.080 441 90,25% 95 428 18,16% 4.175 869 82,77%
120min 4.079 442 90,22% 68 455 13,00% 4.147 897 82,22%
v3 4.330 191 95,78% 35 488 6,69% 4.365 679 86,54%
Comentari
• Observemqueelsresultatstotalsdelmodelv3sónmillorsqueelsdelsnousmodelsacurttermini.
• Elsencertspelscasosquenohihabicicletessónconsiderablementmillorsenelsmodelscurt-terminiqueenelmodelv3.
50
Modelcurtillargtermini(junts)
Aixídoncsimplementaremunalgorismequesiguilleugeramentdiferentpelcurtquepelllargtermini.Ésadir,calcularemlesprediccionsdeduesmaneresdiferents,segonselterminidetempsquel'usuarirequereixi.
Hihabici Nohihabici Total
Model Encert Errors %Enc. Encert Errors %Enc. Encert Errors %Enc.
v3no24+30
min21.551 802 96,41% 408 2.147 15,97% 21.959 2.949 88,16%
v3no24+60
min21.539 814 96,36% 393 2.162 15,38% 21.932 2.976 88,05%
v3no24+90
min21.484 869 96,11% 325 2.230 12,72% 21.809 3.099 87,56%
v3no24+120
min21.483 870 96,11% 298 2.257 11,66% 21.781 3.127 87,45%
v3 4.330 191 95,78% 35 488 6,69% 4.365 679 86,54%
Comentari
• Observemqueelsresultatstotalsdelmodelv3sónmillorsqueelsdelsnousmodelscombinats
• Detotesmanerespreferimunmodelcombinat,jaqueéselméscompensatpels
doscasos.
51
6 Anàlisi
6.1 Anàlisidetemps
Tasca Perfil Hores
Reals
Hores
Planificades
Desviació
BacklogdeProducte 104 192 -88
DescripcióSistema CapdeProjecte 8 32 -24Serveisal’usuari CapdeProjecte 8 16 -8Mapadecomponents CapdeProjecte 32 40 -8
DescripcióMotorPredicció CapdeProjecte 8 24 -16PlataformaAppBackend Desenvolupador
backend24 56 -32
PlataformaBasedeDades Desenvolupadorbackend
24 24 0
Desenvolupament 480 348 132
CapturadeDades Desenvolupadorbackend
80 48 32
Appusuarifinal DesenvolupadorAppAndroid
80 48 32
Motordepredicció Desenvolupadorbackend
120 140 -20
ProvesdelSistema Controldequalitat 80 40 40Altres
Documentació CapdeProjecte 120 72 48
Total 584 540 44
CausesDesviació
• Backlogdeproducte:haestatnegativa,ésadir,heinvertitmenystempsdelqueestavaprevist.Aixòésaixíperquènovaigferunadocumentaciódetalladadelsrequisitsdelsistema,nivaigferunadescripciódelscomponentsdelsistema.Peraltrabandalaplataformabackendvaestarmoltsenzilladeposarenmarxaamblatecnologiadecontainersquevaigemprar.
• Desenvolupament:haestatunadesviaciósignificativa,motivatperunadefiniciópocprofundadelsrequeriments,quem’haexigitmésesforçal’horadeprogramar.Lesprovesdelsistemas’hanallargatpercontemplardiferentscasosambelsqualsm’heanattrobant.
52
6.2 Anàlisifinancer
Elcosteconòmicd'aquestprojecteesdivideixen:
• RecursosHumans• Infraestructura
Enaltresprojectespodríemtenirencompteelcostdelsoftwareperòenaquestcasnoésnecessari,jaquetotelsoftwareutilitzatéslliurei/ogratuït.
Comacostderecursoshumanshocalcularemapartirdeleshoresdedicadesalprojectedonantunvalordemercatalsdiferentsrols.
RecursosHumans
RecursSou
Anual1
CostAnual
2
Cost
HorariHores
Cost
Projecte
CapdeProjecte 39.375,00€ 59.062,50€ 32,81€ 176 5.775,00€
Desenvolupadorbackend 30.000,00€ 45.000,00€ 25,00€ 248 6.200,00€
DesenvolupadorAppAndroid 33.500,00€ 50.250,00€ 27,92€ 80 2.233,33€
Controldequalitat 29.000,00€ 43.500,00€ 24,17€ 80 1.933,33€
CostRecursosHumansProjecte 584 16.141,67€
Infraestructura
Infraestructura Desde Finsa Mesos CostMensual CostTotal
Servidor1GBdeRami1CPU Gener Juliol 7 5,00€ 35,00€Actualització4GBdeRami2CPUs Agost Setembre 2 40,00€ 80,00€CostInfraestructura 115,00€
CostTotal
Concepte Import
RecursosHumans 16.141,67€Infraestructura 115,00€CostTotalProjecte 16.256,67€
1http://www.techsalarycalculator.com/2Costossocialsiempresarialsdel50%delsou.
53
6.3 Anàlisidecompetències
Eneltreballhetractatdeposarenvalorpràctictotunseguitdematèries,entrelesquevoldriadestacar:
• Enginyeriadesoftware:pertaldeconstruiridissenyarelsistema,ésadir,quetractaremdeseguirpautesidocumentaciósegonsuncriterid’enginyeria.
§ Planificaciódelprojecte§ Anàlisifinancerdecostos§ Metodologia
• Programació:labasedelprojecteésunprogramari,pertantposaremenvalor
coneixementsihabilitatsadquiridesdeprogramació.§ Desenvolupamentdelfrontend§ Desenvolupamentdelbackend
• BasesdeDades:elmotordeprediccióesbasaendadesacumulades,pertanthaurem
dedissenyarunesquemaonquedinemmagatzematslesdadesenformatcru.§ Coneixementsdebasededades-administració§ ConeixementsdeMySQL
• Matemàtiquesiestadística:l’algoritmed’estimaciótindràcomabaseunapredicció
estadísticabasadaendiferentsdadesaplicantdiferentspesos.§ Coneixementsd’estadísticaquem’hanpermèsiniciar-meenlapredicció
mitjançantelmodelRandomForest
54
7 Conclusions
7.1 Comparativaamblacompetència
Hecomparatelsresultatsdelamevaestimacióambwww.bicintime.com,l’úniccompetidorquedónaserveidepredicció.Elsresultatssónelssegüents:Estació Dia Mes Any Hora Min Bicicletes
RealsBicingStats
UPF
42 24 8 2016 12 24 7 9 842 24 8 2016 12 8 6 10 830 24 8 2016 12 4 14 12 330 24 8 2016 12 34 14 15 430 24 8 2016 12 35 14 14 530 24 8 2016 12 36 14 15 6
366 24 8 2016 12 36 22 21 6366 24 8 2016 12 43 22 21 6366 24 8 2016 12 45 22 22 674 24 8 2016 12 49 1 1 674 24 8 2016 12 50 1 1 474 24 8 2016 12 51 1 0 274 24 8 2016 12 52 1 0 174 24 8 2016 12 53 1 0 1
Observemque:
• Lamevapredicció,encaraqueavegadesnoéslamésacurada,éslaquemenysdispersióofereixenconjunt.
o Lacompetènciahaestimatenalgunesocasionsunsvalorsdebicicletesmoltdiferentsdelarealitat(6bicicletes,quanhiha15,etc...)
• Lamevaprediccióéslamésajustadaenmésocasions(9guanyojo,1empat,inomésen4ocasionslacompetènciaésmésajustada).
• Lamevaprediccióté3casosenelsqualsprediuquenohihauràbicicletes,iencanvihiha1bicicleta.
Conclusió:
Totiquelesdadesd'aquestsistemadelesquedispososónpoques,jaqueleshemhagutderecollirmanualment,elsresultatssemblenindicarqueelmeusistemaésmésprecísqueelseu.Mésendavantm'agradariaferunsistemaderecol·lecciódedadesdelasevaAPIpertaldepoderferunacomparativarigorosa.
55
7.2 ElfuturdeBicingStats
M'agradariacontinuarmillorantl'aplicacióielsistemaconstruïtpertalquepuguiserunaaplicaciócomercialamblessegüentsmillores:
Millorarlaqualitatdelapredicció:
FentservirCross-Validationdedadespermirar"d'ajudar"al'algorismedepredicció,jaquetotitenirunpercentatged'encertsmoltaltquanprediuquehihabicicletes,elpercentatged'encertsquanprediuquenon'hihauràésmoltbaixactualment.
Voldriaprovard'afegirinformaciód'esdevenimentsespecialsalaciutatquepuguiafectaral'úsdeBicing(partitsdefutbol,concerts,cursespopulars,...),jaquelamevaexperiènciapersonalemfapensarquetenenunafortaincidènciaenl'ocupaciódelesestacionsperònotenencorrelacióambcapdelesdadesqueutilitzemperferlesprediccionsactuals,elquehofaunadadarellevant.
Amés,tambéseriamoltinteressantafegirunsistemaautomatitzatd'informesdelaqualitatdelesestimacions,pertaldeserutilitzadapermillorarlaqualitatdel'algoritme.
Optimitzarelrendimentdelsistema:
Actualmenteltempsderespostapercebutperl'usuariéscorrecte,peròelcàlculdelmodelresultamoltlent(ésnocturn),sobretotpelfetqueésunaconsultarelativamentcomplicadaalabasededades,quepodríemmillorarsifosdesnormalitzada.
CalculoelmodeldeprediccióutilitzantR,peròpodriaserinteressantfercomparativesambimplementacionsdel'algoritmeenaltresllenguatges(ofinsitotfer-neunaimplementaciópròpia).
Afegirmésplataformes:
Ésnecessaritenirtantunaversiówebdel'aplicaciócomunaversióiOS,jaquesónplataformesambmoltdepesim'assegurarienpoderarribaralmàximdepúblicpossible.
Unainiciativaquem'agradariavalorarseriacrearunaaplicacióperSmartwatch,jaquequansomalabicicletapodemvolerrealitzaralgunaconsultaievitartreureelmòbilpotserungranvalorafegitpelsusuaris.
Respectealainformacióqueesdónaal'usuari:
Voldriainformaral'usuaridelnombredeplacesdisponiblesal'estació.Elscriterisquehiaplicaréseranelsmateixosqueesfanserviralapredicciód'ocupaciódel'estació.
Afegirunaopcióperferconsultesdecomanard'unllocaunaltre,detalmaneraquel'aplicacióproporcionariaal'usuarilaprobabilitatdetrobarbicicletesal'estaciódesortida,eltempsdetrajecteilaprobabilitatdetrobarespaisbuitsal'arribada(similaracomhofaBicintime,elmeucompetidor).
56
Afegirunhistòricdelesconsultesquehafetl'usuariambl'opciódemarcarcertesestacionsotrajectescompreferides,detalmaneraquefacilitarial'úsdel'estacióal'usuari.
Tambéhauriadeconsiderarafegirunaeinaperobtenirfeedbackdepossiblesproblemesdel'aplicació,jasiguidemanant-hoal'usuaridirectamentoinstrumentantl'aplicaciópertald'obtenirdadesd'úsdememòria,CPU,...
Perúltim,ipensantentenirunaaplicacióquecomamínimnosuposiuncostdemanteniment,s'hauriad'optarbéperdemanardonacionsvoluntàriesalsusuarisoperintroduiralgunacaracterísticademonetització,jasiguimostraranuncis,ferl'aplicaciódepagamentoferquealgunacaracterísticanomésestiguidisponibleperusuarispagadors(comperexemplel'historialdeconsultes).
57
7.3 Opiniópersonal
Aquestprojectehaestatmoltinteressantpermi,jaquem'haservitperadquirirdiversosconeixementsnous.
Percomençarhetingutl'oportunitatd'emprarGo,queésmoltorientataservidoriquem'hasemblatmoltméseficaçquePHP,elllenguatgequefaigservirhabitualmentalmeudiaadiaalafeina.Gotémoltbonrendimentipelfetdetenirtipusestàticsproporcionapoquessorpreses.Amés,ésunllenguatgequeemrecordaforçaaunaversiósimplificadadeC++,quevaserelmeuprimerllenguatgedeprogramació.
TambéhepogutaprendreR,delqueenconeixianomésel"helloworld"iquem'hasemblatmoltfàcild'utilitzarisorprenentmenteficient,tenintencomptequeestractad'unllenguatgeinterpretat.Rm'hafacilitatpoderiniciar-meala"datascience"ambaquestprojecte,uncampenelqualm'agradariaaprofundirpertaldesercapaçdemillorarambfonamentelsistemadepredicciódel'aplicació.Aquestsconeixementsemfacilitaranengranmesurafuturestasquesd'anàlisidedadeslesqualssónmoltútilsentottipusdeprojectes(jasiguiperdescobrirquèfuncionaiquènoopertalderealitzarprediccions,igualquehefetaaquestprojecte).
LamevaexperiènciaambDocker,m'hasemblatmoltconstructiva.JahaviautilitzatcontenidorsdeDockeralafeina,peròhaviaconstruïtl’estructuradesdezero.Totiquelaposadaenmarxadelsistemadecontenidorsemvaconsumirforçatempsenunmomentinicial,crecquealallargavaserunabonainversió,jaqueemvaevitarmoltsproblemespotencialscausatsperpossiblesdiferènciesdeversionsentreelservidorielclient.AmbelqueséaranodubtariaentornarautilitzarDockerenelmeuproperprojecte.
58
8 Bibliografia
DocumentacióoficialdeGo
https://golang.org/
Documentacióoficiald'Android
https://developer.android.com/
DocumentacióoficialdeR
https://cran.r-project.org/
DocumentacióoficialdeDocker
https://docs.docker.com/
Resoluciódedubtespuntualsduranteldesenvolupament
http://www.stackoverflow.com
InformaciósobreRandomForest
https://en.wikipedia.org/wiki/Random_forest
https://www.youtube.com/watch?v=loNcrMjYh64ç
https://www.quora.com/What-are-the-advantages-of-different-classification-algorithms
Intel·ligènciaartificialiAprenentatgeautomàtic
www.udacity.com
Patronsd’aplicaciómòbil:
http://appdesignbook.com/es/contenidos/presentacion/
Concepted’arquitectura
http://www.iainstitute.org/what-is-ia
59
Elementsqueconfigurenl'arquitecturad'unaaplicació
https://es.wikipedia.org/wiki/Arquitectura_de_la_informaci%C3%B3n
MetodologiaScrum
http://openaccess.uoc.edu/webapps/o2/bitstream/10609/45670/7/jtiernobTFC0116mem
%C3%B2ria.pdf