PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

pgp Dự đoán - Phân tích dự đoán trong PostgreSQL

Tất cả chúng ta đều nhận ra tầm quan trọng của việc có thể phân tích dữ liệu mà chúng ta thu thập và trích xuất thông tin hữu ích từ đó. 2UDA là một bước đi theo hướng đó và nhằm mục đích kết hợp việc quản lý và lưu trữ dữ liệu (PostgreSQL) với khai thác và phân tích dữ liệu (Orange).
pgp Dự đoán là một dự án đang được phát triển và nhằm mục đích là bước tiếp theo sẽ mang lại cho tất cả những vòng tròn đầy đủ. Bắt đầu với dữ liệu (trong trường hợp của chúng tôi được lưu trữ trong cơ sở dữ liệu), trước tiên, chúng tôi cần cấp quyền truy cập vào dữ liệu đó cho các chuyên gia có thể phân tích dữ liệu đó bằng các công cụ và phương pháp chuyên biệt. Nhưng sau đó, chẳng hạn khi họ đào tạo một mô hình dự đoán có thể giải quyết điều gì đó quan trọng và có lợi cho chúng ta, thì họ cần có khả năng truyền đạt lại những kết quả đó để chúng ta có thể khai thác chúng. Đây chính xác là những gì pgp Dự đoán cố gắng giải quyết - triển khai các mô hình dự đoán trực tiếp bên trong cơ sở dữ liệu để thực thi hiệu quả và theo thời gian thực.

Dự án bắt đầu như một phần tiếp theo của 2UDA, đã cho phép Orange được sử dụng để làm việc với dữ liệu được lưu trữ trong cơ sở dữ liệu PostgreSQL. Điều cần thiết là một cách để xuất các mô hình dự đoán đã được đào tạo, chuyển chúng đến nơi chúng cần thiết (ví dụ:máy chủ sản xuất) và triển khai chúng. Vì vậy, dự án được chia thành các phần mở rộng cho Orange có thể xuất mô hình sang tệp .json và cho các postgres có thể tải và chạy các mô hình đó. Bởi vì các mô hình được lưu trữ trong các tệp văn bản, chúng có thể được theo dõi trong hệ thống kiểm soát phiên bản. Định dạng json cũng cho phép chúng dễ dàng được lưu trữ trong cơ sở dữ liệu sau khi tải, sử dụng các khả năng của PostgreSQL json.

Hiện tại, có một triển khai đang hoạt động cho một số mô hình dự đoán hạn chế và nó vẫn chưa được tối ưu hóa toàn diện. Nhưng nó đã cho thấy nhiều hứa hẹn.
Để kiểm tra nó, tôi đã tạo một bảng khách hàng tưởng tượng có 10 triệu hàng với một số biến ngẫu nhiên độc lập (tuổi, lương, lượt truy cập) và một biến sản lượng (chi tiêu). Orange sau đó được sử dụng để tải bảng và thu được mô hình dự đoán. Bởi vì nó sử dụng TABLESAMPLE (một tính năng của PostgreSQL 9.5), việc thử các tham số và cài đặt khác nhau hoạt động nhanh chóng (ngay cả đối với dữ liệu lớn hơn nhiều so với trong thử nghiệm này). Do đó, nhà khoa học dữ liệu có thể tương tác thử các giải pháp khác nhau, đánh giá chúng và cuối cùng đưa ra một mô hình tốt. Sau đó, mô hình hồi quy sườn núi cuối cùng được xuất và tải vào cơ sở dữ liệu. Ở đó, nó có thể được sử dụng trong thời gian thực để dự đoán số tiền chi tiêu cho những khách hàng mới xuất hiện trong cơ sở dữ liệu.
Sử dụng pgbench cho thấy rằng trong khi chọn một cột hiện có cho một khách hàng từ bảng yêu cầu 0,086 mili giây, nó chỉ dài hơn một chút để lấy các biến độc lập và đưa ra dự đoán cho giá trị đã chi tiêu:0,134 mili giây.
Dự đoán số tiền chi tiêu cho 10 ^ 6 khách hàng không mất thêm 10 ^ 6 lần (134 giây) kể từ khi khởi tạo mô hình xong lần đầu tiên và sau đó được sử dụng lại. Vì vậy, nó thực sự mất 13,6 giây, làm cho nó nhanh hơn khoảng 10 lần.
Những con số này được lấy cho một mô hình đơn giản, trên máy tính xách tay của tôi, với mã có tiềm năng tối ưu hóa hơn nhiều. Mong rằng sẽ sớm được đánh giá nghiêm ngặt hơn, khi chúng tôi sẵn sàng phát hành pgp Dự đoán cho công chúng. Nhưng ngay cả bây giờ, tôi nghĩ rằng hiệu quả thể hiện và tính dễ sử dụng sẽ làm cho nó trở thành một lợi thế lớn cho phần lớn người dùng tiềm năng đang tìm kiếm phân tích dự đoán cho kho dữ liệu được hỗ trợ PostgreSQL của họ.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bắt đầu với PostgreSQL Streaming Replication

  2. Sự cố khi truy xuất bản ghi có mảng trống

  3. Postgresql intarray error:undefined symbol:pfree

  4. Làm thế nào để tạo tìm kiếm mờ đơn giản chỉ với PostgreSQL?

  5. Postgres COUNT số giá trị cột với INNER JOIN