FPX har tillsammans med Gävle Citysamverkan under en tid drivit ett projekt där vi på olika sätt kombinerar och modellerar data för att bättre förstå vilka faktorer som påverkar liv och rörelse i Gävles stadskärna. Ambitionen har från första stund varit att hitta ett tydligt affärsvärde i den data som finns tillgänglig.

Projektet är i allra högsta grad fortfarande pågående, men vi känner samtidigt att vi i det här läget har så pass mycket att visa upp att det är hög tid att publicera något. För att göra detta konkret och förhållandevis pedagogiskt kommer vi i den här bloggposten att utgå ifrån ett hypotetiskt fall, ett tankeexperiment, där vi planerar för att etablera en foodtruck i Gävle.

Hur skulle vi gå tillväga om vi bestämde oss för att lansera en foodtruck utan någon som helst tidigare erfarenhet av att driva denna typ av näringsverksamhet i Gävle? Hur mycket mat bör vi förbereda inför varje dag? Hur mycket personal behöver vi? Vilka tider ska vi hålla öppet? Var ska vår foodtruck stå?

Svaren på dessa frågor tar avstamp i hur många personer som förväntas passera vår foodtruck, och när. Det är med andra ord dags för en djupdykning i tillgängliga data för att se om vi kan lära oss något om Gävle och dess potential för vår tänkta affärsverksamhet!

Innan vi fortsätter: naturligtvis har Gävle, precis som alla andra städer, påverkats mycket av coronapandemin under 2020. I den här artikeln kommer vi att utgå från data insamlad sedan tidigare. Hur Covid-19 påverkat stadskärnan förtjänar sannolikt ett eget blogginlägg vid senare tillfälle.

Hur planerar vi inför imorgon?

För att ha en rimlig chans att planera vår verksamhet inför morgondagens matservering behöver vi skapa någon form av prediktion, en förutsägelse av vad som komma skall.

Gävle Citysamverkan har sedan början av 2016 via ett tiotal sensorer mätt in- och utpasseringar av fotgängare i stadskärnan. Mätningarna fungerar rent konceptuellt på ett liknande sätt som butiker registrerar besökare, varje gång en person passerar en mätpunkt uppdateras ett räkneverk. Tekniskt sett är Gävle Citysamverkans hårdvara mer sofistikerad än en vanlig butiks. Eftersom passeringarna mäts i båda riktningarna, in och ut från centrum, innehåller varje sensor två räkneverk.

Gävle Citysamverkans sensorer runtomkring centrala Gävle.

I bilden ovan markeras de sensorer som varit aktiva i Gävle sedan början av 2016. Det har under åren tillkommit ett antal sensorer utöver dessa, men för att göra det lite enklare att anpassa dataseten till en maskininlärningsmodell väljer vi att bara använda de sensorer som kan ge en komplett bild ända sedan mätningarna började.

Om vi fokuserar på en enskild sensor och tittar på hur en typisk vecka kan se ut ser vi ett par intressanta saker värda att spekulera kring ur ett analytiskt perspektiv.. I grafen nedan illustreras en typisk vecka från den inringade sensorn i kartans övre högra hörn.

Tidsseriedata som beskriver mätvärden under en vecka från sensorn vid tågstationen.

Den övre grafen visar rörelser in mot stadskärnan och den nedre grafen visar personer som rört sig utåt, i riktning mot tågstationen. Bilden visar värden insamlade över ett tidsspann på 168 timmar, dvs. en vecka. Vi kan nå en hel del insikter bara utifrån denna korta serie:

  • Det är tydligt att helgerna inte följer samma mönster som vardagarna, då antalet personer som passerar sensorn sjunker markant från både fredag till lördag och lördag till söndag.
  • Vardagarna innehåller generellt två toppar (eller dalar, beroende på vilket värde vi tittar på) som tycks infalla samma tid varje dag. En rimlig förklaring till detta kan vara att det sker jobbpendling till och från Gävle vid dessa tidpunkter.
  • Det finns en tydlig skillnad mellan morgonen och eftermiddagen, där topparna och dalarna är spetsigare i början av dagen. Pendlingen tycks generellt ske mer koncentrerat under morgontimmarna än senare på eftermiddagen.. Sannolikt börjar de flesta jobba ungefär samtidigt, men återvänder hem mer utspritt under eftermiddagen och kvällen.
Sensordata från tågstationen under 2019.

Om vi tittar på data från denna sensor över ett helt år (2019) ser vi att flödet av människor också förändras beroende på när på året mätningen sker. I början och i slutet av året, undantaget mellandagarna, är det betydligt fler personer som rör sig i området runt tågstationen än mitt under sommaren. Mönstret där helgen avviker från resten av veckan är konsekvent, vilket vi ser tydligt på denna bild, och det är förhållandevis enkelt att räkna veckorna bara genom att titta på grafen.

Aggregat data för hela 2019.

Om vi adderar data från resterande sensorer kan vi konstatera att samma mönster tycks återkomma på alla platser där sensorerna är uppsatta. På bilden ovan visas aggregerad data från sensorerna i kartan från inledningen. Även här är det enkelt att se veckorna under året, och att mängden personer som rör sig i Gävle city är lägre under sommarveckorna. De två tydliga avvikelserna under sommaren, en tydlig nedgång och senare en rejäl topp, beror på midsommarhelgen och en stadsfest i början på augusti.

Korrelerade data som kan hjälpa vår modell att förstå årstider

I vårt fall vill vi använda data för att kunna förutse hur mycket folk som kommer att röra sig i stadskärnan, så att vi kan planera för hur vi ska bemanna och driva vår foodtruck. För att åstadkomma det måste vi addera ytterligare data, som kan hjälpa vår maskininlärningsmodell att förstå skillnaden mellan olika årstider. Lyckligtvis är detta data lättillgängligt i form av temperaturvärden från SMHI. Dessutom finns även väderprognoserna tillgängliga, vilket betyder att vi kan förse vår modell med information om vilken temperatur och eventuell nederbörd som väntas de närmaste dagarna. I korthet kan vi med hjälp av väderdata beskriva hur vädret påverkar hur många som väljer att röra sig i centrum.

SMHI:s temperaturdata för 2019 projicerat över aggregat sensordata.

På bilden ovan visas temperaturen över hela 2019. Det finns en tydlig korrelation där rörelsesensorerna ger lägre mätvärden (den gråa grafen) under perioder då temperaturen stiger. Det går även att se ett samband mellan kalla/varma avvikelser under året och förändrad aktivitet i stadskärnan.

Att förutspå sekvensdata

Eftersom det sensordata vi använder i detta fall registreras i kronologisk ordning och uppdateras med fasta intervaller (en gång i timmen) kan vi använda oss av en så kallad sekvensmodell för att prediktera vilka värden sensorerna kommer att ge ifrån sig i framtiden.

Typisk arkitektur för en LSTM-modell.

Bilden ovan beskriver en typisk arkitektur för en LSTM-modell. LSTM står för “Long Short-Term Memory” och innebär att modellen tittar på slumpvist utvalda datasekvenser i tidsserieformat och försöker skapa sig en bild över hur framtiden kan se ut genom att lära sig hur olika återkommande mönster påverkar varandra. Några exempel är att modellen snabbt lär sig hur ett dygn är uppbyggt, att helgen som inträffat runt den 25:e i varje månad har mer rörelse och att hur många som rör sig runt stationen under eftermiddagen styrs av hur många som pendlar under morgonen samma dag.

Prediktionsdata från träningsprocessen. 

Här ser vi en ögonblicksbild från när modellen tränar på att förutspå en sensors data. De två mjukare kurvorna är en “gissning” på hur de närmsta dagarna kommer att se ut och de kantigare kurvorna är det faktiska utfallet. Algoritmen utvärderas genom att det genereras prediktioner för dagar som redan har passerat (men som modellen inte har fått se) och sedan jämförs dessa prediktioner med det hur dessa dagar faktiskt såg ut i verkligheten.

Prediktionsmodellen “in action”.

Med sekventiell maskininlärning (i detta fall LSTM) kan vi genom att slå ihop data från rörelsesensorer med bland annat väderdata skapa en modell som hjälper oss att förutspå hur många personer som kommer att röra sig i stadskärnan vid olika tidpunkter under de närmaste dagarna.

Med hjälp av denna modell kan vi planera och göra snabba justeringar för vår hypotetiska foodtruck. Vi kan enkelt besvara frågor som till exempel:

  • Kommer det att vara mycket folk i Gävle City ikväll?
  • Kommer morgondagen att skilja sig från samma dag förra veckan?
  • Hur många färre människor kommer vi att se i centrum imorgon när väderprognosen förutspår dåligt väder?

Genom att applicera denna typ av data science kan vi få tydliga indikationer på hur mycket personal vi behöver, vilka öppettider vi bör ha, hur mycket råvaror vi ska beställa och hur mycket mat vi ska förbereda.

Vart ska vi ställa vår foodtruck?

Om vi för enkelhetens skull leker med tanken att vi kan ställa vår foodtruck var som helst i Gävle, vilken plats vore då optimal?

För att besvara den frågan behöver vi bygga en modell i form av en simulering för att beräkna vilka platser i stadskärnan vi ser mest aktivitet på. I korthet vill vi återskapa fotgängares rörelsemönster för att se vilka punkter där flest personer passerar. Vi vet redan hur många fotgängare som rör sig in och ut via de platser som sensorerna registrerar. Det vi nu behöver addera är en metod för som hjälper oss att förstå hur fotgängare rör sig.

Polygoner som representerar en simpel version av Gävle centrum.

Gävle kommun erbjuder via sitt öppna data information om fastigheter i staden. Utifrån denna fastighetsdata är det förhållandevis enkelt att manuellt rita polygoner som representerar vilka ytor som inte kan eller bör beträdas. Mer specifikt handlar det primärt om att markera byggnader och utöver det vissa vägsträckor med mycket biltrafik, som sällan korsas av fotgängare. Om vi kombinerar ihop det geografiska data vi skapat med sensorernas positioner får vi en bild enligt ovan.

En sammanställning av det vi har

Vi vet hur många personer som passerar in och ut mot Gävle city via olika geografiska punkter och vi kan även förutspå hur antalet personer i rörelse kommer att förändras över tid. Vi har även en grov generalisering över vilka ytor som människor kan rör sig på, och vart de inte kan röra sig. Om vi sammanställer detta kan vi konstruera en enkel modell som simulerar fotgängare. Vi kan i stort sett låta alla rörelsemönster vara slumpmässiga, men varje simulerad person startar alltid vid en sensor och rör sig initialt i riktning mot centrum. Vi introducerar även en enkel policy som säger att en individ som riskerar att kollidera med ett hinder (polygonerna vi ritat) helst fortsätter i befintlig riktning men med en korrigering som undviker kollisionen.

Eftersom vi vet hur många som passerar ut från stadskärnan blir det nu mest en fråga om att skruva på vår policy tills mängden in- och utpasseringar stämmer med det tidsdata vi använder för att göra våra prediktioner. I korthet: vi vill att de inpasserande personerna vi simulerar “hänger kvar” lagom länge, så att de passerar ut i linje med vad sensorernas data säger.

Hur många fotgängare vi simulerar vid en given tidpunkt, och var de startar, baserar vi också på vad data från sensorerna säger oss.

Flödesprediktion baserad på sensordata och en enkel policy för rörelsemönster.

Sammantaget kan vi med denna metod skapa oss en lägesbild som illustrerar rörelser i stadskärnan. Även om varje enskild fotgängare i vår simulering agerar efter väldigt enkla regler så ger mönstret som framkommer en tydlig bild. Genom att analysera vilka områden som har flest passerande fotgängare kan vi välja en lämplig plats för vår foodtruck. Eftersom simuleringen baseras på tidsseriedata får vi också olika resultat beroende på vilken dag och tidpunkt vi utgår ifrån. Det är möjligt att den optimala platsen varierar beroende på omständigheter, vilket innebär att vi kan dra nytta av att vår hypotetiska foodtruck är flyttbar.

Hur vet vi då att bilden vi skapar över rörelser i stadskärnan stämmer överens med hur det ser ut i verkligheten? Det gör vi egentligen inte, åtminstone inte ur ett rent vetenskapligt perspektiv. Det vi kan konstatera är att mönstret stämmer överens med empiriska studier. Med andra ord, i den mån vi har haft möjlighet att diskutera modellen med personer som på olika sätt arbetar med att förstå och utveckla stadskärnan i Gävle stämmer bilden överens med hur de upplever att människor rör sig.

Att addera till detta är att FPX har sitt kontor i centrala Gävle, hos DoSpace, med utsikt över Stortorget. Genom att vid olika tidpunkter studera hur människor rör sig över torget kan vi åtminstone konstatera att även dessa rörelsemönster tycks linjera med vad modellen producerar.

För att komma vidare i detta krävs dock mer data från en betydligt mer noggrant genomförd studie. Lyckligtvis pågår det inom FPX:s akademiska gren ett större forskningsprojekt på området upplevd stadsmiljö via Högskolan i Gävle, som förväntas kunna tillföra värdefulla data och nya insikter in i detta projekt.

Om vi däremot är intresserade av att placera vår foodtruck på en plats med avsikt att nå en specifik målgrupp, då finns det ytterligare en del data science-arbete som kan vara intressant att titta på.

Rörelsemönster i samma polygonmiljö som tidigare, nu baserat på A*-algoritmen.

Denna bild visar en polygonbaserad version av en populär sökvägsalgoritm kallad A* som bland annat används flitigt i olika typer av spelutveckling. Algoritmen används för att räkna ut den (i de flesta fall) optimala vägen mellan två punkter. Genom att applicera denna algoritm kan vi producera en karta över hur en person kan tänkas röra sig mellan två platser i staden. I vårt fall kan detta vara intressant om vi till exempel vill rikta in oss på personer som rör sig mellan till exempel en sportarena och tågstationen.

En agent som lär sig navigera utifrån en policy byggd på djupinlärning.

Avslutningsvis kan vi även välja en mer organisk approach till hur vi vill simulera gångvägen mellan två punkter. Ett sätt som vi experimenterar mycket med för tillfället är att använda djupinlärning istället för en strikt sökvägsalgortim. Genom att applicera maskininlärning i vår geografiska datamodell kan vi skapa mer naturliga rörelsemönster. Först låter vi en modell lära sig att navigera i en generell “polygonsandlåda”, undvika hinder och leta efter belöningar. Därefter kan vi lyfta över den tränade modellen till vår simulation. Effekten av detta blir att vi kan introducera mer komplexa regler som kan ligga till grund för hur en individ förväntas röra sig. Till exempel kanske en person inte väljer att ta den faktiskt kortaste vägen utan istället den väg som flest andra personer rör sig. I en förlängning kan vi på detta sätt göra vår simulation mer incitamentsdriven och därmed kanske introducera logik som säger att sannolikheten att en person i centrum ska röra sig mot vår foodtruck korrelerar med hur lång tid personen befunnit sig i rörelse.

Reinforcement Learning (djupinlärning) är också ett ämne som vi har anledning att återkomma till vid ett senare tillfälle i andra sammanhang relaterade till arbetet som pågår hos FPX.

Vad vi har lärt oss

Genom att välja ett tydligt case och applicera data science på lättillgängligt, relevant samhällsdata upplever vi att det går att påvisa faktiskt affärsvärde. Det går sannolikt att utifrån detta projekt till hög grad besvara frågorna som ställdes i inledningen av detta blogginlägg. Vi vet hur många personer som förväntas befinna sig i stadskärnan under morgondagen, och vi har en övergripande idé om var vår foodtruck har störst potential att exponeras för så många förbipasserande som möjligt.

Ambitionen med detta arbete är naturligtvis inte att FPX och Gävle Citysamverkan ska starta näringsverksamhet i form av en foodtruck. Processen ska däremot hjälpa oss att förstå hur vi kan modellera och presentera data på ett sätt som sänker behovet för Gävle Citysamverkans medlemmar att själva besitta resurser och kompetenser för att göra djupt analysarbete. När projektet nu rullar vidare kommer fokus att skifta mot verktyg som kan hjälpa oss att bära ut detta i för målgruppen välanpassade gränssnitt.

Utöver ett arbete med att produktifiera det som finns tillgängligt i nuläget behöver vi också fortsätta utveckla modellerna. Data som vi gärna vill addera kan till exempel handla om parkeringsbeläggningar, kollektivtrafik och aggregat data över enheter uppkopplade mot wifi-hotspots.

Kontakta oss!

Vill du veta mer om hur projektet fortlöper, ta del av resultaten eller själv bidra till arbetet? Kontakta oss gärna.

Henrik Mazzanti — Processledare, FPX
henrik.mazzanti@fpx.se

Daniel Swärd — Verksamhetsansvarig, Gävle Citysamverkan
daniel@gavlecity.se

Magnus Engström (som skrivit detta inlägg) — CTO, FPX
magnus.engstrom@fpx.se

Pin It on Pinterest