40
Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Távközlési és Médiainformatikai Tanszék Magyar Zsanett ELŐREJELZÉS KERÉKPÁRKÖLCSÖNZÉSI ADATOK ALAPJÁN KONZULENS Kazi Sándor BUDAPEST, 2015

Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

Budapesti Műszaki és Gazdaságtudományi Egyetem

Villamosmérnöki és Informatikai Kar

Távközlési és Médiainformatikai Tanszék

Magyar Zsanett

ELŐREJELZÉS

KERÉKPÁRKÖLCSÖNZÉSI

ADATOK ALAPJÁN

KONZULENS

Kazi Sándor

BUDAPEST, 2015

Page 2: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

Tartalomjegyzék

Összefoglaló ..................................................................................................................... 5

Abstract ............................................................................................................................ 6

1 Bevezetés ....................................................................................................................... 7

2 A feladatkiírás pontosítása és részletes értelmezése ................................................. 8

3 Előzmények ................................................................................................................... 9

3.1 Az adatbányászat .................................................................................................... 9

3.1.1 A CRISP-DM módszertan ............................................................................... 9

3.1.2 Idősor elemzés ............................................................................................... 11

3.2 Hasonló alkotások ................................................................................................. 12

3.2.1 Lineáris regresszió ......................................................................................... 12

3.2.2 Gradient Boosting Regression ....................................................................... 13

4 A tervezés részletes leírása ........................................................................................ 14

4.1 Business Understanding ........................................................................................ 14

4.2 Data Understanding .............................................................................................. 14

4.2.1 Utazási információk ....................................................................................... 14

4.2.2 Dokkoló állások ............................................................................................. 15

4.2.3 Időjárási információk ..................................................................................... 15

4.2.4 Az adatok beolvasása ..................................................................................... 16

4.3 Data Preparation ................................................................................................... 17

4.3.1 Adatok generálása a munkarendi változásokról ............................................ 18

4.3.2 Az utazási adatok tisztítása ............................................................................ 18

4.3.3 Az állomások adatainak tisztítása .................................................................. 20

4.3.4 Az időjárási adatok tisztítása ......................................................................... 21

4.3.5 Adathalmaz előállítása a modellezéshez........................................................ 23

4.4 Modeling ............................................................................................................... 23

4.4.1 Benchmark ..................................................................................................... 24

4.4.2 Lineáris regresszió ......................................................................................... 25

4.4.3 Gradient Boosting Regression ....................................................................... 26

4.5 Evaluation ............................................................................................................. 28

4.5.1 Lineáris regresszió ......................................................................................... 28

4.5.2 Gradient Boosting Regression ....................................................................... 30

Page 3: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

4.5.3 Lineáris regresszió – GBR összehasonlítása ................................................. 32

5 Értékelés, továbbfejlesztési lehetőségek ................................................................... 34

6 Köszönetnyilvánítás ................................................................................................... 35

Irodalomjegyzék ............................................................................................................ 36

Függelék ......................................................................................................................... 38

Page 4: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

HALLGATÓI NYILATKOZAT

Alulírott Magyar Zsanett, szigorló hallgató kijelentem, hogy ezt a szakdolgozatot meg

nem engedett segítség nélkül, saját magam készítettem, csak a megadott forrásokat

(szakirodalom, eszközök stb.) használtam fel. Minden olyan részt, melyet szó szerint,

vagy azonos értelemben, de átfogalmazva más forrásból átvettem, egyértelműen, a

forrás megadásával megjelöltem.

Hozzájárulok, hogy a jelen munkám alapadatait (szerző(k), cím, angol és magyar nyelvű

tartalmi kivonat, készítés éve, konzulens(ek) neve) a BME VIK nyilvánosan

hozzáférhető elektronikus formában, a munka teljes szövegét pedig az egyetem belső

hálózatán keresztül (vagy hitelesített felhasználók számára) közzétegye. Kijelentem,

hogy a benyújtott munka és annak elektronikus verziója megegyezik. Dékáni

engedéllyel titkosított diplomatervek esetén a dolgozat szövege csak 3 év eltelte után

válik hozzáférhetővé.

Kelt: Budapest, 2015. 12. 09.

...…………………………………………….

Magyar Zsanett

Page 5: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

Összefoglaló

Napjainkban a kerékpárkölcsönző rendszerek számos adatot generálnak,

melyeket felhasználva előrejelzéseket, becsléseket adhatunk, amelyek nagy értéket

képviselhetnek egy ilyen hálózat üzemeltetőjének, hiszen segíti az állomások közötti

biciklielosztást és –szállítást.

A szakdolgozat célja adatbányászati módszereket felhasználva

kerékpárkölcsönzési adatok felhasználásával előrejelzést adni egy adott dokkoló

állomás iránti keresletre egy adott nap adott órájában. Jelen dolgozat az MTA SZTAKI

„Big Data – Momentum” csapata és a BKK által négy fős csapatok számára hirdetett

verseny adatait használja, melynek során MOL Bubi adatokat kellett elemezni.

A dolgozat 2. fejezete a feladatkiírás pontosításáról és részletes értelmezéséről

szól, információt ad arról, hogy az egyes pontok hol vannak megvalósítva a

dolgozatban.

Általános elméleti ismereteket szolgáltat az adatbányászatról, ismereteket ad az

ilyen projektek során használt legelterjedtebb módszertanról, információval szolgál

arról, hogy mi az idősor elemzés, továbbá hasonló alkotásokról, és ott alkalmazott

technikákról is számot ad.

Ezek után a konkrét feladat megvalósításának ismertetése következik, a dolgozat

felvilágosítást ad az adatokról, és a modellező eljárásokról, azok hatékonyságáról, és

rámutat néhány továbbfejlesztési, javítási lehetőségre.

Az implementáció során megismert új programozási technikákról, eljárásokról

tájékoztatást ad.

Page 6: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

6

Abstract

Nowadays bike-sharing systems generate large amount of data, what can be used

for prediction, estimation, hence creating value for these systems’ operators supporting

the distribution and transportation of the bicycles between the stations.

The goal of the thesis is to predict the demand of a docking station at a given

time with data mining techniques based on bike-sharing data. This thesis uses data from

a challenge organized by the "Big Data - Momentum" research group of the Hungarian

Academy of Sciences (MTA SZTAKI) and the Centre for Budapest Transport (BKK),

in which the participants analyze data of the MOL Bubi public bike-sharing system’s

data.

The second chapter of the thesis is about the project announcement and its

detailed interpretation, it gives information where the points are discussed in this

document.

It introduces theoretical knowledge about data mining, the most popular

methodology used by these projects, and gives information about time series analysis,

furthermore about similar publications, and techniques used there.

Then follows the statement of the actual task’s implementation, the dissertation

provides information about data, and modelling processes, their efficiency, and outlines

some further development, improvement possibilities.

The document concludes by providing information about the new programming

techniques, procedures learned during the implementation.

Page 7: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

7

1 Bevezetés

Napjaink kerékpárkölcsönző rendszereinek célja, hogy a kerékpárkölcsönzést

olyan szolgáltatásként nyújtsa a felhasználóknak, hogy az gyorsaságával és a

kerékfenntartás problémáinak elkerülésével egy elérhető és érdemes utazási alternatíva

legyen a célközönség számára. Ezek a rendszerek rengeteg adatot generálnak, mind az

állomásokon, mind a kerékpárok, amennyiben azok is szenzorokkal vannak felszerelve.

Ilyen adat lehet például az állomáson rendelkezésre álló kerékpárok száma, a menetidő,

az indulás vagy az érkezés helyszíne, ideje vagy az útvonalak és kölcsönzések

jellemzői. Megfelelő mennyiségű adat rendelkezésre állása esetén lehetséges a

forgalmat és az események egy részét előrejelezni, ami segítséget nyújthat a rendszer

üzemeltetőjének.

A szakdolgozat célja kerékpárkölcsönzési adatok felhasználásával előrejelzést

adni egy adott dokkoló állomás iránti keresletre egy adott nap adott órájában. Ez nagy

értéket képviselhet egy ilyen hálózat üzemeltetőjének, hiszen segíti az állomások közötti

biciklielosztást és –szállítást. Jelen dolgozat az MTA SZTAKI „Big Data – Momentum”

csapata és a BKK által négy fős csapatok számára hirdetett verseny adatait használja,

melynek során MOL Bubi adatokat kellett elemezni.

A szakdolgozat általános adatbányászati ismereteket szolgáltat, és egy konkrét

példán végigiterálva gyakorlati példát is mutat egy ilyen folyamat kivitelezésére. A

feladat megvalósítása során új programozói technikákat is ismertet.

Page 8: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

8

2 A feladatkiírás pontosítása és részletes értelmezése

A szakdolgozat célja korábbi kölcsönzési adatokat alapul véve egy modellezési

megoldás fejlesztése, mely segítségével előrejelezhető egy adott állomás iránti kereslet.

A szakdolgozatnak nem célja az eredeti versenyfeladat teljesítése, mert az eredeti –

négy fős csapatokra kiírt – feladat túlmutat annak keretein, ehelyett egy kapcsolódó, de

részleteiben eltérő feladat kerül megvalósításra.

Az Előzmények fejezet általános elméleti ismeretekre szolgáltat az

adatbányászatról, és az ilyen projektek során használt legelterjedtebb módszertanról

(CRISP-DM), szól az idősor elemzésről, továbbá hasonló alkotásokról, és ott

alkalmazott technikákról is. Az elemzés során használt eszközök, módszerek

ismertetése is itt történik.

A 4.1. fejezet információt ad a feladat részletezéséről, a megoldások

értékeléséhez szükséges úgynevezett benchmark megvalósításáról.

A következő két fejezet ismeretet nyújt az adatokról: a hiányzó, és az invalid

értékekről, azok módosításáról, újak létrehozásáról. Az eredeti adathalmaz

attribútumainak részletes ismertetője a Függelékben található.

A Modeling és az Evaluation fejezetek a feladat során megvalósított modellező

eljárásokról, azok javításáról, és a hatékonyságokról szolgál információt a benchmark

alapján. A modellek összehasonlításán túl a megismert technikákról is szól.

Az 5. fejezet az elért eredményeket ismerteti, majd rámutat néhány

továbbfejlesztési, javítási lehetőségre azok alapján, hogy az eddig alkalmazott technikák

közül melyek voltak a sikeresebbek, és azok milyen gyengeségeket tártak fel.

Page 9: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

9

3 Előzmények

Adatbányászattal nem először foglalkozom, korábban már az Önálló

laboratórium alatt megismerkedtem az alapjaival, ezek ismertetése következik ebben a

fejezetben [1].

3.1 Az adatbányászat

Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő

nemtriviális összefüggések kiaknázását értik. Az adatok tárolása önmagában nem jelent

tudást a felhasználó számára, az információt a nyers adatok csak hordozzák. Idővel

azonban kiszolgálhatóvá vált az igény a tudás feltárására, melynek egyik legfontosabb

lépése az adatbányászat.

Az adatbányászat elterjedésével különböző módszertanokat dolgoztak ki,

melyekkel egy adatbányászati projekt megvalósítható. A legelterjedtebb ilyen

módszertan a Cross-Industry Standard Process for Data Mining (Átfogó Adatbányászati

Folyamatszabvány) [2].

3.1.1 A CRISP-DM módszertan

A CRISP-DM alkotói egy szabványos és alkalmazási területtől független

módszertan megalkotására törekedtek. A módszertan hierarchikus folyamatmodellen

alapszik, hat általános fázisa van [3].

3.1.1.1 Üzleti célok meghatározása (Business Understanding)

Gyakran hagyják figyelmen kívül ezt a fázist, valójában azonban

elengedhetetlen a sikeres adatbányászati eredményhez. Ebben a fázisban adjuk meg

azokat a kérdéseket, amelyekre az adatbányászati folyamatunk végén tudni akarjuk a

választ. Kezdjük nagyratörő ötletekkel: Miért panaszkodnak a vevők? Hogyan

növelhetem a nyereséget? Hogyan tudom előre jelezni és kijavítani a hibákat? Ha ezeket

elkezdjük megválaszolni, akkor majd lehetővé válik a fejlesztés. Fontos meghatározni

már ekkor, hogy mit várunk eredményül, mi alapján fogjuk a modellünket minősíteni,

és mi számít majd jó eredménynek.

Page 10: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

10

3.1.1.2 Az adatok megértése (Data Understanding)

Régen az adatokat egy központi adatbázisban tárolták, és a munkavállalók onnan

tudták lekérdezni a szükséges adatokat. Manapság azonban a PC-k, laptopok, tabletek,

okostelefonok hozzájárulnak ahhoz, hogy az adataink eltávolodjanak egy központi

adattártól, olykor értékes adatok vannak elszórtan tárolva. Ez sokoldalú problémához

vezet, ugyanis előfordulhat, hogy alkalmazottak nem tudják, hogy hol keressék az

adatokat, vagy mi az, amihez hozzáférhetnek. Ezért többféle módszert dolgoztak ki az

adatok központosítására (adatbázisok, adatpiacok, adattárházak), ez azonban nem elég.

Rengeteg kérdés merülhet fel még az adatokkal kapcsolatban, amikkel a DU

fázisban foglalkozunk. Honnan származnak az adatok? Ki gyűjtötte őket, és milyen

módszerrel? Mit jelentenek a különböző oszlopok és sorok? Vannak mozaikszavak, és

rövidítések, amik jelentését nem tudjuk? Rendkívül fontos, hogy ellenőrizzük az adatok

pontosságát, és megbízhatóságát, felfedezzük az esetlegesen hiányzó mezőket. Ezek

megvizsgálása nélkül hibás, hiányzó adatokon dolgozva akár az egész adatbányászati

kutatás megbukhat.

3.1.1.3 Adatelőkészítés (Data Preparation)

Az adataink számos formában és formátumban lehetnek jelen: néhány adat

numerikus, mások szövegesek, és lehetnek kép formátumú adataink is, például táblázat,

grafikon, vagy térkép. Azokat az adatokat, amelyek nincsenek sorokba, vagy

oszlopokba rendezve, nem kell elutasítani – néha a nem hagyományos formátum

hordozza a legtöbb információt.

Az adatok előkészítése egy sor tevékenységet foglal magába. Ebben a fázisban

történik meg az adatok leválogatása és az algoritmusoknak megfelelő formára hozása. A

hiányzó adatokat kezelni kell, valamilyen becsült értékkel kitölteni, vagy

alapértelmezett értéket adni neki. Összekapcsolhatunk több adathalmazt, csak azokat a

változókat megtartva, amik érdekesek számunkra, ekkor esetleg szükséges újraformázni

az adatokat (például ne legyen telefonszám többféle módon tárolva ugyanazon

adatbázisban). Az adatok előkészítése segíthet, hogy sikeres kimenetet produkáljunk.

3.1.1.4 Modellezés (Modeling)

A modell az adatbányászatban egy számítógépes reprezentációja a valós

megfigyeléseknek. A modellek az algoritmusok alkalmazásai, arra, hogy megtalálják,

Page 11: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

11

azonosítsák, és megjelenítsék az adatok mintáit, üzeneteit. A modellezési technikáknak

két alapvető fajtája van az adatbányászatban: azok, amelyek osztályoznak, és azok,

amelyek jósolnak, de van némi átfedés közöttük. Például a döntési fa alapvetően egy

jósló (prediktív) modell, de az eredmény kifejezi, hogy a megfigyelés milyen

kategóriába fog esni, így segít az osztályozásban is. A modell kiválasztásának

befolyásoló tényezői lehetnek az adatok formátuma, a konkrét cél, annak

követelményei, az eredmény megjelenítési formátuma.

A modell futtatása után az eredmények értelmezése a feladat, melyet az adott

területről szerzett ismeretek, a korábban meghatározott kritériumok alapján

végezhetünk. Összevethetjük más modellek eredményeivel, hangolhatunk,

visszacsatolhatunk, optimalizálhatunk.

3.1.1.5 Eredmények értékelése (Evaluation)

Ebben a fázisban már azt vizsgáljuk, hogy a modellünk eredménye mennyire

hasznos, mennyire használható. Előfordulhat, hogy nem találunk érdekes mintákat az

adatokban, ez azért lehet, mert rosszul állítottuk fel a modellünket, vagy egyszerűen

nincs semmi érdekes az adatainkban. Az modell értékelése számos technikával

végezhető, mind matematikai és logikai jellegű. Ezeken túl modelleket emberi

szempontok alapján is értékeljük: egyéni tapasztalatszerzés vagy szakértelem a magunk

területén.

3.1.1.6 Üzleti szintű alkalmazás (Deployment)

Ha sikeresen azonosítottuk a kérdéseinket, előkészítettük az adatainkat, amik

válaszolni tudnak a kérdéseinkre, és van egy modellünk, ami érdekes és hasznos a

tesztünk szerint, akkor megérkeztünk arra a pontra, hogy használjuk az eredményeinket.

Ebben a fázisban lévő tevékenységek (modell automatizálása, a modell kimenetének

megmutatása a fogyasztóknak…) javítják a modellben a pontosságot, nyomon követik a

teljesítményt.

3.1.2 Idősor elemzés

Az idősor elemzés az adatbányászat azon ága, amely során figyelembe veszik az

adatok időbeli sorrendjét, és ez a tulajdonság fontos információt is hordoz, az adatok

sorrendje egymással nem felcserélhető. Megfelelő módszerekkel számos hasznos

információ nyerhető ki az adatainkból, képesek lehetünk előre jelezni a jövőbeni

Page 12: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

12

értékeket. Fontos döntés, hogy az idősort mekkora időszakokra bontjuk fel és az így

nyert értéket milyen pontossággal tároljuk. Nyilván azt szeretnénk, ha az idősor minél

pontosabban leírná a megfigyeltet, de túl sűrű mintavétellel (túl rövid időszakok

használatával) hatalmas tárolókapacitásra van szükség. Amikor egyetlen idősort

elemzünk, célunk általában az, hogy az idősor jövőbeli értékeit minél jobban meg

tudjuk becsülni [4]. Az idősorok elemzésére több módszer létezik, egyik ilyen a lineáris

regresszió, amikor is egy függvénnyel megpróbáljuk a lehető legpontosabban közelíteni

az idősorunkat. A legegyszerűbb esetben egy lineáris regressziót egy célváltozó és egy

magyarázó változó között lehet értelmezni [2].

3.2 Hasonló alkotások

Az ECML-PKDD 2015 hirdetett egy versenyt „Model Reuse with Bike rental

Station data” címmel, melyen egyetemünk munkatársa Barta Gergő is részt vett a

Dmlab tagjaként, és kiválóan szerepelt [5]. Az eredeti verseny célja itt az volt, hogy

előre jelezzék az óránkénti kerékpár rendelkezésre állást számos dokkoló állomáson egy

adott nap adott órájában. Az adatbázis két és fél év kerékpár elérhetőségi adatait

tartalmazta óránkénti bontásban tíz állomáshoz, Valencia városában. Ezen kívül további

részadatok is rendelkezésre álltak más állomásokról az egész városban.

A verseny során együttes módszereket alkalmazott, ami azt jelenti, hogy

alaposztályozók egy halmazát hozzuk létre a tanulóadatokból és úgy végzünk

osztályozást, hogy egy többségi szavazást tartunk az egyes alaposztályozók által adott

előrejelzéseken. Ebben az esetben egy olyan módszert alkalmazott, amely már sikeres

volt korábbi versenyeken, ez pedig a Gradient Boosting regressziós fa kombinálva

Random Foresttel. Később ezt kiterjesztette Ordinary Least Squere regresszióval, egy

olyan modellel, amely széles körben használt az idősorok előrejelzésére. A szakdolgozat

során e módszerek közül az OLS-en belül, Lineáris regressziót, valamint Gradient

Boosting Regression Tree-t használtam, így most ezeknek a részletezése következik.

3.2.1 Lineáris regresszió

A lineáris regresszió, mint más regresszió, egy olyan eljárás, amely során a

célváltozó egy lineáris kombinációja a bemeneti változóknak [6]. Ennek alakja a

következőképpen írható fel:

Y’ = b1 * x + b0 + E

Page 13: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

13

Ahol Y a függő változó, amely x változótól b1 arányában függ. A b0 egy eltolás

paraméter, E pedig az ún. hibatag, amelyet a regressziós függvényünk nem magyaráz

meg. A függvény által meghatározott Y’ érték és a valódi Y érték közti eltérést

nevezzük residuumnak. Nyilvánvaló, hogy bizonyos értelemben az egyik legjobb

regressziós egyenest akkor kapjuk, ha összegezzük a residuumok négyzetét és azt az

egyenest választjuk, amelynél ez az összeg minimális (a négyzetösszeg lesz ebben az

esetben a hibafüggvényünk) [2].

3.2.2 Gradient Boosting Regression

Az együttes módszerek célja tehát, hogy kombinálják több eljárás, adott

algoritmuson alapuló eredményét azért, hogy az általánosítás hatékonyabban működjön,

és robosztusabb modellt lehessen alkotni. Az együttes módszereknek két családját

különböztetjük meg:

Az átlagoló módszerek esetén a fő elv az, hogy több független becslést

adjunk, majd átlagoljuk az eredményeket. Általában a kombinált becslő

jobb, mint egyetlen előrejelző, mert a variancia csökken. Ilyen például a

Random Forest.

Ezzel ellentétben a boosting módszerek esetén számos becslőt

alkalmaznak szekvenciálisan, és egy becslő próbálja csökkenteni a

kombinált becslő torzítását. A motiváció az, hogy számos gyengébb

modellből létrehozzanak egy erősebbet. Ilyen a Gradient Boosted

Regression Trees.

A Gradient Tree Boosting egy pontos és hatékony eljárás, ami használható

regresszióra és osztályozó problémák megoldására is, így sok területen

alkalmazzák. A GBRT előnyei közé tartozik, hogy vegyes típusú adatok is

könnyen kezelhetőek, hatékony előrejelzést ad, és robosztus a kiugró értékekkel.

Hátránya a skálázhatóság, mivel a boosting szekvenciális természete miatt nehéz

a párhuzamosítás.

Az implementációhoz a Python Scikit-learn libraryt használtam A lineáris

regresszió és a GBR esetén is [7].

Page 14: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

14

4 A tervezés részletes leírása

A tervezés során a CRISP-DM fázisain végigiterálva jutottam el a megoldásig,

ennek részletezése következik most. A feladatot Python nyelven valósítottam meg, és

több új library, és modul ismeretére is szert tettem, pl.: pandas az adatok előkészítéséhez

[8], csv új adatok létrehozásához és .csv fájlba mentéséhez [9], numpy a bonyolultabb

matematikai műveletek elvégzéséhez [10], datetime az adathalmaz megfelelő

felbontásának létrehozásához [11], matplotlib [12], és seaborn [13] az ábrák

készítéséhez.

4.1 Business Understanding

A kerékpárok iránti igény meghatározásához szükséges egy predikciós modellt

megalkotni, azaz idősort kell elemeznem, és becslést adni a következő időponthoz

tartozó értékre. A modell hatékonyságának ellenőrzéséhez elengedhetetlen egy

úgynevezett benchmark létrehozására is, amelyben modellezési eljárás nélkül becslünk,

és a két módszert összehasonlítva döntünk a modellünk jóságáról. A megvalósított

benchmarkról részletesebben a 4.4.1 Benchmark fejezetben olvashatunk.

4.2 Data Understanding

Az MTA SZTAKI három .csv fájlban tett közzé adatokat, melyek különböző

információkat tartalmaznak [14]. Ezek részletes ismertetése a Függelékben olvasható.

4.2.1 Utazási információk

A train.csv fájl tartalmazza az egyes utazásokhoz kapcsolódó információkat

2015.01.01-től 2015.05.31-ig. A szakdolgozat keretein belül a hiányos adatokat (napok)

nem tartalmazó hónapok adatait használtuk, az áprilisban, és májusban rögzített

adatokat nem vettük figyelembe, azok a versenyfeladat megvalósításához lettek volna

szükségesek.

Megjegyzések:

Vannak úgynevezett szerviz utazások, amikor az üzemeltetők újraosztják

a kerékpárokat az állomások között, megbizonyosodva arról, hogy

Page 15: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

15

minden állomáson minden időpontban található kerékpár. Ezek az utak

nem szerepelnek az adathalmazban.

Érvénytelen utazások, amiknek az időtartama 0 volt, el lettek távolítva az

adathalmazból.

A 0101 azonosítójú állomás (Batthyányi tér) kikerült az adatbázisból,

mivel január 16. és április 16. között nem keletkezett adat erről az

állomásról.

Egy utazáshoz mindig megtalálható az indulás és az érkezés ideje és

helyszíne is. Ha egy utazás több napon ível át, és az egyik nap a training

set-ben van, míg a másik az evaluation set-ben, akkor mindkét napot

megjelenítjük mindkét halmazban.

4.2.2 Dokkoló állások

A station_data.csv fájl tartalmazza a dokkoló állásokhoz kapcsolódó

információkat.

Megjegyzések:

Mivel néhány dokkoló állást újratelepített 2015-ben a szolgáltató, ez a

fájl több rekordot is tartalmazhat egy adott állomásról.

Még ha az állomás teljes is, a felhasználók visszatérhetnek az állomások

közelében található extra standokhoz.

4.2.3 Időjárási információk

A weather.csv fájl időjárási információkat tartalmaz minden fél órában a teljes

periódusban.

Megjegyzés:

Az időjárási adatok elérhetőek mind a training, mind az evaluation

időszakokhoz.

Bizonyos változók értéke -9999 vagy -999 akkor, ha a változóhoz nem

tartozna érték, vagy értelmezhetetlen lenne [15].

Page 16: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

16

4.2.4 Az adatok beolvasása

Az adatokat a pandas read_csv() metódusával olvastam be, és közben megadtam

az egyes attribútumok típusát is. Beolvasás után a data frame-ket kiírtam, így

információt kaptam arról, hogy az egyes .csv fájlokban hány sor található, és

ellenőrizhettem, hogy vannak-e hiányzó értékek. Ezeket csak a versenyben megadott

helyen, az időjárási adatoknál (7235 rekord) találtam, a szélsebesség (wspdm), a látási

viszonyok (vism), és a hőérzet (windchillm) attribútumok halmaza nem teljes. Ezeknek

a változóknak az értékeit egy diagramon ábrázolva a 4.1. ábra eredményét kaptam:

4.1. ábra - Hiányzó időjárási értékek

Ezen az ábrán nem szembeötlő a szélsebesség bizonyos értékeinek hiánya, így

azt külön is megtekintettem, hogy pontosan mely időpontokban hiányzik, ez látható a

4.1. táblázatban:

4.1. táblázat - A szélsebesség értéke két helyen hiányzik

Ez után megvizsgáltam, hogy a látási viszonyok, és a hőérzet értékei közül

pontosan hány érték hiányzik, hogy a későbbiekben döntést tudjak arról hozni, hogy

esetleg érdemes-e ezeket a sorokat eldobni, vagy próbáljam meg megbecsülni őket. Azt

Page 17: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

17

az eredményt kaptam, hogy a látási viszonyoknak 4167 helyen, a hőérzetnek pedig 3629

helyen hiányzik az értéke, ezekről részlet a 4.2. táblázatban és a 4.3. táblázatban

olvasható.

4.2. táblázat - A látási viszonyok néhány hiányzó értékei

4.3. táblázat - A hőérzet néhány hiányzó értékei

A hiányzó értékek kezeléséről az Adatelőkészítés során döntünk.

4.3 Data Preparation

Az adatelőkészítés célja az, hogy az adatokat olyan formátumúra hozzuk, amit a

modellezés során használni tudunk, így ebben a fázisban kell például a hiányzó adatokat

kezelni. Ezen kívül létre kell hozni a training-validation halmazokat. A modellünket a

training halmazon tanítjuk, a validation halmazzal döntést hozunk arról, hogy hogyan is

teljesít a modellünk [1].

A feladat során a dokkolóban lévő kerékpárok számát akarjuk megbecsülni,

ehhez összefüggést keresek az időjárás és a hétvégék, ünnepnapok hatásáról az emberek

viselkedésére.

Page 18: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

18

4.3.1 Adatok generálása a munkarendi változásokról

Mivel az ünnepnapokról nem rendelkeztem információval, első lépésként

létrehoztam egy új adathalmazt, amelyben eltároltam a 2015. évi munkarendi

változásokat [18], amiket összevetve majd az eredeti adathalmazzal, képet kaphatunk

arról, hogy a hosszú hétvégék, valamint a szombati munkanapok hogyan befolyásolják

az emberek kerékpározási szokásaikat. A létrehozott táblázatnak két oszlopa van:

date: a munkarendi változás napja,

holiday: értéke 1, ha az adott dátum ünnepnap, és 0 abban az esetben, ha

munkanap (szombati munkanap).

A 4.4. táblázatban olvasható a tartalma (2015. első három hónapjában előforduló

változások):

4.4. táblázat - Munkarendi változások

4.3.2 Az utazási adatok tisztítása

A train.csv beolvasása után az első teendő az adathalmaz redukálása volt, azaz

az áprilisi, és a májusi adatok elhagyása. Így a kezdeti 135484 utazási adat 65469-re

csökkent. Ez a jelentős különbség valószínűleg annak is köszönhető, hogy a tavaszi

időjárás kedvezően hat a kerékpározási szokásokra, míg a téli hónapokban kevesebben

ülnek biciklire. A 4.2. ábra erről ad információt.

Page 19: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

19

4.2. ábra - Utazások száma napi bontásban

Ami az utazási adatok tisztítását jelenti, fontos lehet figyelembe venni az

utazások időtartamát. Ha egy út kevesebb, mint három, vagy öt percig tartott, akkor

előfordulhat, hogy abban az esetben valami probléma volt az adott kerékpárral (defekt,

rossz ülés…), és a felhasználó inkább visszatette azt. Ezeken az adatokon látszik az is,

hogy az indulás és az érkezés helye általában azonos (4.5. táblázat).

4.5. táblázat - Öt percnél rövidebb utazások

A rövid utazások számáról kapunk információt a 4.3. ábraán:

Page 20: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

20

4.3. ábra - Rövid utazások száma napi bontásban

A következő fontos lépés az utazási adatokból az állomások iránti kereslet

megadása. Ehhez megállapítottam az egyes állomások keresettségét napi szinten, külön

indulásokat és érkezéseket tekintve, majd a két tábla összefűzésével, és egy új

„demand” attribútum létrehozásával kiszámoltam a daily_end_count és a

daily_start_count közötti különbséget (4.6. táblázat).

4.6. táblázat - Az állomások iránti kereslet

4.3.3 Az állomások adatainak tisztítása

Az állomások beolvasása után itt is az a feladat, hogy töröljük azokat az

adatokat, amelyek április, májusi időpontokra vonatkoznak (4.7. táblázat):

Page 21: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

21

4.7. táblázat - Törölt állomás adatok

4.3.4 Az időjárási adatok tisztítása

A továbbiakban a weather.csv adatok tisztításával foglalkoztam, ebben a fájlban

voltak hiányzó értékek, melyet -999 vagy -9999 jelzett eredetileg, a beolvasás során

ezeket felülírtam a numpy NaN értékével. Az előző részben láthattuk, hogy a

szélsebesség a látási viszonyok, valamint a hőérzet bizonyos értékei hiányoznak. Mivel

az adathalmaz nagy hányadában nincs információnk ezekről az értékekről, nem célszerű

ezeket a sorokat eldobni, mert akkor más hasznos attribútumok értékét is elveszíthetjük,

így inkább megpróbáltam ezeket az értékeket megbecsülni. Ehhez a napi értékek átlagát

számoltam ki, és azt helyettesítettem be a hiányzó helyekre. A 4.8. táblázatban a kapott

eredményhalmaz első öt eleme látható, amiből arra lehetett következtetni, hogy az

értékeket sikerült pótolni.

4.8. táblázat - Hiányzó értékek becslése a napi átlagokkal

A biztonság kedvéért még leellenőriztem, hogy van-e valamelyik attribútumnak

még olyan értéke, amit a napi átlaggal nem sikerült kiszámítani, az eredmény a 4.9.

táblázatban látható.

Page 22: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

22

4.9. táblázat - A látási viszonyok között még van hiányzó

Ez úgy fordulhatott elő, hogy voltak olyan napok, ahol egyik időpontban sem

rögzítették a látási viszonyokat, így nem volt semmilyen adat, amiből az átlagot

számolni lehetett volna az adott napra. Ezt végül úgy oldottam meg, hogy az előző napi

értékével becsültem meg, melyről a 4.10. táblázatban látható egy részlet.

4.10. táblázat - Látási viszonyok becslése az előző napi értékekkel

Page 23: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

23

A becsült értékekről látható egy diagram a 4.4. ábraán, ekkor már napi bontású

adatokkal számolva. Jól látszik, hogy nincs szakadás a függvényekben, így a hiányzó

értékeket sikeresen pótoltam.

4.4. ábra - Hiányzó értékek becsülve, napi bontás

4.3.5 Adathalmaz előállítása a modellezéshez

Az előző pontokban ismertetett módokon tisztított adatokat szükséges egy nagy

táblázatba összefoglalni, amit majd a modellezés során felhasználhatunk. Ezt a

módosított utazási, állomás és időjárási adatok összefűzésével készítettem el, majd a

keletkezett táblát elmentettem egy új .csv fájlba. Az ebben megtalálható attribútumok:

year, month, day, location, daily_start_count, daily_end_count, demand, pressurem,

vism, wspdm, wdird, windchillm, tempm, hum. Az attribútumok értékei a korábban

ismertetetteknek megfelel. A modellezés során a demand értékét kell majd megbecsülni.

4.4 Modeling

A CRISP-DM szerint az adatok előkészítése után a következő lépés a

modellezés. A modellezés egy iteratív folyamat, ennek megfelelően több technikát is

kipróbáltam. Első modelljeimet az Önálló Laboratórium során megismert lineáris

regresszióval valósítottam meg [1], majd több modellt is készítettem az Előzményekben

is ismertetett Gradient Boosting Regression-nel. A modellezést befolyásolja a

magyarázó változók mennyisége, minősége, mindegyik modellt futtattam időjárási

Page 24: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

24

adatok figyelembe vételével, és azok nélkül, valamint a munkarendi változásokat is

hozzáadva. A modellezés hatékonyságára hatással van még a training-validation setek

szétválasztása is, így az eljárásokat elvégeztem 70-80-90%-os vágás esetén is.

A modellek jóságáról benchmark segítségével tudunk döntést hozni, amikor

modellező eljárás nélkül becslünk. A következőkben erről és a modellek

megvalósításáról írok.

4.4.1 Benchmark

Az összehasonlítás alapjául szolgáló benchmarkot az adatelőkészítés során

létrehozott új .csv fájl felhasználásával generáltam. A benchmark ötlete az volt, hogy a

jósolt értéket adja az előző két nap demand-jának átlaga.

Ehhez szükséges volt a meglévő adathalmazhoz új oszlopok hozzáadására,

amely segítségével megkaphatjuk egy adott lokációhoz tartozó értéket a korábbiak

átlagából, viszont az előkészítés során tisztított időjárási adatokat el lehetett hagyni,

mivel azokat a benchmark számításánál nem vettem figyelembe.

4.11. táblázat - Adott állomáshoz tartozó benchmark adatok részlete

A 4.11. táblázat egy adott állomáshoz tartozó benchmark adatokról ad

információt. Látható, hogy a demand értékát a ’daily_end_count’-’daily_start_count’

határozza meg, míg a ’benchmark_value’ értékét az aktuális és a korábbi demand átlaga

adja.

A benchmark hibájának meghatározását a modellekéhez hasonló módon, az

adathalmaz megfelelő vágásával végeztem. A számítást a Scikit-learn metrics

moduljának mean_squared_error funkciójával végeztem, az eredményt meghatároztam

mind a train, mind a validation halmazok esetén.

Page 25: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

25

4.4.2 Lineáris regresszió

A lineáris regresszió megvalósításához a Scikit-learn library LinearRegression

osztályát használtam. Az osztály fit(x, y) metódusával taníthatjuk a modellünket, ahol x

a magyarázó változók halmaza, y pedig a célváltozónk. Ha ez megtörtént, akkor a

predict(x) metódussal megkapjuk a becsült értékeket.

A lineáris regressziót elvégeztem többféle vágással, többféle magyarázó változó

alkalmazásával, de az eredmények azt mutatták, hogy ezek között csak nagyon kis

eltérések voltak. A modellezést a következő kódrészlet valósítja meg:

''' Kapcsolat a célváltozóval ''' datas.corr()['demand'] ''' Train - validation szétvágása start index alapján''' d = datas.copy() train_linreg = d[d.index < start] val_linreg = d[d.index >= start] y_train = train_linreg.demand y_val = val_linreg.demand from sklearn import linear_model, metrics ''' Lineáris regresszió tanítása ''' regr = linear_model.LinearRegression() regr = regr.fit( train_linreg [ train_linreg.columns - ['demand']], train_linreg.demand) p_train = regr.predict( train_linreg [ train_linreg.columns - ['demand']]) p_val = regr.predict( val_linreg [ val_linreg.columns - ['demand']]) '''Train, validation hiba''' mse_train = metrics.mean_squared_error(y_train, p_train) mse_val = metrics.mean_squared_error(y_val,p_val)

A kis eltéréseket a 4.5. ábra szemlélteti, amin a jósolt értékek napi átlaga látható

70%-os vágásnál, a magyarázó változók szerinti eseteket egy diagramon ábrázolva.

Mivel az egyes esetek közel azonos hibával teljesítenek, így azok átlagát véve és

ábrázolva, a három eset egy görbére esik. Az előrejelzendő érték, a demand átlagát is

ábrázolva, szintén erre a görbére esnek az értékek, látható, hogy a lineáris regresszió jól

teljesít.

Page 26: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

26

4.5. ábra - Lineáris regresszió előrejelzések a validation halmazon (70%)

4.4.3 Gradient Boosting Regression

A Gradient Boosting Regression döntési fán alapuló módszer. A döntési fák az

osztályozási feladatot döntések sorozatára vezetik vissza, először kiindulunk a teljes

adathalmazunkból, majd valamilyen módszer segítségével kettő vagy több részre

bontjuk azt úgy, hogy a kialakult halmazokban a célváltozónk kevésbé szórt. A

továbbiakban a két részre külön-külön megkeressük ezt az optimális partícionálást

biztosító értéket és mindaddig folytatjuk, amíg egy a rekurziót leállító megállási

feltételbe nem ütközünk. Ez a feltétel többféle lehet, például:

Minden elem az adott partícióban egy osztályba tartozik

Adott csomópontnak nincs több eleme

A fa mélysége elért egy előre megadott korlátot.

A döntési fa eljárások, ha túl sok szintet tartalmaznak képesek az adatokat túl jól

megtanulni. Ez a túltanulás jelensége, amely miatt ugyan a tanuló adathalmazon jó

eredményeket (osztályozási pontosságot) tudunk elérni, a modell általánosító képessége

mégis rossz, mert új adatokon a fa már nagyon rosszul teljesít. Erre megoldás lehet, ha a

tanulás során kapott fának az éleit visszavágjuk. Sajnos a döntési fák csak egy dimenzió

mentén képesek partícionálni így sokszor nem használhatók bonyolultabb feladatok

megoldására [2].

Page 27: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

27

A GradientBoostingRegressor osztály is a Scikit-learn library része, és

különböző paramétereket állíthatunk be alkalmazásakor, amik közül én a következőket

használtam [7]:

loss: ezzel a paraméterrel a különböző loss function-ket definiálhatjuk, az

alapértelmezett értéke ’ls’ (least squares), ezt használom én is. Ekkor a

kezdeti modellt a célváltozók átlaga adja

learning_rate: a gyenge tanulók (pl. regressziós fák) számát korlátozza,

értéke a modellemben 1.0.

n_estimators: a boosting szakaszok száma. A GBR meglehetősen

robosztus a túltanulással szemben, így egy nagyobb számmal jobb

teljesítmény érhető el, értéka a modellemben 100.

max_depth: az egyes regressziós becslések maximális száma, korlátozza

a csomópontok számát a fában. A legjobb teljesítményért érdemes

használni, de ez függ a bemeneti változók kölcsönhatásától is, értéke a

modellemben 15.

random_state: véletlen állapotok száma, a modellemben 0 az értéke.

A paraméterek beállítása után a modellünket a lineáris regresszióhoz hasonlóan

a fit(x,y) metódussal taníthatjuk, a becsült értékeket pedig a predict(x) adja.

A Gradient Boosting Regression-t is elvégeztem többféle vágással, többféle

magyarázó változó mellett, de az eredmények nem voltak a lineáris regresszióval

összehasonlíthatóak a validációs halmazon, míg a trainingen még hasonlóképp

teljesített, amit a modell túltanulása okozhat. A 4.6. ábra a demand értékeit és a

validációs halmaz becsléseit mutatja, látható, hogy több helyen is nagyobb kilengések

vannak.

Page 28: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

28

4.6. ábra - GBR előrejelzések a validation halmazon (70%)

4.5 Evaluation

4.5.1 Lineáris regresszió

Lineáris regresszió 70 %-os training-validation vágása esetén azt vettem észre,

hogy plusz magyarázó változók hozzáadása az adathalmazhoz nem befolyásolja, vagy

csak nagyon kis mértékben a modell hatékonyságát (4.12. táblázat).

Training Validation

Benchmark 5.46509812667 11.885399449

LinReg időjárási adatok nélkül 2.64165722389

e-27

9.62372344183

e-27

LinReg időjárási adatokkal 1.71759283091

e-27

9.30574979014

e-27

LinReg időjárási és ünnepnapi adatokkal 2.34702262406

e-27

5.19743165283

e-27

4.12. táblázat - Benchmark-lineáris regresszió hibaértékek 70%-os vágásnál

A 4.7. ábra a demand, és a különböző lineáris regressziós modellek becsléseinek

átlagát mutatja a magyarázó változók szerint a validation halmazon (ezek egy görbére

esnek), továbbá a benchmarkhoz való viszonyát. Látható, hogy a modellek közötti

eltérés minimális.

Page 29: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

29

4.7. ábra - Benchmark - Lineáris regresszió előrejelzések a validation halmazon (70%)

Az adathalmaz 80%-os szétválasztásakor a lineáris regresszió már kissé másként

viselkedett. Az időjárási változókat hozzáadva a magyarázó változókhoz a modell

javult, pontos értéke a 4.13. táblázatban olvasható.

Training Validation

Benchmark 5.89041764247 13.5276595745

LinReg időjárási adatok nélkül 7.99435471914

e-27

7.96575393203

e-27

LinReg időjárási adatokkal 1.65427704192

e-27

2.0040078754

e-27

LinReg időjárási és ünnepnapi adatokkal 2.66421678365

e-27

2.83477851102

e-27

4.13. táblázat - Benchmark-lineáris regresszió hibaértékek 80%-os vágásnál

A training-validation halmazok 90-10 % arányban történő megadásakor az

időjárási változók hozzáadásakor romlott a modell hatékonysága, de később a

munkaszüneti napok figyelembe vétele ezt kompenzálta (4.14. táblázat).

Training Validation

Benchmark 6.70993061578 13.8478464419

LinReg időjárási adatok nélkül 7.81447398172

e-28

1.07187599363

e-27

LinReg időjárási adatokkal 4.77963803696

e-27

6.63598519018

e-27

LinReg időjárási és ünnepnapi adatokkal 1.27006114772

e-27

1.18290142074

e-27

4.14. táblázat - Benchmark-lineáris regresszió hibaértékek 90%-os vágásnál

Page 30: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

30

A 4.8. ábra alapján látható, hogy a lineáris regresszió a 90 %-os training-

validation szétválasztás esetén javulást mutatott, de az egyes esetek közötti különbség

itt is kicsi, így az átlagot ábrázolva ismét egy görbére esnek az értékek.

4.8. ábra - Benchmark - Lineáris regresszió előrejelzések a validation halmazon (90%)

A táblázatokból kiolvasható, hogy minden esetben sokkal jobban teljesített

(mean squared error) a lineáris regresszió a benchmarktól.

4.5.2 Gradient Boosting Regression

Az adathalmaz 70 %-os szétválasztásakor látható a 4.15. táblázatban, hogy a

Gradient Boosting Regression a benchmark becslésénél minden esetben jobb eredményt

ad, viszont szembeötlő a training-validation halmazok közötti különbség, az, hogy a

training halmazon sokkal kisebb hibaértékkel dolgozik a modell, mint a validation

esetén. Ez a korábban említett túltanulással magyarázható. Továbbá látszik, hogy az

időjárási változók hozzáadása a magyarázó változókhoz rontotta a modell

hatékonyságát a validation halmazon, amit jól kompenzál majd a munkarendi

változások figyelembe vétele.

Training Validation

Benchmark 5.46509812667 11.885399449

GBR időjárási adatok nélkül 1.09200188532

e-30

4.03140495868

GBR időjárási adatokkal 1.09200188532

e-30

4.62424242424

GBR időjárási és ünnepnapi adatokkal 1.09200188532

e-30

4.00055096419

Page 31: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

31

4.15. táblázat - Benchmark-GBR hibaértékek 70%-os vágásnál

A 4.9. ábra együtt mutatja a demand, és a GBR előrejelzéseit a különböző

attribútumok figyelembe vételekor, továbbá a benchmark becslését. A táblázatban

észrevetteket jól tükrözi az ábra, például azt, hogy az időjárási adatokkal romlott a

modell hatékonysága. A lineáris regresszióval (4.7. ábra) összevetve az ábrát látszik,

hogy nagyobb kilengések fordulnak elő ebben a modellező eljárásban.

4.9. ábra - Benchmark - GBR előrejelzések a validation halmazon (70%)

Az adathalmaz 80-20 % arányban történő vágásakor a modellünk hatékonysága

tovább romlott a validation halmazon, míg a trainingen jobban teljesít, ezt szintén a

túltanulás okozza. A magyarázó változók jellege hasonló viselkedést okoz az előző

esetben látottakhoz (4.16. táblázat).

Training Validation

Benchmark 5.89041764247 13.5276595745

GBR időjárási adatok nélkül 6.27152036014

e-31

5.64255319149

GBR időjárási adatokkal 6.36900101045

e-31

6.25276595745

GBR időjárási és ünnepnapi adatokkal 6.27152036014

e-31

5.69191489362

4.16. táblázat - Benchmark-GBR hibaértékek 80%-os vágásnál

A training-validation halmazok 90 %-os szétválasztásakor is megfigyelhető a

korábban észrevett túltanulás jelensége, ugyanakkor már javult a validation halmazon a

hatékonyság, ami valószínűleg annak köszönhető, hogy ez már csak kevés (7 nap)

Page 32: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

32

adatait tartalmazza, ami már kevésbé változatos, és jobban illeszkedhet a korábban a

modell által tanult adatok jellegéhez.

Training Validation

Benchmark 6.70993061578 13.8478464419

GBR időjárási adatok nélkül 8.34226071678

e-31

2.87968164794

GBR időjárási adatokkal 8.37631347339

e-31

3.88576779026

GBR időjárási és ünnepnapi adatokkal 8.34226071678

e-31

2.95411985019

4.17. táblázat - Benchmark-GBR hibaértékek 90%-os vágásnál

A 4.10. ábra már nagyon hasonló a lineáris regresszió esetén látotthoz (4.8.

ábra), de észrevehető, hogy nagyobb hibával teljesít a Gradient Boosting Regression.

4.10. ábra - Benchmark - GBR előrejelzések a validation halmazon (90%)

4.5.3 Lineáris regresszió – GBR összehasonlítása

Az előző részekből láthattuk, hogy a lineáris regresszió sokkal jobb

eredményeket adott, mint a Gradient Boosting Regression. Ennek több oka is lehet,

például az, hogy a lineáris regresszió azért működik jobban, mert ténylegesen található

az adatokban linearitás, de láthattuk azt is, hogy a GBR esetén a döntési fákra jellemző

túltanulás alakult ki.

A 4.11. ábra a lineáris regresszió becslését szemlélteti, ahol a fekete pontok a

training halmaz adatait mutatja, míg a kék vonal a validation halmazét. Az ezt

megvalósító Python kódrészlet:

Page 33: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

33

%matplotlib inline plt.scatter(y_train, p_train, color='black') plt.plot(y_val, p_val, color='blue', linewidth=3) plt.show()

4.11. ábra - Lineáris regresszió előrejelzése

Az ábráról észrevehető, hogy az adatoknak tényleg van egy lineáris jellege

A 4.12. ábra A Gradient Boosting Regression becslését szemlélteti, kék

pontokkal a training adatai, pirossal a validaton halmazé láthatóak. Az ábra jól tükrzi a

túltanulás jelenségét, míg a training lineíritást követ, a validation adatairól

leolvashatóak a hibás becslések.

4.12. ábra - GBR előrejelzése

Page 34: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

34

5 Értékelés, továbbfejlesztési lehetőségek

A lineáris regresszióval megalkotott modell jól teljesített, a Gradient Boosting

Regression ezzel szemben még több fejlesztést igényel.

Mindkét eljárás esetén lehetséges a hatékonyság javítása, azzal, hogy módosítjuk

a magyarázó változókat. Például a modellezés során az állomásokról kapott

információkat nem használtam fel teljesen, próbáltam az időjárás és a munkanapok-

szabadnapok emberi viselkedésre tett hatását észrevenni. Ezen túl azonban értékes

információt rejthetnek az állomásokról kapott információk, ugyanis azok földrajzi

koordinátái ismertek, és érdemes lehet megvizsgálni az állomások egymáshoz

viszonyított helyzetét, például 2-3 egymáshoz közeli állomás esetén milyen

valószínűséggel választják a felhasználók egyik-másik állomást. Ezen túl tudjuk, hogy

vannak állomások, amelyek többször is szerepelnek az adatbázisban, azok újratelepítése

miatt, érdemes lehet ezeket az állomásokat is vizsgálni.

A Gradient Boosting Regression esetén is van lehetőség a modellünk javítására,

például a pandas get_dummies() metódusának használata. Ez javíthatja a döntési fa

hatékonyságát, ugyanis a kategorikus változókat alakítja át olyan dummy változókká,

amiket a fa nagyobb sikerrel tud osztályozni.

További javítási lehetőség a Scikit-learn feature_selection modulja RFE

(Recursive Feature Elimination) osztályának használata, amellyel súlyokat rendelhetünk

változókhoz, és például beállíthatóak egy lineáris regresszió együtthatói. Ezek után a

súlyozott változókon végezzük el a modell tanítását és a becslést a már megismert

fit(x,y) és predict(x) metódusokkal.

Page 35: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

35

6 Köszönetnyilvánítás

Ezúton szeretném megköszönni a közreműködést mindazoknak, akik önzetlenül

segítettek szakdolgozatom elkészítésében.

Köszönöm konzulensemnek, Kazi Sándornak az útmutatást, a segítséget és a

végtelen türelmet.

Köszönöm az I.L.106a szoba összes munkatársának a segítségnyújtást, valamint

az építő ötleteket.

Köszönöm a CX-Ray munkatársainak a szakmai gyakorlat során nyújtott

segítséget, hálás vagyok a kapott tudásért.

Végül, de nem utolsó sorban köszönettel tartozom szüleimnek, páromnak,

rokonaimnak és barátaimnak, akik mindvégig támogattak.

Page 36: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

36

Irodalomjegyzék

[1] Zs. Magyar: Önálló laboratórium beszámoló – Összefüggések különböző időjárási

mérőszámok között, 2015., 1-2, 4-5

[2] G. Nagy, „Adatbanyaszat2 < Meres < Foswiki”:

http://qosip.tmit.bme.hu/foswiki/pub/Meres/Adatbanyaszat2/adatbanyaszat_labor

_elmelet_draft_0.4.pdf Letöltve: 2015. november 23.

[3] M. Dr. North: Data Mining for the Masses, Global Text Project, 2012., 5-11.

[4] J. Dr. Abonyi: Adatbányászat a hatékonyság eszköze, 2006., 295-342.

[5] G. Barta: Bike sharing model reuse framework for tree-based ensembles:

http://reframe-d2k.org/img_auth.php/4/4f/MoReBikeS_2015_paper_6.pdf

Letöltve: 2015. november 23.

[6] „Generalized Linear Models - scikit-learn 0.17 documentation”: http://scikit-

learn.org/stable/modules/linear_model.html Letöltve: 2015. november 5.

[7] „Ensemble methods - scikit-learn 0.18.dev0 documentation”: http://scikit-

learn.org/dev/modules/ensemble.html#gradient-tree-boosting Letöltve: 2015.

november 10.

[8] „pandas: powerful Python data analysis toolkit - pandas 0.17.1 documentation”:

http://pandas.pydata.org/pandas-docs/stable/ Letöltve: 2015. november 5.

[9] „csv — CSV File Reading and Writing - Python 3.3.6 documentation”:

https://docs.python.org/3.3/library/csv.html Letöltve: 2015. november 5.

[10] „Contributing to Numpy - NumPy v1.11.dev0 Manual”:

http://docs.scipy.org/doc/numpy-dev/dev/ Letöltve: 2015. november 5.

[11] „datetime — Basic date and time types - Python 3.6.0a0 documentation”:

https://docs.python.org/3.6/library/datetime.html Letöltve: 2015. november 5.

[12] „Overview - Matplotlib 1.5.0 documentation”: http://matplotlib.org/contents.html

Letöltve: 2015. november 5.

[13] „Seaborn: statistical data visualization - seaborn 0.6.0 documentation”:

http://stanford.edu/~mwaskom/software/seaborn/index.html Letöltve: 2015.

november 5

[14] „MOL Bubi Challenge”: https://dms.sztaki.hu/bubi/index.html#/app/dataset

Letöltve: 2015. november 23.

[15] „API | Weather Underground”:

http://www.wunderground.com/weather/api/d/docs?d=resources/phrase-

glossary&MR=1 Letöltve: 2015. november 23.

Page 37: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

37

[16] J. Bartholy, R. Mészáros, I. Geresdi, I. Matyasovszky, R. Pongrácz és T.

Weidinger: „Meteorológiai alapismeretek”, Eötvös Loránd Tudományegyetem,

2013., 34, 54-56,

[17] „A hőérzet I.”: https://www.idokep.hu/hirek/a-hoerzet-i Letöltve: 2015. november

23.

[18] „28/2014. (IX. 24.) NGM rendelet”:

http://net.jogtar.hu/jr/gen/hjegy_doc.cgi?docid=A1400028.NGM Letöltve: 2015.

november 25.

Page 38: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

38

Függelék

1. A train.csv attribútumai

bicycle_id a kerékpár egyedi azonosítója

start_time az utazás indulási időpontja

end_time az utazás végének időpontja

start_location az induló állomás egyedi azonosítója

end_location a célállomás egyedi azonosítója

2. A station.csv attribútumai

place_id az állomás egyedi azonosítója

place_name az állomás neve

lat GPS latitude (földrajzi szélesség)

lon GPS longitude (földrajzi hosszúság)

num_of_rack kapacitás (az állomás által befogadni

képes kerékpárok száma)

datetime_start az állomás üzembe helyezésének ideje

datetime_end az időpont, amíg az állomás ezen a helyen

volt

3. A weather.csv attribútumai

time dátum és idő

tempm hőmérséklet Celsiusban

hum páratartalom %-ban

wspdm szélsebesség km/h-ban

wdird szélirány fokban

Page 39: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

39

wdire szélirány leírás (például: SW - southwest,

NNE – north-northeast)

pressurem nyomás millibarban

vism látási viszonyok km-ben

windchillm hőérzet Celsiusban

fog köd esetén értéke 1, egyébként 0

rain ha esik, értéke 1, egyébként 0

snow havazás esetén értéke 1, egyébként 0

hail jégeső estén értéke 1, egyébként 0

thunder villámlás estén értéke 1, egyébként 0

Az időjárási változók részletesebb magyarázata:

Hőmérséklet: a levegő hőmérséklete. A hőmérséklet tulajdonképpen az

energiával analóg fogalom. A levegő különböző gázok keveréke, a gázok hőmérsékletét

pedig az adott gáz alkotórészecskéinek mozgása határozza meg. SI mértékegysége az

abszolút (Kelvin) skála, a hétköznapi életben Celsius-fokban mérjük a hőmérsékletet,

míg egyes országokban a Fahrenheit-skálát alkalmazzák [16].

Páratartalom: relatív páratartalom. A vízgőz keverési arányának (rv) és telítési

keverési arányának (rs) a hányadosa, ami jó közelítéssel megegyezik a vízgőz

nyomásának (e) és telítési nyomásának (es) a hányadosával. Ha 100 %-nál nagyobb

értéket vesz fel, akkor az azt jelenti, hogy a levegő túltelítetté válik [16].

Keverési arány: az egységnyi térfogatú levegőben a vízgőz és a száraz levegő

tömegarányát adja meg [16].

Telítési keverési arány: ha a vízgőz nyomása a telítési gőznyomással egyenlő,

akkor a keverési arány az ún. telítési keverési arány [16].

Nyomás:

Vízgőz nyomása: nemcsak a vízmolekulák koncentrációjától, hanem a

hőmérséklettől is függ [16].

Page 40: Előrejelzés kerékpárkölcsönzési adatok alapján · Az adatbányászat alatt a nagy mennyiségben előforduló adatokban rejlő nemtriviális összefüggések kiaknázását

40

Telítési nyomás: a vízfelszínről mindig távoznak, illetve oda érkeznek

vízmolekulák. Amikor a távozó és a lecsapódó molekulák száma megegyezik, a vízgőz

nyomása az ún. telítési gőznyomással egyenlő, és a levegő telítettsége éppen 100 %

[16].

Szélsebesség: a szélsebesség mérésének objektív módszerei előtt a Beaufort-

skálát használták a szél erősségének megfigyelésére és osztályozására. Még ma is

hasznos ott, ahol nem állnak rendelkezésre szélsebességet mérő műszerek.

Hőérzet (wind chill): főként hideg időben való alkalmazkodás miatt vezették be.

A bevezetés hátterében az a jelenség áll, mikor meleg bőrünk érintkezik a hideg

levegővel, felmelegíti azt, és ez a melegített rész is véd minket. Azonban előfordul,

hogy a szél elfújja ezt a réteget (innen jön a wind). A wind chill nem hőmérséklet,

csupán veszélyt leíró index [17].