sql >> Databasteknik >  >> RDS >> PostgreSQL

pgpredict – Predictive analytics i PostgreSQL

Vi inser alla hur viktigt det är att kunna analysera den data vi samlar in och hämta användbar information från den. 2UDA är ett steg i den riktningen och syftar till att sammanföra datalagring och hantering (PostgreSQL) med datautvinning och analys (Orange).
pgpredict är ett projekt under utveckling och siktar på att vara nästa steg som kommer att få det hela att fullbordas. Från och med data (i vårt fall lagrad i en databas) måste vi först ge tillgång till den till experter som kan analysera den med specialiserade verktyg och metoder. Men efteråt, när de till exempel tränar en prediktiv modell som kan lösa något viktigt och fördelaktigt för oss, måste de kunna föra tillbaka dessa resultat så att vi kan utnyttja dem. Detta är precis vad pgpredict försöker lösa – att distribuera prediktiva modeller direkt inuti databasen för effektiv och realtidsexekvering.

Projektet startade som en fortsättning på 2UDA, som redan gör att Orange kan användas för att arbeta med data lagrad i en PostgreSQL-databas. Det som behövdes var ett sätt att exportera utbildade prediktiva modeller, överföra dem till där de behövs (t.ex. produktionsservern) och distribuera dem. Så projektet är uppdelat i tillägg för Orange som kan exportera modeller till .json-filer och för postgres som kan ladda och köra dessa modeller. Eftersom modellerna är lagrade i textfiler kan de spåras i ett versionskontrollsystem. Json-formatet gör det också enkelt att lagra dem i databasen efter laddning, med hjälp av PostgreSQL json-funktioner.

För närvarande finns det en fungerande implementering för ett begränsat antal prediktiva modeller och den har inte genomgått någon grundlig optimering ännu. Men det är redan lovande.
För att testa det genererade jag en tabell över imaginära kunder med 10 miljoner rader med några oberoende slumpvariabler (ålder, lön, besök) och en outputvariabel (förbrukade). Orange användes sedan för att ladda tabellen och få en prediktiv modell. Eftersom den använder TABLESAMPLE (en PostgreSQL 9.5-funktion) fungerar det snabbt att prova olika parametrar och inställningar (även för data som är mycket större än i detta test). Datascientisten kan därför interaktivt prova olika lösningar, utvärdera dem och komma fram till en bra modell i slutändan. Den slutliga åsregressionsmodellen exporterades sedan och laddades in i databasen. Där kan den användas i realtid för att förutsäga det belopp som spenderats för nya kunder som dyker upp i databasen.
Användning av pgbench visade att även om man valde en befintlig kolumn för en enskild kund från tabellen krävde 0,086 ms, men det var bara något längre för att få de oberoende variablerna och göra en förutsägelse för värdet av spenderat:0,134 ms.
Att förutsäga beloppet som spenderas för 10^6 kunder tar inte 10^6 gånger mer tid (134 s) eftersom modellinitieringen är gjord första gången och sedan återanvänds. Så det tog faktiskt 13,6 s, vilket gör det ungefär 10 gånger snabbare.
Dessa siffror erhölls för en enkel modell, på min bärbara dator, med kod som har potential för mycket mer optimering. Förvänta dig en mer rigorös utvärdering snart, när vi gör oss redo att släppa pgpredict till allmänheten. Men även nu tror jag att den uppvisade effektiviteten och användarvänligheten skulle göra det till en stor fördel för en stor majoritet av potentiella användare som letar efter prediktiv analys för sina PostgreSQL-drivna datalager.


  1. Installera PHP med Postgresql på MAC med homebrew

  2. Anslut SQL Server till HubSpot CRM

  3. Spåra synkrona statistikuppdateringar

  4. PostgreSQL 9.6:Parallell Sequential Scan