Veri türlerini dönüştürme
Makine öğrenimi modelini eğittiğinizde veri kümesinin tüm veri türlerini doğru biçimde temsil etmesi önemlidir. Bir değişken yanlış temsil ediliyorsa bu, modelin doğruluğunun düşük olmasına veya model iyi görünmesine rağmen gerçek dünya verilerine uygulandığında iyi tahminler yapamamasına neden olabilir. Her bir özelliğin neyi ölçtüğünü ve söz konusu özellik için uygun bir temsilin nasıl atanacağını ayırt edebiliyor olmanız gerekir.
Genellikle makine öğrenimi, ondalık veri türündeki her şeyi sayısal değer, dize biçimindeki tüm değerleri ise kategorik olarak kabul eder. Ancak bu, aşağıdaki örneklerde göreceğimiz gibi her zaman doğru yorumlama biçimi olmayabilir.
Örnekler, şu soruyu yanıtlamak üzere toplanmış bir veri kümesini temel alır: "Kullanıcı, ilk kez satın alma işlemi yaptığı tarihten sonra 30 gün içinde yeniden satın alma gerçekleştirecek mi?" Veri kümesi dize, ondalık, tam sayı, boole değeri ve tarih gibi farklı veri türleri barındıran sütunlar içerir.
Dizeler
Aşağıdaki tabloda, veri türü dize olan iki sütun gösterilmektedir. MarketingSource sütunundaki değerler arasında, örneğin "Facebook" ve "Müşteri Tavsiyesi" arasında ölçülebilir bir fark yoktur. Sayısal veya skaler ilişki bulunmadığından sütun, kategorik olarak kabul edilmelidir.
Diğer taraftan, SourceCostPerAcquisition sütunundaki değerler "Düşük" ile "Yüksek" olarak değişmektedir ve aralarındaki fark daha ölçülebilirdir. Kaynak ediniminin dolar cinsinden ortalama maliyeti gibi kesin olmasa da değerler arasında belirgin bir boyut sıralaması vardır. Bu durumda SourceCostPerAcquisition sütununu kategorik veya sayısal olarak kabul etmek gerekip gerekmediği tartışılabilir.
Bu durumlarda önerilen bir uygulama, her biri özelliklerin farklı bir olası sınıflandırmasına sahip iki ayrı yapılandırma oluşturmaktır. Bu deneyler ayrı olarak yürütülecektir. İlk yapılandırma orijinal dize gösterimi için olacaktır. İkinci yapılandırmada, sütunu double veri türüne dönüştürerek farklı değerlere sayısal bir eşleme verirsiniz. Örneğin, "Düşük" = 1,0, "Orta" = 2,0 ve "Yüksek" = 3,0. Her bir yapılandırmayı çalıştırdıktan sonra, söz konusu kullanım durumu için hangi yapılandırmanın daha iyi çalıştığını daha iyi anlayabilirsiniz. Bazı durumlarda, bir dize gösterimi kullanmak mantıklıdır ve diğerlerinde sayısal bir gösterim daha mantıklı olabilir.
Sayılar
Sütundaki verilerin tanımladıkları arasında ölçülebilir bir fark olduğunda bu, sayısal değerlerle temsil edilmelidir. Maliyet, gelir, kâr, miktar, toplam ve ortalama buna örnek olarak gösterilebilir.
Veri kümesi, bazen sözlük veya kimlik numarası gibi artan bir değer olduğundan ölçülebilir olmayan sayısal değerler içerebilir. Örneğimizde, PersonID sütunundaki değerler "Person_" ile başlamasaydı yanlışlıkla sayısal değer olarak algılanabilirdi. Kimlik numaraları sayısal değerler olarak işlenirse bu satırlar arasındaki fark hatalı temsil edilmiş olur. Bu tür durumlarda en iyi uygulama, kimli numaralarının dize olarak gösterilmesidir. Bir veri kümesini kullanmadan önce sayısal sütunlardan herhangi birinin kategorik değerlere dönüştürülüp dönüştürülmeyeceğini belirlemeniz gerekebilir.
Tarihler
Makine öğrenimi bağlamında tarih alanı türleri, kategorik değişkenlerdir. Tarihler ve zaman damgaları ile çıkarma işlemi yapılabilir ancak tarihin birden çok bileşeni vardır. Önemli olan bu bileşenlerden hangilerinin nasıl değerlendirileceğidir: Değer yıl, ay, ayın veya yılın günü ya da günün saati mi olmalıdır? Belki de dakika olarak farkı kullanmak istiyoruz. En fazla tahmin gücünü elde etmek için tarih, en azından birkaç bileşene ayrıştırılmalıdır. Bu bileşenlerden bazıları kategorik, bazıları da sayısal olabilir.
Örneğin, tarih haftanın günü olarak ayrıştırılabilir. Bu, sayısal bir değerle (1-7 arasında) veya dize değeriyle ("Pazar" - "Cumartesi" arasında) temsil edilebilir.
Haftanın gününün sayısal değerle temsil etmek bazı sorunları beraberinde getirir. Hafta ne zaman başlıyor? Pazartesi mi pazar mı? Ayrıca haftanın günü önemli olsa bile döngüsel bir trendde gizlenmiş olabilir.
Bazı durumlarda, haftanın pazartesi ile başladığı Grafik 1'deki gibi, trend son derece açıklayıcı olabilir.
Grafik 2, Grafik 1 ile aynı verileri içeriyor ancak bir gün kaydırıldığından hafta Pazar gününden başlıyor. Burada verinin önemi çok daha azdır.
Grafik 3'te, sayısal değer olarak ayrıştırılmış tarih bileşeni kullanımıyla ilgili başka bir sorun gösterilmektedir. Belirgin bir örüntü bulunuyor olabilir ancak bu örüntü doğrusal değilse fark edilmez. Bu durumdan ve tarih bileşenlerinde sıkça görülen döngüsel trendlerden (ör. günlük veya çeyrek dönemlik mevsimsellik) ötürü ilgili bileşenlerin sayısal değer olarak değil, kategorik değer olarak kullanılması önerilir.
Qlik AutoML, tarih ve zaman damgası bileşenlerini kendi farklı sütunlarına ayırmak için otomatik özellik mühendisliğini kullanır. Bu, oluşturduğunuz modellerin tahmin yeteneğini geliştirmeye yardımcı olur. Bir ana tarih özelliğinden türetilen otomatik mühendislik özellikleri sayısal özellikler olarak sınıflandırılır. Gerekirse tarih sütunlarının kategorik olarak ele alınması için bu işlevi geçersiz kılabilirsiniz. Daha fazla bilgi için bkz. Tarih özelliği mühendisliği.
Tarih farkları
Tarih farkları, artan kimlik numaralarının iyi bir alternatifi olarak kullanılabilir. Artan kimlik numaraları, yalnızca kayıtların tabloya eklenme sırasını açıklar. Artan kimlik numaraları hacimdeki değişim (çoğu örnekte gün başına düşen müşteri sayısı) nedeniyle kolayca eğrilebilir ancak tarih farkı bu hızdan bağımsızdır.
Tarih farkı, saniye, saat, gün, ay veya çeyrek gibi çeşitli ölçümlerden biri olabilir. Verilerinizin detay seviyesine en uygun olan seçeneği belirleyin. Örneğin, aylık verilere bakarken gün olarak tarih farkı hiçbir değer katmaz. Bu durumda ay olarak tarih farkı daha uygun olacaktır.