DATA MINING
PENERAPAN METODE K-MEAN CLUSTERING UNTUK PENGELOMPOKKAN MAHASISWA UNIVERSITAS BRAWIJAYA TAHUN 2012
Disusun oleh:
Kelompok 8
Gusnia Syukriyawati 115090607111036
Ulya' Darojatun Nisa' 115090600111016
Geby Fidana 105060804111002
Reysia Dwi Angga Nilasari 105090604111002
Dika Risky 105060800111031
PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
TAHUN PELAJARAN 2012/2013
DASAR TEORI
Definisi clustering
Clustering juga dikenal sebagai unsupervised learning yang membagi data menjadi kelompok-kelompok atau clusters berdasarkan suatu kemiripan atribut-atribut diantara data tersebut. Clustering atau clusterisasi merupakan salah satu alat bantu pada data mining yang bertujuan mengelompokkan obyek-obyek ke dalam cluster-cluster. Cluster adalah sekelompok atau sekumpulan obyek-obyek data yang similar satu sama lain dalam cluster yang sama dan dissimilar terhadap obyek-obyek yang berbeda cluster.
Obyek akan dikelompokkan ke dalam satu atau lebih cluster sehingga obyek-obyek yang berada dalam satu cluster akan mempunyai kesamaan yang tinggi antara satu dengan lainnya. Obyek-obyek dikelompokkan berdasarkan prinsip memaksimalkan kesamaan obyek pada cluster yang sama dan memaksimalkan ketidaksamaan pada cluster yang berbeda. Kesamaan obyek biasanya diperoleh dari nilai-nilai atribut yang menjelaskan obyek data, sedangkan obyek-obyek data biasanya direpresentasikan sebagai sebuah titik dalam ruang multidimensi.
Karakteristik tiap cluster tidak ditentukan sebelumnya, melainkan tercermin dari kemiripan data yang terkelompok di dalamnya. Beberapa teknik clustering dalam data mining meliputi : skalabilitas, kemampuan untuk menangani tipe atribut yang berbeda, menangani data yang mengandung noise, mampu menangani dimensionalitas yang tinggi, dan dapat diterjemahkan dengan mudah.
Metode Clustering
Secara umum, terdapat beberapa metode clustering. Masing-masing metode bergantung pada tipe data dan tujuan clustering tersebut. Dua metode clustering yang kita ketahui diantaranya:
1. Hierarchical clustering
- Mengelompokkan data ke dalam pohon cluster (dendogram) dimana objek yang mirip akan diletakkan pada hirarki yang berdekatan dan objek yang tidak mirip diletakkan pada hirarki yang berjauhan.
- Terdapat 2 teknik dalam pembentukan pohon cluster :
a. Agglomerative
Dengan strategi bottom-up, dimulai dengan menempatkan tiap objek pada cluster masing-masing, kemudian menggabungkan cluster-cluster yang atomik tersebut menjadi cluster yang lebih besar, hingga semua objek berada dalam 1 cluster atau sampai kondisi akhir telah terpenuhi.
b. Divisive
Dengan strategi top-down, dimulai dengan menempatkan seluruh objek pada 1 cluster, kemudian membaginya menjadi cluster-cluster yang lebih kecil hingga tiap objek membentuk sebuah cluster atau sampai kondisi akhir terpenuhi.
Gambar 2.1 Clustering hierarchy
Partitional clustering
- Mengelompokkan objek dengan membagi data ke dalam cluster-cluster yang ada, sejumlah k partisi. Dimana k merupakan banyaknya cluster yang berasal dari inputan user.
Algoritma Euclidean
Algoritma Euclidean adalah salah satu metode yang mangkus dalam mencari Pembagi Bersama Terbesar (greates), disingkat menjadi PBB. Algoritma ini sudah dikenal sejak berabad-abad yang lalu. Secara formal algoritma Euclidean dirumuskan sebagai berikut.
Misalkan m dan n adalah bilangan bulat tak negatif dengan m n. Misalkan r0 = m dan r1=n , lakukan secara berturut –turut pembagian seperti dibawah ini.
Fungsi Jarak dalam pengukuran proximity yang paling umum digunakan,sedikitnya untuk easio skala adalah matrix Minkowski, yang mana adalah suatu generalisasi jaraj antara titik do dalamEuclidean Space.
Fungsi Euclidean Distance :
Jarak Euclidean dapat dianggap sebagai jarak yang paling pendek antar dua poin-poin,dan pada dsarnya sama halnya dengan persamaan Pythagoras ketika digunakan di dalam 2 dimensi. Secara matematis dapat dituliskan di dalam persamaan berikut :
Ketika menggunakan fungsi jarak Euclidean untuk membandingkan jarak, tidak diperlukan untuk mengkalkulasi akar 2 sebab jarak selalu merupakan angka angka positif.
Jika sebagian dari suatu atribut obyek diukur dengan skala berbeda, maka ketika menggunakan fungsi jarak Euclidean , atribut dengan skala yang lebih besar boleh meliputi atribut yang terukur pada skala yang lebih kecil. Untuk mencegah masalah ini , nilai-nilai atribut dinormalisasi untuk terletak diantara 0 dan 1. Fungsi jarak lain mungkin lebih sesuai untuk beberapa data. Lebih jelasnya berikut di bawah ini ditampilkan gambar representasi dari jarak terdekat dari 2 titik.
Gambar fungsi Euclidean
Suatu komponen penting pada algoritma cluster adalah mengukur jarak antara poin-poin data. Jika komponen dari data adalah semua termasuk dalam unit yang sama, mungkin jarak Euclidean yang sederhana cukup sukses mengelompokkan data serupa. Sehingga jarak Euclidean kadang-kadang dapat salah. Di samping kedua-duanya pengukuran diambil di dalam unit yang sama,suatu keputusan harus dibuat berkaitan dengan skala. Skala yangberbeda dapat menyebabkan perbedaan clustering.
Algoritma K-Means
Algoritma K-means adalah metode clustering berbasis jarak yang membagi data kedalam sejumlah cluster dan algoritma ini hanya bekerja pada atribut numerik. Pada dasarnya penggunaan algoritma dalam melakukan proses clustering tergantung dari data yang ada dan konklusi yang ingin dicapai. Untuk itu digunakan Algoritma K-means yang di dalamnya memuat aturan sebagai berikut :
Jumlah cluster pada diinputkan.
Hanya memiliki atribut bertipe numerik.
Jumlah atribut sedikit(<100)
Algoritma K-means merupakan metode nonheirarchial yang pada awalnya mengambil sebagian dari banyaknya komponen dari populasi untuk dijadikan pusat cluster awal. Algoritma K-means juga sebagai metode-metode pengalokasian ulang data ke dalam masing-masing cluster, beberapa permasalahan yang harus diperhitungkan dalam penerapan algoritma K-means dalam pengelompokan data, serta K-means untuk data yang mempunyai bentuk khusus. Algoritma K-means pada dasarnya melakukan 2 proses yakni proses pendeteksian lokasi pusat tiap cluster dan proses pencarian anggota dari tiap-tiap cluster.
Algoritma K-Means merupakan algoritma yang membutuhkan parameter input sebanyak k dan membagi sekumpulan n objek kedalam k cluster sehingga tingkat kemiripan antar anggota dalam satu cluster tinggi sedangkan tingkat kemiripan dengan anggota pada cluster lain sangat rendah. Kemiripan anggota terhadap cluster diukur dengan kedekatan objek terhadap nilai mean pada cluster atau dapat disebut sebagai centroid cluster atau pusat massa (Widyawati, 2010). Rumus pengukuran jarak menurut (Santosa, 2007) yaitu:
Adapun rumus perhitungan jarak lainnya didefinisikan sebagai berikut :
Keterangan :
d = titik dokumen
x = data record
y = data centroid
Tahapan algoritma K-Means.
Widyawati (2010), menyatakan : Proses algoritma K-Means sebagai berikut :
Pilih secara acak objek sebanyak k, objek-objek tersebut akan direpresentasikan sebagai mean pada cluster.
Untuk setiap objek dimasukan kedalam cluster yang tingkat kemiripan objek terhadap cluster tersebut tinggi. Tingkat kemiripan ditentukan dengan jarak objek terhadap mean atau centroid cluster tersebut.
Hitung nilai centroid yang baru pada masing-masing cluster.
Proses tersebut diulang hingga anggota pada kumpulan cluster tersebut tidak berubah.
Sedangkan menurut Adiningsih (2007) tahap penyelesaian algoritma K-Means adalah sebagai berikut :
Menentukan K buah titik yang merepresentasikan obyek pada setiap cluster (centroid awal).
Menetapkan setiap obyek pada cluster dengan posisi centroid terdekat.
Jika semua obyek sudah dikelompokkan maka dilakukan perhitungan ulang dalam menentukan centroid yang baru.
Ulangi langkah ke-2 dan ke-3 sampai centroid tidak berubah. Kurniawan dkk (2010) menyatakan : Langkah-langkah dari algoritma K-Means yaitu :
Berikut penjelasan dari gambar 2.3, dengan algoritma K-means dilakukan cara berikut hingga ditemukan hasil iterasi yang stabil :
Menentukan data centroid, pada sistem ini, ditentukan bahwa centroid pertama adalah n data pertama dari data-data yang akan di-cluster.
Menghitung jarak antara centroid dengan masing-masing data.
Mengelompokkan data berdasarkan jarak minimum.
Jika penempatan data sudah sama dengan sebelumnya, maka stop. Jika tidak, kembali ke cara yang ke-2.
CONTOH KASUS
Universitas Brawijaya merupakan salah satu universitas negeri terkemuka di Indonesia yang saat ini memiliki 52.376 orang mahasiswa aktif dari berbagai strata yang tersebar di berbagai fakultas. Data ini didapatkan dari http://ub.ac.id/tentang/profil-universitas/mahasiswa.
Sebaran mahasiswa UB dapat dilihat pada tabel berikut.
Mahasiswa UB Tahun 2012
No
Fakultas
D3
S1
S2
S3
SP1
Jumlah
1
Fakultas Hukum
2.386
302
132
2.820
2
Fakultas Ekonomi dan Bisnis
4.099
469
255
4.823
3
Fakultas Ilmu Administrasi
5.843
265
119
6.227
4
Fakultas Pertanian
4.140
168
219
4.527
5
Fakultas Peternakan
1.692
35
107
1.834
6
Fakultas Teknik
5.174
391
132
5.697
7
Fakultas Kedokteran
3.828
249
51
482
4.610
8
Fakultas Perikanan dan Ilmu Kelautan
3.745
46
15
3.806
9
Fakultas MIPA
2.240
212
19
2.471
10
Fakultas Teknologi Pertanian
3.040
68
0
3.108
11
Fakultas Ilmu Sosial dan Ilmu Politik
4.664
48
3
4.715
12
Fakultas Ilmu Budaya
3.144
18
0
3.162
13
Program Kedokteran Hewan
676
0
0
676
14
Program Teknologi Informasi dan Ilmu Komputer
2.562
0
0
2.562
15
Program Vokasi
1.222
1.222
16
Program Pascasarjana
45
71
116
Total
1.222
47.233
2.316
1.123
482
52.376
Dari data atas, data yang akan dikelompokkan terdiri dari 14 objek yang mempunyai 3 fitur. Objek disini merupakan fakultas yang ada di Universitas Brawijaya, sedangkan untuk fiturnya merupakan banyaknya mahasiswa S1, S2, dan S3 yang ada di Universitas Brawijaya. Berikut lampiran datanya :
No
Fakultas
S1
S2
S3
1
Fakultas Hukum
2.386
302
132
2
Fakultas Ekonomi dan Bisnis
4.099
469
255
3
Fakultas Ilmu Administrasi
5.843
265
119
4
Fakultas Pertanian
4.140
168
219
5
Fakultas Peternakan
1.692
35
107
6
Fakultas Teknik
5.174
391
132
7
Fakultas Kedokteran
3.828
249
51
8
Fakultas Perikanan dan Ilmu Kelautan
3.745
46
15
9
Fakultas MIPA
2.240
212
19
10
Fakultas Teknologi Pertanian
3.040
68
0
11
Fakultas Ilmu Sosial dan Ilmu Politik
4.664
48
3
12
Fakultas Ilmu Budaya
3.144
18
0
13
Program Kedokteran Hewan
676
0
0
14
Program Teknologi Informasi dan Ilmu Komputer
2.562
0
0
Langkah – langkah Kmeans Clustering :
Langkah pertama dihitung rata-rata dari data fakultas, kemudian dilakukan proses penyortingan/ pengurutan data dari data yang paling besar sampai data yang terkecil.
Tabel data fakultas di UB
Tabel data fakultas di UB setelah disorting
Langkah selanjutnya adalah menentukan titik pusat klaster yaitu C1 dan C2 dengan cara random, disini kami mengambil data yang mempunyai rata-ratanya paling besar (FIA) dan data yang rata-ratanya ditengah (FIB) maka akan ditemukan pusat awal klaster sebagai berikut.
1.3 Tabel pusat awal kluster
Penentuan jarak antara pusat ke klaster menggunakan Euclidian Distance yang rumusnya:
Penentuan fakultas yang masuk kedalam klaster 1 atau 2 berdasarkan nilai Euclidian Distance yang lebih kecil. Apabila nilai C1
1.4 Tabel jarak pusat ke klaster (iterasi 0)
Source code :
Kemudian kita tentukan lagi pusat klaster dari data yang baru, caranya dengan menjumlahkan nilai semua fakultas yang merupakan anggota dari klaster dan dibagi total jumlah anggota klaster. Misalnya:
Fakultas yang masuk kedalam C1(fitur S1): FIA, FT, FISIP
(5843 + 5174 + 4664) / 3 = 5227
Fakultas yang masuk kedalam C2(fitur S1): FH, FEB, FP, FAPET, FK, FPIK, FMIPA, FTP, FIB, PKH, PTIIK
(2386 + 4099 + 4140 + 1692 + 3828 + 3745 + 2240 + 3040 + 3144 + 676 + 2562) / 11 = 2868.364
Perhitungan ini dilakukan untuk ketiga fitur (S1, S2, S3)
1.5 Tabel pusat klaster baru (iterasi 0)
Ternyata nilai centroid/titik pusat berubah, maka dilakukan iterasi lagi dengan menggunakan cara yang sama yaitu Eucludian Distance. Akan dihasilkan data seperti berikut :
1.6 Tabel jarak pusat ke klaster (Iterasi 1)
Dibandingkan antara klaster baru dan klaster lama(dari Iterasi ke-0) ternyata terdapat data yang berubah klaster. Kemudian dihitung pusat centroidnya menggunakan cara yang sama seperti pada iterasi ke-0.
1.7 Tabel pusat klaster baru (Iterasi 1)
Ternyata nilai centroid/titik pusat berubah, maka dilakukan iterasi lagi dengan menggunakan cara yang sama yaitu Eucludian Distance. Akan dihasilkan data seperti berikut :
1.8 Tabel jarak pusat ke klaster (Iterasi 2)
Dibandingkan antara klaster baru dan klaster lama(dari Iterasi ke-1) ternyata terdapat data yang berubah klaster. Kemudian dihitung pusat centroidnya menggunakan cara yang sama seperti pada iterasi ke-0 dan ke-1.
1.9 Tabel pusat klaster baru (Iterasi 2)
Ternyata nilai centroid/titik pusat berubah, maka dilakukan iterasi lagi dengan menggunakan cara yang sama yaitu Eucludian Distance. Akan dihasilkan data seperti berikut :
1.10 Tabel jarak pusat ke klaster (Iterasi 3)
Setelah dibandingkan antara klaster baru dan klaster lama(dari Iterasi ke-2) ternyata tidak ada data yang berubah klaster. Kemudian dihitung pusat centroidnya menggunakan cara yang sama seperti pada iterasi ke-0 dan ke-1.
1.11 Tabel pusat klaster baru (Iterasi 3)
Nilai centroid/titik pusat tidak berubah(nilai sama seperti pada iterasi ke 2), maka proses perhitungan dihentikan dan dapat ditarik kesimpulan bahwa:
Klaster 1
Fakultas yang jumlah mahasiswa baru 2012 nya KURANG dari 3500.
Klaster 2
Fakultas yang jumlah mahasiswa baru 2012 nya LEBIH dari 3500.
1.12 Hasil pengelompokan fakultas berdasarkan klaster
Source code :
Kmean.java
package data.mining;
public class Kmean {
//array untuk menyimpan data
public String[] Fakultas;
public double[] s1,s2,s3;
public int k;
public int[][] cluster;
public double[] centroidS1,centroidS2,centroidS3;
public double[] centroidS1_temp, centroidS2_temp, centroidS3_temp;
public double[][] euc_dist;
public int[] count;
//konstruktor kelas
Public Kmean(){
Fakultas=new String[14];//inisialisasi array
s1=new double[14];
s2=new double[14];
s3=new double[14];
for (int i = 0; i < k; i++) {//inisialisasi nilai
centroidS1_temp[i]=0;
centroidS2_temp[i]=0;
centroidS3_temp[i]=0;
}
}
//method untuk inisialisasi array berdasarkan nilai k yang diambil
public void init(){
cluster=new int[k][14];
euc_dist=new double[14][k];
centroidS1=new double[k];
centroidS2=new double[k];
centroidS3=new double[k];
count=new int[k];
centroidS1_temp=new double[k];
centroidS2_temp=new double[k];
centroidS3_temp=new double[k];
}
//method untuk melakukan pengurutan data berdasarkan rata2 S1, S2, dan S3
public void SortData(){
double[] rata2=new double[14];//menyimpan rata2 data
for(int i=0;i
rata2[i]=(s1[i]+s2[i]+s3[i])/3;
//pengurutan dengan menggunakan bubblesort
for(int i=0;i
for(int j=0;j
if(rata2[i]>rata2[j]){
String temp1;
double temp2,temp3,temp4,temp5;
temp1=Fakultas[i];
temp2=s1[i];
temp3=s2[i];
temp4=s3[i];
temp5=rata2[i];
Fakultas[i]=Fakultas[j];
Fakultas[j]=temp1;
s1[i]=s1[j];
s1[j]=temp2;
s2[i]=s2[j];
s2[j]=temp3;
s3[i]=s3[j];
s3[j]=temp4;
rata2[i]=rata2[j];
rata2[j]=temp5;
}
}
}
}
//method untuk mencari nilai centroid awal
public void CentroidAwal(){
int index = Fakultas.length/k;//mencari titik awal cluster
int count_temp=-1; //variabel untuk menentukan cluster
for(int i=0;i
//nilai centroid awal diambil berdasarkan data awal tiap cluster
if(i%index==0){
count_temp++;
centroidS1[count_temp]=s1[i];
centroidS2[count_temp]=s2[i];
centroidS3[count_temp]=s3[i];
}
}
}
//method untuk melakukan perhitungan jarak Euclidean Distance
public void EuclideanDistance(){
for(int i=0;i
for(int j=0;j
euc_dist[j][i]=Math.sqrt(Math.pow((s1[j]-centroidS1[i]),2)+Math.pow((s2[j]-centroidS2[i]),2)+Math.pow((s3[j]-centroidS3[i]),2));
}
}
}
//method untuk melakukan clustering berdasarkan jarak tiap cluster
public void Clustering(){
cluster=new int[k][12];
count=new int[k];
double min_temp=99999; //variabel untuk mencari jarak terkecil
int c = 0; //set data cluster awal
for(int i=0;i
for(int j=0;j
if(min_temp>euc_dist[i][j]){
min_temp=euc_dist[i][j];
c=j;
}
}
cluster[c][count[c]++]=i;
min_temp=99999;
c=0;
}
}
//method untuk mencari nilai centroid setelah dimulai iterasi
public void Centroid(){
double sum_s1=0,sum_s2=0,sum_s3=0;
for(int i=0;i
for(int j=0;j
sum_s1+=s1[cluster[i][j]];
sum_s2+=s2[cluster[i][j]];
sum_s3+=s3[cluster[i][j]];
}
centroidS1[i]=sum_s1/count[i];
centroidS2[i]=sum_s2/count[i];
centroidS3[i]=sum_s3/count[i];
sum_s1=0;
sum_s2=0;
sum_s3=0;
}
}
//method untuk melakukan pengelompokan dari data testing yang diinputkan oleh pengguna
public int DataTesting(double s1_t,double s2_t,double s3_t){
double dist[]=new double[k];
double min_temp=9999;
int clus=0;
for(int i=0;i
dist[i]=Math.sqrt(Math.pow((s1_t-centroidS1[i]),2) +Math.pow((s2_t-centroidS2[i]),2)+Math.pow((s3_t-centroidS3[i]),2));
if(min_temp>dist[i]){
min_temp=dist[i];
clus=i;
}
}
return clus;
}
String DataTesting(double parseDouble, double parseDouble0) {
throw new UnsupportedOperationException("Kesalahan memasukkan data");
}
}
Screenshot :
DAFTAR PUSTAKA
Agusta, Y. (2007), "K-means-Penerapan, Permasalahan dan Metode Terkait", Jurnal Sistem dan Informatika, Vol. 3, hal. 47-60.
http://thesis.binus.ac.id/Asli/Bab2/2009-1-00477-TIAS%20Bab%202.pdf
(Online: 5 November 2013).