21. listopadu 2010

Google Prediction API aneb získejte více informací ze svých dat


Na letošní květnové konferenci Google I/O bylo představeno plno novinek (oproti loňskému roku kdy byl představen jeden produkt... No a kde je teď Wave a kde Lars :) Jedním z produktů, či spíše služeb je Google Prediction API. Ve snaze porozumět o co se jedná jsem se spokojil s jednoduchým příkladem - třeba přeložení jazyka. A s tím jsem žil několik měsíců. Chyba! V poslední týdnu jsem se začal o tuto problematiku více zajímat a objevuji zajímavou, zatím nepříliš známou službu. Takže si ji pojďme představit...


Ukázkové motivační business řešení
  1. Zjistěte jaké produkty Váš zákazník v historii nakoupili (např. víno, sýr, olivy, párátka,..)
  2. Porovnejte toto chování se všemi zákazníky a najděte ty s nejvíce podobnou preferencí
  3. Odeberte již koupené produkty a zaměřte se na ty zbylé (pokud je tam produkt vícekrát dejte mu větší váhu)
  4. Nabídněte svému zákazníkovi co bych mohl chtít/potřebovat
  5. Ve zkratce? Právě jste udělali doporučování produktů jako to dělá Amazon



Jak název vypovídá jedná se o předvídání či odhad budoucího vývoje z dat minulých a vztahy mezi nimi. Vše funguje jako ostatní Google produkty- formou služby a napojení na API. Tedy něco jako blackbox - černá skřínka, u které nevíte jak přesně funguje a v důsledku vás to možná ani nezajímá. Důležité je znát jaká data máte dát na vstup a jaká na výstup. Stejná paralela je s Gmailem, kde také nemusíte tušit jaké přesné procesy a funkce se o tuto službu starají, zajímá Vás jen z uživatelského hlediska funčknost.

Takže si nejdříve vytvoříte vzorek dat  - jedná se o obyčejný textový soubor s hodnotami odělenými čárkami (CSV) - co řádek to jeden vzorek. Tento soubor se nahraje do další nové služby - Google Storage for Developers. V té máte uložený své příhrádky (bucket) na soubory (object). Představte si to jako třídění do složek.

Poté je potřeba vytrénovat svoji umělou inteligenci,. To se dělá přes odesláním požadavků na speciální URL (předpokládá se že už máte auth. token)

POST https://www.googleapis.com/prediction/v1.1/training?data=prihradka%2Fdata


Počkejte chvíli než se data zpracují, celková délka je závislá na velikosti souboru. Data ke zpracování opět posílat na URL



POST https://www.googleapis.com/prediction/v1.1/training/prihradka%2Fdata/predict


s daty v těle


{"data":{
  "input" : {
    "mixture" : [ sloupec1,sloupec2 ] }}}

Zpátky dostanete výsledek, který se liší podle toho do jaké kategorie patří (tedy zda chceme data zařazovat do skupin nebo chceme předvídat nějaký vývoj)

Vytváření modelů se dělí do dvou kategorií:
  • klasifikační 
  • regresní
Klasifikační model
Jak název vypovídá, potřebujete klasifikovat data. Nejlépe si to ukážeme na příkladu. Představte si že máte emaily a ty potřebujete automaticky roztřídit. Např. emailová podpora/helplinka pro různé oblasti (vývoj, konzultace, školení, oprava, atd). Všechny texty emailů si oštítkujete kam patří a vytvoříme z nich textový soubor.

"vývoj", "Dobrý den, rád bych si nechal vyvinout"
"školení", "Objednávám školení"
"oprava", "Rozbil se mi počítač, pomozte"
"konzultace", "Sháním dobrou radu"
"školení", "Kolik stojí ten kurz Google Wave"
"konzultace", "Dobrý den, potřebuji poradit"

Čím více dat máte, tím bude výsledek přesnější. Opět nahrajeme na web (Google Storage) a necháme vytrénovat bázi. Poté pokud pošlete jakoukoliv větu, např.  "Je to rozbité potřebuji pomoc", systém vyhodnotí do jaké kategorie nejpravděpodobněji daná věta patří. (v našem případě by mohlo jít o sekci oprava). Velmi jednoduše si takto můžete třídit emaily do různých oddělení podle klíčových slov a vztahů mezi nimi.


Regresní model

Opět vstupem je textový CSV soubor, jenže v tomto případě se snažíte odhalit budoucí stav. Pokud máme data jako na obrázku níže, tak první hodnotou je velikost dané osoby (označeno jako Example Value). Zbývající data na řádku (featurese) tuto hodnotu určují. V našem případě jde o pohlaví, výšku otce, výšku matky a pak národnost. Cílem v případě regresního modelu vložit data (např. "M", 1.68, 1.8, "Czech"), tak aby nám to vrátilo na základě předchozích dat, odhadnout hodnotu výšky daného jedince.


Služba je zatím pouze na pozvánky, navíc potřebujete přístup do Google Storage for Developers, které je taky na pozvánky. Možných řešení nabízí velmi mnoho, viz pár nadhozených příkladu z Google prezentace níže.




Pokud chcete být první a máte chuť realizovat podobnou implementaci ve svém obchodě nebo projektu, ozvěte se mi na ivan@appsatori.eu . Můžeme se domluvit na spolupráci a analýza či implementace Vás může vyjít zdarma (jakožto ukázková případová studie s anonymizovanými daty)

/ dopl.:  pouze pro smysluplné a zajímavé projekty, vyhrazuji si právo výzvu zrušit /






    Zajímá tě více?

    4 komentáře:

    1. Moc pěkné, zajímalo by mě jak to funguje uvnitř černé skřínky. Jestli tam je jen klasická metoda nejmenších čtverců nebo něco sofistikovanějšího jako nějaká jednodušší neuronová síť apod.

      Už se těším na pozvánku, zatím to ale vypadá, že je to jen pro USA based developery.

      OdpovědětVymazat
    2. Abych pravdu řekl tak by mě to taky zajímalo, ale jen na uživatelské úrovni..

      Než bych se donutil sám něco podobného naprogramovat a než by to bylo použitelné, trvalo by to daleko déle

      OdpovědětVymazat
    3. No vyzkoušíme to na predikci vývoje na akciovém trhu a uvidíme co Google uhádne :-)

      OdpovědětVymazat