Verken cosinusafstand en cosinussimilariteit. Ontdek berekeningen, toepassingen en vergelijkingen met andere metriek. Leer implementeren in R en Python met numpy.
Het meten van de (on)gelijkheid tussen datapunten is nuttig voor veel toepassingen, van tekstanalyse tot aanbevelingssystemen. Cosinusafstand is een afstandsmaat die bijzonder effectief is voor hoog-dimensionale of spaarzame datasets, omdat deze zich richt op de oriëntatie van vectoren in plaats van hun grootte.
Wil je je geheugen opfrissen over veelgebruikte en belangrijke concepten in machine learning? Begin dan met onze uitgebreide tutorial Demystifying Mathematical Concepts for Deep Learning. Lees ook ons artikel over afstandsgebaseerd leren, What is Manhattan Distance? om je begrip van afstandsmetriek te verbreden en de verschillen tussen cosinusafstand en Manhattan-afstand te zien.
Cosinusafstand definiëren
Laten we nu wat tijd nemen om cosinusafstand te definiëren aan de hand van de formule voor cosinusafstand. Daarbij bekijken we ook de relatie met cosinussimilariteit.
Formule voor cosinusafstand
Cosinusafstand meet de ongelijkheid tussen twee vectoren door de cosinus van de hoek ertussen te berekenen. Het kan worden gedefinieerd als één min cosinussimilariteit, zoals te zien is in de onderstaande formule:
Meer in detail, met een formelere wiskundige uitdrukking, wordt cosinusafstand berekend met de onderstaande formule.
Hier stelt A⋅B het inwendig product voor van de vectoren A en B, en ||A|| ||B|| zijn de groottes, of Euclidische normen, van de vectoren.
Met deze formule kwantificeren we cosinusafstand met een bereik van 0 tot 2. Een cosinusafstand van 0 betekent dat de vectoren perfect zijn uitgelijnd (geen hoek ertussen), wat maximale similariteit aangeeft, terwijl een waarde dichter bij 2 suggereert dat ze diametraal tegenovergesteld zijn, wat maximale ongelijkheid betekent.
Cosinussimilariteit vs. cosinusafstand
Zoals we hebben gezien, terwijl cosinusafstand de ongelijkheid tussen vectoren meet door de cosinus van de hoek ertussen te berekenen, kwantificeert cosinussimilariteit hoe vergelijkbaar twee vectoren zijn op basis van de cosinus van dezelfde hoek.
Cosinussimilariteit varieert van -1 tot 1. Een cosinussimilariteit van 1 betekent dat de vectoren perfect zijn uitgelijnd (geen hoek ertussen), wat maximale similariteit betekent, terwijl een waarde van -1 impliceert dat ze diametraal tegenovergesteld zijn, wat maximale ongelijkheid weerspiegelt. Waarden rond nul duiden op orthogonaliteit.
Cosinusafstand berekenen en visualiseren
Laten we een voorbeeld nemen met twee vectoren: Vector A (2,4) en Vector B (4,2), en hun cosinusafstand berekenen met de volgende stappen:
Bereken het inwendig product van A en B:
A · B = (2 × 4) + (4 × 2) = 8 + 8 = 16
Bereken de groottes van A en B:
||A|| = √(2² + 4²) = √20
||B|| = √(4² + 2²) = √20
Deel het inwendig product door het product van de groottes:
(A · B) / (||A|| × ||B||) = 16 / (√20 × √20) = 16 / 20 = 0,8
Bereken de cosinusafstand:
Cosinusafstand = 1 - 0,8 = 0,2
Met een cosinusafstand van 0,2 valt de uitkomst vrij laag op de schaal van 0 tot 2. Dit suggereert dat vectoren A en B qua richting best op elkaar lijken.
Cosinusafstand en cosinussimilariteit. Afbeelding door de auteur.
In deze weergave:
Vector A is (2, 4)
Vector B is (4, 2)
θ is de hoek tussen A en B
De cosinussimilariteit (0,8) geeft de cosinus van de hoek θ weer. Omdat de vectoren qua richting dicht bij elkaar liggen, is de hoek klein, wat resulteert in een hoge cosinussimilariteit en een lage cosinusafstand (0,2).
Omdat cosinusafstand ook kan worden gedefinieerd als 1 - cos(θ), waarbij cos(θ) de cosinussimilariteit is, impliceert dit:
Wanneer vectoren identiek van richting zijn (θ = 0°), is cos(θ) = 1, dus cosinusafstand = 0
Wanneer vectoren loodrecht staan (θ = 90°), is cos(θ) = 0, dus cosinusafstand = 1
Wanneer vectoren tegenovergesteld zijn (θ = 180°), is cos(θ) = -1, dus cosinusafstand = 2
Toepassingen van cosinusafstand
Laten we enkele belangrijke toepassingen bekijken.
Natural language processing (NLP)
Cosinusafstand speelt een cruciale rol in verschillende natural language processing-taken door semantische relaties tussen tekstrepresentaties, zoals word2vec, effectief te meten. Voor een korte introductie van deze concepten is onze tutorial Understanding Text Classification in Python handig.
Documentclassificatie en -similariteit
Bij documentclassificatie meet cosinusafstand de inhoudelijke overeenkomst door de hoeken tussen documentvectoren te vergelijken. Elk document wordt omgezet in een vector, met dimensies die TF-IDF-scores van woorden weerspiegelen. Vergelijkbare documenten wijzen in vergelijkbare richtingen, wat resulteert in kleinere cosinusafstanden.
Clustering en semantische groepering
Cosinusafstand blinkt uit bij clusteringtaken zoals K-means clustering, waarbij semantisch verwante documenten worden gegroepeerd, zelfs als ze niet dezelfde woorden gebruiken. Het is ideaal voor hoog-dimensionale, spaarzame data die vaak voorkomt in tekstanalyse. Door de oriëntatie van vectoren vast te leggen, maakt het nauwkeurigere thematische clustering mogelijk. Deze techniek wordt vaak gebruikt in unsupervised learning om natuurlijke groeperingen binnen documentverzamelingen te ontdekken, zoals het clusteren van nieuwsartikelen per onderwerp.
Informatieopvraging en zoekmachines
Bij informatieopvraging matcht cosinusafstand zoekopdrachten met documenten door vectoren te vergelijken. Zoekmachines vinden vervolgens documenten die het dichtst bij de queryvector liggen qua cosinusafstand, en rangschikken die met de kleinste afstanden het hoogst op relevantie.
Woordembeddings en woordsimilariteit
Naast analyse op documentniveau is cosinusafstand essentieel in woordembeddings zoals Word2Vec of GloVe, waar woorden worden weergegeven als hoog-dimensionale vectoren. Deze embeddings vangen semantische betekenis, zodat woorden met vergelijkbare betekenissen dicht bij elkaar liggen in de vectorruimte. Cosinusafstand kan worden gebruikt om de meest vergelijkbare woorden bij een gegeven woord te vinden, synoniemen te detecteren of zelfs functies te ondersteunen in complexere modellen, zoals die voor sentimentanalyse of machinevertaling.
Beeldherkenning
Bij beeldherkenning wordt cosinusafstand ingezet om featurevectoren te vergelijken die uit afbeeldingen zijn gehaald. Of het nu gaat om het onderscheiden van gezichten in een menigte of het classificeren van natuurfoto's, er wordt gekeken naar hoe vergelijkbaar de vectoren qua oriëntatie zijn, niet alleen qua grootte. Deze focus helpt om de juiste categorieën voor afbeeldingen te bepalen en verhoogt zowel de nauwkeurigheid als de effectiviteit van beeldgebaseerde systemen.
Aanbevelingssystemen
Stel je cosinusafstand voor als een digitale matchmaker die gebruikers koppelt aan films of producten die aansluiten bij hun eerdere voorkeuren. Door te kijken naar hoe dicht gebruikers- en itemprofielen op elkaar aansluiten in hun vectorruimtes, voorspellen aanbevelingssystemen verrassend nauwkeurig wat je waarschijnlijk als volgende leuk vindt.
Wiskundige eigenschappen van cosinusafstand
Cosinusafstand heeft unieke wiskundige eigenschappen die het onderscheiden van andere afstandsmaatstaven. Inzicht in deze eigenschappen is belangrijk om cosinusafstand correct te interpreteren en toe te passen in verschillende contexten.
Eigenschappen van metrische ruimten
In de wiskunde is een metriek of afstandsfunctie een functie die de afstand definieert tussen elk paar elementen in een verzameling. Om als een echte metriek te worden beschouwd, moet een functie aan vier voorwaarden voldoen:
Niet-negativiteit: d(x, y) ≥ 0
Identiteit van ononderscheidbaren: d(x, y) = 0 dan en slechts dan als x = y
Cosinusafstand voldoet aan de eerste drie voorwaarden, maar voldoet niet altijd aan de driehoeksongelijkheid. Dit betekent dat in sommige gevallen de som van de cosinusafstanden tussen punten A en B en tussen B en C kleiner kan zijn dan de cosinusafstand tussen A en C.
Schaalonafhankelijkheid
Een opvallende eigenschap van cosinusafstand is de schaalonafhankelijkheid. Dit betekent dat de cosinusafstand tussen twee vectoren hetzelfde blijft, zelfs als je een van beide of beide vectoren vermenigvuldigt met een scalair (niet-nul constante). Wiskundig, voor niet-nul scalairen a en b, en vectoren x en y:
Cosinusafstand(ax, by) = Cosinusafstand(x, y)
Deze eigenschap van schaalonafhankelijkheid onderscheidt cosinusafstand van veel andere afstandsmaatstaven.
Cosinusafstand in Python en R
Hier verkennen we hoe je cosinusafstand kunt berekenen met Python en R.
Python-voorbeeld
In Python kunnen we NumPy gebruiken om cosinusafstand en cosinussimilariteit te berekenen. Dat doen we door het inwendig product en de norm van onze vectoren te bepalen.
import numpy as np
# Define the vectors
A = np.array([2,4])
B = np.array([4,2])# Calculate cosine similarity
cos_similarity = np.dot(A, B)/(np.linalg.norm(A)* np.linalg.norm(B))# Calculate cosine distance
cos_distance =1- cos_similarity
print("Cosine Similarity: {:.2f}".format(cos_similarity))print("Cosine Distance: {:.2f}".format(cos_distance))Mogelijk gemaakt door
Als alternatief kunnen we cosinusafstand vinden met het SciPy-pakket en de functie cosine().
import numpy as np
from scipy.spatial.distance import cosine
# Define the vectors
A = np.array([2,4])
B = np.array([4,2])# Calculate cosine distance
cos_distance = cosine(A, B)# Uses scipy's cosine for cosine distanceprint("Cosine Distance: {:.2f}".format(cos_distance))Mogelijk gemaakt door
In R kun je cosinussimilariteit en cosinusafstand berekenen met basisbewerkingen op vectoren. Zo doe je dat:
# Define the vectors
A <- c(2,4)
B <- c(4,2)# Calculate cosine similarity
cos_similarity <- sum(A * B)/(sqrt(sum(A^2))* sqrt(sum(B^2)))# Note: We can also use %*% operator for matrix multiplication. # %*%, when applied to two vectors, calculates the dot product. # For example: cos_similarity <- A %*% B / (sqrt(sum(A^2)) * sqrt(sum(B^2)))# Calculate cosine distance
cos_distance <-1- cos_similarity
# Print the result
print(paste("Cosine Similarity:", cos_similarity))
print(paste("Cosine Distance:", cos_distance))Mogelijk gemaakt door
In het R-voorbeeld wordt de cosinussimilariteit berekend met handmatige bewerkingen voor het inwendig product en de normen, vergelijkbaar met het Python-voorbeeld, maar volledig binnen de basisfunctionaliteit van R. Let op dat de cosinusafstand wordt verkregen door de cosinussimilariteit van 1 af te trekken.
Cosinussimilariteit vs. Euclidische afstand en andere afstandsmetriek
De onderstaande visualisatie bouwt voort op ons oorspronkelijke voorbeeld, maar gebruikt dit keer verschillende kleuren om drie soorten afstandsmetingen met dezelfde vectoren weer te geven:
Manhattan-afstand meet de som van de absolute verschillen van hun coördinaten.
Euclidische afstand berekent de rechte lijnafstand tussen twee punten.
Cosinusafstand is afgeleid van de cosinus van de hoek tussen twee vectoren.
Cosinusafstand vs. Euclidische afstand vs. Manhattan-afstand. Afbeelding door de auteur.
Elk van deze afstanden biedt unieke inzichten in data. Euclidische en Manhattan-afstanden zijn geometrische afstanden die rekening houden met de grootte van de vectorcomponenten, waardoor ze geschikt zijn voor fysieke metingen in de ruimte. Cosinusafstand daarentegen richt zich op de hoek tussen vectoren, wat het ideaal maakt om oriëntatie en richting te begrijpen, vooral in hoog-dimensionale ruimten zoals die in tekstanalyse en andere vormen van data science.
Conclusie
Cosinusafstand en zijn complement, cosinussimilariteit, zijn krachtige hulpmiddelen in data science en machine learning. Deze metriek bieden unieke inzichten in de relaties tussen vectoren, met name in hoog-dimensionale ruimten waar traditionele afstandsmaatstaven tekort kunnen schieten.
Naarmate data complexer en dimensioneler wordt, zullen metriek zoals cosinusafstand waarschijnlijk een steeds belangrijkere rol spelen bij het blootleggen van verborgen patronen en relaties. Of je nu werkt aan natural language processing, aanbevelingssystemen of een ander domein met hoog-dimensionale vectorruimten, het begrijpen en toepassen van cosinusafstand kan waardevolle inzichten opleveren en de prestaties van je modellen verbeteren. Als volgende stap: volg onze uitgebreide interactieve cursus Designing Machine Learning Workflows in Python, met een heel hoofdstuk over afstandsgebaseerd leren en unsupervised workflows.
Vinod Chugani begon zijn carrière in Tokio als JPMorgans jongste Head van de Hedge Fund Sales Desk en vestigde later een individueel verkooprecord bij Lehman Brothers, bouwde daarna een elektronicadistributiebedrijf in 30 landen uit tot voorbij SG$100 miljoen omzet en maakte vervolgens de overstap naar data. Als afgestudeerde Economie aan Duke en alumnus van de NYC Data Science Academy was hij een van de drie beursontvangers uit meer dan 100 aanmeldingen voor Hugo Bowne-Andersons Building AI Applications-cursus op Maven. Tegenwoordig schrijft hij voor DataCamp, KDnuggets, Machine Learning Mastery en Statology over onderwerpen van statistiek tot agentische AI, en coacht hij dataprofessionals bij de NYC Data Science Academy met meer dan 1.000 één-op-één-sessies op zijn naam.
Veelgestelde vragen
Wat is cosinussimilariteit?⌄
Cosinussimilariteit is een metriek die meet hoe vergelijkbaar twee vectoren qua oriëntatie zijn, los van hun grootte.
Wat is het bereik van cosinussimilariteit? ⌄
Het bereik van cosinussimilariteit is -1 tot 1
Wat is de formule voor cosinussimilariteit?⌄
De formule voor cosinussimilariteit berekent de cosinus van de hoek tussen twee vectoren, gedefinieerd als het inwendig product van de vectoren gedeeld door het product van hun groottes.
Wat is het verschil tussen inwendig product en cosinussimilariteit?⌄
Het inwendig product is de som van de producten van overeenkomstige elementen van twee vectoren en weerspiegelt zowel hun grootte als oriëntatie. Cosinussimilariteit daarentegen is het inwendig product genormaliseerd door het product van de groottes van de vectoren en richt zich uitsluitend op hun richtingsuitlijning.
Hoe verschilt cosinusafstand van cosinussimilariteit?⌄
Cosinusafstand en cosinussimilariteit zijn complementaire maten. Cosinussimilariteit meet hoe vergelijkbaar twee vectoren zijn, variërend van -1 (exact tegenovergesteld) tot 1 (exact hetzelfde). Cosinusafstand daarentegen meet hoe verschillend twee vectoren zijn en wordt berekend als 1 min de cosinussimilariteit. Deze varieert van 0 (identieke vectoren) tot 2 (tegenovergestelde vectoren).
Wat is de formule voor cosinusafstand?⌄
De formule voor cosinusafstand meet de hoek tussen twee vectoren in een multidimensionale ruimte en wordt berekend als 1 min de cosinus van de hoek tussen de vectoren.
Wat geeft een cosinusafstand van 1 aan?⌄
Een cosinusafstand van 1 geeft aan dat de twee vergeleken vectoren loodrecht (orthogonaal) op elkaar staan en een hoek van 90 graden vormen. Dit betekent dat de vectoren geen richtingssimilariteit hebben, wat in de praktijk kan wijzen op volledig verschillende thema's in tekstanalyse, niet-verwante items in aanbevelingssystemen of uiteenlopende kenmerken in featurevectoren voor machine learning.
Wat is het verschil tussen cosinusafstand en hoekafstand?⌄
Cosinusafstand en hoekafstand zijn nauw verwant maar niet identiek. Cosinusafstand is gedefinieerd als 1 min de cosinussimilariteit, terwijl hoekafstand de hoek tussen twee vectoren in radialen is, berekend als de arccosinus van de cosinussimilariteit. Hoekafstand is evenredig met cosinusafstand maar biedt een intuïtievere geometrische interpretatie.
Wat is het verschil tussen cosinusafstand en Euclidische afstand?⌄
Hoewel beide ongelijkheid meten, richt cosinusafstand zich op de hoek tussen vectoren en negeert de grootte. Euclidische afstand richt zich op de grootte en meet de rechte lijnafstand tussen twee punten in de ruimte.
Waarom is cosinusafstand nuttig in tekstanalyse?⌄
Cosinusafstand is vooral nuttig in tekstanalyse omdat deze zich richt op de verhouding van woorden (weergegeven als vectordimensies) in plaats van hun absolute frequenties. Dit maakt het effectief voor het vergelijken van documenten van verschillende lengtes en voor het identificeren van thematische overeenkomsten, ongeacht de documentgrootte.
Duik in datawetenschap met Python en leer hoe je je data goed kunt analyseren en visualiseren. Je hoeft niet te kunnen programmeren of iets dergelijks.
"Cosinusafstand." Afbeelding door Dall-E.
Het meten van de (on)gelijkheid tussen datapunten is nuttig voor veel toepassingen, van tekstanalyse tot aanbevelingssystemen. Cosinusafstand is een afstandsmaat die bijzonder effectief is voor hoog-dimensionale of spaarzame datasets, omdat deze zich richt op de oriëntatie van vectoren in plaats van hun grootte.
Wil je je geheugen opfrissen over veelgebruikte en belangrijke concepten in machine learning? Begin dan met onze uitgebreide tutorial Demystifying Mathematical Concepts for Deep Learning. Lees ook ons artikel over afstandsgebaseerd leren, What is Manhattan Distance? om je begrip van afstandsmetriek te verbreden en de verschillen tussen cosinusafstand en Manhattan-afstand te zien.
Cosinusafstand definiëren
Laten we nu wat tijd nemen om cosinusafstand te definiëren aan de hand van de formule voor cosinusafstand. Daarbij bekijken we ook de relatie met cosinussimilariteit.
Formule voor cosinusafstand
Cosinusafstand meet de ongelijkheid tussen twee vectoren door de cosinus van de hoek ertussen te berekenen. Het kan worden gedefinieerd als één min cosinussimilariteit, zoals te zien is in de onderstaande formule:
Meer in detail, met een formelere wiskundige uitdrukking, wordt cosinusafstand berekend met de onderstaande formule.
Hier stelt A⋅B het inwendig product voor van de vectoren A en B, en ||A|| ||B|| zijn de groottes, of Euclidische normen, van de vectoren.
Met deze formule kwantificeren we cosinusafstand met een bereik van 0 tot 2. Een cosinusafstand van 0 betekent dat de vectoren perfect zijn uitgelijnd (geen hoek ertussen), wat maximale similariteit aangeeft, terwijl een waarde dichter bij 2 suggereert dat ze diametraal tegenovergesteld zijn, wat maximale ongelijkheid betekent.
Cosinussimilariteit vs. cosinusafstand
Zoals we hebben gezien, terwijl cosinusafstand de ongelijkheid tussen vectoren meet door de cosinus van de hoek ertussen te berekenen, kwantificeert cosinussimilariteit hoe vergelijkbaar twee vectoren zijn op basis van de cosinus van dezelfde hoek.
Cosinussimilariteit varieert van -1 tot 1. Een cosinussimilariteit van 1 betekent dat de vectoren perfect zijn uitgelijnd (geen hoek ertussen), wat maximale similariteit betekent, terwijl een waarde van -1 impliceert dat ze diametraal tegenovergesteld zijn, wat maximale ongelijkheid weerspiegelt. Waarden rond nul duiden op orthogonaliteit.
Cosinusafstand berekenen en visualiseren
Laten we een voorbeeld nemen met twee vectoren: Vector A (2,4) en Vector B (4,2), en hun cosinusafstand berekenen met de volgende stappen:
A · B = (2 × 4) + (4 × 2) = 8 + 8 = 16
||A|| = √(2² + 4²) = √20
||B|| = √(4² + 2²) = √20
(A · B) / (||A|| × ||B||) = 16 / (√20 × √20) = 16 / 20 = 0,8
Cosinusafstand = 1 - 0,8 = 0,2
Met een cosinusafstand van 0,2 valt de uitkomst vrij laag op de schaal van 0 tot 2. Dit suggereert dat vectoren A en B qua richting best op elkaar lijken.
In deze weergave:
De cosinussimilariteit (0,8) geeft de cosinus van de hoek θ weer. Omdat de vectoren qua richting dicht bij elkaar liggen, is de hoek klein, wat resulteert in een hoge cosinussimilariteit en een lage cosinusafstand (0,2).
Omdat cosinusafstand ook kan worden gedefinieerd als 1 - cos(θ), waarbij cos(θ) de cosinussimilariteit is, impliceert dit:
Toepassingen van cosinusafstand
Laten we enkele belangrijke toepassingen bekijken.
Natural language processing (NLP)
Cosinusafstand speelt een cruciale rol in verschillende natural language processing-taken door semantische relaties tussen tekstrepresentaties, zoals word2vec, effectief te meten. Voor een korte introductie van deze concepten is onze tutorial Understanding Text Classification in Python handig.
Documentclassificatie en -similariteit
Bij documentclassificatie meet cosinusafstand de inhoudelijke overeenkomst door de hoeken tussen documentvectoren te vergelijken. Elk document wordt omgezet in een vector, met dimensies die TF-IDF-scores van woorden weerspiegelen. Vergelijkbare documenten wijzen in vergelijkbare richtingen, wat resulteert in kleinere cosinusafstanden.
Clustering en semantische groepering
Cosinusafstand blinkt uit bij clusteringtaken zoals K-means clustering, waarbij semantisch verwante documenten worden gegroepeerd, zelfs als ze niet dezelfde woorden gebruiken. Het is ideaal voor hoog-dimensionale, spaarzame data die vaak voorkomt in tekstanalyse. Door de oriëntatie van vectoren vast te leggen, maakt het nauwkeurigere thematische clustering mogelijk. Deze techniek wordt vaak gebruikt in unsupervised learning om natuurlijke groeperingen binnen documentverzamelingen te ontdekken, zoals het clusteren van nieuwsartikelen per onderwerp.
Informatieopvraging en zoekmachines
Bij informatieopvraging matcht cosinusafstand zoekopdrachten met documenten door vectoren te vergelijken. Zoekmachines vinden vervolgens documenten die het dichtst bij de queryvector liggen qua cosinusafstand, en rangschikken die met de kleinste afstanden het hoogst op relevantie.
Woordembeddings en woordsimilariteit
Naast analyse op documentniveau is cosinusafstand essentieel in woordembeddings zoals Word2Vec of GloVe, waar woorden worden weergegeven als hoog-dimensionale vectoren. Deze embeddings vangen semantische betekenis, zodat woorden met vergelijkbare betekenissen dicht bij elkaar liggen in de vectorruimte. Cosinusafstand kan worden gebruikt om de meest vergelijkbare woorden bij een gegeven woord te vinden, synoniemen te detecteren of zelfs functies te ondersteunen in complexere modellen, zoals die voor sentimentanalyse of machinevertaling.
Beeldherkenning
Bij beeldherkenning wordt cosinusafstand ingezet om featurevectoren te vergelijken die uit afbeeldingen zijn gehaald. Of het nu gaat om het onderscheiden van gezichten in een menigte of het classificeren van natuurfoto's, er wordt gekeken naar hoe vergelijkbaar de vectoren qua oriëntatie zijn, niet alleen qua grootte. Deze focus helpt om de juiste categorieën voor afbeeldingen te bepalen en verhoogt zowel de nauwkeurigheid als de effectiviteit van beeldgebaseerde systemen.
Aanbevelingssystemen
Stel je cosinusafstand voor als een digitale matchmaker die gebruikers koppelt aan films of producten die aansluiten bij hun eerdere voorkeuren. Door te kijken naar hoe dicht gebruikers- en itemprofielen op elkaar aansluiten in hun vectorruimtes, voorspellen aanbevelingssystemen verrassend nauwkeurig wat je waarschijnlijk als volgende leuk vindt.
Wiskundige eigenschappen van cosinusafstand
Cosinusafstand heeft unieke wiskundige eigenschappen die het onderscheiden van andere afstandsmaatstaven. Inzicht in deze eigenschappen is belangrijk om cosinusafstand correct te interpreteren en toe te passen in verschillende contexten.
Eigenschappen van metrische ruimten
In de wiskunde is een metriek of afstandsfunctie een functie die de afstand definieert tussen elk paar elementen in een verzameling. Om als een echte metriek te worden beschouwd, moet een functie aan vier voorwaarden voldoen:
Niet-negativiteit: d(x, y) ≥ 0
Identiteit van ononderscheidbaren: d(x, y) = 0 dan en slechts dan als x = y
Symmetrie: d(x, y) = d(y, x)
Driehoeksongelijkheid: d(x, z) ≤ d(x, y) + d(y, z)
Cosinusafstand voldoet aan de eerste drie voorwaarden, maar voldoet niet altijd aan de driehoeksongelijkheid. Dit betekent dat in sommige gevallen de som van de cosinusafstanden tussen punten A en B en tussen B en C kleiner kan zijn dan de cosinusafstand tussen A en C.
Schaalonafhankelijkheid
Een opvallende eigenschap van cosinusafstand is de schaalonafhankelijkheid. Dit betekent dat de cosinusafstand tussen twee vectoren hetzelfde blijft, zelfs als je een van beide of beide vectoren vermenigvuldigt met een scalair (niet-nul constante). Wiskundig, voor niet-nul scalairen a en b, en vectoren x en y:
Cosinusafstand(ax, by) = Cosinusafstand(x, y)
Deze eigenschap van schaalonafhankelijkheid onderscheidt cosinusafstand van veel andere afstandsmaatstaven.
Cosinusafstand in Python en R
Hier verkennen we hoe je cosinusafstand kunt berekenen met Python en R.
Python-voorbeeld
In Python kunnen we
NumPygebruiken om cosinusafstand en cosinussimilariteit te berekenen. Dat doen we door het inwendig product en de norm van onze vectoren te bepalen.Output:
Als alternatief kunnen we cosinusafstand vinden met het SciPy-pakket en de functie
cosine().Output:
R-voorbeeld
In R kun je cosinussimilariteit en cosinusafstand berekenen met basisbewerkingen op vectoren. Zo doe je dat:
Output:
In het R-voorbeeld wordt de cosinussimilariteit berekend met handmatige bewerkingen voor het inwendig product en de normen, vergelijkbaar met het Python-voorbeeld, maar volledig binnen de basisfunctionaliteit van R. Let op dat de cosinusafstand wordt verkregen door de cosinussimilariteit van 1 af te trekken.
Cosinussimilariteit vs. Euclidische afstand en andere afstandsmetriek
De onderstaande visualisatie bouwt voort op ons oorspronkelijke voorbeeld, maar gebruikt dit keer verschillende kleuren om drie soorten afstandsmetingen met dezelfde vectoren weer te geven:
Cosinusafstand vs. Euclidische afstand vs. Manhattan-afstand. Afbeelding door de auteur.
Elk van deze afstanden biedt unieke inzichten in data. Euclidische en Manhattan-afstanden zijn geometrische afstanden die rekening houden met de grootte van de vectorcomponenten, waardoor ze geschikt zijn voor fysieke metingen in de ruimte. Cosinusafstand daarentegen richt zich op de hoek tussen vectoren, wat het ideaal maakt om oriëntatie en richting te begrijpen, vooral in hoog-dimensionale ruimten zoals die in tekstanalyse en andere vormen van data science.
Conclusie
Cosinusafstand en zijn complement, cosinussimilariteit, zijn krachtige hulpmiddelen in data science en machine learning. Deze metriek bieden unieke inzichten in de relaties tussen vectoren, met name in hoog-dimensionale ruimten waar traditionele afstandsmaatstaven tekort kunnen schieten.
Naarmate data complexer en dimensioneler wordt, zullen metriek zoals cosinusafstand waarschijnlijk een steeds belangrijkere rol spelen bij het blootleggen van verborgen patronen en relaties. Of je nu werkt aan natural language processing, aanbevelingssystemen of een ander domein met hoog-dimensionale vectorruimten, het begrijpen en toepassen van cosinusafstand kan waardevolle inzichten opleveren en de prestaties van je modellen verbeteren. Als volgende stap: volg onze uitgebreide interactieve cursus Designing Machine Learning Workflows in Python, met een heel hoofdstuk over afstandsgebaseerd leren en unsupervised workflows.