Makine öğrenme kanalında Özellik Seçimi ve Hiperparametre optimizasyonu nasıl sipariş edilmelidir?


15

Amacım sensör sinyallerini sınıflandırmak. Çözümümün şimdiye kadarki kavramı: i) Ham sinyalden mühendislik özellikleri ii) ReliefF ve kümeleme yaklaşımı ile ilgili özellikleri seçme iii) NN, Random Forest ve SVM uygulayın

Ancak bir ikilemde sıkışıp kaldım. İi) ve iii) 'de, ReliefF için k-En Yakın Neigbours veya sensör sinyalinin değerlendirildiği pencere uzunluğu veya NN'nin her katmanındaki gizli birimlerin sayısı gibi hiperparametreler vardır.

Burada gördüğüm 3 Sorun var: 1) Özellik seçimi parametrelerinin ayarlanması sınıflandırıcı performansını etkileyecektir 2) Sınıflandırıcının hiperparametrelerinin optimize edilmesi özelliklerin seçimini etkileyecektir. 3) Her olası konfigürasyon kombinasyonunu değerlendirmek zor değildir.

Yani sorularım: a) Basitleştirici bir varsayım yapabilir miyim, st ayarlama özelliği seçim parametreleri, sınıflandırıcı parametrelerin ayarlanmasından ayrılabilir mi? b) Başka olası çözümler var mı?


Ben ayırma özelliği seçim ayarlama ve sınıflandırıcı ayarlama geçerli olduğunu düşünüyorum, çünkü kabartmaF sezgisel sınıf içi varyans en üst düzeye çıkarmak ve aynı zamanda iyi bir sınıflandırıcı gösteren sınıf içi varyans en aza indirmeyi amaçlamaktadır. Bu nedenle kabartmaF için optimal parametrelerin ayarlanması aynı zamanda iyi bir klasifi daha 'muhtemel' yapar. Ancak bu fikri desteklemek için matematiksel bir formülasyona sahip olmak çok güzel olurdu.
Grunwalski

1
Bu sorunun belirli bir varyantı: Özellik seçimi çapraz geçerlilik rutininin bir parçası olmalı mı (her bir sınıflandırıcı hiperparam seti için # olarak: her k-katlı CV çalışması için: 4) Test setinde tahmin?
Nikolas Rieble

1
@NikolasRieble Az önce orijinal soruya bir cevap yazdım ve aynı zamanda sorunuzu da cevaba
ekledim

Yanıtlar:


15

Kendiniz gözlemlediğiniz gibi, özellik seçiminizin (özellik seçimi) algoritmanız için hangi hiperparametrelerin en uygun olduğu ve algoritmanız için seçtiğiniz hiperparametrelerin hangi özellik seçiminin en iyi olacağı üzerinde bir etkisi olabilir.

Bu nedenle, evet, gerçekten performansınızın her bir yüzdesini modelinizden sıkmakla gerçekten ilgileniyorsanız ve gerekli hesaplama miktarını karşılayabiliyorsanız, en iyi çözüm muhtemelen özellik seçimini ve "aynı anda" hiperparamer ayarını yapmaktır. Bu muhtemelen (özellik seçimini nasıl yaptığınıza bağlı olarak) kolay değildir. Nasıl çalıştığını hayal etmek, aday olarak farklı özelliklere sahip olmak ve tüm bu aday setlerden bir özellik grubunun seçimini ek bir hiperparametre olarak ele almak gibi olacaktır.

Uygulamada bu gerçekten mümkün olmayabilir. Genel olarak, tüm olası kombinasyonları değerlendirmeyi göze alamıyorsanız, tavsiye ederim:

  1. Bazı hiperparametrelere aşırı kötü değerler atamadığınızdan emin olmak için hiperparametreleri çok gevşek bir şekilde optimize edin. Bu, genellikle hiperparametrelerinizi iyi sezgisel bir şekilde anlarsanız veya aksi takdirde iyi olduğunu bildiğiniz bir grup özelliği kullanarak çok kısa bir hiperparametre optimizasyon prosedürü ile yapılabilir.

  2. Özellik seçimi, belki% 100 optimize edilmemiş ancak en azından son derece korkunç olmayan hiperparametrelerle. Zaten en azından biraz iyi yapılandırılmış bir makine öğrenme algoritmanız varsa, iyi özelliklere sahip olmak, performansınız için mikro optimizasyon hiperparametrelerinden çok daha önemli olacaktır. Ekstrem örnekler: Hiçbir özelliğiniz yoksa, hiçbir şey tahmin edemezsiniz. Sınıf etiketini içeren bir hile özelliğiniz varsa, her şeyi mükemmel bir şekilde sınıflandırabilirsiniz.

  3. Yukarıdaki adımda seçilen özelliklerle hiperparametreleri optimize edin. Bu, şimdi hiperparamları biraz optimize etmeye değer olabileceği iyi bir özellik olmalıdır.


Nikolas'ın yorumlarda yayınladığı ek soruyu ele almak için, tüm bu şeylerin (özellik seçimi, hiperparametre optimizasyonu) k katlama çapraz doğrulaması ile nasıl etkileşime girdiğini inceleyerek: Buna bağlı olduğunu söyleyebilirim.

Herhangi bir şey için katlardan birinde veri kullandığınızda ve ardından aynı kattaki performansı değerlendirdiğinizde, performansınızla ilgili önyargılı bir tahmin elde edersiniz (performansı abartırsınız). Bu nedenle, özellik seçim adımı için tüm kıvrımlarda veri kullanır ve ardından bu kıvrımların her birinde performansı değerlendirirseniz, her biri için önyargılı performans tahminleri alırsınız (ki bu iyi değildir). Benzer şekilde, veriye dayalı hiperparametre optimizasyonunuz varsa ve belirli kıvrımlardan (veya tüm kıvrımlardan) veri kullanırsanız ve daha sonra aynı kıvrımları değerlendirirseniz, yine performansa ilişkin önyargılı tahminler alırsınız. Olası çözümler şunlardır:

  1. Boru hattının tamamını her kat için ayrı ayrı tekrarlayın (örneğin her katın içinde özellik seçimi + hiperparametre optimizasyonu ve eğitim modeli yapın). Bunu yapmak, k-kat çapraz doğrulamanın size bu tam boru hattının performansı hakkında tarafsız tahminler verdiği anlamına gelir .

  2. İlk veri kümenizi bir '' önişleme veri kümesine '' ve '' tren / test veri kümesine '' ayırın. Özellik seçiminizi + hiperparametre optimizasyonunuzu '' önişleme veri kümesinde '' yapabilirsiniz. Ardından, seçtiğiniz özellikleri ve hiperparametreleri düzeltir ve `` tren / test veri kümesinde '' k katlama çapraz doğrulaması yaparsınız. Bunu yapmak, k-kat çapraz doğrulamanın sabit özellik kümesi ve hiperparametre değerleri göz önüne alındığında ML algoritmanızın performansı hakkında tarafsız tahminler sağladığı anlamına gelir .

İki çözümün nasıl biraz farklı performans tahminleriyle sonuçlandığına dikkat edin. Hangisinin daha ilginç olduğu, kullanım durumunuza bağlıdır, makine öğrenimi çözümlerinizi uygulamada nasıl dağıtmayı planladığınıza bağlıdır. Örneğin, özellik seçimi + hiperparametre optimizasyonu + eğitiminin her gün / hafta / ay / yıl / her neyse otomatik olarak çalışmasını isteyen bir şirketseniz, bunun tamamlanmasıyla da ilgileneceksiniz. ve ilk çözümü isteyeceksiniz.

Öte yandan, özellik seçimi + hiperparametre optimizasyonunu hayatınızda tek bir kez yapmayı ve daha sonra algoritmanızı sadece düzenli olarak yeniden düzenli olarak eğitirseniz (özellik seti ve hiperparam değerleri sabit), o zaman performans sadece bu adım ilgilendiğiniz şey olacaktır ve ikinci çözüme geçmelisiniz


1
Referanslar da verebilir misiniz?
Nikolas Rieble

1
Bu yayında tanınmış bir kitabın bazı resimleri var: nodalpoint.com/not-perform-feature-selection . Bunlar benim '' olası çözüm 1 '' ile aynı fikirde görünüyor. Diğer dava için ... kendim dışında başka bir referansım yok mu? Orada akıl yürütme / motivasyonumu
sağladım

1
Bu ESL bölümü, herhangi bir öngörücü modelci için% 100 gerekli okuma olmalıdır.
Matthew Drury

Soln 1 ile ilgili olarak, cv'nin birkaç yinelemesinde özellik seçimi (fs) ve hiperparam optimizasyonunu (ho) çalıştırdıktan sonra son özellik setinizi ve model hiperparametrelerinizi nasıl elde edersiniz? Ayrıca, bunları bir cv yinelemesinde gerçekleştirdiğimizde, önce fs'yi çalıştırırız, sonra bu özellikleri kullanarak ho?
sma

1
K-1

4

Kimse hiper parametre ayarını ve özellik seçimini aynı yapan yaklaşımlardan bahsetmedi, bu yüzden konuşacağım. Bu durumda, başlangıçta istediğiniz tüm özellikleri tasarlamalı ve hepsini dahil etmelisiniz.

İstatistik topluluğundaki araştırmalar, özellik seçimini bir ayarlama kriteri haline getirmeye çalıştı. Temel olarak bir modeli, en iyi tahmini yapmasına yardımcı olacak sadece birkaç özellik seçmeye teşvik edilecek şekilde cezalandırırsınız. Ama ne kadar büyük bir cezaya girmeniz gerektiğini belirlemek için bir ayar parametresi eklersiniz.

Başka bir deyişle, modelin sizin için özellikleri seçmesine izin verirsiniz ve az ya da çok özelliklerin kontrolü sizde olur. Bu aslında hesaplamayı azaltır, çünkü artık hangi özelliklere karar vermek zorunda değilsiniz, gerisini kaç özellik ve model yapar.

Bu durumda, parametre üzerinde çapraz doğrulama yaptığınızda, özellik seçiminde de çapraz doğrulama gerçekleştirirsiniz.

Zaten bu özellik seçimini bir şekilde içeren birçok ML modeli var.

  • Normal SVM'ye benzeyen ancak özellik seçimine sahip çift ​​düzenli destek vektör makineleri
  • Doğrusal regresyon ile ilgilenen elastik ağ
  • Sinir ağlarında bırakma düzenlenmesi (bunun için referans yok)
  • Rastgele orman normalde özelliklerin rastgele alt kümelerini yapar, bu nedenle sizin için özellik seçimini yapar

Kısacası, insanlar karmaşıklığı azaltmak ve çapraz doğrulama yapabilmek için parametre ayarını ve özellik seçimini aynı anda dahil etmeye çalıştılar


0

@DennisSoemers'ın harika bir çözümü var. Biraz daha açık ve Özellik Mühendisliği ve Seçime dayanan iki benzer çözüm ekleyeceğim : Max Kuhn ve Kjell Johnson'ın Tahmin Edici Modeller için Pratik Bir Yaklaşım .

Kuhn , bir veri kümesini resampletanımlamak için bu terimi kullanır fold, ancak StackExchange'teki baskın terim gibi görünmektedir fold, bu yüzden foldaşağıdaki terimi kullanacağım .

Seçenek 1 - İç içe arama

Hesaplama gücü sınırlayıcı bir faktör değilse, 3 düzey iç içe yerleştirmenin olduğu iç içe bir doğrulama yaklaşımı önerilir:

1) dış katlar, her kat farklı bir özellik alt kümesine sahip

2) iç kıvrımlar, her kat bir hiperparametre araması ile

3) her hiperparametre aramasının iç katları, her kat farklı bir hiperparametre seti ile.

İşte algoritma:

-> Split data into train and test sets.
-> For each external fold of train set:
    -> Select feature subset.
    -> Split into external train and test sets.

    -> For each internal fold of external train set:
        -> Split into internal train and test sets.
        -> Perform hyperparameter tuning on the internal train set. Note that this
           step is another level of nesting in which the internal train set is split
           into multiple folds and different hyperparameter sets are trained and tested on
           different folds.
    -> Examine the performance of the best hyperparameter tuned model 
       from each of the inner test folds. If performance is consistent, redo 
       the internal hyperparameter tuning step on the entire external train set.
    -> Test the model with the best hyperparameter set on the external test set.

-> Choose the feature set with the best external test score.
-> Retrain the model on all of the training data using the best feature set 
   and best hyperparameters for that feature set. 

resim açıklamasını buraya girin Bölüm 11.2'deki resim: Basit Filtreler

-> Select feature subsetAdım rastgele gibi ima, ancak kitabın özetlenen diğer teknikler vardır Bölüm 11 .

Açıklığa kavuşturmak için -> Perform hyperparameter tuning step, iç içe çapraz doğrulamanın önerilen yaklaşımını okuyabilirsiniz . Fikir, eğitim ve test sürecini farklı veri katlarında tekrar tekrar gerçekleştirerek ve test sonuçlarının ortalamasına bakarak bir eğitim sürecinin sağlamlığını test etmektir.

Seçenek 2 - Ayrı hiperparametre ve özellik seçimi araması

-> Split data into hyperameter_train, feature_selection_train, and test sets.

-> Select a reasonable subset of features using expert knowledge.

-> Perform nested cross validation with the initial features and the 
   hyperparameter_train set to find the best hyperparameters as outlined in option 1.

-> Use the best hyperparameters and the feature_selection_train set to find 
   the best set of features. Again, this process could be nested cross 
   validation or not, depending on the computational cost that it would take 
   and the cost that is tolerable.

Kuhn ve Johsnon süreci şöyle ifade ediyor:

Global bir arama yöntemini ayarlama parametrelerine sahip bir modelle birleştirirken, mümkünse, özellik kümesinin sorun hakkında uzman bilgisi kullanılarak önce bilinmesini öneririz. Daha sonra, makul bir ayar parametresi değerleri aralığı tanımlamak önemlidir. Yeterli sayıda örnek mevcutsa, bunların bir kısmı bölünebilir ve tüm özellikleri kullanarak potansiyel olarak iyi bir dizi parametre değeri bulmak için kullanılabilir. Ayar parametresi değerleri, özellik alt kümeleri için mükemmel bir seçim olmayabilir, ancak en uygun alt kümeyi bulmak için makul düzeyde etkili olmalıdırlar.

Bölüm 12.5: Global Arama Yöntemleri


-1

Bence orada biraz fazla düşünüyorsun. Özellik mühendisliğinin bir parçası olan özellik seçimi genellikle yararlıdır, ancak bazı gereksiz özellikler bir makine öğrenme sisteminin erken aşamasında çok zararlı değildir. Bu yüzden en iyi uygulama, önce tüm anlamlı özellikleri üretmeniz, ardından algoritmaları seçmek ve modelleri ayarlamak için kullanmanızdır, modeli ayarladıktan sonra özellik kümesini kırpabilir veya yeni özellikler kullanmaya karar verebilirsiniz.

Makine öğrenimi prosedürü aslında, mühendisliği öne çıkardığınız, daha sonra bazı algoritmaları denediğiniz, modelleri ayarladığınız ve sonuçtan memnun kalana kadar geri döndüğünüz bir yineleme işlemidir.


Yani işe yarayana kadar deniyor demek: D
Grunwalski

Bir ML prosedüründe denemek, rastgele değil. Aslında ML aslında biraz da hack'tir.
THN
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.