Kosínová podobnosť kalkulačka

Kosínová podobnosť (angl. cosine similarity) je miera podobnosti medzi dvoma vektormi, ktorú používame v strojovom učení, NLP a vyhľadávaní informácií.


Ako vypočítať kosínovú podobnosť

Na výpočet kosínovej podobnosti stačí zadať dva vektory, ktoré chceme porovnať:

  • vektor A s hodnotami prvkov (napr. 1, 1, 1, 1, 0),
  • vektor B s hodnotami prvkov (napr. 0, 1, 1, 1, 1),
  • klikneme na tlačidlo „Vypočítať“,
  • kalkulačka vypíše kosínovú podobnosť od -1 po 1 aj s interpretáciou výsledku.

Čo je kosínová podobnosť

Kosínová podobnosť (angl. cosine similarity) je matematická metrika, ktorá vyjadruje, ako veľmi sú si dva vektory podobné. Namiesto merania vzdialenosti medzi bodmi sa pozerá na uhol medzi vektormi:

  • malý uhol → vektory smerujú podobne → vysoká podobnosť,
  • veľký uhol → vektory sú odlišné → nízka podobnosť.

Kosínovú podobnosť používame v oblastiach ako:

  • strojové učenie – napr. porovnávanie embeddings,
  • spracovanie prirodzeného jazyka (NLP) – meranie podobnosti medzi textami alebo vetami,
  • vyhľadávanie informácií a odporúčacie systémy – odporúčanie produktov alebo dokumentov podobných zadanému.

Vzorec kosínovej podobnosti

Hodnota kosínovej podobnosti sa pohybuje od 0 do 1 (v praxi) alebo od -1 do 1 (pri povolených záporných hodnotách):

  • 1 → úplná zhoda, vektory sú totožné,
  • 0 → žiadna podobnosť, vektory sú kolmé,
  • -1 → úplne opačné smerovanie (zriedkavé v praxi).

Matematicky podobnosť vypočítame pomocou skalárneho súčinu vektorov a ich veľkostí (normy):

kosínová podobnosť = (A · B) / (||A|| · ||B||)

alebo aj pre ľahšie pochopenie:

kosínová podobnosť = (A1·B1 + A2·B2 + … + An·Bn) / (√(A12 + A22 + … + An2) * √(B12 + B22 + … + Bn2))

Kde:

  • A1, A2, …, An = prvky vektora A,
  • B1, B2, …, Bn = prvky vektora B,
  • A1·B1 + … An·Bn = skalárny súčin vektorov,
  • √(A12 + … + An2) = veľkosť (norma) vektora A,
  • √(B12 + … + Bn2) = veľkosť (norma) vektora B.

Poznámky:

  • oba vektory musia mať rovnaký počet prvkov (rovnakú dimenziu),
  • kalkulačka podporuje ľubovoľnú veľkosť vektora (2D, 3D, 5D, …).

Príklad kosínovej podobnosti – porovnanie textov

Predstavme si, že chceme zistiť, ako veľmi sú si podobné dve vety:

  • „Milujem programovanie a matematiku.“
  • „Matematiku a programovanie mám rád.“

V NLP sa tieto vety často reprezentujú ako vektory podľa frekvencie slov.

SlovoVektor AVektor B
milujem10
programovanie11
a11
matematiku11
rád01

Takže vektor A = (1, 1, 1, 1, 0) a vektor B (0, 1, 1, 1, 1)

Riešenie:

Výpočet urobíme v nasledujúcich krokoch:

  • Skalárny súčin vektorov
    • A · B = A1 · B1 + A2 · B2 + A3 · B3 + A4 · B4 + A5 · B5
    • A · B = 1 · 0 + 1 · 1 + 1 · 1 + 1 · 1 + 0 · 1 = 0 + 1 + 1 + 1 + 0 = 3
  • Veľkosti (normy) vektorov
    • ∣∣A∣∣ = √(12 + 12 + 12 + 12 + 02) = √4 = 2
    • ∣∣B∣∣ = √(02 + 12 + 12 + 12 + 12) = √4 = 2
  • Kosínová podobnosť
    • vypočítame podľa vzorca: A · B / ∣∣A∣∣ · ∣∣B∣∣ = 3 / 2 · 2 = 0,75

Výsledok (interpretácia):

  • hodnota 0,75 znamená, že vety sú dosť podobné, aj keď nie úplne rovnaké,
  • malý rozdiel vzniká kvôli slovám „milujem“ a „rád“, ktoré sa líšia,
  • hodnota 1 by znamenala úplnú zhodu, 0 žiadnu podobnosť, prípadne -1 úplne opačné smerovanie (pri povolených záporných hodnotách vektora).

Využitie kosínovej podobnosti

  • Google, YouTube, Spotify či Netflix používajú kosínovú podobnosť pri porovnávaní textov, používateľských preferencií alebo obsahu, napríklad: keď hľadáme film alebo pieseň podobnú tej, ktorú sme už sledovali/počuli, algoritmus vyhodnotí „vektory“ charakteristík a odporučí nám podobné filmy alebo piesne,
  • využíva sa napríklad pri automatickom sumarizovaní textov, strojovom preklade alebo chatbotoch,
  • umožňuje AI „pochopiť“, ktoré objekty alebo dáta sú si podobné, bez toho, aby musela porovnávať presné hodnoty,
  • pomocou vektorových reprezentácií sa dajú porovnávať vizuálne a audio vzory – napr. rozpoznávanie tváre, hlasové asistenty, alebo identifikácia podobných obrázkov,
  • pomáha analyzovať veľké dátové súbory, genetické sekvencie, chemické molekuly, či sociálne siete – všade tam, kde potrebujeme kvantifikovať „podobnosť“ medzi objektmi.

Najčastejšie kladené otázky (FAQ)

Môže kalkulačka pracovať s vektormi rôznych dĺžok?

Nie, oba vektory musia mať rovnaký počet prvkov. Ak majú rôznu dimenziu, výsledok by nebol matematicky správny.

Dá sa kosínová podobnosť použiť pre obrázky alebo zvuk?

Áno, ak sa dá obsah previesť na numerický vektor (feature vector), kalkulačka dokáže porovnať aj obrázky alebo zvukové dáta.

Čo znamená záporná hodnota kosínovej podobnosti?

Záporná hodnota indikuje, že vektory smerujú približne opačne. V praxi sa často používa rozsah od 0 do 1, takže záporné hodnoty sú zriedkavé.

Ako ovplyvňuje veľkosť vektorov výsledok?

Kosínová podobnosť je nezávislá od veľkosti vektora, záleží len na smere. Preto je vhodná, keď chceme porovnávať relatívne vzory bez ohľadu na mierku hodnôt.

Ako sa správa kosínová podobnosť pri nulových vektoroch?

Ak je jeden alebo oba vektory nulové (všetky prvky 0), kosínová podobnosť nie je definovaná, pretože norma nulového vektora je 0.

Je potrebné normalizovať vektory pred výpočtom?

Nie je to nutné, pretože kosínová podobnosť automaticky zohľadňuje veľkosť vektorov, porovnáva len ich smer.

Zdroje: