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.
| Slovo | Vektor A | Vektor B |
| milujem | 1 | 0 |
| programovanie | 1 | 1 |
| a | 1 | 1 |
| matematiku | 1 | 1 |
| rád | 0 | 1 |
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)
Nie, oba vektory musia mať rovnaký počet prvkov. Ak majú rôznu dimenziu, výsledok by nebol matematicky správny.
Áno, ak sa dá obsah previesť na numerický vektor (feature vector), kalkulačka dokáže porovnať aj obrázky alebo zvukové dáta.
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é.
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.
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.
Nie je to nutné, pretože kosínová podobnosť automaticky zohľadňuje veľkosť vektorov, porovnáva len ich smer.
Zdroje:
- Cosine Similarity: https://www.geeksforgeeks.org/dbms/cosine-similarity/
- What is cosine similarity?: https://www.ibm.com/think/topics/cosine-similarity
- Cosine similarity: https://en.wikipedia.org/wiki/Cosine_similarity