Programování

Užijte si strojové učení s Mahoutem na Hadoopu

„Mahout“ je hindský výraz pro osobu, která jezdí na slonu. Slon je v tomto případě Hadoop - a Mahout je jedním z mnoha projektů, které mohou sedět na vrcholu Hadoopu, i když pro jeho spuštění nepotřebujete vždy MapReduce.

Mahout dává mocné matematické nástroje do rukou pouhých smrtelných vývojářů, kteří píší InterWebs. Je to balíček implementací nejpopulárnějších a nejdůležitějších algoritmů strojového učení, přičemž většina implementací je navržena speciálně pro použití Hadoop k umožnění škálovatelného zpracování obrovských datových sad. Některé algoritmy jsou vzhledem k povaze algoritmu dostupné pouze v neparalelizovatelné „sériové“ podobě, ale všechny mohou využívat výhod HDFS pro pohodlný přístup k datům ve vašem zpracovatelském kanálu Hadoop.

[Víš o Hadoopu právě teď | Pracujte chytřeji, ne tvrději - stáhněte si Průvodce pro přežití vývojářů, kde najdete všechny tipy a trendy, které programátoři potřebují znát. | Objevte novinky v podnikových aplikacích pomocí informačního zpravodaje Technologie: Aplikace. ]

Strojové učení je pravděpodobně nejpraktičtější podmnožinou umělé inteligence (AI) se zaměřením na pravděpodobnostní a statistické techniky učení. Pro všechny, kteří jste AI geekové, je zde několik algoritmů strojového učení zahrnutých do Mahouta: shlukování K-prostředků, fuzzy shlukování K-prostředků, K-prostředky, latentní Dirichletova alokace, rozklad singulární hodnoty, logistická regrese, naivní Bayes a náhodné lesy. Mahout také nabízí abstrakce vyšší úrovně pro generování „doporučení“ (à la populární stránky elektronického obchodování nebo sociální sítě).

Vím, že když někdo začne mluvit o strojovém učení, AI a Tanimotových koeficientech, pravděpodobně uděláš popcorn a zvýšíš to, že? Já také ne. Zvláštní je, že navzdory složitosti matematiky má Mahout snadno použitelné API. Zde je ochutnávka:

// načtěte náš datový soubor nějak

Model DataModel = nový FileDataModel (nový soubor ("data.txt"));

ItemSimilarity sim = nový LogLikelihoodSimilarity (model);

GenericItemBasedRecommender r = nový GenericItemBasedRecommender (model, sim);

LongPrimitiveIterator items = dm.getItemIDs ();

while (items.hasNext ()) {

dlouhý itemId = items.nextLong ();

Seznam doporučení = r.mostSimilarItems (itemId, 10);

// udělejte něco s těmito doporučeními

}

Co by tento malý snip udělal, je načíst datový soubor, proklínat položky a poté získat 10 doporučených položek na základě jejich podobnosti. Toto je běžný úkol elektronického obchodování. Jen proto, že dvě položky jsou podobné, ještě neznamená, že je chci obě. Ve skutečnosti v mnoha případech pravděpodobně nechci koupit dva podobné předměty. Myslím, že jsem si nedávno koupil kolo - nechci nejpodobnější položku, kterou by bylo jiné kolo. Ostatní uživatelé, kteří si koupili kola, si také koupili pneu na pneumatiky, takže Mahout nabízí také uživatelské doporučení.

Oba příklady jsou velmi jednoduchými doporučovateli a Mahout nabízí pokročilejší doporučení, která zohledňují více než několik faktorů a mohou vyvážit vkus uživatelů s vlastnostmi produktu. Žádný z nich nevyžaduje pokročilé distribuované výpočty, ale Mahout má jiné algoritmy, které to vyžadují.

Nad rámec doporučení

Mahout je mnohem víc než vymyšlené rozhraní API pro elektronický obchod. Jiné algoritmy ve skutečnosti vytvářejí předpovědi a klasifikace (například skryté Markovovy modely, které podporují většinu rozpoznávání řeči a jazyka na internetu). Může vám dokonce pomoci najít shluky nebo spíše seskupit věci, jako buňky ... lidí nebo něco, takže jim můžete poslat .... dárkové koše na jednu adresu.

Samozřejmě, ďábel je v detailech a já jsem se zabýval opravdu důležitou částí, kterou je ten úplně první řádek:

Model DataModel = nový FileDataModel (nový soubor ("data.txt"));

Hej, kdybys mohl dostat nějaké matematické nadšence, aby udělali veškerou práci a snížili všechny výpočty na zhruba 10 řádků, které tvoří algoritmus, byli bychom všichni bez práce. Jak se však tato data dostala ve formátu, který jsme potřebovali pro doporučení? Schopnost navrhnout implementaci tohoto algoritmu je důvodem, proč vývojáři dělají velké peníze, ai když Mahout nepotřebuje Hadoop k implementaci mnoha svých algoritmů strojového učení, možná budete potřebovat Hadoop k vložení dat do tří sloupců jednoduchého je doporučen doporučující.

Mahout je skvělý způsob, jak využít řadu funkcí od doporučovacích modulů přes rozpoznávání vzorů až po dolování dat. Jakmile jsme jako průmysl hotovi s velkým a tlustým nasazením Hadoop, exploduje zájem o strojové učení a obecněji AI, jak jeden pozorný komentátor mého článku Hadoop zaznamenal. Bude tam pomáhat Mahout.

Tento článek „Užijte si strojové učení s Mahoutem na Hadoopu“ byl původně publikován na .com. Držte krok s nejnovějšími novinkami ve vývoji aplikací a přečtěte si více blogu Strategického vývojáře Andrewa Olivera na .com. Nejnovější zprávy o obchodních technologiích najdete na Twitteru na .com.