Na strojové učení snadno s PredictionIO

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.
Nálepky:
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“.
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.
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.
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
Tedy praktické, ne z „zkusil jsem to a odložil“. Pokud ano, bude k tomu nějaké pokračování?