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. 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

  1. 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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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.

  1. 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.

seç-bq_0.png

Menüyü en alta kaydırın ve BigQuery: seçeneğini tıklayın.

select-bq.png

Bu işlem, BigQuery konsolunu yeni bir tarayıcı sekmesinde şu şekilde açar:

8b0218390329e8cf.png

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.

4f51bf57291a59db.png

Ardından veri kümenize bqml_codelab adını verin ve Tamam'ı tıklayın.

63e32478a5652fbc.png

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:

b8bd9548a0d89165.png

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:

1c7779f6028730cc

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:

e639f7a409741dcb.png

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:

2be1d8fa96e10178.png

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.