Özellik seçim yöntemlerinin performansı nasıl karşılaştırılır?


10

Birkaç özellik seçme / değişken seçim yaklaşımı vardır (bkz. Örneğin Guyon ve Elisseeff, 2003 ; Liu ve diğerleri, 2010 ):

  • filtre yöntemleri (örneğin, korelasyon temelli, entropi temelli, rastgele orman önem temelli),
  • sarma yöntemleri (örneğin, ileri arama, yokuş yukarı arama) ve
  • özellik seçiminin model öğrenmenin bir parçası olduğu gömülü yöntemler.

Yayınlanmış birçok algoritma R, Python gibi makine öğrenme araçlarında da uygulanmaktadır.

Farklı özellik seçim algoritmalarını karşılaştırmak ve belirli bir sorun / veri kümesi için en iyi yöntemi seçmek için uygun bir yöntem ne olabilir? Başka bir soru, özellik seçim algoritmalarının performansını ölçen bilinen herhangi bir metrik olup olmadığıdır.

Yanıtlar:


4

Bu zor bir sorundur ve araştırmacılar çok ilerleme kaydetmektedir.

Denetimli özellik seçimi arıyorsanız , LASSO ve türevlerini öneriyorum . Algoritmanın değerlendirilmesi denetimli öğrenme ile çok kolaydır: test verilerinde hangi metriği seçerseniz seçin.

LASSO'nun iki ana uyarısı, (1) seçilen özelliklerin otomatik olarak bir etkileşimi algılamamasıdır, bu nedenle tüm özelliklerinizi bir priori (yani, modelden geçirmeden önce) yapmanız gerekir ve (2) LASSO, - doğrusal ilişkiler (örneğin, ikinci dereceden bir ilişki ).

Bu iki uyarıyı geçmenin bir yolu, seçimi otomatik olarak yapan Gradient Boosted Machines kullanmaktır . GBM'nin istatistiksel özelliklerinin LASSO'dan biraz daha belirsiz olduğunu belirtmek gerekir.

Denetimsiz özellik seçimi arıyorsanız, bu araştırmacılar tarafından kullanılan benzer bir düzenleme yaklaşımı var gibi görünüyor , ancak bu özel durumdaki değerlendirme daha az belirgin hale geliyor. İnsanlar PCA / SVD veya K-Means gibi bir çok farklı şeyi dener ve bu da sonuçta verilere doğrusal bir yaklaşım bulmaya çalışır.

Bu durumda, performansın tipik ölçüleri kümelerin yeniden oluşturma hatası veya RMSE'dir.

Yazılım açısından, R ve Python'un her ikisi de GBM, LASSO, K-Means, SVD ve PCA'ya sahiptir. R ve Sklearn for Python'daki GLMNET ve XGBoost ilgili kütüphanelerdir.


1

Özellik seçimini her zaman nihai sonuca bir adım olarak görüyorum.

Aşağıda, bir şekilde bazı hedefleri olabilen ve karıştırılabilen seçim ve boyutsallık azaltma özelliklerini bir şekilde karıştırıyorum.

Bazı tipik kullanımlar:

  • makine öğreniminde hesaplamaların azaltılması: seçimin kalitesi, nihai öğrenme sonucunun bir faktörüdür ve açıkçası, bu öğrenmeyi yapma hızıdır.

  • sonunda çoklu boyutları birleştirdiğiniz verilerin görselleştirilmesi / anlaşılması. İlginç şeyleri gizlemediğinde ve bu anlaşılabilir olduğunda iyidir

  • öğrenim sonuçlarının basitleştirilmesi, yine de anlaşılabilir hale getirilmesi (örneğin, temel neden analizi). Basit olsa iyi ama kalite açısından hala yeterli

  • önceki cevabın önerdiği gibi, montajı kontrol etmek

  • ...

Yani, genel bir kural olduğunu düşünmüyorum (her zamanki gibi ML'de), ancak bu duruma göre bir sorun.

Sadece kişisel bir inanç ...


0

Belirli duruma ve çözmek istediğiniz soruna çok bağlıdır. Bazı genel kurallar vardır, örneğin sargı yöntemleri daha esnektir ve aşırı sığmaya daha yatkındır.

Özellik seçimi performansı, öğrenme görevinin genel performansı ile değerlendirilebilir, örneğin biri farklı yöntemlerle özellikleri seçebilir ve daha sonra bu farklı özellik kümelerini sınıflandırma için kullanabilir ve elde edilen sınıflandırıcıların hassasiyetini karşılaştırabilir.

Bazı biyolojik uygulamalar gibi bazı senaryolarda bir diğer önemli faktör, seçilen özelliklerin ve sonuçların, örneğin bir kümelenme probleminde, seçilen özelliklerin ve sonuçta oluşan kümelerin anlamlarının yorumlanabilmesidir, performansın çok önemli bir ölçüsüdür.


0

Önceden girdi değişkenlerinin hangi alt kümelerinin çıktı değişkenini etkilediğini bilmekle birlikte, farklı yöntemler kullanarak ilgili özellikleri saptamaya çalışarak bir dizi yapay test çalıştırmanız gerekir.

İyi hileler, farklı dağılımlara sahip bir dizi rasgele giriş değişkeni tutmak ve özellik seçiminizin gerçekten de onları alakalı olmayan olarak etiketlemesini sağlamak olacaktır.

Başka bir hile, satırlara izin verdikten sonra ilgili olarak etiketlenen değişkenlerin ilgili olarak sınıflandırıldığından emin olmak olacaktır.

Yukarıda belirtilenler hem filtre hem de ambalaj yaklaşımları için geçerlidir.

Ayrıca, ayrı ayrı (tek tek) değişkenler alındığında hedef üzerinde herhangi bir etki göstermediği, ancak birlikte alındığında güçlü bir bağımlılık ortaya çıkardığı durumlarda da ele aldığınızdan emin olun. Örnek, iyi bilinen bir XOR sorunu olabilir (Python koduna bakın):

import numpy as np
import matplotlib.pyplot as plt
from sklearn.feature_selection import f_regression, mutual_info_regression,mutual_info_classif

x=np.random.randn(5000,3)
y=np.where(np.logical_xor(x[:,0]>0,x[:,1]>0),1,0)

plt.scatter(x[y==1,0],x[y==1,1],c='r',marker='x')
plt.scatter(x[y==0,0],x[y==0,1],c='b',marker='o')
plt.show()
print(mutual_info_classif(x, y)) 

Çıktı:

Python 3 XOR illüstrasyon

[0. 0. 0.00429746]

Bu nedenle, muhtemelen güçlü (ancak tek değişkenli) filtreleme yöntemi (çıkış ve giriş değişkenleri arasındaki karşılıklı bilgilerin hesaplanması) veri kümesindeki hiçbir ilişkiyi tespit edememiştir. Oysa bunun% 100 bağımlılık olduğunu biliyoruz ve X'i% 100 doğrulukla Y'yi tahmin edebiliriz.

Özellik seçimi yöntemleri için bir tür kriter oluşturmak iyi bir fikir olabilir, herkes katılmak ister mi?

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.