PCA ve rastgele ormanlar


12

Yakın zamanda Kaggle yarışması için, eğitim setim için daha sonra rastgele bir orman sınıflandırıcısını eğitmek için kullanılacak 10 ek özellik tanımladım. PCA'yı yeni özelliklerle veri kümesinde çalıştırmaya karar verdim, birbirleriyle nasıl karşılaştırıldıklarını görmek için. Varyansın ~% 98'inin birinci bileşen (ilk özvektör) tarafından taşındığını buldum. Daha sonra sınıflandırıcıyı birçok kez eğittim, her seferinde bir özellik ekledim ve sınıflandırma kalitesini karşılaştırmak için çapraz doğrulama ve RMS hatası kullandım. Sınıflandırmaların her bir ek özellik ile iyileştiğini ve son sonucun (10 yeni özellikle birlikte) ilk özellikten (diyelim) 2 özellikle çok daha iyi olduğunu gördüm.

  • PCA'nın varyansın ~% 98'inin veri setimin ilk bileşeninde olduğunu iddia ettiği düşünüldüğünde, sınıflandırmaların kalitesi neden bu kadar iyileşti?

  • Bu diğer sınıflandırıcılar için geçerli midir? RF birden fazla çekirdeğe göre ölçeklenir, bu nedenle eğitmek SVM'den çok daha hızlıdır.

  • Veri kümesini "PCA" alanına dönüştürdüysem ve sınıflandırıcıyı dönüştürülmüş alanda çalıştırırsam ne olur? Sonuçlarım nasıl değişecekti?


2
PCA'yı çalıştırmadan önce verilerinizi normalleştirdiniz mi? Tahmin edebilseydim, özelliklerinizden birinin diğerlerinden çok daha büyük bir ölçekte olduğunu düşünürdüm ...
Marc Shivers

1
PCA işlevi hesaplama yaparken her şeyi otomatik olarak normalleştirir.
Vishal

1
Belki de bu sadece benim, ama aşağıdakileri açıklığa kavuşturabilirdiniz: ilk adımınız, birer birer 10 (ham) özellik eklemekten ibaretti veya doğrudan PCA bileşenleriyle mi çalıştınız? Belirtildiği gibi, bunun ilk durum olduğunu anlıyorum ve doğrudan PCA'nın sonuçlarıyla çalışıp çalışamayacağınızı merak ediyorsunuz. Her iki durumda da, PCA'yı yeni özellikler dahil tüm değişkenlere mi, yoksa daha sonra mı uyguladınız?
chl

10 ek özellik ile PCA'yı orijinal matrise uyguladım. Daha sonra sınıflandırıcıyı her seferinde bir özellik ekleyerek eğittim, böylece her özelliğin eklenmesiyle sağlanan artımlı iyileştirmeyi ölçebilirim. Benim sorum, veri kümesini (10 yeni özellik ile) PCA alanına dönüştürdüysem ve sonra sınıflandırıcıyı doğrudan PCA alanındaki veri kümesinde çalıştırırsam
Vishal

Yanıtlar:


7

Tahminli modelleme yaparken, özelliklerin varyasyonunu değil, yanıttaki varyasyonu açıklamaya çalışıyorsunuz. Özellik varyasyonunun tek bir yeni özelliğe kadar sıkıştırılmasının, özelliklerin bir bütün olarak büyük miktarda tahmin gücünü yakalayacağına inanmak için hiçbir neden yoktur.

Bu genellikle Kısmi En Küçük Kareler yerine Temel Bileşen Regresyonu arasındaki fark olarak açıklanır.


Diyerek şöyle devam etti: "Özellik çeşitliliğinin tek bir yeni özelliğe kadar sıkıştırılmasının, özelliklerin bir bütün olarak büyük miktarda tahmin gücünü yakalayacağına inanmak için hiçbir neden yok." Asla mesele bu değildi ve bunu yapmak çok karışık bir sınıflandırıcıyla sonuçlanacaktır! Amaç, genelleme hatasını azaltmak amacıyla, veri kümesinin farklı yönlerini gösteren bir dizi özelliğe sahip olmaktı. PCA'yı almanın amacı, özelliklerin ne kadar farklı olduğunu görmekti. Yayınladığım nokta, özelliklerimin o kadar farklı olmamasıydı, ancak RF'nin sonuçları hala gelişti.
Vishal

1
Aynı mantık yine de uygulanabilir. Yeni bir özellik yüksek bir çizgidir ve önceki bir özellik ile daha öngörülü güç getirebilir. Bir randomForest için: genel olarak neredeyse yinelenen özellik önemliyse, bir sürümün veya diğerinin bölünen adaylar olarak seçilmesi daha olasıdır.
Shea Parkes

Bu takip sorusunu akla getiriyor, sınıflandırmayı geliştirmek için rastgele orman sınıflandırıcısının özellikleri sınıflandırıcıyı çalıştırmadan nasıl seçersiniz? Tarama süreci var mı? Bunu nasıl yapıyorsun? :)
Vishal

Herhangi bir yararlı a priori seçim yöntemi bilmiyorum. Gibi bazı R paketleri aracılığıyla önem ve seçim iç içe birçok döngü yapabilirsiniz Boruta. Onları da yararlı bulmadım. Herhangi bir özelliğin herhangi bir etkisi olmadığına inanmanın mantıksız olduğunu düşünüyorum. Bazı özellikleri diğerlerine göre vurgulamanın yararlı olabileceğine inanabilirim, ancak temel randomForest algoritması bunu zaten oldukça iyi yapıyor. Modelleme konusunda o kadar derinseniz ve daha fazla performans istiyorsanız, bazıları bazı yükseltilmiş ağaçlar gibi diğer algoritmaları randomForest ile istiflemenizi öneririm.
Shea Parkes

1
Bir priori, özelliklerinize (Jeffries-Matusita mesafesi, Diverjans, vb.) Dayalı olarak sınıflarınız için bazı ayrılabilirlik önlemleri hesaplayabilirsiniz. Bu, genel olarak hangi özelliklerin sınıfları ayırt etmenize yardımcı olduğunu anlamanıza yardımcı olabilir, ancak RF'nin çalışması nedeniyle hangi özelliklerin sınıflandırma için en iyi seti sağladığını seçmek kolay değildir. Buradaki açık engellerden biri RF'nin kendi başına değişken etkileşimler bulmasıdır.
JEquihua

6

İlk temel bileşen, tüm özelliklerinizin doğrusal bir birleşimidir. Neredeyse tüm değişkenliği açıklaması, sadece birinci temel bileşendeki değişkenlerin katsayılarının çoğunun önemli olduğu anlamına gelir.

Şimdi oluşturduğunuz sınıflandırma ağaçları da biraz farklı bir hayvan. Sınıflandırmak istediğiniz kategorileri en iyi şekilde ayıran sürekli değişkenler üzerinde ikili bölünmeler yaparlar. Bu, en büyük varyansın yönünü veren sürekli değişkenlerin dikey doğrusal kombinasyonlarını bulmakla tam olarak aynı değildir. Aslında, son zamanlarda, PCA'nın küme analizi için kullanıldığı CV ile ilgili bir makaleyi tartıştık ve yazar (lar), en iyi ayrılmanın ilk birkaç temel bileşende değil, son bileşenlerde bulunduğu durumlar olduğunu keşfettiler.


3
"Aslında son zamanlarda PCA'nın nerede olduğu CV ile ilgili bir makale tartıştık" buna bir bağlantınız var mı? Çok ilgileniyorum :)
user603

Tartışmayı arayacağım.
Michael R. Chernick

İlgili soruya bakmak için çok nazik misiniz ?
nadya
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.