Přejít k navigační liště

Zdroják » Různé » Na strojové učení snadno s PredictionIO

Na strojové učení snadno s PredictionIO

Články Různé

Chcete ve vaší webové aplikaci použít strojové učení a nevíte, jak na to? PredictionIO je nástroj, který vám může pomoci a vše důležité obstarat za vás.

Tento text je zkráceným překladem článku Introducing PredictionIO, který napsal Donald Szeto pod licencí CC BY-SA 3.0.

PredictionIO je open source server pro strojové učení určený vývojářům, kteří chtějí vytvářet prediktivní vlastnosti typu personalizace, doporučení a objevování obsahu (content discovery). Vytvoření kvalitního enginu, který by předpovídal preference uživatele a na jejich základě mu personalizoval obsah, bylo časově dost náročné. Bylo. Dokud tu ještě nebyl Prediction v0.7.

Ukážeme vám, jak pracovat s PredictionIO na příkladu doporučování filmů. Každému uživateli budeme chtít doporučit žebříček 10 filmů. A k tomu přidáme funkci „Pokud se ti líbí tenhle film, může se ti líbit i tahle desítka dalších.“

Terminologie

Napřed vysvětlíme několik termínů, které budeme při práci s PredictionIO potřebovat.

Aplikace

Aplikacemi v PredictionIO myslíme softwarové aplikace, které PredictionIO používají. Můžeme s nimi zacházet jako s logickou separací odlišných množin dat. Aplikace může mít několik enginů, ovšem každý engine může být asociován jen s jednou aplikací.

Engine

Enginy jsou logické entity, se kterými externí aplikace interaguje skrze API. Aktuálně existují dva typy enginů: item-recommendation a item-similarity. Každý engine nabízí jedinečné nastavení podle aktuálních potřeb. Engine může používat v jedné chvílí jen jeden algoritmus.

Algoritmus

Algoritmy jsou programátorským kódem, který generuje predikční modely. Každý engine obsahuje svůj výchozí univerzální algoritmus. Pokud to potřebujete, můžete ho nahradit jiným algoritmem anebo měnit parametry algoritmu univerzálního.

Instalace

Podrobný popis instalace, který zahrnuje instalaci Java 7, MongoDB a PredictionIO najdete v původním článku v části „Getting Hands-on“.

Vytváříme aplikaci v PredictionIO

Přihlásíme se přes webové rozhraní na portu 9000 našeho serveru.

Na následujícím obrázku je první obrazovka, kterou uvidíte po přihlášení a kliknutí na tlačítko „Add an App“. Pro přidání aplikace stačí zadat její jméno a kliknout na „Add“.

predictionio-image00

Imporujeme data do PredictionIO

Před importem dat budeme potřebovat aplikační klíč naší aplikace. Získáme ho kliknutím na volbu „Develop“ hned vedle aplikace. Zobrazí se vám následující obrazovka.

predictionio-image01

Aplikační klíč pro naši aplikaci „ml100k“ je NO5FpSnGh1F3PUi7xiSGc910q63z6rxZ4BcYe039Jjf2sTrqyjOc1PmQ3MJowNwM. Ve vašem případě bude aplikační klíč jiný.

K parsování datasetu z MovieLens a jeho import do PredictionIO použijeme skript import_ml.rb. Vyžaduje Ruby gem PredictionIO, který nainstalujeme příkazem  sudo gem install predictionio.

Vlastní import je jednoduchý:

ruby import_ml.rb NO5FpSnGh1F3PUi7xiSGc910q63z6rxZ4BcYe039Jjf2sTrqyjOc1PmQ3MJowNwM u.data

Kde u.data je dataset MovieLens 100k (obsahuje 100 tisíc filmových hodnocení od tisícovky uživatelů), který získáme z webu GroupLens.

Přidáváme enginy

Engine přidáme jednoduše kliknutím na tlačítko „Add an Engine“. V našem případě jsme přidali dva „itemrec“ a „itemsim“. Jakmile jsou enginy přidané, začnou automaticky s tréninkem podle rozvrhu.

predictionio-image01

Přístup k výsledkům

Nyní můžete přistupovat k výsledkům pomocí následujících URL (API server je na portu 8000).

Perzonalizované doporučení Top 10 filmů:

http://localhost:8000/engines/itemrec/itemrec/topn.json?pio_appkey=NO5FpSnGh1F3PUi7xiSGc910q63z6rxZ4BcYe039Jjf2sTrqyjOc1PmQ3MJowNwM&pio_n=10&pio_uid=1

Pokud se ti líbí tenhle film, může se ti líbit i tahle desítka dalších:

http://localhost:8000/engines/itemsim/itemsim/topn.json?pio_appkey=NO5FpSnGh1F3PUi7xiSGc910q63z6rxZ4BcYe039Jjf2sTrqyjOc1PmQ3MJowNwM&pio_n=10&pio_iid=1

Můžete v nich měnit parametry pio_uid (id uživatele) a pio_iid (id položky, tj. filmu).

Další informace

Komentáře

Subscribe
Upozornit na
guest
1 Komentář
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
cpt-nemo

Tedy praktické, ne z „zkusil jsem to a odložil“. Pokud ano, bude k tomu nějaké pokračování?

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.