1. Genel Bakış
BigQuery ML (BQML), kullanıcıların SQL sorgularını kullanarak BigQuery'de makine öğrenimi modelleri oluşturup yürütmesine olanak tanır. Hedef, SQL uygulayıcılarının mevcut araçlarını kullanarak model oluşturmasını mümkün kılarak makine öğrenimini demokratikleştirmek ve veri taşıma ihtiyacını ortadan kaldırarak geliştirme hızını artırmaktır.
Oluşturacaklarınız
Ziyaretçilerin işlem yapıp yapmayacağını tahmin eden bir model oluşturmak için örnek Analytics 360 veri kümesini kullanacaksınız.
Neler öğreneceksiniz?
BigQuery'de makine öğrenimi modelleri oluşturma, değerlendirme ve kullanma
Gerekenler
2. Kurulum ve Gereksinimler
Kendi hızınızda ortam kurulumu
- Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.
Tüm Google Cloud projelerinde benzersiz bir ad olan proje kimliğini unutmayın (yukarıdaki ad zaten alınmış ve size uygun olmayacaktır!). Bu kod laboratuvarın ilerleyen bölümlerinde PROJECT_ID
olarak adlandırılacaktır.
- Sonraki adımda, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.
Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. "Temizleme" bölümündeki talimatları izlediğinizden emin olun. bölümünde, bu eğiticinin dışında faturalandırmayla karşılaşmamanız için kaynakları nasıl kapatacağınız konusunda tavsiyelerde bulunuyoruz. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.
BigQuery Konsolunu Açma
Google Developers Console'da, ekranın sol üst kısmındaki Menü simgesini tıklayın.
Menüyü en alta kaydırın ve BigQuery: seçeneğini tıklayın.
Bu işlem, BigQuery konsolunu yeni bir tarayıcı sekmesinde şu şekilde açar:
Ama burada hiçbir şey yok. Neyse ki BigQuery'de keşfedebileceğiniz tonlarca herkese açık veri kümesi vardır.
3. Veri kümesi oluşturma
Veri kümesi oluşturmak için proje adınızın yanındaki oku tıklayın ve yeni veri kümesi oluştur'u seçin.
Ardından veri kümenize bqml_codelab adını verin ve Tamam'ı tıklayın.
4. Model Oluşturma
Analytics 360 için mantıksal regresyon
Şimdi görevimize geçelim. Burada, ziyaretçinin bir işlem yapıp yapmayacağını tahmin etmek için nasıl bir model oluşturabileceğiniz açıklanmaktadır.
#standardSQL CREATE OR REPLACE MODEL `bqml_codelab.sample_model` OPTIONS(model_type='logistic_reg') AS SELECT IF(totals.transactions IS NULL, 0, 1) AS label, IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(geoNetwork.country, "") AS country, IFNULL(totals.pageviews, 0) AS pageviews FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20160801' AND '20170631' LIMIT 100000;
Burada, bir işlemin yapılıp yapılmadığına ilişkin ölçüt olarak ziyaretçinin cihazının işletim sistemini, söz konusu cihazın mobil cihaz olup olmadığını, ziyaretçinin ülkesini ve sayfa görüntüleme sayısını kullanırız.
Bu örnekte, "codelab" veri kümesinin ve "sample_model"dir. adı da modelimizin adıdır. Belirtilen model türü ikili mantıksal regresyondur. Bu örnekte, label
ile uyum sağlamaya çalışıyoruz. Yalnızca 1 sütunla ilgileniyorsanız input_label_cols
öğesini ayarlamanın alternatif bir yolu olduğunu unutmayın. Ayrıca eğitim verilerimizi 1 Ağustos 2016 - 31 Haziran 2017 tarihleri arasında toplanan verilerle sınırlandırıyoruz. Bunu, son ayın verilerini "tahmin" amacıyla kaydetmek için yapıyoruz. Ayrıca bize zaman kazandırmak için 100.000 veri noktasını sınırlandırıyoruz. Aceleniz yoksa son satırı kaldırabilirsiniz.
CREATE MODEL komutunu çalıştırmak, eşzamansız olarak çalışacak bir Sorgu İşi oluşturur. Böylece, örneğin, BigQuery kullanıcı arayüzü penceresini kapatabilir veya yenileyebilirsiniz.
[İsteğe bağlı] Model bilgileri ve eğitim istatistikleri
İlgileniyorsanız kullanıcı arayüzünde bqml_codelab veri kümesinin altındaki sample_model'i tıklayarak model hakkında bilgi edinebilirsiniz. Ayrıntılar bölümünde, modeli oluşturmak için kullanılan bazı temel model bilgilerini ve eğitim seçeneklerini bulabilirsiniz. Eğitim İstatistikleri bölümünde şuna benzer bir tablo göreceksiniz:
5. Modeli Değerlendirme
Modelimizi değerlendirin
#standardSQL SELECT * FROM ml.EVALUATE(MODEL `bqml_codelab.sample_model`, ( SELECT IF(totals.transactions IS NULL, 0, 1) AS label, IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(geoNetwork.country, "") AS country, IFNULL(totals.pageviews, 0) AS pageviews FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'));
Doğrusal regresyon modeliyle kullanılırsa yukarıdaki sorgu şu sütunları döndürür: mean_absolute_error
, mean_squared_error
, mean_squared_log_error
, median_absolute_error
, r2_score
, explained_variance
. Mantıksal regresyon modeliyle kullanılırsa yukarıdaki sorgu şu sütunları döndürür: precision
, recall
, accuracy
, f1_score
, log_loss
, roc_auc
. Bu metriklerin nasıl hesaplandığını ve ne anlama geldiğini anlamak için lütfen makine öğrenimi sözlüğüne bakın veya bir Google araması yapın.
Somut olarak, sorgunun SELECT
ve FROM
bölümlerinin eğitim sırasında kullanılanla aynı olduğunu fark edeceksiniz. WHERE
bölümü, zaman aralığındaki değişikliği yansıtır ve FROM
bölümü, ml.EVALUATE
adını verdiğimizi gösterir. Şuna benzer bir tablo görürsünüz:
6. Modeli Kullanma
Ülke bazında tahmini satın alma sayısı
Burada her ülkeden ziyaretçilerin gerçekleştirdiği işlem sayısını tahmin etmeye, sonuçları sıralamaya ve satın alma sayısına göre ilk 10 ülkeyi seçmeye çalışıyoruz.
#standardSQL SELECT country, SUM(predicted_label) as total_predicted_purchases FROM ml.PREDICT(MODEL `bqml_codelab.sample_model`, ( SELECT IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(totals.pageviews, 0) AS pageviews, IFNULL(geoNetwork.country, "") AS country FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170801')) GROUP BY country ORDER BY total_predicted_purchases DESC LIMIT 10;
Bu sorgunun, bir önceki bölümde gösterdiğimiz değerlendirme sorgusuna çok benzediğine dikkat edin. Burada ml.EVALUATE
yerine ml.PREDICT
kullanılır ve sorgunun BQML kısmını standart SQL komutları ile sarmalanır. Somut olarak, ülke ve her ülke için satın alma işlemlerinin toplamıyla ilgileniyoruz. Bu yüzden SELECT
, GROUP BY
ve ORDER BY
bunları açıklıyoruz. LIMIT
burada yalnızca ilk 10 sonucu aldığımızdan emin olmak için kullanılır. Şuna benzer bir tablo görürsünüz:
Kullanıcı başına satın alma sayısını tahmin etme
Başka bir örnek verelim. Bu kez, her ziyaretçinin yaptığı işlem sayısını tahmin etmeye, sonuçları sıralamaya ve işleme göre ilk 10 ziyaretçiyi seçmeye çalışıyoruz.
#standardSQL SELECT fullVisitorId, SUM(predicted_label) as total_predicted_purchases FROM ml.PREDICT(MODEL `bqml_codelab.sample_model`, ( SELECT IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile, IFNULL(totals.pageviews, 0) AS pageviews, IFNULL(geoNetwork.country, "") AS country, fullVisitorId FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170801')) GROUP BY fullVisitorId ORDER BY total_predicted_purchases DESC LIMIT 10;
Şuna benzer bir tablo görürsünüz:
7. Tebrikler!
Bu codelab'i tamamladınız. Kendinize meydan okumak mı istiyorsunuz? BQML ile doğrusal regresyon modeli oluşturmayı deneyin.
İşlediklerimiz
- İkili mantıksal regresyon modeli oluşturma
- Modeli değerlendirme
- Tahminde bulunmak için modeli kullanma
Sonraki Adımlar
- BQML hakkında daha fazla bilgi için lütfen belgelere bakın.