• No results found

Naive Bayes-klassificering av förarbeteende

N/A
N/A
Protected

Academic year: 2021

Share "Naive Bayes-klassificering av förarbeteende"

Copied!
41
0
0

Loading.... (view fulltext now)

Full text

(1)

Linköpings universitet SE–581 83 Linköping

Linköpings universitet | Institutionen för datavetenskap

Examensarbete på grundnivå, 16hp | Datavetenskap

2017 | LIU-IDA/LITH-EX-G--17/070--SE

Naive Bayes-klassificering av

förarbeteende

Classifying driving behaviour using Naive Bayes

Henrik Thoreson & Robin Wesslund

Handledare : Ola Leifler Examinator : Anders Fröberg

(2)

Upphovsrätt

Detta dokument hålls tillgängligt på Internet – eller dess framtida ersättare – under 25 år från publiceringsdatum under förutsättning att inga extraordinära omständigheter uppstår. Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner, skriva ut enstaka kopior för enskilt bruk och att använda det oförändrat för ickekommersiell forskning och för undervisning. Överföring av upphovsrätten vid en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av dokumentet kräver upphovsmannens medgivande. För att garantera äktheten, säkerheten och tillgängligheten finns lösningar av teknisk och admin-istrativ art. Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i den omfattning som god sed kräver vid användning av dokumentet på ovan beskrivna sätt samt skydd mot att dokumentet ändras eller presenteras i sådan form eller i sådant sam-manhang som är kränkande för upphovsmannenslitterära eller konstnärliga anseende eller egenart. För ytterligare information om Linköping University Electronic Press se förlagets hemsida http://www.ep.liu.se/.

Copyright

The publishers will keep this document online on the Internet – or its possible replacement – for a period of 25 years starting from the date of publication barring exceptional circum-stances. The online availability of the document implies permanent permission for anyone to read, to download, or to print out single copies for his/hers own use and to use it unchanged for non-commercial research and educational purpose. Subsequent transfers of copyright cannot revoke this permission. All other uses of the document are conditional upon the con-sent of the copyright owner. The publisher has taken technical and administrative measures to assure authenticity, security and accessibility. According to intellectual property law the author has the right to be mentioned when his/her work is accessed as described above and to be protected against infringement. For additional information about the Linköping Uni-versity Electronic Press and its procedures for publication and for assurance of document integrity, please refer to its www home page: http://www.ep.liu.se/.

c

(3)

Sammanfattning

Att kunna klassificera en körstil implicerar klassificering av körbeteende, vilket ligger till grunden för miljö- och säkerhetsklassificering för körningar.

I det här arbetet har vi låtit två förare köra en bil med en förhoppning att kunna klassifi-cera vem det var som körde bilen. Målet var att kunna förutspå föraren med en korrekthet på 80-90% givet endast hastighet samt varvtal som samlas genom ODB:II-porten via CAN-bussen i fordonet. Angreppsättet på detta arbete liknar det för textklassificering, nämligen att använda två vanliga klassificeringsmetoder från just textklassificering — Multinominal och Gaussisk Naive Bayes tillsammans med N-gram samt diskretisering.

Vi fann genom att använda Multinominal Naive Bayes med 4-gram samt icke-diskretiserade respektive icke-diskretiserade hastighet- och varvtalsvärden kunde klassificera förare med 91.48% korrekthet.

Abstract

To be able to classify a driving style implies that you classify a driving behaviour, which is the foundation of safety and environmental driving classification.

In this thesis we have let two drivers drive a car in an attempt to classify, with a desired accuracy of around 90%, which one of us drove the car. This was done by exclusively using speed and rpm data values provided from the OBD:II port of the car via the CAN-bus. We approched this problem like you would a text classification one, thus using two common models of Naive Bayes — Multinominal and Gaussian Naive Bayes together with N-gram and discretization.

We found that using Multinominal Naive Bayes consisting of 4-gram resulted in an avarage accuracy of 91.48% in predicting the driver, non-discretized speed and discretized rpm values.

(4)

Författarens tack

Vi vill rikta ett extra stort tack till Ola Leifler som tog på sig rollen som handledare. Slutligen vill vi tacka Anders Fröberg som var vår examinator.

(5)

Innehåll

Sammanfattning iii Författarens tack iv Innehåll v Figurer vii Tabeller 1 1 Introduktion 2 1.1 Motivering . . . 2 1.2 Mål . . . 3 1.3 Frågeställning . . . 3 1.4 Avgränsningar . . . 3 2 Teori 4 2.1 Naive Bayes . . . 4

2.2 Multinominal Naive Bayes . . . 5

2.3 Gaussisk Naive Bayes . . . 6

2.4 Klassificeringsinställningar . . . 7 2.5 Evaluering . . . 9 2.6 Tidigare arbeten . . . 9 2.7 Verktyg . . . 11 3 Metod 13 3.1 Körning . . . 13 3.2 OBDII-logging . . . 13 3.3 Klassificeringsinställningar . . . 13 3.4 Klassificering . . . 14 4 Resultat 17 4.1 Körning . . . 17 4.2 OBD-II-loggning . . . 18 4.3 Klassificering . . . 18 5 Diskussion 22 5.1 Metod . . . 22 5.2 Resultat . . . 23 5.3 Källkritik . . . 25

5.4 Arbete i vidare sammanhang . . . 26

6 Slutsatser 27 6.1 Framtida vidareutveckling . . . 27

(6)

7 Appendix 29

7.1 Data . . . 30

(7)

Figurer

2.1 ELM327 Bluetooth-adapter. . . 11

2.2 Exempel på hur de första elva raderna i en loggfill kan se ut. . . 12

3.1 Programmets flödesdiagram. . . 15

4.1 Fyra rutter som kördes. [färg/rutt]: röd/1, blå/2, lila/9, grön/10. . . 17

4.2 Fördelning av unika hastighetsattribut för båda förarna utan diskretisering. . . 19

4.3 Intervallsfördelning för hastighet sett till båda förarna med diskretisering. . . 19

4.4 Fördelning av unika varvtalsattribut för båda förarna utan diskretisering. . . 19

4.5 Intervallsfördelning för varvtal sett till båda förarna med diskretisering. . . 19

4.6 Resultatsgraf för diskretiserade och icke diskretiserade hastighet- samt varv-talsvärden. . . 20

4.7 Resultatsgraf för tabeller ovan med betingat beroende och oberoende. . . 21

5.1 Distribuering av hastighetsvärden för alla logfiler, separerat för de båda förarna. Förare 1: blå, förare 2: ljusgrön. . . 24

5.2 Distribuering av rpm-värden för alla logfiler, separerat för de båda förarna. Förare 1: blå, förare 2: ljusgrön. . . 25

7.1 Stadskörning samt landsväg. [färg/rutt]: blå/3, lila/4, röd/5 . . . 29

(8)

Tabeller

4.1 Distanstabell över alla körsträckor. . . 18

4.2 Gaussian Naive Bayes utan diskretiserade värden. . . 19

4.3 Gaussian Naive Bayes med diskretiserade värden. . . 20

7.1 Distans- och hastighetstabell. . . 30

(9)

1

Introduktion

1.1

Motivering

En förares körstil har en stor inverkan på hur säkert och miljövänligt hen framför fordonet på vägen. Det finns en stark koppling mellan hastighet och antalet olyckor i trafiken [30]. I en studie utförd i Sverige av Vadeby et al [32] såg man att antalet trafikolyckor per år minskade med över 50, varav 30 av dem med dödlig utgång, då man sänkte hastighetsgränsen från 90 km/h till 80 km/h på landsvägar.

Att köra mer säkert innebär inte bara att man minskar antalet olyckor, det sänker även den påverkan man har på miljön [14]. Den aggressiva körstilen kännetecknas att ha höga, starka accelerationer vilket resulterar i stora ökningar på bränsleåtgången och därmed utsläpp.

Eco-driving är en körstil som har uppmärksammats mer och mer är framtagen för att motverka just det här problemet. Körstilen definieras bland annat av att växla upp mellan 2000-2500 rpm, förutspå trafikflödet, hålla säkert avstånd till nästa bil och jämn hastighet så mycket som möjligt [6]. Många studier och undersökningar har utförts och det är numera ett mer eller mindre väldokumnterat faktum att eco-driving sänker utsläppen [7, 8], vilket också har en positiv påverkan på antalet trafikolyckor, då körstilen inte bara innebär att man kör mer miljövänligt utan också mer säkert.

I dagsläget är eco-driving integrerat i de flesta nya fordon som erbjuder föraren att i realtid se hur sen körning uppfyller kraven för eco-driving. Motsvarigheten som berör föraranalys eller körbeteende finns det desto mindre av, men det är på uppgång. Möjligheten att kunna ge föraren feedback på sin körning ur ett säkerhetsperspektiv skulle kunna bidra till en min-skning av trafikolyckor och är därför ett mycket intressant och attraktivt område att utforska — allra helst genom att använda maskininlärningstekniker såsom klassificering.

Precis som att eco-driving har olika definitioner och kriterier som kännetecknar den körstilen, så har även aggressiv körning eller rent av farlig körning också särdrag, till ex-empel hårda accelerationer och inbromsningar, och skarpa svängar, vilket gör det möjligt att kategorisera dem [11]. Genom att tillämpa klassificering kan man träna en dator till att känna

(10)

1.2. Mål

igen olika körstilar och återkoppla till föraren för att varna om en farlig körstil detekteras och förhoppningsvis reducera risken för olyckor.

Likt ett arbete gjort av Eren et al [11] där de med endast en smartphone lyckas klassi-ficera förarens körstil om den var säker eller inte, bygger vårt arbete på att endast genom fordonsdata klassificera en förare. Detta menar vi kan vara en grund för vidareutveckling för att slutligen kunna avgöra om en körning hade en aggressiv stil eller inte, men även om en körning uppfyllde kriterier för eco-driving.

1.2

Mål

Målet med detta arbete var att med en procentuell korrekthet på runt 90% kunna klassificera vem det var som körde bilen, genom att använda sig strikt av två olika Naive Bayes-metoder (Gaussisk och Multinominal) som klassificerare samt en prenumeration av specifik fordons-data för att urskilja förarens körstil. Skillnaden mellan de två metoder vi valt att använda är själva algoritmen som ligger till grund för hur de fungerar. Korrektheten är baserad på tidi-gare nämnt arbete av Eren et al, med anledning att de i grunden klassificerar körstil precis som oss, fast med annat tillvägagångssätt. Mer om deras arbete finns att läsa i teorikapitlet 2.6.

1.3

Frågeställning

1. Vilken precision för klassificering av förare kan man få baserat på parametrarna hastighet och varvtal från fordonet?

2. Vilken Naive Bayes-metod, med vilka inställningar ger bäst resultat för den här typen av klassificering?

1.4

Avgränsningar

Vi har begränsat oss till att bara implementera och utvärdera Naive-bayes-klassificering, eftersom fordonsdata kan struktureras och efterlikna data som används vid textklassificer-ing. Naive-bayes presterar ofta väldigt bra för textklassificering och vi tror därför att Naive Bayes är ett bra val för att klassificera förardata. Avgränsningar har gjorts inom datainsam-ling genom att bara kolla på hastighet och varvtal, detta för att det är två värden en förare har direkt inverkan på. Ett antal arbeten som liknar vårt använder en Smarthphone och dess gyroskop. Detta är ett aktivt val av oss att ingen använda då vi vill undersöka om det räcker med verktyget OBD-II.

(11)

2

Teori

2.1

Naive Bayes

Maskininlärning är ett delområde inom datavetenskap som framtagits ifrån studier av bland annat mönsterigenkänning inom artificiell intelligens. Genom att bygga upp en modell baserat på indata låter man en algoritm göra datadrivna förutsägelser och beslut.

Klassificering är ett av många delområden inom maskininlärning som berör övervakad inlärning, det vill säga att ett träningsset med korrekta observationer används som indata till klassificeraren. En familj av dessa klassificeringsmodeller heter Naive Bayes och berör främst just textklassificering.

Trots att Naive Bayes kategoriseras som en av de simplare klassificeringsalgoritmer så är den ändå kraftfull och också en av de vanligaste. Metoden används oftast för skräppostde-tektering, men även mer avancerade områden såsom diagnostisering av sjukdomar [25, 29, 4]. Grunden till Naive Bayes är appliceringen av Bayes Sats (eng. Bayes Theorem) som är en sats för att bestämma betingade sannolikheter.

En betingad sannolikhet betyder sannolikheten för en händelse A givet att en annan hän-delse B har inträffat, det vill säga sannolikheterna är betingade. Slantsingling är ett exempel på där tidigare händelser inte har någon påverkan. Har du fått klave på förra kastet påverkar det alltså inte nästa kast, utan sannolikheten förblir 50%. Har du istället en påse med 5 kulor där exempelvis 2 av dem är svarta och 3 vita, och du på måfå tar en kula utan att lägga till-baka den i påsen igen, så kommer din handling påverka nästa dragning. Formellt ges det av formeln P(A|B) = P(AXB)P(B) som utläses "sannolikheten för A givet B".

Att händelsen A och B är oberoende från varandra betyder helt enkelt att det inte spelar roll om B har inträffat eller inte, det vill säga P(A|B) =P(A)som ger sambandet P(A X B) =

P(A)P(B). Detta samband används vid det naiva antagandet man gör vid klassificeringen, och kallas för betingat oberoende. Ett exempel på det här kan vara stavningsförmåga (A) och skostorlek (B). De här två är inte oberoende, ty folk med små skostorlek tenderar att stava sämre. Om vi då tar in en till variabel här, som ålder, så blir stavningsförmåga och

(12)

2.2. Multinominal Naive Bayes

skostorlek betingat oberoende om vi vet ålder. Nu kan vi alltså använda sambandet ovan för P((A X B)|C) =P(A|C)P(B|C).

Det är just detta oberoende som man antar finns vid tillämpning av Naive Bayes. Det spelar ingen roll om det faktiskt stämmer eller inte, utan man gör antagandet ändå, därav "naiviteten". Kriteriet för metoden är alltså då att det antas vara starkt oberoende mellan sina egenskaper, men trots att kriteriet bryts kan Naive Bayes ändå leverera bra resultat [19, 35].

Naive Bayes kan modifieras utifrån vad det är för data man hanterar. De vanligaste är Gaussiska Naive Bayes [15] Multinominal Naive Bayes [17] samt Bernoulli Naive Bayes. [22] De två som användes i detta arbete var Gaussian och Multinominal som kan läsas här nedan.

För de båda klassificeringsmetoderna måste man beräkna sannolikheten för att ett doku-ment tillhör varje given klass och sedan välja ut den klass som ger högst sannolikhet enligt ekvation 2.1.

ˆc=argmax cPC

P(c|x) (2.1)

2.2

Multinominal Naive Bayes

Vid problemdomäner såsom just texklassificering tenderar den vanligaste modellen att vara just Multinominal Naive Bayes (MNB). Den grundar sig på att man bygger upp ett vokabulär under träningen av alla unika förekomster av sin data, samt med sannolikheten att den tillhör en viss klass. MNB är den grundläggande modellen för Naive Bayes och som använder Bayes Sats:

P(c|x) = P(x|c)P(c)

P(x) (2.2)

Exempel

ham spam totalt

Alla emails 400 600 1000

med "gratis" 100 300 400 med "kreditkort" 10 90 100

Klassen beskriver helt enkelt hur emailen kan klassificeras, i det här fallet är det då binärt, det vill säga antingen "spam" eller "ham". Tabellen visar hur många emails, eller dokument som är klassificerade i respektive klass. Är det mest troligt att ett mail är spam eller ham givet att båda orden "gratis" och "kreditkort" förekommer i mailet?

Sannolikheten att mailet tillhör klassen spam

P(spam|gratis, kreditkort) = P(gratis, kreditkort|spam)P(spam)

P(gratis, kreditkort) (2.3)

utnyttja att orden är oberoende av varandra och skriv om ekvationen1

P(gratis, kreditkort|spam) =P(kreditkort|spam)P(gratis|spam) (2.4)

(13)

2.3. Gaussisk Naive Bayes

som i ekvation 2.3 blir

P(spam|gratis, kreditkort) = P(kreditkort|spam)P(gratis|spam)P(spam)

P(gratis, kreditkort) (2.5)

Nu behövs nämnaren i 2.5 där vi använder normalisering [2] och får

P(g, k) =P(gratis|spam)P(kreditkort|spam)P(spam)

+P(gratis|ham)P(kreditkort|ham)P(ham) (2.6)

som i 2.5 ger den slutliga ekvationen

P(s|g, k) = P(k|s)P(g|s)P(s)

P(g|s)P(k|s)P(s) +P(g|h)P(k|h)P(h) (2.7)

där namnen har förkortats för att spara plats. Allt i ekvation 2.7 går således att utläsa ur tabellen och frågan som ställdes går nu att besvara

P(s|g, k) = (90/600)(300/600)(600/1000)

(300/600)(90/600)(600/1000) + (100/400)(10/400)(400/1000) «0.95 (2.8)

det vill säga att sannolikheten för att ett dokument klassas som spam givet att båda orden "gratis" och "kreditkort" förekommer är 95%.

Detta upprepas fast med den andra klassen istället, det vill säga "ham". Alltså

P(h|g, k) = (10/400)(100/400)(400/1000)

(100/400)(10/400)(400/1000) + (300/600)(90/600)(600/1000) «0.05 (2.9)

ty 0.95 ą 0.05 klassificeras mailet som spam.

2.3

Gaussisk Naive Bayes

Naive Bayes hanterar diskreta och numeriska värden olika. För varje diskret attribut mod-elleras dess värde mellan 0 och 1, som representerar dess sannolikhet att tillhöra en klass. För de numeriska värdena modelleras det efter en probabilistisk fördelning. Det är denna fördelning som man oftast antar är normalfördelad eller Gaussiskt fördelad. Sannolikheten följer ekvationen : P(xi|y) =b 1 2πσ2 y exp(´(xi´ µy) 2 2 y ) (2.10)

där σ är medelvärdet och µ är variansen för värdet x i klass y.

Exempel

Vid GNB sköts själva beräkningen på liknande sätt men för att besvara frågor som i ovan kunde efter lite manipulationer av ekvationer utläsas från en tabell så använder man istället den probabilistiska täthetsfunktionen som kan läsas i ekvation 2.10.

(14)

2.4. Klassificeringsinställningar kön längd [m] vikt [kg] man 1.83 78 man 1.87 89 kvinna 1.72 70 kvinna 1.77 73

Om vi antar att dessa värden kommer från insamling av data, så måste vi först under träningen ta fram medelvärde samt varians för respektive klass:s egenskap, det vill säga i detta exempel då alltså längd och vikt. Här blir det då att µ = (1.83+1.87)/2 = 1.85 re-spektive σ2= ((´0.02)2+0.022)/2=0.0004 för medelvärdet samt variansen för en manlig längd. Detta upprepas för vikt i respektive klass så vår tabell ser ut såhär

kön snitt (längd) varians (längd) snitt (vikt) varians (vikt)

man 1.85 0.0004 83.5 30.25

kvinna 177 73 71.5 2.25

Om vi nu då ska klassificera indata som exempelvis följande kön längd [m] vikt [kg]

? 1.81 76

så behöver vi ta fram följande P(längd|man), P(vikt|man), P(längd|kvinna) samt P(vikt|kvinna). Dessa sannolikheter beräknas genom att använda ekvation 2.10 där vi stoppar in våra värden istället för x ifrån tabellen med snitt och varians i ekvationen. Detta används då i Bayes Sats för att beräkna posterorisannolikheten för P(man) samt P(kvinna) utifrån den information vi har. Notera att vi har P(man) och P(kvinna) respektive p(man) och p(kvinna). Detta är två olika sannolikheter där P står för posteriori och p står för priori. Priori är den sannolikhet vi sätter själva till 0.5 för vi har i vår träningsdata en ratio på 50/50 på man eller kvinna. Priori- och posteriorisannolikheter är ett begrepp för den sannolikhet på våra egen-skaper, där priori sätts till den sannolikhet som motsvarar vår kunskapsbas innan någon form av beräkning. Posteriori är den faktiska sannolikheten som är den som är beräknad fram i exemplet ovan.

P(man) = P(längd|man)P(vikt|man)p(man)

P(vikt|man)P(längd|man)p(man) +P(vikt|kvinna)P(längd|kvinna)p(kvinna)

(2.11) samma sak görs för kvinna. Klassificeringen bestäms till vilken av dessa två sannolikheter som har högst värde.

2.4

Klassificeringsinställningar

N-gram

En variant av Naive Bayes, speciellt för den precis nämnda Multinominal Naive Bayes — som bara kollar på egenskap i taget innebär det att det inte finns någon kontext alls mellan alla förekomster av egenskaper. Ordningen de kommer i är irrelevant. Ett sätt att återintroducera denna förlust av kontext kallas för N-gram, vilket innebär att man kollar på frekvensen av en sekvens med N-egenskaper där ordningen har bibehållits.

(15)

2.4. Klassificeringsinställningar

Beräkningarna görs på precis samma sätt som i MNB, oavsett vad för N-gram man har. Skillnaden är helt enkelt att N-närliggande egenskaper slås ihop och anses som en ny egen-skap.

I 2.12 nedan presenteras ett exempel hur ett 4-gram byggs upp utifrån en lista med 7 attribut. Vi ser att i 2.16 är uppbygd av alla sekvenser som har bildats, och kan alltså se att ordningen spelar stor roll.

0, 1, 3, 3, 0, 1, 3 (2.12) 1-gram: (0),(1),(3),(3),(0),(1),(3) (2.13) 2-gram: (0, 1),(1, 3),(3, 3),(3, 0),(0, 1),(1, 3) (2.14) 3-gram: (0, 1, 3),(1, 3, 3),(3, 3, 0),(3, 0, 1),(0, 1, 3) (2.15) 4-gram: (0, 1, 3, 3),(1, 3, 3, 0),(3, 3, 0, 1),(3, 0, 1, 3) (2.16)

Diskretisering

Diskretisering används oftast för att en multinomial Naive-Bayes inte kan hantera uerliga värden, Liu et al [20]. Det har dock visats vara effektivt även om data inte är kontin-uerlig dels för att en diskretiseringsalgoritm minimerar tillståndsrymden, vilket gör klassifi-ceringsalgoritmen betydligt snabbare och ett diskretiserat värde blir en indirekt beskrivning hur en datapunkt förhåller sig till en annan. Exempel kan en mängd olika hastighetavläs-ningar diskretiseras till värden likt [långsammare, långsam, normal, snabb, snabbare], vilket generellt presterar väldigt bra [10, 33].

Dougherty et al beskriver diskretiseringsmetoden Bin-log l innebär att antalet intervall i sätts till i = max(1, 2*log(l)) där l motsvarar antalet distinkta värden för varje attribut [10]. Intervallgränsvärdena för de i-intervall extraheras under träningsfasen och används även sedan för diskretisering av evalueringsdata.

Log-sannolikheter

Eftersom man multiplicerar varje probabilistiskt värde för varje attribut för den angivna klassen under träningen, tenderar det att vara väldigt små siffror man jobbar med. Vid stor datamängd sker det då ett så kallat underflow av precisionen, då resultatet blir så nära 0 som det i stort sett kan komma. För att förhindra detta kan man använda log-funktionen och summera sannolikheterna istället. Vilket härleds från grundläggande logaritmiska regler i matematik specificerat i ekvation 2.17.

A ą B ˚ C ô logA ą log(B ˚ C)ôlog A ą log B+log C (2.17) Nedan härleds hur Naive Bayes sats formuleras om till en logaritmisk tolkning. Naive Bayes sats är formulerat som i ekvation 2.18.

P(Ci|S) =

P(Ci)P(S|Ci)

P(S) (2.18)

Den del som leder till underflow av precisionen är: P(S|Ci) = ź

sjPS

(16)

2.5. Evaluering

eftersom 0 ă= P(sj|Ci)ă= 1 kan den totala produkten vid stora data mängder leda till ett värde som är så nära noll att datorer har svårt att beskriva värdet. Skriver man om uttrycket till en logaritmisk tolkning ser det ut som i 2.20.

log P(S|Ci) = ÿ sjPS

log P(sj|Ci) (2.20)

Ekvation 2.21 är Naive Bayes sats helt tolkat i logaritmer.

log P(Ci|S) =

log P(Ci) +řsjPSlog P(sj|Ci)

log P(S) (2.21)

Ett nytt problem som uppstår är om det finns noll förekomster av sjför en av klasserna. Vilket skulle resultera i att man försöker beräkna log 0 vilket är odefinierat. Det problemet löses med Laplace-metoden.

Laplace-metoden

Laplace-metoden är en metod för att se till att varje klass har åtminstone en förekomst av varje egenskap genom att addera ett till frekvensen på alla egenskaper.

Om man inte använder log-sannolikheter, kan noll förekomster av en egenskap för bara en av klasserna under träningen orsaka problem vid evalueringen. Eftersom sannolikheten av att alla egenskaper (exempelvis ett varvtal- eller hastighetsvärde) tillhörande vardera klass multipliceras ihop, resulterar det att noll förekomster för en egenskap i en av klasserna nollar sannolikheten för hela dokumentet för den klassen. Det kan tolkas som att: uppstår den skapen i ett dokument under evaluerineng, måste dokumentet tillhöra den klass där egen-skapen har obeserverats under träningen. Vilket är ett inkorrekt antagande. Noll förekomster av en egenskap betyder bara att det är en sällsynt egenskap, och bör bara tillföra en liten ökn-ing i den totala sannolikheten, men eftersom allt multipliceras får inte sannolikheten vara noll. Laplace-metoden är en av de mest använda utjämningsmetoderna [16].

2.5

Evaluering

k-fold cross validation [28] är en metod för att få ett generellt resultat vid evaluering. Det in-nebär att uppdelningen mellan träning- samt testdata har mindre betydelse, eftersom alla möjliga permutationer av uppdelningarna evalueras och en genomsnittlig korrekthet beräk-nas.

2.6

Tidigare arbeten

Eren et al [11] har byggt ett system för att detektera förarbeteende som upplevs vara farligt, genom att se körmönster som förmodligen uppstår av bland annat trötthet. Detta system framtogs i förhoppning att öka trafiksäkerheten. Arbetet utfördes med endast ett verktyg, nämligen en smartphone varpå de använde data från accelerometer, gyroskop samt magne-tometer i ett försök att hitta snabba/skarpa manövreringar, kraftig bromsning eller acceler-ation och hårda svängar. Detta menar dem är oftast tecken som korrelerar till farligt körbe-teende såsom trötthet, aggressiv körning, distraktion eller körning under påverkan. Totalt undersöktes 15 förare varav 5 var erfarna, 5 var nybörjare och resten var valda slumpmäs-sigt. Varje förare körde två gånger under olika vägunderhåll samt väder. Varje förare fick även en passagerare vars uppgift var att bedöma körningen under observation för att kunna ha någon form av guldstandard vid klassificeringen.

(17)

2.6. Tidigare arbeten

Den insamlade datan klassificerades med Naive Bayes för två klasser — säker och inte säker körning. Resultatet visar att 14 av 15 korrekta klassificeringar gjordes vilket ger en korrekthet på 93.3%. Utöver Naive Bayes testades andra metoder såsom Random Forest, J48 och Hidden Markov Model där respektive korrekthet låg på 93.0%, 90.6% samt 85.7%.

Eren et al avslutar sin artikel med att i framtiden vilja undersöka inverkan på förarbe-teende genom att kombinera denna data tillsammans med fordonsdata från CAN-bus.

Genom mönsterigenkänning har Dai et al [9] lyckats med hög säkerhet klassificerat körningar utförda under påverkning av alkohol. Det utfördes genom att med en Android-telefon kolla på acceleration samt retardation i olika riktningar och om en körstil klassificer-ades som onykter körning triggklassificer-ades ett alarm på telefonen. Typiska särdrag för en onykter körning är höga accelerationer, svårt att hålla jämn takt och rak kurs och slutligen skarpa svängar. I deras experiment lade de telefonen godtyckligt på olika platser i bilen. De körde totalt sett 72 gånger med en körstil som motsvarar onyktert respektive 22 som ansågs nor-mala. Algoritmen lyckades hitta samtliga onyktra körningar. Problemet de hade var dock att telefonen under körning rörde på sig vilket påverkar datan och kan ge felaktiga utslag.

Likt arbetet ovan av Eren samt Dai har Fazeen et al [13] utvecklat ett verktyg för Android-telefoner för bland annat förarbeteende, med fokus på externa vägförhållande och dess po-tentiella fara för förare. Precis som andra arbeten tittar dem på främst accelerationen för att göra bedömningar huruvida säker körningen var. Tröskelvärdet på säker acceleration var satt till 0.3g, eller ungefär 3 m/ss samt 0.1g eller 1 m/s2 vid svängning. För att särskilja på farlig körning och en väjning för exempelvis hål i vägen togs en acceleration i z-axeln i beräkningen. Denna axel motsvarar den från marken och uppåt sett. Genom telefonens GPS kartlades körningarna och farligt väglag klassificerades. Deras resultat visar att de uppnådde en klassificeringssäkerhet på 85.6%.

I en artikel av Cindie Andrieu Guillaume Saint Pierre [3] görs ett försök till att konstruera aggregerade indikatorer för att kategorisera eco-driving, där man lät en förare köra en sträcka två gånger; först med vanlig körstil, sedan med en körstil som strikt följer eco-drivingregler. Likt experiment beskrivet ovan samlades fordonsdata in via bilens CAN-buss. Utöver det an-vändes även verktyg som GPS, kamera samt även en bränslemätare för att validera bränsle-förbrukningen som loggades från fordonets CAN.

Bart Beusen et al [7] har under ett tio månaders långt experiment undersökt effekten av utsläppspåverkan av eco-driving. Datainslamingen skedde via bilens CAN-bus med fokus på parametrar som bränsleförbrukning, rpm samt gaspedalsspjäll. Experimentet utfördes på totalt 30 bilar, dock saknades möjligheten för insamling av tidigare nämnda parametrar på större delen av de som deltog, vilket resulterade i att endast 10 bilar användes. Ungefär halvvägs in i experiementet fick de som deltog genomgå en kurs i eco-driving. Resultatet visar att den genomsnittliga bränsleförbrukningen minskade med 5.8% totalt sett för alla som deltog, dock med stor variation individuellt sett.

Till skillnad från de tidigare arbeten så valde vi att använda endast verktyget OBD-II. Verktyget är billigt att införskaffa, speciellt i jämförelse med en smartphone. Utöver kost-nad erhålls en större precision på hastighet av fordonet då man har en direkt anslutning till fordonet via CAN-bussen, istället för att beräkna hastighet från GPS. Utöver hastighet har man också tillgång till varvtal som inte är möjligt med en smartphone. Vår förhoppning är med detta arbete att genom hastighet och varvtal kunna klassificera förare genom att kolla på körstilen med endast ett externt verktyg.

(18)

2.7. Verktyg

2.7

Verktyg

OBD-II-adapter

OBD står för On-Board Diagnostics som är ett datorbaserat system vars syfte är att diagnostis-era motorkomponenter, men även övervaka komponenter som berör utsläpp. Den amerikan-ska federala miljöbyrån EPA2[31] som i samband med Clean Air Act [1] från 1990 bestämde att OBD-II skulle vara standarden i alla lätta fordon samt lätta lastbilar från och med 1:a januari 1996 [24].

För att kommunicera med OBD:et skickar man Parameter IDs (PIDs) till fordonets Con-troller Area Network (CAN3-buss) som ansvarar för att signalen kommer till den komponent man efterfrågade. Vilka PIDs man vill prenumerera på och dess frekvens ställs in själv i den mjukvaran man använder för att kommunicera med bluetooth-adaptern. PID:arna är ur-sprungligen framtagna av The Society of Automotive Engineers(SAE) från 1988 och anpassdes av EPA. OBD-II är en utökning av SAE-standarden [23].

Figur 2.1: ELM327 Bluetooth-adapter.

Figur 2.1 är en bild på den OBD-adpater vi har använt oss av.

Android OBD Reader

Android OBD-II Reader 2.0-RC4 [27] är en applikation för att kommunicera med ELM327-adapter via Bluetooth. I appen kan man enkelt välja vilka OBD-II piddar man vill prenumer-era på och i vilken frekvens, och spara ner körningar i logfiler.

Loggning

Figur 2.2 är ett exmpel på hur en loggfil kan se ut i början av en körning. Första kolumnen anger tiden i Unixtid med millisekunder från när körningen startade. Kolumn två till fyra är positioneringsdata från surfplattan som var ansluten till OBD-II-adaptern. Kolumn fem anger vilken förare som har kört, vilket var en variabel som manuellt sattes inför varje körn-ing. Kolumn sex och sju är varvtals- och hastighetsvärde som OBD-II-adaptern returnerade vid varje avläsning. Nullvärden kan uppstå i de kolumnerna, vilket betyder att adaptern inte hann att få ett resultat från CAN-bussen tillräkligt fort. Rader där null uppstod togs bort i efterhand.

2Environmental Protection Agency

(19)

2.7. Verktyg

(20)

3

Metod

I det här kapitlet går vi igenom hur vi har samlat in den data vi har använt till klassificeringen. Vi går därefter igenom klassificeringsproccessen, de metoder vi valt att använda och vilka inställningar vi har testat. Arbetsprocessen för att ta fram de bästa inställningarna har till stor del varit iterativ.

3.1

Körning

Körningen utfördes i Västervik, där vi försökte variera rutterna så mycket som möjligt. Varje rutt som kördes var utförd av båda personerna direkt efter varandra. För att minimera yttre påverkan, så att varje körning hade så lika förutsättningar som möjligt. Exempel på yttre påverkan skulle kunna vara trafik. En rutt bestämdes av en förare, den andra föraren fick sedan köra exakt samma sträcka efteråt, och detta repeterades med ombytta roller.

3.2

OBDII-logging

Loggningen sköttes genom att koppla in vår ELM-327-adapter i bilens OBD-port. Den kom-municerade med en Samsung Galaxy Note 10.1 Edition 2014 via Bluetooth varpå applikatio-nen Android OBD-II Reader, version: 2.0-RC4 [27] kördes.

Inställningar som användes var att logga parametrarna rpm- och hastighetsvärde från OBD-adaptern. Från surfplattan loggades även GPS-position i 1 Hz. För varje uthämtning av data lagrades även hur lång tid som gått sen loggern startades. Applikationen kördes med debugläge aktivt för att all data skulle sparas ner i en csv-fil för varje körning, en etikett sattes även på varje fil för att veta vilken förare som hade kört. Filerna skickades sedan över till en dator för vidare analys.

3.3

Klassificeringsinställningar

I det här kapitlet går vi igenom hur data samlats in och hur vi byggt de två klassificeringsme-toderna vi har använt, Gaussisk och Multinominal Naive Bayes.

(21)

3.4. Klassificering

Fortsättande genom uppsatsen görs antagandet att de små differenser som finns tidsmäs-sigt mellan loggningar inte har någon påverkan. Vi antar att tiden är exakt lika lång mellan alla uthämtningar, vilket inte är hundra procent korrekt, eftersom vi även har filtrerat bort "null"-rader som uppståt under loggningen.

Med ovannämnda antagande finns två attribut och en klass för varje körning som används för att klassificera körningar. De båda attributen varvtal och hastighet är två listor med hur respektive värde har varierat under körningarna. Där position n i de båda listorna motsvarar de värde de respektive attributen hade vid n5 sekunder in i körningen.

Diskretisering

Dougherty et al’s [10] jämför olika distretiseringsmetoder, där vi valde Bin-log l, på grund av att den gav bra resultat vid Naive Bayes-klassificering på samma typ av data som vi har. Användandet av k-fold cross validation i kapitel 3.4 medför att intervallgränsvärden och antalet intervall kan variera för olika k i korsvalideringen.

Tillstånd

Vid klassificering med Multinominal Naive Bayes finns lite olika varianter att manipulera data. Tidigare nämnt i teorin antas sannolikheten för de olika attributen vara betingat oberoende varandra. Vi vet även att hastighet och varvtal inte är det i verkligheten. Eftersom MNB beräknar frekvensen för varje egenskap kan man explicit säga till algoritmen att de är betingat beroende av varandra genom att skapa ett tillstånd av de båda attributen och istället beräkna frekvensen av varje tillstånd och på så vis få ut sannolikheter. Ett tillstånd är då bara ett par värden, se definition 3.1. Vi kommer testa att klassificera data tränad på tillstånd och utan tillstånd för att avgöra vilken metod som är bäst.

tillståndn = (hastighetn, rpmn) (3.1) Antalet unika tillstånd som skapas under träningen beror på om diskretiserade data an-vänds. Om inget av attributen diskretiserades genererades i snitt 12413 tillstånd. Diskretis-erades bara hastighet minskade snittantalet genererade tillstånd till 6879. När bara varvtal diskretiseras genereras i snitt 662 unika tillstånd. När båda attributen diskretiseras generas i snitt 102 unika tillstånd.

N-gram

I evalueringen av N-gram har vi valt att först testa de största N-gram som valts. Om det inte skulle finnas med i träningsdata delar vi upp det och testar de två (N-1)-gram som bygger upp det N-gram som inte fanns. För att ge exempel hänvisar vi till listan 2.12 i teorikapit-let. Om egenskapen(3, 0, 1, 3)dyker upp under evalueringen men inte träningen, testar vi istället med de två där N =3 som bygger upp(3, 0, 1, 3), nämligen då(3, 0, 1)samt(0, 1, 3). Detta repeteras ända ner till där N = 1. Skulle även de saknas i träningen så ignoreras helt enkelt dessa egenskaper, då de inte tillför någon sannolikhet till någon av klasserna. Den här metoden har vi valt för den värdesätter en längre matchande sekvens högre än om man även skulle matcha med alla N-gram som är lägre än N.

3.4

Klassificering

Klassifieringsmodellerna vi har tagit fram är skrivna i Python. Flödet i programmet följer enligt figur 3.1. Inställningar som ska användas ändras i koden innan exekvering.

(22)

3.4. Klassificering

Figur 3.1: Programmets flödesdiagram.

Träning

Inför träningen delas all data som har loggats upp i träningsdata och evalueringsdata. Generellt sett vill man ha 66.66% av insamlad data som träningsdata och använda resterande data för att evaluera klassificeringsmetoden. [21]. Av totalt elva rutter blir sju träningsdata och fyra stycken används för att evaluera modellen, vilket ger oss 63.63% träningsdata som bedömdes vara nära nog och är ännu lite strängare då det är en mindre del träningsdata än önskvärt.

Multinominal Naive Bayes

Innan modellen byggs upp tillämpas inställningarna diskretisering och tillstånd på tränings-och evalueringsdata. Modellen initieras med ett värde som bestämmer upp till vilka N-gram som ska klassificeras. Under träningsfasen beräknas frekvensen av alla egenskaper (attribut-eller tillståndsvärde och N-grams) för båda klasserna. Givet frekvenserna beräknas sanno-likheten ut för varje egenskap och klass som i teorin 2.2. I evalueringsprocessen extraheras alla egenskapar som uppstår i den data som ska klassificeras. För varje klass har egenskapen en sannolikhet lagrad från träningsfasen. Sannolikheterna summeras för varje egenskap och klass. Körningen klassificeras slutligen till den klass vars sannolikhet blev störst.

Att hitta de bästa inställningarna för en MNB-modell har varit en iterativ process. Grundinställningarna vi har använt igenom alla tester är logaritmiska sannolikheter och Laplace-utjämning. Vi har testat alla möjliga kombinationer av inställningarna diskretiser-ing och tillstånd, både på och av. För varje kombination av inställndiskretiser-ingar har vi även testat alla N-gram upp tills korrektheten börjar gå ner.

Gaussisk Naive Bayes

Under träning tas medelvärde och standardavvikelse fram genom beräkningar för varje at-tribut i båda klasserna, alltså för både hastighet samt varvtal. Dessa beräknas fram likt ex-emplet i 2.3. Till skillnad från MNB används inte Laplace-utjämning här då det inte är lika binärt vid evalueringen, det vill säga att ett visst tillstånds egenskap har funnits med i tränin-gen eller inte. Istället undersöks dess sannolikhet, så om en etränin-genskap inte stötts på under träningen blir det en mycket lägre sannolikhet i jämförelse med en som har funnits med.

Ekvationen 2.10 ligger till grund för hur den gaussiska klassificeringen går till. För varje avläsning av hastighet och varvtal vi läser vid evalueringen beräknas en sannolikhet att den avläsningen av egenskaperna tillhör någon av våra två klasser. Eftersom en hel körning bedöms rör det sig om upp till ett par tusen avläsningar som måste beräknas. Varje egen-skaps log-sannolikhet summeras slutligen ihop och den klass vars sannolikhet är störst får denna körning klassificerad till sig.

(23)

3.4. Klassificering

Evaluering

Vi använde oss av k-fold cross validation. Med vår uppdelning av data där sju körningar som träningsdata och fyra körningar som testdata, ger oss totalt 330 permutationer. I vårt fall blir då k=330. För varje inställning som testas tränas och evalueras modellen 330 gånger. Korrek-theten som visas i resultatet är en den genomsnittliga korrekKorrek-theten för alla permutationer.

(24)

4

Resultat

4.1

Körning

Sammanlagt togs elva rutter fram, där fyra av dem kan ses i bild 4.1. Dessa togs fram med variation i åtanke då strävan var att ha en kombination av stads- samt tätortskörning. Resterande bilder kan ses i bilagan.

(25)

4.2. OBD-II-loggning

I tabell 4.1 kan distansen för varje rutt som kördes av båda förarna avläsas. Rutt Distans [km] 1 5.0 2 2.3 3 2.2 4 3.0 5 7.2 6 1.8 7 2.0 8 2.6 9 2.7 10 4.7 11 1.8

Tabell 4.1: Distanstabell över alla körsträckor.

4.2

OBD-II-loggning

Totalt genererades 42 715 rader rådata från körningarna, varav ena förare hade 21773 och den andra hade 20942 rader. Varje sparning sparades ner i en separat fil, vilket resulter-ade i 22 filer, för att underlätta att hålla ordning på förare och vilken rutt som hresulter-ade körts. Frekvensen för avläsning av OBD-II-data sattes till 10 Hz, men adaptern klarade inte av det så snittfrekvensen låg på cirka 5 Hz. Störningen kan ha orsakats av en bugg i mjukvaran eller att adaptern var skadad. Tyvärr fanns endast ett exemplar så detta problemet kunde inte åtgärdas.

4.3

Klassificering

Nedan visas alla resultat i tabeller med angivna inställningar för klassificering. Det som är mest intressant att kolla på är den rad som anger snittsäkerheten i tabellerna. Samtliga resultat har körts med k-fold cross validation som evaluering.

Diskretisering

Med diskretisering så reduceras 72 unika hastighetsattribut ner till 9 och 1966 unika varvtalsattribut reduceras till 15. Figur 4.2 4.3 visar sammanslagnigen för hastighet och figur 4.4 -4.5 sammanslaningen för varvtal.

(26)

4.3. Klassificering

Figur 4.2: Fördelning av unika hastighetsat-tribut för båda förarna utan diskretisering.

Figur 4.3: Intervallsfördelning för hastighet sett till båda förarna med diskretisering.

Figur 4.4: Fördelning av unika varvtalsat-tribut för båda förarna utan diskretisering.

Figur 4.5: Intervallsfördelning för varvtal sett till båda förarna med diskretisering.

Gaussian Naive Bayes

I tabell 4.2 presenteras resultatet för klassificering av körningar med vår implementation av Gaussian Naive Bayes, och i 4.3 ses resultatet med diskretiserade värden. Resultatet visar att vi fick 62.42% respektive 66.89% säkerhet på klassificering om man endast kollar på varvtal. Vi testade sedan att klassificera enbart på båda attributen samtidigt (hastighet+rpm i tabell), vilket resulterade i endast 58.07% respektive 58.48%.

Tabell 4.2: Gaussian Naive Bayes utan diskretiserade värden. Hastighet Rpm Hastighet+Rpm

Snitt (%) 49.92 62.42 58.07

Median (%) 50.00 62.50 62.50

Max (%) 62.50 87.50 87.50

(27)

4.3. Klassificering

Tabell 4.3: Gaussian Naive Bayes med diskretiserade värden. Hastighet Rpm Hastighet+Rpm

Snitt (%) 50.87 66.89 58.48

Median (%) 50.00 62.50 62.50

Max (%) 75.00 87.50 87.50

Min (%) 25.00 50.00 37.50

Multinominal Naive Bayes

Nedan visas resultatsgraferna för Multinominal Naive Bayes med alla kombinationer av in-ställningar vi tillämpande.

Klassificering av hastighet och mototvarvtal individuellt

I de fyra följande inställningarna som presenteras undersöker vi resultatet av att individu-ellt klassificera attributen — hastighet (H) och varvtal (V). Utöver det testar vi dessutom att använda icke-diskretiserade ( D) såväl som diskretiserade (D) värden.

Figur 4.6: Resultatsgraf för diskretiserade och icke diskretiserade hastighet- samt varvtalsvär-den.

Antagande att hastighet och varvtal är betingat oberoende

Denna inställning låts hastighet och varvtal vara betingat oberoende (BO), det vill säga att vi summerar resultatet från att ha individuellt klassificerat ett attribut åt gången, för att sedan

(28)

4.3. Klassificering

slå ihop resultaten till en sannolikhet. Även detta görs två gånger — en gång med diskretis-ering och en gång utan, precis som ovan.

Antagande att hastighet och varvtal är betingat beroende

För att anta att attributen är betingat beroende (BB) av varandra har vi aktiverat tillståndsin-ställningen. Även här med och utan diskretisering.

Betingat beroende med variation på attributen

När vi klassificerade attributen med antagande att de var betingat oberoende varandra kunde vi se att icke diskretiserade hastighetsvärde gav bättre resultat. Vi tog det ett steg till och testade med att anta att attributen är betingat beroende varandra med diskretiserade varv-talsvärden och icke diskretiserade hastighetsvärdena. Denna inställning ges av BB DHDV

Figur 4.7: Resultatsgraf för tabeller ovan med betingat beroende och oberoende.

Som svar på frågeställningen klassificerades förare givet deras körstil baserad på hastighet och varvtal med 91.48% korrekthet med en Multinominal Naive Bayes med 4-gram, diskretiserade varvtalsvärden och icke disktretiserade hastighetvärden.

(29)

5

Diskussion

5.1

Metod

Målet med detta arbete var att i förstahand kunna identifiera med viss procentuell säkerhet vem det var som körde bilen. För att göra det måste man på något vis identifiera och särskilja på körstil — något som i efterhand inser att vi inte utnyttjade till max i vårt upplägg om rutterna. Vi koncentrerade oss mest på körning i tätort där variation i hastighet förekommer mest, på grund av många start och stopp, men framförallt var vi ute efter sekvenserna tills dess att man stannar, inte att man faktiskt står still.

Bilen tillhörde en av förarna i arbetet vilket betyder det att han är mer van vid bilen, och kan därför mer bekvämt köra den. Dessvärre visade det sig att detta inte var fullt tillräckligt då körstilarna i sig hade låg varians. Vi inser dock att detta kanske ändå är det optimala för den här typen problem. Om vi med den säkerheten kan identifiera förare vars körstil är så pass lika, påvisar det att klassificeringen gör ett bra jobb.

Gällande insamlingen av data från OBD-II:n anser vi inte är bristfällig eftersom hastighet och varvtal är två variabler som föraren har direkt påverkan på. Beroende på arbetets hu-vudfokus så är det dessa två värden som är ständigt återkommande i andra arbeten [7, 3, 11].

Diskretisering av värden kommer ifrån ämnet klassificering. Ying Yang et al [34] säger trots att informationsförlust kan uppstå vid diskretisering kan det ge bättre resultat än att inte diskretisera, genom exempelvis att använda densitetsfunktioner. I grund och botten ligger alltså inte valet att diskretisera i andra liknande arbeten utan helt enkelt i litteratur kring klassificering. Det kan vara svårt att finna den optimala diskretiseringsnivån då den är starkt beroende av den data som diskretiseras. Vi valde att använda oss av Bin-log l vilket gav bättre resultat än när vi försökte testa oss fram till en bra diskretiseringsnivå.

Andrieu et al [3] hade i sitt arbete aggregerade tillstånd som bestod av värden som log-gades från fordonet via CAN-bussen. Både varvtal- och hastighetsvärden utgör en del av dessa tillstånd som används för beräkning och klassificering. Gällande klassificeringsalgo-ritm valde de logistisk regression vilket lämpar sig bra om man har mer frågor med binär

(30)

5.2. Resultat

natur. Deras arbete gick ut på att kolla om en körning var eco-driving eller inte, vilket är mer binärt i jämförelse med vårt arbete där vi ställer mer frågan vem det var som körde. Den största inspirationen från just det här arbetet ligger alltså inte i klassificeringsalgoritmen utan snarare användandet av tillstånd.

Användandet av OBD:II sänker hela replikerbarheten av arbetet då protokollet skiljer sig mellan fordon. Det löste Eren et al genom att använda en iPhone och beräkna datan utifrån sensordatan. Den lösningen kan appliceras på vilket fordon som helst, men det som man vinner i replikerbarhet förlorar man på precisionen, då det inte finns något sätt att beräkna fram varvtalen på fordonet.

Valet att bygga klassificeraren själva gjordes för att ha möjligheten att kunna modifiera algoritmen själva och bygga vidare genom att tillämpa olika metoder, såsom N-gram och Laplace. Det finns ett Java-baserat API vid namn Weka1men det upptäcktes en bit in i arbetet då applikationen nästan var färdigimplementerad. I slutändan tror vi att tiden att bli bekväm med användandet av Weka och göra en egen implementation resulterar i ungefär lika stor tidsåtgång.

5.2

Resultat

Jämför man resultatet från de två modellerna ser man att MNB-modellen presterar bättre än den Gaussiska-modellen. Det kan ha flertalet förklaringar men vi tror att den mest bidra-gande faktorn är att data för de två attributen inte är normalfördelad.

N-gramtekniken ger generellt högre korrekthet. Anledningen är att ett högre N är en bät-tre beskrivning av ett beteende. Att kolla på vad en förare gör vid en specifik tidpunkt säger inte mycket om hur föraren beter sig. Kollar man istället över en tidperiod kan man extrahera ett beteendemönster, exempelvis vid en snabb inbromsning kontra motorbromsning. Vid för långa tidsserier kan det dock försämra resultatet. Man vill hitta en generell tidsram där man kan se beteenden som ofta uppstår. Eftersom beteende alltid påverkas av omgivningen kan man vid klassificering på för långa tidsserier få delvis överlappande beteenden som inte ofta uppstår efter varandra. Därför ökades N till den punkt vi kan se att korrektheten börjar minska.

Skillnaden på antalet tillstånd för diskretiserade samt icke-diskretiserade hastighetsvär-den är inte särskilt stor, eftersom vi aldrig körde snabbare än cirka 70 km/h, som då be-gränsar antalet unika attribut. Det här leder oss till tanken att diskretisera hastighetsvärden inte är nödvändigt. Detta speglar sig även i resultatet i figur 4.6 där den gråa grafen visar diskretiserade hastighetsvärden, som ger lägst korrekhet.

Att diskretisera varvtalsvärden ger betydligt bättre resultat. Vi tror det kommer i och med att skillnaden mellan antalet diskretiserade attribut och icke diskretiserade var större. I snitt var det 131 gånger fler unika icke diskretiserade attribut jämfört med antalet diskretiserade.

Ett problem vi stötte på var att exekveringstiden ökar kraftigt när vi testar att klassificera icke diskretiserade varvtalsvärden, speciellt när N ökar. Den gråa grafen i figur 4.7 är ett extremexempel. Där har vi inte fortsatt att klassificera högre N-gram trots att precisionen inte har börjat avta. Därför att träna och klassificera alla k:n i k-kors-valideringen för N = 10 beräknas ta 5.5 timmar. N = 9 i för grå graf i samma figur har även sämre precision än N = 1 för diskretiserade värden (gul graf). Vi valde därför att inte fortsätta med högre N. Att diskre-tisera data medförde att vi markant minimerade antalet tillstånd som frekvensberäkning görs på. Ett mindre antal tillstånd medför att algoritmen kan arbeta snabbare.

(31)

5.2. Resultat

Kollar man på de båda figurerna 5.1 och 5.2 ser man att varvtal är väldigt avgörande för att identifiera förare. Eftersom förarna körde samma rutter så borde hastighetsfördelningen för de båda förarna vara lika varandra, vilket de är enligt figur 5.1. I och med att förare kan ha individuella körstilar men ändå framföra fordonet i samma hastighet kan varvtalet variera mer, som man ses i graferna nedan.

Utöver hur de två modellerna skiljer sig algoritmiskt är det värt att undersöka hur pass mycket egenskaperna spelar roll för de två metoderna. I tabell 4.2 och 4.3 ser man att klassi-ficering på endast ett av attributen (varvtal) ger högre korrekthet än enbart hastighet och de båda kombinerat. Man ser att varvtal är väldigt avgörande för att identifiera förare, då klassi-ficering av individuella attribut ger hastighet sämre korrekthet. Anledningen till detta är att för den gaussiska modellen erhålls en mer normalfördelad fördelning för varvtal, i jämförelse med den fördelning för hastighet.

Figur 5.1: Distribuering av hastighetsvärden för alla logfiler, separerat för de båda förarna. Förare 1: blå, förare 2: ljusgrön.

(32)

5.3. Källkritik

Figur 5.2: Distribuering av rpm-värden för alla logfiler, separerat för de båda förarna. Förare 1: blå, förare 2: ljusgrön.

Undersöker man tabellerna för MNB-modellen i resultatet så ser man att det är först vid betingat beroende som precisionen når en acceptabel nivå. En förklaring till detta kan vara att det antagandet vi gör för betingat oberoende inte fullt stämmer överens med verkligheten, ett fordon som framförs i hög hastighet har en tendens att även ha ett högt varvtal. Precis som exemplet i teorikapitlet så har vi orden "gratis" och "kreditkort", antar vi att de är betingat oberoende, även om det strider mot den verkliga bilden man har för ordförekomsten vid spam-mail.

Kort sagt kan vi utläsa ur tabellerna från resultatet att 4-gram med diskretiserade varv-talsvärden och icke diskretiserade hastighetsvärde och tillstånd ger den högsta korrektheten av de två klassificeringsmodellerna. För att avgöra om det är dugligt resultat eller inte ut-går vi ifrån vår baseline, men även andra liknande arbeten. Eftersom båda förare körde lika många sträckor sätts vår baseline till 0.5, eller 50%. Andra arbeten som berör textklassificer-ing ligger mellan 70% - 95%, med variation på modeller och inställntextklassificer-ingar. Validiteten verkar förhållandevis hög då vi får ungefär samma procentuella säkerhet som andra arbeten inom samma problemsdomän, som exempelvis textklassificering, både med och utan färdiga tex-tklassificerare [12, 18].

5.3

Källkritik

Nästan alla källor av typen artiklar är publicerade i välkända journaler eller konferenser, eller publicerade av respekterade författare inom området. Ett par undantag är dock [29] och [25]. Här gjorde istället en bedömning av innehållet samt även antalet citeringar från Google Scholar togs i åtanke, och vart de har citerats ifrån. Dessutom användes dessa artiklar mer i kontextberikande syfte i denna uppsats. Utöver journaler och konferenser används officiella byråer som källor, som exempelvis [31] [24]. Vidare användes en källa [28] från ett amerikanskt universitet i Pittsburgh, Pennsylvania — Carnegie Mellon University som har en välrespekterad departement för bland annat datavetenskap.

(33)

5.4. Arbete i vidare sammanhang

5.4

Arbete i vidare sammanhang

I en studie gjord 2009 av American Automobile Association Foundation of Traffic Saftey (AAA) kan man läsa att 56% av trafikolyckor med dödlig utgång mellan 2003 och 2007 involverar osäker körning associerat med aggressiv körstil [5]. Att kunna klassificera körstilar och förar-beteende kan leda till att man ger föraren varningar under en körning, om dennes körstil är likt en farlig — som exempelvis aggressiv körstil eller trötthet. Detta leder till att fordon framförs säkrare vilket sänker antalet trafikolyckor. Vidare faller miljövänlig körning in på samma tillämpningsområde vilket betyder att klassificera en körning som miljövänlig eller inte skulle i praktiken innebära väldigt lite ändringar. Detta resulterar då i att man kan få föraren att köra mer miljövänligt vilket sänker miljöutsläppen.

(34)

6

Slutsatser

Ett arbete har utförts att med säkerhet kunna klassificera vem som körde en bil genom att analysera ett fordons hastighet och varvtal genom OBD:II. Arbetet utfördes av två personer och körningen tog plats i Västervik där varje rutt som kartlades kördes av båda förare med samma bil.

Frågeställningarna som ligger till grund för arbetet besvarades genom att undersöka två metoder av Naive Bayes som klassificerare, nämligen Multinominal Naive Bayes samt Gaus-sian Naive Bayes. Till dessa applicerades olika modeller som exempelvis N-gram och Laplace och utvärderingen användes utav k-fold cross validation till samtliga metoder.

1. Vilken precision för klassificering av förare kan man få baserat på parametrarna hastighet och varvtal från fordonet?

2. Vilken Naive Bayes-metod, med vilka inställningar ger bäst resultat för den här typen av klassificering?

Vi fann att svaret till frågorna blev 91.48% med att använda 4-gram på Multinominal Naive Bayes med diskretiserade varvtalsvärden och icke diskretiserade hastighetsvärden. Detta tyder på att N-gram är den metod att föredra då den försöker införa kontext eller för-lorad information som försvinner. Gaussian Naive Bayes verkade resultera i sämre precision oavsett diskretisering eller inte. Detta kan förklaras att den data som används inte är riktigt normalfördelad och skapar därför problem för modellen.

6.1

Framtida vidareutveckling

Ett av problemen med att använda OBD:II är att det är ett externt verktyg, och att dataöver-föringen är stundvis ostabil. Det smidigare alternativet skulle vara att genom en smartphone använda gyroskopdata eller annan sensordata. Med tanke på den rådande utvecklingen av just telefoner kan det vara att föredra, inte minst ur ett praktiskt perspektiv. Den data som kan gå förlorad genom att använda en smartphone skulle i sådana fall vara mer direkta värden

(35)

6.1. Framtida vidareutveckling

från motorn som exempelvis varvtal eller pedalpositioner, medan data som bränsleförbrukn-ing kan beräknas fram.

Gällande klassificeringsalgoritmer beror det på vad arbetet har som huvudfokus. Exem-pelvis vid modellering och predicering av mänskligt beteende inom fordonstrafik har Pent-land et al [26] gjort stora framsteg med hjälp av Hidden Markov Model-modeller. Det är dock svårt att säga om det finns en algoritm som presterar bättre än andra. Valet av algoritm har mer att göra med vad det är för fråga man ställer, vilket fokus sitt arbete har, hur man strukturerar sin data och hur mycket data man har till hands.

(36)

7

Appendix

(37)

7.1. Data

Figur 7.2: Stadskörning. [färg/rutt]: röd/6, grön/7, blå/8, svart/11

7.1

Data

Här presenteras data från alla körningar för båda förare.

Medelhastighet [km/h] Maxhastighet [km/h] Rutt Distans Förare 1 Förare 2 Förare 1 Förare 2

1 5.0 44 40 63 56 2 2.3 31 29 64 51 3 2.2 24 22 40 47 4 3.0 26 24 51 45 5 7.2 41 39 75 69 6 1.8 20 20 38 37 7 2.0 23 22 40 35 8 2.6 25 20 47 45 9 2.7 22 24 40 44 10 4.7 32 35 52 52 11 1.8 41 39 63 56

(38)

7.1. Data

Medelvarvtal [rpm] Max-varvtal [rpm] Rutt Förare 1 Förare 2 Förare 1 Förare 2

1 1640 1494 2874 2568 2 1448 1260 2488 2630 3 1384 1147 2318 2549 4 1429 1278 2587 2478 5 1611 1633 2718 3721 6 1274 1183 2457 2846 7 1291 1172 2212 2796 8 1422 1214 2536 2533 9 1407 1241 2478 2312 10 1456 1454 2617 2998 11 1593 1528 2318 2504 Tabell 7.2: Varvtalstabell.

(39)

Referenser

[1] 1990 Clean Air Act Amendment Summary. https : / / www . epa . gov / clean air -act-overview/1990-clean-air-act-amendment-summary. Hämtad: 2017-01-05.

[2] Scott D Anderson. Combining Evidence using Bayes’ Rule. 2007.

[3] Cindie Andrieu and Guillaume Saint Pierre. “Using statistical models to characterize eco-driving style with an aggregated indicator”. In: Intelligent Vehicles Symposium (IV), 2012 IEEE. IEEE. 2012, pp. 63–68.

[4] Ion Androutsopoulos, John Koutsias, Konstantinos V Chandrinos, and Constantine D Spyropoulos. “An experimental comparison of naive Bayesian and keyword-based anti-spam filtering with personal e-mail messages”. In: Proceedings of the 23rd annual international ACM SIGIR conference on Research and development in information retrieval. ACM. 2000, pp. 160–167.

[5] American Automobile Association et al. “Aggressive driving: Research update”. In: American Automobile Association Foundation for Traffic Safety (2009).

[6] Jack N Barkenbus. “Eco-driving: An overlooked climate change initiative”. In: Energy Policy 38.2 (2010), pp. 762–769.

[7] Bart Beusen, Steven Broekx, Tobias Denys, Carolien Beckx, Bart Degraeuwe, Maarten Gijsbers, Kristof Scheepers, Leen Govaerts, Rudi Torfs, and Luc Int Panis. “Using on-board logging devices to study the longer-term impact of an eco-driving course”. In: Transportation research part D: transport and environment 14.7 (2009), pp. 514–520.

[8] Kanok Boriboonsomsin, Alexander Vu, and Matthew Barth. “Eco-driving: Pilot evalu-ation of driving behavior changes among US drivers”. In: University of California Trans-portation Center (2010).

[9] Jiangpeng Dai, Jin Teng, Xiaole Bai, Zhaohui Shen, and Dong Xuan. “Mobile phone based drunk driving detection”. In: Pervasive Computing Technologies for Healthcare (Per-vasiveHealth), 2010 4th International Conference. IEEE. 2010, pp. 1–8.

[10] James Dougherty, Ron Kohavi, Mehran Sahami, et al. “Supervised and unsupervised discretization of continuous features”. In: Machine learning: proceedings of the twelfth in-ternational conference. Vol. 12. 1995, pp. 194–202.

(40)

Referenser

[11] Haluk Eren, Semiha Makinist, Erhan Akin, and Alper Yilmaz. “Estimating driving be-havior by a smartphone”. In: Intelligent Vehicles Symposium (IV), 2012 IEEE. IEEE. 2012, pp. 234–239.

[12] Khalif Farah Mohamed. Using Naive Bayes and N-Gram for Document Classification An-vändning av Naive Bayes och N-Gram för dokumentklassificering. 2015.

[13] Mohamed Fazeen, Brandon Gozick, Ram Dantu, Moiz Bhukhiya, and Marta C González. “Safe driving using mobile phones”. In: IEEE Transactions on Intelligent Trans-portation Systems 13.3 (2012), pp. 1462–1468.

[14] Narelle Haworth and Mark Symmons. “Driving to reduce fuel consumption and im-prove road safety”. In: Monash University Accident Research Centre. http://www. rsconfer-ence. com/pdf/RS010036. pdf (2001).

[15] George H John and Pat Langley. “Estimating continuous distributions in Bayesian clas-sifiers”. In: Proceedings of the Eleventh conference on Uncertainty in artificial intelligence. Morgan Kaufmann Publishers Inc. 1995, pp. 338–345.

[16] Alfons Juan and Hermann Ney. “Reversing and Smoothing the Multinomial Naive Bayes Text Classifier.” In: PRIS. 2002, pp. 200–212.

[17] Ashraf M Kibriya, Eibe Frank, Bernhard Pfahringer, and Geoffrey Holmes. “Multino-mial naive bayes for text categorization revisited”. In: Australasian Joint Conference on Artificial Intelligence. Springer. 2004, pp. 488–499.

[18] Eleonor Lagerkrants and Jesper Holmström. Using machine learning to classify news arti-cles. 2016.

[19] David D Lewis. “Naive (Bayes) at forty: The independence assumption in information retrieval”. In: European conference on machine learning. Springer. 1998, pp. 4–15.

[20] Huan Liu and Rudy Setiono. “Feature selection via discretization”. In: IEEE Transactions on knowledge and Data Engineering 9.4 (1997), pp. 642–645.

[21] Zhongyu Lu. Information retrieval methods for multidisciplinary applications. IGI Global, 2013, p. 216.

[22] Andrew McCallum, Kamal Nigam, et al. “A comparison of event models for naive bayes text classification”. In: AAAI-98 workshop on learning for text categorization. Vol. 752. Citeseer. 1998, pp. 41–48.

[23] OBD-II Background. http://www.obdii.com/background.html. Hämtad: 2017-01-03.

[24] On-Board Diagnostics (OBD). https://www3.epa.gov/obd/basic.htm. Hämtad: 2017-01-05.

[25] Shadab Adam Pattekari and Asma Parveen. “Prediction system for heart disease using Naive Bayes”. In: International Journal of Advanced Computer and Mathematical Sciences 3.3 (2012), pp. 290–294.

[26] Alex Pentland and Andrew Liu. “Modeling and prediction of human behavior”. In: Neural computation 11.1 (1999), pp. 229–242.

[27] Paulo Pires. androidobdreader. https : / / github . com / pires / android obd -reader/releases. Hämtad: 2017-01-20.

[28] J. Schneider. Cross Validation. : http : / / www . cs . cmu . edu / ~schneide / tut5 / node42.html. Hämtad: 2017-01-24.

[29] G Subbalakshmi, K Ramesh, and M Chinna Rao. “Decision support in heart disease prediction system using naive bayes”. In: Indian Journal of Computer Science and Engi-neering (IJCSE) 2.2 (2011), pp. 170–176.

(41)

Referenser

[30] Marie C Taylor, DA Lynam, and A Baruya. The effects of drivers’ speed on the frequency of road accidents. Transport Research Laboratory Crowthorne, 2000.

[31] United States Environmental Protection Agency. https : / / www3 . epa . gov / climatechange/ghgemissions/gases/co2.html. Hämtad: 2016-05-12.

[32] Anna Vadeby and Åsa Forsman. “Speed management in Sweden: evaluation of a new speed limit system”. In: 16th International Conference Road Safety on Four Continents. Bei-jing, China (RS4C 2013). 15-17 May 2013. Statens väg-och transportforskningsinstitut. 2013.

[33] Ying Yang and Geoffrey I Webb. “A comparative study of discretization methods for naive-bayes classifiers”. In: Proceedings of PKAW. Vol. 2002. Citeseer. 2002.

[34] Ying Yang and Geoffrey I Webb. “Discretization for naive-Bayes learning: managing discretization bias and variance”. In: Machine learning 74.1 (2009), pp. 39–74.

References

Related documents

viii MACHINE LEARNING IN COMPUTER VISION 3 Switching between Models: Naive Bayes and TAN Classifiers 138 4 Learning the Structure of Bayesian Network Classifiers:.. Existing

A formula for the asymptotic covariance of the frequency response function estimates and the model parameters is developed for the case of temporally white, but possibly

Second, in the case where only one sensor downstream is used for module identification (i.e., the case of Section 3), using Gaussian processes to model the target module would re-

The probability of a word w given hypothesis h is estimated from the training set: if the documents classified with h contain N words in total and f occurrences of word w, then

From the results in chapter 5.2.2 we can conclude that the Empirical Bayes method gives better estimates of the true value of π i compared to the other general imputation methods.

- The first classification task is to recognize enthusiasm or discontent in messages. Two sets of words identifying negative or positive examples allow

I started off with an idea that instead of cnc-mill plywood and get a contoured model I wanted to com- pose the stock myself.. Idid some quick Rhino tests and I liked patterns

The study shows that the accuracy of both the Naive Bayes and Support Vector Machine classifiers is lower when classifying new articles on a classifier trained with old