Всички осъзнаваме колко важно е да можем да анализираме данните, които събираме, и да извличаме полезна информация от тях. 2UDA е стъпка в тази посока и има за цел да обедини съхранението и управлението на данни (PostgreSQL) с извличане на данни и анализ (Orange).
pgpredict е проект в процес на развитие и има за цел да бъде следващата стъпка, която ще доведе до пълен кръг. Започвайки с данни (в нашия случай съхранявани в база данни), първо трябва да дадем достъп до тях на експерти, които могат да ги анализират със специализирани инструменти и методи. Но след това, когато например обучават прогнозен модел, който може да реши нещо важно и полезно за нас, те трябва да могат да предадат тези резултати обратно, за да можем да ги използваме. Точно това се опитва да реши pgpredict – внедряване на прогнозни модели директно в базата данни за ефективно изпълнение в реално време.
Проектът стартира като продължение на 2UDA, което вече позволява на Orange да се използва за работа с данни, съхранявани в база данни на PostgreSQL. Това, което беше необходимо, беше начин за експортиране на обучени прогнозни модели, прехвърлянето им там, където са необходими (например производствения сървър) и тяхното разгръщане. Така проектът е разделен на разширения за Orange, които могат да експортират модели в .json файлове, и за postgres, които могат да зареждат и изпълняват тези модели. Тъй като моделите се съхраняват в текстови файлове, те могат да бъдат проследени в система за контрол на версиите. Форматът json също им позволява лесно да се съхраняват в базата данни след зареждане, като се използват възможностите на PostgreSQL json.
В момента съществува работеща реализация за ограничен брой прогнозни модели и все още не е претърпяла цялостна оптимизация. Но вече показва голямо обещание.
За да го тествам, генерирах таблица с въображаеми клиенти с 10 милиона реда с някои независими произволни променливи (възраст, заплата, посещения) и изходна променлива (изразходвани). След това оранжевото беше използвано за зареждане на таблицата и получаване на прогнозен модел. Тъй като използва TABLESAMPLE (функция на PostgreSQL 9.5), пробването на различни параметри и настройки работи бързо (дори за данни, много по-големи от този тест). Следователно специалистът по данни може интерактивно да изпробва различни решения, да ги оцени и в крайна сметка да излезе с добър модел. След това окончателният модел на регресия на хребет беше експортиран и зареден в базата данни. Там той може да се използва в реално време, за да се предвиди сумата, изразходвана за нови клиенти, появяващи се в базата данни.
Използването на pgbench показа, че докато избирането на съществуваща колона за един клиент от таблицата изисква 0,086 ms, това е само малко по-дълго за да получите независимите променливи и да направите прогноза за стойността на изразходваните:0,134 ms.
Прогнозирането на изразходваната сума за 10^6 клиенти не отнема 10^6 пъти повече време (134 s), тъй като инициализацията на модела е извършена първия път и след това се използва повторно. Така че всъщност отне 13,6 секунди, което го прави около 10 пъти по-бързо.
Тези числа бяха получени за прост модел, на моя лаптоп, с код, който има потенциал за много повече оптимизация. Очаквайте скоро по-строга оценка, когато се подготвим да пуснем pgpredict за обществеността. Но дори и сега мисля, че показаната ефективност и лекота на използване биха го направили голямо предимство за голяма част от потенциалните потребители, които търсят прогнозни анализи за своите хранилища за данни, захранвани с PostgreSQL.