Selasa, 23 Mei 2017

Clastering dengan K-Means menggunakan Bahasa pemerograman R


Pada era informasi saat ini tentu keberlimpahan data sebagai dasar informasi sudah begitu monoton, sehingga pertanyaanya adalah data banyak tersebut kita mau apakan. Nah dalam era big data-data tersebut diolah sehingga memiliki makna yang berarti. Lalu pemaknaan data tersebutlah yang memberikan suatu informasi yang berguna bagi institusi tertentu mupun individu secara umum sebagai suatu keputusan, hal ini dikenal dengan nama data mining.
Gambar 1.1 Kajian yang masuk dalam data mining (Santosa, 2007)

Teknik klasater adalah merupakan teknik yang sudah cukup banyak dikenal dan banyak dipakai dalam data mining. Tujuan utama dalam metode klaster adalah pengelompokan jumlah data /objek kedalam goup sehingga dalam klaster kita bias menempatkan objek yang mirip (jaraknya dekat) dalam satu klaster dan membuat jarak antar klaster sejauh mungkin. Dalam teknik ini kita tidak tahu sebelumnya berapa jumlah klaster dan bagaimana pengelompokanya. Klastering adalah salah satu teknik unsuvervised learninf dimana kita tidak perlu melatih metode tersebut atau dengan kata lain tidak ada fase learning.
Sebelum membahas teknik clastering secara tekhnis terlebih dahulu kita harus mengetahui konsep kemiripan dan ketidak miripan. Artinya semakin mirip dua objek semakin tinggi peluang untuk di kelompokkan dalam satu klaster. Sebaliknya semakin tidak mirip semakin rendah peluang untuk di kelompkkan dalam satu klaster. Ada beberapa metode yang digunakan dalam hal ini.

  1. Cosinus antara dua titik x dan y didifinisikan

2. Kovarian
3.  Kefedsien korelasi

Pada metode kovarian dan koefesien korelasi disarankan untu merujuk ditinjauan pustaka, agar pembaca lebih memahami secara detail terkait konsep kemiripan dan ketidak miripan

Teknik klastering yang akan di gunakan pada kasus ini adalah k-means yang merupakan suatu metode yang cukup sederhana dalam pengelompokan data, algoritma k-menas klastering bias diringkas sebagai berikur:
 Tentukan jumlah cluster
- Alokasikan data ke dalam cluster secara random
- Hitung centroid/rata-rata dari data yang ada di masing-masing cluster Alokasikan masing-masing data ke centroid/rata-rata terdekat
-Kembali ke Step 3, apabila masih ada data yang berpindah cluster atau apabila perubahan nilai centroid, ada yang di atas nilai threshold yang ditentukan atau apabila perubahan nilai pada objective function yang digunakan di atas nilai threshold yang ditentukan.
Implementasi K-Means denga pemerograman R
a.       Pastikan pemerograman R sudah terinstall kalau belum silahkan download https://cran.r-project.org/bin/windows/base/
b.      Untuk mempermudah gunakan editor R-Studio silahkan download https://www.rstudio.com/products/rstudio/download/
c.       Lalu install package NbClust
d.      Data yang akan di pakai, saya menggunakan data : jika tidak memiliki data sebagai latihan pakai data ini Download  


    Saya asumsikan kelengkapan a sampai dengan d sudah ada di PC masing-masing, selanjutnya kita akan melakukan uji pada metode k-means.
1.      Bukalah program R atau R studio yang sebelumnya di install tadi,  berikut adalah tampilah utama R-Studio.

1.      Masukkan data yang akan di uji
Berikut adalah codingnya
kesehatanIbu<-read.csv(file.choose(), header = TRUE)

2.      Ambil hanya kolom yang akan di klaster
kes_ibu<-kesehatanIbu[,3:9]
kes_ibu
P1     P2    P3    P4    P5    P6     P7
1   90.54  81.83 80.11 79.53 66.65 18.00  49.34
2   92.60  86.32 94.15 84.29 27.38 59.86  38.57
3   94.79  82.70 82.11 81.06 76.63  9.94  56.11
4   88.65  80.37 79.54 82.72 57.58 20.15  28.76
5   98.89  93.39 91.08 91.06 49.22 42.71  84.54
6   90.91  87.59 86.30 86.38 36.30 52.06  61.74
7   97.00  91.02 87.77 90.92 58.30 32.76  69.72
8   95.78  89.62 84.15 83.53 60.32 25.85  62.81
9   96.15  90.04 88.02 84.37 91.14  0.00  85.35
10  94.09  88.61 85.34 81.67 89.23  0.12  58.74
11  99.92  96.01 94.64 94.79 96.22  0.97  82.76
12  96.84  89.13 87.33 90.48 80.08  7.46  81.62
13  99.60  93.11 92.37 92.49 95.02  4.15 101.05
14 100.00  92.81 94.54 91.59 99.46  0.50  89.69
15  96.19  88.66 91.15 84.94 91.32  1.14  91.48
16  93.76  84.53 89.60 61.36 78.08 14.31  81.91
17  98.59  94.15 93.85 95.01 97.17  0.49  77.18
18  83.67  76.24 74.05 92.42 67.27  7.47  91.00
19  85.93  61.78 69.11 74.18 67.69 10.25  52.12
20  94.79  85.99 82.03 85.08 53.39 30.85  62.81
21  95.63  87.25 88.01 81.32 46.31 43.81  50.12
22  98.31  82.65 87.27 79.79 55.78 33.59  86.37
23 102.25  89.42 85.84 80.87 85.87  6.08  84.08
24  99.79  87.39 90.98 90.22 79.72 16.44  59.26
25 102.91 102.91 79.96 80.21 74.73  8.30  82.12
26  87.93  76.68 74.91 70.42 62.40 14.49  51.58
27  99.12  91.22 89.49 88.93 81.96 10.82  73.98
28  96.14  81.41 83.98 79.01 53.38 32.43  49.82
29 100.40  89.32 84.27 85.21 89.25  0.90  73.04
30  94.16  78.21 80.60 78.89 80.74  7.01  54.01
31  55.93  47.87 43.39 62.51 32.83 14.07  31.39
32  80.28  70.19 68.60 80.41 53.87 13.47  50.69
33  75.67  39.74 29.13 32.46 35.79  8.95   9.61
34  79.13  49.67 38.61 49.12 12.97 50.18  29.54
 
3.      Klaster menjadi 2 kelompok
stats::kmeans(kes_ibu, 3)
hasilnya akan tampak
K-means clustering with 3 clusters of sizes 17, 14, 3
 
Cluster means:
        P1       P2       P3       P4       P5        P6       P7
1 97.19000 89.08588 87.30235 85.55941 85.52294  5.652941 77.84588
2 92.38429 82.57786 82.64357 82.04571 53.46929 30.734286 57.07071
3 70.24333 45.76000 37.04333 48.03000 27.19667 24.400000 23.51333
 
Clustering vector:
 [1] 2 2 1 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 2 2 2 2 1 1 1 2 1 2 1 1 3 2 3 3
 
Within cluster sum of squares by cluster:
[1]  7324.494 10242.742  2537.575
 (between_SS / total_SS =  68.5 %)
 
Available components:
 
[1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss" "betweenss"    "size"        
[8] "iter"         "ifault"  
 
4.      Membuat jarak dengan nama matrix_ibu
matrix_ibu<-stats::dist(kes_ibu, method = "euclidean")
matrix_ibu
 
5.      Membuat hierarchical agglomerative clustering:
6. Call:
7. stats::hclust(d = matrix_ibu, method = "ward.D")
8.  
9. Cluster method   : ward.D 
10.  Distance         : euclidean 
11.  Number of objects: 34 

6. Menampilkan dendogram

7.         Mengelompokkan hasil cluster, misal dlm 3 cluster:
grouping<-cutree(hclust_ibu, k=3)
grouping
[1] 1 1 1 1 1 1 1 1 2 1 2 2 2 2 2 2 
2 2 1 1 1 1 2 1 2 1 2 1 2 1 3 1 3 3
8. Menampilkan hasil dendogram dgn kotak merah untuk 3 cluster:
jika ada yang kurang jelas mohon di komentari atau 
bisa memalui email: laluallistio@gmail.com