Google Prediction API för att kategorisera, prediktera och se förändring

2010-08-22

Nu finns ett nytt API i Google Labs för statistiska prediktioner:

Google Prediction API

Konceptet är att du för upp ditt data enligt ett definierat format till Google Storage och kan sedan operera på det med Google Prediction API för att skatta relaterat till statistisk mönsterigenkänning.

Utan att ha prövat Google Prediction API och givet att begränsad dokumentation ännu finns är det kanske lätt att tolka fel vad det men min prediktion avseende vad det gör är:

  • Att det används för kategorisering av data avseende var ett "prov" hör hemma.
  • Beslut för kategoriseringen avgörs med statistiska metoder där dessa inte är dokumenterade men sannolikt är av samma typ som t.ex. maximum likelihood samt givet följande angivet av Google "Message routing decisions" också allmän grafteori.
  • Hur väl kategoriseringen presterar beror på om ditt träningsdata (d.v.s. data där kända kategorier finns) är tillräckligt stort och på dess kvalitet (d.v.s. om du mäter data black-box får du troligen en hel del fel och irrelevant data även om korrekt kategori för respektive "händelse" är känd).

Komplexiteten för att göra detta rörande teori är inte enormt svårt och idag inarbetad i en mängd applikationer men implementationer som är tillräckligt snabba kan vara svårare att få till bra om man har begränsade resurser och mjukvara kan vara ganska dyra även om många som är gratis också finns. För mindre aktörer inte minst på nätet idag ofta utan egna servrar kan Google Prediction API vara en enkelt och utmärkt lösning för.

Vad som också är potentiellt mycket intressant med Google Prediction API är för situationer där vi betraktar språk eftersom Google väl demonstrerat med t.ex. Google Translate att de både har omfattande statistik och klarar att realisera komplexa applikationer som faktiskt fungerar från det.

För språk gäller att vi har generella statistiska mönster innebärande att när vi kategoriserar från för problemet unikt träningsdata kan man förhoppningsvis dra nytta av dessa varande bättre och färdigt "mätta" av Google och därigenom spara tid och nå högre kvalitet. Där finns också färdigt redan nu identifikation av språk. Samma värde kan tänkas också finnas för t.ex. spam och annat som Google troligen regelmässigt mäter för egna applikationer även utanför våra dagliga språk.

Dock gäller för allt detta att givet att dokumentationen ännu är ganska begränsad att det krävs att man prövar det för att få en riktig bild av vad Google Prediction API använder, klarar av och hur väl det ännu fungerar praktiskt. Det är ännu en tidig version fortfarande i Google Labs där det är avsett för användare som vill testa det utan egentliga garantier för att inte buggar finns.

Möjliga praktiska applikationer där jag kan prediktera att detta kan tänkas bli ofta använt är till exempel:

  • Olika web-gadgets som predikterar d.v.s. kurvor m.m. av olika typer (här mer avseende gadgets för "nöje" vilka ofta kommer tidigare än sådana som har konkret långsiktigt praktiskt värde).
  • Kategorisering och prediktion relaterat till gränssnitt där ju data i storlek är väldigt begränsat per användare emedan varje möjlighet är låg vilket gör att god kvalitet är möjligt. Här kan det tänkas fungera väldigt bra tidigt.
  • Allt som rör data relaterat till språk t.ex. detektion av spam. Mycket möjligt är detta det område där Google kan prestera unikt bra givet statistik från flera språk och särskilt i situationer där data just rör flera språk.

En generell applikation som givet stor acceptans av störningar i data är möjlig i väldigt mycket är detektion av underliga förändringar där något plötsligt avviker (när något plötsligt ser tydligt annorlunda ut är alla dess algoritmer väldigt bra på att se när det har inträffat). Där är det dock säkert klokt när det har betydelse att också ha regelbaserade kontroller som alltid varnar där man låter statistisk mönsterigenkänning komplettera. Att Google Prediction API i sig är supervised learning hindrar inte sådana applikationer på något sätt även om visst förarbete kan krävas.

Hela detta område kan vi också ställa i relation till länkar även om det är mindre intuitivt. Dessa uttrycker dock både grafer och bär mening samtidigt som de konkret ofta kategorisera. Detta har diskuterat något i:

Relationer i länkar kanske approximerar generella samband för "organisatorisk entropi"

Relationer i länkar kanske approximerar generella samband för "organisatorisk entropi"

Att relationer uttryckta i länkar skulle approximera ev. generella relationer människan uttrycker i samband med organisationer och interaktion i grupp (dit vi tämligen säkert kan räkna kategorisering av ämnen) bör givetvis inte förvåna lika lite som någon annanstans.

Samtidigt gäller för allt mänskligt att saker kan vara mer eller mindre rena rörande sådant, innehålla mer eller mindre brus och ta mer eller mindre redundans runt budskapet för att i en lokaliserad punkt ha mening.

Jag har aldrig försökt ta länkar som ett fallstudie kring detta just därför att det har en hel del av allt detta vilket gör det problematiskt att få något värde från det annat än för mycket stora populationer eller när personlig intelligens gör en bedömning samtidigt som språket möjligen är ofullständigt (det beror på situation där det i en artikel inte är det men i t.ex. en länkkatalog där sortering är dålig är ofullständigt) ändå kan ett exempel utifrån länkar vara intressant.


Fraktal vi skapade till vår artikelserie om fraktaler där en laboration ingår och en eller två till är planerade. Programmet i GNU Octave är utvecklat för laboration två där en enklare men pedagogiskt tydligare fraktal används i laboration ett: Fraktaler: Laboration I (drakens fraktal).

I följande artikel för Nyfiken vital - Octave är "Matlab" gratis i öppen källkod - användes som exempel hur kända personer uttrycks i Wikipedia bedömt från Google. Varken räkneexemplet eller nödvändigt källan är riktigt korrekta (syftet är att demonstrera GNU Octave) men vad det indikerar är riktigt avgjort på sätt ej lämpliga som ett kort exempel (tämligen komplext) av GNU Octave:

  • En symbol t.ex. här en känd person har dels en entropi från hur långsiktigt känd han är där Aristoteles bygger ett kontinuerligt värde som tenderar att öka över tiden.
  • Ögonblicket är dock ofantligt betydelsefullt och därav är President Obama kanske mer känd just nu även om det om några fall fallit tillbaka där Aristoteles kommer värderas mer.
  • Påverkan beror också på informationen vi tar in just nu. Om President Obama endast refereras i en bildtext medan Aristoteles citeras flera gånger kommer namnet Aristoteles bära en större betydelse.

Betraktar vi den kvalitetsuppdatering som vi gör nu på Nyfiken vital diskuterad på bloggen t.ex. i Uppdatering och kvalitetskontroll av länkar IX och här i Värdet av kontinuerlig uppdatering och kvalitetskontroll är ett för mig välkänt "problem" sedan länge tydligt:

Oavsett relevans, språklig kvalitet, kvalitet på externa resurser eller vetenskaplig kvalitet på forskning som diskuteras kommer äldre nyheter alltid tenderas att refereras något mer från senare nyheter.

Detta är vidare rekursivt också där det varje gång det inträffar tenderar att ge en förstärkning genom att det är mer sannolikt att även detta gör samma sak. Samma sak är jag väldigt övertygad efter att både periodvis explicit och alltid implicit följt webben sedan tidigt 1990-tal.

Både detta och de mekanismer vi människor har för att kompensera och hantera det tror jag kan motsvara hur vi fungerar i organisationer. En äldre medarbetare tenderar att känna ganska många och personer refererar därför gärna honom av gammal vana.

För att ta ett exempel på kompensation både relevant för en organisation av människor och länkar är det givetvis aktivitet. En gammal medarbetare i ett företag kanske inte gör lika mycket som en yngre medarbetare. På samma sätt kan en senare artikel som uttrycker större energi själv kompensera för hur äldre artiklar tenderar att förstärkas mer via länkar från senare nyheter (även om det sker rekursivt bakåt i tiden).

Det finns givetvis ett antal sådana möjliga samband man kan se där det egentligen är ett fåtal jag upplever att t.ex. Google använder. Varför man inte använder fler vet jag inte men några möjligheter förutom att man kanske inte känner till alla är:

  • Det kostar CPU att göra varje typ av kontroll för att bedöma sidorna där de redan har ett gigantiskt antal datorer.
  • Kostnad i prestanda gör att det är viktigt att välja mellan de starkaste faktorerna.

De som togs upp här är rörande relationer av länkar också de som uttrycker störst energi och intressant nog några jag vet Google värderar.

Ska från det ge stora organisationer ett råd för framgång där man både får den styrka storlek innebär och där man reducerar det man tappar man växer nöjer jag mig här med uttrycket:

Staying hungry.

Det ger utökad aktivitet på enskilda symboler d.v.s. rekursivt sub-organisationer ner till individer vilket kan kompensera för de energikostnader som större avstånd innebär. Värdet gäller förövrigt menar jag generellt för alla organisationer och det är mycket troligt i dessa samband vi har förklaringen till varför vältränade krigsorganisationer med stora resurser ändå har problem med barfota soldater. Området kommer dock utvecklas i en längre artikel längre fram.

En nulägesanalys ungefär var arbetet med modellen står från det tidigare perspektivet jag tog förra perioden har vi i:

Nulägesstatus: Modell av människans språk

Nu flyttar jag dock fokus ut till organisationer igen vilket är tämligen avkopplande därför att vi fortfarande har bättre datakällor för det jämfört med hjärnans neuronnät, hierarkier och polynom.