Ohjelmointi

Nauti koneopetuksesta Mahoutin kanssa Hadoopissa

"Mahout" on hindinkielinen termi henkilölle, joka ratsastaa norsulla. Norsu on tässä tapauksessa Hadoop - ja Mahout on yksi monista projekteista, jotka voivat istua Hadoopin päällä, vaikka et tarvitse aina MapReducea sen ajamiseksi.

Mahout antaa tehokkaat matemaattiset työkalut pelkästään kuolevaisille kehittäjille, jotka kirjoittavat InterWebit. Se on paketti suosituimpien ja tärkeimpien koneoppimisalgoritmien toteutuksista, ja suurin osa toteutuksista on suunniteltu erityisesti Hadoopin käyttöön valtavien tietojoukkojen skaalattavan käsittelyn mahdollistamiseksi. Jotkut algoritmit ovat algoritmin luonteen vuoksi saatavana vain ei-rinnakkaistettavassa "sarja" -muodossa, mutta kaikki voivat hyödyntää HDFS: ää, jotta Hadoop-käsittelyputkesi tiedot ovat kätevästi käytettävissä.

[Tiedä tämä juuri nyt Hadoopista | Työskentele fiksummin, ei kovemmin - lataa kehittäjien selviytymisopas kaikista vinkeistä ja trendeistä, jotka ohjelmoijien on tiedettävä. | Löydä liiketoiminnan sovellusten uudet ominaisuudet Technology: Applications -uutiskirjeellä. ]

Koneoppiminen on todennäköisesti tekoälyn käytännöllisin osajoukko, joka keskittyy todennäköisyys- ja tilastollisiin oppimistekniikoihin. Kaikille teidän tekoälyn geekeille, tässä on joitain Mahoutin mukana olevista koneoppimisalgoritmeista: K tarkoittaa klusterointia, sumea K tarkoittaa klusterointia, K tarkoittaa, piilevää Dirichlet-allokointia, yksittäisen arvon hajoamista, logistista regressiota, naiivia Bayesia ja satunnaista metsät. Mahoutissa on myös korkeamman tason abstraktioita "suositusten" luomiseksi (suosittuja verkkokauppasivustoja tai sosiaalisia verkostoja).

Tiedän, että kun joku alkaa puhua koneoppimista, tekoälyä ja Tanimoto-kertoimia, luulet todennäköisesti popcornia ja piristää, eikö? En minäkään. Kummallista, matematiikan monimutkaisuudesta huolimatta, Mahoutilla on helppokäyttöinen sovellusliittymä. Tässä on maku:

// lataa tietotiedostomme jotenkin

DataModel-malli = uusi FileDataModel (uusi tiedosto ("data.txt"));

ItemSimilarity sim = uusi LogLikelihoodSimilarity (malli);

GenericItemBasedRecommender r = uusi GenericItemBasedRecommender (malli, sim);

LongPrimitiveIterator-kohteet = dm.getItemIDs ();

while (items.hasNext ()) {

pitkä itemId = items.nextLong ();

Luettelo suosituksista = r.mostSimilarItems (itemId, 10);

// tee jotain näillä suosituksilla

}

Mitä tämä pieni katkelma tekisi, on ladata datatiedosto, kirota kohteet läpi ja saada sitten 10 suositeltua kohdetta niiden samankaltaisuuden perusteella. Tämä on yleinen verkkokaupan tehtävä. Kuitenkin se, että kaksi tuotetta on samanlaisia, ei tarkoita, että haluan ne molemmat. Itse asiassa monissa tapauksissa en todennäköisesti halua ostaa kahta samanlaista tuotetta. Tarkoitan, että ostin äskettäin pyörän - en halua samanlaista tuotetta, joka olisi toinen pyörä. Kuitenkin muutkin polkupyöriä ostaneet käyttäjät ostivat myös rengaspumppuja, joten Mahout tarjoaa myös käyttäjäpohjaisia ​​suosittelijoita.

Molemmat esimerkit ovat hyvin yksinkertaisia ​​suosittelijoita, ja Mahout tarjoaa edistyneempiä suosittelijoita, jotka ottavat huomioon useamman kuin muutaman tekijän ja voivat tasapainottaa käyttäjän maun tuotteen ominaisuuksiin. Mikään näistä ei vaadi edistynyttä hajautettua tietojenkäsittelyä, mutta Mahoutilla on muita algoritmeja.

Suositusten ulkopuolella

Mahout on paljon enemmän kuin hieno verkkokaupan sovellusliittymä. Itse asiassa muut algoritmit tekevät ennusteita, luokituksia (kuten piilotetut Markov-mallit, jotka käyttävät suurinta osaa Internetin puheen- ja kielentunnistuksesta). Se voi jopa auttaa sinua löytämään klustereita tai pikemminkin ryhmittelemään asioita, kuten ihmisten solut ... tai jotain, jotta voit lähettää heille .... lahjakorit yhteen osoitteeseen.

Tietysti paholainen on yksityiskohdissa, ja olen hämmentänyt todella tärkeää osaa, joka on aivan ensimmäinen rivi:

DataModel-malli = uusi FileDataModel (uusi tiedosto ("data.txt"));

Hei, jos saisit matematiikan nörttejä tekemään kaiken työn ja vähentämään kaiken laskennan noin kymmenelle riville, jotka muodostavat algoritmin, me kaikki olisimme poissa työstä. Kuinka nämä tiedot saivat kuitenkin suositusten edellyttämässä muodossa? Kyky suunnitella kyseisen algoritmin toteutus on syy, miksi kehittäjät ansaitsevat suuria taaloja, ja vaikka Mahout ei tarvitse Hadoopia monien koneoppimisalgoritmiensa toteuttamiseen, saatat tarvita Hadoopia lisäämään tiedot kolmeen sarakkeeseen yksinkertainen suositeltava vaaditaan.

Mahout on loistava tapa hyödyntää useita ominaisuuksia suositusmoottoreista mallin tunnistamiseen ja tiedonlouhintaan. Kun olemme teollisuudessa saaneet aikaan suuren, lihavan Hadoop-käyttöönoton, kiinnostus koneoppimiseen ja mahdollisesti tekoälyyn räjähtää, kuten yksi oivaltava kommentaattori Hadoop-artikkelissani huomautti. Mahout auttaa siellä.

Tämä artikkeli "Nauti koneoppimisesta Mahoutin kanssa Hadoopilla" julkaistiin alun perin osoitteessa .com. Seuraa sovelluskehityksen viimeisimpiä uutisia ja lue lisää Andrew Oliverin Strategic Developer -blogista osoitteessa .com. Uusimmat yritysteknologiauutiset ovat seuraamalla .com Twitterissä.