Jumat, 18 Oktober 2019

Cara Menghitung Cosine Similarity


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


Kode:
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


Kode: 
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

Kode:
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)


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

Tidak ada komentar: