Menghitung Tingkat Kemiripan dengan Cosine Similarity

By | January 15, 2021
Print Friendly, PDF & Email
6,471 Views

Sinopsis

Salah satu cara untuk menghitung jarak/tingkat kemiripan selain eucleid distance yaitu cosine similarity. Cosine similarity adalah metriks yang digunakan untuk menentukan seberapa mirip 2 data. Secara matematis, ia mengukur sudut cos antara dua vektor yang diproyeksikan dalam ruang multi-dimensi.

Rumus umumnya Cosine Similarity

Dengan ∙ adalah operasi dot array, agar mudah, penulis berikan sebuah contoh sederhana untuk menghitung jarak data a dan b seperti berikut Bila kalian menggunakan matlab

clc;clear all;close all;
a = [1,2,3];
b = [1,1,4];
 
pembilang = dot(a,b)
penyebut = norm(a)*norm(b)
hasil = pembilang/penyebut

hasil

a =
     1     2     3
b =
     1     1     4
pembilang =
    15
penyebut =
   15.8745
hasil =
    0.9449

Sehingga hasil keluaran dari cosine similarity berupa array yang berisi angka hasil nilai cosine similarity, yang mempunyai nilai interpretasi cos(θ) = [−1, 1]. Semakin besar nilai yang dihasilkan atau mendekati angka satu, maka vektor tersebut mempunyai kemiripan, dan sebaliknya. Bila kamu menggunakan python+numpy, gunakan kode berikut

import numpy as np

# vectors
a = np.array([1,2,3])
b = np.array([1,1,4])
 
# manually compute cosine similarity
dot = np.dot(a, b)
norma = np.linalg.norm(a)
normb = np.linalg.norm(b)
cos = dot / (norma * normb)

Atau menggunakan library sklearn seperti berikut

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
 
# vectors
a = np.array([1,2,3])
b = np.array([1,1,4])
 
# use library, operates on sets of vectors
aa = a.reshape(1,3)
ba = b.reshape(1,3)
cos_lib = cosine_similarity(aa, ba)

Referensi:

https://www.oreilly.com/library/view/statistics-for-machine/9781788295758/eb9cd609-e44a-40a2-9c3a-f16fc4f5289a.xhtml

Leave a Reply