Ç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+3X3−X4

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

X1+2X2+X3−2X4=5

5X2+3X3−X4X1

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.