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:
Alıştırma: Anlayıp anlamadığınızı kontrol edin
"Red"
dizesi, kayan nokta sayısı değil. "Red"
gibi dizeleri kayan nokta sayılarına 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:
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:
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.