PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

pgpredict – Analyse prédictive dans PostgreSQL

Nous réalisons tous à quel point il est important de pouvoir analyser les données que nous recueillons et d'en extraire des informations utiles. 2UDA est un pas dans cette direction et vise à combiner le stockage et la gestion des données (PostgreSQL) avec l'exploration et l'analyse des données (Orange).
pgpredict est un projet en développement et vise à être la prochaine étape qui bouclera la boucle. Partant des données (dans notre cas stockées dans une base de données), nous devons d'abord en donner accès à des experts qui peuvent les analyser avec des outils et des méthodes spécialisés. Mais ensuite, quand par exemple ils forment un modèle prédictif qui peut résoudre quelque chose d'important et de bénéfique pour nous, ils doivent être capables de transmettre ces résultats afin que nous puissions les exploiter. C'est précisément ce que pgpredict essaie de résoudre - en déployant des modèles prédictifs directement dans la base de données pour une exécution efficace et en temps réel.

Le projet a démarré dans la continuité de 2UDA, qui permet déjà à Orange de travailler avec des données stockées dans une base de données PostgreSQL. Ce qu'il fallait, c'était un moyen d'exporter des modèles prédictifs entraînés, de les transférer là où ils sont nécessaires (par exemple, le serveur de production) et de les déployer. Ainsi, le projet est divisé en extensions pour Orange qui peuvent exporter des modèles vers des fichiers .json, et pour postgres qui peuvent charger et exécuter ces modèles. Étant donné que les modèles sont stockés dans des fichiers texte, ils peuvent être suivis dans un système de contrôle de version. Le format json permet également de les stocker facilement dans la base de données après le chargement, en utilisant les fonctionnalités json de PostgreSQL.

Actuellement, il existe une implémentation fonctionnelle pour un nombre limité de modèles prédictifs et elle n'a pas encore fait l'objet d'une optimisation approfondie. Mais c'est déjà très prometteur.
Pour le tester, j'ai généré une table de clients imaginaires avec 10M de lignes avec quelques variables aléatoires indépendantes (âge, salaire, visites) et une variable de sortie (dépense). Orange a ensuite été utilisé pour charger la table et obtenir un modèle prédictif. Parce qu'il utilise TABLESAMPLE (une fonctionnalité de PostgreSQL 9.5), essayer différents paramètres et paramètres fonctionne rapidement (même pour des données beaucoup plus volumineuses que dans ce test). Le data scientist peut donc essayer différentes solutions de manière interactive, les évaluer et proposer au final un bon modèle. Le modèle final de régression de crête a ensuite été exporté et chargé dans la base de données. Là, il peut être utilisé en temps réel pour prédire le montant dépensé pour les nouveaux clients apparaissant dans la base de données.
L'utilisation de pgbench a montré que si la sélection d'une colonne existante pour un seul client dans la table nécessitait 0,086 ms, elle n'était que légèrement plus longue pour obtenir les variables indépendantes, et faire une prédiction pour la valeur de dépensé :0,134 ms.
Prédire le montant dépensé pour 10^6 clients ne prend pas 10^6 fois plus de temps (134 s) depuis que l'initialisation du modèle est terminée la première fois, puis réutilisé. Cela a donc pris 13,6 s, ce qui le rend environ 10 fois plus rapide.
Ces chiffres ont été obtenus pour un modèle simple, sur mon ordinateur portable, avec un code qui a un potentiel d'optimisation beaucoup plus important. Attendez-vous à une évaluation plus rigoureuse bientôt, lorsque nous serons prêts à publier pgpredict au public. Mais même maintenant, je pense que l'efficacité et la facilité d'utilisation présentées en feraient un grand avantage pour une grande majorité d'utilisateurs potentiels à la recherche d'analyses prédictives pour leurs entrepôts de données alimentés par PostgreSQL.