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

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:

Şekil 1. Paletteki her renk ayrı bir renkle gösterilir
      özelliğini kullanabilirsiniz. Yani her bir renk, özellik vektöründe ayrı bir özelliktir.
      Örneğin, "Red" "Orange" özelliğidir. ayrı bir özelliktir,
      vb.
Şekil 1. Her kategori için benzersiz bir özellik.

Alıştırma: Sezgilerinizi sınayın

Doğru/Yanlış: Bir makine öğrenimi modeli doğrudan gibi ham dize değerleri (örneğin, "Red" ve "Black" bu değerleri sayısal vektörlere dönüştürme.
Doğru
Eğitim sırasında, bir model yalnızca kayan nokta sayılarını değiştirebilir. "Red" dizesi, kayan nokta sayısı değil. Siz "Red" gibi dizeleri kayan nokta sayılarına dönüştürmelidir.
Yanlış
Makine öğrenimi modelleri yalnızca olduğundan, bu dizeleri aşağıdaki değerlere dönüştürmeniz gerekir: eğitimden önceki kayan nokta değerlerini çıkarır.

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:

Şekil 2. Her renk benzersiz bir tam sayı değeriyle ilişkilendirilir. Örneğin,
      örnek, 'Kırmızı' 0 tam sayısı, 'Orange' ile ilişkilidir şununla:
      tamsayı 1, vb.
Şekil 2. Dizine eklenen özellikler.

Sezgilerinizi sınayın

Modeliniz doğrudan gösterilen dizin numaralarında mı eğitiliyor? nasıl görünüyor?
Evet
Model, dizin numaralarıyla eğitildiyse her birini yanlış bir şekilde sayısal değerler olarak ele alabilir 5 kat daha anlamlı hale getirmek için "Black" (dizin numarası 5) daha fazla "Orange" (dizin numarası 1) olduğunu görebilirsiniz.
Hayır
Modeliniz dizin numaralarıyla eğitilmemelidir. Yapılmış olsaydı, modeliniz her dizin numarasını sayısal bir sayı olarak ele alıyordu. değeri için geçerlidir ve "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:

Şekil 3. Kategorilerin eşlendiği uçtan uca süreci gösteren şema
      özellik vektörleridir. Diyagramda giriş özellikleri "Sarı",
      "Turuncu", "Mavi" ve "Mavi" bir kez daha gönderin.  Sistem, depolanan verileri
      Sözlük ("Kırmızı" 0, "Turuncu" 1, 'Mavi' 2, 'Sarı' 3 ve
      vb.) kullanarak giriş değerini bir kimlikle eşleyin. Bu nedenle sistem 'Sarı',
      "Turuncu", "Mavi" ve "Mavi" 3, 1, 2, 2 olarak ayarlayın. Sistem daha sonra
      bir özellik vektörüne uygulayabilirsiniz. Örneğin, Yeşil Ofis’teki
      3, 0, 0, 0, 1, 0, 0, 0, 0 olur.
Şekil 3. Kategorileri özellik vektörleriyle eşlemeye yönelik uçtan uca süreç.

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.