PCA ve LDA'yı birleştirmek mantıklı mı?


25

Örneğin bir Bayes sınıflandırıcısı aracılığıyla denetimli bir istatistiksel sınıflandırma görevi için bir veri setine sahip olduğumu varsayalım. Bu veri seti 20 özellikten oluşuyor ve Temel Bileşen Analizi (PCA) ve / veya Doğrusal Ayrımcı Analizi (LDA) gibi boyutsallık azaltma teknikleri ile onu 2 özelliğe çıkarmak istiyorum.

Her iki teknik de verileri daha küçük bir özellik alt uzayına yansıtıyor: PCA ile, veri kümesindeki varyansı en üst düzeye çıkaran yönergeleri (bileşenler) bulabilirim (sınıf etiketlerini göz önünde bulundurmadan) ve LDA ile araları en üst düzeye çıkaran bileşenlere sahip olurdum. sınıf ayrımı.

Şimdi, bu tekniklerin birleştirilip birleştirilmediğini ve neden anlamlı olup olmadığını merak ediyorum.

Örneğin:

  1. veri setini PCA ile dönüştürmek ve yeni bir 2D alt alanına yansıtmak
  2. dönüştürme (zaten PCA-dönüştürülmüş) veri setini LDA üzerinden maks. sınıf içi ayrılık

veya

  1. PCA adımını atlamak ve bir LDA'daki ilk 2 bileşeni kullanmak.

veya mantıklı olan başka bir kombinasyon.


2
Evrensel olamaz best practice. PCA ve LDA, boyutluluk azaltma teknikleri olarak, çok farklı. Bazen insanlar PCA'yı LDA'dan önce yaparlar, ancak (atılan PC'lerle) önemli ayrımcı boyutları atma riskleri vardır. İstediğiniz soru aslında bu sitede birkaç kez bir şekilde sorulmuştur. Lütfen insanların söylediklerini okumak için "PCA LDA" ifadesini arayın.
ttnphns

@SebastianRaschka: Buradaki cevabımın yararlı olup olmadığını merak ediyorum ya da bu konular hakkında başka sorunuz var mı?
amip diyor Reinstate Monica

@ amoeba üzgünüm, şu ana kadar cevabı görmedi - bir şekilde çatlaklardan geçti, teşekkür ederim!

Yanıtlar:


44

Özet: PCA LDA'dan önce sorunu düzenlemek ve fazla uydurmamak için yapılabilir.

LDA projeksiyonlarının, , burada ve , sınıf içi kovaryans matrislerinin . az veri noktası varsa (burada , alanınızın boyutsallığıdır, yani özelliklerin / değişkenlerin sayısı), o zaman tekil olacaktır ve bu nedenle ters . Bu durumda doğrudan LDA'yı gerçekleştirmenin bir yolu yoktur, ancak önce PCA uygulanırsa çalışacaktır. @Aaron bu yorumu cevabına yaptığı yorumlarda yaptı ve ben de buna katılıyorum (ama şimdi göreceğiniz gibi, genel olarak cevabına katılmıyorum).ΣW1ΣBΣWΣBNNΣW

Ancak, bu sorunun sadece bir kısmı. Daha büyük resim, LDA'nın verileri kolayca değiştirmeye meyilli olduğudur. Sınıf içi kovaryans matrisinin LDA hesaplamalarında ters çevrildiğini unutmayın ; yüksek boyutlu matrisler için inversiyon, yalnızca tahmini gerçekten , güvenilir bir şekilde yapılabilecek, gerçekten hassas bir işlemdir . Ama yüksek boyutlarda , kesin bir tahmin elde etmek için gerçekten zor ve pratikte bir çoğu kez sahip olması çok fazla veri noktaları tahmin iyi olduğunu umut başlatın. Aksi takdirdeΣWN1ΣWNΣW neredeyse tekil olacak (yani özdeğerlerin bazıları çok düşük olacak) ve bu da aşırı uyuşmaya, yani test verilerinde şans performansı ile antrenman verilerinde neredeyse mükemmel bir sınıf ayrımına neden olacak.

Bu sorunla başa çıkmak için , sorunu düzeltmek gerekiyor . Bunu yapmanın bir yolu, öncelikle boyutsallığı azaltmak için PCA'yı kullanmaktır. Başka, tartışmalı olarak daha iyi olanlar var, örneğin basitleştirilmiş yerine küçük ile kullanan düzenli LDA (rLDA) yöntemi var (buna büzülme tahmincisi denir) ), ancak önce PCA'yı yapmak kavramsal olarak en basit yaklaşımdır ve genellikle çok iyi çalışır.(1λ)ΣW+λIλΣW

örnekleme

Aşırı uydurma sorununun bir örneği. Standart Gauss dağılımından (ortalama sıfır, birim varyans) 10-10, 50-, 100- ve 150-boyutlu alanlardan 3 sınıfta sınıf başına 60 örnek oluşturdum ve verileri 2D'ye yansıtmak için LDA'yı kullandım:

LDA’da

Boyutluluğun büyüdükçe sınıfların daha iyi ve daha iyi ayrıldığını, oysa gerçekte sınıflar arasında bir fark olmadığını unutmayın .

Sınıfları biraz ayırırsak PCA'nın aşırı yüklenmeyi önlemeye nasıl yardımcı olduğunu görebiliriz. Birinci sınıfın ilk koordinatına 1, ikinci sınıfın ilk koordinatına 2, üçüncü sınıfın ilk koordinatına 1 ekledim. Şimdi biraz ayrılmışlar, bkz.

LDA’da fazla donanım ve PCA ile düzenlileştirme

Takım elbise (üst sıra) hala açık. Ancak, verileri PCA ile önceden işleme koyarsam, her zaman 10 boyut (alt satırda) tutarken, sınıflar optimal olarak birbirlerinden ayrılmaya devam ederken aşırı uyumluluk ortadan kalkar.

PS. Yanlış anlamaları önlemek için: PCA + LDA'nın iyi bir düzenlileştirme stratejisi olduğunu iddia etmiyorum (aksine, rLDA'yı kullanmayı tavsiye ederim), bunun olası bir strateji olduğunu gösteriyorum.


Güncelleştirme. Cbeleites tarafından sağlanan ilginç ve kapsamlı cevaplarla, aşağıdaki başlıklarda çok benzer bir konu daha önce tartışılmıştı:

Bu soruya bazı iyi cevaplarla da bakınız:


Cidden iyi bir cevap! Ve temel teoriyi açıklarken, orada da güzel bir pratik açıklamanız var, referans koleksiyonum için bir başka büyük cevap. Çok teşekkürler!

İkinci arsayı anlamıyorum, bana öyle geliyor ki sınıflar
LDA'dan

@ Pierre, ikinci arsa üzerinde sınıflar neredeyse ayrılmayacak şekilde üretilir. Ayrılık küçük. Alt satırda bu küçük ayrımı görebilirsiniz, ancak yakından bakmanız gerekir: mavi ve kırmızı sınıflara odaklandığınızda, birinin sola, diğeri de sağa kaydırıldığını göreceksiniz.
amip diyor Reinstate Monica

Tamam anladım. En üst satırda gördüğümüz sınıfların ayrılmasının gerçekten uygun olmadığını unuttum. Teşekkürler
PierreE,

1

Eğer iki sınıf bir probleminiz varsa, LDA sizi 1 boyuta indirecektir. İlk önce PCA'yı yapmak için hiçbir sebep yoktur.


1
Hımm, buradaki mantığınızı takip etmiyorum: LDA'nın tercih etmediğiniz sürece sizi 1 boyuta düşürmediğinden eminim. Değerleri azaltarak özdeğerleri sıraladıktan sonra kaç tane özvektör saklamak istediğinize bağlıdır. Belki burada bir şeyleri özlüyorum ... ama ders sayısından bahsetmedim. Her biri 20 özelliğe sahip 3 sınıfımız olduğunu varsayalım ve onları bir 3B alt alana yansıtmak istiyorum.

1
İlk önce PCA'yı yapmanın tek nedeni, sınıf içi kovaryans matrisinin tekil olması. Eğer 20 özellik ve üç sınıfınız varsa, o zaman tekil olmayacak, ilk önce PCA yapmayın.
Aaron,

4
assume we have 3 classes. @SebastianRaschka: Öyleyse LDA size maksimum 2 ayırıcı işlev sunacaktır. İçinde eigen sayısı LDA dakika (NUM_GROUPS-1, num_features) 'dir.
ttnphns,

@Sebastian LDA'dan seçtiğiniz ayırt edici işlevlerin sayısı, onunla ne yapmak istediğinize bağlı. Bir uzay dönüşümü olarak hemen hemen "denetimli" PCA gibidir ve istediğiniz kadar çok seçim yaparsınız. Bir hiper düzlem ayırma sınıflandırma yöntemi olarak, hiper düzlem tanım olarak N-1 boyutundadır. Yok nerede hala anlamıyorum çünkü gerçi ek bilgi için bu konu hakkında bir soru sorabiliriz min(num_groups-1,num_features)... gelen
Matthieu

1
@Matthieu Bunun sınıf içi dağılım matrisi nedeniyle olduğuna inanıyorum, 1 veya daha düşük dereceye sahip c (c = sınıf sayısı) matrisleri ekleyerek yaratıyorsunuz. Böylece sadece c-1 sıfır olmayan özdeğerleri maks.
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.