Насладете се на машинно обучение с Mahout на Hadoop

"Mahout" е хинди термин за човек, който язди слон. В този случай слонът е Hadoop - и Mahout е един от многото проекти, които могат да седят на върха на Hadoop, въпреки че не винаги се нуждаете от MapReduce, за да го стартирате.

Mahout дава мощни математически инструменти в ръцете на простосмъртните разработчици, които пишат InterWebs. Това е пакет от реализации на най-популярните и важни алгоритми за машинно обучение, като по-голямата част от внедренията са проектирани специално за използване на Hadoop, за да позволят мащабируема обработка на огромни масиви от данни. Някои алгоритми са достъпни само в непаралелизируема "серийна" форма поради естеството на алгоритъма, но всички могат да се възползват от HDFS за удобен достъп до данни във вашия конвейер за обработка на Hadoop.

[Знаете това сега за Hadoop | Работете по-умно, не по-трудно - изтеглете Ръководството за оцеляване на разработчиците за всички съвети и тенденции, които програмистите трябва да знаят. | Открийте новостите в бизнес приложенията с информационния бюлетин „Технологии: Приложения“. ]

Машинното обучение е може би най-практичната подгрупа на изкуствения интелект (ИИ), фокусирайки се върху вероятностни и статистически техники за обучение. За всички вас, AI отрепки, ето някои от алгоритмите за машинно обучение, включени в Mahout: K-означава групиране, размито K-означава групиране, K-означава, латентно разпределение на Дирихле, декомпозиция на единична стойност, логистична регресия, наивни Bayes и произволни гори. Mahout предлага и абстракции от по-високо ниво за генериране на „препоръки“ (а-ла популярни сайтове за електронна търговия или социални мрежи).

Знам, че когато някой започне да говори за машинно обучение, коефициенти на AI и Tanimoto, вероятно приготвяте пуканки и перки, нали? Нито пък аз. Странно, въпреки сложността на математиката, Mahout има лесен за използване API. Ето един вкус:

//load our datafile somehow

DataModel model = new FileDataModel(new File("data.txt"));

ItemSimilarity sim = new LogLikelihoodSimilarity(model);

GenericItemBasedRecommender r = new GenericItemBasedRecommender(model, sim);

LongPrimitiveIterator items = dm.getItemIDs();

while(items.hasNext()) {

long itemId = items.nextLong();

List recommendations = r.mostSimilarItems(itemId, 10);

//do something with these recommendations

}

Това, което този малък фрагмент би направил, е да зареди файл с данни, да прокълне елементите и след това да получи 10 препоръчани елемента въз основа на тяхното сходство. Това е често срещана задача за електронна търговия. Но само защото два елемента са сходни, не означава, че ги искам и двамата. Всъщност в много случаи вероятно не искам да купувам два подобни артикула. Искам да кажа, наскоро си купих мотор - не искам най-сходния артикул, който би бил друг мотор. Други потребители, които са закупили велосипеди, също са закупили помпи за гуми, така че Mahout предлага и препоръчани от потребителя препоръки.

И двата примера са много прости препоръчители, а Mahout предлага по-напреднали препоръчители, които включват повече от няколко фактора и могат да балансират вкуса на потребителя спрямо характеристиките на продукта. Нито едно от тях не изисква усъвършенствано разпределено изчисление, но Mahout има и други алгоритми, които го правят.

Отвъд препоръките

Mahout е много повече от фантастичен API за електронна търговия. Всъщност други алгоритми правят прогнози, класификации (като скритите модели на Марков, които задвижват по-голямата част от разпознаването на речта и езика в Интернет). Дори може да ви помогне да намерите клъстери или по-скоро да групирате неща, като клетки ... на хора или нещо друго, за да можете да ги изпратите .... кошници с подаръци на един адрес.

Разбира се, дяволът е в детайлите и аз прегледах наистина важната част, а именно този първи ред:

DataModel model = new FileDataModel(new File("data.txt"));

Ей, ако можете да накарате някои математически отрепки да свършат цялата работа и да намалят всички изчисления до около 10-те реда, които съставят алгоритъма, всички ще останем без работа. Как обаче тези данни получиха във формата, който ни беше необходим за препоръките? Възможността да проектирате изпълнението на този алгоритъм е причината разработчиците да печелят големи пари и дори ако Mahout не се нуждае от Hadoop, за да внедри много от своите алгоритми за машинно обучение, може да се наложи Hadoop да постави данните в трите колони прости препоръчителен препоръчител.

Mahout е чудесен начин да се възползват от редица функции - от механизми за препоръки до разпознаване на образци до извличане на данни. След като ние като индустрия приключим с голямото, дебело внедряване на Hadoop, интересът към машинното обучение и евентуално AI по-общо ще избухне, както отбеляза един проницателен коментатор на моята статия за Hadoop. Mahout ще бъде там, за да помогне.

Тази статия „Наслаждавайте се на машинно обучение с Mahout в Hadoop“ беше публикувана първоначално в .com. Бъдете в крак с последните новини в разработването на приложения и прочетете повече от блога на Andrew Oliver за стратегически разработчици в .com. За най-новите новини за бизнес технологии следвайте .com в Twitter.