Boyut terimi, bir özellik vektörü. Bazı kategorik özellikler düşük boyutlu. Örneğin:
Detay adı | Kategori sayısı | Örnek kategoriler |
---|---|---|
snowed_today | 2 | Doğru, Yanlış |
skill_level | 3 | Başlangıç, Pratik, 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ı az olduğunda, sözlük olarak kodlamanız gerekir. Model, sözlük kodlamasıyla her olası kategorik değer olarak ayrı bir özellik olarak ekleyebilirsiniz. Eğitim sırasında, model her kategori için farklı ağırlıklar öğrenir.
Örneğin, bir arabanın fiyatı temel alınarak tahmin edilen,
kısmen car_color
adlı bir kategorik özellikte.
Belki de kırmızı arabalar yeşil arabalardan daha değerlidir.
Üreticiler sınırlı sayıda dış renk sunduğu için car_color
kategorik bir özelliktir.
Aşağıdaki resimde
car_color
:
Alıştırma: Sezgilerinizi sınayın
"Red"
dizesi, kayan nokta sayısı değil. Siz
"Red"
gibi dizeleri kayan nokta sayılarına dönüştürmelidir.
Dizin numaraları
Makine öğrenimi modelleri yalnızca kayan nokta sayılarını değiştirebilir. Bu nedenle, her bir dizeyi aşağıdaki gibi benzersiz bir dizin numarasına dönüştürmeniz gerekir: şu çizimi kullanın:
Sezgilerinizi sınayın
"Black"
(dizin numarası 5)
daha fazla "Orange"
(dizin numarası 1) olduğunu görebilirsiniz.
"Black"
(dizin numarası 5) şu şekilde kabul edilir:
Model, "Orange"
metriğine kıyasla 5 kat daha anlamlıdır
(dizin numarası 1).
Tek seferde kodlama
Sözlük oluşturmanın bir sonraki adımı, her bir dizin numarasını tek seferlik kodlama. Tek seferlik kodlamada:
- Her kategori, N elemanlarından oluşan bir vektör (dizi) ile gösterilir. Burada N
kategori sayısıdır. Örneğin,
car_color
için sekiz temsil eden tek sıcak vektörün sekiz öğesi olacaktır. - Tek seferlik bir vektördeki öğelerden tam olarak biri 1,0 değerine sahiptir; kalan tüm öğeler 0,0 değerine sahiptir.
Örneğin, aşağıdaki tabloda her biri için tek seferlik kodlama gösterilmektedir
car_color
:
Özellik | Kırmızı | Orange | Mavi | Sarı | Yeşil | Siyah | Mor | Kahverengi |
---|---|---|---|---|---|---|---|---|
"Kırmızı" | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
"Turuncu" | 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 |
iletilecek dize veya dizin numarası değil, tek seferlik vektördür eklemektir. Model, bu tablodaki her bir eleman için ayrı bir ağırlık öğrenir. özellik vektörüdür.
Aşağıdaki çizim, tablodaki sözlük temsili:
Az temsil
Değerleri ağırlıklı olarak sıfır (veya boş) olan bir özelliğe
faydalı bir özelliği kullanmanız gerekir. Birçok
car_color
gibi kategorik özellikler daha az özellik olabilir.
Az temsil
anlamına gelir. 1.0 öğesinin konumunu
bir vektör tekniğini inceleyelim. Örneğin, "Blue"
için bir sıcak vektör şöyle olur:
[0, 0, 1, 0, 0, 0, 0, 0]
1
, 2. konumda olduğu için (sayıya 0'dan başladığında),
önceki tek sıcak vektörün seyrek gösterimi şöyledir:
2
Seyrek temsilin, orijinal grafiktekine kıyasla çok daha az bellek tükettiğine 8 öğeli tek sıcak vektörne sahiptir. Daha da önemlisi, modelin tek sıcak vektörü kullanır.
Kategorik verilerde aykırı değerler
Sayısal veriler gibi kategorik veriler de aykırı değerler içerir. Diyelim ki
car_color
, yalnızca popüler renkleri değil, nadiren kullanılan bazı renkleri de içerir
"Mauve"
veya "Avocado"
gibi aykırı renkler.
Bu aykırı renklerin her birine ayrı bir kategori vermek yerine
bunları tek bir "her şeyi içeren" kelime bilgisi dışı diye bir kategori
(OOV) kaldırın. Diğer bir deyişle, tüm aykırı renkler tek bir
olabilir. Sistem, aykırı değerdeki bu paket için tek bir ağırlık öğrenir.
Yüksek boyutlu kategorik özellikleri kodlama
Bazı kategorik özellikler çok sayıda boyuta sahiptir: olanlar:
Detay adı | Kategori sayısı | Örnek kategoriler |
---|---|---|
words_in_english | Yaklaşık 500.000 | "mutlu", "yürüyüş" |
US_postal_codes | Yaklaşık 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. Yerleştirmeler, ayrı bir Yerleştirmeler modülü genellikle çok daha iyi bir seçim olur. Gömmeler, web sitenizin iki önemli açıdan avantaj sağlar:
- Model genellikle daha hızlı eğitilir.
- Derleme model genellikle tahminleri daha hızlı tahmin eder. Yani, daha düşük gecikmeye yol açar.
Karma oluşturma (karma oluşturma hile), boyut sayısını azaltmak için daha az kullanılan bir yöntemdir.