Makine öğrenmede özellik yapımı ve normalleştirme


13

Bir film M için bir Lojistik Sınıflandırıcı oluşturmak istediğimi varsayalım. Özelliklerim kişinin yaşı, cinsiyeti, mesleği, konumu gibi bir şey olurdu. Yani eğitim seti şöyle bir şey olurdu:

  • Yaş Cinsiyet Meslek Konumu Beğen (1) / Beğenmedim (0)
  • 23 M Yazılım ABD 1
  • 24 F Doktor İngiltere 0

ve böylece .... Şimdi sorum şu, özelliklerimi nasıl ölçeklemeli ve temsil etmeliyim. Düşündüğüm bir yol: Yaşı yaş grupları olarak ayırın, bu yüzden 18-25, 25-35, 35-üstü, M, F cinsiyeti, ABD, İngiltere, Diğerleri gibi konum. Şimdi tüm bu değerler için bir ikili özellik oluşturun, bu nedenle yaş, her biri bir yaş grubuna karşılık gelen 3 ikili özelliğe sahip olacaktır. Yani, ABD'li 28 yaşındaki bir erkek 010 10100 (010-> Yaş Grubu 25-35, 10 -> Erkek, 100 -> ABD) olarak temsil edilir.

Buradaki özellikleri temsil etmenin en iyi yolu ne olabilir? Ayrıca, bazı e.gs fark ettim. Tüm özelliklerin bir şekilde ölçeklendirildiğini / normalleştirildiğini, örneğin Cinsiyet, Erkek ve kadın için 0.0045 ve -.0.0045 olmak üzere iki değerle temsil edilir. Bunun gibi ölçeklendirme / mormalizasyonun nasıl yapılacağı hakkında bir fikrim yok mu?


Özelliklerinizi neden ölçeklendirmek istediğiniz açık değil mi? Genellikle özellikler 0 ortalama birlik std dev olacak şekilde normalleştirilir. Sorunu, sınıfları sınıflandırmaya çalıştığınız sınıflar olarak tanımlamanız gerekebilir, lojistik regresyon ikili sınıflandırma için yararlıdır.
BGreene

Kesinlikle yaşları kategorilere ayırmak istemezsiniz. "Filmlerin derecelendirilmesi" nasıl ölçülür? 1 ila 10 arası bir ölçek, bir "beğenme / beğenmeme" mi yoksa ne?
Peter Flom - Monica'yı eski durumuna döndürün

Basitlik için, sadece iki sınıf olduğunu varsayalım, Beğen ve Beğenmeme. 1 olmak ve 0 olmaktan hoşlanmamak gibi. Sorun ifadesini bunu yansıtacak şekilde değiştirdik.
snow_leopard

Yanıtlar:


15

İkili kasa

Özelliklerinizin ikili olmasını istiyorsanız, kategorik ( gerçek ) değerler için iyi temsiller , bir sıcak (özel termometre ) kodlamasıdır. Sen yok bunları normalleştirmek gerekiyor.

İçin bir sıcak bir kodlanması kategorik özellik, sadece her sınıf için bir bit saklıdır. Bu nedenle bu kodlamanın uzunluğu, özelliğinizin sınıflarının sayısıdır. Ülke örneğinizi ele alalım,

  • ABD için 00001
  • İngiltere için 00010
  • Asya için 00100
  • Avrupa için 01000
  • 10000 diğerleri için

İçin termometre a kodlama gerçek / tamsayı özelliği, bir uzunluğa ve eşikleri seçmek zorunda. Yaş örneğiniz için, yaşı 18, 25 ve 35 eşiklerine göre ayırmayı seçtiniz. Kodlama,

  • 0-17 için 000
  • 18-25 için 001
  • 25-34 için 011
  • 35-üstü için 111

Her ikisini bir araya getirdiğinizde, burada 5 + 3 = 8 bit boyutunda bir kodlama elde edersiniz. 30 yaşında bir İngiliz sakini için

00010UK01130yo

Sürekli vaka

Regresyon modeliniz buna izin veriyorsa, daha fazla bilgi içeren gerçek / tamsayı özelliği için gerçek bir değer tutmayı tercih etmelisiniz. Örneğinizi yeniden ele alalım. Bu kez yaşın değerini bir tamsayı olarak verelim. 30 yaşındaki İngiltere sakini için kodlama bu nedenle

00010UK3030yo

BGreene'nin dediği gibi, birçok değeri regresyon modellerinin stabilitesini sağlayan ortalama 0 ve standart sapma 1 tutmak için bu değeri normalleştirmelisiniz. Bunu yapmak için, ampirik ortalamayı çıkarın ve ampirik standart sapmaya bölün.

Y_normalized = ( Y - mean(Y) ) / std(Y)

Veri tabanınızdaki tüm kişilerin yaşlarının ortalaması 25 ise ve standart sapması 10 ise, 30y.o. kişi , (3025)/10=0.5

00010UK0.530yo

Harika ... diyelim ki örnek bir kişimiz var: Ülke: İngiltere, Yaş Grubu: 25-34. Bu, bir sıcak kodlama kullanırsak Ülke: 2 , Yaş Grubu: 4 olarak değerlere yol açacaktır . Şimdi bir özellik vektörü oluştururken bunları normalleştirmeliyiz. Diyelim ki 0,4 ve 0,6 olarak geliyorlar, o zaman modellemek için girdi özelliği vektörünüz esasen [0,4, 0,6] olur, doğru mu?
snow_leopard

hmm .. Eğer "bir sıcak" kodlama kullanırsam, kodlama değerini tamsayı gösterimine dönüştürmeliyim, örneğin 0010 2 olur. VEYA bunu sadece biri açık olacak 4 özellik kümesi olarak ele almalıyım? İlk durumda, 1000'in 0001'den sonra 0100'e daha fazla olduğu, ABD özellik değerinin İngiltere özellik değerine, Asya değerine veya başka bir şeye daha yakın olmasını istemediğimizden bu niyet olmayabilir.
snow_leopard

Bu noktaları açıklığa kavuşturmak için cevabımı düzenledim. İkili özellikleri normalleştirmenize gerek yoktur ve bunları bir vektör olarak ele almanız gerekir, bir tamsayıya dönüştürmeyin.
Emile

Gerçekten yararlı ve kristal netliğinde açıklama. Teşekkürler!
George Liu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.