SQL kullanarak Snowflake'te zaman serisi tahmini

Nov 25 2022
Talep tahmini, tedarik zinciri ve envanter yönetimi, finansal planlama ticari operasyonlar için önemlidir. Modelstar, bunu sadece 1 satır SQL ile Snowflake'te yapmanıza izin verir.

Talep tahmini, tedarik zinciri ve envanter yönetimi, finansal planlama ticari operasyonlar için önemlidir. Modelstar, bunu sadece 1 satır SQL ile Snowflake'te yapmanıza izin verir.

Blog çıktısına genel bakış. Yazarın Resmi.

Zaman Serisi Tahmini ve kullanım durumları nedir?

Zaman serisi tahmini, tarihsel zaman örneklemeli verilere dayalı olarak değerleri tahmin etmeye yönelik bir tekniktir.

Tahmin, iş yönetimi

Tahmin, şirketlerin tedarik zinciri yönetimi, envanter yönetimi (ne kadar ve ne zaman yeniden stoklanacakları konusunda), finansal planlama, ürün yol haritası ve işe alma stratejisi vb. konularda uygun iş kararları almalarına yardımcı olabilir. kaynakların nasıl tahsis edileceğine veya kuyruk rüzgarlarından nasıl yararlanılacağına dair daha iyi bir anlayış.

Tahmin için teknik zorluklar

Tahmin, zaman serisi analizinin bir uygulamasıdır. Dikkate alınması gereken birkaç bileşen vardır:

  • Mevsimsellik: zaman içinde periyodik değişiklikler. Örnek: Yaz ve kış tatili yıllıktır veya sabahları daha yüksek kahve tüketimi günlüktür.
  • Eğilim: sürekli periyodik olmayan değişiklikler. Örnek: Son 5 yıldaki şirket satış büyümesi.
  • Yıkıcı olaylar: ani değişiklikler. Hem tatiller veya hizmet bakımı gibi öngörülebilir faktörler hem de rastgele hatalar veya hatalar gibi öngörülemeyen sorunlar tarafından yönlendirilebilir.

Uygulamanın teknik zorlukları

Python, makine öğrenimi ve tahmin algoritmalarını uygulamak için zengin bir eko sisteme sahiptir. Snowflake'in Python'u SQL'de çalıştırmak için UDF'leri kullanarak Python'u Veri Ambarınıza getiren yeni Snowpark yeteneği, verileriniz üzerinde gerçekleştirebileceğiniz dönüşümler konusunda ezber bozan bir özelliktir. Ancak, tahmin gerçekleştirmek için uçtan uca bir çözüm uygulamak istiyorsanız göz korkutucu ve zaman alıcı olabilir. Modelstar , Python'un süper güçlerini SQL'e getirmek için kolaylaştırılmış bir çözüm sunarak bu sorunu çözüyor.

Modelstar , açık kaynaklı bir projedir ve Snowpark gibi kısa süre önce Snowflake'in sunduğu özellikler üzerine kurulmuştur. Snowflake bilgi işleminde bağımlılıkları, model yapılarını ve dosya G/Ç'yi otomatik olarak işler.

Tahmin için SQL 1-liner

Modelstar , Snowflake içindeki 1 satırlık SQL ile tahmin modellerini göndermenize ve yönetmenize ve modelleme sonuçlarını görselleştirmenize olanak tanır. Başlık altında, Modelstar önceden oluşturulmuş tahmin algoritmaları sağlar ve bunları veritabanınızda bir SQL saklı yordamı olarak gösterir. univariate_time_series_forecastBu örnekte, ( API doc ) kullanacağız . Bu API, endüstride en yaygın kullanılan tahmin algoritmalarından biri olan açık kaynaklı bir kitaplık olan Prophet'e dayanmaktadır.

Bu öğretici, bir zaman serisi tahmin modeli ve bir rapor oluşturmaya yönelik adımları sağlar. Kapsar:

  • Temel kavram: satış tahmini kullanım durumları ve teknoloji hakkında.
  • Modelstar CLI aracı: Modelstar kurulum kılavuzu
  • univariate_time_series_forecastSQL sözdizimi: tahmin yapmak için SQL 1-liner
  • Tahmin raporu: iş ekipleri tarafından tüketilmeye hazır tahmin sonuçları
Çıktı raporumuz. Yazarın Resmi.

SQL ML yolculuğuna

Bu, Modelstar'ı ilk kez kullanıyorsanız, Modelstar'ı kurmak için hızlı bir başlangıç ​​kılavuzudur.

1. Adım: Modelstar'ı

$ pip install modelstar

Kurulumu hızlı bir sürüm kontrolü ile doğrulayın:

$ modelstar --version

Adım #2: Bir Modelstar projesini

$ modelstar init forecast_project

forecast_projectArtık çalışma dizininizde oluşturulmuş bir klasör göreceksiniz .

3. Adım: Snowflake oturumunu

Klasörün içinde forecast_projectdosyayı bulun modelstar.config.yamlve en sevdiğiniz düzenleyiciyle açın. Snowflake hesap bilgilerinizi ve kimlik bilgilerinizi ekleyin. Oturumu herhangi bir adla adlandırmaktan çekinmeyin. Bu örnekte, kullanıyoruz snowflake-test. Bu dosyadaki kimlik bilgileri, Snowflake veri ambarınıza bağlanmak için kullanılır. (Not: modelstar.config.yaml dosyasını CI/CD sürüm kontrolünüze kaydetmeyin.)

# ./modelstar.config.yaml
# MODELSTAR CONFIGURATION FILE
---
sessions:
    - name: snowflake-test
      connector: snowflake
      config:
          account: WQA*****
          username: <username>
          password: <password>
          database: MODELSTAR_TEST
          schema: PUBLIC
          stage: test
          warehouse: COMPUTE_WH

Adım #4: Kar Tanesi

Artık terminalinizden bir Modelstar oturumu başlatabiliriz. Yeni oluşturulan Modelstar projesinin dizini içinde (bizim örneğimizde, bu ./forecast_project/), şunu çalıştırın:

$ modelstar use snowflake-test

Başarılı bir ping, bunun gibi bir şeye yol açmalıdır:

Konsol çıkışı. Yazarın Resmi.

Adım #5: Tahmin algoritmasını Snowflake'e kaydedin

Modelstar, tahmin algoritmasını kullanıma hazır olarak sağlar ve bu algoritmanın bağımlılıklarını yönetir, böylece siz buna gerek kalmazsınız. Bunu Snowflake deponuzda kullanılabilir hale getirmek için aşağıdaki komutu çalıştırın:

$ modelstar register forecast:univariate_time_series_forecast

Konsol çıkışı. Yazarın Resmi.

Adım #6: Örnek satış verilerini Snowflake'e yükleyin (kendi veri kümenizi kullanıyorsanız isteğe bağlıdır )

Tahmin algoritmasını örnek bir satış veri kümesinde denemek istiyorsanız, veri ambarınızda bir veri tablosu oluşturmak için bu komutu çalıştırın. Kendi verilerinizi kullanmak istiyorsanız bu adımı atlayabilirsiniz.

$ modelstar create table sample_data/time_series_data.csv:TS_DATA_TABLE

SQL 1- doğrusal

Bu komut dosyasını bir Kar Tanesi Çalışma Sayfasında

Tahmin modelini oluşturmak için Snowflake'te aşağıdaki komutu kullanın (aşağıdaki örnek, 6. adımda yüklenen örnek verileri kullanır):

CALL UNIVARIATE_TIME_SERIES_FORECAST('TS_DATA_TABLE', 'DS', 'Y', 40, 'M');

Kar Tanesi Kar Görüşü. Yazarın Resmi.

Tahmin algoritmasını kendi verileriniz

Örtünün altında, tahmin algoritması Snowflake'in içinde bir Saklı Yordam olarak çalışır. Aşağıdaki parametreleri alır:

Kendi tahmin periyodunuzu yapılandırmak için birim takma adlarının tam listesi için bu API belgesini kontrol edin.

sonucu kontrol et

Model eğitimi tamamlandıktan sonra, Snowflake Sonuçları penceresinde, başarılı bir çalıştırma şuna benzer bir json dizisi çıkarmalıdır:

{
    "return_table": "RESULT_UNIVARIATE_TIME_SERIES_FORECAST",
    "run_id": "3NvQXnHQqUdYG4Fu"
}

Tahmin verileri tablosunu

Şunu kullanarak çalışmadaki sonuç tablosunu kontrol edelim:

SELECT * FROM RESULT_UNIVARIATE_TIME_SERIES_FORECAST;

  • DS( datetime): tarih saat
  • Y_FORECAST, YHAT_LOWER, YHAT_UPPER(float): tahmin edilen değerin ortalama, alt ve üst bağları ( Uncertainty Intervalsanlamları için Sözlük bölümüne bakın).
  • Kar Tanesi Kar Görüşü. Yazarın Resmi.

Makine öğrenimi yapılarıyla birlikte çalıştırma hakkındaki bilgileri kaydeden bir rapor, Modelstar ile otomatik olarak oluşturulur. Raporu kontrol etmek için yerel bilgisayarınızda şu komutu çalıştırmanız yeterlidir:

$ modelstar check <run_id>

Bahsedildiği gibi, tarayıcınızda bir rapor görünecektir:

Modelstar raporu. Yazarın Resmi.

Raporda neler var?

Rapor 3 bölümden oluşmaktadır:

  • Bu çalıştırmanın meta bilgileri
  • Tahmin tablosu: modelleme kalitesini kontrol etmek ve sonuçları tahmin etmek için.
  • Modelstar raporu. Yazarın Resmi.
  • Bileşen analizi: modelinizin "öğrendiği" eğilim ve mevsimselliği göstermek için, genel bir eğilim ve yıllık ve haftalık mevsimsellik (1 yıl/hafta boyunca döngüsel modeller) dahil.
  • Modelstar raporu. Yazarın Resmi.

Örnek içi ve örnek dışı tahmin: Örnek içi tahminden, tahmin modelinin gerçek verilere ne kadar iyi uyduğunu kontrol edebilirsiniz. Örnek dışı tahmin, geleceğin tahminini gösterir.

Belirsizlik Aralıkları: üst ve alt sınırlar arasındaki bant. Bu, gerçek değerin bu aralığa düşme olasılığının %80 olduğu anlamına gelir. Daha yüksek bir kesinlik gereksinimi, daha geniş bir banda yol açar ( Bartosz'un makalesine bakın ). Geleceğe doğru ilerledikçe belirsizlik de artmakta ve zamanın bir fonksiyonu olarak genişleyen bir banda yol açmaktadır.

Çözüm

Tahmin, iş yönetimi için ilkeldir. Amacımız, bir Makine Öğrenimi modelini eğitmek ve onu kullanarak tahminler yapmak için Snowflake'e bir Tahmin işlevi göndermekti. Tüm bunları sadece 1 satır SQL ile başardık. Bununla birlikte, tahmin analizi ile birlikte çalıştırmanın ayrıntılarını içeren bir çalıştırma raporu oluşturulur. Bu, Modelstar sayesinde mümkün oldu .

Modelstar'ın GitHub deposuna göz atın: en son gelişmelerden haberdar olmak için buraya yıldız ekleyin. Kullanım durumunuz için hata, sorun veya özellik istekleri durumunda Github'a ulaşın veya GitHub'da bir sorun açın .

  • GitHub deposu:https://github.com/modelstar-labs/modelstar
  • Belgeler:https://modelstar.io/docs/quickstart/