Ligheden af ting

En spørgsmål som man ofte møder i forbindelse med Machine learning og data mining er at bestemme hvor meget to ting ligner hinanden, altså hvordan måler man ligheden af ting, det kan være personer, dokumenter, film eller frugter i et supermarkedet. Og det er der selvfølgelig mange måder at gøre det på, men en god en, at have i tasken, er opfundet af en franskmand ved navnet Jaccard, og kendes som Jaccard Ligheden (også kendt som Jaccard Index).

Ideen er ret simple, givet to mængder A og B, beregner man ligheden ved at sige:

J(A,B) = |A∩B|/|AUB|

Hvor

  • J(A,B) ligeheden af A og B
  • |A∩B| er antallet af elementer A har til fælles med B
  • |AUB| alle elementer der er kan findes i A og B.

Det virker jo lidt fjernt fra at sammenligne personer og film, men hold på hat og briller for nu bliver det hele klart!

Hvis man nu kigger på en film som en liste af features, så kan man sige at “star wars” er følgende:

  • Fantasy
  • Harrison Ford
  • Kamp mellem godt og ondt
  • Rumskibe
  • Magi

Og hvis vi prøver at lave en ligende liste for “Ringenes herre” kunne det være:

  • Fantasy
  • Elijah Wood
  • Kamp mellem godt og ondt
  • Drager
  • Magi

Her skal man selvfølgelig forstille sig at listen indeholder alle skuespillerne og alle nøgleordene (som drager, magi). Vil man nu gerne prøve at finde et tal for ligheden af de to film så kan man få hjælp fra vores nye ven Jaccard som siger at “Star wars” og “Ringenes herre” (faktisk havde Paul Jaccard ikke nogen holdning om de film da han døde i 1944 i Zürich). Indsættes mængderne i formlen får vi følgende:

J(“Star Wars”, “Ringenes herre”) =

|{ “Fantasy”, “Kamp mellem godt og ondt”, “Magi”}| / | { “Harrison Ford”,”Kamp mellem godt og ondt”, “Rumskibe”, “Fantasy”, “Elijah Wood”, “Kamp mellem godt og ondt”, “Drager”, “Magi”} |
= 3 / 7

Det giver måske stadig ikke noget særligt godt billede af om hvorvidt de ligner hinanden eller ej. Men ideen er heller ikke at det skal forstås som en faktisk værdi, men som et indeks. Således at hvis du laver samme sammenligning med andre film, så ender man med at film der minder om hinanden har et indeks tæt på 1 mens dem som ingenting har til fælles har et indeks tæt på nul. Dette indeks kan derefter bruges til at sortere filmene og finde en rankering af hvor meget de ligner den sammenlignede film. Så hvis vi laver samme udregning mellem “Star wars” og en masse andre film også, kan vi lave en liste af film som er sorteret efter film der minder mest om “Star wars”.

Dette eksempel illustrere også et interessant problem, som jeg mener, faktisk er et af de største problemer ved at bruge machine learning, nemlig at vælge input, samme algoritme kan virke fantastisk på en type input men forfærdeligt på andre. I eksemplet ovenfor kan man diskutere om “The Force” er “magi” eller ej, og om “Drager” måske skulle have være overnaturlige dyr, og om der er sådan nogle med i “Star wars”.

Man kunne sagtens lave en lang række beskrivende tillægs ord som vil beskrive begge film, og samtidig finde en anden lige så lang liste af tillægsord som gør dem forskellige. Samme problemstilling kan man finde ved sammenligning af personer og de fleste andre ting. Det er også grunden til at mange kalder machine learning for en kunstart mere end matematik.

Share Button
The following two tabs change content below.
Profile photo of kimfalk

kimfalk

Lead Data scientist hos Karnov om dagen, Forfatter til Practical Recommender Systems om aftenen
Profile photo of kimfalk

Nyeste indlæg af kimfalk (se alle)

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *