Kategorik Verileri Dönüştürme

Özelliklerinizden bazıları, sıralı ilişkide olmayan ayrı değerler olabilir. Köpek türleri, kelimeler veya posta kodları örnek olarak verilebilir. Bu özellikler kategorik olarak bilinir ve her değere kategori adı verilir. Kategorik değerleri dize veya çift sayı olarak temsil edebilirsiniz. Ancak bu sayıları karşılaştıramaz veya birbirlerinden çıkaramazsınız.

Çoğu zaman, sayısal veriler yerine kategorik veriler olarak tam sayı değerleri içeren özellikleri temsil etmeniz gerekir. Örneğin, değerlerin tam sayı olduğu bir posta kodu özelliği düşünün. Bu özelliği yanlışlıkla sayısal olarak temsil ediyorsanız, modelden farklı posta kodları arasında sayısal bir ilişki bulmasını istiyorsunuzdur; örneğin, modelin 20004 posta kodunun, posta kodu olarak sinyalin iki (veya yarısı) katı olduğunu belirlemesini bekliyorsunuzdur. Posta kodlarını kategorik veri olarak temsil ederek, her bir posta kodu için ayrı sinyaller bulabilmenizi sağlarsınız.

Bir veri alanına ait kategori sayısı (ör. haftanın günü veya sınırlı bir renk paleti) küçükse her kategori için benzersiz bir özellik oluşturabilirsiniz. Örneğin:

Paletteki her renk ayrı bir özellik olarak gösterilir.
Yani her renk, özellik vektöründeki ayrı bir özelliktir.
Örneğin, kırmızı bir özellik, turuncu ise ayrı bir özelliktir. Şekil 1: Her kategori için benzersiz bir özellik.

 

Bu işlemden sonra model, her bir renk için ayrı bir ağırlık öğrenebilir. Örneğin, model kırmızı arabaların yeşil arabalardan daha pahalı olduğunu öğrenebilir.

Ardından özellikler dizine eklenebilir.

Paletteki her renk artık aynı özelliğe aittir. 
Yani renk artık özellik vektöründeki tek bir özelliktir.
Her rengin benzersiz bir değeri vardır. Örneğin, kırmızı değeri 0, turuncu değeri 1 değerini alır ve sıralama bu şekilde devam eder. Şekil 2: Dizine eklenen özellikler.

 

Bu tür eşlemeye sözlük adı verilir.

Kelime hazinesi

Bir sözlükte her değer benzersiz bir özelliği temsil eder.

Index NumberCategory
0Red
1Orange
2Blue
......

Model, dizini dizeden arayarak özellik vektöründeki ilgili alana 1,0 ve özellik vektöründeki diğer tüm alanlara 0,0 atar.

Kategorileri vektörlerle eşlemek için uçtan uca sürecin şeması.
Şemada gösterilen giriş özellikleri sarı, turuncu, mavi ve mavidir. Sistem, girilen değeri bir kimlikle eşlemek için, depolanan bir sözlüğü (kırmızı 0, turuncu 1, mavi 2, sarı 3 vb.) kullanır. Bu nedenle, sistem sarı, turuncu, mavi, maviyi 3, 1, 2, 2 olarak eşler. Ardından sistem, bu değerleri tek noktadan oluşturulan bir özellikli vektöre dönüştürür. Örneğin, yedi olası renge sahip bir sistem olduğunda, 3 0,0, 0,0, 0,0, 1,0, 0,0, 0,0, 0,0 olur. Şekil 3: Özellikleri öne çıkarmak için uçtan uca işlem.

Seyrek beyanla ilgili not

Kategorileriniz haftanın günleriyse örneğin Cuma gününü [0, 0, 0, 0, 1, 0, 0] özellik vektörü ile temsil edebilirsiniz. Ancak makine öğrenimi sistemlerinin çoğu uygulaması, bu vektörü anı olarak eşit olmayan bir şekilde temsil eder. Yaygın bir temsil, boş olmayan değerlerin ve karşılık gelen dizinlerinin bir listesidir (örneğin, değer için 1,0 ve dizin için [4]). Bu sayede, çok büyük miktarda 0'ı depolayarak daha az bellek harcayabilir ve daha verimli bir matris çarpımıyla elde edebilirsiniz. Temel matematik açısından [4], [0, 0, 0, 0, 1, 0, 0]'a eş değerdir.

Sözsüz (OOV)

Sayısal verilerin aykırı değerler içermesi, kategorik verilerin de tanınmasını sağlar. Örneğin, araba açıklamalarını içeren bir veri kümesini düşünün. Bu veri kümesinin özelliklerinden biri arabanın rengi olabilir. Yaygın kullanılan araba renklerinin (siyah, beyaz, gri vb.) bu veri kümesinde iyi yansıtıldığını ve bu farklı renklerin değeri nasıl etkilediğini öğrenmek için bunların her birini bir kategoriye dönüştürdüğünüzü varsayalım. Bununla birlikte, bu veri kümesinin alışılmışın dışında renklere sahip az sayıda araba (havyar, şal, avokado) içerdiğini varsayalım. Bu renklerin her birine ayrı bir kategori vermek yerine, bunları Vokaniz Dışı (OOV) adlı bir tümünü yakalama kategorisine ekleyebilirsiniz. OOV kullanıldığında sistem, bu nadir renklerin her biri için zaman harcamaz.

Karma oluşturma

Diğer bir seçenek de her dizeye (kategori) mevcut dizin alanınıza hashing uygulamaktır. Karma oluşturma genellikle çakışmalara neden olur ancak aynı dizindeki kategorilerin paylaşılan bir temsilini öğrenmek için kullandığınız modele güvenirsiniz. Bu yöntem, ilgili sorun için iyi sonuç verir.

Önemli terimlerde karmaşa nedeniyle, kelime seçimi bir kelime seçmekten daha kötü olabilir. Öte yandan, karma oluşturma işlemi bir kelime sözlüğü oluşturmanızı gerektirmez. Bu özellik, özellik dağıtımının zaman içinde değişmesi durumunda avantaj sağlar.

İki kelime listesini gösteren şema. Bir liste 10 kelimeden oluşur. Diğer listede, 10 kelime 8 karma pakete bölünmüş olarak gösterilir. Dolayısıyla, karma paketlerinin 6'sı bir kelime içerirken karma paketlerin 2'si 2 kelime içerir.  Her karma paketi, 1'den 8'e kadar bir sayıyla tanımlanır. Şekil 4: Öğeleri bir sözlük ile eşleştirme.

Karma oluşturma ve kelime hazinesi karması

Karma bir yaklaşım benimseyebilir ve karma oluşturma işlemini bir sözlükle birleştirebilirsiniz. Verilerinizdeki en önemli kategoriler için bir kelime öbeği kullanın, ancak OOV paketini birden çok OOV paketiyle değiştirin ve paketlere kategoriler atamak için karma oluşturma işlemini kullanın.

Karma paketlerdeki kategoriler bir dizin paylaşmalıdır ve model muhtemelen iyi tahminlerde bulunmaz ancak kategorilerimizin sözlüğümüz dışında öğrenmeye çalışmak için bir miktar bellek ayırdık.

Üç kelime listesini gösteren şema. Bir liste, kategorize edilecek 10 kelimeden oluşur. Diğer iki liste, bu 10 kelimeyi sözlükte ve karma oluşturma işlemi haline getirir. Yani 5 kelime doğrudan
kelime ile, 5 kelime ise iki karma paketiyle eşlenir. Bir karma paketi iki kelime içerirken diğer karma paketi üç kelime içerir.  Sözlük
yaygın kelimeler içerir; karma paketinde daha nadir kelimeler bulunur. Şekil 5: Kelime ve karma oluşturma işlemini bir arada kullanan karma yaklaşım.

Yerleştirme hakkında not

Makine Öğrenimi Kilitlenme Kursu'ndan alınan bir geri bildirim, yerleştirmenin sürekli değerli bir özellik olarak temsil edilen kategorik bir özellik olduğunu hatırlatır. Derin modeller genellikle dizinden dizinleri yerleştirmeye dönüştürür.

Yerleştirmeleri aracılığıyla vektörleri öne çıkarmak için kategorileri eşlemeye yönelik uçtan uca süreci gösteren şema. Yerleştirme tablosu, numaralandırılmış bir satır grubundan oluşur. Her satır, 0,0 ile 1,0 arasında bir kayan nokta değerleri grubundan oluşur. Bir kategoriyi dönüştürmek için sistem, karşılık gelen satırı yerleştirme tablosundan kopyalar.
Örneğin, giriş kategorisi 0 ise sistem, yerleştirme tablosunun ilk satırını özellik vektörüne kopyalar. Giriş kategorisi 1 ise sistem, yerleştirme tablosunun ikinci satırını özellik vektörüne kopyalar. Şekil 6: Yerleştirme aracılığıyla az bulunan özellik vektörleri

Görüştüğümüz diğer dönüşümler diskte depolanabilir ancak yerleştirmeler farklıdır. Yerleştirmeler eğitildiğinden, bunlar tipik bir veri dönüşümü değildir ve modelin bir parçasıdır. Bunlar, diğer model ağırlıklarıyla eğitilir ve işlevsel olarak bir ağırlık katmanına eşdeğerdir.

Önceden eğitilmiş yerleştirmelerle ilgili durum nedir? Önceden eğitilmiş yerleştirmeler genellikle eğitim sırasında değiştirilebilir. Dolayısıyla kavramsal olarak modelin bir parçası olmaya devam ederler.