Analisis diskriminan kuadrat dalam r (langkah demi langkah)


Analisis diskriminan kuadrat adalah metode yang dapat Anda gunakan ketika Anda memiliki sekumpulan variabel prediktor dan Anda ingin mengklasifikasikan variabel respons ke dalam dua kelas atau lebih. Ini dianggap setara dengan analisis diskriminan linier .

Tutorial ini memberikan contoh langkah demi langkah tentang cara melakukan analisis diskriminan kuadrat di R.

Langkah 1: Muat Perpustakaan yang Diperlukan

Pertama, kami akan memuat perpustakaan yang diperlukan untuk contoh ini:

 library (MASS)
library (ggplot2)

Langkah 2: Muat data

Untuk contoh ini, kita akan menggunakan kumpulan data iris yang terpasang di R. Kode berikut menunjukkan cara memuat dan menampilkan kumpulan data ini:

 #attach iris dataset to make it easy to work with
attach(iris)

#view structure of dataset
str(iris)

'data.frame': 150 obs. of 5 variables:
 $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width: num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $Petal.Width: num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species: Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 ...

Kita dapat melihat bahwa dataset tersebut berisi 5 variabel dan total 150 observasi.

Untuk contoh ini, kita akan membangun model analisis diskriminan kuadrat untuk mengklasifikasikan spesies yang dimiliki suatu bunga.

Kami akan menggunakan variabel prediktor berikut dalam model:

  • Sepal.panjang
  • Sepal.Lebar
  • Kelopak. Panjang
  • Kelopak. Lebar

Dan kita akan menggunakannya untuk memprediksi variabel respon Spesies , yang mendukung tiga kelas potensial berikut:

  • setosa
  • versikolor
  • Virginia

Langkah 3: Buat sampel pelatihan dan pengujian

Selanjutnya, kita akan membagi kumpulan data menjadi kumpulan pelatihan untuk melatih model dan kumpulan pengujian untuk menguji model:

 #make this example reproducible
set.seed(1)

#Use 70% of dataset as training set and remaining 30% as testing set
sample <- sample(c( TRUE , FALSE ), nrow (iris), replace = TRUE , prob =c(0.7,0.3))
train <- iris[sample, ]
test <- iris[!sample, ] 

Langkah 4: Sesuaikan model QDA

Selanjutnya, kita akan menggunakan fungsi qda() dari paket MASS untuk mengadaptasi model QDA ke data kita:

 #fit QDA model
model <- qda(Species~., data=train)

#view model output
model

Call:
qda(Species ~ ., data = train)

Prior probabilities of groups:
    setosa versicolor virginica 
 0.3207547 0.3207547 0.3584906 

Group means:
           Sepal.Length Sepal.Width Petal.Length Petal.Width
setosa 4.982353 3.411765 1.482353 0.2411765
versicolor 5.994118 2.794118 4.358824 1.3676471
virginica 6.636842 2.973684 5.592105 2.0552632 

Berikut cara menginterpretasikan hasil model:

Kelompokkan probabilitas sebelumnya: Ini mewakili proporsi setiap spesies dalam set pelatihan. Misalnya, 35,8% dari seluruh observasi di set pelatihan ditujukan untuk spesies virginica .

Rata-rata kelompok: Ini menampilkan nilai rata-rata setiap variabel prediktor untuk setiap spesies.

Langkah 5: Gunakan model untuk membuat prediksi

Setelah kita memasang model menggunakan data pelatihan, kita dapat menggunakannya untuk membuat prediksi pada data pengujian:

 #use QDA model to make predictions on test data
predicted <- predict (model, test)

names(predicted)

[1] "class" "posterior" "x"   

Ini mengembalikan daftar dengan dua variabel:

  • kelas: kelas yang diprediksi
  • posterior: Probabilitas posterior bahwa suatu observasi termasuk dalam setiap kelas

Kami dapat dengan cepat memvisualisasikan masing-masing hasil ini untuk enam observasi pertama dalam kumpulan data pengujian kami:

 #view predicted class for first six observations in test set
head(predicted$class)

[1] setosa setosa setosa setosa setosa setosa
Levels: setosa versicolor virginica

#view posterior probabilities for first six observations in test set
head(predicted$posterior)

   setosa versicolor virginica
4 1 7.224770e-20 1.642236e-29
6 1 6.209196e-26 8.550911e-38
7 1 1.248337e-21 8.132700e-32
15 1 2.319705e-35 5.094803e-50
17 1 1.396840e-29 9.586504e-43
18 1 7.581165e-25 8.611321e-37

Langkah 6: Evaluasi modelnya

Kita dapat menggunakan kode berikut untuk melihat berapa persentase observasi model QDA yang memprediksi spesies dengan benar:

 #find accuracy of model
mean(predicted$class==test$Species)

[1] 1

Ternyata model tersebut memprediksi spesies dengan tepat untuk 100% observasi dalam kumpulan data pengujian kami.

Di dunia nyata, model QDA jarang memprediksi dengan tepat hasil setiap kelas, tetapi kumpulan data iris ini dibuat sedemikian rupa sehingga algoritme pembelajaran mesin cenderung bekerja dengan sangat baik.

Anda dapat menemukan kode R lengkap yang digunakan dalam tutorial ini di sini .

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *