Sürekli ve ikili verileri doğrusal SVM ile mi karıştırıyorsunuz?


15

Bu yüzden SVM'lerle oynuyorum ve bunun iyi bir şey olup olmadığını merak ediyorum:

Ben sürekli özellikleri (0-1) bir dizi ve ben kukla değişkenlere dönüştürdü kategorik özellikleri bir dizi var. Bu özel durumda, kukla değişkente ölçüm tarihini kodlarım:

Veri aldığım 3 dönem var ve onlar için 3 özellik numarası ayırdım:

20: 21: 22:

Dolayısıyla, verilerin hangi döneme geldiğine bağlı olarak, farklı özellikler 1 atanır; diğerleri 0 alacak.

SVM bununla düzgün bir şekilde çalışacak mı yoksa bu kötü bir şey mi?

SVMLight ve doğrusal bir çekirdek kullanıyorum.


Bu iyi çalışıyor.
Marc Claesen

Yaptığınız şey yeterince iyi. Burada biraz ayrıntılı bir cevap verdim
quora.com/Machine-Learning/…

@TenaliRaman, gerçekten bir şey okuyabilmek için giriş yapması gereken sitelere bağlantılar göndermeyin.
Marc Claesen

@MarcClaesen Aşağıdaki cevabı çoğalttım.
TenaliRaman

Yanıtlar:


8

SVM'ler, bazı ön işlemler yaptığınız sürece hem ikili hem de sürekli değişkenleri işleyecektir: tüm özellikler ölçeklendirilmeli veya normalleştirilmelidir. Bu adımdan sonra, algoritmaların bakış açısından, özelliklerin sürekli mi yoksa ikili mi olduğu önemli değildir: ikili dosyalar için, "uzak" veya çok benzer örnekleri görür; sürekli için değerler arasında da vardır. Çekirdek değişkenlerin türü açısından önemli değildir.


1
ve en iyi normalleştirme tekniği ne olurdu?
Shlomi Schwartz

23

Cevabımı http://www.quora.com/Machine-Learning/What-are-good-ways-to-handle-discrete-and-continuous-inputs-together/answer/Arun-Iyer-1 adresinden çoğaltma

  • Sınırlı sürekli özellikleri yeniden ölçeklendirme : Sınırlı tüm sürekli girdiler, bunları ile yeniden ölçeklendirir .[1,1]x=2xmaxminmaxmin
  • Tüm sürekli özellikleri standart hale getirin: Tüm sürekli girdiler standartlaştırılmalıdır ve bu nedenle, her sürekli özellik için, ortalamasını ( ) ve standart sapmasını ( ) hesaplayın ve .μσx=xμσ
  • Kategorik / ayrık özellikleri ikiye ayırın: Tüm kategorik özellikler için, bunları birden çok boole özelliği olarak temsil edin. Örneğin, evlilik_status adlı bir özelliğe sahip olmak yerine, 3 boolean özelliğine sahip - evli_status_single, evli_status_married, evli_status_divorced ve bu özellikleri 1 veya -1 olarak ayarlayın. Gördüğünüz gibi, her kategorik özellik için, k kategorik özelliğin aldığı değerlerin sayısı olduğu k ikili özelliği ekliyorsunuz.

Artık, içine gömülü olacağımızı ve sınıflandırma / regresyon vb. İçin hazır paketleri kullanmaya başlayabileceğimizi düşündüğümüz tüm özellikleri tek bir vektörde temsil edebilirsiniz .Rn

Ek: Çekirdek Tabanlı Yöntemler kullanıyorsanız, için bu açık yerleştirmeyi önleyebilir ve özellik vektörleriniz için özel çekirdekler tasarlamaya odaklanabilirsiniz. Çekirdeğinizi birden çok çekirdeğe bölebilir ve bunların üzerindeki ağırlıkları öğrenmek için MKL modellerini kullanabilirsiniz. Bununla birlikte, çözücünün herhangi bir problemi olmaması için çekirdeğinizin yarı yarıya pozitif olmasını sağlamak isteyebilirsiniz. Ancak, özel çekirdekler tasarlayıp tasarlayamayacağınızdan emin değilseniz, daha önce yerleştirme yaklaşımını uygulayabilirsiniz.Rn


Eh, bu makale oldukça kategorik özellikler ile ilgili ilginç. Bir sıcak kodlamanın kategorik özellikler için en iyi seçim olduğu söylenmiyor.
görünen ad

1
Bu mükemmel bir cevap, @displayname yorumundaki bağlantıyı okudum ve yararlı bir karşılaştırma. Makaleden, ikili kodlamanın en iyisi olduğu anlaşılmaktadır (bu cevapta açıklanan sıcak değil) ve oldukça basittir. kodunu girerseniz, bu ikili dizeden gelen rakamlar ayrı sütunlara bölünür. Bu, verileri bir tane sıcak olan ancak mesafelerde bir miktar bozulma ile daha az boyutta kodlar. "
shelbypereira

@Displayname tarafından verilen makale iyi bir makaledir, ancak nominal değere göre ele alınmamalıdır. Hatırlanması gereken ilk şey, hemen hemen tüm ML yöntemlerinin benzerlik veya mesafe ölçümü ile çalıştığıdır. Kodlama yönteminin seçimi, iki nokta arasındaki mesafelerin veya benzerliklerin nasıl ölçüldüğünü doğrudan etkiler. 1 sıcak kodlama, bir kategorideki bir nesnenin yalnızca kendisine veya eşdeğer olduğunu, tüm kategorileri birbirine eşit mesafede koyduğunu söyler. Bununla birlikte, bazı kategorilerin diğerlerinden daha yakın olduğu durumlar vardır. Bu durumda, farklı bir kodlama yardımcı olabilir.
TenaliRaman
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.