Vi er alle klar over, hvor vigtigt det er at kunne analysere de data, vi indsamler, og udtrække nyttig information fra dem. 2UDA er et skridt i den retning og sigter mod at samle datalagring og -styring (PostgreSQL) med data mining og analyse (Orange).
pgpredict er et projekt under udvikling og sigter mod at være det næste skridt, der vil bringe det hele i kredsløb. Startende med data (i vores tilfælde gemt i en database), skal vi først give adgang til dem til eksperter, som kan analysere dem med specialiserede værktøjer og metoder. Men bagefter, når de for eksempel træner en forudsigelsesmodel, der kan løse noget vigtigt og gavnligt for os, skal de være i stand til at formidle de resultater tilbage, så vi kan udnytte dem. Det er præcis, hvad pgpredict forsøger at løse – at implementere forudsigende modeller direkte inde i databasen til effektiv og realtidsudførelse.
Projektet startede som en fortsættelse af 2UDA, som allerede gør det muligt at bruge Orange til at arbejde med data gemt i en PostgreSQL-database. Det, der var brug for, var en måde at eksportere trænede forudsigende modeller, overføre dem til, hvor de er nødvendige (f.eks. produktionsserveren) og implementere dem. Så projektet er opdelt i udvidelser til Orange, der kan eksportere modeller til .json-filer, og til postgres, der kan indlæse og køre disse modeller. Fordi modellerne er gemt i tekstfiler, kan de spores i et versionskontrolsystem. Json-formatet gør det også nemt at gemme dem i databasen efter indlæsning, ved at bruge PostgreSQL json-funktioner.
I øjeblikket findes der en fungerende implementering for et begrænset antal prædiktive modeller, og den har endnu ikke gennemgået en grundig optimering. Men det er allerede lovende.
For at teste det genererede jeg en tabel over imaginære kunder med 10M rækker med nogle uafhængige tilfældige variabler (alder, løn, besøg) og en outputvariabel (forbrugt). Orange blev derefter brugt til at indlæse bordet og opnå en prædiktiv model. Fordi det gør brug af TABLESAMPLE (en PostgreSQL 9.5-funktion), virker det hurtigt at prøve forskellige parametre og indstillinger (selv for data, der er meget større end i denne test). Data scientisten kan derfor interaktivt prøve forskellige løsninger, evaluere dem og til sidst komme med en god model. Den endelige ridge-regressionsmodel blev derefter eksporteret og indlæst i databasen. Der kan det bruges i realtid til at forudsige det brugte beløb for nye kunder, der dukker op i databasen.
Ved brug af pgbench viste det, at selvom det krævede 0,086 ms at vælge en eksisterende kolonne for en enkelt kunde fra tabellen, var det kun lidt længere for at få de uafhængige variabler og lave en forudsigelse for værdien af brugt:0,134 ms.
At forudsige det brugte beløb for 10^6 kunder tager ikke 10^6 gange længere tid (134 s), da modelinitieringen er udført første gang og derefter genbrugt. Så det tog faktisk 13,6 s, hvilket gør det omkring 10 gange hurtigere.
Disse tal blev opnået for en simpel model på min bærbare computer med kode, der har potentiale til meget mere optimering. Forvent en mere streng evaluering snart, når vi er klar til at udgive pgpredict til offentligheden. Men selv nu tror jeg, at den udviste effektivitet og brugervenlighed vil gøre det til en stor fordel for et stort flertal af potentielle brugere, der leder efter forudsigende analyser til deres PostgreSQL-drevne datavarehuse.