Azure ML - 1
İlişkisel veritabanlarının ötesinde hayatımıza ciddi derecede giren NoSql ve Big Data kavramları ile birlikte aslında gerekli bütçeniz varsa ve ihtiyaçlarınız varsa veri tutma konusu son derece basit hale geldi. Bu sözümden Hadoop yapıları basit gibi bir algı oluşmasını istemem. Malesef özellikle user friendly uygulamalara alışkın olan bizler için Hadoop Cluster kurulumu, işletilmesi, hadoop üzerinde çalışan servislerin kullanılması hala zor. Fakat günün sonunda artık ihtiyacımız olan veya olmayan bir çok yapısal veriyi çeşitli sistemlerde tutuyoruz. Hal böyle olunca artık veriler tutulduğuna göre sıradaki adımımız mevcut verileri bilgiye dönüştürme süreci oluyor ki bu konuda da karşımıza veri ambarları ve iş zekası ürünleri çıkıyor. Mevcut verilerin periyodik veya anlık olarak temizlenip, hesaplanarak oluşturulan veri ambarlarından beslenen iş zekası sistemleri git gide Self Service yapısıyla analiz ihtiyacını tamamen son kullanıcıya yüklüyor. Bu süreci bir piramit olarak düşünürsek piramitin yukarı seviyelerinde ise verinin bilgiye dönüşüm süreci değil tahminleme sürecine doğru gidiliyor.
Geçmiş dönemlerde tahminleme yapıları yok muydu? Elbette vardı. Sadece bu konuya özel SPSS (AIMS) ve SAS gibi ürünlerin olmasının yanı sıra özellikle Hadoop ekosistemiyle birlikte hayatımıza giren R programlama dili tamamen bu konu üzerine çalışıyor. Öte yandan SQL Server Analysis Services içerisinde yer alan DMX ile temel birçok ihtiyacımızı karşılayabiliyorduk. Fakat Microsoft Azure ML isimli yeni servisiyle bu konuda oldukça ciddi bir hamle yaptı. Buna göre temel sürükle bırak işlemleri ile birçok istatistiksel algoritmayı bulut sistemler üzerinde çalıştırarak size ihtiyacınız olan sonuçları çıkartabiliyor.
Burada dikkat edilmesi gereken husus yapının basit olması değil. Yapı ne kadar basit olursa olsun sonuçta elinizdeki verilerin kalitesi çok önemli. Öte yandan sürükle bırak ile yaptığınız modellemelerde kullanacağınız algoritmanın detaylarını bilmezseniz (varsayımları vb.) sonuçlarınız beklediğiniz gibi çıkmayabilir.
Azure ML servisini kullanabilmeniz için ilk önce Azure hesabına sahip olmanız gerekiyor. İlk defa üye oluyorsanız belli bir süre tüm servisleri ücretsiz olarak kullanabilirsiniz. Sonrasında ise Azure ML servisi ücreti için http://azure.microsoft.com/en-us/pricing/details/machine-learning/ buradan detaylı bilgi edinebilirsiniz. Azure ML diğer Azure servisleri gibi birçok servis noktasına sahip değil. Şu an için sadece US South Central bölgesini seçebiliyorsunuz. Microsoft hesabı ile sisteme giriş yaptıktan sonra sol tarafta yer alan Azure ürünlerinden Machine Learning i seçerek yeni bir servis oluşturalım.

Daha sonrasında Sign-in to ML Studio tıklayın. Yeni bir pencerede studio.azureml.net sitesi karşınıza çıkacak. Burada dört ana menü ile karşılaşmaktayız. Studio Home, Experiments, Web Services, Settings. Experiments kısmında geçmişte oluşturduğumuz ve kaydettiğimiz tahmin modellerinin listesi ile karşılaşmaktayız. Web services kısmı Azure Machine Learning ile geliştirmiş olduğumuz modellerin bir web servisi mantığında çalışması için talep ettiğimiz taktirde kolaylıkla deploy ettiğimiz servisi barındırmaktadır. Ayrıca C#, Phyton ve R dillerinde örnek scriptleri görebilirsiniz. Settings kısmında ise çalışmakta olduğumuz workload ile ilgili ayarları (başka kullanıcılara yetki verme vb.) düzenleyebilmekteyiz. Artık ilk küçük projemizi oluşturmaya hazırız. Azure ML’in kullanımı veri ambarı tasarlayan arkadaşlarımız için oldukça tanıdık gelecektir. Tıpkı SQL Server Integration projesindeki bileşenler gibi size özel ayrılmış alanda sürükle bırak ve bağla işlemleri ile tahminleme modellerini geliştirebilirsiniz.
Experiments kısmı birçok alt sekmelerden oluşmaktadır. Bunlar Saved Dataset (örnek ML çözümleri sunabilmemiz ve test edebilmemiz için hali hazırda bizlere sunulan veri setleri), Data Format Conversions (ARFF, CSV, TSV gibi dosyalara çevirim yapmamızı sağlayan bölüm), Data Input and Output (veri okuyacağımız ve yazacağımı kısımlar), Data Transformation (verileri filtreleme, ölçümleme, manipülasyon yapmamızı sağlayan kısım), Feature Selection (segmentasyon için kullanılan Discriminant Analizinin bulunduğu bölüm), Machine Learning (tahminleme algoritmalarımızın bulunduğu bölüm), R Language Modules (R scriptlerini çalıştırmamızı sağlayan kısım), Statistical Function (korelasyon testi, hipotez testi gibi istatistiksel algoritmaların yer aldığı bölüm), Text Analytics (kelime işlemeye dair kontrollerin bulunduğu bölüm) olarak karşımıza çıkmaktadır.
Bileşenleri sürükleyip bıraktığınızda kaç input ve sonucunda kaç output vereceğini bileşen çevresindeki yuvarlaklar göstermektedir. Örnek olarak hali hazırda kayıtlı olan bir veri setini sürükleyip bıraktığımızda input almadığı ve bir tane output verdiğini göreceksiniz. Eğer verisetinin içeriğine bakmak istiyorsanız bileşenin üzerinde tıkladığınızda Download (csv formatında veri setini bilgisayarınıza indirir) veya Visualize (veri seti üzerinde min, max, medyan gibi temel istatistiksel değerleri içerir) seçeneklerini göreceksiniz.

Visualize dediğinizde yukarıda çıkan boşlukta aşağıda size belirtilen değişkenlerden istediklerinizi tıklayarak histogram oluşturabilir ve verilerinizin dağılımına hızlıca gözatabilirsiniz.
Veriambarlarının ve haliyle tahminleme modellerini üniversitelerde gördüğümüzde tıkır tıkır işlemlerimizi yapar, tam istediğimiz hipotez testlerimizi gerçekleştirir ve tam beklediğimiz gibi sonuçları görürüz. Fakat gerçek hayatta gerçek verilerle uğraştığınız zaman aklınıza gelebilecek en temiz veriye sahip şirketlerin (e-ticaret vb.) bile veri tabanında kirlilikler olduğunu göreceksiniz. Hal böyle olunca int tipinde bir alanda yazılmış olan 0 ve NULL değerleri apayrı anlamlara sahip olabilir. Sizin bu verileri analize sokmadan önce temizlemeniz gerekmektedir. Bu temizleme işlemi boş değerlere belirli bir değer atama, mod değerini atama, medya değerini atama çeşitli yollarla yapılır. Azure ML üzerinde bunu yapmanın yolu ise Missing Values Scrubber bileşeni ile olmaktadır.

Buradan missing values değerlerine ne yapacağınızı karar verdikten sonra elinizdeki veri setinin betimleyici istatistik değerlerini görmek için Descriptive Statistics bileşeninden faydalanabilirsiniz. Bunun için Missing Values Scrubber bileşeninizin sonrasına Descriptive Statistics bileşenini ekleyin ve bağlayın. Projenizi bir kere çalıştırdıktan sonra Descriptive Statistics bileşeni üzerinde Visualize seçeneğini seçin. Bu sayede verisetinizde bulunan her değişken için adet, missing value sayısı, mod, medyan, maksimum, minimum, örneklem varyansı, örneklem standart sapması, basıklık, çarpıklık gibi değerleri görebilirsiniz.
Diyelim ki elimizde bulunan veri seti ile ilgili işlemlerimizin bir kısmından sonra tüm değişkenleri değil bazı değişkenleri kullanacağız veya bazı değişkenleri kullanmayacağız. Burada gerekli olan değişkenleri seçmek (veya gerekli olmayan değişkenleri seçmemek) için Project Columns kontrolunden faydalanabiliriz. Bunu sutun isimlerine göre yapabildiğimiz gibi tutmuş oldukları veri türlerine göre de yapabiliriz. Integration Services projelerinde Data Flow Task kontrolunun altında yer alan Derived Columns kontrolunu bana anımsattı açıkçası. Fakat malesef Project Columns özelliği Derived Column’daki gibi yeni değişken türetmenize olanak sağlamamaktadır. Bunun için projemize bir tane Project Columns bileşeni ekleyelim. Sonrasında ekranın sağ tarafında yer alan Properties ekranından Launch Column Selector buttonuna basarak hesaplama dışına çıkarmak istediğimiz (exclude) alanları belirtebiliriz.

Yazıyı daha fazla uzatıp anlaşılmaz kılmamak adına burada ilk yazımızı sonlandırmış olalım. Daha sonraki yazılarımızda Azure ML üzerinde bulunan bileşenleri tanıtmaya ve kullanım örnekleri yapmaya devam edeceğiz.