Automatiserade nyhetsflöden har idag blivit vardagsmat i mediebranschen, men vad händer om vi bestämmer oss för att tänka utanför boxen och ta det hela till en helt ny nivå?

Du och jag ska i den här bloggen genomföra ett litet experiment där vi sätter hela ansvaret för att både välja ut och vikta nyheter i händerna på en dator. Det kommer alltså inte att finnas någon mänsklig hand som guidar och hjälper till att peka ut riktningen. För att öka på spänningen ytterligare kommer vi inte ens att berätta för systemet att det är nyheter som vi arbetar med. Dessutom ska jag försöka hålla mig på en hyfsat begriplig teknisk nivå genom hela processen. Vilken resa det kan bli!

Låter det intressant? Gå och hämta en kopp kaffe och sätt dig till rätta, så kör vi igång.

Vi tar det från början. Jag borde berätta lite för dig om maskininlärning.

Att lära sig av facit

Det finns två stora kategorier inom maskininlärning: övervakad inlärning och oövervakad inlärning. Det här inlägget kommer att handla om den senare kategorin, men en snabb genomgång av den förstnämnda känns som en lämplig uppvärmning.

Övervakad inlärning är en process där en dator lär sig ett mönster genom att träna på data som innehåller ett ”facit”. Ett exempel är när ett program får se tusentals röntgenbilder på friska och cancersjuka personer, där varje bild har en medföljande ”etikett” som berättar om bilden innehåller en tumör eller inte. Förutsatt att inlärningen går bra kommer programmet efter ett tag kunna avgöra hur sannolikt det är att en helt ny röntgenbild (som saknar etikett) visar en tumör eller inte.

Ett annat exempel, närmare tidningsbranschen, är ett program som genom att studera historisk data på upplagor kan avgöra hur den kan komma att utvecklas framöver. Ur ett analytiskt (mänskligt) perspektiv görs detta antagligen enklast genom att titta på hur kurvan historiskt har förändrats och utgå från trenden håller i sig. Men de bakomliggande faktorerna kan vara många och svårbegripliga, och med hjälp av maskininlärning kan vi utnyttja en stor mängd parametrar och låta programmet själv avgöra hur viktiga dessa är när det gäller att förutspå den framtida upplagan. Låt oss säga att vi med betydligt större precision kan förutspå andra saker, som befolkningsökning, inflation och utbredningen av bra Internet-uppkoppling. Även om vi inte kan hitta det uppenbara sambandet mellan detta och fallande upplagor är det kanske precis dessa parametrars historiska utveckling som ett program kan studera för att hitta svaret. I näst steg kan vi i så fall mata in de värden vi tror att dessa parametrar kommer att ha om fem år och få upplagenivåerna för samma tidpunkt som svar.

Om jag har krånglat till det nu, håll ut! Jag ska strax försöka bli konkretare.

Att skapa ordning

Så, vad innebär då oövervakad inlärning?

Oövervakad inlärning är den typ av maskininlärning som används när det inte finns ett ”rätt svar” att förhålla sig till. Gruppering och segmentering av data är ett vanligt användningsområde, och ofta är det grunddata som hanteras mycket svåröverskådligt för en vanlig person. Med andra ord är det något av en livboj när den tillgängliga informationen känns svår att överblicka. I mediebranschen används dessa tekniker ofta på användardata och innehåll. ”Finns det fler användare med det här beteendet?” och ”Finns det fler texter som påminner om denna?” är två typer av frågor som den oövervakade maskininlärningen hjälper till att besvara.

Människan är på gott och på ont väldigt bra på mönsterigenkänning, och i de fall där det enkelt går att visualisera något är vi också mycket snabba med att försöka skapa någon form av ordning i det vi ser.

Sidvisningen: lösningen på, och anledningen till, alla världens webbstatistikbekymmer.

I exemplet ovan förekommer några användare av MittMedias mobila nyhetsappar, med parametrarna “sidvisningar” och “besök”. I det här fallet tycks det finnas två grupper av användare, och genom att instinktivt dra en fin rak linje genom mitten av bilden har vi skapat två till synes väl avvägda grupper. Men är det verkligen två distinkta grupper, eller är det bara vårt ordningssinne som spelar oss ett spratt? Det är enkelt att föreställa sig ytterligare en användare i statistiken, som placerar sig mitt på skiljelinjen och därmen skjuter hela vår gruppindelning i sank. Dessutom… eftersom det är jag som är författaren av den här bloggposten kan jag ta mig friheten att krångla till det hela ännu mer.

Öhm. Okej?

På bilden ovan har jag introducerat ytterligare två parametrar att ta hänsyn till: spenderad tid i appen och hur många olika typer av kategorier en användare har intresserat sig för under mätperioden. Plötsligt ställs vi inför ett nytt problem. När vi endast hade två parametrar att ta i hänsyn kunde vi enkelt genom en tvådimensionell bild skapa oss en uppfattning av våra användare. Nu har vi fyra parametrar, vilket innebär att vi inte ens med en tredimensionell bild kan skapa oss en bra översikt över hur vår två grupper ska se ut. I sann Hans Rosling-anda kan vi naturligtvis tänka oss att börja experimentera med olika stora bollar för att beskriva den fjärde parametern, men om det därefter (till vår stora förfäran) introduceras även en femte parameter har vi satt oss i en mycket svår sits.

Det är alltså här maskininlärningen åter gör entré.

Att vi har fler parametrar än vad vi klarar av att hålla ordning på är inget som datorn upplever som ett problem. Faktum är att vi i en verklig situation ofta har ett hundratal parametrar att ta hänsyn till. Det kan låta omöjligt, men en algoritm som K-means är framtagen för att hantera exakt den typen av data. Med andra ord borde våra fyra parametrar vara en barnlek för datorn att hantera. Och mycket riktigt, efter lite betänketid kan vi förvänta oss att få våra två grupper av användare prydligt definierade med hänsyn till all data vi har stoppat in.

Hur maskininlärningen tolkar data

Om vi sedan ber vårt program att genom samma upplägg som den ursprungliga bilden beskriva för oss hur den valt att dela in användarna i två grupper kan svaret se ut som ovan.

Experimentet

Nu är det hög tid att vi ger oss på ämnet för dagen. Kan vi genom att applicera oövervakad maskininlärning automatisera jobbet med att automatisera våra artikelrekommendationer? För all del, läs den där meningen en gång till, jag väntar. När du är redo att fortsätta ska jag berätta lite om MittMedias mest lästa-lista.

Tråkigaste kommunerna, vi har hela listan

Mest läst-listan, hur fungerar den?

Innan vi fortsätter är det kanske värt att nämna några ord om hur artikelurvalet fungerar idag. Högst upp på alla MittMedias sajter finns det idag en artikellista som går under namnet “Mest läst”, som trots sitt namn egentligen snarare är en lista över det för tillfället mest trendande innehållet. Vi har tidigare skrivit om hur MittMedia arbetat med att göra denna helt algoritmstyrda nyhetsprioritering tillgänglig att experimentera med för alla som har tillgång till vårt analyssystem. Och faktum är att det är samma process som ligger till grund för alla automatiska artikelrekommendationer på MittMedias sajter, vilket innefattar allt från individuella “artikelpuffar” på startsidan till den lista av relaterade länkar du alltid möts av bredvid en artikeltext. “Mest läst” är alltså gåtan vi måste knäcka för att kunna applicera samma lösning överallt.

I sin enklaste form grundar sig nästan alla typer av trendande-listor i en förhållandevis enkel algoritm. Eftersom en artikel hela tiden blir äldre och får allt fler sidvisningar kan vi bara genom att dela antalet sidvisningar med artikelns ålder få en hyfsad rättvis “poäng” att rangordna vårt innehåll efter.

Poäng = Sidvisningar / Ålder

Den lista du möts av i “Mest läst” är i verkligheten grundad i en betydligt mer avancerad lösning än exemplet ovan, men principen är densamma. Den artikel som ligger på första plats har flest poäng, och har således under en kort tid samlat på sig ett stort antal sidvisningar.

Såhär ser topp-fem ut på st.nu i skrivande stund:

1. Kovland Hockey drar sig ur division I: “Vi vill dra i handbromsen”

2. Så har “Coffa” förvandlat sin Opel Ascona från 1973 till modernt vrålåk

3. Här är länets roligaste och tråkigaste kommuner – se hela listan

4. Hostan kan vara dödlig – utan att du vet om det: “Effektiv behandling finns”

5. Läkare slet av armen på det döda fostret

Dags att sätta datorn i arbete

En sak som vi precis har lärt oss i den här artikeln är att om det finns många parametrar att mata in i vår maskininlärning ökar ofta kvalitén på vad den spottar ut. Och när jag skriver att den verkliga “Mest läst”-listan använder en förhållandevis komplicerad algoritm innebär det också att vi har många parametrar på våra artiklar att ta hänsyn till. Tänk om vi skulle bygga ett program som hanterar precis samma sorts parametrar som vi använder till våra algoritmer, och sedan skicka in data på alla artiklar som publicerats på st.nu under de senaste dagarna. Vad skulle vi i så fall få tillbaka om vi bad om att få våra artiklar uppdelade i två grupper? Det är det vi strax ska ta reda på. Observera att vårt program inte har en aning om vad vi ska ha våra artikelgrupper till, hur vi vill rangordna innehållet eller att det ens gäller nyheter.

Jag har tidigare skrivit om virala artiklar, och då fastslagit att populära artiklar beter sig helt annorlunda mot artiklar som ligger närmare snittet i antalet sidvisningar. Är den skillnaden tillräckligt tydlig för att vårt program ska lägga välbesökta artiklar i en egen grupp, och kommer en artikels ålder i så fall att vara en avgörande faktor? Det finns bara ett sätt att ta reda på det.

På klassiskt TV-kocksmanér har jag redan plockat ut några tusen slumpvist utvalda artiklar ur MittMedias databas, och skapat parametrar för bland annat antalet sidvisningar, antal länkningar från sociala medier, engagemangstid, minuter sedan publicering, antal referensdomäner, textlängd, andel mobil trafik, antal postnummer via IP-uppslagning och slutligen en flagga som anger om artikeln innehåller videomaterial. För att inte skapa en situation där datorn kan “fuska” när vi sedan skapar en artikellista för st.nu har jag också filtrerat bort alla artiklar som är publicerade på st.nu i mitt dataset.

Ett stickprov av den artikelinformation vi förser vårt program med

Det är mycket data att studera, och programmet tar också god tid på sig, men efter en stund får jag ett meddelande om att det har lyckats gruppera artiklarna i två grupper. En stor grupp och en betydligt mindre. Kan den andra gruppen innehåll den typ av artiklar som vi är ute efter?

Upp till bevis

Det är dags att se hur maskininlärningen står sig mot poängalgoritmen. Men innan vi jämför artikellistorna borde vi kasta ett öga på hur detta ser ut i ett format som vi kan förstå oss på. De tvådimensionella graferna vi tittade tidigare kändes lättbegripliga, så låt oss ta två parametrar (sidvisningar och social trafik) och se hur spridningen ser ut.

Artiklar som publicerats på st.nu, och vilka av dessa som hamnar i den mindre gruppen

Det ser onekligen lovande ut. Låt oss nu jämföra Mest läst-listan ovan med de markerade artiklarna och se om vi kan se några likheter.

De fem första artiklarna som vår maskininlärning identifierat som medlemmar i den mindre artikelgruppen:

1. Kovland Hockey drar sig ur division I: “Vi vill dra i handbromsen”

2. Börsbolag vill bygga 400 lägenheter i Sundsvall

3. Hostan kan vara dödlig – utan att du vet om det: “Effektiv behandling finns”

4. Läkare slet av armen på det döda fostret

5. Här är länets roligaste och tråkigaste kommuner – se hela listan

Av fem möjliga lyckas vi alltså identifiera fyra av artiklarna listan. Enligt betygskalan från när jag gick i grundskolan har vi med god marginal förtjänat ett “väl godkänt”, och där får vi väl ändå känna oss nöjda för den här gången. På sätt och vis är det ju egentligen inte ens vi som gjort det mesta av jobbet. Ungefär som hur jag fick mitt betyg i tyska med andra ord, apropå grundskolan.

Vad kan vi ta med oss från detta experiment?

Det vi först och främst ska ta med oss av allt detta är att något som vi ofta lägger mycket tid på (att slipa på våra algoritmer och vikta våra nyheter) kan visa sig vara en mycket enkel sak i händerna på ett verktyg som är väl anpassat för denna typ av data. Maskininlärningen tycks producera ett snarlikt resultat “out of the box”. I Östersund sitter MittMedias redaktionella affärsutvecklare Anders Trapp och känner sig både entusiastisk och lite nervös över detta.

Prestandamässigt kan det också finnas vinster. Det krävs förvisso ganska mycket datorkraft för att träna programmet, men det behöver vi å andra sidan bara göra varje gång vi bestämmer oss för att lägga till, ta bort eller uppdatera någon parameter i vårt träningsdata. Vi kan jämföra med poängställningen på en artikel, som måste beräknas löpande enligt den lösning som finns idag.

Det finns säkert även många lärdomar att ta med sig ur detta för att enklare förstå hur innehåll kan bearbetas vid skapandet av anpassade rekommendationer för små grupper av användare, eller rentav enskilda individer.

Hold your horses

Det finns naturligtvis uppenbara utmaningar.

Det finns inget som hindrar den oövervakade maskininlärningen från att producera vadhelst den tycker passar. Det framgår ju redan i namnet att det är svårt att styra över resultatet. I det här exemplet går vi också direkt från att ha järnkoll över vår algoritm till att helt släppa kontrollen, och om det är någonting vi lärt oss från science fiction så är det att detta ofta är en dålig approach.

Och vad händer när användarnas beteende plötsligt förändras? Dagar som julafton och midsommarafton riskerar att resultera i fullständigt kaos på sajterna. Men det fina med maskininlärning är dock att det går att lära en dator väldigt komplexa mönster, och med tillräckligt mycket träning skulle detta kaos antagligen kunna avstyras.

Dessutom, även om jag har hunnit göra detta experiment några gånger nu är det inte omöjligt att det faktiskt kan finnas ett visst mått av tur som påverkar utfallet.

Några slutord

Det börjar bli dags att runda av

Det finns många anledningar till att poängalgoritmer är det vanligaste sättet att hantera funktioner liknande mest läst-listan, men det känns samtidigt uppfriskande att testa andra lösningar och dra nya slutsatser. Dessutom ger det nya perspektiv på sådant som vi redan har hunnit skapat rutiner kring.

Det är naturligtvis intressant att fundera över vad det är som gör att vårt program i testet vi genomförde valde Börsbolag vill bygga 400 lägenheter i Sundsvall framför Så har “Coffa” förvandlat sin Opel Ascona från 1973 till modernt vrålåk. Testet är ju mycket begränsat, så kanske återfinns dessa två artiklar i båda listorna, men nedanför femteplatsen? Troligtvis finns det även någon viktig parameter vi har missat. Men kanske är också listan vårt program producerat ett bättre artikelurval. Det får tiden får utvisa, och vi har många anledningar till att återkomma till detta.

Vi ska vara väldigt försiktiga med att använda begreppet AI, eftersom den enda beskrivningen som alla egentligen verkar vara beredda att skriva under på är att “riktig AI kan likställas vilken som helt intelligenskrävande uppgift som en dator inte klarar av att göra i dagsläget”. Med det sagt kan vi genom att lyfta på locket till den del av datavetenskapen som oftast benämns som maskininlärning åtminstone skapa oss en bra bild över vilka grundpelare en eventuell AI-revolution kommer att stå på. Det är också här vi måste börja om vi vill förstå vart den artificiella redaktören har sina rötter.

Avslutningsvis vill jag be om ursäkt till dig som är bevandrad i maskininlärning. Jag har tagit mig stora friheter för att göra detta presentabelt. Kluster beskrivs till exempel som grupper(?!), förprocesseringen av parametrarna sker i det fördolda och jag hoppar helt över den del av maskininlärning som faller under “förstärkt inlärning” med neurala nätverk och allt vad det innebär. Som plåster på såren är du mycket välkommen att kontakta oss på MittMedia och ur ett djupare tekniskt perspektiv prata om hur du ser på de utmaningar mediebranschen står inför.

Du är något av en hjälte, som kämpat dig hela vägen ner hit. Tack för att du tog dig tid.

Skrivet av:

Magnus Engström

Head of data strategies Mittmedia

Mer platform

Digitala produkter är lättflyktiga. I en bransch som under århundraden arbetat med en och samma produkt har det i många avseenden varit ett hårt uppvaknande att inse hur snabbt kundernas fokus kan skifta och hur många aktörer som med enkla medel kan vara med och konkurrera om både användarnas engagemang och pengar.

Du har ett sammanhang. Oavsett vad du gör eller när du gör det befinner du dig alltid i en situation där ditt agerande kommer att påverka en graf, ett kalkylblad eller kanske någons budget. Någonstans är det en siffra som förändras när du väljer att ta bilen till jobbet, när du väljer att köpa ett specifikt varumärke, när du stannar hemma med en förkylning, när du skickar ett sms eller när du hittar ett par minuter för att se efter om det hänt något på den lokala nyhetssajten. Men oavsett situation kommer du nästa aldrig ensam att förändra den där siffran tillräckligt mycket för att någon ska lägga märke till det.

Detta är det andra inlägget i en serie inlägg om MittMedias omfattande arbete med att byta digital publiceringsplattform och göra om alla våra digitala nyhetslösningar. Det här inlägget blir ett av flera som beskriver Hur vi genomför projektet/ombyggnationen.

Detta är det första inlägget i en serie inlägg om MittMedias omfattande arbete med att byta digital publiceringsplattform och göra om alla våra digitala nyhetslösningar. Vi börjar med att titta på Varför för att sedan gå vidare till Hur och slutligen Vad vi bygger.