LBB Unsupervised Learning

Read & Explore Data

Disini saya akan melakukan reduksi dimensi pada data ukuran ikan di salah satu pasar ikan di Filipina. Variable yang digunakan akan ada 6 yaitu:
- weight: weight of fish in g
- vertical_length: vertical length in cm
- diagonal_length: diagonal length in cm
- cross_length: cross length in cm
- height: height in cm
- width: diagonal width in cm

Tujuan dalam melakukan reduksi dimensi ini adalah untuk nantinya agar bisa melakukan visualisasi lebih dari 2 dimensi data untuk melakukan clustering ikan-ikan yang memiliki karakteristik ukuran yang sama.

Step pertama yang akan dilakukan yaitu melakukan read data dan melakukan pre-processing data.

'data.frame':   159 obs. of  7 variables:
 $ species        : Factor w/ 7 levels "Bream","Parkki",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ weight         : num  242 290 340 363 430 450 500 390 450 500 ...
 $ vertical_length: num  23.2 24 23.9 26.3 26.5 26.8 26.8 27.6 27.6 28.5 ...
 $ diagonal_length: num  25.4 26.3 26.5 29 29 29.7 29.7 30 30 30.7 ...
 $ cross_length   : num  30 31.2 31.1 33.5 34 34.7 34.5 35 35.1 36.2 ...
 $ height         : num  11.5 12.5 12.4 12.7 12.4 ...
 $ width          : num  4.02 4.31 4.7 4.46 5.13 ...
  species weight vertical_length diagonal_length cross_length  height
1   Bream    242            23.2            25.4         30.0 11.5200
2   Bream    290            24.0            26.3         31.2 12.4800
3   Bream    340            23.9            26.5         31.1 12.3778
4   Bream    363            26.3            29.0         33.5 12.7300
5   Bream    430            26.5            29.0         34.0 12.4440
6   Bream    450            26.8            29.7         34.7 13.6024
   width
1 4.0200
2 4.3056
3 4.6961
4 4.4555
5 5.1340
6 4.9274

Pre-Processing Data

Check adanya missing value data

        species          weight vertical_length diagonal_length 
              0               0               0               0 
   cross_length          height           width 
              0               0               0 

Model PCA

Setelah selesai melakukan pre-processing, maka tahap selanjutnya yaitu membuat model PCA. Pada langkah reduksi dimensi menggunakan PCA ini, saya menggunakan prcomp().

Importance of components:
                          PC1     PC2     PC3     PC4     PC5     PC6
Standard deviation     2.2956 0.71450 0.34685 0.31229 0.03968 0.01666
Proportion of Variance 0.8783 0.08509 0.02005 0.01625 0.00026 0.00005
Cumulative Proportion  0.8783 0.96339 0.98344 0.99969 0.99995 1.00000

Karena tujuan saya adalah reduksi dimensi, saya ingin mempertahankan informasi pada data sebanyak ~96%. Oleh karena itu, maka saya akan menggunakan PC1 dan PC2.

Biplot Model PCA

Selanjutnya saya ingin melihat sebaran data fish terhadap variable-variablenya.

Interpretasi:

  • adanya korelasi kuat positif antara variable diagonal_length dan vertical_length
[1] 0.9995173
  • korelasi antara height dengan diagonal_length sedikit
[1] 0.6404408

Visualizing with PCA and FactoMineR

Supaya lebih terlihat cluster jenis-jenis ikannya dan check ada outlier atau tidak, saya menggunakan metode PCA dari library FactoMiner.

         eigenvalue percentage of variance
comp 1 5.2698053588           87.830089314
comp 2 0.5105128894            8.508548157
comp 3 0.1203025138            2.005041897
comp 4 0.0975271214            1.625452023
comp 5 0.0015746150            0.026243583
comp 6 0.0002775016            0.004625027
       cumulative percentage of variance
comp 1                          87.83009
comp 2                          96.33864
comp 3                          98.34368
comp 4                          99.96913
comp 5                          99.99537
comp 6                         100.00000

Lalu kita akan coba lihat biplotnya menggunakan plot.PCA()

‘Individual data’ plot untuk check outlier

dari visualisasi di atas terlihat ada 5 outlier yaitu data 141-145.

Model Kmeans

Dalam membuat cluster, saya akan coba menggunakan elbow method untuk menentukan banyak clusternya. karena PC yang dipilih adalah PC1 dan 2. maka saya ambil data dari kedua PC tersebut

Elbow Plot

Pada elbow plot ini terlihat pada K=4 tidak terjadi penurunan cluster, oleh karena itu saya memilih k=4

Creating Model

K-means clustering with 4 clusters of sizes 66, 26, 22, 45

Cluster means:
        PC1         PC2
1 -1.188931 -0.02239569
2  3.447955 -0.33490399
3 -3.430231 -0.23215631
4  1.428615  0.33984574

Clustering vector:
 [1] 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2
[36] 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 4 4 2 3 3 1 1 1 1 1 1 1
[71] 1 1 3 3 3
 [ reached getOption("max.print") -- omitted 84 entries ]

Within cluster sum of squares by cluster:
[1] 36.363441 62.042351  6.711978 45.742138
 (between_SS / total_SS =  83.5 %)

Available components:

[1] "cluster"      "centers"      "totss"        "withinss"    
[5] "tot.withinss" "betweenss"    "size"         "iter"        
[9] "ifault"      

Cluster Size

[1] 66 26 22 45

Dari hasil clustering menggunakan k-means, diperoleh 3 kelompok dimana untuk cluster 1 ada 45 ikan, cluster 2 ada 22 ikan, cluster 3 ada 66 ikan, dan cluster 4 ada 26 ikan

WSS

Dari 4 cluster yang sudah terbentuk, dilihat nilai wss dibawah ini sudah cukup kecil.

[1] 150.8599

BSS

Untuk nilai proporsi bss nya, sudah cukup baik karena sudah sekitar 83,48%.

[1] 0.8348171

Visualization

Selanjutnya saya akan coba visualisasikan ikan-ikan yang dalam satu cluster dari variabel-variabel yang ada.

Pada tahap ini saya akan mencoba untuk memvisualisasikan beberapa cluster yang terbentuk dari data Fish ini.

[1] "Jumlah K: 4  | BSS: 0.834817132343861  | WSS: 150.859907985057"

[1] "Jumlah K: 5  | BSS: 0.868563706534807  | WSS: 120.039489684444"

[1] "Jumlah K: 6  | BSS: 0.913194614635981  | WSS: 79.2785149842785"

[1] "Jumlah K: 7  | BSS: 0.936181271424603  | WSS: 58.2850246954765"

Pada case ini saya akan memilih banyak cluster sebanyak 7 karena setiap cluster terlihat terpartisi dengan baik dan nilai bss yang dihasilkan sangat tinggi yaitu 91% dan nilai WSS kecil yaitu 74.

Insight

  1. Dari data fish, terdapat 7 jenis-jenis ikan yang dihasilkan dari model PCA + KMEANS
  2. Jumlah K yang optimal dalam model K-means adalah 7 cluster yang memiliki BSS 91% serta WSS 74
  3. Model PCA yang dipilih adalah PC1 dan PC2 (mampu memberikan 96% informasi dari data)

Risal Andika

2019-08-29