Nama Kelompok: 1. Dwi Ferianto Hamzah
(24031554019)
2. Faiz Azmin Ahmad (24031554175)
3. Indah Faizah Salsabillah Ramdhany Wadjo (24031554210)
Dataset yang digunakan dalam analisis ini adalah Dermatology Dataset yang berasal dari UCI Machine Learning Repository. Dataset dapat diakses melalui tautan berikut:
https://archive.ics.uci.edu/dataset/33/dermatology
Dataset ini berisi data pasien penyakit kulit berdasarkan gejala klinis dan hasil pemeriksaan histopatologis. Tujuan utama dari dataset ini adalah untuk mengklasifikasikan jenis penyakit kulit berdasarkan variabel-variabel yang tersedia.
Pada dataset ini, variabel target adalah jenis penyakit kulit yang terdiri dari enam kelas, yaitu psoriasis, seboreic dermatitis, lichen planus, pityriasis rosea, chronic dermatitis, dan pityriasis rubra pilaris.
Karena terdapat lebih dari dua kelas penyakit, maka analisis ini termasuk dalam klasifikasi multiclass atau multinomial. Metode yang digunakan adalah Linear Discriminant Analysis (LDA).
Tujuan dari analisis ini adalah membangun model LDA untuk memprediksi jenis penyakit kulit berdasarkan data gejala yang tersedia.
Tahap ini bertujuan untuk memanggil package yang dibutuhkan dalam
analisis. Package MASS digunakan untuk membentuk model LDA,
caret digunakan untuk membagi data dan mengevaluasi model,
ggplot2 digunakan untuk visualisasi, dan dplyr
digunakan untuk membantu manipulasi data.
library(MASS)
library(caret)
library(ggplot2)
library(dplyr)
Tahap ini bertujuan untuk membaca file dermatology.data
ke dalam R. File tersebut merupakan data utama yang digunakan dalam
analisis. Karena dataset tidak memiliki nama kolom, maka digunakan
header = FALSE. Selain itu, missing value pada dataset
ditandai dengan tanda ?, sehingga digunakan
na.strings = "?".
data_derma <- read.csv("dermatology.data",
header = FALSE,
na.strings = "?")
head(data_derma)
## V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21
## 1 2 2 0 3 0 0 0 0 1 0 0 0 0 0 0 3 2 0 0 0 0
## 2 3 3 3 2 1 0 0 0 1 1 1 0 0 1 0 1 2 0 2 2 2
## 3 2 1 2 3 1 3 0 3 0 0 0 1 0 0 0 1 2 0 2 0 0
## 4 2 2 2 0 0 0 0 0 3 2 0 0 0 3 0 0 2 0 3 2 2
## 5 2 3 2 2 2 2 0 2 0 0 0 1 0 0 0 1 2 0 0 0 0
## 6 2 3 2 0 0 0 0 0 0 0 0 0 2 1 0 2 2 0 2 0 0
## V22 V23 V24 V25 V26 V27 V28 V29 V30 V31 V32 V33 V34 V35
## 1 0 0 0 0 0 0 3 0 0 0 1 0 55 2
## 2 2 2 1 0 0 0 0 0 0 0 1 0 8 1
## 3 0 0 0 2 0 2 3 2 0 0 2 3 26 3
## 4 2 2 0 0 3 0 0 0 0 0 3 0 40 1
## 5 0 0 0 2 2 3 2 3 0 0 2 3 45 3
## 6 0 1 0 0 0 0 2 0 0 0 1 0 41 2
dim(data_derma)
## [1] 366 35
str(data_derma)
## 'data.frame': 366 obs. of 35 variables:
## $ V1 : int 2 3 2 2 2 2 2 2 2 2 ...
## $ V2 : int 2 3 1 2 3 3 1 2 2 2 ...
## $ V3 : int 0 3 2 2 2 2 0 3 1 1 ...
## $ V4 : int 3 2 3 0 2 0 2 3 0 0 ...
## $ V5 : int 0 1 1 0 2 0 0 3 2 1 ...
## $ V6 : int 0 0 3 0 2 0 0 3 0 0 ...
## $ V7 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ V8 : int 0 0 3 0 2 0 0 2 0 0 ...
## $ V9 : int 1 1 0 3 0 0 0 0 0 0 ...
## $ V10: int 0 1 0 2 0 0 0 0 0 0 ...
## $ V11: int 0 1 0 0 0 0 0 0 0 0 ...
## $ V12: int 0 0 1 0 1 0 0 2 0 0 ...
## $ V13: int 0 0 0 0 0 2 0 0 0 0 ...
## $ V14: int 0 1 0 3 0 1 0 0 0 0 ...
## $ V15: int 0 0 0 0 0 0 3 0 0 0 ...
## $ V16: int 3 1 1 0 1 2 1 2 2 3 ...
## $ V17: int 2 2 2 2 2 2 3 3 1 2 ...
## $ V18: int 0 0 0 0 0 0 0 0 0 0 ...
## $ V19: int 0 2 2 3 0 2 0 0 1 2 ...
## $ V20: int 0 2 0 2 0 0 0 0 0 0 ...
## $ V21: int 0 2 0 2 0 0 2 0 0 0 ...
## $ V22: int 0 2 0 2 0 0 0 0 0 0 ...
## $ V23: int 0 2 0 2 0 1 0 0 0 0 ...
## $ V24: int 0 1 0 0 0 0 0 0 0 0 ...
## $ V25: int 0 0 2 0 2 0 0 0 0 0 ...
## $ V26: int 0 0 0 3 2 0 0 2 0 0 ...
## $ V27: int 0 0 2 0 3 0 0 2 0 0 ...
## $ V28: int 3 0 3 0 2 2 0 3 2 2 ...
## $ V29: int 0 0 2 0 3 0 0 2 0 0 ...
## $ V30: int 0 0 0 0 0 0 0 0 0 0 ...
## $ V31: int 0 0 0 0 0 0 0 0 0 0 ...
## $ V32: int 1 1 2 3 2 1 2 3 2 2 ...
## $ V33: int 0 0 3 0 3 0 0 3 0 0 ...
## $ V34: int 55 8 26 40 45 41 18 57 22 30 ...
## $ V35: int 2 1 3 1 3 2 5 3 4 4 ...
#3. Pemberian Nama Variabel
Tahap ini bertujuan untuk memberi nama pada setiap kolom dataset.
Nama variabel diambil berdasarkan informasi pada file
dermatology.names. Pemberian nama kolom dilakukan agar data
lebih mudah dibaca, dianalisis, dan dijelaskan dalam laporan.
colnames(data_derma) <- c(
"erythema",
"scaling",
"definite_borders",
"itching",
"koebner_phenomenon",
"polygonal_papules",
"follicular_papules",
"oral_mucosal_involvement",
"knee_elbow_involvement",
"scalp_involvement",
"family_history",
"melanin_incontinence",
"eosinophils_in_infiltrate",
"PNL_infiltrate",
"fibrosis_papillary_dermis",
"exocytosis",
"acanthosis",
"hyperkeratosis",
"parakeratosis",
"clubbing_rete_ridges",
"elongation_rete_ridges",
"thinning_suprapapillary_epidermis",
"spongiform_pustule",
"munro_microabcess",
"focal_hypergranulosis",
"disappearance_granular_layer",
"vacuolisation_damage_basal_layer",
"spongiosis",
"saw_tooth_appearance_retes",
"follicular_horn_plug",
"perifollicular_parakeratosis",
"inflammatory_mononuclear_infiltrate",
"band_like_infiltrate",
"age",
"class"
)
names(data_derma)
## [1] "erythema" "scaling"
## [3] "definite_borders" "itching"
## [5] "koebner_phenomenon" "polygonal_papules"
## [7] "follicular_papules" "oral_mucosal_involvement"
## [9] "knee_elbow_involvement" "scalp_involvement"
## [11] "family_history" "melanin_incontinence"
## [13] "eosinophils_in_infiltrate" "PNL_infiltrate"
## [15] "fibrosis_papillary_dermis" "exocytosis"
## [17] "acanthosis" "hyperkeratosis"
## [19] "parakeratosis" "clubbing_rete_ridges"
## [21] "elongation_rete_ridges" "thinning_suprapapillary_epidermis"
## [23] "spongiform_pustule" "munro_microabcess"
## [25] "focal_hypergranulosis" "disappearance_granular_layer"
## [27] "vacuolisation_damage_basal_layer" "spongiosis"
## [29] "saw_tooth_appearance_retes" "follicular_horn_plug"
## [31] "perifollicular_parakeratosis" "inflammatory_mononuclear_infiltrate"
## [33] "band_like_infiltrate" "age"
## [35] "class"
#4. Deskripsi Dataset
Tahap ini bertujuan untuk melihat gambaran umum dataset, seperti
jumlah observasi, jumlah variabel, dan ringkasan statistik awal. Dataset
Dermatology memiliki variabel prediktor yang menggambarkan kondisi
klinis dan histopatologis pasien, serta satu variabel target yaitu
class.
dim(data_derma)
## [1] 366 35
summary(data_derma)
## erythema scaling definite_borders itching
## Min. :0.000 Min. :0.000 Min. :0.000 Min. :0.000
## 1st Qu.:2.000 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:0.000
## Median :2.000 Median :2.000 Median :2.000 Median :1.000
## Mean :2.068 Mean :1.795 Mean :1.549 Mean :1.366
## 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:2.000
## Max. :3.000 Max. :3.000 Max. :3.000 Max. :3.000
##
## koebner_phenomenon polygonal_papules follicular_papules
## Min. :0.0000 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000 Median :0.0000
## Mean :0.6339 Mean :0.4481 Mean :0.1667
## 3rd Qu.:1.0000 3rd Qu.:0.0000 3rd Qu.:0.0000
## Max. :3.0000 Max. :3.0000 Max. :3.0000
##
## oral_mucosal_involvement knee_elbow_involvement scalp_involvement
## Min. :0.000 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.000 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.000 Median :0.0000 Median :0.0000
## Mean :0.377 Mean :0.6148 Mean :0.5191
## 3rd Qu.:0.000 3rd Qu.:1.0000 3rd Qu.:1.0000
## Max. :3.000 Max. :3.0000 Max. :3.0000
##
## family_history melanin_incontinence eosinophils_in_infiltrate
## Min. :0.0000 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000 Median :0.0000
## Mean :0.1257 Mean :0.4044 Mean :0.1393
## 3rd Qu.:0.0000 3rd Qu.:0.0000 3rd Qu.:0.0000
## Max. :1.0000 Max. :3.0000 Max. :2.0000
##
## PNL_infiltrate fibrosis_papillary_dermis exocytosis acanthosis
## Min. :0.0000 Min. :0.0000 Min. :0.000 Min. :0.000
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.000 1st Qu.:2.000
## Median :0.0000 Median :0.0000 Median :2.000 Median :2.000
## Mean :0.5464 Mean :0.3361 Mean :1.369 Mean :1.956
## 3rd Qu.:1.0000 3rd Qu.:0.0000 3rd Qu.:2.000 3rd Qu.:2.000
## Max. :3.0000 Max. :3.0000 Max. :3.000 Max. :3.000
##
## hyperkeratosis parakeratosis clubbing_rete_ridges elongation_rete_ridges
## Min. :0.0000 Min. :0.00 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:1.00 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :1.00 Median :0.0000 Median :0.0000
## Mean :0.5273 Mean :1.29 Mean :0.6639 Mean :0.9918
## 3rd Qu.:1.0000 3rd Qu.:2.00 3rd Qu.:2.0000 3rd Qu.:2.0000
## Max. :3.0000 Max. :3.00 Max. :3.0000 Max. :3.0000
##
## thinning_suprapapillary_epidermis spongiform_pustule munro_microabcess
## Min. :0.0000 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000 Median :0.0000
## Mean :0.6339 Mean :0.2951 Mean :0.3634
## 3rd Qu.:1.0000 3rd Qu.:0.0000 3rd Qu.:0.0000
## Max. :3.0000 Max. :3.0000 Max. :3.0000
##
## focal_hypergranulosis disappearance_granular_layer
## Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000
## Mean :0.3934 Mean :0.4645
## 3rd Qu.:0.0000 3rd Qu.:1.0000
## Max. :3.0000 Max. :3.0000
##
## vacuolisation_damage_basal_layer spongiosis saw_tooth_appearance_retes
## Min. :0.0000 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000 Median :0.0000
## Mean :0.4563 Mean :0.9536 Mean :0.4536
## 3rd Qu.:0.0000 3rd Qu.:2.0000 3rd Qu.:0.0000
## Max. :3.0000 Max. :3.0000 Max. :3.0000
##
## follicular_horn_plug perifollicular_parakeratosis
## Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000
## Mean :0.1038 Mean :0.1148
## 3rd Qu.:0.0000 3rd Qu.:0.0000
## Max. :3.0000 Max. :3.0000
##
## inflammatory_mononuclear_infiltrate band_like_infiltrate age
## Min. :0.000 Min. :0.0000 Min. : 0.00
## 1st Qu.:1.000 1st Qu.:0.0000 1st Qu.:25.00
## Median :2.000 Median :0.0000 Median :35.00
## Mean :1.866 Mean :0.5546 Mean :36.30
## 3rd Qu.:2.000 3rd Qu.:0.0000 3rd Qu.:49.75
## Max. :3.000 Max. :3.0000 Max. :75.00
## NA's :8
## class
## Min. :1.000
## 1st Qu.:1.000
## Median :3.000
## Mean :2.803
## 3rd Qu.:4.000
## Max. :6.000
##
#5. Mengubah Variabel Target Menjadi Faktor
Tahap ini bertujuan untuk mengubah variabel class
menjadi variabel faktor atau kategori. Hal ini penting karena LDA
digunakan untuk klasifikasi, sehingga variabel target harus berbentuk
kategorik. Kode kelas 1 sampai 6 diubah menjadi nama penyakit agar hasil
analisis lebih mudah dipahami.
data_derma$class <- factor(data_derma$class,
levels = c(1, 2, 3, 4, 5, 6),
labels = c("Psoriasis",
"Seboreic dermatitis",
"Lichen planus",
"Pityriasis rosea",
"Chronic dermatitis",
"Pityriasis rubra pilaris"))
table(data_derma$class)
##
## Psoriasis Seboreic dermatitis Lichen planus
## 112 61 72
## Pityriasis rosea Chronic dermatitis Pityriasis rubra pilaris
## 49 52 20
#6. Kelas Diagnosis Penyakit
Tahap ini bertujuan untuk menjelaskan enam kelas diagnosis penyakit kulit yang terdapat pada dataset. Karena terdapat enam kelas, maka analisis ini termasuk klasifikasi multiclass atau multinomial.
#7. Gambaran Visual Jenis Penyakit
Tahap ini bertujuan untuk memberikan gambaran visual mengenai enam jenis penyakit kulit yang menjadi kelas target pada dataset. Gambar ini digunakan sebagai ilustrasi pendukung agar pembaca dapat memahami konteks dataset, bukan sebagai bagian dari proses analisis LDA.Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.
Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.
Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.
Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.
Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.
Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.
8. Sumber gambar:
#9. Pemeriksaan Missing Value
Tahap ini bertujuan untuk mengetahui apakah terdapat data yang hilang
atau missing value. Missing value perlu diperiksa karena dapat
memengaruhi proses pembentukan model LDA. Pada dataset Dermatology,
missing value biasanya terdapat pada variabel age.
colSums(is.na(data_derma))
## erythema scaling
## 0 0
## definite_borders itching
## 0 0
## koebner_phenomenon polygonal_papules
## 0 0
## follicular_papules oral_mucosal_involvement
## 0 0
## knee_elbow_involvement scalp_involvement
## 0 0
## family_history melanin_incontinence
## 0 0
## eosinophils_in_infiltrate PNL_infiltrate
## 0 0
## fibrosis_papillary_dermis exocytosis
## 0 0
## acanthosis hyperkeratosis
## 0 0
## parakeratosis clubbing_rete_ridges
## 0 0
## elongation_rete_ridges thinning_suprapapillary_epidermis
## 0 0
## spongiform_pustule munro_microabcess
## 0 0
## focal_hypergranulosis disappearance_granular_layer
## 0 0
## vacuolisation_damage_basal_layer spongiosis
## 0 0
## saw_tooth_appearance_retes follicular_horn_plug
## 0 0
## perifollicular_parakeratosis inflammatory_mononuclear_infiltrate
## 0 0
## band_like_infiltrate age
## 0 8
## class
## 0
data_derma[!complete.cases(data_derma), ]
## erythema scaling definite_borders itching koebner_phenomenon
## 34 2 2 1 0 0
## 35 2 1 0 0 2
## 36 2 2 1 2 0
## 37 2 1 2 3 2
## 263 2 1 0 2 0
## 264 1 1 1 3 0
## 265 1 1 0 2 0
## 266 1 1 0 3 0
## polygonal_papules follicular_papules oral_mucosal_involvement
## 34 0 0 0
## 35 0 0 0
## 36 0 0 0
## 37 3 0 2
## 263 0 0 0
## 264 0 0 0
## 265 0 0 0
## 266 0 0 0
## knee_elbow_involvement scalp_involvement family_history
## 34 1 0 1
## 35 0 0 0
## 36 0 0 0
## 37 0 0 1
## 263 0 0 0
## 264 0 0 0
## 265 1 0 0
## 266 0 0 0
## melanin_incontinence eosinophils_in_infiltrate PNL_infiltrate
## 34 0 0 2
## 35 0 0 0
## 36 0 0 2
## 37 1 0 0
## 263 0 0 0
## 264 0 0 0
## 265 0 0 0
## 266 0 0 0
## fibrosis_papillary_dermis exocytosis acanthosis hyperkeratosis
## 34 0 0 2 1
## 35 0 2 1 1
## 36 0 1 0 1
## 37 0 2 1 1
## 263 2 1 3 2
## 264 3 2 3 1
## 265 3 2 3 2
## 266 2 1 3 1
## parakeratosis clubbing_rete_ridges elongation_rete_ridges
## 34 2 2 1
## 35 1 0 0
## 36 0 0 0
## 37 2 0 0
## 263 2 1 3
## 264 2 2 2
## 265 1 1 3
## 266 1 0 2
## thinning_suprapapillary_epidermis spongiform_pustule munro_microabcess
## 34 2 0 1
## 35 0 0 0
## 36 0 0 0
## 37 0 0 0
## 263 0 0 0
## 264 0 0 0
## 265 0 0 0
## 266 0 1 0
## focal_hypergranulosis disappearance_granular_layer
## 34 0 0
## 35 0 0
## 36 0 0
## 37 1 0
## 263 0 0
## 264 0 0
## 265 0 0
## 266 0 0
## vacuolisation_damage_basal_layer spongiosis saw_tooth_appearance_retes
## 34 0 0 0
## 35 0 0 0
## 36 0 0 0
## 37 2 0 2
## 263 0 2 0
## 264 0 3 0
## 265 0 2 0
## 266 0 2 0
## follicular_horn_plug perifollicular_parakeratosis
## 34 0 0
## 35 0 0
## 36 0 0
## 37 0 0
## 263 0 0
## 264 0 0
## 265 0 0
## 266 0 0
## inflammatory_mononuclear_infiltrate band_like_infiltrate age
## 34 0 0 NA
## 35 0 0 NA
## 36 0 0 NA
## 37 0 3 NA
## 263 3 0 NA
## 264 2 0 NA
## 265 3 0 NA
## 266 3 0 NA
## class
## 34 Psoriasis
## 35 Pityriasis rosea
## 36 Seboreic dermatitis
## 37 Lichen planus
## 263 Chronic dermatitis
## 264 Chronic dermatitis
## 265 Chronic dermatitis
## 266 Chronic dermatitis
#10. Penanganan Missing Value
Tahap ini bertujuan untuk menangani missing value agar data dapat
digunakan dalam analisis. Missing value pada variabel age
diganti menggunakan nilai median. Median dipilih karena lebih tahan
terhadap nilai ekstrem dibandingkan rata-rata.
median_age <- median(data_derma$age, na.rm = TRUE)
data_derma$age[is.na(data_derma$age)] <- median_age
colSums(is.na(data_derma))
## erythema scaling
## 0 0
## definite_borders itching
## 0 0
## koebner_phenomenon polygonal_papules
## 0 0
## follicular_papules oral_mucosal_involvement
## 0 0
## knee_elbow_involvement scalp_involvement
## 0 0
## family_history melanin_incontinence
## 0 0
## eosinophils_in_infiltrate PNL_infiltrate
## 0 0
## fibrosis_papillary_dermis exocytosis
## 0 0
## acanthosis hyperkeratosis
## 0 0
## parakeratosis clubbing_rete_ridges
## 0 0
## elongation_rete_ridges thinning_suprapapillary_epidermis
## 0 0
## spongiform_pustule munro_microabcess
## 0 0
## focal_hypergranulosis disappearance_granular_layer
## 0 0
## vacuolisation_damage_basal_layer spongiosis
## 0 0
## saw_tooth_appearance_retes follicular_horn_plug
## 0 0
## perifollicular_parakeratosis inflammatory_mononuclear_infiltrate
## 0 0
## band_like_infiltrate age
## 0 0
## class
## 0
#11. Statistik Deskriptif
Tahap ini bertujuan untuk melihat gambaran umum data setelah missing value ditangani. Statistik deskriptif digunakan untuk mengetahui nilai minimum, maksimum, median, mean, serta distribusi kelas diagnosis.
summary(data_derma)
## erythema scaling definite_borders itching
## Min. :0.000 Min. :0.000 Min. :0.000 Min. :0.000
## 1st Qu.:2.000 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:0.000
## Median :2.000 Median :2.000 Median :2.000 Median :1.000
## Mean :2.068 Mean :1.795 Mean :1.549 Mean :1.366
## 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:2.000
## Max. :3.000 Max. :3.000 Max. :3.000 Max. :3.000
## koebner_phenomenon polygonal_papules follicular_papules
## Min. :0.0000 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000 Median :0.0000
## Mean :0.6339 Mean :0.4481 Mean :0.1667
## 3rd Qu.:1.0000 3rd Qu.:0.0000 3rd Qu.:0.0000
## Max. :3.0000 Max. :3.0000 Max. :3.0000
## oral_mucosal_involvement knee_elbow_involvement scalp_involvement
## Min. :0.000 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.000 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.000 Median :0.0000 Median :0.0000
## Mean :0.377 Mean :0.6148 Mean :0.5191
## 3rd Qu.:0.000 3rd Qu.:1.0000 3rd Qu.:1.0000
## Max. :3.000 Max. :3.0000 Max. :3.0000
## family_history melanin_incontinence eosinophils_in_infiltrate
## Min. :0.0000 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000 Median :0.0000
## Mean :0.1257 Mean :0.4044 Mean :0.1393
## 3rd Qu.:0.0000 3rd Qu.:0.0000 3rd Qu.:0.0000
## Max. :1.0000 Max. :3.0000 Max. :2.0000
## PNL_infiltrate fibrosis_papillary_dermis exocytosis acanthosis
## Min. :0.0000 Min. :0.0000 Min. :0.000 Min. :0.000
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.000 1st Qu.:2.000
## Median :0.0000 Median :0.0000 Median :2.000 Median :2.000
## Mean :0.5464 Mean :0.3361 Mean :1.369 Mean :1.956
## 3rd Qu.:1.0000 3rd Qu.:0.0000 3rd Qu.:2.000 3rd Qu.:2.000
## Max. :3.0000 Max. :3.0000 Max. :3.000 Max. :3.000
## hyperkeratosis parakeratosis clubbing_rete_ridges elongation_rete_ridges
## Min. :0.0000 Min. :0.00 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:1.00 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :1.00 Median :0.0000 Median :0.0000
## Mean :0.5273 Mean :1.29 Mean :0.6639 Mean :0.9918
## 3rd Qu.:1.0000 3rd Qu.:2.00 3rd Qu.:2.0000 3rd Qu.:2.0000
## Max. :3.0000 Max. :3.00 Max. :3.0000 Max. :3.0000
## thinning_suprapapillary_epidermis spongiform_pustule munro_microabcess
## Min. :0.0000 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000 Median :0.0000
## Mean :0.6339 Mean :0.2951 Mean :0.3634
## 3rd Qu.:1.0000 3rd Qu.:0.0000 3rd Qu.:0.0000
## Max. :3.0000 Max. :3.0000 Max. :3.0000
## focal_hypergranulosis disappearance_granular_layer
## Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000
## Mean :0.3934 Mean :0.4645
## 3rd Qu.:0.0000 3rd Qu.:1.0000
## Max. :3.0000 Max. :3.0000
## vacuolisation_damage_basal_layer spongiosis saw_tooth_appearance_retes
## Min. :0.0000 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000 Median :0.0000
## Mean :0.4563 Mean :0.9536 Mean :0.4536
## 3rd Qu.:0.0000 3rd Qu.:2.0000 3rd Qu.:0.0000
## Max. :3.0000 Max. :3.0000 Max. :3.0000
## follicular_horn_plug perifollicular_parakeratosis
## Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000
## Mean :0.1038 Mean :0.1148
## 3rd Qu.:0.0000 3rd Qu.:0.0000
## Max. :3.0000 Max. :3.0000
## inflammatory_mononuclear_infiltrate band_like_infiltrate age
## Min. :0.000 Min. :0.0000 Min. : 0.00
## 1st Qu.:1.000 1st Qu.:0.0000 1st Qu.:25.00
## Median :2.000 Median :0.0000 Median :35.00
## Mean :1.866 Mean :0.5546 Mean :36.27
## 3rd Qu.:2.000 3rd Qu.:0.0000 3rd Qu.:48.00
## Max. :3.000 Max. :3.0000 Max. :75.00
## class
## Psoriasis :112
## Seboreic dermatitis : 61
## Lichen planus : 72
## Pityriasis rosea : 49
## Chronic dermatitis : 52
## Pityriasis rubra pilaris: 20
table(data_derma$class)
##
## Psoriasis Seboreic dermatitis Lichen planus
## 112 61 72
## Pityriasis rosea Chronic dermatitis Pityriasis rubra pilaris
## 49 52 20
prop.table(table(data_derma$class))
##
## Psoriasis Seboreic dermatitis Lichen planus
## 0.30601093 0.16666667 0.19672131
## Pityriasis rosea Chronic dermatitis Pityriasis rubra pilaris
## 0.13387978 0.14207650 0.05464481
#12. Visualisasi Distribusi Kelas
Tahap ini bertujuan untuk melihat sebaran jumlah data pada masing-masing kelas penyakit. Visualisasi ini membantu mengetahui apakah distribusi kelas relatif seimbang atau terdapat kelas tertentu yang jumlah datanya jauh lebih sedikit.
ggplot(data_derma, aes(x = class)) +
geom_bar() +
labs(title = "Distribusi Kelas Diagnosis Dermatology",
x = "Jenis Penyakit",
y = "Jumlah Data") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
#13. Pembagian Data Training dan Testing
Tahap ini bertujuan untuk membagi data menjadi data training dan data testing. Data training digunakan untuk membangun model, sedangkan data testing digunakan untuk menguji kemampuan model pada data baru. Pada analisis ini digunakan proporsi 80% data training dan 20% data testing.
set.seed(123)
index_train <- createDataPartition(data_derma$class,
p = 0.8,
list = FALSE)
data_train <- data_derma[index_train, ]
data_test <- data_derma[-index_train, ]
dim(data_train)
## [1] 295 35
dim(data_test)
## [1] 71 35
table(data_train$class)
##
## Psoriasis Seboreic dermatitis Lichen planus
## 90 49 58
## Pityriasis rosea Chronic dermatitis Pityriasis rubra pilaris
## 40 42 16
table(data_test$class)
##
## Psoriasis Seboreic dermatitis Lichen planus
## 22 12 14
## Pityriasis rosea Chronic dermatitis Pityriasis rubra pilaris
## 9 10 4
#14. Pembentukan Model LDA
Tahap ini bertujuan untuk membentuk model Linear Discriminant Analysis. Model LDA digunakan untuk mencari kombinasi linear dari variabel-variabel prediktor yang paling mampu membedakan enam kelas diagnosis penyakit kulit.
model_lda <- lda(class ~ ., data = data_train)
model_lda
## Call:
## lda(class ~ ., data = data_train)
##
## Prior probabilities of groups:
## Psoriasis Seboreic dermatitis Lichen planus
## 0.30508475 0.16610169 0.19661017
## Pityriasis rosea Chronic dermatitis Pityriasis rubra pilaris
## 0.13559322 0.14237288 0.05423729
##
## Group means:
## erythema scaling definite_borders itching
## Psoriasis 2.233333 2.177778 2.0777778 0.9222222
## Seboreic dermatitis 2.326531 2.040816 1.0000000 1.6122449
## Lichen planus 2.086207 1.655172 2.1206897 2.2931034
## Pityriasis rosea 1.950000 1.550000 1.2500000 0.4500000
## Chronic dermatitis 1.452381 1.119048 0.8571429 1.9047619
## Pityriasis rubra pilaris 2.000000 1.750000 1.0000000 0.6250000
## koebner_phenomenon polygonal_papules
## Psoriasis 0.66666667 0.000000
## Seboreic dermatitis 0.04081633 0.000000
## Lichen planus 1.34482759 2.327586
## Pityriasis rosea 1.17500000 0.000000
## Chronic dermatitis 0.00000000 0.000000
## Pityriasis rubra pilaris 0.00000000 0.000000
## follicular_papules oral_mucosal_involvement
## Psoriasis 0.04444444 0.000000
## Seboreic dermatitis 0.02040816 0.000000
## Lichen planus 0.00000000 2.086207
## Pityriasis rosea 0.00000000 0.000000
## Chronic dermatitis 0.26190476 0.000000
## Pityriasis rubra pilaris 2.18750000 0.000000
## knee_elbow_involvement scalp_involvement
## Psoriasis 1.54444444 1.58888889
## Seboreic dermatitis 0.06122449 0.10204082
## Lichen planus 0.00000000 0.01724138
## Pityriasis rosea 0.00000000 0.00000000
## Chronic dermatitis 0.04761905 0.00000000
## Pityriasis rubra pilaris 1.56250000 0.50000000
## family_history melanin_incontinence
## Psoriasis 0.28888889 0.000000
## Seboreic dermatitis 0.06122449 0.000000
## Lichen planus 0.01724138 2.068966
## Pityriasis rosea 0.00000000 0.000000
## Chronic dermatitis 0.00000000 0.000000
## Pityriasis rubra pilaris 0.62500000 0.000000
## eosinophils_in_infiltrate PNL_infiltrate
## Psoriasis 0.03333333 1.000000
## Seboreic dermatitis 0.44897959 1.142857
## Lichen planus 0.18965517 0.000000
## Pityriasis rosea 0.07500000 0.125000
## Chronic dermatitis 0.09523810 0.000000
## Pityriasis rubra pilaris 0.00000000 0.187500
## fibrosis_papillary_dermis exocytosis acanthosis
## Psoriasis 0.00000000 0.2888889 2.100000
## Seboreic dermatitis 0.00000000 2.1428571 1.673469
## Lichen planus 0.06896552 2.2586207 2.137931
## Pityriasis rosea 0.00000000 2.0500000 1.525000
## Chronic dermatitis 2.19047619 0.8333333 2.238095
## Pityriasis rubra pilaris 0.00000000 1.3125000 1.625000
## hyperkeratosis parakeratosis clubbing_rete_ridges
## Psoriasis 0.8000000 2.0111111 2.14444444
## Seboreic dermatitis 0.2448980 1.0204082 0.00000000
## Lichen planus 0.3275862 1.2068966 0.00000000
## Pityriasis rosea 0.3000000 0.7250000 0.00000000
## Chronic dermatitis 0.7142857 0.8095238 0.07142857
## Pityriasis rubra pilaris 0.8125000 1.1250000 0.12500000
## elongation_rete_ridges
## Psoriasis 2.3111111
## Seboreic dermatitis 0.1836735
## Lichen planus 0.0000000
## Pityriasis rosea 0.0000000
## Chronic dermatitis 1.8571429
## Pityriasis rubra pilaris 0.1250000
## thinning_suprapapillary_epidermis spongiform_pustule
## Psoriasis 2.13333333 0.8000000
## Seboreic dermatitis 0.02040816 0.1836735
## Lichen planus 0.00000000 0.0000000
## Pityriasis rosea 0.00000000 0.0000000
## Chronic dermatitis 0.02380952 0.0000000
## Pityriasis rubra pilaris 0.00000000 0.0625000
## munro_microabcess focal_hypergranulosis
## Psoriasis 1.20000000 0.000000
## Seboreic dermatitis 0.00000000 0.000000
## Lichen planus 0.05172414 1.982759
## Pityriasis rosea 0.02500000 0.000000
## Chronic dermatitis 0.00000000 0.000000
## Pityriasis rubra pilaris 0.00000000 0.062500
## disappearance_granular_layer
## Psoriasis 1.1777778
## Seboreic dermatitis 0.0000000
## Lichen planus 0.2931034
## Pityriasis rosea 0.4000000
## Chronic dermatitis 0.0000000
## Pityriasis rubra pilaris 0.0000000
## vacuolisation_damage_basal_layer spongiosis
## Psoriasis 0.01111111 0.0000000
## Seboreic dermatitis 0.00000000 2.1428571
## Lichen planus 2.31034483 1.1896552
## Pityriasis rosea 0.00000000 1.9500000
## Chronic dermatitis 0.00000000 0.3095238
## Pityriasis rubra pilaris 0.00000000 1.3125000
## saw_tooth_appearance_retes follicular_horn_plug
## Psoriasis 0.000000 0.00000000
## Seboreic dermatitis 0.000000 0.02040816
## Lichen planus 2.241379 0.01724138
## Pityriasis rosea 0.025000 0.00000000
## Chronic dermatitis 0.000000 0.02380952
## Pityriasis rubra pilaris 0.000000 1.62500000
## perifollicular_parakeratosis
## Psoriasis 0.00000000
## Seboreic dermatitis 0.02040816
## Lichen planus 0.00000000
## Pityriasis rosea 0.00000000
## Chronic dermatitis 0.00000000
## Pityriasis rubra pilaris 1.87500000
## inflammatory_mononuclear_infiltrate
## Psoriasis 1.888889
## Seboreic dermatitis 1.591837
## Lichen planus 2.258621
## Pityriasis rosea 1.775000
## Chronic dermatitis 1.738095
## Pityriasis rubra pilaris 1.625000
## band_like_infiltrate age
## Psoriasis 0.03333333 39.71111
## Seboreic dermatitis 0.04081633 35.71429
## Lichen planus 2.70689655 40.10345
## Pityriasis rosea 0.00000000 35.72500
## Chronic dermatitis 0.02380952 34.52381
## Pityriasis rubra pilaris 0.06250000 10.00000
##
## Coefficients of linear discriminants:
## LD1 LD2 LD3
## erythema 0.2300064512 -0.007314195 0.0803364916
## scaling -0.2200027166 0.169794667 0.2804737349
## definite_borders -0.0593608914 0.122107467 0.0959260933
## itching 0.0314226836 0.013903589 0.0102172731
## koebner_phenomenon -0.1458675666 0.093594648 0.0275047461
## polygonal_papules 2.3502027980 0.073365540 0.3245142826
## follicular_papules -0.0872828212 -0.950332927 -0.0149653052
## oral_mucosal_involvement 0.9528493097 0.151528945 0.5428477205
## knee_elbow_involvement -0.0893384043 -0.251651034 0.1861665041
## scalp_involvement -0.1997141124 -0.133823057 0.0963084032
## family_history -0.0420674916 -0.232952578 0.5228132459
## melanin_incontinence 0.4905516978 -0.112192761 -0.0752075206
## eosinophils_in_infiltrate -0.1214208669 -0.014244651 0.0737122288
## PNL_infiltrate -0.2070751428 0.438654259 0.3368219211
## fibrosis_papillary_dermis 0.5939124306 -0.493137223 -1.4329749562
## exocytosis 0.0992734255 0.060818280 -0.1061011891
## acanthosis 0.0328103387 0.055081313 -0.1700689050
## hyperkeratosis 0.0847579936 0.297152897 0.0912145995
## parakeratosis 0.1228489965 0.092221795 -0.0662671941
## clubbing_rete_ridges -0.1996045799 0.577984077 0.7649034270
## elongation_rete_ridges -0.1787090037 0.241390513 0.2011405396
## thinning_suprapapillary_epidermis -0.1131364777 0.705828943 0.8573111568
## spongiform_pustule 0.1723821049 0.108948583 0.0900616183
## munro_microabcess 0.1057104186 0.281401057 0.1652254796
## focal_hypergranulosis 0.8109378830 -0.058713431 -0.0694562375
## disappearance_granular_layer 0.1081606058 0.134803720 0.0664307198
## vacuolisation_damage_basal_layer 0.3895089012 0.246359738 0.1820393368
## spongiosis -0.0735172944 -0.107674166 -0.2051745628
## saw_tooth_appearance_retes 1.2341362320 -0.101402541 0.1434345503
## follicular_horn_plug -0.0284379067 0.410523921 -0.8701059831
## perifollicular_parakeratosis -0.3581213500 -6.113171109 5.0700386017
## inflammatory_mononuclear_infiltrate 0.2203776266 0.139317798 -0.0147392368
## band_like_infiltrate 2.2743123246 -0.016881156 0.3299728997
## age 0.0002518861 0.008031839 -0.0005158778
## LD4 LD5
## erythema 0.050529298 0.150498592
## scaling 0.083171934 0.427183458
## definite_borders -0.124770819 -0.143126369
## itching 0.085148653 0.718221635
## koebner_phenomenon -0.228000584 -0.978502808
## polygonal_papules 0.190363428 -0.076930221
## follicular_papules 0.444253971 0.320114333
## oral_mucosal_involvement 0.096316148 0.343380982
## knee_elbow_involvement 0.008314768 0.086061420
## scalp_involvement -0.015347761 -0.050604104
## family_history 0.311512327 0.067798417
## melanin_incontinence 0.374710866 -0.083821996
## eosinophils_in_infiltrate -0.273934094 0.720106036
## PNL_infiltrate -0.123394543 0.744482155
## fibrosis_papillary_dermis 2.223894391 0.031811034
## exocytosis -0.333023615 0.077940868
## acanthosis 0.004858607 0.014196196
## hyperkeratosis 0.123734416 -0.122367771
## parakeratosis -0.090986101 -0.054429942
## clubbing_rete_ridges 0.217303332 0.067044139
## elongation_rete_ridges 0.777653157 0.133169695
## thinning_suprapapillary_epidermis 0.224612653 0.178582395
## spongiform_pustule -0.003850653 -0.127660062
## munro_microabcess -0.047445099 0.199333093
## focal_hypergranulosis 0.283328190 -0.003811191
## disappearance_granular_layer -0.047593903 -0.241845699
## vacuolisation_damage_basal_layer -0.017401680 0.100855095
## spongiosis -0.619359290 0.246076509
## saw_tooth_appearance_retes 0.039935220 -0.159924160
## follicular_horn_plug 0.295875755 0.386648888
## perifollicular_parakeratosis 0.716814459 -0.398303466
## inflammatory_mononuclear_infiltrate 0.181211196 -0.229218175
## band_like_infiltrate 0.270692008 0.282618943
## age -0.002864715 0.007077142
##
## Proportion of trace:
## LD1 LD2 LD3 LD4 LD5
## 0.6622 0.1485 0.1096 0.0707 0.0090
#15. Prediksi pada Data Testing
Tahap ini bertujuan untuk menguji model LDA pada data testing. Model yang telah dibentuk dari data training digunakan untuk memprediksi kelas diagnosis pada data testing.
prediksi_lda <- predict(model_lda, newdata = data_test)
head(prediksi_lda$class)
## [1] Seboreic dermatitis Psoriasis Psoriasis
## [4] Chronic dermatitis Lichen planus Psoriasis
## 6 Levels: Psoriasis Seboreic dermatitis Lichen planus ... Pityriasis rubra pilaris
head(prediksi_lda$posterior)
## Psoriasis Seboreic dermatitis Lichen planus Pityriasis rosea
## 1 1.046687e-19 9.996295e-01 5.233333e-97 3.705464e-04
## 2 1.000000e+00 2.540547e-13 1.363119e-103 4.120352e-17
## 4 1.000000e+00 3.378069e-15 3.799115e-104 4.067057e-18
## 7 2.740183e-36 1.961073e-28 2.092048e-95 1.909482e-28
## 19 9.533464e-124 4.746927e-114 1.000000e+00 1.911105e-110
## 40 1.000000e+00 3.451287e-12 2.740451e-103 1.129244e-15
## Chronic dermatitis Pityriasis rubra pilaris
## 1 1.622408e-19 1.452148e-61
## 2 8.623889e-27 7.062272e-67
## 4 4.566263e-29 1.823849e-72
## 7 1.000000e+00 3.548731e-78
## 19 4.395275e-106 2.979871e-162
## 40 1.084782e-23 4.647692e-65
head(prediksi_lda$x)
## LD1 LD2 LD3 LD4 LD5
## 1 -3.860446 -1.2416071 -2.9064325 -3.8870037 2.26575547
## 2 -4.931233 2.9968039 3.4268840 0.5927923 0.84501903
## 4 -4.858165 3.7540181 3.5695945 0.5019979 0.20599872
## 7 -1.892335 -2.0716779 -6.6179284 6.9795398 0.02507395
## 19 18.469691 -0.8731568 0.2444307 0.4620846 -2.61249598
## 40 -5.001157 2.6564146 2.8959444 0.8845241 0.73355813
#16. Evaluasi Model dengan Confusion Matrix
Tahap ini bertujuan untuk mengevaluasi hasil klasifikasi model. Confusion matrix membandingkan kelas aktual dengan kelas hasil prediksi, sehingga dapat diketahui jumlah prediksi yang benar dan salah pada masing-masing kelas.
conf_matrix <- confusionMatrix(prediksi_lda$class, data_test$class)
conf_matrix
## Confusion Matrix and Statistics
##
## Reference
## Prediction Psoriasis Seboreic dermatitis Lichen planus
## Psoriasis 22 0 0
## Seboreic dermatitis 0 11 0
## Lichen planus 0 0 14
## Pityriasis rosea 0 1 0
## Chronic dermatitis 0 0 0
## Pityriasis rubra pilaris 0 0 0
## Reference
## Prediction Pityriasis rosea Chronic dermatitis
## Psoriasis 0 0
## Seboreic dermatitis 0 0
## Lichen planus 0 0
## Pityriasis rosea 9 0
## Chronic dermatitis 0 10
## Pityriasis rubra pilaris 0 0
## Reference
## Prediction Pityriasis rubra pilaris
## Psoriasis 0
## Seboreic dermatitis 0
## Lichen planus 0
## Pityriasis rosea 0
## Chronic dermatitis 0
## Pityriasis rubra pilaris 4
##
## Overall Statistics
##
## Accuracy : 0.9859
## 95% CI : (0.924, 0.9996)
## No Information Rate : 0.3099
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.9824
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: Psoriasis Class: Seboreic dermatitis
## Sensitivity 1.0000 0.9167
## Specificity 1.0000 1.0000
## Pos Pred Value 1.0000 1.0000
## Neg Pred Value 1.0000 0.9833
## Prevalence 0.3099 0.1690
## Detection Rate 0.3099 0.1549
## Detection Prevalence 0.3099 0.1549
## Balanced Accuracy 1.0000 0.9583
## Class: Lichen planus Class: Pityriasis rosea
## Sensitivity 1.0000 1.0000
## Specificity 1.0000 0.9839
## Pos Pred Value 1.0000 0.9000
## Neg Pred Value 1.0000 1.0000
## Prevalence 0.1972 0.1268
## Detection Rate 0.1972 0.1268
## Detection Prevalence 0.1972 0.1408
## Balanced Accuracy 1.0000 0.9919
## Class: Chronic dermatitis Class: Pityriasis rubra pilaris
## Sensitivity 1.0000 1.00000
## Specificity 1.0000 1.00000
## Pos Pred Value 1.0000 1.00000
## Neg Pred Value 1.0000 1.00000
## Prevalence 0.1408 0.05634
## Detection Rate 0.1408 0.05634
## Detection Prevalence 0.1408 0.05634
## Balanced Accuracy 1.0000 1.00000
#17. Menghitung Akurasi Model
Tahap ini bertujuan untuk menghitung persentase prediksi yang benar dari seluruh data testing. Akurasi digunakan sebagai salah satu ukuran kinerja model klasifikasi.
akurasi <- mean(prediksi_lda$class == data_test$class)
akurasi
## [1] 0.9859155
cat("Akurasi model LDA pada data testing adalah:",
round(akurasi * 100, 2), "%")
## Akurasi model LDA pada data testing adalah: 98.59 %
#18. Tabel Perbandingan Aktual dan Prediksi
Tahap ini bertujuan untuk menampilkan perbandingan antara kelas aktual dan kelas prediksi secara lebih jelas. Tabel ini membantu melihat hasil klasifikasi model pada data testing.
hasil_prediksi <- data.frame(
Aktual = data_test$class,
Prediksi = prediksi_lda$class
)
head(hasil_prediksi)
## Aktual Prediksi
## 1 Seboreic dermatitis Seboreic dermatitis
## 2 Psoriasis Psoriasis
## 3 Psoriasis Psoriasis
## 4 Chronic dermatitis Chronic dermatitis
## 5 Lichen planus Lichen planus
## 6 Psoriasis Psoriasis
table(hasil_prediksi$Aktual, hasil_prediksi$Prediksi)
##
## Psoriasis Seboreic dermatitis Lichen planus
## Psoriasis 22 0 0
## Seboreic dermatitis 0 11 0
## Lichen planus 0 0 14
## Pityriasis rosea 0 0 0
## Chronic dermatitis 0 0 0
## Pityriasis rubra pilaris 0 0 0
##
## Pityriasis rosea Chronic dermatitis
## Psoriasis 0 0
## Seboreic dermatitis 1 0
## Lichen planus 0 0
## Pityriasis rosea 9 0
## Chronic dermatitis 0 10
## Pityriasis rubra pilaris 0 0
##
## Pityriasis rubra pilaris
## Psoriasis 0
## Seboreic dermatitis 0
## Lichen planus 0
## Pityriasis rosea 0
## Chronic dermatitis 0
## Pityriasis rubra pilaris 4
#19 Visualisasi Hasil LDA
Tahap ini bertujuan untuk memvisualisasikan hasil pemisahan kelas berdasarkan dua fungsi diskriminan pertama, yaitu LD1 dan LD2. Jika titik-titik dari kelas yang berbeda terlihat terpisah, maka model LDA dapat dikatakan mampu membedakan kelas dengan baik.
lda_plot <- data.frame(
LD1 = prediksi_lda$x[, 1],
LD2 = prediksi_lda$x[, 2],
class = data_test$class
)
ggplot(lda_plot, aes(x = LD1, y = LD2, color = class)) +
geom_point(size = 2) +
labs(title = "Visualisasi Hasil LDA",
x = "Linear Discriminant 1",
y = "Linear Discriminant 2",
color = "Kelas") +
theme_minimal()
#20. Prediksi pada Seluruh Data
Tahap ini bertujuan untuk melihat hasil prediksi model pada seluruh
dataset. Kolom baru prediksi_class ditambahkan untuk
membandingkan kelas asli dengan kelas hasil prediksi.
prediksi_semua <- predict(model_lda, newdata = data_derma)
data_derma$prediksi_class <- prediksi_semua$class
head(data_derma[, c("class", "prediksi_class")])
## class prediksi_class
## 1 Seboreic dermatitis Seboreic dermatitis
## 2 Psoriasis Psoriasis
## 3 Lichen planus Lichen planus
## 4 Psoriasis Psoriasis
## 5 Lichen planus Lichen planus
## 6 Seboreic dermatitis Seboreic dermatitis
#21. Evaluasi Sederhana pada Seluruh Data
Tahap ini bertujuan untuk melihat kecocokan antara kelas aktual dan kelas prediksi pada seluruh dataset. Namun, hasil utama yang sebaiknya dilaporkan tetap berdasarkan data testing, karena data testing lebih menggambarkan kemampuan model terhadap data baru.
table(data_derma$class, data_derma$prediksi_class)
##
## Psoriasis Seboreic dermatitis Lichen planus
## Psoriasis 112 0 0
## Seboreic dermatitis 0 57 0
## Lichen planus 0 0 72
## Pityriasis rosea 0 3 0
## Chronic dermatitis 0 0 0
## Pityriasis rubra pilaris 0 0 0
##
## Pityriasis rosea Chronic dermatitis
## Psoriasis 0 0
## Seboreic dermatitis 4 0
## Lichen planus 0 0
## Pityriasis rosea 46 0
## Chronic dermatitis 0 52
## Pityriasis rubra pilaris 0 0
##
## Pityriasis rubra pilaris
## Psoriasis 0
## Seboreic dermatitis 0
## Lichen planus 0
## Pityriasis rosea 0
## Chronic dermatitis 0
## Pityriasis rubra pilaris 20
mean(data_derma$class == data_derma$prediksi_class)
## [1] 0.9808743
Berdasarkan hasil analisis menggunakan metode Linear Discriminant Analysis, model LDA mampu mengklasifikasikan jenis penyakit kulit pada dataset Dermatology. Dataset ini memiliki enam kelas diagnosis, yaitu psoriasis, seboreic dermatitis, lichen planus, pityriasis rosea, chronic dermatitis, dan pityriasis rubra pilaris.
## Berdasarkan hasil pengujian pada data testing, model LDA menghasilkan akurasi sebesar 98.59 %. Hal ini menunjukkan bahwa model LDA memiliki kemampuan klasifikasi yang baik dalam membedakan enam jenis penyakit kulit pada dataset Dermatology.