Veri kümelerini karışık özellik türleriyle sınıflandırmanın en iyi yolu


13

Metin ve sayısal gibi karışık özellik türlerinden oluşan bir veri kümesini sınıflandırmanın en iyi yolunun ne olduğunu bilmek istiyorum. Metni boole çevirebileceğimi biliyorum, ancak kelime bilgisi çeşitlidir ve veriler çok seyrek olur. Ayrıca, öznitelik türlerini ayrı ayrı sınıflandırmaya ve sonuçları meta-öğrenme teknikleri ile birleştirmeye çalıştım, ancak iyi çalışmadı.

Yanıtlar:


11

Christopher'ın cevapları çok makul görünüyor. Özellikle ağaç temelli yöntemler, bu tür verilerle iyi sonuç verir çünkü ayrımcı özelliklere dallanırlar. Özel uygulamanızı bilmeden söylemek biraz zor, ancak genel olarak bazı özelliklerinizin diğerlerinden önemli ölçüde daha ayrımcı olabileceğini düşünüyorsanız, bunu biraz temizlemek için bazı boyutsal azaltma tekniklerini deneyebilirsiniz.

Ayrıca bir boyutsal küçültme tekniği kullanırsanız, özellik vektörünüz için biraz daha sağlam bir biçim elde edersiniz (bunlar genellikle karışık veri türleri yerine düz sayısal vektörler olur), bu da farklı yöntemlerden yararlanmanıza izin verebilir. El mühendisliği özelliklerini de inceleyebilirsiniz. Düzgün el mühendisliği özellikleri Random Forestile birçok görevde en son teknolojiye çok yakın olacak.


2
Boyut azaltılması için başka bir oy. Sadece bazı eklemeler: Principal Component Analysisveya Non-Negative Matrix Factorizationdeğişken sayısını azaltacak, seyrek verileri zenginleştirecek ve tüm değişkenleri nicel hale getirecektir. Ayrıca, boyutsal küçültme modelinin kalitesini değerlendiren soru yazarı, metinsel değişkenlerin yararlılığını tahmin edebilir.
sobach

@indico harika cevap. Bize bir kitapta veya makalede referans verebilir misiniz, ağaç tabanlı algoritmaların karışık tip (kategorik ve nicel veriler) verileriyle daha iyi performans gösterdiğini söyleyebilir misiniz?
ZelelB

6

Veriler hakkında daha fazla bilgi sahibi olmadan bu soruya cevap vermek zordur. Bununla birlikte, aşağıdaki tavsiyeyi sunacağım dedi:

Çoğu makine öğrenimi tekniği karışık tip verileri işleyebilir. Ağaç tabanlı yöntemler (AdaBoost ve Random Forests gibi) bu tür verilerle iyi sonuç verir. Daha önemli olan konu aslında endişelenmeniz gereken boyutsallıktır.

Bu boyutu azaltmak için bir şeyler yapmanızı öneririm. Örneğin, verileri en iyi ayıran kelimeleri ve kelime öbeklerini arayın ve diğer kelimeleri atın (not: ağaç tabanlı yöntemler bunu otomatik olarak yapar).


2

Verilerinizin niteliği hakkında verdiğiniz küçük bilgilerle, aşağıdaki yaklaşımı izlemenizi tavsiye ederim:

  1. Metin verilerini kategorilere dönüştürün. Kategorilerin ne kadar bilgi içermesi gerektiğine ilişkin farklı alternatifler deneyebilirsiniz, ancak her değişken için belirli kategoriler olmalıdır. Örnek olarak, anket formunun bir metin alanından insanların işe gitme biçimleri konusunda gelen bir değişkeni varsayacağım.

    İlk başta, benzer anlamdaki cevapların aynı şekilde yazıldığından ve aynı kategoriye ait olduğundan emin olmalıyız (örneğin "bisikletle", "bisikletle", "bisikletle" hepsi aynı anlama sahiptir). Ardından daha az ayrıntılı kategorilere (örneğin "tramvay", "metro" ve "otobüs" ile "toplu taşıma araçlarına" birleştir) veya daha fazlasını (ör. "Yürüyüş", "Jogging", "Bisiklet" Fiziksel aktivite ") ne bulmaya çalıştığınıza bağlı olarak.

    Veri kümenize bazı farklı kombinasyonlar bile koyabilirsiniz ve ardından sonraki adımlar analiz için hangilerinin kullanılacağını belirler. Metin verilerinin sıralı değişkenlerde "çevrilebildiği" durumlarda bunu yaptığınızdan emin olun (örneğin "küçük, orta, yüksek" varsa "1,2,3" değerine dönüştürün).

  2. Kategorik değişkenlerinizi (sıralı değişkenleri değil) sahte (ikili) değişkenlere dönüştürün. Sınıflandırma / özellik seçim algoritmalarının çoğu bunu otomatik olarak yapar, ancak seçtiğiniz algoritmalarda bunun böyle olduğundan emin olun. Bu noktada verinin boyutluluğunun oldukça büyük olacağını fark ediyorum, ancak bu bir sonraki adımda ele alınacak.

  3. Verilerinize bir özellik seçimi / boyut azaltma tekniği uygulayın. Bu tür tekniklerin yararlı bir incelemesini burada bulabilirsiniz . Python kullanıyorsanız, sklearn araçları size birçok seçenek sunar (daha fazla ayrıntı için buraya bakın ). Çoklu doğrusallığı da dikkate alan bir teknik kullandığınızdan emin olun. Temel Bileşen Analizi'ni veya ağaç tabanlı bir algoritmayı denerdim.

  4. Verileri sınıflandırmak için, Karar Ağacı Sınıflandırıcısı ( sklearn yoluyla da kullanılabilir) ile giderdim . Ayrıca, özellik seçiminde ağırlıklara ağırlık ayarlama özelliği de uygular. Seçeneklerinize bağlı olarak oluşturulan ağaçtaki ayrıntı düzeyini ayarlayabilirsiniz (örn. Maks_depth, min_samples_split) Aşırı sığmayı önlemek için ayrıntı düzeyini çapraz doğrulamaya göre ayarladığınızdan emin olun.

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.