Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
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
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
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
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
Ö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.
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.
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.
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.
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.
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,
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
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
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].
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
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].
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
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.
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.
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:
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):
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ó.
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
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
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.
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.
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].
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.
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.
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
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
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)
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:
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
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.
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.
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.
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.
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
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].
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].