PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

pgpredict - PostgreSQL में भविष्य कहनेवाला विश्लेषण

हम सभी जानते हैं कि हमारे द्वारा एकत्रित किए गए डेटा का विश्लेषण करने और उससे उपयोगी जानकारी निकालने में सक्षम होना कितना महत्वपूर्ण है। 2UDA उस दिशा में एक कदम है और इसका उद्देश्य डेटा माइनिंग और विश्लेषण (ऑरेंज) के साथ डेटा संग्रहण और प्रबंधन (PostgreSQL) को एक साथ लाना है।
pgpredict विकास में एक परियोजना है और इसका लक्ष्य अगला कदम बनना है जो इसे पूर्ण चक्र में लाएगा। डेटा से शुरू करते हुए (हमारे मामले में डेटाबेस में संग्रहीत), हमें पहले उन विशेषज्ञों तक पहुंच प्रदान करने की आवश्यकता है जो विशेष उपकरणों और विधियों के साथ इसका विश्लेषण कर सकते हैं। लेकिन बाद में, उदाहरण के लिए, जब वे एक भविष्यवाणी मॉडल को प्रशिक्षित करते हैं जो हमारे लिए कुछ महत्वपूर्ण और फायदेमंद हल कर सकता है, तो उन्हें उन परिणामों को वापस बताने में सक्षम होना चाहिए ताकि हम उनका फायदा उठा सकें। यह ठीक वही है जिसे pgpredict हल करने का प्रयास करता है - कुशल और वास्तविक समय निष्पादन के लिए सीधे डेटाबेस के अंदर भविष्य कहनेवाला मॉडल तैनात करना।

प्रोजेक्ट 2UDA की निरंतरता के रूप में शुरू हुआ, जो पहले से ही ऑरेंज को PostgreSQL डेटाबेस में संग्रहीत डेटा के साथ काम करने की अनुमति देता है। जिस चीज की जरूरत थी, वह थी प्रशिक्षित प्रेडिक्टिव मॉडल्स को एक्सपोर्ट करना, उन्हें जहां जरूरत हो वहां ट्रांसफर करना (जैसे प्रोडक्शन सर्वर) और उन्हें तैनात करना। इसलिए प्रोजेक्ट को ऑरेंज के एक्सटेंशन में विभाजित किया गया है जो मॉडल को .json फ़ाइलों में निर्यात कर सकता है, और पोस्टग्रेज़ के लिए जो उन मॉडलों को लोड और चला सकते हैं। चूंकि मॉडल टेक्स्ट फ़ाइलों में संग्रहीत होते हैं, इसलिए उन्हें एक संस्करण नियंत्रण प्रणाली में ट्रैक किया जा सकता है। पोस्टग्रेएसक्यूएल जेसन क्षमताओं का उपयोग करते हुए, जेसन प्रारूप उन्हें लोड करने के बाद डेटाबेस में आसानी से संग्रहीत करने में सक्षम बनाता है।

वर्तमान में सीमित संख्या में भविष्य कहनेवाला मॉडल के लिए एक कार्यशील कार्यान्वयन मौजूद है और यह अभी तक पूरी तरह से अनुकूलन से नहीं गुजरा है। लेकिन यह पहले से ही बहुत अच्छा वादा दिखा रहा है।
इसका परीक्षण करने के लिए, मैंने कुछ स्वतंत्र यादृच्छिक चर (आयु, वेतन, विज़िट) और एक आउटपुट चर (खर्च) के साथ 10M पंक्तियों के साथ काल्पनिक ग्राहकों की एक तालिका तैयार की। ऑरेंज का उपयोग तब तालिका को लोड करने और एक भविष्य कहनेवाला मॉडल प्राप्त करने के लिए किया गया था। क्योंकि यह TABLESAMPLE (एक PostgreSQL 9.5 फीचर) का उपयोग करता है, विभिन्न मापदंडों की कोशिश करता है और सेटिंग्स जल्दी से काम करती हैं (यहां तक ​​​​कि इस परीक्षण की तुलना में बहुत बड़े डेटा के लिए)। इसलिए डेटा वैज्ञानिक अंतःक्रियात्मक रूप से विभिन्न समाधानों का प्रयास कर सकते हैं, उनका मूल्यांकन कर सकते हैं और अंत में एक अच्छे मॉडल के साथ आ सकते हैं। अंतिम रिज रिग्रेशन मॉडल को तब निर्यात किया गया और डेटाबेस में लोड किया गया। वहां इसका वास्तविक समय में उपयोग किया जा सकता है ताकि डेटाबेस में प्रदर्शित होने वाले नए ग्राहकों के लिए खर्च की गई राशि का अनुमान लगाया जा सके।
पीजीबेंच का उपयोग करने से पता चला है कि तालिका से किसी एकल ग्राहक के लिए मौजूदा कॉलम का चयन करते समय 0.086 एमएस की आवश्यकता थी, यह केवल थोड़ा लंबा था स्वतंत्र चर प्राप्त करने के लिए, और खर्च के मूल्य के लिए एक भविष्यवाणी करने के लिए:0.134 एमएस।
10^6 ग्राहकों के लिए खर्च की गई राशि का अनुमान लगाने में 10^6 गुना अधिक समय नहीं लगता है (134 सेकंड) क्योंकि मॉडल इनिशियलाइज़ेशन किया जाता है पहली बार और फिर पुन:उपयोग किया। तो इसमें वास्तव में 13.6 सेकेंड लगे, जिससे यह लगभग 10 गुना तेज हो गया।
ये नंबर मेरे लैपटॉप पर एक साधारण मॉडल के लिए प्राप्त किए गए थे, जिसमें कोड के साथ बहुत अधिक अनुकूलन की क्षमता है। जल्द ही एक अधिक कठोर मूल्यांकन की अपेक्षा करें, जब हम जनता के लिए pgpredict जारी करने के लिए तैयार हो जाएंगे। लेकिन अब भी, मुझे लगता है कि प्रदर्शित दक्षता और उपयोग में आसानी इसे अपने PostgreSQL संचालित डेटा वेयरहाउस के लिए भविष्य कहनेवाला विश्लेषण की तलाश करने वाले संभावित उपयोगकर्ताओं के एक बड़े बहुमत के लिए एक बड़ा लाभ बना देगी।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक्सटेंशन pg_trgm से % ऑपरेटर का उपयोग कैसे करें?

  2. PostgreSQL और C# डेटाटाइप्स

  3. PostgreSQL में उच्च उपलब्धता का प्रबंधन - भाग III:Patroni

  4. कॉलम सूचीबद्ध किए बिना, प्रत्येक कॉलम पर समान एकत्रीकरण कैसे करें?

  5. मैं PostgreSQL क्वेरी के हिस्से के रूप में एक पूर्णांक को स्ट्रिंग में कैसे परिवर्तित करूं?