Özellik Mühendisliği ve Encoding İşlemleri

ANIL ŞANLI
4 min readMay 29, 2022

--

Veri Ön İşleme ve Özellik Mühendisliği Giriş

Veri Ön İşleme ve Özellik Mühendisliği makine öğrenmesi projeleri oluştururken sıkça karşılaşılan kavramlar ve bir projenin en önemli adımlarındandır. Veri Ön İşleme, Özellik Mühendisliğini etkinleştirmek için ham verileri temizleme ve hazırlama sürecini kapsamaktadır. Bu süreç farklı veri kümelerinden (veya doğrudan bir kümeden) elde edilen verilerin temizliği, parçalanması, birleştirilmesi gibi işlemleri içerir.

Özellik Mühendisliği ise modele gidecek verilere çeşitli dönüşümlerin (işlemlerin) modelin daha iyi çalışmasını (daha iyi sonuç veya daha hızlı çalışma vb.) sağlaması amacıyla uygulanmasıdır. Bir başka deyişle veri setinde olmayan yeni değişkenler oluşturmak için verilerden yararlanan bir tekniktir. Bazen bu işlem bazı değişkenlerin çıkartılması, bazen yeni değişkenler üretilmesi, bazen verilerin standartlaştırılması olabilir.

İyi Özellikler daha az hesaplama kaynağı (daha az değişken veya daha az gözlem) kullanarak sorunu daha iyi ve daha kolay çözmeye yardımcı olur.

Özellik Mühendisliği doğru ve sektörel bilgi içeren bir şekilde yapıldığında ortaya çıkan veri seti ile modeller daha optimal bir şekilde çalışır.

Bu yazıda Özellik Mühendisliği konusu altında ele alınan Encoding işlemlerinden bahsedeceğim.

Encoding

Makine Öğrenmesi algoritmalar yazıları değil de sayıları anlar, bu nedenle de algoritmaların veriyi anlaması için bir sayısallaştırma yaparız. En temelde Encoding denilen işlem bu amaca çıkar. Encoding değişkenlerin kategorik veya metinsel ifadelerin sayısal değerlere dönüştürülmesi işlemidir.

Encoding, metinleri sayılara dönüştürme işlemidir.

Label Encoding ve One Hot Encoding bu bölümde encoding yöntemleri yer alacaktır. Bunlara ek olarak da Rare Encoding adı verilen ve nadirler üzerinden bir işlem gerçekleştiren yönteme de değinilecektir.

Label Encoding

Label Encoding yöntemi basit ve doğrudan uygulanan, bir değişkendeki tüm sınıfları ayrı bir sayısal değere (aksi belirtilmedikçe alfabetik olarak) dönüştüren ve yeni bir değişken olarak veri setine ekleyen yöntemdir.

Alttaki tabloda 7 kişi ve bu kişilerin askeri rütbeleri verilmiştir. Rütbeler üzerinden Label Encoding yapılırken alfabetik sıralama yapılmamış, sıra özellikle belirtilmiş ve buna göre sayısallaştırma işlemi uygulanmıştır. Bu işlemin sebebi ise bu sınıflar arasında bir farkın (bir üstünlüğün) bulunmasıdır. Bu gibi gruplara Ordinal gruplar denir. Askeri rütbeler (bu sınıflar arasında) Orgeneral>Tümgeneral>Albay>Yarbay>Binbaşı şeklinde olduğundan sayısal değerler de bu eşitsizlikler göz önünde bulundurularak atanmıştır.

Label Encoding — 1
Ordinal Label Encoding Python Code

Alttaki tabloda Renk değişkeni üzerinden bir Label Encoding işlemi gerçekleştirilmiştir. Beyaz, Kırmızı, Pembe, Yeşil olmak üzere yer alan 4 farklı sınıf alfabetik olarak sıralanmış ve 0'dan başlayarak her bir sınıfı temsil eden sayısal değerler atanmıştır.

Label Encoding — 1
Label Encoding Python Code

Fakat bu işlem sonucu 3>2>1>0 eşitsizliklerinden ortaya çıkan Yeşil>Pembe>Kırmızı>Beyaz gibi bir ordinallik ile karşılaşılmıştır. Oysa bu renkler arasında herhangi bir rütbeleme, herhangi birinin diğerine göre üstünlüğü yoktur. Bu problem Label Encoding’te sıkça karşılaşılan bir problemdir. Bu problemin önüne geçmek için One Hot Encoding yöntemi uygulanabilir.

One Hot Encoding

One Hot Encoding bir değişkendeki tüm sınıfların yalnızca ikili değerler (binary, {0, 1}) alabileceği şekilde ayrı bir değişken olarak veri setine eklenmesi yöntemidir. Bu sayede ordinallik bulunmayan sınıflar için doğru bir encoding işlemi uygulanmış olur.

Alttaki tabloda Renk değişkeni üzerinden One Hot Encoding uygulanmıştır. Beyaz, Kırmızı, Pembe, Yeşil sınıfları ayrı birer değişken olarak veri setine eklenmiş ve bu değişkenlerin alabileceği değerler olarak sadece 0 ve 1 belirlenmiştir. Yeni oluşturulan değişkenlerde eğer o gözlem temsil ediliyorsa 1, eğer o gözlem birimini karşılamıyorsa 0 değeri girilmiştir. Böyle bir durumda (bir uygulama için) One Hot Encoding sonucu oluşan değişkenlerde bir gözlemde sadece tek bir değerin 1 olmasını bekleyebiliriz.

One Hot Encoding — 1
One Hot Encoding Python Code

One Hot Encoding’te de karşılaşılan bir problem bulunmaktadır: Dummy Değişken Tuzağı. Dummy Değişken Tuzağı, genellikle One Hot Encoding işlemi uygulandıktan sonra ortaya çıkan, iki veya daha fazla değişkenin yüksek korelasyon içerdiği ve bir değişkenin diğerlerinden çıkartılması (tahmin edilmesi) nedeniyle oluşan bir durumdur. Örnek olarak alttaki tablo incelendiğinde bu durum incelenebilir. Tabloda üniversite isimleri ve üniversitenin devlet üniversite mi yoksa vakıf üniversitesi mi olduğu temsil edilmektedir ve tabloya One Hot Encoding uygulanmıştır. Oysa tablodaki durumda bir üniversitenin vakıf olup olmadığı devlet olup olmadığına bağlıdır. Eğer Tür_Devlet değişkeni ilgili üniversite için 1 ise otomatik olarak Tür_Vakıf değişkeni 0 olacaktır ve bu tüm gözlem birimleri için geçerlidir. Böyle bir durumda yeni değişkenlerden birinin dışarıda bırakılması ve veri setinde yer almaması Dummy Değişken Tuzağı’ndan kurtaracaktır.

Dummy Değişken Tuzağı
Dummy Değişken Tuzağı Python Code

Rare (Nadir) Encoding

Rare Encoding yöntemi temsiliyeti az olan değerleri gruplandırmak ve ortak bir “Nadir Etiket”te toplamak için kullanılan yöntemdir.

Örnek olarak satılan 1000 adet telefonun markalarını incelediğimizde 200'er adet Huawei, Xiaomi ve Apple, 175'şer adet Samsung ve OPPO olduğunu görüyoruz, geri kalan 50 telefonun ise Vivo, General Mobile, POCO, HONOR şeklinde dağıldığını görüyoruz. Bu durumda temsiliyeti az olan markaların bir araya gelerek bir etiket oluşturması temsiliyeti artıracak ve daha anlamlı bir gruplandırma olacaktır.

Rare Encoding
Rare Encoding Python Code

--

--