SQL kullanarak Snowflake'te zaman serisi tahmini
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.
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_forecast
Bu ö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_forecast
SQL sözdizimi: tahmin yapmak için SQL 1-liner- Tahmin raporu: iş ekipleri tarafından tüketilmeye hazır tahmin sonuçları
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_project
Artık çalışma dizininizde oluşturulmuş bir klasör göreceksiniz .
3. Adım: Snowflake oturumunu
Klasörün içinde forecast_project
dosyayı bulun modelstar.config.yaml
ve 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:
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
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');
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 saatY_FORECAST
,YHAT_LOWER
,YHAT_UPPER
(float): tahmin edilen değerin ortalama, alt ve üst bağları (Uncertainty Intervals
anlamları için Sözlük bölümüne bakın).
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:
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.
- 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.
Ö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/