PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

pgpredict – Analisis prediktif di PostgreSQL

Kita semua menyadari betapa pentingnya untuk dapat menganalisis data yang kita kumpulkan dan mengekstrak informasi yang berguna darinya. 2UDA adalah langkah ke arah itu dan bertujuan untuk menyatukan penyimpanan dan pengelolaan data (PostgreSQL) dengan penambangan dan analisis data (Oranye).
pgpredict adalah proyek dalam pengembangan dan bertujuan untuk menjadi langkah selanjutnya yang akan membawa semuanya ke dalam lingkaran penuh. Dimulai dengan data (dalam kasus kami disimpan dalam database), pertama-tama kami harus memberikan akses ke data tersebut kepada para ahli yang dapat menganalisisnya dengan alat dan metode khusus. Namun setelah itu, ketika misalnya mereka melatih model prediksi yang dapat memecahkan sesuatu yang penting dan bermanfaat bagi kita, mereka harus mampu menyampaikan kembali hasil tersebut sehingga kita dapat memanfaatkannya. Inilah tepatnya yang coba dipecahkan oleh pgpredict – menerapkan model prediktif langsung di dalam database untuk eksekusi yang efisien dan waktu nyata.

Proyek ini dimulai sebagai kelanjutan dari 2UDA, yang sudah memungkinkan Orange digunakan untuk bekerja dengan data yang disimpan dalam database PostgreSQL. Yang diperlukan adalah cara mengekspor model prediktif terlatih, mentransfernya ke tempat yang dibutuhkan (misalnya server produksi) dan menyebarkannya. Jadi proyek dipecah menjadi ekstensi untuk Orange yang dapat mengekspor model ke file .json, dan untuk postgres yang dapat memuat dan menjalankan model tersebut. Karena model disimpan dalam file teks, model dapat dilacak dalam sistem kontrol versi. Format json juga memungkinkan mereka untuk dengan mudah disimpan dalam database setelah memuat, memanfaatkan kemampuan json PostgreSQL.

Saat ini terdapat implementasi yang berfungsi untuk sejumlah model prediktif yang terbatas dan belum mengalami optimasi menyeluruh. Tapi itu sudah menunjukkan janji besar.
Untuk mengujinya, saya membuat tabel pelanggan imajiner dengan 10 juta baris dengan beberapa variabel acak independen (usia, upah, kunjungan) dan variabel keluaran (dibelanjakan). Oranye kemudian digunakan untuk memuat tabel dan mendapatkan model prediktif. Karena menggunakan TABLESAMPLE (fitur PostgreSQL 9.5) mencoba berbagai parameter dan pengaturan bekerja dengan cepat (bahkan untuk data yang jauh lebih besar daripada dalam pengujian ini). Oleh karena itu, ilmuwan data dapat secara interaktif mencoba berbagai solusi, mengevaluasinya, dan menghasilkan model yang baik pada akhirnya. Model regresi ridge terakhir kemudian diekspor dan dimuat ke dalam database. Di sana dapat digunakan secara real time untuk memprediksi jumlah yang dihabiskan untuk pelanggan baru yang muncul di database.
Menggunakan pgbench menunjukkan bahwa saat memilih kolom yang ada untuk satu pelanggan dari tabel membutuhkan 0,086 ms, itu hanya sedikit lebih lama untuk mendapatkan variabel independen, dan membuat prediksi untuk nilai pembelanjaan:0,134 ms.
Memprediksi jumlah pembelanjaan untuk 10^6 pelanggan tidak memerlukan waktu 10^6 kali lebih lama (134 detik) sejak inisialisasi model selesai pertama kali dan kemudian digunakan kembali. Jadi sebenarnya butuh 13,6 detik, membuatnya sekitar 10x lebih cepat.
Angka-angka ini diperoleh untuk model sederhana, di laptop saya, dengan kode yang berpotensi untuk lebih banyak pengoptimalan. Harapkan evaluasi yang lebih ketat segera, ketika kami bersiap untuk merilis pgpredict ke publik. Namun bahkan sekarang, saya pikir efisiensi dan kemudahan penggunaan yang dipamerkan akan menjadikannya keuntungan besar bagi sebagian besar calon pengguna yang mencari analitik prediktif untuk gudang data bertenaga PostgreSQL mereka.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Resolusi milidetik dari DateTime di Ruby

  2. PostgreSQL - klausa GROUP BY

  3. Bagaimana Fungsi CONCAT() Bekerja di PostgreSQL

  4. Komentari karakter/karakter di postgres/postgresql/psql?

  5. Apa pro dan kontra melakukan perhitungan dalam sql vs. di aplikasi Anda?