Deskripsi Dataset

Dataset yang digunakan adalah Dry Bean Dataset yang diperoleh dari Kaggle. Dataset ini berisi karakteristik morfologi biji kacang kering (dry bean) yang diperoleh melalui sistem computer vision. Tujuan utama dataset ini adalah untuk mengidentifikasi dan membedakan jenis kacang berdasarkan ukuran, bentuk, dan karakteristik geometrinya. Dataset ini sering digunakan untuk analisis klasifikasi, clustering, maupun reduksi dimensi seperti Principal Component Analysis (PCA).

Sumber dataset Kaggle: https://share.google/Tge5cCAcevB6G5HLq

Dataset yang digunakan memiliki 1000 observasi (baris) dan 17 variabel (kolom). Dari 17 variabel tersebut terdapat 16 variabel numerik dan 1 variabel kategorik yaitu Variabel Class menunjukkan jenis kacang yang diamati. Pada data yang digunakan, seluruh observasi termasuk ke dalam kelas SEKER, sehingga variabel kategorik hanya memiliki satu kategori.

Adapun tujuan dari analisis ini adalah:

  1. Mengidentifikasi karakteristik morfologi biji kacang berdasarkan 16 variabel numerik yang tersedia.
  2. Mengevaluasi hubungan dan korelasi antarvariabel pengukuran biji kacang.
  3. Mengidentifikasi adanya outlier dan multikolinearitas pada data.
  4. Mereduksi dimensi data menggunakan Principal Component Analysis (PCA) sehingga diperoleh sejumlah komponen utama yang mampu mewakili sebagian besar informasi dalam data.
  5. Menentukan variabel-variabel yang paling berpengaruh terhadap variasi data berdasarkan hasil PCA.
  6. Menyederhanakan interpretasi data tanpa kehilangan informasi yang signifikan.

Eksploratory Data Analysis (EDA)

Instal package yang digunakan

library(readxl)
library(dplyr)
library(psych)
library(car)
library(tidyr)
library(ggplot2)
library(corrplot)
library(caret)
library(MASS)

Import Data yang digunakan

bean <- read_excel("C:/Users/nfald/Documents/statistika/project evd/Dry_Bean_Dataset.xlsx")

str(bean) # Melihat struktur data
## tibble [1,000 × 17] (S3: tbl_df/tbl/data.frame)
##  $ Area           : num [1:1000] 28395 28734 29380 30008 30140 ...
##  $ Perimeter      : num [1:1000] 610 638 624 646 620 ...
##  $ MajorAxisLength: num [1:1000] 208 201 213 211 202 ...
##  $ MinorAxisLength: num [1:1000] 174 183 176 183 190 ...
##  $ AspectRation   : num [1:1000] 1.2 1.1 1.21 1.15 1.06 ...
##  $ Eccentricity   : num [1:1000] 0.55 0.412 0.563 0.499 0.334 ...
##  $ ConvexArea     : num [1:1000] 28715 29172 29690 30724 30417 ...
##  $ EquivDiameter  : num [1:1000] 190 191 193 195 196 ...
##  $ Extent         : num [1:1000] 0.764 0.784 0.778 0.783 0.773 ...
##  $ Solidity       : num [1:1000] 0.989 0.985 0.99 0.977 0.991 ...
##  $ roundness      : num [1:1000] 0.958 0.887 0.948 0.904 0.985 ...
##  $ Compactness    : num [1:1000] 0.913 0.954 0.909 0.928 0.971 ...
##  $ ShapeFactor1   : num [1:1000] 0.00733 0.00698 0.00724 0.00702 0.0067 ...
##  $ ShapeFactor2   : num [1:1000] 0.00315 0.00356 0.00305 0.00321 0.00366 ...
##  $ ShapeFactor3   : num [1:1000] 0.834 0.91 0.826 0.862 0.942 ...
##  $ ShapeFactor4   : num [1:1000] 0.999 0.998 0.999 0.994 0.999 ...
##  $ Class          : chr [1:1000] "SEKER" "SEKER" "SEKER" "SEKER" ...
dim(bean) # Ukuran data
## [1] 1000   17
names(bean) # Nama variabel
##  [1] "Area"            "Perimeter"       "MajorAxisLength" "MinorAxisLength"
##  [5] "AspectRation"    "Eccentricity"    "ConvexArea"      "EquivDiameter"  
##  [9] "Extent"          "Solidity"        "roundness"       "Compactness"    
## [13] "ShapeFactor1"    "ShapeFactor2"    "ShapeFactor3"    "ShapeFactor4"   
## [17] "Class"

STATISTIKA DESKRIPTIF

Boxplot semua variabel

ggplot(bean_long, aes(x = Variabel, y = Nilai)) +
  geom_boxplot(fill = "lightblue", color = "black",
               outlier.color = "red",
               outlier.shape = 16) +
  theme_minimal() +
  theme(
    axis.text.x = element_text(angle = 90, hjust = 1),
    plot.title = element_text(hjust = 0.5, face = "bold")
  ) +
  labs(
    title = "Boxplot Seluruh Variabel Numerik pada Dataset Dry Bean",
    x = "Variabel",
    y = "Nilai"
  )

Dataset Dry Bean yang digunakan terdiri dari 1000 observasi dan 17 variabel, yang terdiri atas 16 variabel numerik dan 1 variabel kategorik (Class). Variabel numerik meliputi Area, Perimeter, MajorAxisLength, MinorAxisLength, AspectRation, Eccentricity, ConvexArea, EquivDiameter, Extent, Solidity, roundness, Compactness, ShapeFactor1, ShapeFactor2, ShapeFactor3, dan ShapeFactor4.

Variabel-variabel tersebut menggambarkan karakteristik ukuran dan bentuk biji kacang yang diperoleh melalui pengolahan citra digital. Sementara itu, variabel kategorik Class menunjukkan jenis kacang yang diamati. Pada dataset yang digunakan, seluruh observasi termasuk ke dalam kelas SEKER.

Secara umum, data numerik menunjukkan adanya variasi ukuran dan bentuk antar biji kacang. Variasi tersebut penting untuk dianalisis lebih lanjut karena dapat mempengaruhi pembentukan komponen utama pada analisis PCA.

PEMERIKSAAN MISSING VALUE & DUPLIKAT

Cek Missing Value dan Duplikat

colSums(is.na(bean)) # cek missing value
##            Area       Perimeter MajorAxisLength MinorAxisLength    AspectRation 
##               0               0               0               0               0 
##    Eccentricity      ConvexArea   EquivDiameter          Extent        Solidity 
##               0               0               0               0               0 
##       roundness     Compactness    ShapeFactor1    ShapeFactor2    ShapeFactor3 
##               0               0               0               0               0 
##    ShapeFactor4           Class 
##               0               0
sum(duplicated(bean)) # cek duplikat
## [1] 0
# Ubah class menjadi faktor
bean$Class <- as.factor(bean$Class)
str(bean)
## tibble [1,000 × 17] (S3: tbl_df/tbl/data.frame)
##  $ Area           : num [1:1000] 28395 28734 29380 30008 30140 ...
##  $ Perimeter      : num [1:1000] 610 638 624 646 620 ...
##  $ MajorAxisLength: num [1:1000] 208 201 213 211 202 ...
##  $ MinorAxisLength: num [1:1000] 174 183 176 183 190 ...
##  $ AspectRation   : num [1:1000] 1.2 1.1 1.21 1.15 1.06 ...
##  $ Eccentricity   : num [1:1000] 0.55 0.412 0.563 0.499 0.334 ...
##  $ ConvexArea     : num [1:1000] 28715 29172 29690 30724 30417 ...
##  $ EquivDiameter  : num [1:1000] 190 191 193 195 196 ...
##  $ Extent         : num [1:1000] 0.764 0.784 0.778 0.783 0.773 ...
##  $ Solidity       : num [1:1000] 0.989 0.985 0.99 0.977 0.991 ...
##  $ roundness      : num [1:1000] 0.958 0.887 0.948 0.904 0.985 ...
##  $ Compactness    : num [1:1000] 0.913 0.954 0.909 0.928 0.971 ...
##  $ ShapeFactor1   : num [1:1000] 0.00733 0.00698 0.00724 0.00702 0.0067 ...
##  $ ShapeFactor2   : num [1:1000] 0.00315 0.00356 0.00305 0.00321 0.00366 ...
##  $ ShapeFactor3   : num [1:1000] 0.834 0.91 0.826 0.862 0.942 ...
##  $ ShapeFactor4   : num [1:1000] 0.999 0.998 0.999 0.994 0.999 ...
##  $ Class          : Factor w/ 1 level "SEKER": 1 1 1 1 1 1 1 1 1 1 ...
# Memilih Data Numerik
bean_num <- bean %>% dplyr::select(where(is.numeric))
str(bean_num)
## tibble [1,000 × 16] (S3: tbl_df/tbl/data.frame)
##  $ Area           : num [1:1000] 28395 28734 29380 30008 30140 ...
##  $ Perimeter      : num [1:1000] 610 638 624 646 620 ...
##  $ MajorAxisLength: num [1:1000] 208 201 213 211 202 ...
##  $ MinorAxisLength: num [1:1000] 174 183 176 183 190 ...
##  $ AspectRation   : num [1:1000] 1.2 1.1 1.21 1.15 1.06 ...
##  $ Eccentricity   : num [1:1000] 0.55 0.412 0.563 0.499 0.334 ...
##  $ ConvexArea     : num [1:1000] 28715 29172 29690 30724 30417 ...
##  $ EquivDiameter  : num [1:1000] 190 191 193 195 196 ...
##  $ Extent         : num [1:1000] 0.764 0.784 0.778 0.783 0.773 ...
##  $ Solidity       : num [1:1000] 0.989 0.985 0.99 0.977 0.991 ...
##  $ roundness      : num [1:1000] 0.958 0.887 0.948 0.904 0.985 ...
##  $ Compactness    : num [1:1000] 0.913 0.954 0.909 0.928 0.971 ...
##  $ ShapeFactor1   : num [1:1000] 0.00733 0.00698 0.00724 0.00702 0.0067 ...
##  $ ShapeFactor2   : num [1:1000] 0.00315 0.00356 0.00305 0.00321 0.00366 ...
##  $ ShapeFactor3   : num [1:1000] 0.834 0.91 0.826 0.862 0.942 ...
##  $ ShapeFactor4   : num [1:1000] 0.999 0.998 0.999 0.994 0.999 ...
describe(bean_num)
##                 vars    n     mean      sd   median  trimmed     mad      min
## Area               1 1000 36113.14 2065.70 36363.00 36275.09 2275.05 28395.00
## Perimeter          2 1000   691.37   23.01   692.51   691.96   22.32   610.29
## MajorAxisLength    3 1000   236.72   10.40   237.16   237.05   10.94   200.52
## MinorAxisLength    4 1000   194.49    6.28   194.41   194.49    6.11   171.21
## AspectRation       5 1000     1.22    0.06     1.22     1.22    0.06     1.02
## Eccentricity       6 1000     0.56    0.06     0.57     0.57    0.06     0.22
## ConvexArea         7 1000 36469.60 2074.68 36716.50 36631.71 2268.38 28715.00
## EquivDiameter      8 1000   214.34    6.20   215.17   214.87    6.73   190.14
## Extent             9 1000     0.77    0.02     0.78     0.77    0.02     0.71
## Solidity          10 1000     0.99    0.00     0.99     0.99    0.00     0.92
## roundness         11 1000     0.95    0.03     0.95     0.95    0.02     0.66
## Compactness       12 1000     0.91    0.02     0.91     0.91    0.02     0.82
## ShapeFactor1      13 1000     0.01    0.00     0.01     0.01    0.00     0.01
## ShapeFactor2      14 1000     0.00    0.00     0.00     0.00    0.00     0.00
## ShapeFactor3      15 1000     0.82    0.04     0.82     0.82    0.04     0.67
## ShapeFactor4      16 1000     1.00    0.00     1.00     1.00    0.00     0.95
##                      max    range   skew kurtosis    se
## Area            39108.00 10713.00  -0.62    -0.17 65.32
## Perimeter         816.64   206.35   0.18     2.01  0.73
## MajorAxisLength   263.89    63.36  -0.28    -0.24  0.33
## MinorAxisLength   214.51    43.30  -0.02     0.32  0.20
## AspectRation        1.46     0.44   0.18     0.30  0.00
## Eccentricity        0.73     0.51  -0.83     1.66  0.00
## ConvexArea      39744.00 11029.00  -0.62    -0.19 65.61
## EquivDiameter     223.15    33.00  -0.69     0.00  0.20
## Extent              0.83     0.11  -0.36     0.06  0.00
## Solidity            0.99     0.07 -11.51   233.59  0.00
## roundness           0.99     0.33  -3.46    22.56  0.00
## Compactness         0.99     0.17   0.04     0.34  0.00
## ShapeFactor1        0.01     0.00   0.30     0.71  0.00
## ShapeFactor2        0.00     0.00   0.34     0.10  0.00
## ShapeFactor3        0.97     0.31   0.13     0.34  0.00
## ShapeFactor4        1.00     0.05 -21.59   586.14  0.00
# Mengubah data menjadi format long
bean_long <- bean_num %>%
  pivot_longer(
    cols = everything(),
    names_to = "Variabel",
    values_to = "Nilai"
  )

Pemeriksaan missing value dilakukan menggunakan fungsi colSums(is.na(bean)). Hasil menunjukkan bahwa seluruh variabel memiliki nilai missing sebanyak 0, sehingga dapat disimpulkan bahwa tidak terdapat data yang hilang pada dataset. Selain itu, pemeriksaan data duplikat menggunakan fungsi sum(duplicated(bean)) menghasilkan nilai 0, yang berarti tidak terdapat observasi yang terduplikasi. Dengan demikian, dataset memiliki kualitas data yang baik karena seluruh observasi lengkap dan unik sehingga dapat langsung digunakan untuk analisis lanjutan tanpa memerlukan proses imputasi maupun penghapusan data.

MENDETEKSI OUTLIER

# Identifikasi Outlier
outlier_count <- function(x){
  Q1 <- quantile(x,0.25)
  Q3 <- quantile(x,0.75)
  IQR <- Q3-Q1
  lower <- Q1-1.5*IQR
  upper <- Q3+1.5*IQR
  sum(x < lower | x > upper)
  }

sapply(bean_num,outlier_count)
##            Area       Perimeter MajorAxisLength MinorAxisLength    AspectRation 
##               5              12               2              15              15 
##    Eccentricity      ConvexArea   EquivDiameter          Extent        Solidity 
##              25               4               6               8              46 
##       roundness     Compactness    ShapeFactor1    ShapeFactor2    ShapeFactor3 
##              46              16              15               9              17 
##    ShapeFactor4 
##              54

Deteksi outlier dilakukan menggunakan metode Interquartile Range (IQR). Hasil identifikasi outlier menunjukkan bahwa beberapa variabel memiliki observasi yang berada di luar rentang normal data.

Variabel Jumlah Outlier
Area 5
Perimeter 12
MajorAxisLength 2
MinorAxisLength 15
AspectRation 15
Eccentricity 25
ConvexArea 4
EquivDiameter 6
Extent 8
Solidity 46
roundness 46
Compactness 16
ShapeFactor1 15
ShapeFactor2 9
ShapeFactor3 17
ShapeFactor4 54

Berdasarkan hasil tersebut, variabel ShapeFactor4 memiliki jumlah outlier terbanyak yaitu sebanyak 54 observasi, diikuti oleh variabel Solidity dan roundness yang masing-masing memiliki 46 observasi outlier. Sebaliknya, variabel MajorAxisLength memiliki jumlah outlier paling sedikit yaitu hanya 2 observasi.

Keberadaan outlier pada dataset ini menunjukkan bahwa terdapat beberapa biji kacang yang memiliki karakteristik ukuran maupun bentuk yang berbeda secara ekstrem dibandingkan mayoritas data. Namun karena data berasal dari hasil pengukuran objek nyata, outlier tersebut masih dapat dianggap sebagai variasi alami sehingga tidak langsung dihapus dari analisis.

ANALISIS KORELASI

# Matriks korelasi
cor_matrix <- cor(bean_num)

corrplot(
  cor_matrix,
  method = "circle",
  type = "upper",
  tl.col = "black",
  tl.srt = 45
)

Analisis korelasi dilakukan untuk melihat hubungan antar variabel numerik dalam dataset. Hasil menunjukkan terdapat beberapa pasangan variabel yang memiliki korelasi sangat tinggi (|r| > 0,90), yaitu:

Kelompok ukuran biji kacang

  • Area ↔︎ ConvexArea
  • Area ↔︎ EquivDiameter
  • Perimeter ↔︎ ConvexArea
  • ConvexArea ↔︎ EquivDiameter

Hal ini menunjukkan bahwa variabel-variabel tersebut sama-sama merepresentasikan ukuran fisik biji kacang sehingga memiliki hubungan yang sangat kuat.

Kelompok bentuk biji kacang

  • AspectRation ↔︎ Eccentricity
  • AspectRation ↔︎ Compactness
  • AspectRation ↔︎ ShapeFactor2
  • AspectRation ↔︎ ShapeFactor3
  • Eccentricity ↔︎ Compactness
  • Eccentricity ↔︎ ShapeFactor2
  • Eccentricity ↔︎ ShapeFactor3
  • Compactness ↔︎ ShapeFactor2
  • Compactness ↔︎ ShapeFactor3
  • ShapeFactor2 ↔︎ ShapeFactor3

Hubungan tersebut menunjukkan bahwa variabel-variabel tersebut menggambarkan karakteristik bentuk atau tingkat kelonjongan biji kacang.

Kelompok ukuran sumbu

  • MajorAxisLength ↔︎ ShapeFactor2
  • MinorAxisLength ↔︎ ShapeFactor1

Korelasi yang tinggi menunjukkan bahwa variabel ShapeFactor merupakan turunan matematis dari ukuran sumbu utama maupun sumbu minor biji kacang.

Secara keseluruhan, hasil analisis korelasi menunjukkan bahwa banyak variabel mengandung informasi yang saling tumpang tindih (redundan).

MENGIDENTIFIKASI MULTIKOLINEARITAS

# Identifikasi Mulitkolinearitas
cor_mat <- cor(bean_num)

high_cor <- which(
  abs(cor_mat) > 0.9 &
  abs(cor_mat) < 1,
  arr.ind = TRUE
)

high_cor
##                 row col
## ConvexArea        7   1
## EquivDiameter     8   1
## ConvexArea        7   2
## ShapeFactor2     14   3
## ShapeFactor1     13   4
## Eccentricity      6   5
## Compactness      12   5
## ShapeFactor2     14   5
## ShapeFactor3     15   5
## AspectRation      5   6
## Compactness      12   6
## ShapeFactor2     14   6
## ShapeFactor3     15   6
## Area              1   7
## Perimeter         2   7
## EquivDiameter     8   7
## Area              1   8
## ConvexArea        7   8
## AspectRation      5  12
## Eccentricity      6  12
## ShapeFactor2     14  12
## ShapeFactor3     15  12
## MinorAxisLength   4  13
## MajorAxisLength   3  14
## AspectRation      5  14
## Eccentricity      6  14
## Compactness      12  14
## ShapeFactor3     15  14
## AspectRation      5  15
## Eccentricity      6  15
## Compactness      12  15
## ShapeFactor2     14  15
## Menggunakan VIF
model <- lm(Area ~ .,data = bean_num)
vif(model)
##       Perimeter MajorAxisLength MinorAxisLength    AspectRation    Eccentricity 
##    1.129851e+03    1.671609e+06    1.159574e+06    3.925769e+05    1.742245e+03 
##      ConvexArea   EquivDiameter          Extent        Solidity       roundness 
##    2.356073e+05    2.306799e+06    1.107912e+00    7.771522e+02    2.566686e+02 
##     Compactness    ShapeFactor1    ShapeFactor2    ShapeFactor3    ShapeFactor4 
##    4.569707e+06    6.903280e+04    2.091008e+05    1.503159e+06    6.561488e+03

Multikolinearitas dianalisis menggunakan nilai Variance Inflation Factor (VIF). Kriteria umum yang digunakan adalah:

  • VIF < 5 : tidak terjadi multikolinearitas
  • 5 ≤ VIF ≤ 10 : multikolinearitas sedang
  • VIF > 10 : multikolinearitas tinggi

Hasil perhitungan menunjukkan nilai VIF sebagai berikut:

Variabel VIF
Compactness 4.569.707
EquivDiameter 2.306.799
MajorAxisLength 1.671.609
ShapeFactor3 1.503.159
MinorAxisLength 1.159.574
AspectRation 392.576
ConvexArea 235.607
ShapeFactor2 209.101
ShapeFactor1 69.033
ShapeFactor4 6.561
Extent 1.108

Berdasarkan hasil tersebut, hampir seluruh variabel memiliki nilai VIF yang jauh melebihi batas 10. Variabel dengan tingkat multikolinearitas tertinggi adalah:

  1. Compactness
  2. EquivDiameter
  3. MajorAxisLength
  4. ShapeFactor3
  5. MinorAxisLength

Sementara itu, hanya variabel Extent yang memiliki nilai VIF mendekati 1 sehingga relatif bebas dari masalah multikolinearitas. Nilai VIF yang sangat besar menunjukkan bahwa sebagian besar variabel saling berkorelasi kuat dan mengandung informasi yang hampir sama. Kondisi ini menyebabkan redundansi informasi dalam dataset.

KESIMPULAN ANALISIS AWAL

Berdasarkan hasil eksplorasi data, dapat disimpulkan bahwa dataset Dry Bean memiliki kualitas data yang sangat baik karena tidak ditemukan missing value maupun data duplikat. Hasil identifikasi outlier menunjukkan adanya beberapa observasi ekstrem, terutama pada variabel ShapeFactor4, Solidity, dan roundness, namun masih dapat dianggap sebagai variasi alami dari karakteristik biji kacang.

Analisis korelasi menunjukkan adanya hubungan yang sangat kuat antar banyak variabel, terutama pada variabel yang menggambarkan ukuran dan bentuk biji kacang. Temuan ini diperkuat oleh hasil VIF yang menunjukkan adanya multikolinearitas sangat tinggi pada sebagian besar variabel.

Oleh karena itu, penggunaan Principal Component Analysis (PCA) sangat relevan pada dataset ini karena PCA dapat mereduksi jumlah variabel, mengurangi masalah multikolinearitas, serta mempertahankan sebagian besar informasi penting yang terkandung dalam data.

FEATURE ENGINEERING

# FEATURE ENGINEERING
bean_fe <- bean

# 1. Rasio Luas terhadap Keliling
bean_fe$Area_Perimeter_Ratio <- bean_fe$Area / bean_fe$Perimeter

# 2. Tingkat Kelonjongan Biji
bean_fe$Elongation_Index <- bean_fe$MajorAxisLength / bean_fe$MinorAxisLength

# 3. Tingkat Kekompakan Bentuk
bean_fe$Shape_Quality <- bean_fe$roundness * bean_fe$Solidity

# Melihat hasil
head(bean_fe[, c("Area_Perimeter_Ratio",
                 "Elongation_Index",
                 "Shape_Quality")])
## # A tibble: 6 × 3
##   Area_Perimeter_Ratio Elongation_Index Shape_Quality
##                  <dbl>            <dbl>         <dbl>
## 1                 46.5             1.20         0.947
## 2                 45.0             1.10         0.874
## 3                 47.1             1.21         0.938
## 4                 46.5             1.15         0.883
## 5                 48.6             1.06         0.976
## 6                 47.7             1.17         0.934

Feature 1: Area_Perimeter_Ratio

Rumus: Area_Perimeter_Ratio = Perimeter / Area

Alasan Pembuatan karena Variabel Area menunjukkan luas biji kacang sedangkan Perimeter menunjukkan panjang kelilingnya. Rasio ini dibuat untuk mengetahui seberapa besar luas yang dimiliki biji kacang dibandingkan dengan panjang batas luarnya. Dengan kata lain, fitur ini dapat menggambarkan efisiensi bentuk suatu biji.

Interpretasinya jika:

  • Nilai tinggi menunjukkan luas biji relatif besar dibandingkan kelilingnya.
  • Nilai rendah menunjukkan keliling relatif panjang dibandingkan luasnya.
  • Semakin tinggi nilai rasio, bentuk biji cenderung lebih padat dan kompak.

Pada outputnya dihasilkan: Nilai Area_Perimeter_Ratio pada enam observasi pertama berada pada rentang 45,04 hingga 48,60. Nilai ini menunjukkan perbandingan antara luas biji kacang dengan panjang kelilingnya.

Sebagai contoh, observasi kelima memiliki nilai 48,60, yang merupakan nilai tertinggi di antara enam observasi tersebut. Hal ini menunjukkan bahwa biji kacang tersebut memiliki luas yang relatif besar dibandingkan kelilingnya, sehingga bentuknya cenderung lebih efisien dan kompak. Sebaliknya, observasi kedua memiliki nilai 45,04, yang menunjukkan bahwa luas biji relatif lebih kecil dibandingkan panjang kelilingnya. Dengan demikian, bentuk biji tersebut cenderung kurang kompak dibandingkan observasi lainnya. Secara umum, semakin tinggi nilai Area_Perimeter_Ratio maka semakin besar luas yang dimiliki biji kacang untuk setiap satuan kelilingnya.

Feature 2: Elongation_Index

Rumus: Elongation_Index = Minor Axis Length / Major Axis Length

Alasan Pembuatan karena MajorAxisLength menunjukkan panjang sumbu utama biji sedangkan MinorAxisLength menunjukkan panjang sumbu pendek. Rasio ini digunakan untuk mengukur tingkat kelonjongan (elongation) biji kacang. Meskipun dataset sudah memiliki AspectRation, fitur ini dibuat untuk memberikan ukuran yang lebih mudah dipahami secara geometris.

Interpretasinya Jika:

  • Nilai mendekati 1 menunjukkan bentuk hampir bulat.
  • Nilai lebih besar dari 1 menunjukkan bentuk semakin lonjong.
  • Semakin besar nilai Elongation_Index maka semakin panjang bentuk biji kacang.

Pada outputnya dihasilkan: Nilai Elongation_Index pada enam observasi pertama berkisar antara 1,06 hingga 1,21. Fitur ini menunjukkan tingkat kelonjongan bentuk biji kacang yang diperoleh dari perbandingan panjang sumbu utama (MajorAxisLength) terhadap panjang sumbu minor (MinorAxisLength).

Sebagai contoh, observasi ketiga memiliki nilai 1,21, yang merupakan nilai tertinggi pada sampel tersebut. Hal ini menunjukkan bahwa biji kacang tersebut memiliki bentuk yang lebih memanjang atau lonjong dibandingkan observasi lainnya. Sementara itu, observasi kelima memiliki nilai 1,06, yang paling mendekati angka 1. Kondisi ini menunjukkan bahwa bentuk biji kacang tersebut relatif lebih bulat atau mendekati simetris. Secara umum, semakin besar nilai Elongation_Index maka semakin lonjong bentuk biji kacang yang diamati.

Feature 3: Shape_Quality

Rumus: Shape_Quality = Roundness × Solidity

Alasan Pembuatan karena Roundness mengukur tingkat kebulatan objek sedangkan Solidity mengukur tingkat kepadatan bentuk objek terhadap convex hull-nya. Kedua variabel tersebut sama-sama berkaitan dengan kualitas bentuk geometris suatu biji. Dengan menggabungkannya, diperoleh ukuran komposit yang menggambarkan kualitas bentuk secara keseluruhan.

Interpretasinya jika:

  • Nilai tinggi menunjukkan biji memiliki bentuk yang bulat dan padat.
  • Nilai rendah menunjukkan bentuk kurang bulat atau memiliki banyak ketidakteraturan pada tepi objek.
  • Semakin tinggi nilai Shape_Quality maka semakin baik kualitas bentuk geometris biji.

Pada outputnya dihasilkan: Nilai Shape_Quality pada enam observasi pertama berada pada rentang 0,87 hingga 0,98. Fitur ini merupakan hasil perkalian antara roundness dan solidity, sehingga menggambarkan kualitas bentuk geometris biji kacang secara keseluruhan.

Observasi kelima memiliki nilai 0,9759, yang merupakan nilai tertinggi. Hal ini menunjukkan bahwa biji kacang tersebut memiliki bentuk yang sangat bulat dan padat sehingga dapat dikatakan memiliki kualitas bentuk geometris yang baik. Sebaliknya, observasi kedua memiliki nilai 0,8737, yang merupakan nilai terendah pada sampel tersebut. Nilai yang lebih rendah menunjukkan bahwa bentuk biji tersebut relatif kurang bulat atau memiliki ketidakteraturan bentuk yang lebih besar dibandingkan observasi lainnya. Secara umum, semakin mendekati nilai 1 maka bentuk biji kacang semakin bulat, padat, dan teratur.

Kesimpulan

berdasarkan hasil feature engineering, diperoleh tiga fitur baru yang mampu memberikan informasi tambahan mengenai karakteristik biji kacang. Fitur Area_Perimeter_Ratio menggambarkan efisiensi ukuran biji, Elongation_Index menggambarkan tingkat kelonjongan bentuk biji, sedangkan Shape_Quality menggambarkan kualitas bentuk geometris secara keseluruhan. Ketiga fitur tersebut dapat digunakan sebagai variabel tambahan pada tahap feature selection dan Principal Component Analysis (PCA) untuk membantu mengidentifikasi karakteristik utama yang membedakan bentuk dan ukuran biji kacang.

Feature Selection

Feature selection dilakukan untuk memilih variabel yang paling relevan serta mengurangi redundansi informasi akibat korelasi yang sangat tinggi antar variabel.

Metode 1: Filter Method (Correlation Matrix)

Tujuannya untuk Mengidentifikasi variabel yang memiliki korelasi sangat tinggi (|r| > 0,90). Jika dua variabel memiliki korelasi sangat tinggi, salah satunya dapat dieliminasi karena mengandung informasi yang hampir sama.

# FILTER METHOD
# KORELASI
cor_mat <- cor(bean_fe %>%
                 dplyr::select(where(is.numeric)))

round(cor_mat,3)
##                        Area Perimeter MajorAxisLength MinorAxisLength
## Area                  1.000     0.879           0.831           0.662
## Perimeter             0.879     1.000           0.794           0.512
## MajorAxisLength       0.831     0.794           1.000           0.134
## MinorAxisLength       0.662     0.512           0.134           1.000
## AspectRation          0.303     0.370           0.782          -0.511
## Eccentricity          0.297     0.339           0.765          -0.509
## ConvexArea            0.998     0.900           0.832           0.660
## EquivDiameter         1.000     0.879           0.831           0.662
## Extent               -0.091    -0.164          -0.192           0.088
## Solidity              0.131    -0.274           0.066           0.095
## roundness            -0.021    -0.492          -0.154           0.140
## Compactness          -0.304    -0.372          -0.782           0.510
## ShapeFactor1         -0.662    -0.495          -0.135          -0.997
## ShapeFactor2         -0.589    -0.601          -0.936           0.211
## ShapeFactor3         -0.305    -0.369          -0.782           0.510
## ShapeFactor4         -0.042    -0.274          -0.130           0.039
## Area_Perimeter_Ratio  0.886     0.559           0.674           0.656
## Elongation_Index      0.303     0.370           0.782          -0.511
## Shape_Quality        -0.006    -0.479          -0.134           0.139
##                      AspectRation Eccentricity ConvexArea EquivDiameter Extent
## Area                        0.303        0.297      0.998         1.000 -0.091
## Perimeter                   0.370        0.339      0.900         0.879 -0.164
## MajorAxisLength             0.782        0.765      0.832         0.831 -0.192
## MinorAxisLength            -0.511       -0.509      0.660         0.662  0.088
## AspectRation                1.000        0.977      0.306         0.304 -0.222
## Eccentricity                0.977        1.000      0.297         0.297 -0.210
## ConvexArea                  0.306        0.297      1.000         0.998 -0.102
## EquivDiameter               0.304        0.297      0.998         1.000 -0.090
## Extent                     -0.222       -0.210     -0.102        -0.090  1.000
## Solidity                   -0.011        0.034      0.073         0.131  0.172
## roundness                  -0.230       -0.177     -0.067        -0.020  0.182
## Compactness                -0.998       -0.986     -0.308        -0.305  0.225
## ShapeFactor1                0.511        0.502     -0.657        -0.663 -0.098
## ShapeFactor2               -0.943       -0.939     -0.591        -0.590  0.217
## ShapeFactor3               -0.997       -0.989     -0.308        -0.305  0.224
## ShapeFactor4               -0.144       -0.110     -0.087        -0.042  0.185
## Area_Perimeter_Ratio        0.167        0.185      0.863         0.887  0.003
## Elongation_Index            1.000        0.977      0.306         0.304 -0.222
## Shape_Quality              -0.212       -0.159     -0.054        -0.005  0.184
##                      Solidity roundness Compactness ShapeFactor1 ShapeFactor2
## Area                    0.131    -0.021      -0.304       -0.662       -0.589
## Perimeter              -0.274    -0.492      -0.372       -0.495       -0.601
## MajorAxisLength         0.066    -0.154      -0.782       -0.135       -0.936
## MinorAxisLength         0.095     0.140       0.510       -0.997        0.211
## AspectRation           -0.011    -0.230      -0.998        0.511       -0.943
## Eccentricity            0.034    -0.177      -0.986        0.502       -0.939
## ConvexArea              0.073    -0.067      -0.308       -0.657       -0.591
## EquivDiameter           0.131    -0.020      -0.305       -0.663       -0.590
## Extent                  0.172     0.182       0.225       -0.098        0.217
## Solidity                1.000     0.795       0.023       -0.149       -0.033
## roundness               0.795     1.000       0.230       -0.174        0.191
## Compactness             0.023     0.230       1.000       -0.510        0.947
## ShapeFactor1           -0.149    -0.174      -0.510        1.000       -0.210
## ShapeFactor2           -0.033     0.191       0.947       -0.210        1.000
## ShapeFactor3            0.017     0.224       1.000       -0.509        0.948
## ShapeFactor4            0.749     0.451       0.167       -0.105        0.148
## Area_Perimeter_Ratio    0.487     0.444      -0.168       -0.673       -0.441
## Elongation_Index       -0.011    -0.230      -0.998        0.511       -0.943
## Shape_Quality           0.823     0.999       0.213       -0.174        0.171
##                      ShapeFactor3 ShapeFactor4 Area_Perimeter_Ratio
## Area                       -0.305       -0.042                0.886
## Perimeter                  -0.369       -0.274                0.559
## MajorAxisLength            -0.782       -0.130                0.674
## MinorAxisLength             0.510        0.039                0.656
## AspectRation               -0.997       -0.144                0.167
## Eccentricity               -0.989       -0.110                0.185
## ConvexArea                 -0.308       -0.087                0.863
## EquivDiameter              -0.305       -0.042                0.887
## Extent                      0.224        0.185                0.003
## Solidity                    0.017        0.749                0.487
## roundness                   0.224        0.451                0.444
## Compactness                 1.000        0.167               -0.168
## ShapeFactor1               -0.509       -0.105               -0.673
## ShapeFactor2                0.948        0.148               -0.441
## ShapeFactor3                1.000        0.161               -0.170
## ShapeFactor4                0.161        1.000                0.176
## Area_Perimeter_Ratio       -0.170        0.176                1.000
## Elongation_Index           -0.997       -0.144                0.167
## Shape_Quality               0.207        0.476                0.457
##                      Elongation_Index Shape_Quality
## Area                            0.303        -0.006
## Perimeter                       0.370        -0.479
## MajorAxisLength                 0.782        -0.134
## MinorAxisLength                -0.511         0.139
## AspectRation                    1.000        -0.212
## Eccentricity                    0.977        -0.159
## ConvexArea                      0.306        -0.054
## EquivDiameter                   0.304        -0.005
## Extent                         -0.222         0.184
## Solidity                       -0.011         0.823
## roundness                      -0.230         0.999
## Compactness                    -0.998         0.213
## ShapeFactor1                    0.511        -0.174
## ShapeFactor2                   -0.943         0.171
## ShapeFactor3                   -0.997         0.207
## ShapeFactor4                   -0.144         0.476
## Area_Perimeter_Ratio            0.167         0.457
## Elongation_Index                1.000        -0.212
## Shape_Quality                  -0.212         1.000
# Menampilkan pasangan korelasi > 0.90
high_cor <- which(
  abs(cor_mat) > 0.90 &
  abs(cor_mat) < 1,
  arr.ind = TRUE
)

high_cor
##                  row col
## ConvexArea         7   1
## EquivDiameter      8   1
## ConvexArea         7   2
## ShapeFactor2      14   3
## ShapeFactor1      13   4
## Eccentricity       6   5
## Compactness       12   5
## ShapeFactor2      14   5
## ShapeFactor3      15   5
## Elongation_Index  18   5
## AspectRation       5   6
## Compactness       12   6
## ShapeFactor2      14   6
## ShapeFactor3      15   6
## Elongation_Index  18   6
## Area               1   7
## Perimeter          2   7
## EquivDiameter      8   7
## Area               1   8
## ConvexArea         7   8
## Shape_Quality     19  11
## AspectRation       5  12
## Eccentricity       6  12
## ShapeFactor2      14  12
## ShapeFactor3      15  12
## Elongation_Index  18  12
## MinorAxisLength    4  13
## MajorAxisLength    3  14
## AspectRation       5  14
## Eccentricity       6  14
## Compactness       12  14
## ShapeFactor3      15  14
## Elongation_Index  18  14
## AspectRation       5  15
## Eccentricity       6  15
## Compactness       12  15
## ShapeFactor2      14  15
## Elongation_Index  18  15
## AspectRation       5  18
## Eccentricity       6  18
## Compactness       12  18
## ShapeFactor2      14  18
## ShapeFactor3      15  18
## roundness         11  19
# Menghapus variabel yang redundan
highCorrelation <- findCorrelation(
  cor_mat,
  cutoff = 0.90
)

names(bean_fe)[highCorrelation]
##  [1] "MajorAxisLength" "ShapeFactor2"    "Perimeter"       "Compactness"    
##  [5] "ShapeFactor3"    "AspectRation"    "Eccentricity"    "ConvexArea"     
##  [9] "Area"            "ShapeFactor1"    "roundness"
# Menampilkan variabel terpilih
selected_filter <- bean_fe[,-highCorrelation]
names(selected_filter)
## [1] "MinorAxisLength"      "EquivDiameter"        "Extent"              
## [4] "Solidity"             "ShapeFactor4"         "Class"               
## [7] "Area_Perimeter_Ratio" "Elongation_Index"     "Shape_Quality"

Feature Selection dilakukan menggunakan Filter Method dengan pendekatan Correlation Matrix. Pada metode ini, variabel yang memiliki korelasi sangat tinggi (|r| > 0,90) dianggap mengandung informasi yang redundan sehingga sebagian variabel dapat dieliminasi untuk mengurangi multikolinearitas dan menyederhanakan model.

Berdasarkan matriks korelasi, ditemukan beberapa pasangan variabel yang memiliki korelasi sangat tinggi, di antaranya:

Variabel Korelasi
Area – EquivDiameter 1,000
Area – ConvexArea 0,998
AspectRation – Elongation_Index 1,000
AspectRation – Compactness -0,998
AspectRation – ShapeFactor3 -0,997
Eccentricity – AspectRation 0,977
Shape_Quality – roundness 0,999
MajorAxisLength – ShapeFactor2 -0,936
Compactness – ShapeFactor3 1,000

Nilai korelasi yang sangat tinggi menunjukkan bahwa variabel-variabel tersebut menyimpan informasi yang hampir sama sehingga tidak semuanya perlu dipertahankan dalam analisis lanjutan.

Berdasarkan fungsi findCorrelation() dengan batas korelasi 0,90, diperoleh 11 variabel yang dieliminasi:

  1. MajorAxisLength
  2. ShapeFactor2
  3. Perimeter
  4. Compactness
  5. ShapeFactor3
  6. AspectRation
  7. Eccentricity
  8. ConvexArea
  9. Area
  10. ShapeFactor1
  11. roundness

Alasan eliminasi berdasarkan 3 faktor, diantaranya:

Kelompok Ukuran Biji

Seperti Area, ConvexArea, Perimeter, dan MajorAxisLength dihapus karena memiliki hubungan yang sangat kuat dengan EquivDiameter.

Area – EquivDiameter = 1,000

Area – ConvexArea = 0,998

ConvexArea – EquivDiameter = 0,998

Karena EquivDiameter sudah mampu mewakili ukuran keseluruhan biji, maka variabel ukuran lainnya dianggap redundan.

Kelompok Bentuk Geometris

Seperti AspectRation, Eccentricity, Compactness, ShapeFactor2, dan ShapeFactor3 dieliminasi karena saling berkorelasi sangat tinggi.

AspectRation – Elongation_Index = 1,000

Compactness – ShapeFactor3 = 1,000

AspectRation – Compactness = -0,998

Karena telah dibuat fitur baru Elongation_Index, fitur tersebut dipilih sebagai representasi tingkat kelonjongan biji sehingga variabel lama tidak lagi diperlukan.

Kelompok Kebulatan Bentuk

roundness dieliminasi karena hampir identik dengan fitur baru Shape_Quality. dengan nilai korelasi r=0.999.

Karena Shape_Quality menggabungkan informasi roundness dan solidity, maka fitur baru ini dianggap lebih informatif dibandingkan roundness saja.

Variabel yang terpilih

Setelah proses seleksi, diperoleh 9 variabel yang dipertahankan:

Variabel Terpilih Keterangan
MinorAxisLength Panjang sumbu minor biji
EquivDiameter Diameter ekuivalen biji
Extent Rasio luas objek terhadap bounding box
Solidity Tingkat kepadatan objek
ShapeFactor4 Faktor bentuk ke-4
Class Label kelas biji
Area_Perimeter_Ratio Fitur baru efisiensi bentuk
Elongation_Index Fitur baru tingkat kelonjongan
Shape_Quality Fitur baru kualitas bentuk

Hasil seleksi menunjukkan bahwa sebagian besar variabel yang dieliminasi merupakan variabel yang sangat berkorelasi dengan variabel lain sehingga mengandung informasi yang berulang. Variabel yang dipertahankan mampu mewakili tiga karakteristik utama biji kacang, yaitu:

  1. Karakteristik Ukuran yang terdiri dari EquivDiameter dan MinorAxisLength yang menggambarkan ukuran fisik biji.
  2. Selanjutnya, Karakteristik Bentuk seperti Elongation_Index dan ShapeFactor4 yang menggambarkan bentuk dan tingkat kelonjongan biji.
  3. Terakhir,Karakteristik Kualitas Bentuk yang terdiri dari Solidity, Shape_Quality dan Area_Perimeter_Ratio yang menggambarkan tingkat kepadatan, keteraturan, dan efisiensi bentuk geometris biji.

Metode 2: Wrapper Method (Stepwise Regression)

Metode stepwise regression melakukan seleksi variabel secara otomatis dengan mempertimbangkan nilai Akaike Information Criterion (AIC).

Variabel yang memberikan kontribusi besar terhadap model dipertahankan, sedangkan variabel yang kontribusinya kecil atau redundan dieliminasi.

Variabel yang dipilih oleh model dianggap memiliki kemampuan terbaik dalam menjelaskan variasi pada variabel Area.

# WRAPPER METHOD
# STEPWISE REGRESSION
full_model <- lm(
  Area ~ .,
  data = bean_fe %>%
    dplyr::select(-Class)
)

step_model <- stepAIC(
  full_model,
  direction = "both",
  trace = FALSE
)

summary(step_model)
## 
## Call:
## lm(formula = Area ~ Perimeter + MajorAxisLength + MinorAxisLength + 
##     AspectRation + Eccentricity + ConvexArea + EquivDiameter + 
##     Solidity + roundness + Compactness + ShapeFactor1 + ShapeFactor2 + 
##     ShapeFactor3 + ShapeFactor4 + Area_Perimeter_Ratio + Shape_Quality, 
##     data = bean_fe %>% dplyr::select(-Class))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -16.1045  -0.6252  -0.0774   0.6045  13.7592 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          -1.547e+05  2.819e+03 -54.893  < 2e-16 ***
## Perimeter             4.043e+00  2.933e-01  13.782  < 2e-16 ***
## MajorAxisLength       9.756e+01  5.376e+00  18.148  < 2e-16 ***
## MinorAxisLength       2.305e+01  7.382e+00   3.123  0.00184 ** 
## AspectRation         -4.947e+03  4.961e+02  -9.971  < 2e-16 ***
## Eccentricity         -2.915e+02  3.039e+01  -9.593  < 2e-16 ***
## ConvexArea            2.825e-01  1.514e-02  18.663  < 2e-16 ***
## EquivDiameter         1.859e+02  1.202e+01  15.469  < 2e-16 ***
## Solidity              1.703e+04  8.097e+02  21.027  < 2e-16 ***
## roundness             5.466e+03  4.736e+02  11.540  < 2e-16 ***
## Compactness           1.057e+05  4.522e+03  23.376  < 2e-16 ***
## ShapeFactor1          3.491e+06  7.110e+04  49.098  < 2e-16 ***
## ShapeFactor2          6.269e+05  8.742e+04   7.171 1.46e-12 ***
## ShapeFactor3         -4.393e+04  1.818e+03 -24.167  < 2e-16 ***
## ShapeFactor4          1.094e+04  1.893e+03   5.781 9.97e-09 ***
## Area_Perimeter_Ratio  1.152e+02  7.439e+00  15.487  < 2e-16 ***
## Shape_Quality        -7.218e+03  5.133e+02 -14.064  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.335 on 983 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 1.495e+08 on 16 and 983 DF,  p-value: < 2.2e-16
names(coef(step_model)) #Variabel yang terpilih
##  [1] "(Intercept)"          "Perimeter"            "MajorAxisLength"     
##  [4] "MinorAxisLength"      "AspectRation"         "Eccentricity"        
##  [7] "ConvexArea"           "EquivDiameter"        "Solidity"            
## [10] "roundness"            "Compactness"          "ShapeFactor1"        
## [13] "ShapeFactor2"         "ShapeFactor3"         "ShapeFactor4"        
## [16] "Area_Perimeter_Ratio" "Shape_Quality"
formula(step_model)
## Area ~ Perimeter + MajorAxisLength + MinorAxisLength + AspectRation + 
##     Eccentricity + ConvexArea + EquivDiameter + Solidity + roundness + 
##     Compactness + ShapeFactor1 + ShapeFactor2 + ShapeFactor3 + 
##     ShapeFactor4 + Area_Perimeter_Ratio + Shape_Quality
selected_wrapper <- all.vars(formula(step_model))

selected_wrapper
##  [1] "Area"                 "Perimeter"            "MajorAxisLength"     
##  [4] "MinorAxisLength"      "AspectRation"         "Eccentricity"        
##  [7] "ConvexArea"           "EquivDiameter"        "Solidity"            
## [10] "roundness"            "Compactness"          "ShapeFactor1"        
## [13] "ShapeFactor2"         "ShapeFactor3"         "ShapeFactor4"        
## [16] "Area_Perimeter_Ratio" "Shape_Quality"
# Membandingkan hasil kedua metode
names(selected_filter) #Filter methode
## [1] "MinorAxisLength"      "EquivDiameter"        "Extent"              
## [4] "Solidity"             "ShapeFactor4"         "Class"               
## [7] "Area_Perimeter_Ratio" "Elongation_Index"     "Shape_Quality"
selected_wrapper #Wrapper methode
##  [1] "Area"                 "Perimeter"            "MajorAxisLength"     
##  [4] "MinorAxisLength"      "AspectRation"         "Eccentricity"        
##  [7] "ConvexArea"           "EquivDiameter"        "Solidity"            
## [10] "roundness"            "Compactness"          "ShapeFactor1"        
## [13] "ShapeFactor2"         "ShapeFactor3"         "ShapeFactor4"        
## [16] "Area_Perimeter_Ratio" "Shape_Quality"

Metode Wrapper Method menggunakan algoritma Stepwise Regression (AIC) untuk memilih kombinasi variabel yang memberikan model terbaik dalam menjelaskan variasi pada variabel respon (Area). Variabel yang dipertahankan adalah variabel yang dianggap memberikan kontribusi signifikan terhadap model.

Hasil Seleksi Variabel

Berdasarkan output formula(step_model), variabel yang terpilih adalah:

Variabel Terpilih
Perimeter
MajorAxisLength
MinorAxisLength
AspectRation
Eccentricity
ConvexArea
EquivDiameter
Solidity
roundness
Compactness
ShapeFactor1
ShapeFactor2
ShapeFactor3
ShapeFactor4
Area_Perimeter_Ratio
Shape_Quality

Jumlah variabel yang dipilih = 16 variabel.

Variabel yang dieliminasi

Dari seluruh variabel numerik yang tersedia, hanya satu variabel yang tidak masuk ke model akhir yaitu variabel extent

Variabel Extent tidak dipilih oleh algoritma Stepwise karena kontribusinya dalam menjelaskan variasi Area relatif kecil dibandingkan variabel lainnya. Selain itu pada analisis korelasi sebelumnya diperoleh bahwa Extent memiliki korelasi yang sangat rendah terhadap Area: r = −0,091

Nilai tersebut menunjukkan hubungan yang sangat lemah sehingga informasi yang diberikan Extent tidak banyak membantu meningkatkan kualitas model regresi.

Oleh karena itu, Stepwise Regression secara otomatis menghapus variabel tersebut untuk memperoleh model yang lebih efisien.

Signifikansi Variabel yang terpilih

Berdasarkan output summary(step_model), seluruh variabel yang dipilih memiliki nilai p-value<0,05 bahkan sebagian besar memiliki p-value<0,001.

Hal ini menunjukkan bahwa seluruh variabel yang dipertahankan memiliki pengaruh yang signifikan terhadap Area.

Kualitas Model

Diperoleh nilai: R^2 = 1 dan Adjusted R^2 = 1 yang menunjukkan bahwa hampir seluruh variasi pada variabel Area dapat dijelaskan oleh variabel-variabel dalam model.

Namun perlu dicatat bahwa nilai yang sangat sempurna ini terjadi karena terdapat beberapa variabel yang secara matematis sangat berkaitan dengan Area, misalnya: EquivDiameter, ConvexArea, dan Area_Perimeter_Ratio. sehingga kemampuan prediksi model menjadi sangat tinggi.

Perbandingan kedua metode

Variabel Filter Method Wrapper Method
MinorAxisLength
EquivDiameter
Solidity
ShapeFactor4
Area_Perimeter_Ratio
Shape_Quality
Elongation_Index
Extent
Perimeter
MajorAxisLength
AspectRation
Eccentricity
ConvexArea
roundness
Compactness
ShapeFactor1
ShapeFactor2
ShapeFactor3

Metode Filter Method lebih ketat dalam menghapus variabel yang memiliki korelasi sangat tinggi sehingga hanya menyisakan 9 variabel yang dianggap tidak redundan.

Sebaliknya, Wrapper Method mempertahankan hampir seluruh variabel karena variabel-variabel tersebut masih memberikan kontribusi terhadap model regresi. Hanya variabel Extent yang dieliminasi karena tidak memberikan peningkatan kualitas model yang berarti.

Dengan demikian, Filter Method lebih cocok digunakan sebelum PCA karena berhasil mengurangi multikolinearitas dan redundansi informasi.Sedangkan, Wrapper Method lebih cocok digunakan ketika tujuan analisis adalah membangun model prediksi karena mempertahankan variabel yang masih memiliki kontribusi terhadap respon.

Kesimpulan Akhir

Berdasarkan kedua metode yang digunakan, terdapat enam variabel yang secara konsisten dipilih oleh kedua metode, yaitu:

  1. MinorAxisLength
  2. EquivDiameter
  3. Solidity
  4. ShapeFactor4
  5. Area_Perimeter_Ratio
  6. Shape_Quality

Keenam variabel tersebut dapat dianggap sebagai variabel paling representatif karena mampu bertahan baik pada pendekatan korelasi maupun pendekatan regresi. Oleh karena itu, variabel-variabel tersebut sangat layak digunakan pada tahap Principal Component Analysis (PCA) sebagai representasi utama karakteristik ukuran dan bentuk biji kacang.

Feature Extraction

PCA (Principal Component Analysis)

Standarisasi Data

PCA harus diawali dengan standardisasi Z-Score karena sensitif terhadap perbedaan skala variabel.

# Memilih variabel numerik
bean_num <- bean %>% dplyr::select(where(is.numeric))

# Standardisasi
bean_scaled <- scale(bean_num)

# PCA
pca_bean <- prcomp(bean_scaled, center = TRUE, scale. = TRUE)

summary(pca_bean)
## Importance of components:
##                           PC1    PC2    PC3     PC4     PC5     PC6     PC7
## Standard deviation     2.6907 2.1746 1.5605 0.94810 0.76575 0.28257 0.16333
## Proportion of Variance 0.4525 0.2955 0.1522 0.05618 0.03665 0.00499 0.00167
## Cumulative Proportion  0.4525 0.7480 0.9002 0.95641 0.99305 0.99804 0.99971
##                            PC8     PC9    PC10    PC11     PC12     PC13
## Standard deviation     0.04321 0.03771 0.03242 0.01617 0.001655 0.001441
## Proportion of Variance 0.00012 0.00009 0.00007 0.00002 0.000000 0.000000
## Cumulative Proportion  0.99983 0.99992 0.99998 1.00000 1.000000 1.000000
##                             PC14      PC15      PC16
## Standard deviation     0.0008397 0.0004507 0.0002432
## Proportion of Variance 0.0000000 0.0000000 0.0000000
## Cumulative Proportion  1.0000000 1.0000000 1.0000000

Eigenvalue, Proporsi Variansi, dan Cumulative Variance

PC Eigenvalue Proporsi Variansi (%) Kumulatif (%)
PC1 7.247 45.25 45.25
PC2 4.733 29.55 74.80
PC3 2.438 15.22 90.02
PC4 0.900 5.62 95.64
PC5 0.587 3.66 99.31

Menurut Kaiser Criterion, komponen dengan eigenvalue > 1 dipertahankan. Sehingga komponen yang dipertahankan adalah: - PC1 - PC2 - PC3 Karena ketiganya memiliki eigenvalue > 1.

Loading Factor

Loading terbesar pada PC1

Variabel Loading
MajorAxisLength 0.365
ShapeFactor2 -0.361
Compactness -0.319
ShapeFactor3 -0.319
AspectRation 0.318
Eccentricity 0.313

Loading terbesar pada PC2

Variabel Loading
ShapeFactor1 0.459
MinorAxisLength -0.458
EquivDiameter -0.309
Area -0.309
ConvexArea -0.307

Visualisasi PCA

Scree Plot

fviz_eig(
  pca_bean,
  addlabels = TRUE,
  ylim = c(0,50)
)

Interpretasi:

Terlihat penurunan eigenvalue yang sangat tajam dari PC1 ke PC3, kemudian mulai mendatar pada PC4 dan seterusnya. Hal ini menunjukkan bahwa sebagian besar informasi data telah dirangkum oleh tiga komponen utama pertama.

Cumulative Variance Plot

var_exp <- pca_bean$sdev^2 / sum(pca_bean$sdev^2)

plot(
  cumsum(var_exp),
  type = "b",
  pch = 19,
  xlab = "Jumlah Komponen",
  ylab = "Cumulative Variance"
)

abline(h = 0.9, col = "red", lty = 2)

Interpretasi:

Tiga komponen pertama sudah menjelaskan:

90.02% variasi data

Sehingga target 70–90% cumulative variance pada materi sudah terpenuhi.

Biplot

fviz_pca_biplot(
  pca_bean,
  repel = TRUE,
  col.var = "red",
  col.ind = "gray"
)

Interpretasi

  • Variabel yang arahnya sama menunjukkan korelasi positif.
  • Variabel yang berlawanan arah menunjukkan korelasi negatif.
  • Panjang panah menunjukkan kontribusi variabel terhadap pembentukan komponen utama.

Interpretasi PCA

Principal Component Utama

PC1 (45.25%)

PC1 menjelaskan variasi terbesar dalam data yaitu 45.25%.

Variabel dominan:

  • MajorAxisLength
  • AspectRation
  • Eccentricity
  • ShapeFactor2
  • Compactness
  • ShapeFactor3

PC1 dapat diinterpretasikan sebagai: “Karakteristik bentuk dan proporsi biji kacang”, karena variabel-variabel tersebut menggambarkan panjang, bentuk elips, dan tingkat kepadatan bentuk biji.

PC2 (29.55%)

Variabel dominan:

  • ShapeFactor1
  • MinorAxisLength
  • Area
  • ConvexArea
  • EquivDiameter

PC2 dapat diinterpretasikan sebagai: “Ukuran fisik biji kacang”, karena banyak dipengaruhi oleh luas area, diameter ekuivalen, dan panjang sumbu minor.

PC3 (15.22%)

Variabel dominan:

  • Solidity (-0.614)
  • Roundness (-0.518)
  • ShapeFactor4 (-0.494)

PC3 dapat diinterpretasikan sebagai: “Tingkat kebulatan dan kekompakan bentuk biji”

Variabel Paling Berpengaruh

Berdasarkan loading absolut terbesar:

  • MajorAxisLength
  • ShapeFactor2
  • ShapeFactor1
  • MinorAxisLength
  • AspectRation
  • Eccentricity

Variabel-variabel tersebut menjadi penyusun utama principal component.

Reduksi Dimensi

Reduksi dimensi dapat dikatakan berhasil.

Sebelum PCA, dataset Dry Bean memiliki 16 variabel numerik yang digunakan untuk menggambarkan karakteristik fisik biji kacang. Setelah dilakukan PCA, informasi utama data dapat diringkas menjadi 3 principal components (PC1, PC2, dan PC3) yang mampu menjelaskan sekitar 90,02% total variasi data.

Menurut kriteria cumulative variance, PCA dianggap efektif apabila komponen yang dipertahankan mampu menjelaskan sekitar 70%–90% variasi data. Oleh karena itu, hasil sebesar 90,02% menunjukkan bahwa sebagian besar informasi pada data asli tetap dipertahankan meskipun jumlah dimensinya telah berkurang secara signifikan.

Dengan demikian, PCA berhasil menyederhanakan data dari 16 variabel menjadi 3 komponen utama tanpa kehilangan informasi yang berarti.

Insight dan Kesimpulan

Insight

Analisis PCA menunjukkan bahwa karakteristik biji kacang terutama dipengaruhi oleh dimensi geometris dan bentuk fisiknya. Variabel seperti MajorAxisLength, AspectRation, Eccentricity, dan ShapeFactor memiliki kontribusi terbesar dalam menjelaskan variasi antar jenis biji kacang.

Komponen pertama menggambarkan variasi bentuk dan proporsi biji, sedangkan komponen kedua lebih merepresentasikan ukuran fisik biji. Komponen ketiga menjelaskan tingkat kebulatan dan kekompakan bentuk biji.

Kesimpulan

PCA berhasil mereduksi dimensi data dari 16 variabel numerik menjadi 3 principal components. Tiga komponen utama tersebut mampu menjelaskan 90.02% variasi data, sehingga sebagian besar informasi penting tetap dipertahankan.

Variabel yang paling berpengaruh dalam pembentukan principal component adalah:

  • MajorAxisLength
  • ShapeFactor1
  • ShapeFactor2
  • MinorAxisLength
  • AspectRation
  • Eccentricity

PCA efektif digunakan pada dataset Dry Bean karena mampu mengurangi kompleksitas data tanpa kehilangan informasi yang signifikan.

Secara substantif, variasi antar biji kacang lebih banyak ditentukan oleh ukuran, bentuk geometris, dan tingkat kekompakan biji, dibandingkan karakteristik lainnya.