Veri bilimi ve makine öğrenimi süreçlerinde, veri setlerinde bulunan kategorik değişken türlerinin (yazılar, cümleler gibi text/string formatında olan veriler) makinelerin anlayabileceği bir formatta yeniden yazmaya Encoding denir. Kategorik değişkenler, algoritmalar tarafından işlenebilir bir hale getirilmesi amacıyla, sayısal temsili değerlere dönüştürülür.
Encoding (karakter kodlaması) değişkenlerin temsil şekilleri ile ilgili değişiklikler yapmaktır. Yaygın kullanılan encoding yöntemlerine label encoding ve one-hot encoding örnek olarak verebiliriz. Gerekli görülmesi durumunda rare encoding gibi yöntemler de bu kapsamda kullanılabilir. Şimdi bu yöntemleri detaylı bir şekilde inceleyelim.
Bir kategorik değişkenin sınıfları labellardır. Label encoding bu sınıfları modellerde daha kullanışlı ve modellerin anlayabileceği hale getirecek şekilde kodlama yöntemlerinden biridir. Label encoding yapılacak olan bir kategorik değişkenin iki sınıfı olması durumunda yapılacak işleme özel olarak binary encoding (ikili karakter kodlaması) adı verilir. Örneğin string ifadeler ile temsil edilen kadın/erkek olma durumunu, 0 ve 1 değerlerini kullanarak ifade etmek bir label encoding yöntemidir.
Aynı şekilde farklı veri setlerinde de kategorik değişkenleri 0, 1, 2, 3 gibi sayısal olarak, kullanılacak yöntemlerin anlayabileceği bir dile çevirme şekillerinden birisidir. Bu kapsamda yukarıda betimlenen veri setinde gözlemlenen kadın erkek örneğindeki gibi elimizde iki sınıflı bir kategorik değişken olduğundan, bu iki sınıfta kategorik değişkenleri 0 ve 1 olacak şekilde dönüştürebiliriz.
Bir başka senaryo üzerinde, eğitim durumu ile ilgili bir değişkeni incelediğimizi ve bu eğitim durumu değişkenini label encoding yöntemi kullanılarak kodlamak istediğimizi düşünelim. İncelenen örnek eğitim seviyesi gibi birbirleri arasında hiyerarşik bir düzenin olduğu bir durum (ordinal değişken) içerdiğinden değişken pre-school’dan (okul öncesi) PhD’ye (doktor) doğru 0’dan 5’e olacak şekilde kodlanabilir, böylece sınıflar arasındaki fark temsil edilebilir.
Bir başka örnek olarak elimizde, bir kategorik değişken olarak basketbol takımlarının yer aldığını düşünelim. Basketbol takım isimleri kategorik formda, bir string ifade olarak temsil edilir. Basketbol takımları değişkeni, yukarıdaki eğitim örneğinin aksine birbirleri arasında ordinal bir sıra belirtmediğinden kodlama işlemi, algoritmanın değişkeni sayısal büyüklük olarak tanımaması adına 0’dan 5’e olacak şekilde yapılamaz. Kullanılacak olan algoritmalara ve yöntemlere göre farklılık gösteriyor olsa da, kullanacağımız bir takım modellemelerde, büyüklük-küçüklük algısı bozulabilir. Yani büyüklük-küçüklük durumu betimlenmemesi gerektiği halde bir takımın sınıfının diğer takımın sınıfından büyük ya da küçük olarak algılanmasına neden olunabilir. Bu gibi durumlarda kullanılması gereken kodlama türü one-hot kodlamadır (one-hot encoding). One-hot encoding, her bir sınıfı bir sütun olarak farklı bir değişkene dönüştürerek, nominal kategorik değişkenlere encoding uygulanması kapsamında çözüm getirir.
Label encoding bazı durumlarda bir kategorik değişkenin önemli olabilecek sınıflarını değişken haline getirerek, ilgili sınıfın gözlemlenme önemini vurgulamak amacıyla da kullanılabilir.
Cinsiyet (kadın - erkek) değişkeni gibi sınıflar arası fark olmayan başka bir deyişle nominal değişkenlerde, label encoding kullanılması durumunda verilen sayısal temsiller, bir büyüklük küçüklük ifade etmesinden kaynaklı olarak ordinal değişkenlerde yapılan encodinge benzer şekilde sıralama durumunun oluşmasına sebep olur. Encode edilen nominal kategorik değişkenin sınıfları arasında sınıfsal bir farklılık olmamasına karşın, label encoding sonucu bir sınıfsal fark varmışcasına betimlemeye sebep olabilir. Bu nedenle label encoding tekniğini nominal değişkenler özelinde kullanmak doğru bir yaklaşım olarak nitelendirilmeyebilir. Bu durum ağaç tabanlı yöntemlerde, değişkenler arası bir sıralama ve dallara göre bölme işlemi barındırmasından ötürü etkisini göstermese de doğrusal ve fonksiyonel yöntemlerde ciddi seviyede hissedilecektir. Dolayısıyla nominal değişkenlerin gözlemlendiği durumlarda doğru bir değer dönüşümü ve temsil şekli uygulamak adına label encoding tercih edilmez. Nominal değişkenleri bir ölçüm problemine sebep olmadan oluşturmak adına one-hot encoding tekniği uygulamak çok daha doğru bir yaklaşım olacaktır. One-hot encoding tekniğinde nominal değişkenin sınıfları değişkenlere dönüştürülür. Yani nominal değişken, her bir sınıftan ayrı bir sütun (değişken) oluşturulması yoluyla encode edilir.
Örneğin yukarıdaki tabloda gösterilen örnekte, bir satırdaki gözlem biriminde takım değişkeni eğer Pistons sınıfına aitse, Pistons sütununa 1 değeri, diğer sınıf sütunlarına ise 0 yerleştirilir. Benzer şekilde eğer ikinci satırdaki gözlemde takım değişkenin değeri Lakers ise Lakers sütunu için 1 değeri, diğer sütunlara ise 0 değeri yazılmıştır. Yani takımları temsil eden kategorik sınıflar değişkenlere dönüştürülmüş, böylece label encoding’deki ordinallik sorunundan kurtulunmuş olunur.
Bu konuda dikkat edilmesi gereken bir husus ise one-hot encoding tekniğinin bir dummy değişken tuzağına sebep olmasıdır. One-hot encoding’in sınıflar adına oluşturduğu değişkenler dummy (kukla) değişkenlerdir. Kukla değişkenler eğer birbiri üzerinden oluşturulabilir haldeyse, bu durum ilgili değişkenler arasında yüksek bir korelasyona sebep olur. Bunun sonucunda ise ortaya bir ölçme problemi çıkmaktadır. Bu sebeple Dummy değişken oluştururken ilk sınıf drop edilirek birbiri üzerinden oluşturulma durumu ortadan kaldırılmaya çalışılır.
Özet olarak eğer bir kategorik değişken one-hot encoder’dan geçiriliyorsa, ilk sınıfın drop edilmesi ve işlemlere buna göre devam edilmesi gerekmektedir.
Rare nadir, az gözlemlenen demektir. Bir veri setindeki kategorik değişkenlerin sınıflarının gözlenme sayılarını incelendiğinde bazı gözlem sınıflarının frekanslarının çok düşük olduğunu düşünelim. Bunun gibi bir senaryoda çok düşük frekanstaki gözlemler için one-hot encode ile bir değer ataması yapılması uygun olmayacaktır. Çünkü çok düşük frekanstaki her bir gözlem için yeni bir sütun oluşturulacak, ilgili sınıfa ait olmayan diğer gruplar için 0 değeri verilecektir. Bu da çok sayıda 0’dan oluşan gereksiz sütunun oluşmasına neden olacaktır.
Model geliştirme süreçlerinde genellikle karmaşıklığın aksine, basitlik ve genellenebilirlik ile ilgileniyor oluruz. Buradaki genellenebilirlik, tüm veri setini kapsamaktan ziyade büyük çoğunluğu temsil etmek şeklinde nitelendirilebilir. Bir araba fiyat tahmin modelimiz olduğunu ve model için kullanılan veri setinde yüz binlerce satırlık bir veri setinde yalnızca birkaç satırda görülen değerler olduğunu düşünelim. Düşük frekansta gözlenen bu değerlerin modelde tekil olarak karşılık bulma ihtimali düşüktür. Öte yandan taşıdığı bilgi anlamında, bağımlı değişken için bir ayırt ediciliğe sahip olup olmama durumu da belli değildir. Bu kapsamnda gereksiz birçok fazla değişkenin mevcudiyeti hem iterasyon süreçlerini, hem opitmizasyon süreçlerini hem de ağaç yöntemlerindeki bölünme süreçlerini ciddi seviyede etkileyecektir. Gereksiz değişkenlerden uzaklaşmak amacıyla rare encoding kullanılması uygun olacaktır.
Rare encoding tekniği uygulanırken bir eşik değer belirlenir (oran ya da frekans şeklinde olabilir) ve bu eşik değerden daha düşük sayıda frekansa sahip olan değerler gözlemlenmek istenmiyorsa, bu değerleri tek tek ifade etmek yerine bir arada temsil etmek tercih edilebilir. Bu durum sınıf sayısının azalmasına sebep olur ve daha önce çok sayıda farklı sınıfı ifade eden ama çok yüksek ihtimalle temsil etme açısından güçlü olan bilgiler taşımayan ve veride gözlemlenme olasılığı düşük olan bu değişkenlerin hepsi bir araya getirilir.
Nominal ve ordinal değişkenler için label, binary, one-hot ve rare encoding gibi farklı tekniklerle kullanılan birçok encoding işlemi vardır:
Encoding bir veri bilimi ve makine öğrenimi projesinin en önemli aşamalarından biridir. Doğru teknikleri kullanmak, projeden elde edilen sonuçları ciddi oranda etkileyecektir. Bu sebeple, iyi bir veri bilimcinin encoding kapsamında mutlaka sağlam bir bilgi alt yapısına sahip olması gerekir.
Encoding ve Özellik Mühendisliği hakkında detaylı bilgi edinmek isterseniz Miuul'un Özellik Mühendisliği üzerine oluşturduğu eşsiz eğitimlere mutlaka göz atın. Veri bilimini kariyer yolunuz haline getirmek istiyorsanız, Miuul’un Veri Bilimci Kariyer Yolculuğu tam olarak aradığınız eğitimi sizlere sunacaktır.