Çok sınıflı LDA eğitiminde eş değişkenler


16

8 sınıf veri ile çok sınıflı bir LDA sınıflandırıcısı eğitimi alıyorum .

Eğitim yaparken şu uyarıyı alıyorum: " Değişkenler uyumludur "

% 90'ın üzerinde bir eğitim doğruluğu elde ediyorum .

Ben scytits-learn kütüphane Python do train ve çok sınıflı veri test kullanıyorum.

Ben de iyi bir test doğruluğu elde ediyorum (yaklaşık % 85-% 95 ).

Hatanın / uyarının ne anlama geldiğini anlamıyorum. Lütfen bana yardım et.

Yanıtlar:


29

Çoklu doğrusallık , öngörücülerinizin ilişkili olduğu anlamına gelir. Bu neden kötü?

Çünkü LDA, regresyon teknikleri gibi, determinant 0'a yakınsa ( yani iki veya daha fazla değişken neredeyse birbirinin doğrusal bir kombinasyonuysa) yanlış olan bir matris tersinin hesaplanmasını içerir .

Daha da önemlisi, tahmini katsayıların yorumlanmasını imkansız hale getirir. Bir artış olursa demek, bir azalma ile ilişkilidir ve her ikisi de artış değişkeni , her değişiklik bir değişiklik tazmin edilecektir ve etkisini hafife olacak üzerinde . , sınıflandırma üzerindeki etkisini hafife alırsınız .X1X2YX1X2X1YX1

Tek ihtiyacınız olan sınıflandırma kendi başına ise ve modelinizi verilerin yarısı üzerinde eğitip diğer yarısında test ettikten sonra% 85-95 oranında doğruluk elde edersiniz.


Bunu, test doğruluğunun düşük olması durumunda özellik vektöründeki X1 özelliğinin iyi bir seçim olmadığı şeklinde yorumlayabilir miyim?
garak

1
Test doğruluğu düşükse iyi bir seçim olmadığını tahmin ediyorum.
gui11aume

İlginç olan şey, LDA ile bu sorunu yaşıyorum ama QDA kullandığımda değil. Orada neyin farklı olduğunu merak ediyorum.
garak

1
Cevap için +1, ancak "bir matris tersinin hesaplanması" doğru olmayabilir. Hiçbir zaman açık bir şekilde bilgisayar kullanmayız, LU, QR veya yinelemeli yöntemler gibi doğrudan yöntemler kullanılır.
Haitao Du

@ hxd1011 Doğru! Kayıt için, matris "neredeyse tekil" olduğunda LU / QR vs.'de neler olduğu hakkında birkaç söz verebilir misiniz, yoksa açıklayan bir belgeye işaret edebilir misiniz?
gui11aume

12

Gui11aume'un size harika bir cevap verdiğini düşündüğüm gibi, aydınlatıcı olabilecek biraz farklı bir açıdan örnek vermek istiyorum. Ayrımcı işlevinizdeki bir değişkenin aşağıdaki gibi olduğunu düşünün:

X1=5X2+3X3X4

En iyi LDA'nın aşağıdaki doğrusal sınırlara sahip olduğunu varsayalım:

X1+2X2+X32X4=5

5X2+3X3X4X1

5X2+3X3-X4+2X2+X3-2X4=5

veya

7X2+4X3-3X4=5

1,2,1,-2X1X2X3X40,7,3,-1

Dolayısıyla katsayı oldukça farklıdır, ancak iki denklem aynı sınır ve özdeş tahmin kuralını verir. Bir form iyi ise diğeri de iyidir. Ama şimdi gui11ame'in katsayıların neden yorumlanamayacağını söylediğini görebilirsiniz.

X20X3X4


1

Burada işaretlenen cevap doğru olsa da, kodunuzda ne olduğunu öğrenmek için farklı bir açıklama aradığınızı düşünüyorum. Aynı sorunu bir model üzerinden geçiriyordum.

Neler oluyor: Veri kümenizin bir parçası olarak modelinizi öngörülen değişkenle eğitiyorsunuz. Fark etmeden başıma gelenlere bir örnek:

df = pd.read_csv('file.csv')
df.columns = ['COL1','COL2','COL3','COL4']
train_Y = train['COL3']
train_X = train[train.columns[:-1]]

Bu kodda, 'COL3' değerini tahmin etmek istiyorum ... ama, train_X'e bakarsanız, sonuncusu hariç her sütunu almasını söylüyorum, böylece COL4 değil, COL1 COL2 ve COL3 girişi, ve train_X'in bir parçası olan COL3'ü tahmin etmeye çalışmak.

Bunu sadece sütunları taşıyarak düzelttim, veri kümemdeki (şimdi COL4'ün yerini alan) son sütun olmak için Excel'de COL3'ü manuel olarak taşıdım ve sonra:

df = pd.read_csv('file.csv')
df.columns = ['COL1','COL2','COL3','COL4']
train_Y = train['COL4']
train_X = train[train.columns[:-1]]

Excel'de taşımak istemiyorsanız ve sadece kodla yapmak istiyorsanız:

df = pd.read_csv('file.csv')
df.columns = ['COL1','COL2','COL3','COL4']
train_Y = train['COL3']
train_X = train[train.columns['COL1','COL2','COL4']]

Şimdi train_Y'nin bir parçası olan COL3 dışındaki tüm sütunları dahil etmek için train_X'i nasıl ilan ettiğime dikkat edin.

Umarım bu yardımcı olur.

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.