Ukuran Kemiripan dan Ketidakmiripan Antar Data – Mengukur kemiripan dan ketidakmiripan antar data banyak digunakan untuk analisis data, salah satunya adalam sistem rekomendasi. Nilai Kemiripan (Similarity) umumnya berada pada rentang 0 (no similarity) dan 1 (complete similarity) dan Bernilai lebih tinggi jika obyek semakin mirip. Sedangkan Ketidakmiripan (Dissimilarity) umumnya berada pada rentang 0 (obyek mirip) dan ~ (obyek berbeda) bernilai lebih rendah jika data semakin tidak mirip.
Data
Contents
Untuk mengukur data tersebut mirip atau tidak? kita harus membedah terlebih mengenai
- Data: kumpulan obyek beserta atributnya.
- Atribut (fitur, variabel, atau field): properti atau karakteristik yang melekat pada suatu obyek.
- Kumpulan sejumlah atribut mendeskripsikan suatu obyek (entitas atau record).
Lebih jelasnya kalian bisa melihat tabel berikut
Tipe Atribut
Tipe atribut dibagi menjadi 4 yaitu
- Nominal: Data kualitatif yang tidak memiliki urutan. Contoh: warna rambut, agama, nama, kode pos
- Ordinal: Data kualitatif yang dapat diurutkan. Contoh: rasa makanan dalam skala 1-10, peringkat di kelas, tinggi badan dalam {tinggi, sedang,rendah}, nomor rumah.
- Interval: Data kuantitatif (ukuran) dimana perbedaan nilai antara dua data sangat berarti. Contoh: tanggal di kalender, temperatur dalam Celcius atau Fahrenheit.
- Ratio: Data kuantitatif dimana perbedaan nilai data dan perbandingannya sangat berarti. Contoh: temperatur dalam Kelvin (2K = 2*1K), panjang suatu benda, hasil perhitungan
Metode Pengukuran Jarak
Untuk metode pengukuran jarak sebagai berikut
Contoh kasus mengukur dissimiliarity
Sekarang kita akan mencoba menghitung dissimiliarity menggunakan R dengan beragam jenis tipe atribut
Dataset Dissimialirity
Kalian bisa perhatikan, saya sengaja mengisi nilai record 1 dan 8 sama, sehingga nanti dipastikan nilai nya akan rendah karena mirip untuk nilainya tinggi karena tidak mirip. Pada contoh diatas, untuk mengukur dissimilarity perlu mengubah kolom berikut menjadi kategorikal
- jenis_kelamin
- status
- punya_anak
Kita akan baca saja
library(openxlsx)
dat = openxlsx::read.xlsx(‘dataset dissimialirity.xlsx’)
lanjut dengan mengubah kolom ke kategorikal
dat2 = dat[,2:7] #ambil kolom ke 2 sampai 7
dat2$jenis_kelamin = as.factor(dat2$jenis_kelamin)
dat2$status = as.factor(dat2$status)
dat2$punya_anak = as.factor(dat2$punya_anak)
Kita butuh package dari https://www.rdocumentation.org/packages/cluster/versions/2.1.2/topics/daisy untuk menghitung dissimiliarity
library(cluster)
gower.dissimilarity.mtrx <- daisy(dat2, metric = c(“gower”))
hasil = as.matrix(gower.dissimilarity.mtrx)
hasilnya yaitu
> gower.dissimilarity.mtrx Dissimilarities : 1 2 3 4 5 6 7 2 0.3590238064 3 0.5040731830 0.5297636560 4 0.3178741800 0.3138768991 0.4886140296 5 0.3353947777 0.5236290287 0.6728012940 0.4824794023 6 0.5262298473 0.3338727077 0.8636363636 0.6477496067 0.1908350697 7 0.5969785634 0.4560023698 0.7404279529 0.7481860768 0.4323733411 0.2898750774 8 0.0005393743 0.3595631807 0.5035338086 0.3184135543 0.3359341520 0.5267692217 0.5964391891 Metric : mixed ; Types = I, N, N, I, N, I Number of objects : 8