Apa itu kesamaan kosinus?

Pandangan sudut tinggi pejalan kaki di Paternoster Square, London, Inggris

Penyusun

Tom Krantz

Staff Writer

IBM Think

Alexandra Jonker

Staff Editor

IBM Think

Apa yang dimaksud dengan kesamaan kosinus?

Kesamaan kosinus adalah metrik kesamaan yang banyak digunakan yang menentukan seberapa mirip dua titik data didasarkan pada arah yang mereka tunjuk daripada panjang atau ukurannya. Ini sangat efektif di ruang dimensi tinggi di mana metrik berbasis jarak tradisional dapat bermasalah.

 

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:

  • Skor kemiripan kosinus 1 mengindikasikan bahwa vektor menunjuk ke arah yang sama persis.
  • Skor kemiripan kosinus 0 menunjukkan bahwa vektor-vektor tersebut ortogonal, yang berarti tidak memiliki kemiripan arah.
  • Skor kesamaan kosinus -1 menunjukkan bahwa vektor menunjuk ke arah yang berlawanan.

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.

Mengapa kesamaan kosinus begitu penting?

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:

Peringkat relevansi

Mesin pencari menggunakan kesamaan kosinus untuk mencocokkan kueri pengguna dengan dokumen yang relevan, sehingga meningkatkan ketepatan dan kualitas peringkat.

Perbandingan semantik

Neural networks dan LLMs membandingkan penempatan vektor menggunakan kesamaan kosinus untuk mengevaluasi kedekatan semantik antara input.

Rekomendasi yang dipersonalisasi

Sistem rekomendasi menerapkan teknik pencarian kemiripan/kesamaan untuk menyarankan produk, media, atau konten yang sesuai dengan perilaku dan preferensi pengguna.

Pemodelan topik

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.

AI Academy

Apakah manajemen data merupakan rahasia AI generatif?

Jelajahi mengapa data berkualitas tinggi sangat penting untuk keberhasilan penggunaan AI generatif.

Bagaimana cara kerja kesamaan kosinus?

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:

  1. Temukan hasil perkalian titik: Kalikan nilai yang sesuai di setiap vektor dan tambahkan hasilnya. Ini menangkap seberapa sejajar vektor secara arah.

  2. Tentukan besarnya: Besarnya (atau panjang) setiap vektor dihitung menggunakan akar kuadrat dari jumlah komponen kuadratnya.

  3. Hitung kesamaan kosinus: Kesamaan kosinus ditemukan dengan membagi hasil kali titik (langkah 1) dengan hasil kali besaran vektor (langkah 2). Hasil adalah skor kesamaan kosinus antara -1 dan 1.

Rumusnya dapat direpresentasikan sebagai:

Kesamaan kosinus = (A · B) / (||A|| × ||B||)

Di mana:

  • A · B adalah hasil perkalian titik vektor A dan B
  • ||A|| adalah besar (panjang) vektor A
  • ||B|| adalah besarnya vektor B

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 vs. metrik kesamaan lainnya

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:

Jarak Euclidean

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

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.

Produk titik

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.

Manfaat kesamaan kosinus

Mengingat perannya di berbagai sistem, kesamaan kosinus menawarkan beberapa keunggulan dibandingkan metrik kesamaan tradisional:

  • Kuat dalam ruang dimensi tinggi: Kemiripan kosinus bekerja dengan andal di lingkungan berdimensi tinggi di mana metrik berbasis jarak lainnya dapat menurun.
  • Tidak peka terhadap besaran: Kesamaan kosinus mengabaikan besaran vektor, membuatnya sangat berguna ketika dokumen atau titik data bervariasi dalam skala atau panjang.
  • Implementasi yang efisien: Kesamaan kosinus secara komputasi ringan dan dapat diimplementasikan menggunakan pustaka bahasa pemrograman populer seperti NumPy dan SciPy.
  • Berlaku di semua domain: Kesamaan kosinus cukup fleksibel untuk mendukung berbagai contoh penggunaan, termasuk penambangan teks, pengambilan informasi, pencarian kesamaan, dan rekomendasi waktu nyata.

Tantangan dengan menggunakan kesamaan kosinus

Terlepas dari kelebihannya, kesamaan kosinus bukan tidak memiliki batasan, termasuk:

  • Batasan vektor nol: Kesamaan kosinus tidak terdefinisi ketika satu atau kedua vektor memiliki besaran nol, yang membuat prapemrosesan untuk menghilangkan vektor nol menjadi penting.
  • Risiko kemiripan palsu: Kesamaan kosinus dapat menghasilkan nilai yang tinggi untuk vektor yang selaras secara arah tetapi secara semantik tidak terkait, terutama pada model penyematan yang kurang terlatih. Jika data pelatihan yang mendasarinya kurang memiliki keberagaman atau nuansa kontekstual, maka dapat menyebabkan hasil yang bias atau menyesatkan.
  • Ketergantungan pada normalisasi: Ini mengharuskan semua vektor input dinormalisasi, dan data yang diskalakan secara tidak tepat dapat mengubah hasil.
  • Ambiguitas dalam ortogonalitas: Skor kesamaan 0 tidak selalu berarti ketidaksamaan sama sekali dalam konteks dunia nyata. Hal ini terutama terjadi pada domain bernuansa seperti bahasa.

Kiat praktis untuk menggunakan kesamaan kosinus

Untuk mendapatkan nilai maksimal dari kesamaan kosinus, organisasi dapat mempertimbangkan hal-hal berikut ini:

Data praproses

Organisasi dapat menormalkan vektor sebelum perhitungan untuk memastikan konsistensi skala dan hasil yang valid, terutama ketika menggunakan input dimensi tinggi.

Hapus vektor nol

Bisnis harus membersihkan kumpulan data untuk menghilangkan atau menandai vektor nol, karena akan menyebabkan kesalahan “bagi dengan nol” selama perhitungan kesamaan kosinus.

Gabungkan dengan metrik lainnya

Organisasi dapat melengkapi kemiripan kosinus dengan metrik tambahan seperti kesamaan Jaccard atau jarak Euclidean ketika beberapa dimensi kesamaan diperlukan.

Uji di lingkungan seperti produksi

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.

Render 3D dari spiral beberapa ikon yang berbaris seperti kamera, kenop volume, dan clipboard
Solusi terkait
IBM® watsonx.data Pencarian AI Perusahaan

Dapatkan jawaban yang dapat Anda percayai dengan agen AI sadar konteks yang didukung oleh data yang diatur dan terhubung—tanpa replatform atau penguncian.

Temukan watsonx.data AI Enterprise Search
Perangkat lunak dan solusi manajemen data

Rancang strategi data yang menghilangkan silo data, mengurangi kompleksitas, dan meningkatkan kualitas data untuk pengalaman pelanggan dan karyawan yang luar biasa.

Temukan solusi manajemen data
Layanan konsultasi data dan AI

Skalakan AI dengan sukses dengan menyiapkan strategi, data, keamanan, dan tata kelola yang tepat.

Jelajahi layanan konsultasi data dan AI
Ambil langkah selanjutnya

Berikan jawaban tepercaya dan sesuai konteks dari seluruh organisasi Anda dengan AI agen yang didukung oleh data bisnis yang terkoneksi dan terkendali.

  1. Temukan watsonx.data AI Enterprise Search
  2. Jelajahi solusi manajemen data