Catatan class PHP sederhana untuk menghitung cosine similarity yang diperuntukan untuk sistem rekomendasi guna mencari tahu seberapa besar kemiripan user A, dan user B berdasarkan rating pada produk yang mereka berikan.
Implementasi class disini dibuat berdasarkan video youtube: https://www.youtube.com/watch?v=BDJmJnrlaO8
Pada video youtube tersebut, data yang digunakan adalah seperti dibawah ini:
M1 | M2 | M3 | M4 | M5 | M6 | |
---|---|---|---|---|---|---|
User A | 3 | 5 | ||||
User B | 2 | 3 | 3 | 4 | ||
User C | 5 | 4 | 4 | 5 | ||
User D | 5 | 5 | 2 | 5 | 4 |
Jika diterapkan kedalam array $ratings
, maka akan jadi seperti ini:
$ratings = [
'User A' => [3, null, 5, null, null, null],
'User B' => [2, 3, null, 3, 4, null],
'User C' => [5, 4, 4, null, 5, null],
'User D' => [5, 5, 2, null, 5, 4],
];
null berarti user belum melakukan rating terhadap film tersebut
Dengan data $ratings
diatas, jika kita ingin mencari tahu berapa besar tingkat
kesamaan User A dan User B, serta User A dan User C.
Kita dapat menggunakan kode seperti dibawah ini:
$sim_ab = CosineSimilarity::calc($ratings['User A'], $ratings['User B']); // 0.1669244652224
$sim_ac = CosineSimilarity::calc($ratings['User A'], $ratings['User C']); // 0.66285976669375
bagaimana jika ingin menambahkan string di dalam array tersebut dan melakukan perbandingan
? Terimakasih