Ana içeriğe geç

Python ve Snowflake Cortex AI ile Makine Öğrenimi: Bir Rehber

Snowflake Cortex AI hakkında bilgi edinin ve LLM’ler ile makine öğreniminde nasıl kullanılabileceğini öğrenin.

Yapay Zeka ile Keşfedin

AI modeli eğitimi, veri bilimi içinde AI’nin olası kullanım alanlarından biri olarak yükselişte. Daha da özeli, makine öğrenimi Snowflake Cortex AI kullanılarak yapılabilir.

Bu rehberde, Snowflake Cortex AI’nin ne olduğuna ve neler yapabildiğine değineceğiz. Ayrıca Python ve biraz SQL kullanarak makine öğrenimi ve AI’ye nasıl başlanacağına dair basit bir eğitim sunacağız. Snowflake’e yeniyseniz, hız kazanmak için Snowflake’e Giriş kursumuza göz atın.

Snowflake Cortex AI nedir?

Snowflake Cortex AI, Snowflake AI Data Cloud’a entegre güçlü bir özelliktir ve makine öğrenimi (ML) işlemlerinin doğrudan Snowflake ortamında yürütülmesini sağlar. 

Python ML modellerinin Snowflake verileriyle sorunsuz entegrasyonuna olanak tanır; böylece kuruluşlar bulut altyapısından yararlanırken büyük veri kümelerinden içgörü, tahmin ve ileri analitik elde edebilir.

snowflake cortex ai

Kaynak: Snowflake Cortex AI

Snowflake Cortex AI’nin temel özellikleri:

  • Cortex Analyst: Kullanıcıların doğal dil ile verilerle etkileşim kurmasını sağlayan self-servis analitik özelliği.
  • Cortex Search: Kurumsal belgeler içindeki verileri aramak için oluşturulmuş gelişmiş, AI tabanlı arama sistemi.
  • LLM’ler ve Gömme Modelleri: Snowflake Arctic, Meta Llama 3 ve Mistral gibi güçlü LLM’lere sunucusuz mimaride bağlantılar.
  • Cortex İnce Ayar: Yüksek maliyet olmadan LLM performansı sunan özel küçük modelleri etkinleştirir. 

Snowflake Cortex iki ana parçadan oluşur—LLM işlevleri ve ML işlevleri.

LLM işlevleri için şunlara sahipsiniz:

  1. Özetle (Summarize)
  2. Çevir (Translate)
  3. Tamamla (Complete)
  4. Yanıt Çıkar (Extract Answer)
  5. Duygu (Sentiment)
  6. Metni Göm (Embed Text)

Her bir işleve aşağıda daha ayrıntılı bakacağız.

ML işlevleri için şunlara sahipsiniz:

  1. Anomali tespiti: Verinizdeki anormallikleri otomatik olarak tespit eder ve kullanıcıları uyarır.
  2. Tahminleme: Geçmiş verilere dayanarak tahmin yapmak için makine öğrenimi algoritmalarını kullanır.
  3. Sınıflandırma: Verileri farklı kategori veya gruplara ayırır.
  4. Öne çıkan içgörüler:  Belirli bir dönemde metrik değerlerindeki dalgalanmaların nedenlerini belirler.

Snowflake ve işlevlerini nereden öğrenebileceğinizi mi merak ediyorsunuz? Yeni başlayanlar için Snowflake Eğitimi ve Snowflake sertifikasyon rehberi size yardımcı olacaktır.

Neden Snowflake Cortex AI’yi Python ile kullanmalısınız?

Şimdi bu araçları birlikte kullanmanın faydalarına bakalım.

Snowflake Cortex AI ile Python’u birleştirmenin avantajları

Snowflake Cortex AI kullanmanın bazı önemli faydaları şunlardır:

  • Python entegrasyonu: Python ML modellerini doğrudan Snowflake’in bilgi işlem ortamında çalıştırmanıza olanak tanır.
  • Model barındırma: Modeller çıkarım (inference) için barındırılıp sunulabilir.
  • Veri taşıma yok: Modeller Snowflake ortamında çalıştığından, büyük veri kümelerini harici sunuculara taşımaya gerek yoktur.

Kullanım durumları ve uygulamalar

Öncelikle, Snowflake Cortex AI, önemli kaynak yatırımı yapmadan veri bilimi yetkinliklerini geliştirmek isteyen işletmeler için idealdir. Kodsuz ortamıyla, teknik olmayan kullanıcılar bile kolayca ML modelleri geliştirebilir ve dağıtabilir.

Bu, bir veri bilimi ekibi istihdam etmeye veya pahalı LLM’lere yatırım yapmaya bütçesi yetmeyen küçük işletmeler veya girişimler için özellikle kullanışlıdır.

İkinci olarak, Python’u Snowflake’in bilgi işlem ortamına entegre ederek kullanıcılar, mevcut geniş Python makine öğrenimi algoritmaları ve araçları kitaplığından yararlanabilir. Bu da yeni programlama dilleri öğrenmeden daha gelişmiş ve daha doğru modeller oluşturabilecekleri anlamına gelir.

Son olarak, Snowflake ortamını halihazırda benimsemiş şirketler, Cortex AI’nin mevcut veri ambarlarıyla sorunsuz bütünleşmesinden tam olarak yararlanır; ek altyapı veya veri göçüne ihtiyaç duyulmaz.

Snowflake Cortex AI ile şirketler, makine öğrenimini iş süreçlerine kolay ve verimli şekilde uygulayabilir. 

Snowflake Cortex AI ile Başlangıç

Bu eğitimde, Python ve Snowflake Cortex AI kullanarak bir makine öğrenimi hattı (pipeline) kurma sürecini adım adım anlatacağız.

Önkoşullar

Snowflake Cortex AI ile ML üzerinde çalışmaya başlamadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:

Snowflake hesabı oluşturma

Öncelikle, verilerinizin saklanıp işlendiği bir Snowflake örneğine ihtiyacınız olacak. Snowflake web sitesinden kaydolabilirsiniz.

Kayıt formunda tüm hesap bilgilerinizi doldurun ve ikinci sayfada aşağıdaki seçimleri yaptığınızdan emin olun. Bu eğitim için Standard sürümünü ve basitlik ile yeniden üretilebilirlik adına Amazon Web Services’i seçin. Sunucu olarak, mevcut LLM işlevlerinin en geniş seçimi için US West (Oregon) seçin.

snowflake hesabı oluşturma

Bu seçenekleri belirledikten sonra, etkinleştirme e-postasını almak için Get Started’a tıklayın. Hesabınızı etkinleştirmek için e-postanıza gidin ve Snowflake hesabınız kullanıma hazır olacaktır.

Yazılım gereksinimleri

Sırada yazılıma ilişkin bazı diğer gereksinimleri de karşılamanız gerekiyor.

İşte bulundurmanız gerekenlerin basit bir listesi:

  • Python Ortamı: Gerekli paketlerin kurulu olduğu Python 3.x.
  • Snowflake: Python ortamınızı Snowflake hesabınıza bağlamak için Snowflake’in terminal üzerinden kurulması gerekir.
  • VS Code: Python için uygun bir tümleşik geliştirme ortamı (IDE) kullanabilirsiniz. Alternatifler arasında DataLab, Google Colab veya Jupyter Notebook’lar bulunur.

Herhangi bir analize başlamadan önce, kodlama ortamınızın hazır olması için tüm ilgili paketleri kurun.

Gerekli paketleri kurmak için pip kullanabilirsiniz:

pip install snowflake
pip install python-dotenv

Kütüphaneleri kurduktan sonra, çalışmaya başlamak için çalışma klasörünüzü ve dosyalarınızı ayarlamanız gerekir.

Cortex AI Tutorial adlı bir klasör oluşturdum ve aşağıdaki bilgileri içeren yeni bir .env dosyası ekledim:

SNOWFLAKE_ACCOUNT = "<YOUR_ACCOUNT>" # eg. XXXX-XXXX

SNOWFLAKE_USER = "<YOUR_USER>" 

SNOWFLAKE_USER_PASSWORD = "<YOUR_PASSWORD>"

Hesap bilgilerinizi girdikten sonra dosyayı kaydedin ve aynı klasöre bir Python veya Jupyter Notebook dosyası oluşturun.

Snowflake’e Bağlanma

Artık her şey hazır olduğuna göre Python ortamınızı Snowflake’e bağlayalım.

Başlamak için Python dosyanızı açın ve gerekli tüm kütüphaneleri içe aktarın. İşte bunun için kod:

import os
from dotenv import load_dotenv
from snowflake.snowpark import Session
from snowflake.cortex import Summarize, Complete, ExtractAnswer, Sentiment, Translate, EmbedText768

Sonraki adımda, daha önce kaydettiğiniz .env dosyasındaki değişkenleri yüklemeniz gerekir. Bu, Snowflake’in işlevlerini kullanmak için oturum açmasına olanak sağlayacak hesap kimlik bilgilerinizi sunar.

# Loads environment variables from .env
load_dotenv()
connection_params = {
    "account": os.environ["SNOWFLAKE_ACCOUNT"],
    "user": os.environ["SNOWFLAKE_USER"],
    "password": os.environ["SNOWFLAKE_USER_PASSWORD"],
}

Değişkenleri kullanarak bağlandıktan sonra bir Snowflake oturumu ayarlamanız gerekir. Bu nesne, tüm isteklerinizi yönetecektir. 

# Creates a Snowflake session

snowflake_session = Session.builder.configs(connection_params).create()

Snowflake Cortex AI LLM İşlevleri

Cortex AI içindeki LLM işlevleri, kullanıcıların kendi AI modellerini geliştirmesine gerek kalmadan LLM’lerin potansiyelinden yararlanmalarını sağlar.

Bu işlevler, ortalama bir analitik kullanıcısına temel görevler aracılığıyla AI destekli analiz sunar.

Snowflake Cortex’in sunduğu işlevler şunlardır:

1. SUMMARIZE

Özetleme işlevi, verilen girdi temelinde verilerin bir özetini üretmek için kullanılır.

Anahtar bilgileri belirlemek ve bunları yoğunlaştırılmış bir biçimde sunmak için LLM’leri kullanır.

Örneğin, uzun bir metin belgeniz varsa ve içeriğine hızlıca göz atmak istiyorsanız, özetleme işlevini kullanarak önemli noktaları yakalayan kısa bir özet alabilirsiniz. Bu, zaman kazandırır ve büyük miktarda verinin daha hızlı analiz edilmesini sağlar.

Bu yazı yazıldığı sırada giriş dili şu an için İngilizce ile sınırlıdır.

Referans için aşağıdaki koda bakın:

# Defines the Summarize LLM Function
def summarize(user_text):
    summary = Summarize(text=user_text, session=snowflake_session)
    return summary

2. TRANSLATE

Çeviri işlevi, metni bir dilden başka bir dile dönüştürmek için kullanılır.

Metni doğru şekilde çevirmek için makine öğrenimi algoritmaları ve istatistiksel modellerden yararlanır.

Farklı dillerdeki veriler veya belgelerle çalışırken iletişimi ve anlamayı kolaylaştırdığı için kullanışlıdır.

Örneğin, İspanyolca yazılmış bir raporu İngilizce konuşan bir kitleye sunmanız gerekiyorsa, çeviri işlevini kullanarak metni hızla dönüştürebilirsiniz. Bu, manuel çeviri ihtiyacını ortadan kaldırır ve zaman kazandırır.

Referans için aşağıdaki koda bakın:

# Defines the Translate LLM Function
def translate(user_text):
    translation = Translate(
        text=user_text, from_language="en", to_language="ko", session=snowflake_session
    )
    return translation

3. COMPLETE

Tamamlama işlevi, belirli görevleri yerine getirmek için kullanılabilen çok yönlü bir işlemdir. Bu, AI modelini bir görevi yerine getirmesi için gereken bilgileri sunmaya yönlendiren cümle istemleri aracılığıyla yapılır.

Referans için aşağıdaki koda bakın:

# Defines the Complete LLM Function
def complete(user_text):
    completion = Complete(
        model="snowflake-arctic",
        prompt=f"Provide 3 relevant keywords from the following text: {user_text}",
        session=snowflake_session,
    )
    return completion

4. EXTRACT_ANSWER

Yanıt çıkarma işlevi, modele verilen soruya göre bir yanıt döndürür. Girdi, İngilizce olarak bir dize veya JSON biçiminde olmalıdır.

Referans için aşağıdaki koda bakın:

# Defines the Extract Answer LLM Function
def extract_answer(user_text):
    answer = ExtractAnswer(
        from_text=user_text,
        question="What are some reasons why young adult South Koreans love coffee?",
        session=snowflake_session,
    )
    return answer

5. SENTIMENT

Duygu analizi işlevi, verilen metnin duygu durumuna göre nicel bir değer döndürür. Çıktı -1 ile 1 arasında bir değerdir. -1 en olumsuz, 1 en olumlu ve 0 civarı nötrdür.

Referans için aşağıdaki koda bakın:

# Defines the Sentiment LLM Function
def sentiment(user_text):
    sentiment = Sentiment(text=user_text, session=snowflake_session)
    return sentiment

6. EMBED_TEXT

Metni gömme işlevleri EMBED_TEXT_768 ve EMBED_TEXT_1024 işlevlerini içerir. Sırasıyla 768 ve 1024 boyutlu vektör gömmeleri oluştururlar.

EMBED_TEXT_768 işlevleri için referans kodu aşağıdadır:

# Defines the Embed Text LLM Function
def embed_text(user_text):
    embed_text = EmbedText768(text=user_text, model='snowflake-arctic-embed-m', session=snowflake_session)
    return embed_text

Şimdi hepsini bir ana işlevde birleştirip bir örnek metin üzerinde çalıştırarak sonuçları görelim.

Modele girdi olarak aşağıda gösterildiği gibi basit, kısa bir metin kullandım:

snowflake llm işlevleri örnek metin girişi

Kopyalayıp yapıştırmayı kolaylaştırmak için metin burada:

user_text = """
        Young adults in South Korea are embracing coffee as a blend of energy, comfort, and culture. 
        Coffee isn't just about staying awake during demanding studies or work; it’s a cherished part of daily routines. 
        With South Korea's bustling café culture, coffee shops have become popular spaces for socializing, studying, 
        or just taking a break from the fast-paced city life. 
        The diversity of flavors and trendy cafés also offers a unique, 
        stylish experience that fits right into the evolving lifestyle of young adults, 
        who seek both connection and personal moments in the midst of it all.
    """

Şimdi kodu çalıştıralım. Sadece birkaç saniye sürmeli.

İşte sonuçlar:

snowflake cortex llm çıktı

Gördüğünüz gibi, AI sağladığımız metne göre ihtiyaç duyduğumuz tüm sonuçları verdi. Bir özet oluşturdu, metnimi Korece’ye çevirdi, metnime dayalı üç anahtar kelime verdi ve sorularıma dayalı bazı yanıtlar sağladı.

Snowflake Cortex AI Makine Öğrenimi İşlevleri

Cortex AI ayrıca yalnızca SQL kullanarak çalıştırılabilen ML işlevlerine de sahiptir. İşte sunduğu birkaç işlev.

1. Anomali tespiti

Anomali tespiti, verinizin beklenen davranışına uymayan olağandışı örüntüleri belirlemek için gereklidir. Snowflake, veri kümelerinizdeki aykırı değerleri hızlıca belirlemenize olanak tanıyan gradyan artırma makinesi (GBM) tabanlı yerleşik makine öğrenimi işlevleri sunarak anomali tespitini basitleştirir.

Anomali tespiti özellikle şu görevler için faydalıdır:

  • İşlem verilerinde dolandırıcılığın tespiti.
  • Olağandışı kullanıcı davranışlarının belirlenmesi.
  • Sistem performansındaki anormallikler için zaman serisi verilerinin izlenmesi.

Anomali tespiti yapmak için Snowflake sınıfı ANOMALY_DETECTION (SNOWFLAKE.ML) kullanılabilir. Bu komut, bir anomali tespiti model nesnesi oluşturur. Bu adım, modelinizi eğitim verilerine uydurur.

Bunu şu şekilde kullanabilirsiniz:

CREATE [ OR REPLACE ] SNOWFLAKE.ML.ANOMALY_DETECTION <model_name>(
  INPUT_DATA => <reference_to_training_data>,
  [ SERIES_COLNAME => '<series_column_name>', ]
  TIMESTAMP_COLNAME => '<timestamp_column_name>',
  TARGET_COLNAME => '<target_column_name>',
  LABEL_COLNAME => '<label_column_name>',
  [ CONFIG_OBJECT => <config_object> ]
)
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ COMMENT = '<string_literal>' ]

Nesneyi oluşturduktan sonra anomali tespiti yapmak için <model_name>!DETECT_ANOMALIES yöntemini kullanabilirsiniz,

<model_name>!DETECT_ANOMALIES(
  INPUT_DATA => <reference_to_data_to_analyze>,
  TIMESTAMP_COLNAME => '<timestamp_column_name>',
  TARGET_COLNAME => '<target_column_name>',
  [ CONFIG_OBJECT => <configuration_object>, ]
  [ SERIES_COLNAME => '<series_column_name>' ]
)

Bu, yöntemin aykırı değerleri tespit ettiği asıl tahmin adımıdır.

Aşağıda bir veri kümesi kullanarak anomali tespitinin nasıl yapılabileceğine dair bir örnek yer almaktadır.

Öncelikle sol sekmeden Data’ya gidip Add Data’yı, ardından Load data into a Table’ı seçerek bir veritabanı oluşturabilirsiniz.

snowflake veritabanı ekleme

Açılan pencerede + Database’e tıklayın ve veritabanınıza bir ad verin. Create’e tıklayın, ardından ana açılır pencerede Cancel’a tıklayın.

yeni snowflake veritabanı oluşturma

Bu, çalışabileceğiniz boş bir veritabanı oluşturacaktır.

Aşağıdaki örnekler Snowflake Dokümantasyonundan uyarlanmıştır.

Anomali tespitine başlamak için yeni bir SQL çalışma sayfasına gidin, veri kaynağı olarak yeni veritabanınızı seçin ve bir tablo oluşturmak için aşağıdaki kodu yapıştırın:

CREATE OR REPLACE TABLE historical_sales_data (

  store_id NUMBER, item VARCHAR, date TIMESTAMP_NTZ, sales FLOAT, label BOOLEAN,

  temperature NUMBER, humidity FLOAT, holiday VARCHAR);

// Creating the dataset
INSERT INTO historical_sales_data VALUES
  (1, 'jacket', to_timestamp_ntz('2020-01-01'), 2.0, false, 50, 0.3, 'new year'),
  (1, 'jacket', to_timestamp_ntz('2020-01-02'), 3.0, false, 52, 0.3, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-03'), 5.0, false, 54, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-04'), 30.0, true, 54, 0.3, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-05'), 8.0, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-06'), 6.0, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-07'), 4.6, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-08'), 2.7, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-09'), 8.6, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-10'), 9.2, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-11'), 4.6, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-12'), 7.0, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-13'), 3.6, false, 55, 0.2, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-14'), 8.0, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-01'), 3.4, false, 50, 0.3, 'new year'),
  (2, 'umbrella', to_timestamp_ntz('2020-01-02'), 5.0, false, 52, 0.3, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-03'), 4.0, false, 54, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-04'), 5.4, false, 54, 0.3, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-05'), 3.7, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-06'), 3.2, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-07'), 3.2, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-08'), 5.6, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-09'), 7.3, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-10'), 8.2, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-11'), 3.7, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-12'), 5.7, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-13'), 6.3, false, 55, 0.2, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-14'), 2.9, false, 55, 0.2, null);

Kodunuz şu şekilde bir SQL çalışma sayfasına gitmelidir:

anomali tespiti SQL çalışma sayfası

Bunu, new_sales_data adlı bir tablo oluşturmak üzere aşağıdaki ifadeler izler.

// Creating a new table and adding training data
CREATE OR REPLACE TABLE new_sales_data (
  store_id NUMBER, item VARCHAR, date TIMESTAMP_NTZ, sales FLOAT,
  temperature NUMBER, humidity FLOAT, holiday VARCHAR);
INSERT INTO new_sales_data VALUES
  (1, 'jacket', to_timestamp_ntz('2020-01-16'), 6.0, 52, 0.3, null),
  (1, 'jacket', to_timestamp_ntz('2020-01-17'), 20.0, 53, 0.3, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-16'), 3.0, 52, 0.3, null),
  (2, 'umbrella', to_timestamp_ntz('2020-01-17'), 70.0, 53, 0.3, null);

Şimdi anomali tespiti modelini oluşturun:

// Creating anomaly detection model object
CREATE OR REPLACE VIEW view_with_training_data
  AS SELECT date, sales FROM historical_sales_data
    WHERE store_id=1 AND item='jacket';
CREATE OR REPLACE SNOWFLAKE.ML.ANOMALY_DETECTION basic_model(
  INPUT_DATA => TABLE(view_with_training_data),
  TIMESTAMP_COLNAME => 'date',
  TARGET_COLNAME => 'sales',
  LABEL_COLNAME => '');

Bu, aşağıda gösterildiği gibi bir model oluşturulduğunu belirten bir sonuç döndürmelidir.

anomali tespiti modeli

Sonraki adımda, nesne modelini kullanarak bazı tespitler yapalım.

// Perform anomaly detection
CREATE OR REPLACE VIEW view_with_data_to_analyze
  AS SELECT date, sales FROM new_sales_data
    WHERE store_id=1 and item='jacket';
CALL basic_model!DETECT_ANOMALIES(
  INPUT_DATA => TABLE(view_with_data_to_analyze),
  TIMESTAMP_COLNAME =>'date',
  TARGET_COLNAME => 'sales'
);

Tespitin çıktısı şu şekildedir:

anomali tespiti çıktı sonucu

2. Sınıflandırma

Sınıflandırma verilerin önceden tanımlanmış sınıflara ayrılmasını içerir. Snowflake ile verileri doğrudan Snowflake içinden sınıflandırabilir, böylece verileri harici ML ortamlarına aktarma ihtiyacını ortadan kaldırabilirsiniz. 

snowflake sınıflandırma modeli

Başlamak için aşağıdaki kodla bir örnek veri kümesi oluşturun:

// Creating binary class dataset
CREATE OR REPLACE TABLE training_purchase_data AS (
    SELECT
        CAST(UNIFORM(0, 4, RANDOM()) AS VARCHAR) AS user_interest_score,
        UNIFORM(0, 3, RANDOM()) AS user_rating,
        FALSE AS label,
        'not_interested' AS class
    FROM TABLE(GENERATOR(rowCount => 100))
    UNION ALL
    SELECT
        CAST(UNIFORM(4, 7, RANDOM()) AS VARCHAR) AS user_interest_score,
        UNIFORM(3, 7, RANDOM()) AS user_rating,
        FALSE AS label,
        'add_to_wishlist' AS class
    FROM TABLE(GENERATOR(rowCount => 100))
    UNION ALL
    SELECT
        CAST(UNIFORM(7, 10, RANDOM()) AS VARCHAR) AS user_interest_score,
        UNIFORM(7, 10, RANDOM()) AS user_rating,
        TRUE AS label,
        'purchase' AS class
    FROM TABLE(GENERATOR(rowCount => 100))
);
CREATE OR REPLACE table prediction_purchase_data AS (
    SELECT
        CAST(UNIFORM(0, 4, RANDOM()) AS VARCHAR) AS user_interest_score,
        UNIFORM(0, 3, RANDOM()) AS user_rating
    FROM TABLE(GENERATOR(rowCount => 100))
    UNION ALL
    SELECT
        CAST(UNIFORM(4, 7, RANDOM()) AS VARCHAR) AS user_interest_score,
        UNIFORM(3, 7, RANDOM()) AS user_rating
    FROM TABLE(GENERATOR(rowCount => 100))
    UNION ALL
    SELECT
        CAST(UNIFORM(7, 10, RANDOM()) AS VARCHAR) AS user_interest_score,
        UNIFORM(7, 10, RANDOM()) AS user_rating
    FROM TABLE(GENERATOR(rowCount => 100))
);

Eğitim verileri amacıyla yeni bir görünüm (view) oluşturalım.

// Creating view for training data
CREATE OR REPLACE view binary_classification_view AS
    SELECT user_interest_score, user_rating, label
FROM training_purchase_data;
SELECT * FROM binary_classification_view ORDER BY RANDOM(42) LIMIT 5;

Bu görünüm aşağıdaki sonuçları üretmelidir:

sınıflandırma eğitim verileri

Şimdi modelimizi eğitim verilerimize göre eğitelim:

// Training a binary classification model
CREATE OR REPLACE SNOWFLAKE.ML.CLASSIFICATION model_binary(
    INPUT_DATA => SYSTEM$REFERENCE('view', 'binary_classification_view'),
    TARGET_COLNAME => 'label'
);

Sınıflandırma yapmak için PREDICT yöntemini kullanın:

// Performing prediction using PREDICT method
SELECT model_binary!PREDICT(INPUT_DATA => {*})
    AS prediction FROM prediction_purchase_data;

Tahmin şu şekilde görünür:

sınıflandırma işlevi sonucu

Daha güzel biçimlendirmek için şu SQL ifadesini kullanın:

// Formatting SQL predictions
SELECT *, model_binary!PREDICT(INPUT_DATA => {*})
    AS predictions FROM prediction_purchase_data;

Tahminler için şu düzenli çıktı biçimine ulaşmalısınız:

sınıflandırma işlevi sonucu biçimlendirilmiş

3. Öne çıkan içgörüler

Top Insights, zaman serisi analizi yoluyla metriklerinizdeki dalgalanmaları zaman içinde izlemek için bir izleme aracıdır. Karar ağacı modeli kullanarak, Top Insights belirli bir metrikin artışına veya azalmasına en çok katkıda bulunan faktörleri tanımlayabilir.

snowflake top insights modeli

Bu işlevi kullanarak bir zaman serisi analizine örnek bakalım.

Öncelikle bir veri kümesi oluşturalım:

// Creating dataset
CREATE OR REPLACE TABLE input_table(
  ds DATE, metric NUMBER, dim_country VARCHAR, dim_vertical VARCHAR);
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'usa' AS dim_country,
    'tech' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'usa' AS dim_country,
    'auto' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, seq4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'usa' AS dim_country,
    'fashion' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'usa' AS dim_country,
    'finance' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'canada' AS dim_country,
    'fashion' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'canada' AS dim_country,
    'finance' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'canada' AS dim_country,
    'tech' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'canada' AS dim_country,
    'auto' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'france' AS dim_country,
    'fashion' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'france' AS dim_country,
    'finance' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'france' AS dim_country,
    'tech' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 4, 1)) AS ds,
    UNIFORM(1, 10, RANDOM()) AS metric,
    'france' AS dim_country,
    'auto' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
-- Data for the test group
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 8, 1)) AS ds,
    UNIFORM(300, 320, RANDOM()) AS metric,
    'usa' AS dim_country,
    'auto' AS dim_vertica
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
INSERT INTO input_table
  SELECT
    DATEADD(day, SEQ4(), DATE_FROM_PARTS(2020, 8, 1))  AS ds,
    UNIFORM(400, 420, RANDOM()) AS metric,
    'usa' AS dim_country,
    'finance' AS dim_vertical
  FROM TABLE(GENERATOR(ROWCOUNT => 365));
// Creating new view and adding labels to timestamps
CREATE OR REPLACE VIEW input_view AS (
    SELECT
        metric,
        dim_country as country,
        dim_vertical as vertical,
        ds >= '2021-01-01' AS label
    FROM input_table
);

Sonraki adımda, tahmin için model nesnesini oluşturmamız gerekir. Bu, GET_DRIVERS yöntemine erişmek için gereklidir.

// Creating the model
CREATE OR REPLACE SNOWFLAKE.ML.TOP_INSIGHTS my_insights_model()

Son olarak, tahmin için GET_DRIVERS yöntemini çağırın.

// Performing prediction using GET_DRIVERS method
CALL my_insights_model!GET_DRIVERS(
  INPUT_DATA => TABLE(input_view),
  LABEL_COLNAME => 'label',
  METRIC_COLNAME => 'metric'
);

Şu sonuçları almalısınız:

top insights işlevi sonucu

4. Tahminleme

Tahminleme, geçmiş verilere dayalı olarak gelecekteki değerleri öngörmeniz gerektiğinde kritik önemdedir. İster satış tahmini, ister enerji tüketimi ya da web trafiği öngörüsü olsun, Snowflake’in yerleşik işlevleri bu görevleri çok daha kolay hale getirir.

snowflake tahminleme modeli

Örneğimizde tek bir seri üzerinde tahminleme yapalım:

// Creating the dataset
CREATE OR REPLACE TABLE sales_data (store_id NUMBER, item VARCHAR, date TIMESTAMP_NTZ,
  sales FLOAT, temperature NUMBER, humidity FLOAT, holiday VARCHAR);
INSERT INTO sales_data VALUES
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-01'), 2.0, 50, 0.3, 'new year'),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-02'), 3.0, 52, 0.3, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-03'), 4.0, 54, 0.2, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-04'), 5.0, 54, 0.3, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-05'), 6.0, 55, 0.2, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-06'), 7.0, 55, 0.2, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-07'), 8.0, 55, 0.2, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-08'), 9.0, 55, 0.2, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-09'), 10.0, 55, 0.2, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-10'), 11.0, 55, 0.2, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-11'), 12.0, 55, 0.2, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-12'), 13.0, 55, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-01'), 2.0, 50, 0.3, 'new year'),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-02'), 3.0, 52, 0.3, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-03'), 4.0, 54, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-04'), 5.0, 54, 0.3, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-05'), 6.0, 55, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-06'), 7.0, 55, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-07'), 8.0, 55, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-08'), 9.0, 55, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-09'), 10.0, 55, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-10'), 11.0, 55, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-11'), 12.0, 55, 0.2, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-12'), 13.0, 55, 0.2, NULL);
-- Future values for additional columns (features)
CREATE OR REPLACE TABLE future_features (store_id NUMBER, item VARCHAR,
  date TIMESTAMP_NTZ, temperature NUMBER, humidity FLOAT, holiday VARCHAR);
INSERT INTO future_features VALUES
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-13'), 52, 0.3, NULL),
  (1, 'jacket', TO_TIMESTAMP_NTZ('2020-01-14'), 53, 0.3, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-13'), 52, 0.3, NULL),
  (2, 'umbrella', TO_TIMESTAMP_NTZ('2020-01-14'), 53, 0.3, NULL);

Ardından, eğitim verilerini veri kümesinden ayıralım.

// Creating a view for training data
CREATE OR REPLACE VIEW v1 AS SELECT date, sales
  FROM sales_data WHERE store_id=1 AND item='jacket';
SELECT * FROM v1;

Tahminlemeye başlamadan önce, seçtiğiniz eğitim verilerine dayalı olarak modelinizi eğitmeniz gerekir.

Bunu şu şekilde yapabilirsiniz:

// Training a forecasting model
CREATE SNOWFLAKE.ML.FORECAST model1(
  INPUT_DATA => TABLE(v1),
  TIMESTAMP_COLNAME => 'date',
  TARGET_COLNAME => 'sales'
);

Son olarak, tahmin için FORECAST yöntemini çağırarak tahmin adımını gerçekleştirebilirsiniz.

// Performing the forecast by calling the FORECAST method
call model1!FORECAST(FORECASTING_PERIODS => 5);

Tahminimizin ortaya çıkan çıktısı budur.

tahminleme işlevi sonucu

Snowflake’te ML Modellerini İzleme

Model performansını izlemek, Snowflake’te üçüncü taraf entegrasyonları (ör. Tableau) ile panolar oluşturarak veya Snowflake günlüklerini sorgulayarak yapılabilir. Doğruluk (accuracy), kesinlik (precision) ve geri çağırma (recall) gibi bazı yararlı metrikler modellerin takibi için kullanılabilir.

Sonuç

Snowflake Cortex AI, modellerin Snowflake platformundan sorunsuz entegrasyonunu sağlayarak makine öğrenimini basitleştirir. Bu eğitim, Snowflake Cortex AI ve Snowflake Cortex ML işlevlerini kullanma konusunda size yol gösterdi.

Bu çözüm, Snowflake’in ölçeklenebilirliğinden ve Python’un esnekliğinden yararlanır; verileri bulut dışına taşımadan makine öğrenimi uygulamak isteyen kuruluşlar için idealdir.

Snowflake hakkında daha fazla kaynak mı arıyorsunuz? Snowflake Yeni Başlayanlar Eğitimi ve Snowpark rehberi hoşunuza gidecektir. Daha kapsamlı bir şey arıyorsanız Snowflake’e Giriş kursu sizin için doğru seçim olabilir.

Python ve Snowflake Cortex ile Makine Öğrenimi SSS

Python makine öğrenimi ve AI için iyi midir?

Python; PyTorch, TensorFlow ve Keras gibi güçlü kütüphaneleri sayesinde makine öğrenimi ve AI için uygundur. Snowflake AI ve ML işlevlerine de Python üzerinden erişilebilir.

AI ve makine öğrenimi için Python nasıl kullanılır?

Python, yerleşik kütüphanelerle veya Snowflake’in LLM ve ML işlevleri aracılığıyla AI ve makine öğrenimi için kullanılabilir.

Snowflake Cortex ML tabanlı işlevler nasıl kullanılır?

Snowflake Cortex ML tabanlı işlevleri, her bir işlevin ilgili yöntemleri SQL ile çağrılarak kullanılabilir.

Snowflake AI modelleri nedir?

Snowflake AI modelleri, Snowflake Cortex’i ve ilgili işlevlerini güçlendiren büyük dil modelleridir.

Bazı Snowflake makine öğrenimi örnekleri nelerdir?

Snowflake makine öğrenimi işlevleri; anomali tespiti, tahminleme, öne çıkan içgörüler elde etme ve sınıflandırma gibi çeşitli uygulamalara uygulanabilir.

Austin Chia

Yazar

Austin Chia

Ben Austin, sağlık sektöründe veri bilimci ve veri analisti olarak yıllara dayanan deneyime sahip bir blogger ve teknoloji yazarıyım. Biyoloji geçmişiyle başladığım teknoloji yolculuğumda, şimdi teknoloji blogum aracılığıyla başkalarının da aynı geçişi yapmasına yardımcı oluyorum. Teknolojiye olan tutkum, onlarca SaaS şirketine yazılı katkılar sunmama, başkalarına ilham vermeme ve deneyimlerimi paylaşmama vesile oldu.

Konular

İlgili