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 |
Bir kategorik özelliğin olası kategori sayısı düşükse bu özelliği sözlük olarak kodlayabilirsiniz. Sözlük kodlaması sayesinde model, olası her kategorik değeri ayrı bir özellik olarak değerlendirir. Model, eğitim sırasında 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 edecek 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: Öğrendiklerinizi test edin
Dizin numaraları
Makine öğrenimi modelleri yalnızca kayan noktalı sayıları işleyebilir. Bu nedenle, her bir dizeyi aşağıdaki görselde gösterildiği gibi benzersiz bir dizin numarasına dönüştürmeniz gerekir:
Dizeleri benzersiz dizin sayılarına dönüştürdükten sonra, modelin değerler arasındaki anlamlı ilişkileri öğrenmesine yardımcı olacak şekilde verileri daha da işlemeniz gerekir. Kategorik özellik verileri dizine eklenen tam sayılar olarak bırakılırsa ve bir modele yüklenirse model, dizine eklenen değerleri sürekli kayan noktalı sayılar olarak değerlendirir. Bu durumda model, "mor"un "turuncu"ya kıyasla altı kat daha olası olduğunu düşünür.
Tek sıcak kodlama
Kelime dağarcığı oluşturmanın bir sonraki adımı, her bir dizin numarasını one-hot kodlamasına 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, geri kalan tüm öğeler ise 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ı | 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 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 seyrek olma eğilimindedir.
Seyrekte temsil, 1,0 değerinin konumunu seyrek bir vektörde depolamak anlamına gelir. Örneğin, "Blue"
için tek sıcaklık vektörü:
[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 | ~850.000 | "Schmidt", "Schneider" |
Kategori sayısı yüksek olduğunda tek sıcak kodlama genellikle kötü bir seçimdir. Ayrı bir Yerleştirmeler modülünde ayrıntılı olarak açıklanan yerleştirmeler genellikle çok daha iyi bir seçenektir. Yerleşimler, 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 bilinir), boyut sayısını azaltmanın daha az kullanılan bir yoludur.
Karma oluşturma hakkında bilgi edinmek için burayı tıklayın.