PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

pgpredict – Vorhersageanalyse in PostgreSQL

Wir alle wissen, wie wichtig es ist, die gesammelten Daten zu analysieren und nützliche Informationen daraus zu extrahieren. 2UDA ist ein Schritt in diese Richtung und zielt darauf ab, Datenspeicherung und -verwaltung (PostgreSQL) mit Data Mining und Analyse (Orange) zusammenzubringen.
pgpredict ist ein Projekt in der Entwicklung und zielt darauf ab, der nächste Schritt zu sein, der den Kreis schließt. Beginnend mit Daten (in unserem Fall in einer Datenbank gespeichert), müssen wir sie zunächst Experten zugänglich machen, die sie mit spezialisierten Tools und Methoden analysieren können. Aber danach, wenn sie zum Beispiel ein Vorhersagemodell trainieren, das etwas Wichtiges und Nützliches für uns lösen kann, müssen sie in der Lage sein, diese Ergebnisse zurückzugeben, damit wir sie nutzen können. Genau das versucht pgpredict zu lösen – die Bereitstellung von Vorhersagemodellen direkt in der Datenbank für eine effiziente Ausführung in Echtzeit.

Das Projekt startete als Fortsetzung von 2UDA, das es Orange bereits ermöglicht, mit Daten zu arbeiten, die in einer PostgreSQL-Datenbank gespeichert sind. Was benötigt wurde, war eine Möglichkeit, trainierte Vorhersagemodelle zu exportieren, sie dorthin zu übertragen, wo sie benötigt werden (z. B. den Produktionsserver), und sie bereitzustellen. Das Projekt ist also in Erweiterungen für Orange aufgeteilt, die Modelle in .json-Dateien exportieren können, und für Postgres, die diese Modelle laden und ausführen können. Da die Modelle in Textdateien gespeichert sind, können sie in einem Versionskontrollsystem nachverfolgt werden. Das json-Format ermöglicht es ihnen außerdem, sie nach dem Laden einfach in der Datenbank zu speichern, wobei die json-Funktionen von PostgreSQL genutzt werden.

Derzeit gibt es eine funktionierende Implementierung für eine begrenzte Anzahl von Vorhersagemodellen, die noch keiner gründlichen Optimierung unterzogen wurde. Aber es ist bereits sehr vielversprechend.
Um es zu testen, habe ich eine Tabelle mit imaginären Kunden mit 10 Millionen Zeilen mit einigen unabhängigen Zufallsvariablen (Alter, Gehalt, Besuche) und einer Ausgabevariablen (Ausgaben) erstellt. Orange wurde dann verwendet, um die Tabelle zu laden und ein Vorhersagemodell zu erhalten. Da es TABLESAMPLE (eine Funktion von PostgreSQL 9.5) verwendet, funktioniert das Ausprobieren verschiedener Parameter und Einstellungen schnell (selbst bei Daten, die viel größer sind als in diesem Test). Der Data Scientist kann also interaktiv verschiedene Lösungen ausprobieren, bewerten und am Ende ein gutes Modell finden. Das endgültige Ridge-Regressionsmodell wurde dann exportiert und in die Datenbank geladen. Dort kann es in Echtzeit verwendet werden, um die Ausgaben für neue Kunden vorherzusagen, die in der Datenbank erscheinen.
Die Verwendung von pgbench zeigte, dass die Auswahl einer vorhandenen Spalte für einen einzelnen Kunden aus der Tabelle 0,086 ms benötigte, aber nur geringfügig länger war um die unabhängigen Variablen zu erhalten und eine Vorhersage für den ausgegebenen Wert zu treffen:0,134 ms.
Die Vorhersage des ausgegebenen Betrags für 10^6 Kunden dauert nicht 10^6-mal länger (134 s), seit die Modellinitialisierung abgeschlossen ist das erste Mal und dann wiederverwendet. Es dauerte also tatsächlich 13,6 s, was es etwa 10x schneller macht.
Diese Zahlen wurden für ein einfaches Modell auf meinem Laptop erhalten, mit Code, der Potenzial für viel mehr Optimierung hat. Erwarten Sie bald eine strengere Bewertung, wenn wir bereit sind, pgpredict für die Öffentlichkeit freizugeben. Aber selbst jetzt denke ich, dass die gezeigte Effizienz und Benutzerfreundlichkeit es zu einem großen Vorteil für eine große Mehrheit potenzieller Benutzer machen würde, die nach prädiktiven Analysen für ihre PostgreSQL-basierten Data Warehouses suchen.