Kategorik veri: Kelime dağarcığı ve tek seferlik kodlama

Boyut terimi, bir özellik vektöründeki öğe sayısının eş anlamlısıdır. Bazı kategorik özellikler düşük boyutludur. Örneğin:

Detay adı Kategori sayısı Örnek kategoriler
snowed_today 2 True, False
skill_level 3 Başlangıç, Uygulayıcı, Uzman
season 4 Kış, İlkbahar, Yaz, Sonbahar
day_of_week 7 Pazartesi, Salı, Çarşamba
gezegen 8 Merkür, Venüs, Dünya

Kategorik bir özelliğin olası kategori sayısı düşük olduğunda bunu sözlük olarak kodlayabilirsiniz. Sözlük kodlamasıyla model, olası her kategorik değeri ayrı bir özellik olarak ele alır. Eğitim sırasında model, her kategori için farklı ağırlıklar öğrenir.

Örneğin, bir otomobilin fiyatını kısmen car_color adlı kategorik bir özelliğe göre tahmin etmek için bir model oluşturduğunuzu varsayalım. Belki kırmızı arabalar yeşil arabalardan daha değerlidir. Üreticiler sınırlı sayıda dış renk sunduğundan car_color, düşük boyutlu bir kategorik özelliktir. Aşağıdaki resimde, car_color için bir kelime dağarcığı (olası değerler) önerilmektedir:

1. şekil Paletindeki her renk ayrı bir özellik olarak gösterilir. Yani her renk, özellik vektöründe ayrı bir özelliktir.
      Örneğin, "Kırmızı" bir özellik, "Turuncu" ayrı bir özelliktir.
1. şekil Her kategori için benzersiz bir özellik.

Alıştırma: Anlayıp anlamadığınızı kontrol edin

Doğru veya Yanlış: Bir makine öğrenimi modeli, bu değerleri sayısal vektörlere dönüştürmeden "Kırmızı" ve "Siyah" gibi ham dize değerleri üzerinde doğrudan eğitilebilir.
Doğru
Eğitim sırasında bir model yalnızca kayan noktalı sayıları işleyebilir. "Red" dizesi, kayan nokta sayısı değil. "Red" gibi dizeleri kayan nokta sayılarına dönüştürmeniz gerekir.
Yanlış
Makine öğrenimi modeli yalnızca kayan nokta değerlerine sahip özellikler üzerinde eğitilebilir. Bu nedenle, eğitimden önce bu dizeleri kayan nokta değerlerine dönüştürmeniz gerekir.

Dizin numaraları

Makine öğrenimi modelleri yalnızca kayan noktalı sayıları işleyebilir. Bu nedenle, her dizeyi aşağıdaki resimde gösterildiği gibi benzersiz bir dizin numarasına dönüştürmeniz gerekir:

2. şekil. Her renk, benzersiz bir tam sayı değeriyle ilişkilendirilir. Örneğin, "Kırmızı" 0 tam sayısı, "Turuncu" ise 1 tam sayısı ile ilişkilendirilir.
2. şekil. Dizine eklenen özellikler.

Dizeleri benzersiz dizin numaralarına dönüştürdükten sonra, verileri modelin değerler arasındaki anlamlı ilişkileri öğrenmesine yardımcı olacak şekilde temsil etmek için daha fazla işlemeniz gerekir. Kategorik özellik verileri dizine eklenmiş tam sayılar olarak bırakılır ve bir modele yüklenirse model, dizine eklenmiş değerleri sürekli kayan noktalı sayılar olarak ele alır. Model, bu durumda "mor" kelimesinin "turuncu" kelimesinden altı kat daha olası olduğunu düşünür.

One-hot kodlama

Sözlük oluşturmanın bir sonraki adımı, her dizin numarasını one-hot kodlamasına dönüştürmektir. One-hot kodlamada:

  • Her kategori, N öğeli bir vektör (dizi) ile temsil edilir. Burada N, kategori sayısıdır. Örneğin, car_color sekiz olası kategoriye sahipse bunu temsil eden tek sıcaklık vektöründe sekiz öğe bulunur.
  • Tek sıcaklık vektöründeki öğelerden tam olarak biri 1,0 değerine sahiptir; kalan tüm öğeler 0,0 değerine sahiptir.

Örneğin, aşağıdaki tabloda car_color içindeki her renk için tek sıcak kodlama gösterilmektedir:

Özellik Kırmızı Turuncu Mavi Sarı Yeşil Siyah Mor Kahverengi
"Kırmızı" 1 0 0 0 0 0 0 0
"Orange" 0 1 0 0 0 0 0 0
"Mavi" 0 0 1 0 0 0 0 0
"Sarı" 0 0 0 1 0 0 0 0
"Yeşil" 0 0 0 0 1 0 0 0
"Black" 0 0 0 0 0 1 0 0
"Mor" 0 0 0 0 0 0 1 0
"Kahverengi" 0 0 0 0 0 0 0 1

Özellik vektörüne dize veya dizin numarası değil, one-hot vektör geçirilir. Model, özellik vektörünün her öğesi için ayrı bir ağırlık öğrenir.

Aşağıdaki resimde, kelime dağarcığı gösterimindeki çeşitli dönüşümler gösterilmektedir:

3. şekil Kategorileri özellik vektörleriyle eşleme sürecinin uçtan uca diyagramı. Şemada, giriş özellikleri "Sarı", "Turuncu", "Mavi" ve ikinci kez "Mavi"dir.  Sistem, giriş değerini bir kimlikle eşlemek için depolanmış bir sözlük kullanır ("Kırmızı" 0, "Turuncu" 1, "Mavi" 2, "Sarı" 3 vb.). Bu nedenle sistem, "Sarı", "Turuncu", "Mavi" ve "Mavi" değerlerini sırasıyla 3, 1, 2, 2 olarak eşler. Sistem daha sonra bu değerleri tek sıcaklık kodlu özellik vektörüne dönüştürür. Örneğin, sekiz olası rengi olan bir sistemde 3, 0, 0, 0, 1, 0, 0, 0, 0 olur.
3. şekil Kategorileri özellik vektörleriyle eşleme için uçtan uca süreç.

Seyrek gösterim

Değerleri ağırlıklı olarak sıfır (veya boş) olan özelliklere seyrek özellik adı verilir. car_color gibi birçok kategorik özellik, seyrek özellikler olma eğilimindedir. Seyrek gösterim, seyrek bir vektörde 1,0'ın konumunu depolamak anlamına gelir. Örneğin, "Blue" için one-hot vektör şöyledir:

[0, 0, 1, 0, 0, 0, 0, 0]

1, saymaya 0'dan başlandığında 2. konumda olduğundan, önceki tek sıcak vektörün seyrek gösterimi şu şekildedir:

2

Seyrek gösterimin, sekiz öğeli one-hot vektörden çok daha az bellek kullandığını unutmayın. Önemli olarak, modelin seyrek gösterim üzerinde değil, tek sıcak vektör üzerinde eğitilmesi gerekir.

Kategorik verilerdeki aykırı değerler

Sayısal veriler gibi kategorik veriler de aykırı değerler içerir. car_color, popüler renklerin yanı sıra "Mauve" veya "Avocado" gibi nadiren kullanılan aykırı renkleri de içeriyor. Bu aykırı renklerin her birine ayrı bir kategori atamak yerine bunları out-of-vocabulary (OOV) adlı tek bir "her şeyi kapsayan" kategoride toplayabilirsiniz. Diğer bir deyişle, tüm aykırı renkler tek bir aykırı değer paketinde toplanır. Sistem, bu aykırı değer paketi için tek bir ağırlık öğrenir.

Yüksek boyutlu kategorik özellikleri kodlama

Bazı kategorik özellikler, aşağıdaki tabloda gösterilenler gibi çok sayıda boyuta sahiptir:

Detay adı Kategori sayısı Örnek kategoriler
words_in_english ~500.000 "mutlu", "yürüyüş"
US_postal_codes ~42.000 "02114", "90301"
last_names_in_Germany ~850.000 "Schmidt", "Schneider"

Kategori sayısı yüksek olduğunda genellikle tek sıcak kodlama kötü bir seçimdir. Ayrı bir yerleştirme modülünde ayrıntılı olarak açıklanan yerleştirmeler genellikle çok daha iyi bir seçenektir. Gömme işlemleri, boyut sayısını önemli ölçüde azaltır. Bu durum, modeller için iki önemli avantaj sağlar:

  • Model genellikle daha hızlı eğitilir.
  • Oluşturulan model genellikle tahminleri daha hızlı çıkarır. Yani modelin gecikmesi daha düşüktür.

Karma oluşturma (karma oluşturma hilesi olarak da bilinir), boyut sayısını azaltmak için daha az kullanılan bir yöntemdir.