Bir önceki kısımda, veri bilimi iş akışını öğrendik. Bu kısımda, bu iş akışının ilk adımına odaklanacağız: veri toplama ve depolama.
Verilerden bilgi edinmeye başlamadan önce, farklı kaynaklardan veri toplamamız gerekir. İnternette gezinerek, sosyal medyayı aktif olarak kullanarak veya mağazada kartla ödeme yaparak büyük miktarda veriyi sürekli olarak üretiriz. Kullandığımız bu hizmetlerin arkasındaki şirketler, bu verileri dahili olarak toplar ve kararlar vermelerine yardımcı olmak için kullanırlar.
Öte yandan, birçok ücretsiz, açık veri kaynağı da mevcuttur. Bu veriler, serbestçe kullanılan, paylaşılan ve herkes tarafından oluşturulabilen verilerdir. Bazen şirketler, verilerinin bir kısmını halkın daha geniş bir kısmıyla paylaştığını da unutmayalım.
En yaygın şirket veri kaynaklarından bazıları web etkinlikleri, anket verileri, müşteri verileri, lojistik verileri ve finansal işlemlerdir.
Bir web sayfasını ziyaret ettiğinizde veya bir bağlantıya tıkladığınızda, bu bilgiler genellikle dönüşüm oranlarını hesaplamak veya farklı içerik parçalarının popülaritesini izlemek için şirketler tarafından takip edilir ve aşağıdaki bilgiler toparlanır:
Veriler, anketlerde insanların görüşlerini sorarak da toplanabilir. Örneğin, yüz yüze görüşme, çevrimiçi anket veya odak grubu şeklinde olabilir.
Açık verilere erişmenin birden çok yolu vardır. Bunlardan ikisi API'ler ve kamu kayıtlarıdır.
API'lerle başlayalım. API (Application Program Interface), uygulama programlama arayüzü anlamına gelir. Bu, internet üzerinden üçüncü bir kişiden veri talep etmenin kolay bir yoludur. Birçok şirketin (Twitter, Wikipedia, Yahoo!Finance ve Google Maps gibi), isteyen kişilerin kendi verilerine erişim sağlaması için ortak bir API'ı vardır.
Kamu kayıtları, veri toplamanın bir başka harika yoludur. Bunlar; Dünya Bankası, Birleşmiş Milletler veya Dünya Ticaret Örgütü gibi uluslararası kuruluşlar, nüfus sayımı ve anket verilerini kullanan ulusal istatistik büroları veya hava durumu, çevre veya nüfus gibi bilgileri kamuya açık hale getiren devlet kurumları tarafından toplanabilir ve paylaşılabilir. Örneğin, ABD'de "data.gov", ücretsiz olarak indirilebilen sağlık, eğitim ve ticaret verilerine sahiptir. AB'de data.europa.dot.eu benzer verilere sahiptir.
Topladığımız verinin türünü bilmek, veri bilimi sürecinin daha sonraki aşamalarında çok önemlidir. Örneğin, tüm veri türleri aynı yerde saklanamaz. Ayrıca, tüm görselleştirmeler veya analizler tüm veri türleriyle gerçekleştirilemez. Bu durumda veri türlerini tartışmak önemli bir konudur.
İki genel veri türü vardır: nitel (qualitative) ve nicel (quantitative) veriler. Her iki tür arasındaki temel farklılıkları anlamak önemlidir. Nicel veriler sayılarla ifade edilebilir, hesaplanabilir, ölçülebilir. Nitel veriler tanımlayıcı ve kavramsal niteliktedir. Nitel veriler gözlemlenebilir, ancak ölçülmez. Artık farklılıkları bildiğimize göre, gerçek dünyadaki bir örnekle her veri türüne bir göz atalım.
Nicel veriler sayılarla ifade edilebilir. Örneğin, buzdolabı 150 cm boyunda, içinde iki elma var ve 5.000 liraya satın alınabilir.
Öte yandan, nitel veriler gözlemlenebilecek, ancak ölçülmeyen verilerdir: buzdolabı kırmızıdır, Türkiye'de üretilmiştir, ve balık koktuğu için temizlenmesi gereklidir.
Geleneksel nicel ve nitel verilerin yanı sıra, giderek daha önemli hale gelen birçok başka veri türü de vardır: Görüntü verileri, metin verileri, coğrafi veriler, ağ verileri ve diğerleri. Bu diğer veri türlerinin nicel ve nitel verilerle içiçe olduğunu da unutmamalıyız. Çoğu zaman, bu diğer veri türleri, nicel ve nitel verilerin özel bir karışımıdır. Bazı örneklere bakalım:
Dijital görüntüler her yerdedir. Bir görüntü piksellerden oluşur. Bu pikseller renk ve yoğunluk hakkında bilgi içerir. Tipik olarak, pikseller bilgisayar belleğinde saklanır.
E-postalar, belgeler, yorumlar, sosyal medya mesajları gibi, metin verileri birçok yerde bulunabilir. Bu veriler, ilgili bilgileri ortaya çıkarmak için saklanabilir ve analiz edilebilir.
Coğrafi veriler, konum bilgisi olan verilerdir. Coğrafi veriler kullanılarak birçok farklı bilgi türünü yakalayabiliriz. Örnein, belirli bir bölge için yolların, binaların ve bitki örtüsünün nerede olduğunu takip edebiliriz. Bu, özellikle Waze ve Google maps gibi navigasyon uygulamaları için yararlıdır.
Ağ verileri, daireler tarafından tasvir edilen bir ağdaki insanlardan veya şeylerden ve çizgilerle tasvir edilen aralarındaki ilişkilerden oluşur.
Şimdi, toplanan verileri depolamanın ve almanın etkili yollarını tartışacağız. Verileri depolarken dikkate alınması gereken birçok şey vardır. İlk olarak, verileri nerede saklamak istediğimizi belirlemeliyiz. Bu durumda, ne tür bir veri depoladığımızı bilmemiz gerekir. Ve son olarak, verilerimizi depodan nasıl geri alabileceğimizi düşünmeliyiz.
Veri bilimi projeleri büyük miktarda veri gerektirebilir. Bu noktada, veriler muhtemelen artık tek bir bilgisayarda saklanamaz. Tüm verilerin kaydedildiklerinden ve kolayca erişilebildiklerinden emin olmak için, birçok farklı bilgisayarda saklanması gerekebilir. Büyük şirketler, genellikle “küme” veya “sunucu” olarak adlandırılan kendi depolama bilgisayarlarına sahiptir.
Alternatif olarak, veri depolama işi için başka bir şirkete ödeme yapabiliriz. Buna "bulut (cloud) depolama" denir. Yaygın bulut depolama sağlayıcıları arasında Microsoft Azure, Amazon Web Services veya AWS ve Google Cloud bulunur. Bu hizmetler sadece veri depolama hizmetinden daha fazlasını sağlar. Yani, kuruluşunuza ayrıca veri analizi, makine öğrenimi ve derin öğrenme konusunda yardımcı olabilirler. Şimdilik, sadece veri depolamaya odaklanacağız.
Farklı veri türleri farklı depolama çözümleri gerektirir: E-posta, metin, video ve ses dosyaları, web sayfaları ve sosyal medya mesajları gibi bazı veriler "yapılandırılmamıştır". Bu tür veriler genellikle "belge veritabanı" adı verilen bir veritabanı türünde saklanır.
Daha yaygın olarak, veriler bir elektronik tabloda bulabileceğiniz gibi bilgi tabloları olarak ifade edilebilir. Tablolardaki bilgileri depolayan bir veritabanına ilişkisel veritabanı denir. Bu tür veritabanlarının her ikisi de daha önce bahsedilen bulut depolama sağlayıcılarında bulunabilir.
Veriler bir belge veritabanında veya ilişkisel bir veritabanında saklandıktan sonra, bunlara erişmemiz gerekir. Ek olarak, toplama, sayma veya ortalama veri gibi bazı analizler yapmak isteyebiliriz.
Her veritabanı türünün kendi sorgu dili vardır; belge veritabanları çoğunlukla NoSQL kullanırken, ilişkisel veritabanları çoğunlukla SQL kullanır. SQL “yapılandırılmış sorgu dili” anlamına, NoSQL “sadece SQL değil” anlamına gelen ingilizce ifadelerin kısaltılmış halleridir.
Verilerimizi saklamak bir kütüphane oluşturmak gibidir. Öncelikle, kütüphanenizi nerede oluşturacağınıza karar vermeniz gerekir. Bu iş, bir konum seçmeye karşılık gelir. bu konum, şirket içi bir sağlayıcı (server) veya daha önce tartıştığımız bulut sağlayıcılarından biri (Azure, AWS veya Google Cloud) olabilir.
Ardından, kitaplarımızı saklamak için ne tür rafların kurulacağına karar vermemiz gerekir. Raf türleri, kitap türlerine bağlı olacaktır. Bu süreç, veri türlerine bağlı olarak gerçekleştirilebilir.
Son olarak, kitaplara başvurmak ve kontrol etmek için bir sisteme ihtiyacımız olacaktır. Her kitabı bulma ve alma şeklimiz, bu kitabın nasıl saklandığına bağlıdır. Benzer şekilde, veritabanıyla konuşmak için bir sorgu dili gerekir. Belge veritabanları için genellikle NoSQL kullanırız ve ilişkisel veritabanları için genellikle SQL kullanırız.
Şimdiye kadar veri toplama ve depolama hakkında bilgi edindik. Veri boru hatlarının devreye girdiği yer verilerin ölçeklendirilme aşamasıdır.
Veri mühendisleri, verileri toplamak ve depolamak için çalışırlar, böylece analistler ve veri bilimcileri gibi diğerleri, görselleştirme veya makine öğrenimi modelleri oluşturma çalışmaları için verilere erişebilirler. Öğrendiğimiz farklı veri kaynaklarını düşünelim. Birden fazla veri kaynağından veri topluyorsak ne olur? Bu veri kaynakları farklı veri türleri için ise ne olur? Örneğin, dünyanın dört bir yanından gelen tweetler gibi sürekli olarak üretilen gerçek zamanlı akış verilerini düşünelim. Bu durum, verilerin depolanmasını karmaşık hale getirilir. Bir veri mühendisi olarak, verileri kolay bir şekilde organize etmek ve yine kolay bir şekilde almak isteriz.
Bir veri boru hattı, verilerin bir API aracılığıyla alımından bir veritabanına yüklenmesine kadar tanımlanmış aşamalara sahiptir. Önemli bir özellik, boru hatlarının bu süreci otomatikleştirmesidir. Verilerin sürekli olarak oluştuğu durumlarda, bir veri mühendisi için verilerin toparlanması ve depolanması, programların manuel olarak çalıştırılması ile sıkıcı ve zor hale gelebilir. Bunun yerine, bir veri mühendisi, bir olay tarafından tetiklenen otomatik görevleri saatlik, günlük olarak planlayabilir. Bu otomasyon veri boru hatları ile gerçekleştirilebilir. Depolama kapasitesinin %95'ine ulaşıldığında veya bir API bir hatayla yanıt veriyorsa, uyarılar otomatik olarak oluşturulabilir. Veri boru hatları tüm veri bilimi projeleri için gerekli değildir, ancak farklı kaynaklardan gelen çok sayıda veriyle çalışırken oldukça yararlıdırlar. Bir boru hattı oluşturmak için belirli bir yol yoktur - boru hatları verilerinize, depolama seçeneklerine ve nihai veri kullanımına bağlı olarak büyük ölçüde özelleştirilir. Alma (Extract), dönüştürme (transform) ve yükleme (load) anlamına gelen ETL, veri boru hatları için bir çerçeve çizer.