Herkese merhaba,
Bu yazımda ML modellerinde en yaygın kullanılan algoritmalardan bahsedeceğim. Model oluşturmada algoritmaları neye göre seçmeliyiz ve hangi veriye hangi algoritmayı uygulamalıyız gibi soruların cevaplarına geçmeden önce modeli oluşturup bir örüntü çıkartacağımız datayı tanımamızı sağlayacak tanımlara bakmalıyız. Veritabanlarından gelen verilerin birleştirilmesi (fusion), temizlenmesi (cleansing), dönüştürülmesi (wrangling veya transformation)/ türetilmesi ve normalizasyonu için veriyi iyi tanımak ve anlamak önemli. Veriyi tanımak için de kullandığımız terimlere ve sınıflandırmalara bakmalıyız.
Nitelik Tipleri ile başlayalım;
- Numeric Nitelik: aralık ve oran ölçümlerinde kullanılan data tipidir. Tarih-zaman ölçümlerinde kullanılırlar. Genelde sıralama ve çıkartma operatörü uygulanırken çarpma ve bölme operatörü uygulanmaz.
- Nominal Nitelik: Sınırlı bir setteki değerleri alırlar. Kategori, sınıf, durum (true/false) ifade eden niteliklerdir. Aritmetik operatörler uygulanmaz ve sıralanmazlar.
- Ordinal Nitelikler: Nominal niteliğe benzer ancak sıralanabilirler. (Anket sorularındaki gibi katılıyorum-katılmıyorum-hiç katılmıyorum gibi dereceli nitelikler)
Veriyi tiplerine göre structured ve unstructured (bazı kaynaklarda ilave olarak semistructured olarak üçe ayrıldığını görebilirsiniz.) olmak üzere ikiye ayırabiliriz. Structured (yapılandırılmış) data, ilişkisel veritabanlarında kullanılan tablo formatına benzeyen belli bir düzen ve yapı içinde tutulan verilerdir. Unstructured data ise doğal dil, görüntü, video, ses gibi formattaki belli bir düzeni ve yapısı olmayan verilerdir.
Bir işletmedeki ERP, CRM, web/mobil gibi uygulamalardan belirli bir amaç için toplanan dataya captured data denir. Toplanan datanın yanında elde edilen yan dataya da exhaust (atıl) data denir, mesela metadatalar exhaust dataya örnektir. Bir e-ticaret sitesi düşünelim, müşteri datası veya alışveriş dataları captured datadır ancak sepetindeki hangi ürünü ne kadar süreyle tuttuğu, hangi ürüne baktığı gibi datalar exhaust datalardır ve genelde ML modeller exhaust datalardan beslenir.
Veriyi tanımamıza yardımcı olan tanımlardan sonra veriyi merkezi bir veri havuzunda (data warehouse) toplayıp ETL (extract-transform-load) süreçlerinden geçirdikten sonra verinin artık model için hazır olduğunu varsayıyoruz. Verinizin temiz ve kaliteli olması en ama en önemli parametre. Aksi durumda garbage in, garbage out! yani kötü veri kötü sonuç verir. Ne kadar temiz ve doğru veri, o kadar doğru çalışan model demektir. Bu arada veriyi hazırlamak için veri ambarı veya ETL gibi işlemler zorunlu değildir ama bu mimari size performans ve zaman kazandırır, unutmayın!
Gelelim ML modelleri geliştirebileceğimiz algoritmaları tanımaya. Algortimalar öğrenme durumlarına göre ikiye ayrılır: supervised ve unsupervised Learning
Supervised Learning: Bu algoritmalar pek çok fonksiyon kullanarak input ile output arasındaki en iyi eşleşmeyi bulmaya çalışır. Hatta bazı komplike durumlarda modelin tüm fonksiyonları denemesi mümkün olmadığı için modele öğrenmesini hızlandıracak/kolaylaştıracak learning bias denilen öncelikler tanımlanır.
Learning bias aracılığı ile verisetiyle en iyi uyuşan modeli bulmak için birkaç farklı algortima ile deneyler yapılır. En iyi fonksiyonu ararken denediği herbir fonksiyonun verisetiyle ne derece uyuşup uyuşmadığını model kendine öğretir. (Supervised burdan geliyor)
Bu algortimalar genelde tahmin modellerinde kullanılır. En yaygın kullanılan algoritmalar ise correlation (Korelasyon) ve linear regression (doğrusal regresyon)‘dur.
Unsupervised Learning: Burda algoritmalar birbirine benzeyen örnekleri öbekler. Bu sebeple genelde cluster analysis (öbek-küme analizi)’de kullanılır. Algoritmaların çalışma şekli; önce tahmini bir cluster oluşturulur, ardından clusterların birbirine benzerliği veya farklılığına göre tahmin cluster’ı güncellenerek en iyi model elde edilmeye çalışılır. Peki cluster’lar arası benzerlik nasıl kurulur?
Veriler nümerik ve benzer aralıklara sahipse aslında Euclid distance (Öklit mesafesi) kullanır yani satırlar arası Öklit mesafesine bakılır çünkü Öklit uzayda birbirine yakın nesneler birbirine benzer kabul edilir. Ancak genelde benzer aralıklar karşımıza çıkmaz, bu durumda da mesafe hesaplamalarında parametreler için ağırlıklandırma yapılır.
Cluster analizi segmentasyon, anomali tespiti (outliers detection) ve association rule mining (ARM) modellerinde işimize yarar.
Şimdi modeller için algoritmaların çalışma şekillerine bakalım.
Tahmin (Prediction) Modelleri;
Korelasyon Analizi: iki nümerik nitelik arasındaki doğrusal bağlantının kuvvetini ifade eder. Pearson korelasyon katsayısına bakılır.

r: korelasyon (Pearson) katsayısı, X bağımsız değişken veya neden değişkeni, Y ise bağımlı değişken veya sonuç değişkenidir. r değeri her zaman -1 ile +1 arasında bir değer alır. Eğer -1 ile 0 arasında bir değer söz konusuysa iki değer birbiriyle ters yönde ilişkilidir yani bir nitelikte değişim olursa diğer nitelikte negatif yönde değişim olur. Benzer şekilde +1 ile 0 arasında da doğru yönde ilişki vardır. Eğer r=0 veya sıfıra yakın çıkarsa iki değer ilişkili kabul edilmez. Kesin sınırlar olmamakla beraber;
- r~±0,7 ise güçlü ilişki,
- r~±0,5 ise orta ilişki
- r~±0,3 ise düşük ilişki
- r~0 ilişki yok kabul edilir.
Benzer Pearson korelasyon ilişkisi gösteren nitelikler birbiriyle ilintilidir diye düşünülebilir. Mesela X ile Y pozitif yönde ilişkiliyken X ile Z’de pozitif yönde ilişkiliyse Y ile Z arasında da bir ilişki beklenebilir. Böylece türetilmiş nitelik (derived attribute) elde edilebilir.
Input nitelikler ile hedef (veya türetilmiş) nitelikler arasında korelasyon yoksa tahmin modelle ilişkisizdir. Bu durumda bu nitelik ilişkisiz kabul edilir ve hedef niteliğin diğer niteliklerle korelasyonuna bakılır.
Bir diğer tahmin modelinde kullanılan linear regresyon , neural network ve deep learning için tıklayınız.