Programiranje

Uživajte v strojnem učenju z Mahoutom na Hadoopu

"Mahout" je hindujski izraz za osebo, ki jaha slona. Slon je v tem primeru Hadoop - in Mahout je eden izmed mnogih projektov, ki lahko sedijo na vrhu Hadoopa, čeprav za njegovo izvajanje ne potrebujete vedno MapReduce.

Mahout daje močna matematična orodja v roke zgolj smrtnim razvijalcem, ki pišejo InterWebs. Gre za paket izvedb najbolj priljubljenih in najpomembnejših algoritmov strojnega učenja, pri čemer je večina izvedb posebej zasnovana za uporabo Hadoopa za omogočanje razširljive obdelave ogromnih podatkovnih nizov. Nekateri algoritmi so zaradi narave algoritma na voljo samo v "paralelni" obliki, ki ga ni mogoče paralelizirati, vsi pa lahko izkoristijo HDFS za priročen dostop do podatkov v vašem cevovodu za obdelavo Hadoop.

[To vejte zdaj o Hadoopu | Delajte pametneje in ne težje - prenesite Vodnik za preživetje razvijalcev, kjer boste našli vse nasvete in trende, ki jih morajo poznati programerji. | Odkrijte, kaj je novega v poslovnih aplikacijah, s časopisom Technology: Applications. ]

Strojno učenje je verjetno najbolj praktična podskupina umetne inteligence (AI), ki se osredotoča na verjetnostne in statistične tehnike učenja. Tukaj je nekaj algoritmov strojnega učenja, vključenih v Mahout: K-pomeni združevanje v skupine, mehke K-pomeni združevanje v skupine, K-pomeni, latentno dodeljevanje Dirichleta, razgradnjo singularne vrednosti, logistično regresijo, naivne Bayesove in naključne gozdov. Mahout vsebuje tudi abstrakcije na višji ravni za ustvarjanje "priporočil" (priljubljena spletna mesta za e-poslovanje ali družabna omrežja).

Vem, ko se nekdo začne pogovarjati o strojnem učenju, koeficientih AI in Tanimoto, verjetno pripravite kokice in perk, kajne? Jaz tudi ne. Nenavadno je, da ima Mahout kljub zapletenosti matematike enostaven API. Tukaj je okus:

// nekako naložimo našo podatkovno datoteko

Model DataModel = nov FileDataModel (nova datoteka ("data.txt"));

ItemS similarity sim = new LogLikelihoodS similarity (model);

GenericItemBasedRecommender r = novo GenericItemBasedRecommender (model, sim);

Elementi LongPrimitiveIterator = dm.getItemIDs ();

while (items.hasNext ()) {

dolga itemId = items.nextLong ();

Seznam priporočil = r.mostS similarItems (itemId, 10);

// naredite nekaj s temi priporočili

}

Ta mali odrezek bi naredil, da naloži podatkovno datoteko, preklinja elemente in nato dobi 10 priporočenih elementov glede na njihovo podobnost. To je pogosta naloga e-poslovanja. Vendar samo zato, ker sta si dva predmeta podobna, še ne pomeni, da si jih želim oba. Pravzaprav v mnogih primerih verjetno ne želim kupiti dveh podobnih izdelkov. Mislim, pred kratkim sem kupil kolo - ne želim si najbolj podobnega izdelka, kar bi bilo drugo kolo. Vendar so tudi drugi uporabniki, ki so kupili kolesa, kupili črpalke za pnevmatike, zato Mahout ponuja tudi uporabniške priporočila.

Oba primera sta zelo preprosta priporočila, Mahout pa ponuja naprednejše priporočevalce, ki upoštevajo več kot nekaj dejavnikov in lahko uravnotežijo okus uporabnikov glede na lastnosti izdelka. Nobeno od teh ne zahteva naprednega porazdeljenega računalništva, Mahout pa ima tudi druge algoritme, ki to zahtevajo.

Poleg priporočil

Mahout je veliko več kot le modni API za e-trgovino. Pravzaprav drugi algoritmi dajejo napovedi in klasifikacije (na primer skriti Markov model, ki poganja večino prepoznavanja govora in jezika na internetu). Lahko vam celo pomaga najti grozde ali bolje združiti stvari, na primer celice ... ljudi ali kaj podobnega, da jih lahko pošljete .... darilne košare na en sam naslov.

Seveda je hudič v podrobnostih in podrobneje sem prebral res pomemben del, to je tisto prvo vrstico:

Model DataModel = nov FileDataModel (nova datoteka ("data.txt"));

Hej, če bi lahko priskrbel nekaj matematikov, da bi opravili vse delo in zmanjšali celotno računalništvo na približno 10 vrstic, ki sestavljajo algoritem, bi vsi ostali brez dela. Kako pa so ti podatki dobili obliko, ki smo jo potrebovali za priporočila? Zaradi tega, da lahko razvijalci izvajajo ta algoritem, imajo velike zaslužke, in četudi Mahout ne potrebuje Hadoopa za izvajanje številnih algoritmov strojnega učenja, boste morda potrebovali Hadoop, da bo podatke preprosto postavil v tri stolpce. obvezen priporočevalec.

Mahout je odličen način za izkoriščanje številnih funkcij od priporočilnih mehanizmov do prepoznavanja vzorcev do podatkovnega rudarjenja. Ko bomo kot industrija končali z velikim, debelim uvajanjem Hadoopa, bo zanimanje za strojno učenje in morda na splošno AI eksplodiralo, kot je opazil en pronicljiv komentator mojega članka o Hadoopu. Mahout bo priskočil na pomoč.

Ta članek »Uživajte v strojnem učenju z Mahoutom v Hadoopu« je bil prvotno objavljen na .com. Bodite na tekočem z najnovejšimi novicami pri razvoju aplikacij in preberite več o Andrew Oliver's Strategic Developer blog na .com. Za najnovejše novice o poslovni tehnologiji spremljajte .com na Twitterju.

$config[zx-auto] not found$config[zx-overlay] not found