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 .