Komputasi kesamaan kosinus membutuhkan pengukuran kosinus sudut (theta) antara dua vektor bukan nol dalam ruang produk dalam. Pengukuran ini menghasilkan skor kesamaan kosinus. Nilai kesamaan kosinus berkisar dari -1 hingga 1:
Pikirkan hal tersebut seperti membandingkan panah: jika menunjuk ke arah yang sama, artinya keduanya sangat mirip. Mereka yang berada di sudut kanan tidak terkait, dan panah yang menunjuk ke arah yang berlawanan berbeda.
Pendekatan bersudut ini menjadi dasar bagi banyak sistem machine learning (ML), pemrosesan bahasa alami (NLP), dan kecerdasan buatan (AI). Teknologi ini mengandalkan representasi data berbasis vektor, yang berarti data telah diubah menjadi bentuk numerik untuk menangkap makna dan kemiripannya dengan data lain.
Misalnya, chatbot dapat menggunakan teknik menanamkan kata untuk mengubah teks menjadi bentuk vektor, model pembelajaran mendalam untuk memahami niat dan kesamaan algoritme pencarian untuk mengambil respons yang paling relevan dari database. Kesamaan kosinus memungkinkan masing-masing langkah ini.
Tetap terinformasi tentang tren industri yang paling penting—dan menarik—tentang AI, otomatisasi, data, dan di luarnya dengan buletin Think. Lihat Pernyataan Privasi IBM®.
Baik itu memprediksi kata berikutnya dalam sebuah kalimat atau menyarankan tempat makan terdekat, banyak sistem yang membentuk kehidupan digital kita bergantung pada pengukuran kesamaan. Teknologi seperti mesin rekomendasi dan model bahasa besar (LLM) menggunakan kesamaan kosinus untuk mengidentifikasi konten mana yang paling relevan dan respons mana yang paling “masuk akal”.
Keputusan ini dibuat dengan menganalisis hubungan antara titik data dalam kumpulan data dimensi tinggi atau jarang. Dalam analisis teks klasik, dokumen sering diubah menjadi representasi numerik menggunakan teknik seperti istilah frekuensi terbalik dokumen frekuensi (tf-idf)—bentuk lanjutan dari bag-of-words (BoW). Sementara BoW menilai seberapa sering sebuah istilah muncul dalam sebuah dokumen, tf-idf menyesuaikan nilai tersebut berdasarkan seberapa umum atau jarangnya kata tersebut dalam kumpulan data yang lebih besar.
Sistem yang lebih canggih menggunakan neural networks untuk menghasilkan penyematan vektor—representasi numerik dari titik data yang mengekspresikan berbagai jenis data sebagai larik angka. Misalnya, kata-kata seperti "dokter" dan "perawat" dapat muncul berdekatan dalam ruang vektor, yang berarti model melihat keduanya saling berhubungan. Penyematan ini sering melalui langkah-langkah tambahan, seperti analisis komponen utama (PCA), untuk membuat perbandingan skala besar lebih cepat dan lebih efisien.
Dalam kedua pendekatan, kesamaan kosinus mengukur seberapa dekat vektor yang dihasilkan sejajar, membantu sistem mengidentifikasi pola dan hubungan di seluruh kumpulan data yang kompleks. Dalam NLP, AI dan ilmu data, kesamaan kosinus memainkan peran sentral dalam:
Mesin pencari menggunakan kesamaan kosinus untuk mencocokkan kueri pengguna dengan dokumen yang relevan, sehingga meningkatkan ketepatan dan kualitas peringkat.
Neural networks dan LLMs membandingkan penempatan vektor menggunakan kesamaan kosinus untuk mengevaluasi kedekatan semantik antara input.
Sistem rekomendasi menerapkan teknik pencarian kemiripan/kesamaan untuk menyarankan produk, media, atau konten yang sesuai dengan perilaku dan preferensi pengguna.
Kesamaan kosinus mendukung pemodelan topik dengan mengelompokkan dokumen dengan tema serupa. Distribusi topik ini biasanya dihasilkan menggunakan metode seperti Latent Dirichlet Allocation (LDA).
Di luar contoh penggunaan, kesamaan kosinus juga mendukung skenario apa pun di mana pola multi-dimensi harus dibandingkan dengan cepat dan akurat—seperti pengenalan gambar, deteksi penipuan, dan segmentasi pelanggan.
Pada intinya, kesamaan kosinus mengukur seberapa selaras dua vektor dengan menghitung kosinus sudut di antara keduanya.
Dalam aplikasi dunia nyata seperti membandingkan dokumen, data direpresentasikan sebagai vektor dalam ruang multi-dimensi. Setiap dimensi dapat mewakili kata, atribut, atau tindakan tertentu, dan nilai dalam dimensi tersebut mencerminkan seberapa menonjol atau pentingnya item tersebut.
Untuk menghitung kesamaan kosinus:
Rumusnya dapat direpresentasikan sebagai:
Kesamaan kosinus = (A · B) / (||A|| × ||B||)
Di mana:
Skor yang dihasilkan berkisar dari -1 hingga 1.
Untuk mengilustrasikan lebih lanjut, bayangkan dua kata: "raja" dan "ratu".
Keduanya digunakan dalam konteks yang sama. Ketika diproses oleh LLM, setiap kata diterjemahkan ke dalam vektor penyematan yang menangkap makna semantik dari sebuah istilah berdasarkan penggunaannya di jutaan kalimat. Karena "raja" dan "ratu" sering muncul di dekat kata-kata seperti "kerajaan," "takhta" dan "monarki," menanamkan yang dihasilkan akan mengarah ke arah yang hampir sama.
Sekarang pertimbangkan kata ketiga, "apel". Meskipun mungkin muncul di beberapa dokumen yang sama, kata ini lebih sering dikaitkan dengan istilah seperti "buah", "kebun", atau "segar". Vektornya menunjuk ke arah yang hampir berlawanan, menghasilkan kesamaan kosinus yang lebih rendah. Ketika diplot pada grafik, panah "raja" dan "ratu" akan bergerak hampir berdampingan, sementara panah "apel" akan melesat dengan sudut yang mencolok.
Untuk mengoptimalkan kinerja dan mendukung pengambilan kecocokan yang relevan dengan lebih cepat, banyak organisasi menyimpan penyematan ini dalam database vektor khusus—alat yang dirancang untuk mengindeks vektor berdimensi tinggi untuk meningkatkan pencarian dan mengembalikan hasil yang paling mirip.
Kesamaan kosinus hanyalah salah satu pendekatan dalam ekosistem metrik kesamaan yang lebih luas. Setiap metrik dirancang untuk menilai kemiripan dengan cara yang berbeda dan lebih cocok untuk jenis data tertentu dalam ruang multi-dimensi. Contohnya antara lain:
Metrik ini menghitung jarak garis lurus antara dua titik dalam ruang vektor. Ini intuitif dan umum digunakan dalam analisis data, terutama untuk membandingkan data numerik atau fitur fisik. Namun, dalam ruang dimensi tinggi di mana vektor cenderung berkumpul dalam jarak, jarak Euclidean menjadi kurang dapat diandalkan untuk tugas-tugas seperti klaster atau pengambilan informasi.
Kesamaan Jaccard mengukur tumpang tindih antara dua kumpulan data dengan membagi ukuran persimpangan dengan ukuran gabungan. Ini biasanya diterapkan pada kumpulan data yang melibatkan data kategorikal atau biner—seperti tag, klik, atau tampilan produk—dan sangat berguna untuk sistem rekomendasi. Sementara Jaccard berfokus pada ada atau tidaknya, hal tersebut tidak memperhitungkan frekuensi atau besarnya.
Hasil kali titik dari vektor A dan B mencerminkan seberapa dekat mereka menunjuk ke arah yang sama, tetapi tanpa menormalkan besaran. Faktor ini membuatnya peka untuk menskalakan: vektor dengan nilai yang besar mungkin tampak lebih mirip, meskipun arahnya berbeda.
Kesamaan kosinus meningkatkan metrik ini dengan membagi hasil kali titik vektor dengan hasil kali besaran vektor (rumus kesamaan kosinus). Oleh karena itu, kesamaan kosinus lebih stabil untuk membandingkan vektor bukan nol dengan panjang yang bervariasi, terutama dalam kumpulan data berdimensi tinggi.
Dalam praktiknya, organisasi sering menggunakan ukuran kesamaan kosinus bersama metrik lain tergantung pada struktur kumpulan data dan jenis ketidaksamaan yang ingin mereka hindari.
Misalnya, pencarian kesamaan dalam aplikasi NLP atau LLM sering menggabungkan jarak kosinus dengan model menanamkan yang dilatih pada algoritme pembelajaran mendalam. Penghitungan kesamaan kosinus juga diintegrasikan ke dalam alat sumber terbuka seperti Scikit-learn, TensorFlow, dan PyTorch, sehingga memudahkan para ilmuwan data untuk menghitung kesamaan kosinus di seluruh kumpulan data skala besar.
Mengingat perannya di berbagai sistem, kesamaan kosinus menawarkan beberapa keunggulan dibandingkan metrik kesamaan tradisional:
Terlepas dari kelebihannya, kesamaan kosinus bukan tidak memiliki batasan, termasuk:
Untuk mendapatkan nilai maksimal dari kesamaan kosinus, organisasi dapat mempertimbangkan hal-hal berikut ini:
Organisasi dapat menormalkan vektor sebelum perhitungan untuk memastikan konsistensi skala dan hasil yang valid, terutama ketika menggunakan input dimensi tinggi.
Bisnis harus membersihkan kumpulan data untuk menghilangkan atau menandai vektor nol, karena akan menyebabkan kesalahan “bagi dengan nol” selama perhitungan kesamaan kosinus.
Organisasi dapat melengkapi kemiripan kosinus dengan metrik tambahan seperti kesamaan Jaccard atau jarak Euclidean ketika beberapa dimensi kesamaan diperlukan.
Sebelum penerapan, bisnis harus mengevaluasi kinerja kesamaan kosinus di lingkungan yang mencerminkan kondisi dunia nyata, terutama ketika digunakan dalam sistem real-time seperti antarmuka pemrograman aplikasi (API).
Organisasi dapat memanfaatkan pustaka sumber terbuka yang sudah matang untuk melakukan penghitungan kesamaan kosinus secara efisien dalam skala besar. Sebagai contoh, Scikit-learn menyediakan fungsi kesamaan kosinus yang siap pakai melalui jalur modul Python: sklearn.metrik.pairwise.
Atau, rumus dapat dikodekan langsung di Python menggunakan NumPy:
"cosine_similarity = np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))"
Seperti panah, kesamaan kosinus membantu organisasi menyelaraskan arah. Baik itu mencocokkan hasil pencarian atau menginformasikan pengambilan keputusan berbasis data, kesamaan kosinus dapat memberikan insight yang kuat dan membantu mempersonalisasi pengalaman di berbagai contoh penggunaan.
Dapatkan jawaban yang dapat Anda percayai dengan agen AI sadar konteks yang didukung oleh data yang diatur dan terhubung—tanpa replatform atau penguncian.
Rancang strategi data yang menghilangkan silo data, mengurangi kompleksitas, dan meningkatkan kualitas data untuk pengalaman pelanggan dan karyawan yang luar biasa.
Skalakan AI dengan sukses dengan menyiapkan strategi, data, keamanan, dan tata kelola yang tepat.