Boyut terimi, özellik vektörü'ndeki öğe sayısının eş anlamlısıdır. Bazı kategorik özellikler düşük boyutlu olur. Örneğin:
Detay adı | Kategori sayısı | Örnek kategoriler |
---|---|---|
snowed_today | 2 | Doğru, Yanlış |
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ı azsa bunu sözlük olarak kodlayabilirsiniz. Model, sözlük kodlamasıyla olası her bir kategorik değeri ayrı bir özellik olarak ele alır. Model, eğitim sırasında her kategori için farklı ağırlıklar öğrenir.
Örneğin, kısmen car_color
adlı bir kategorik özelliğe göre bir arabanın fiyatını tahmin etmek için bir model oluşturduğunuzu varsayalım.
Kırmızı arabalar yeşil arabalara göre daha değerli olabilir.
Üreticiler sınırlı sayıda dış renk sunduğundan car_color
düşük boyutlu kategorik bir özelliktir.
Aşağıdaki görselde car_color
için bir kelime dağarcığı (olası değerler) önerilmektedir:
Alıştırma: Sezgilerinizi kontrol edin
"Red"
dizesi kayan noktalı bir sayı değil. "Red"
gibi dizeleri kayan noktalı sayılara 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 olduğu gibi benzersiz bir dizin numarasına dönüştürmeniz gerekir:
Alıştırma: Sezgilerinizi kontrol edin
"Black"
(dizin numarası 5) değerinin model için "Orange"
(dizin numarası 1) ile karşılaştırıldığında 5 kat daha anlamlı olduğunu kabul eder.
"Black"
(endeks numarası 5) değerinin model için "Orange"
(dizin numarası 1) ile kıyaslandığında 5 kat daha anlamlı olduğunu düşünür.
Tek sıcak kodlama
Bir sözlük oluşturmanın sonraki adımı, her bir dizin numarasını kendi tek kullanımlık kodlamaya dönüştürmektir. One-hot kodlamada:
- Her kategori, N öğeden oluşan bir vektörle (dizi) temsil edilir. Burada N, kategorilerin sayısıdır. Örneğin,
car_color
sekiz olası kategoriye sahipse onu temsil eden tek sıcaklık vektörü sekiz öğeye sahip olur. - Bir sıcak vektördeki öğelerden tam 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 bir öğenin tek sıcak kodlaması gösterilmektedir:
Özellik | Kırmızı | Orange | 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 |
"Siyah" | 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 iletilen, dize veya dizin numarası değil, tek sıcaklık vektörüdür. Model, özellik vektörünün her bir öğesi için ayrı bir ağırlık öğrenir.
Aşağıdaki görselde, kelime dağarcığı temsilindeki çeşitli dönüşümler gösterilmektedir:
Seyrek gösterim
Değerleri çoğunlukla sıfır (veya boş) olan bir özellik seyrek özellik olarak adlandırılır. car_color
gibi birçok kategorik özellik daha azdır.
Seyrekte temsil, 1,0 değerinin konumunu seyrek bir vektörde depolamak anlamına gelir. Örneğin, "Blue"
için bir sıcak vektör şöyle olur:
[0, 0, 1, 0, 0, 0, 0, 0]
1
2. konumda olduğundan (sayımı 0'dan başlatırken), önceki tek sıcaklık vektörü için seyrek gösterim şu şekildedir:
2
Seyrek gösterimin, sekiz öğeli tek sıcaklık vektöründen çok daha az bellek tükettiğini unutmayın. En önemlisi, modelin seyrek temsil yerine tek sıcaklık değerine sahip vektörde eğitilmesi gerekir.
Kategorik verilerdeki aykırı değerler
Sayısal veriler gibi kategorik veriler de aykırı değerler içerir. car_color
'ün yalnızca popüler renkleri değil, "Mauve"
veya "Avocado"
gibi nadiren kullanılan bazı aykırı renkleri de içerdiğini varsayalım.
Bu aykırı renklerin her birine ayrı bir kategori vermek yerine bunları sözlük dışı (OOV) adlı tek bir "her şeyi kapsayan" kategoride toplayabilirsiniz. Diğer bir deyişle, tüm aykırı değerler tek bir aykırı değer paketinde gruplandırılır. Sistem, bu aykırı değer grubu için tek bir ağırlık öğrenir.
Yüksek boyutlu kategorik özellikleri kodlama
Bazı kategorik özelliklerin çok sayıda boyutu vardır (ör. aşağıdaki tablodakiler):
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 | Yaklaşık 850.000 | "Schmidt", "Schneider" |
Kategori sayısı yüksek olduğunda, tek seferlik kodlama genellikle 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çimdir. Yerleştirmeler, boyut sayısını önemli ölçüde azaltır. Bu da modellere iki önemli şekilde fayda 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 adlandırılır), boyutların sayısını azaltmanın daha az yaygın bir yoludur.