BigQuery ML'yi Kullanmaya Başlarken

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. Amaç, SQL uzmanlarının mevcut araçlarını kullanarak modeller oluşturmasına olanak tanıyarak makine öğrenimini herkesin erişebileceği bir hale getirmek ve veri taşıma ihtiyacını ortadan kaldırarak geliştirme hızını artırmaktır.

Ne oluşturacaksınız?

Ziyaretçinin 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 modellerini oluşturma, değerlendirme ve kullanma

İhtiyacınız olanlar

2. Kurulum ve Gereksinimler

Yönlendirmesiz ortam kurulumu

  1. Cloud Console'da oturum açın ve 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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Proje kimliğini unutmayın. Bu kimlik, tüm Google Cloud projelerinde benzersiz bir addır (Yukarıdaki ad zaten alınmış olduğundan sizin için çalışmayacaktır). Bu codelab'in ilerleyen kısımlarında PROJECT_ID olarak adlandırılacaktır.

  1. Ardından, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.

Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları nasıl kapatacağınız konusunda size tavsiyelerde bulunan "Temizleme" bölümündeki talimatları uyguladığınızdan emin olun. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

BigQuery Konsolunu Açma

Google Geliştirici Konsolu'nda ekranın sol üst kısmındaki Menü simgesini tıklayın.

select-bq_0.png

Menüde en alta kaydırıp BigQuery:

select-bq.png

Bu işlem, BigQuery konsolunu yeni bir tarayıcı sekmesinde açar. Konsol şu şekilde görünür:

8b0218390329e8cf.png

Ama burada hiçbir şey yok! Neyse ki BigQuery'de keşfedebileceğiniz çok sayıda herkese açık veri kümesi var.

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.

4f51bf57291a59db.png

Ardından, veri kümenizi bqml_codelab olarak adlandırın ve Tamam'ı tıklayın.

63e32478a5652fbc.png

4. Model oluşturma

Analytics 360 için mantıksal regresyon

Şimdi görevimize geçelim. Bir ziyaretçinin işlem yapıp yapmayacağını tahmin etmek için nasıl model oluşturacağınız aşağıda açıklanmıştı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 dair ölçüt olarak ziyaretçinin cihazının işletim sistemi, söz konusu cihazın mobil cihaz olup olmadığı, ziyaretçinin ülkesi ve sayfa görüntüleme sayısı kullanılır.

Bu durumda, "codelab" veri kümesinin adı, "sample_model" ise modelimizin adıdır. Belirtilen model türü, ikili mantıksal regresyondur. Bu örnekte, label öğesi, uydurmaya çalıştığımız öğedir. Yalnızca 1 sütunla ilgileniyorsanız bu yöntemin input_label_cols ayarlamanın alternatif bir yolu olduğunu unutmayın. Ayrıca, eğitim verilerimizi 1 Ağustos 2016 ile 31 Haziran 2017 arasında toplanan verilerle sınırlıyoruz. Bunu, "tahmin" için son bir aylık verileri kaydetmek amacıyla yapıyoruz. Ayrıca, zamandan tasarruf etmek için 100.000 veri noktasıyla sınırlıyoruz. Acele etmiyorsanız son satırı kaldırabilirsiniz.

CREATE MODEL komutunu çalıştırmak, eşzamansız olarak çalışacak bir sorgu iş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

İsterseniz kullanıcı arayüzündeki bqml_codelab veri kümesi altında sample_model'ı tıklayarak model hakkında bilgi edinebilirsiniz. Ayrıntılar bölümünde, modelle ilgili bazı temel bilgilerin yanı sıra modeli oluşturmak için kullanılan eğitim seçeneklerini bulabilirsiniz. Eğitim İstatistikleri bölümünde aşağıdaki gibi bir tablo görürsünüz:

b8bd9548a0d89165.png

5. Modeli Değerlendirme

Modelimizi değerlendirme

#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ıldığında 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. Yukarıdaki sorgu, mantıksal regresyon modeliyle kullanıldığında şu sütunları döndürür: precision, recall, accuracy, f1_score, log_loss, roc_auc. Bu metriklerin her birinin nasıl hesaplandığını ve ne anlama geldiğini öğrenmek için lütfen makine öğrenimi sözlüğüne bakın veya Google'da arama yapın.

Sorgunun SELECT ve FROM bölümlerinin, eğitim sırasında kullanılanla aynı olduğunu göreceksiniz. WHERE bölümü, zaman aralığındaki değişikliği yansıtır. FROM bölümü ise ml.EVALUATE adlı işlevi çağırdığımızı gösterir. Aşağıdakine benzer bir tablo görürsünüz:

1c7779f6028730cc.png

6. Modeli kullanma

Ülkeye göre satın alma işlemlerini tahmin etme

Burada, her ülkedeki ziyaretçilerin yaptığı işlem sayısını tahmin etmeye çalışırız, sonuçları sıralarız ve satın alma işlemlerine göre ilk 10 ülkeyi seçeriz.

#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, önceki bölümde gösterdiğimiz değerlendirme sorgusuna çok benzediğini fark edin. Burada ml.EVALUATE yerine ml.PREDICT kullanıyoruz ve sorgunun BQML bölümünü standart SQL komutlarıyla sarmalıyoruz. Özellikle, her ülkenin satın alma işlemlerinin toplamı ve ülkeyle ilgileniyoruz. Bu nedenle SELECT, GROUP BY ve ORDER BY. Burada LIMIT, yalnızca ilk 10 sonucu almamızı sağlamak için kullanılır. Aşağıdakine benzer bir tablo görürsünüz:

e639f7a409741dcb.png

Kullanıcı başına satın alma sayısını tahmin etme

Başka bir örnek: Bu kez her ziyaretçinin yaptığı işlem sayısını tahmin etmeye, sonuçları sıralamaya ve işlemlere 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;

Aşağıdakine benzer bir tablo görürsünüz:

2be1d8fa96e10178.png

7. Tebrikler!

Bu codelab'i tamamladınız. Zorlu bir görev mi arıyorsunuz? BQML ile doğrusal regresyon modeli oluşturmayı deneyin.

İşlediğimiz konular

  • İkili mantıksal regresyon modeli oluşturma
  • Modeli değerlendirme
  • Tahminlerde bulunmak için modeli kullanma

Sonraki Adımlar

  • BQML hakkında daha fazla bilgi için lütfen belgeleri inceleyin.