Ö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).Σ−1WΣ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ΣWN≫1Σ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:
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.
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:
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.