Miuul Araştırma

BigQuery ML ile Çok Terimli Regresyon

BigQuery ML ile basit standart SQL sorguları kullanarak verinin ön işlenmesinden dönüştürülmesine, model kurma kısmına kadar yardımcı olabilecek birçok kolaylığı içinde barındırarak veriyi taşımamıza gerek kalmadan model oluşturmamıza olanak tanır.


Source: Andrea Ucini

Yapılandırılmış veriler üstünde makine öğrenimi algoritmaları kullanabilmek için öncesinde modeli kuran veri bilimi ve veri mühendisi ekiplerinin, tahminler oluştururken oldukça fazla veri düzenlemesi gerçekleştiriyor olmaları gerekir. İki ekibin kullandığı altyapılar oldukça farklı olacağından eğitim ve çıkarım arasındaki dönüşüm setini tutarlı tutmak ve hatasız bir şekilde ilerlemek oldukça zor olabilir. 


BigQuery ML ile basit standart SQL sorguları kullanarak verinin ön işlenmesinden dönüştürülmesine, model kurma kısmına kadar yardımcı olabilecek birçok kolaylığı içinde barındırarak veriyi taşımamıza gerek kalmadan model oluşturmamıza olanak tanır. Ayrıca BigQuery, tahminler sırasında bu dönüşümleri otomatik olarak uygulayıp argümanlar ile ihtiyaç duyulan bütün işlemleri gerçekleştirdiğinden, makine öğrenimi modellerinin üretimi büyük ölçüde basitleştirilmiştir. Model kurma sırasında kullanıma sunulan fonksiyonlar sayesinde modeli karmaşık yapılara sokmadan spesifik işlemleri tanımlamamız mümkün kılınmıştır.

Tamraparni Dasu ve Theodore Johnson, Exploratory Data Mining and Data Cleaning kitabında, bir veri bilimi projesinin hayata geçme sürecindeki veri analizlerinin 80%’ini veri temizliği ile harcandığını belirtmişlerdir. Harcanan efor hangi makine öğrenimi projesini gerçekleştiriyor olursak olalım değişmeyecektir ancak Google bulut ortamında çalışmanın getirdiği birçok avantajda beraberinde gelecektir.

- Yukarda bahsetmiş olduğum çıktıların farklı ortamlara aktarırken karşılaşılabilecek sorunları veri tabanı içerisinde ETL işlemi gerçekleştirip modeli kurduğumuzdan, karşılaşılabilecek sorunların ortadan kaldırılması,

- BigQuery motorunun yapısı gereği rastgele küçük örnekler almak yerine büyük veri kümelerini verimli bir şekilde taramak için tasarlandığından, BigQuery ML stokastik sürüm yerine gradient descent standart varyantını temel aldığından daha hızlı bir şekilde çalıştığından model efektifliğin arttırılması, 

- ML modellerinin daha basit olmasını ve daha hızlı yakınsamasını sağlamak için özellik çaprazları gibi işlemleri kullanarak ham verilerden yeni özelliklerin tasarlanması,

- Herhangi bir kütüphane indirmeye gerek kalmadan ihtiyaç olan fonksiyonları tek bir argüman ile uygulanabilmesi,

- Python, JAVA gibi programlama dillerine gerek kalmadan sadece SQL ile bütün işlemleri tamamlayarak, SQL bilen herkesin, yazılım geliştirici olmadan veri analistlerinin bile bildiği SQL ile ML kütüphanelerine erişebilir olması,

- Sonuçları veri tabanında yorumlayıp, çıktıyı farklı ortamlara aktarmadan çalışmalarda doğrudan kullanılabilmesi,

gibi birçok avantajı beraberinde getiriyor. 

 

Hangi algoritmalarla çalışmalarımızı gerçekleştirebiliriz? 

BigQuery ML’in kullanıcılara sunmuş olduğu başlıca model tipleri:

. Linear Regression
. Binary Logistic Regression
. Multiclass Logistic Regression
. K-means Cluestering
. Matrix Factorization
. Time Series
. Booested Tree
. DNN
. AutoML Tables
. TensorFlow Model
. Autoencoder

Seçilen konu bağlamında en uygun model tipi seçilerek algoritmalarımızı çalıştırabiliriz. Seçilen algoritmaların kullanıma açık olup BigQuery fiyatlandırmasına dikkat edilmesinde çalıştırmadan önce dikkat etmekte fayda olacaktır. 

BigQuery ML kullanımına örnek olarak otomobil verisi üstünden çok terimli lojistik regresyon kullanımını baştan sona inceleyelim. 

Sigorta şirketleri araçların riskli olup olmadığına karar verdikleri “sembolleme” denilen bir yöntem kullanırlar. Araç özellikleri ve fiyatlandırmasına göre atanan bu risk faktörü, +3 değeri otomobilin riskli olduğunu, -3 ise muhtemelen oldukça güvenli olduğunu gösterir.

Veri setimizde toplam 26 adet değişken bulunup içerisinde N/A değerler olan 205 satırlık bir veri setidir. 

 

Veriyi içeri aktarımı nasıl gerçekleştiririz?

BigQuery içerisindeki çalışma alanınıza tıkladığınızda veri setinizi yüklemek için “create table” a bastıktan sonra eğer veriniz lokalinizde ise upload u seçerek, değilse ilgili yükleme yönteminizi seçerek veri setinizi yükleyebilirsiniz. Veri setinize adını verdikten sonra eğer sütun isimleri csv dosyanızda mevcut ise Bigquery’nin bunu otomatik algılaması için “auto-detect”i seçerek ilk satırı atlamasını sağlayarak sütun isimlerini getirebilirsiniz. Eğer veri setinizde sütun isimleri yok ise el ile kendiniz isimlendirmeleri yaparak verinizi içeri yükleyebilir ya da direk BigQuery içerisinden verinizi çekerek işlemlere başlayabilirsiniz.

Veri setinin ilk 10 gözlemini incelediğimiz zaman eksiksiz bir şekilde verinin yüklenmiş olduğunu görebiliyoruz. 
 

Google araçları ile veri görselleştirme elde edilebilir mi?
Verimizi EDA işlemleri için Google’ın bir başka ürünü olan DataStudio ortamına aktarıp görselleştirme işlemlerini gerçekleştirebiliriz. Veriyi istenilen kırılımlarda gruplayıp yorumlamak istediğimiz metodlar doğrultusunda grafiklerimizi hazırlayıp ön bir bilgi kazanımı için yeterli desteği sağlayacaktır. Bizim verimiz için marka ve kasa tipi kırılımında bağımlı değişkenimizi incelediğimizde aşağıdaki grafikleri okunabilirliği net bir şekilde elde etmiş olup bize bazı ön izlenimleri pratik bir biçimde kazandırmış oluyor. 




Ham veriyi model için nasıl hazırlarız?
Verimizi değişken özellik işlemine sokarak, fiyat değişkenimizi dinamik bir şekilde çeyrekliklere ayıralım. Motor büyüklüğü birim başına 1 beygir düşüyorsa 1 düşmüyorsa 0 döndüren “çekiş” adında bir özellik türetelim. Araç ağırlığı ve yüzey alanını kullanarak araç basıncının hesaplandığı bir özellik ekleyip ortalama yakıt tüketimini yeni özellikler olarak hesapladıktan sonra verimizi çalıştırıp modele sokmadan önce yeni bir tablo olarak dizinimize kaydedelim.

Önemsiz olduğuna karar verdiğimiz ve içerisinde çok fazla N/A değer barındıran “Normalized Losses” gibi değişkenleri hazırladığımız tablonun dışında bırakarak işlemleri gerçekleştiriyoruz. 



Son aşama model kurma
Dizinimize kaydolan tabloyu çağırıp uygulamak istediğimiz model tipini ve model parametrelerini girerek modelimizi kurup işlemleri tamamlayabiliriz. Model tipini, çok sınıflı sınıflandırma problemi uygulayacağımızdan lojistik regresyon olarak giriyoruz. Bağımlı değişken sütun ismini verdikten sonra modelimizi özelleştirecek argümanlara geçebiliriz. Burada kullanmış olduğumuz argümanları ve değerleri tamamen ihtiyaca yönelik olarak belirlenmiştir. Bunların farklı değerlerle kullanılabileceği gibi daha fazla özellikte fonksiyonlar ekleyerek modeli spesifikleştirebilirsiniz. Bu argümanlar kullanılmadan önce her birini detaylı bir şekilde inceleyip ihtiyaç doğrultusunda çalıştırmakta fayda olacaktır. Belirli bir iterasyon sayısı ve aşırı öğrenmeye gitmesini engellemek için model çaprazlanmasını durduran “Early_Stop” parametrelerini veriyoruz. Veri setimizde değişken sayısı az olup elimizde validasyon ve test verileri olmadığı için kendi içinde eğitip değerlendirmesi için “Auto_Split_Method” argümanını giriyoruz. Sınıf etiketlerinin, o sınıfın frekansıyla ters orantılı olarak her sınıf için ağırlıklar kullanılarak dengelenip dengelenmeyeceğini yani değişkenlere özel ağırlıklandırma işlemi yapılmasını model kurulurken kendi içinde karar verilsin diye “Auto_Class_Weights” argümanını “True” döndürüyoruz. Tabloda olan bütün sütunları modelde kullanmak istediğimiz için “Select” içerisine hepsini yerleştiriyoruz.


 

Model başarısı nasıl ölçülmeli?,
Kurulan modele girilerek değerlendirme bölümüne gelindikten sonra model doğrulama metriklerini yorumlayarak model başarınızı ölçebileceğiniz bütün metrikleri BigQuery otomatik olarak model içerisinde göstermektedir.

F1 skorunun ve AUC değerlerinin yüksek oluşu modele güvenebileceğimizin başarılı bir göstergesi olarak yorumlanabilir.

Doğrulama metriklerinin altında karmaşıklık matrisine yer verilse de daha detaylı bir çıktı elde etmek istiyorsak basit bir sorgu çalıştırarak elde edebiliyoruz.

Karmaşıklık matrisininin detaylı analizinde hangi bağımlı değişkenlerde kaç tane hata yapıldığını ve hatayı hangi değer ile yaptığını gösteren grafiğe erişimi BigQuery’nin sunduğu fonksiyonlar içerisinden getirip inceleyebiliyoruz.

Kurmuş olduğumuz modeli daha sonra veri tabanına akan veri ile tahmin etmek istediğimiz zaman,



Peki daha sonra?

Predict fonksiyonunu çağırarak tahminlerimizi oluşturup çalışmalara doğrudan aktarabiliriz. Oluşan çıktıları tablo olarak kaydedip Datastudio ortamında rapor haline getirip görsel düzenlemeler ile okunabilirliği arttırılarak bize karar mercek mekanizması oluşturmada katkı sağlayacaktır.

Her gün veri tabanına dolan bilgiler ile ML.PREDICT fonksiyonunu “scheduled query” olarak ayarlayıp, tahminleri düzenli olarak biz elle müdahale etmeden çalıştırıp sonuçlara erişebiliriz. Böylelikle zaman, maliyet ve yer tasarrufu sağlayarak veri tabanı üzerinden tahmin modelleri geliştirilerek gündelik çalışmalarımıza doğrudan aktarım sağlayabiliriz.

BiqQuery altyapısını kullanmama izin veren AloTech ailesine teşekkürü borç bilir okumalarınız için teşekkür ederim.

Bir sonraki yazıda görüşmek üzere.

Kaynaklar: I - II - III - IV - V

Power BI ile CRM Analitiği - IV: Müşteri Yaşam Boyu Değeri (CLTV) Tahmini

Melda Özdin

R ile Yüksek Performanslı Programlama - I

Onur Boyar

T-SQL ile 20 Milyon Satırlık Gerçek Müşteri Verisi Üretme

Ömer Çolakoğlu

SON ARAŞTIRMALAR

GİRİŞ

Aşağıya kaydolduğunuz e-postayı girin. Şifrenizi sıfırlamanız için size bir bağlantı göndereceğiz.

Giriş Ekranına Dön
Şifre sıfırlama talimatları
adresine gönderildi.