Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Thesis

 Thesis

Thesis presentation for Master in Science degree

Hannes Van De Vreken

September 09, 2013
Tweet

More Decks by Hannes Van De Vreken

Other Decks in Technology

Transcript

  1. Masterproef door Hannes Van De Vreken 09/09/2013 Intelligentie op basis

    van een nieuwe gebruiker- georiënteerde website voor iRail
  2. Hannes Van De Vreken 09/09/2013 Probleem ➔ API voor treingegevens

    ➔ Afhankelijk van NMBS ◆ Geen API ◆ Geen data ouder dan 7 dagen ➔ Geen gepersonaliseerde gegevens ◆ RailMate voor iOS (enkel gegevensopslag op toestel) ◆ BeTrains (enkel gegevensopslag op toestel)
  3. Hannes Van De Vreken 09/09/2013 Doelstelling ➔ Creatie van API

    voor gebruikerscontext ◆ Interactiever voor gebruikers ➔ Treingegevens ◆ Verzamelen ◆ Bijhouden ◆ Openstellen ➔ Treinvertragingen voorspellen en meedelen adhv: ◆ Vertragingen uit verleden ◆ Verzamelde gebruikergegevens
  4. Hannes Van De Vreken 09/09/2013 Data harvesting MongoDB TDT API

    Kunstmatige Intelligentie RailTime website Sociale Netwerk-sites Gebruikers-API Applicaties Overzicht
  5. Hannes Van De Vreken 09/09/2013 ➔ Authenticatie ◆ Via sociale

    netwerk-accounts • Facebook • Twitter • Google • Instagram • Foursquare Integratie gebruikers
  6. Hannes Van De Vreken 09/09/2013 ➔ Authenticatie ◆ Via sociale

    netwerk-accounts ◆ Niet via e-mailadressen en wachtwoorden Integratie gebruikers
  7. Hannes Van De Vreken 09/09/2013 ➔ Authenticatie ◆ Via sociale

    netwerk-accounts ◆ Niet via e-mailadressen en wachtwoorden • Gebruik van Open Authentication (OAuth) workflow • Aanvragen van token per gebruiker • Verschillen in implementaties wegwerken • Eigen OAuth 2.0-service voor iRail Integratie gebruikers
  8. Hannes Van De Vreken 09/09/2013 ➔ Authenticatie ◆ Via sociale

    netwerk-accounts ◆ Niet via e-mailadressen en wachtwoorden ➔ PlugID ◆ Oorpronkelijk: The DataTank (TDT) aanpassen ◆ Geschreven met PHP en CodeIgniter (CI) ◆ Interne identificatie • OAuth1.0-, OAuth2.0-client, OAuth2.0-server Integratie gebruikers
  9. Integratie gebruikers: authenticatie Facebook Foursquare Twitter PlugID Application (PlugID) oauth_token

    (service) oauth_token response response Hannes Van De Vreken 09/09/2013
  10. Hannes Van De Vreken 09/09/2013 ➔ Authenticatie ➔ PlugID ◆

    ... ◆ REST-API • CRUD (Create-Read-Update-Delete) • OAuth 2.0 • Berichten • Check-ins op trein • Locatie van gebruikers Integratie gebruikers
  11. Hannes Van De Vreken 09/09/2013 Data harvesting MongoDB TDT API

    Kunstmatige Intelligentie RailTime website Sociale Netwerk-sites Gebruikers-API Applicaties Overzicht
  12. Behandeling data ➔ Gedistribueerde databank (NoSQL) ➔ Cassandra ◆ Opvragen

    via gesorteerde kolom-sleutels • Alle treinen per station • Alle stations per trein ◆ Vereist extra index-tabel onderhouden Hannes Van De Vreken 09/09/2013
  13. Behandeling data ➔ Oplossing: MongoDB ◆ ensureIndex-functie ◆ Op basis

    van JSON (subdoc’s & arrays) ◆ Opvragen per trein / halte mogelijk • Groeperen van alle treinen met halte in een bepaald station, gesorteerd volgens aankomsttijd ◆ Vuistregel: gegevens opslaan zoals je ze wil opvragen Hannes Van De Vreken 09/09/2013
  14. Hannes Van De Vreken 09/09/2013 Behandeling data ➔ Verzamelen van

    data: Elke dag: Hele treinschema scrapen Elke 5 minuten: Huidige vertragingen scrapen ➔ Sheduled tasks (bvb: Cron)
  15. Hannes Van De Vreken 09/09/2013 Behandeling data ➔ Beanstalkd Message

    Queue ➔ Redis cache ◆ Stationsnaam → ID ➔ Redis set ◆ Trein reeds gescrapet?
  16. Hannes Van De Vreken 09/09/2013 Behandeling data Scraper station ophalen

    treinen toevoegen aan set data opslaan beanstalkd [nieuw in set] job toevoegen
  17. Hannes Van De Vreken 09/09/2013 Behandeling data ➔ Beanstalkd Message

    Queue ➔ Redis cache ◆ Stationsnaam → ID ➔ Redis set ◆ Trein reeds gescrapet? ➔ Redis hash ◆ Elke 5 min: hoeveel treinen onderweg?
  18. ➔ The DataTank (TDT) ◆ Laat toe om gegevens weer

    te geven in • CSV, XML, JSON • Kaartvorm ◆ Implementatie van URL • bvb: /nmbs/liveboard/221.json ? date=20130905&after=09:00&limit=2 • resultaat Behandeling data Hannes Van De Vreken 09/09/2013
  19. Hannes Van De Vreken 09/09/2013 Data harvesting MongoDB TDT API

    Kunstmatige Intelligentie RailTime website Sociale Netwerk-sites Gebruikers-API Applicaties Overzicht
  20. ➔ Neuraal netwerk ➔ Gecreëerd met GNU Octave ◆ Matlab

    syntax ◆ Open Source ◆ Command-line script Voorspellen vertragingen Hannes Van De Vreken 09/09/2013
  21. ➔ Implementatie neuraal netwerk ◆ Outputwaarden ◆ Threshold ◆ Bitpatroon

    ◆ F-score = 2 * precision * recall / (precision + recall) Voorspellen vertragingen Hannes Van De Vreken 09/09/2013
  22. ➔ Implementatie neuraal netwerk ◆ F-score = 2 * precision

    * recall / (precision + recall) ➔ Uitgetest op bestaande data-set: 92% ➔ Test op treinen ‘s Gravenbrakel - Leuven ◆ Voorspelt geen vertragingen: 0% ◆ Vertragingen sporadisch Voorspellen vertragingen Hannes Van De Vreken 09/09/2013
  23. ➔ Mogelijks wél resultaat met behulp van ◆ Gegevens van

    gebruikers ◆ Vertragingen van alle treinen samen ◆ Aanvullende gegevens (treintype, # wagons) ◆ Andere Kunstmatige Intelligentie technieken Voorspellen vertragingen Hannes Van De Vreken 09/09/2013
  24. ➔ API voor gebruikersinteractie d.m.v. PlugID ➔ Vertragingen opgeslagen in

    MongoDB-databank ➔ Neuraal netwerk simulatie met Octave om vertragingen te voorspellen Conclusie Hannes Van De Vreken 09/09/2013
  25. Hannes Van De Vreken 09/09/2013 Data harvesting MongoDB TDT API

    Kunstmatige Intelligentie RailTime website Sociale Netwerk-sites Gebruikers-API Applicaties Overzicht