Öznitelik Mühendisliği

Makine öğrenmesinde modellere verilen gerçek dünya verileri birer öznitelik vektörü halindedir ve bu öznitelik vektörleri ham veriden çıkartılır. Öznitelik mühendisliği, makine öğrenmesi modeli veya görevi için verilerden en uygun özellikleri elde etme işlemidir. Özelliklerin kendileri kadar sayısı da önemlidir, modele verilen, gerçek dünya verilerini temsil eden öznitelik vektörlerindeki özellikler yeterli değilse model asıl görevini yerine getiremeyecektir; eğer gereğinden fazla ve alakasız özellikler içeren bir öznitelik vektörü varsa da model yine doğru sonuçlar üretemeyecektir. Makine öğrenmesi sürecinde sadece model değil aynı zamanda veriyi temsil edecek özellikler de seçilir. İyi seçilmiş özellikler, sonraki modelleme adımlarını kolaylaştırır ve elde edilen modelin istenen görevi tamamlama yeteneğini artırır ancak özellikler düzgün seçilmez ise aynı performans seviyesini elde etmek için çok daha karmaşık bir model gerekebilir.

Görüntü, ses, metin gibi yapılandırılmamış veriler üzerinde çalışılacağı zaman veriye özel işlemler yapmak gerekir ancak yapılandırılmış veriler üzerinde temel olarak temizleme, dönüştürme ve düzenleme işlemleri yapılabilir. Bu işlemlere ek olarak öznitelik mühendisliğin devreye girdiği en önemli süreç, varolan verileri ve bazen dış kaynaklardan toparlanan veriler ile birlikte kullanarak yeni öznitelikler türetmektir. Temel işlemlerden bazıları aşağıda verilmiştir ve liste genişletilebilir.

Veri Temizleme

  1. Çift değerlerin silinmesi: Veri seti içerisinde aynı özelliğe sahip veri nesnelerinden birden fazla bulunabilir. Bu durumda çift değerlerden yalnızca biri kalacak şekilde diğerleri silinir. Bazen aynı veri nesnesinden değil aynı özellikten birden fazla bulunabilir yine çift özellikler silinir.
  2. Alakasız değerlerin silinmesi: Genelde birincil veri olmayan veri setleri içerisinde makine öğrenmesi modelinin gerçekleştireceği görev ile alakasız çok fazla özellik bulunur ve bu alakasız özelliklerin silinmesi gerekir.
  3. Tutarsız değerlerin kaldırılması: Veri seti içerisinde yaş değerinin negatif girilmesi veya yaş alanı ile doğum tarihi alanının birbiri ile uyuşmaması gibi tutarsızlıklar olabilir. Bu gibi durumlarda, makine öğrenmesi modelinin düzgün bir şekilde çalışabilmesi için tutarsız değerlerin kaldırılması gerekir.
  4. İstenmeyen sütunun veya satırın kaldırılması: Bazen veri setinin boyutunun azaltılması bazen de sadece istenmediği için bazı özelliklerin veya veri nesnelerinin veri setinden kaldırılması gerekebilir.
  5. Yanlış etiketlenmiş değerlerin silinmesi: Bir kedi görüntüsünün köpek olarak işaretlenmesi gibi, makine öğrenmesi modellerinin doğru öğrenebilmesi için yanlış etiketlenmiş verilerin silinmesi gerekir.
  6. Eksik değerlerin silinmesi: Çoğu makine öğrenmesi modeli eksik veriler ile çalışamaz bu nedenle özellikleri eksik olan veri nesnelerinin silinmesi gerekir.
  7. Aykırı değerlerin kaldırılması: Güçlü algoritmalar ve aykırı verilere karşı toleranslı makine öğrenmesi modelleri olmasına rağmen çoğu model aykırı veriler olmadan daha iyi bir performans ile çalışacaktır bu nedenle veri seti içerisindeki aykırı verilerin kaldırılması gerekir.

Veri Dönüştürme

Ölçeklendirme

Birçok makine öğrenmesi modeli, özniteliklerin aynı ölçeğe sahip olması durumunu bekler veya aynı ölçeğe sahip veriler ile daha etkili çalışır. Bu nedenle geniş bir aralıkta dağılmış veri nesneleri içeren bir veri seti üzerinde yapılan ölçeklendirme işlemleri genelde modelin performansını artırır. Genellikle, normal dağılıma sahip verileri normalize etmek ve normal dağılıma sahip olmayan verileri ise standartlaştırmak gerekir.

  1. Standartlaştırma: Standartlaştırma (Z-puan normalleştirme) yoluyla özellikleri ölçeklendirmek, birçok makine öğrenmesi algoritması için önemli bir ölçeklendirme yöntemidir. Standartlaştırma, verileri, standart bir normal dağılım özelliklerine sahip olacak şekilde, ortalamaları (\mu) 0 ve standart sapmaları (\sigma) 1 olacak şekilde ölçeklendirmektir. Verilerin standart puanları (z puanları) \mu=0 ve \sigma=1 olmak üzere z = \frac{x-\mu}{\sigma} olarak hesaplanır.
  2. Normalize etme: Min-max ölçekleme olarak da bilinen normalizasyon yaklaşımında veriler sabit bir aralık içerisinde ölçeklenir bu aralık genelde 0, 1 arasında olur. Sınırlandırılmış bir aralığa sahip olmanın maliyeti, standartlaştırmanın aksine, aykırı değerlerin etkisini tolere edebilen daha küçük standart sapmalarla sonuçlanır. Min-max ölçekleme (normalize etme) X_{normalize} = \frac{X-X_{min}}{X_{max}-X_{min}} olarak hesaplanır.

Haritalama

Makine öğrenmesi modellerine verilmek üzere hazırlanan öznitelikler bazen direkt olarak kullanılmazlar. Bu sebeple, seçilen özniteliklerin belirli başka değerlere eşlenip haritalanması gerekir.

  1. Boolean indeksleme: Veri seti üzerinde bazen özniteliklerin sadece bazı şartları sağlayıp sağlamadığı bilinmek istenir. Örneğin reşit olanlar kimler bulunmak istendiğinde 18 yaşından büyük olanlar doğru, küçük olanlar yanlış olarak işaretlenebilir. Bu amaçla, istenen şartları sağlayan özniteliklerin 1 (doğru), sağlamayanların ise 0 (yanlış) olarak işaretlenmesi işlemi boolean indeksleme olarak bilinir.
  2. Kodlama: Veri seti içerisindeki öznitelikler, sadece kategorik değerlerden oluşabilir ve bazen özniteliklerin sayısallaştırılması istenir. Örneğin, bardak ölçüsü olarak, küçük, orta ve büyük kullanıldığında ve bu öznitelikler sıralama gibi matematiksel bir işleme tabi tutulmak istendiğinde, küçük 1, orta 2 ve büyük 3 olmak üzere kodlanabilir. Cinsiyetlerin, örneğin, erkek 1 ve kadın 0 olarak etiketlendiğinde, cinsiyet özniteliği için yeni oluşan 0,1 değerlerine kukla değişken denir. Kukla değişken, kategorik bir değişkeni, sayısal bir değişken ile ifade eden değerdir. Bazı durumlarda, örneğin cinsiyette olduğu gibi, kadın ve erkek arasında, bardak ölçülerinde olduğu gibi bir büyüklük veya üstünlük yoktur. Böyle durumlarda, one-hot kodlama kullanılır. Cinsiyet özniteliği, kadın ve erkek olarak iki özniteliğe ayrılır. Erkek olma durumunda erkek özniteliği 1, kadın özniteliği 0 değerini alır veya tam tersi. Böylece, her veri nesnesi için öznitelik sayısında bir artış olsa da, öznitelikler arasındaki sayısal büyüklük problemi ortadan kalkmış olur.
  3. Ayrıklaştırma: Ayrıklaştırma, sürekli sayısal öznitelikleri paket adı verilen ayrık başka özniteliklere eşleme işlemidir. Oluşan paketler birer kategorik özniteliktir ancak kategorik özniteliklerde bulunmayan sıralı bir yapıya sahiptirler. Verinin ayrıklaştırılma işlemi iki şekilde gerçekleşebilir, ya paketler eşit büyüklükte tutulup ya da paketler eşit frekansta yani eşit miktarda veri içerecek şekilde seçilip ayrıklaştırılabilinir. Örneğin öğrencilerin sınav notlarına bakıldığında, … 60-70 aralığı orta, 70-80 aralığı iyi, 80-90 aralığı çok iyi, … olarak eşlendiğinde verilerin eşit paketler haline ayrıklaştırıldığı söylenebilir. Aynı şekilde her not aralığında eşit sayıda öğrenci kalacak şekilde sınav notları ayrıklaştırılabilinir; bu da eşit frekanslı paket seçimi ile olur. Ayrıklaştırma, makine öğrenmesinde özellikle yoğunluk tahminlerinde çok kullanışlıdır.
  4. Fonksiyon uygulama: Özniteliklere bazen belirli işlemlerin yapılması istenebilir ve böyle bir durumda tüm özniteliklere aynı fonksiyon uygulanır. Bu fonksiyon, sayısal veriler üzerindeki çeşitli matematiksel işlemler olabileceği gibi bir doğum tarihinden yılı seçmek veya isim soyisim yazılı bir öznitelikten ismi ayırmak için de olabilir.
  5. Filtreleme: Özniteliklere bir fonksiyon uygulandığında genelde bir seçme ve ayarlama işlemi yapılıyorken filtreleme işlemi ile istenmeyen özniteliklerin ayrılması sağlanıyor. Filtreleme sayesinde veriyi gürültüden ve aykırı noktalardan temizleme işlemi gerçekleşti-rilebilir.

Birleştirme

Makine öğrenmesi algoritmalarının düzgün çalışabilmesi için veri setlerinin belirli büyüklükte, yeterli sayıda öznitelik ve veri nesnesi içermesi gerekir.

  1. Yatay veya dikey birleştirme: Makine öğrenmesi modellerine vermek üzere veri setlerini hazırlarken, aynı özniteliklere sahip farklı nesneler içeren veri setlerini kullanabilmek için verileri alt alta eklemek gerekebilir veya aynı nesnelere ait farklı öznitelikler içeren veri setlerini yan yana ekleyerek veri setini zenginleştirmek gerekebilir.
  2. Yeni veri ekleme: Veri setini ihtiyaç doğrultusunda büyütmek gerektiğinde yeni nesneler veya yeni öznitelikler eklenebilir.

Küçültme

Veri seti bazen makine öğrenmesi algoritmalarının düzgün çalışamayacağı kadar çok veri nesnesi içerebilir veya modellerin işleyemeyeceği kadar çok boyuta sahip olabilir. Böyle durumlarda veri setini küçültmek gerekir.

  1. Sayısal küçültme: Veri nesnelerin öznitelik değerleri bazen çok büyük değerler alabilir. Bu nedenle değerlerin sayısal olarak küçültülmesi gerekebilir.
  2. Boyut küçültme: Veri çok boyutlu olduğu zaman boyutsallığın lanetinden kurtulmak için çeşitli boyut azaltma teknikleri kullanılabilir.
  3. Sıkıştırma: Veri setini küçültmek gerektiğinde sıkıştırma yöntemleri kullanılabilir.

Veri Düzenleme

Makine öğrenmesi sistemine vermek üzere hazırlanan veri seti üzerinde, veri seti içerisindeki nesneleri ve öznitelik değerleri ile ilgili bazı düzenlemeler yapmak gerekebilir.

  1. Sıralama: Özellikle zaman serisi modellerinde olduğu gibi verilerin sıralarının önemli olduğu durumlarda veri setinin, nesnelerin belirli özniteliklerine veya zamana göre sıralanması gerekir.
  2. Seçme: Veri setlerinin özellikle eğitim ve test diye ayrılması gerektiği gibi bazı özel durumlarda verilerin bir bölümünün seçilmesi gerekebilir.
  3. Eksik değerlerin doldurulması: Eksik değerlerin olduğu alanlar, özniteliğin ortalaması veya medyanı ile doldurma gibi çeşitli veri doldurma teknikleri ile düzenlenebilir.
  4. Yanlış etiketlenmiş verilerin düzeltilmesi: Yanlış etiketlenmiş veriler silinebileceği gibi doğru etiket ile düzeltilebilir.
  5. Yazım hatalarının düzeltilmesi: Veri seti içerisinde aynı öznitelik değerini gösteren ancak yazım hatalarından kaynaklı farklılıklar düzeltilebilir.
  6. Yapısal hataların düzeltilmesi: Sadece yazım hataları değil özellikle metin alanları içerisindeki büyük küçük harf yazım farklılıkları gibi yapısal hatalar da düzeltilebilir.


Business vector created by stories – www.freepik.com