SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
Методы	
  распределенной	
  обработки	
  
больших	
  объемов	
  данных	
  в	
  Hadoop	
  
Москва	
  2014	
  
Лекция	
  10:	
  Apache	
  Mahout	
  
Apache	
  Mahout	
  in	
  Ac.on	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
•  Цель	
  проекта	
  -­‐	
  получить	
  масштабируемую	
  
библиотеку	
  машинного	
  обучения:	
  
•  Масштабируемость	
  больших	
  объемов	
  данных	
  
•  Масштабируемость	
  бизнес	
  задач	
  
•  Масштабируемость	
  сообщества	
  
•  Режимы	
  работы:	
  	
  
•  В	
  кластере	
  Hadoop	
  
•  Автономно,	
  на	
  одном	
  компьютере	
  
•  Открытый	
  исходный	
  код	
  на	
  Java,	
  со	
  
свободной	
  для	
  коммерческого	
  
использования	
  лицензией	
  Apache	
  Sogware	
  
•  Страница	
  проекта:	
  hkp://mahout.apache.org	
  
Реализованные	
  алгоритмы	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
•  Классификация:	
  
•  Наивный	
  Байесовский	
  классификатор	
  (Naive	
  Bayes)	
  
•  Скрытая	
  Марковская	
  модель	
  (CMM/HMM)	
  
•  Стохастический	
  градиентный	
  спуск	
  (SGD)	
  
•  Random	
  Forest	
  
•  Кластеризация:	
  	
  
•  Метод	
  k-­‐средних	
  (k-­‐Means)	
  
•  «Слабая»	
  или	
  пред	
  кластеризация	
  -­‐	
  Canopy	
  	
  
•  Нечеткая	
  кластеризация	
  -­‐	
  Fuzzy	
  k-­‐Means	
  (Fuzzy	
  C-­‐Means	
  /	
  FCM)	
  
•  StreamingKMeans	
  
•  Спектральная	
  кластеризация	
  (Spectral	
  Clustering)	
  
•  Рекомендации:	
  
•  Коллаборативная	
  фильтрация	
  (CF)	
  
Классификация:	
  Naive	
  Bayes	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
Два	
  алгоритма	
  с	
  поддержкой	
  Map-­‐Reduce:	
  
•  Mul†nomial	
  Naive	
  Bayes	
  	
  
•  Transformed	
  Weight-­‐normalized	
  Complement	
  Naive	
  Bayes	
  (CBayes)	
  
Mul†nomial	
  Naive	
  Bayes	
  -­‐	
  это	
  просто	
  наивный	
  байесовский	
  классификатор	
  
Преимущество:	
  классификаторы	
  быстры	
  и	
  достаточно	
  точны	
  
Недостаток:	
  обычно	
  отказывают,	
  когда	
  размер	
  обучающих	
  примеров	
  для	
  каждого	
  класса	
  не	
  
сбалансирован	
  или	
  когда	
  данные	
  не	
  являются	
  достаточно	
  независимыми.	
  
	
  
CBayes-­‐	
  комплементарный	
  наивный	
  байесовский	
  классификатор.	
  Пытается	
  решить	
  
некоторые	
  недостатки,	
  характерные	
  для	
  байесовского	
  классификатора,	
  при	
  сохранении	
  его	
  
простоты	
  и	
  быстродействия.	
  
	
  
Классификация:	
  Naive	
  Bayes	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
Пример	
  исходного	
  корпусе	
  текстов:	
  
hkp://people.csail.mit.edu/jrennie/20Newsgroups/20news-­‐bydate.tar.gz	
  
mahout seq2sparse
-i ${PATH_TO_SEQUENCE_FILES}
-o ${PATH_TO_TFIDF_VECTORS}
-nv
-n 2
-wt tfidf
mahout trainnb
-i ${PATH_TO_TFIDF_VECTORS}
-el
-o ${PATH_TO_MODEL}/model
-li ${PATH_TO_MODEL}/labelindex
-ow
-c
mahout testnb
-i ${PATH_TO_TFIDF_TEST_VECTORS}
-m ${PATH_TO_MODEL}/model
-l ${PATH_TO_MODEL}/labelindex
-ow
-o ${PATH_TO_OUTPUT}
-c
-seq
1.	
  Запуск	
  предпроцессинга	
  текста.	
  Указываем	
  входной	
  корпус	
  
текстов,	
  выходной	
  каталог,	
  где	
  мы	
  получим	
  результаты	
  TF-­‐IDF	
  
преобразования	
  (опция	
  -­‐wt	
  •idf)	
  и	
  параметры	
  самого	
  
преобразования,	
  в	
  частности	
  	
  L2	
  	
  нормы	
  (опция	
  -­‐n	
  2).	
  
2.	
  Запуск	
  построения	
  модели.	
  По	
  умолчанию	
  используется	
  простой	
  
байесовский	
  классификатор.	
  Но	
  можем	
  выбрать	
  модель	
  CBayes	
  
(опция	
  -­‐с)	
  	
  	
  
3.	
  Запуск	
  классификатора	
  на	
  тестовой	
  выборке.	
  
	
  
Пример	
  запуска	
  обработки	
  исходного	
  корпуса	
  текстов:	
  
hkps://github.com/apache/mahout/blob/master/examples/
bin/classify-­‐20newsgroups.sh	
  
Классификация:	
  Naive	
  Bayes	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
=======================================================
Confusion Matrix
-------------------------------------------------------
a b c d e f g h i j k l m n o p q r s t <--Classified as
381 0 0 0 0 9 1 0 0 0 1 0 0 2 0 1 0 0 3 0 |398 a=rec.motorcycles
1 284 0 0 0 0 1 0 6 3 11 0 66 3 0 6 0 4 9 0 |395 b=comp.windows.x
2 0 339 2 0 3 5 1 0 0 0 0 1 1 12 1 7 0 2 0 |376 c=talk.politics.mideast
4 0 1 327 0 2 2 0 0 2 1 1 0 5 1 4 12 0 2 0 |364 d=talk.politics.guns
7 0 4 32 27 7 7 2 0 12 0 0 6 0 100 9 7 31 0 0 |251 e=talk.religion.misc
10 0 0 0 0 359 2 2 0 0 3 0 1 6 0 1 0 0 11 0 |396 f=rec.autos
0 0 0 0 0 1 383 9 1 0 0 0 0 0 0 0 0 3 0 0 |397 g=rec.sport.baseball
1 0 0 0 0 0 9 382 0 0 0 0 1 1 1 0 2 0 2 0 |399 h=rec.sport.hockey
2 0 0 0 0 4 3 0 330 4 4 0 5 12 0 0 2 0 12 7 |385 i=comp.sys.mac.hardware
0 3 0 0 0 0 1 0 0 368 0 0 10 4 1 3 2 0 2 0 |394 j=sci.space
0 0 0 0 0 3 1 0 27 2 291 0 11 25 0 0 1 0 13 18|392 k=comp.sys.ibm.pc.hardware
8 0 1 109 0 6 11 4 1 18 0 98 1 3 11 10 27 1 1 0 |310 l=talk.politics.misc
0 11 0 0 0 3 6 0 10 6 11 0 299 13 0 2 13 0 7 8 |389 m=comp.graphics
6 0 1 0 0 4 2 0 5 2 12 0 8 321 0 4 14 0 8 6 |393 n=sci.electronics
2 0 0 0 0 0 4 1 0 3 1 0 3 1 372 6 0 2 1 2 |398 o=soc.religion.christian
4 0 0 1 0 2 3 3 0 4 2 0 7 12 6 342 1 0 9 0 |396 p=sci.med
0 1 0 1 0 1 4 0 3 0 1 0 8 4 0 2 369 0 1 1 |396 q=sci.crypt
10 0 4 10 1 5 6 2 2 6 2 0 2 1 86 15 14 152 0 1 |319 r=alt.atheism
4 0 0 0 0 9 1 1 8 1 12 0 3 0 2 0 0 0 341 2 |390 s=misc.forsale
8 5 0 0 0 1 6 0 8 5 50 0 40 2 1 0 9 0 3 256|394 t=comp.os.ms-windows.misc
=======================================================
Statistics
-------------------------------------------------------
Kappa 0.8808
Accuracy 90.8596%
Reliability 86.3632%
Reliability (standard deviation) 0.2131
Кластеризация:	
  к-­‐Means	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
k-­‐Means	
  –	
  простой	
  метод	
  кластеризации	
  с	
  заранее	
  предопределенным	
  
количеством	
  кластеров.	
  	
  
Преимущество:	
  простота	
  реализации.	
  
Недостаток:	
  очень	
  чувствителен	
  к	
  первоначальному	
  набору	
  центров	
  кластеров.	
  
Fuzzy	
  k-­‐Means	
  (с-­‐Means)	
  –	
  реализация,	
  позволяющая	
  определить	
  объект	
  к	
  разным	
  
кластерам	
  с	
  некой	
  вероятностью.	
  
	
  
Что	
  делать	
  если	
  вы	
  не	
  знаете,	
  как	
  расставить	
  начальные	
  центры	
  кластеров?	
  
Используйте	
  Canopy	
  ))	
  
Кластеризация:	
  к-­‐Means	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
Пример	
  исходного	
  корпусе	
  текстов,	
  новости	
  агенства	
  Reuters	
  за	
  1987	
  год:	
  
hkp://kdd.ics.uci.edu/databases/reuters21578/reuters21578.tar.gz	
  
mahout seq2sparse
-i ${PATH_TO_SEQUENCE_FILES}
-o ${PATH_TO_VECTORS}
--maxDFPercent 85
--namedVector
mahout kmeans
-i ${PATH_TO_VECTORS}/tfidf-vectors
-c ${PATH_TO_CLUSTERS}
-o ${PATH_TO_OUTPUT}
-dm …CosineDistanceMeasure
-c
mahout clusterdump
-i ${PATH_TO_OUTPUT}/clusters*final
-o ${PATH_TO_DUMP}
-d ${PATH_TO_VECTORS}/dictionary.file-0
-dt sequencefile … $
{PATH_TO_CLASTERED_POINTS}
1.	
  Запуск	
  предпроцессинга	
  текста.	
  Удаляем	
  слишком	
  часто	
  
используемые	
  термины	
  (опция	
  –maxDFPercent	
  или	
  –x).	
  Все	
  
слова	
  преобразуем	
  в	
  вектор	
  в	
  числовом	
  формате.	
  
Предварительно	
  необходимо	
  корпус	
  текстов	
  обработать	
  
утилитой	
  seqdirectory.	
  
2.	
  Запуск	
  кластеризацию.	
  Для	
  старта	
  необходимо	
  иметь	
  
стартовые	
  кластера	
  (опция	
  –с).	
  Указываем	
  меру	
  определения	
  
расстояния	
  из	
  стандартного	
  класса,	
  например	
  	
  
org.apache.mahout.common.distance.CosineDistanceMeasure.	
  
3.	
  Запуск	
  утилиты,	
  преобразующий	
  результат	
  в	
  «читабельный»	
  
формат	
  для	
  дальнейшего	
  анализа.	
  
	
  
Пример	
  запуска	
  обработки	
  исходного	
  корпуса	
  текстов:	
  
hkps://github.com/apache/mahout/blob/master/examples/
bin/cluster-­‐reuters.sh	
  
Рекомендации	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
Рекомендации:	
  Коллаборативная	
  фильтрация	
  	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
Термин	
  «Коллаборативная	
  фильтрация»	
  
впервые	
  употребил	
  Дэвид	
  Голдберг	
  (David	
  
Goldberg)	
  из	
  компании	
  Xerox	
  PARC	
  в	
  1992	
  году	
  
в	
  статье	
  «Using	
  collabora†ve	
  filtering	
  to	
  weave	
  
an	
  informa†on	
  tapestry».	
  
	
  
Системы	
  коллаборативной	
  фильтрации	
  
обычно	
  применяют	
  двухступенчатую	
  схему:	
  
1.  Находят	
  тех,	
  кто	
  разделяет	
  оценочные	
  
суждения	
  «активного»	
  (прогнозируемого)	
  
пользователя;	
  
2.  Используют	
  оценки	
  сходно	
  мыслящих	
  
людей,	
  найденных	
  на	
  первом	
  шаге,	
  для	
  
вычисления	
  прогноза.	
  
Рекомендации:	
  Коллаборативная	
  фильтрация	
  	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
Типичный	
  кейс	
  реализации	
  -­‐	
  рекомендация	
  продуктов	
  в	
  eCommerce,	
  такие	
  как	
  Amazon,	
  
Ne•lix,	
  Overstock.	
  
•  Строим	
  матрицу,	
  определяющую	
  отношения	
  между	
  парами	
  предметов,	
  для	
  
нахождения	
  похожих	
  предметов.	
  
•  Используя	
  построенную	
  матрицу	
  и	
  информацию	
  о	
  пользователе,	
  строим	
  прогнозы	
  
его	
  оценок.	
  
Рекомендации:	
  Коллаборативная	
  фильтрация	
  	
  
	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
Существуют,	
  как	
  минимум,	
  два	
  подхода	
  в	
  Коллаборативнай	
  фильтрации:	
  
1.  User-­‐based	
  filtra†on	
  -­‐	
  фильтрация	
  по	
  схожести	
  пользователей,	
  базирующаяся	
  на	
  
измерении	
  подобия	
  пользователей;	
  
Собрав	
  данные	
  о	
  том,	
  что	
  людям	
  нравится,	
  нужно	
  как-­‐то	
  определить,	
  насколько	
  их	
  вкусы	
  схожи.	
  Для	
  
этого	
  каждый̆	
  человек	
  сравнивается	
  со	
  всеми	
  другими	
  и	
  вычисляется	
  коэффициент	
  подобия	
  (или	
  
оценка	
  подобия).	
  Наиболее	
  распространены	
  два	
  способа	
  оценки:	
  
•  Эвклидово	
  расстояние	
  
	
  
	
  
•  Коэффициент	
  корреляции	
  Пирсона	
  
(упрощенный	
  аналог,	
  полученная	
  с	
  помощью	
  
преобразования)	
  
	
  
2.  Item-­‐based	
  filtra†on	
  -­‐	
  фильтрация	
  по	
  схожести	
  предметов,	
  сравнивающая	
  оценки,	
  
данные	
  различными	
  пользователями.	
  
Наиболее	
  распространенный	
  метод	
  фильтрации.	
  Самый	
  часто	
  используемый	
  подход	
  –	
  выявление	
  
людей,	
  которым	
  эти	
  предметы	
  понравились.	
  И	
  посмотреть,	
  какие	
  предметы	
  им	
  понравились	
  еще	
  
Рекомендации:	
  Item-­‐based	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
Коллаборативная	
  фильтрация	
  по	
  предметам	
  на	
  основании	
  статистики	
  покупок.	
  
Рассмотрим	
  пример	
  с	
  использованием	
  подобия	
  с	
  использованием	
  двоичных	
  данных,	
  построенного	
  
на	
  основании	
  расчета	
  косинусного	
  расстояния	
  между	
  векторами:	
  
Покупатель	
   Предмет	
  1	
   Предмет	
  2	
   Предмет	
  3	
  
Джон	
   Купил	
   Не	
  покупал	
   Купил	
  
Марк	
   Не	
  покупал	
   Купил	
   Купил	
  
Люси	
   Не	
  покупала	
   Купила	
   Не	
  покупала	
  
Таким	
  образом,	
  пользователь,	
  находящийся	
  на	
  странице	
  «Предмета	
  1»,	
  получит	
  «Предмет	
  3»	
  в	
  
качестве	
  рекомендации;	
  на	
  странице	
  «Предмета	
  2»	
  —	
  «Предмет	
  3»	
  и	
  на	
  странице	
  «Предмета	
  3»	
  —	
  
«Предмет	
  1»	
  (и	
  затем	
  «Предмет	
  2»).	
  	
  
Рассчитаем	
  подобие/косинус	
  между	
  
«Предмета	
  1»	
  и	
  «Предмет	
  2»:	
  
«Предмета	
  1»	
  и	
  «Предмет	
  3»:	
  
«Предмета	
  2»	
  и	
  «Предмет	
  3»:	
  
Рекомендации:	
  Slop	
  One	
  алгоритм	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
Коллаборативная	
  фильтрация	
  Slope	
  One	
  для	
  предметов	
  с	
  оценками.	
  
Более	
  простой	
  алгоритм	
  с	
  существенным	
  уменьшением	
  требований	
  к	
  ресурсам,	
  основанный	
  на	
  
отношении	
  рейтинга	
  двух	
  предметов.	
  
•  Джо	
  выставил	
  оценку	
  1	
  для	
  Селин	
  Дион	
  и	
  1.5	
  для	
  
Линдсей	
  Лохан.	
  
•  Джил	
  оценила	
  Селин	
  Дион	
  на	
  2	
  балла.	
  
•  Какую	
  оценку	
  выставит	
  Джил	
  для	
  Линдсей	
  Лохан?	
  
•  Ответ	
  алгоритма	
  Slope	
  One:	
  2.5	
  (1.5-­‐1+2=2.5).	
  
	
  
Чтобы	
  применить	
  алгоритм	
  Slope	
  One	
  для	
  заданных	
  n	
  предметов,	
  надо	
  рассчитать	
  и	
  сохранить	
  среднюю	
  
разницу	
  и	
  количество	
  голосов	
  для	
  каждой	
  из	
  n²	
  пар	
  предметов.	
  
Семейство	
  алгоритмов	
  описаны	
  в	
  статье	
  «Slope	
  One	
  Predictors	
  for	
  Online	
  Ra†ng-­‐Based	
  Collabora†ve	
  
Filtering»	
  Daniel	
  Lemire	
  и	
  Anna	
  Maclachlan.	
  	
  hkp://lemire.me/fr/abstracts/SDM2005.html	
  
Отличие	
  от	
  регрессионного	
  анализа	
  состоит	
  в	
  
использовании	
  упрощенной	
  формулы	
  регрессии	
  
с	
  всего	
  одним	
  предикатом:	
  
  	
  Рекомендации:	
  Apache.teste	
  	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
Java	
  конструктор	
  рекомендаций	
  org.apache.mahout.cf.taste.impl	
  
Основные	
  реализованные	
  классы:	
  
•  DataModel	
  –	
  данные	
  вида	
  <userID>,<itemID>,<prefValue>	
  	
  
•  UserSimilarity	
  –	
  определение	
  близости	
  для	
  модели	
  User-­‐Based	
  
•  ItemSimilarity	
  –	
  	
  определение	
  близости	
  для	
  модели	
  Item-­‐Based	
  
•  UserNeighborhood	
  –	
  группировка	
  пользователей	
  по	
  близости	
  
•  Recommender	
  
•  GenericUserBasedRecommender	
  –	
  метод	
  схожести	
  пользователей	
  
•  GenericItemBasedRecommender	
  –	
  метод	
  схожести	
  объектов	
  
•  CachingRecommender	
  
Пример	
  кода	
  для	
  реализации	
  фильтрации	
  методом	
  схожести	
  
пользователей:	
  	
  
DataModel model = new FileDataModel(new File("data.txt"));
// Используем встроенный метод, на основании коэффициента корреляции Пирсона,
// можно использовать, в качестве альтернативы, более простую метрику EuclideanDistanceSimilarity
UserSimilarity userSimilarity = new PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood(3, userSimilarity, model);
Recommender recommender = new GenericUserBasedRecommender(model,
neighborhood,
userSimilarity);
Recommender cachingRecommender = new CachingRecommender(recommender);
// Получаем рекомендацию в виде RecommendedItem [item:XXX, value:Y]
List<RecommendedItem> recommendations = cachingRecommender.recommend(1234, 10);
Рекомендации:	
  Apache.teste	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
Проблема	
  реализации	
  на	
  основании	
  близости	
  пользователей	
  –	
  высокая	
  вычислительная	
  
сложность	
  и	
  то,	
  что	
  в	
  Mahout	
  нет	
  распределенной	
  реализации	
  фильтрации	
  методом	
  
схожести	
  пользователей.	
  
Хороший	
  пример	
  для	
  тестирования	
  «Million	
  Song	
  Dataset»:	
  
hkp://labrosa.ee.columbia.edu/millionsong/tasteprofile	
  
P.S:	
  Используется	
  в	
  качестве	
  примера	
  в	
  облачном	
  сервисе	
  Microsog	
  Azure,	
  использующем	
  
Hadoop	
  и	
  Mahout:	
  hkp://azure.microsog.com/ru-­‐ru/documenta†on/ar†cles/hdinsight-­‐mahout/	
  	
  
	
  
Пример	
  кода	
  для	
  реализации	
  фильтрации	
  методом	
  схожести	
  объектов	
  Item-­‐Based	
  
в	
  teste:	
  
DataModel model = new FileDataModel(new File("data.txt"));
Collection<GenericItemSimilarity.ItemItemSimilarity> correlations =
...;
ItemSimilarity itemSimilarity = new GenericItemSimilarity(correlations);
Recommender recommender = new GenericItemBasedRecommender(model, itemSimilarity);
Recommender cachingRecommender = new CachingRecommender(recommender);
// Получаем рекомендацию
List<RecommendedItem> recommendations = cachingRecommender.recommend(1234, 10);
Рекомендации:	
  Item-­‐Based	
  with	
  Hadoop	
  	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
•  Матрицу	
  близости	
  объектов	
  можно	
  посчитать	
  заранее	
  
•  Вектор	
  объектов,	
  обычно,	
  менее	
  разрежен,	
  чем	
  вектор	
  пользователей	
  
•  Есть	
  реализация	
  под	
  Hadoop	
  
Пример	
  запуска	
  простой	
  задачии.	
  На	
  вход	
  подается	
  файл	
  все	
  в	
  том	
  же	
  форматe	
  
userID,	
  itemID	
  and	
  preference,	
  на	
  выходе	
  userID	
  и	
  масив	
  itemIDs	
  и	
  scores:	
  
$ mahout recommenditembased -s SIMILARITY_LOGLIKELIHOOD -i /path/to/input/file -o /path/to/
desired/output --numRecommendations 25
Более	
  «продвинутый»	
  алгоритм,	
  рекомендованный	
  для	
  использования	
  в	
  eCommerce.	
  
Построенный	
  с	
  использованием	
  метода	
  Alterna†ng	
  Least	
  Squares	
  (ALS,	
  или	
  Метод	
  
покоординатного	
  спуска)	
  .	
  В	
  отличии	
  от	
  классических	
  подходов	
  item	
  и	
  user	
  based,	
  
способен	
  дать	
  прогноз	
  на	
  основании	
  скрытых	
  факторов.	
  Первый	
  шаг,	
  для	
  получения	
  ALS	
  
матрицы	
  факторов:	
  
$ mahout parallelALS --input $als_input --output $als_output --lambda 0.1 --implicitFeedback
true --alpha 0.8 --numFeatures 2 --numIterations 5 --numThreadsPerSolver 1 --tempDir tmp
Второй	
  шаг,	
  на	
  вход	
  которому	
  подается	
  полученная	
  на	
  первом	
  шаге	
  матрица,	
  формерует	
  
рекомендации	
  для	
  пользователей:	
  
$ mahout recommendfactorized --input $als_input --userFeatures $als_output/U/ --itemFeatures
$als_output/M/ --numRecommendations 1 --output recommendations --maxRating 1
Рекомендации:	
  Mahout	
  with	
  Spark	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
Spark	
  работает	
  как	
  на	
  Hadoop,	
  Mesos,	
  так	
  и	
  на	
  локально,	
  или	
  в	
  
облаке.	
  	
  Может	
  получить	
  доступ	
  к	
  разнообразным	
  данным,	
  в	
  том	
  	
  
числе	
  HDFS,	
  Cassandra,	
  HBase,	
  S3.	
  
Преимущество:	
  запуск	
  задач	
  в	
  100	
  раз	
  быстрее	
  
Hadoop	
  MapReduсe	
  и	
  в	
  10	
  раз	
  быстрее,	
  чел	
  
локально	
  «с	
  диска».	
  Поддерживает	
  Scala	
  и	
  Python.	
  
Spark	
  SQL	
  -­‐	
  унифицирует	
  доступ	
  к	
  
структурированным	
  данным.	
  
Spark	
  Streaming	
  -­‐	
  позволяет	
  легко	
  строить	
  
масштабируемые	
  отказоустойчивые	
  потоковых	
  
приложений.	
  
MLlib	
  -­‐	
  масштабируемая	
  machine	
  learning	
  
библиотека.	
  
GraphX	
  -­‐	
  API	
  для	
  графов	
  и	
  диаграммы-­‐
параллельные	
  вычисления.	
  
Рекомендации:	
  Cooccurrence	
  Recommenders	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
spark-­‐itemsimilarity	
  –	
  аналог	
  Item-­‐Based	
  реализации	
  Mahuot	
  mapreduce	
  версии.	
  
Если	
  все	
  значения	
  оставить	
  по	
  умолчанию,	
  то	
  запустить	
  очень	
  просто:	
  	
  
userID1,itemID1
userID2,itemID2
...
С	
  командной	
  строки:	
  
bash$ mahout spark-itemsimilarity --input in-file --output out-dir
Это	
  позволит	
  локально	
  запустит	
  Spark,	
  который	
  выведет	
  текст:	
  
itemID1<tab>itemID2:value2<space>itemID10:value10...
spark-­‐rowsimilarity	
  –	
  является	
  дополнением	
  к	
  spark-­‐itemsimilarity.	
  На	
  вход	
  можно	
  подать	
  
данные	
  выхода	
  предыдущей	
  модели	
  и	
  получить	
  на	
  выходе	
  группы,	
  как	
  пользователей	
  так	
  и	
  	
  
объектов,	
  схожие	
  по	
  результатам	
  рекомендаций:	
  	
  
rowID<tab>columnID1:strength1<space>columnID2:strength2...
На	
  	
  выходе,	
  с	
  сортировкой	
  по	
  убыванию:	
  
rowID<tab>rowID1:strength1<space>rowID2:strength2...
Также	
  может	
  использоваться	
  для	
  поиска	
  схожего	
  текстового	
  контента,	
  например	
  
сравнивая	
  тэги	
  или	
  токены	
  различных	
  постов.	
  	
  
Ресурсы	
  
Apache	
  Mahout	
  in	
  Ac.on	
  
Sean	
  Owen,	
  Robin	
  Anil	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  
Вопросы?	
  
ЛЕКЦИЯ	
  10:	
  APACHE	
  MAHOUT	
  	
  

Weitere ähnliche Inhalte

Was ist angesagt?

Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхVasil Remeniuk
 
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...Ontico
 
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...Ontico
 
PostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationPostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationAlexey Lesovsky
 
Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Alexey Lesovsky
 
Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Alexey Lesovsky
 
08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduce08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduceRoman Brovko
 
Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Alexey Lesovsky
 
Расширения для PostgreSQL
Расширения для PostgreSQLРасширения для PostgreSQL
Расширения для PostgreSQLAnastasia Lubennikova
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Ontico
 
06 - Hadoop. Java API и Hadoop Streaming
06 - Hadoop. Java API и Hadoop Streaming06 - Hadoop. Java API и Hadoop Streaming
06 - Hadoop. Java API и Hadoop StreamingRoman Brovko
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEBAlexandre Kalendarev
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARNTechnopark
 
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)Ontico
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...Ontico
 
#PostgreSQLRussia в банке Тинькофф, доклад №1
#PostgreSQLRussia в банке Тинькофф, доклад №1#PostgreSQLRussia в банке Тинькофф, доклад №1
#PostgreSQLRussia в банке Тинькофф, доклад №1Nikolay Samokhvalov
 
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...Ontico
 
Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаHacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаAnastasia Lubennikova
 
13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма SparkRoman Brovko
 
MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBSergey Petrunya
 

Was ist angesagt? (20)

Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событиях
 
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
 
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
 
PostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationPostgreSQL Streaming Replication
PostgreSQL Streaming Replication
 
Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)
 
Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)
 
08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduce08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduce
 
Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)
 
Расширения для PostgreSQL
Расширения для PostgreSQLРасширения для PostgreSQL
Расширения для PostgreSQL
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
 
06 - Hadoop. Java API и Hadoop Streaming
06 - Hadoop. Java API и Hadoop Streaming06 - Hadoop. Java API и Hadoop Streaming
06 - Hadoop. Java API и Hadoop Streaming
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEB
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
 
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
 
#PostgreSQLRussia в банке Тинькофф, доклад №1
#PostgreSQLRussia в банке Тинькофф, доклад №1#PostgreSQLRussia в банке Тинькофф, доклад №1
#PostgreSQLRussia в банке Тинькофф, доклад №1
 
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
 
Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаHacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кода
 
13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark
 
MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDB
 

Andere mochten auch

Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSTechnopark
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Technopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveTechnopark
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceTechnopark
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Technopark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuTechnopark
 
Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelTechnopark
 

Andere mochten auch (8)

Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 

Ähnlich wie Лекция 10. Apache Mahout

Hadoop -> Cascading -> Cascalog
Hadoop -> Cascading -> CascalogHadoop -> Cascading -> Cascalog
Hadoop -> Cascading -> CascalogAndrew Panfilov
 
WinDbg со товарищи
WinDbg со товарищиWinDbg со товарищи
WinDbg со товарищиCUSTIS
 
DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.mikhaelsmirnov
 
Работа с Big Data
Работа с Big Data Работа с Big Data
Работа с Big Data MATLAB
 
Andrei Grigoriev | Version Control in Data Science | Kazan ODSC Meetup
Andrei Grigoriev | Version Control in Data Science | Kazan ODSC MeetupAndrei Grigoriev | Version Control in Data Science | Kazan ODSC Meetup
Andrei Grigoriev | Version Control in Data Science | Kazan ODSC MeetupProvectus
 
Производительность параметрического поиска на основе опенсорс-платформы
Производительность параметрического поиска на основе опенсорс-платформыПроизводительность параметрического поиска на основе опенсорс-платформы
Производительность параметрического поиска на основе опенсорс-платформыYandex
 
Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Mikhail Shcherbakov
 
WinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаWinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаMikhail Shcherbakov
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Ontico
 
Js templating stepan_reznikov
Js templating stepan_reznikovJs templating stepan_reznikov
Js templating stepan_reznikovyaevents
 
Степан Резников "Шаблонизация на клиенте"
Степан Резников "Шаблонизация на клиенте"Степан Резников "Шаблонизация на клиенте"
Степан Резников "Шаблонизация на клиенте"Yandex
 
Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Andrey Karpov
 
React со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингReact со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингTimophy Chaptykov
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Ontico
 
OpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraOpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraSveta Smirnova
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1Michael Karpov
 
Язык программирования PascalABC.NET 2015. Новые возможности
Язык программирования PascalABC.NET 2015. Новые возможностиЯзык программирования PascalABC.NET 2015. Новые возможности
Язык программирования PascalABC.NET 2015. Новые возможностиМихалкович Станислав
 

Ähnlich wie Лекция 10. Apache Mahout (20)

Hadoop -> Cascading -> Cascalog
Hadoop -> Cascading -> CascalogHadoop -> Cascading -> Cascalog
Hadoop -> Cascading -> Cascalog
 
WinDbg со товарищи
WinDbg со товарищиWinDbg со товарищи
WinDbg со товарищи
 
DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.
 
Работа с Big Data
Работа с Big Data Работа с Big Data
Работа с Big Data
 
Andrei Grigoriev | Version Control in Data Science | Kazan ODSC Meetup
Andrei Grigoriev | Version Control in Data Science | Kazan ODSC MeetupAndrei Grigoriev | Version Control in Data Science | Kazan ODSC Meetup
Andrei Grigoriev | Version Control in Data Science | Kazan ODSC Meetup
 
Производительность параметрического поиска на основе опенсорс-платформы
Производительность параметрического поиска на основе опенсорс-платформыПроизводительность параметрического поиска на основе опенсорс-платформы
Производительность параметрического поиска на основе опенсорс-платформы
 
Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"
 
WinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаWinDbg в руках .NET разработчика
WinDbg в руках .NET разработчика
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templates
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templates
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
 
Scorex framework
Scorex frameworkScorex framework
Scorex framework
 
Js templating stepan_reznikov
Js templating stepan_reznikovJs templating stepan_reznikov
Js templating stepan_reznikov
 
Степан Резников "Шаблонизация на клиенте"
Степан Резников "Шаблонизация на клиенте"Степан Резников "Шаблонизация на клиенте"
Степан Резников "Шаблонизация на клиенте"
 
Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?
 
React со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингReact со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендеринг
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
 
OpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraOpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second Era
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1
 
Язык программирования PascalABC.NET 2015. Новые возможности
Язык программирования PascalABC.NET 2015. Новые возможностиЯзык программирования PascalABC.NET 2015. Новые возможности
Язык программирования PascalABC.NET 2015. Новые возможности
 

Mehr von Technopark

СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...Technopark
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...Technopark
 
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"Technopark
 
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"Technopark
 
СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"Technopark
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8Technopark
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7Technopark
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6Technopark
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5Technopark
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3Technopark
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1Technopark
 
Java осень 2014 занятие 2
Java осень 2014 занятие 2Java осень 2014 занятие 2
Java осень 2014 занятие 2Technopark
 

Mehr von Technopark (17)

СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
 
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
 
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
 
СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1
 
Java осень 2014 занятие 2
Java осень 2014 занятие 2Java осень 2014 занятие 2
Java осень 2014 занятие 2
 

Лекция 10. Apache Mahout

  • 1. Методы  распределенной  обработки   больших  объемов  данных  в  Hadoop   Москва  2014   Лекция  10:  Apache  Mahout  
  • 2. Apache  Mahout  in  Ac.on   ЛЕКЦИЯ  10:  APACHE  MAHOUT     •  Цель  проекта  -­‐  получить  масштабируемую   библиотеку  машинного  обучения:   •  Масштабируемость  больших  объемов  данных   •  Масштабируемость  бизнес  задач   •  Масштабируемость  сообщества   •  Режимы  работы:     •  В  кластере  Hadoop   •  Автономно,  на  одном  компьютере   •  Открытый  исходный  код  на  Java,  со   свободной  для  коммерческого   использования  лицензией  Apache  Sogware   •  Страница  проекта:  hkp://mahout.apache.org  
  • 3. Реализованные  алгоритмы   ЛЕКЦИЯ  10:  APACHE  MAHOUT     •  Классификация:   •  Наивный  Байесовский  классификатор  (Naive  Bayes)   •  Скрытая  Марковская  модель  (CMM/HMM)   •  Стохастический  градиентный  спуск  (SGD)   •  Random  Forest   •  Кластеризация:     •  Метод  k-­‐средних  (k-­‐Means)   •  «Слабая»  или  пред  кластеризация  -­‐  Canopy     •  Нечеткая  кластеризация  -­‐  Fuzzy  k-­‐Means  (Fuzzy  C-­‐Means  /  FCM)   •  StreamingKMeans   •  Спектральная  кластеризация  (Spectral  Clustering)   •  Рекомендации:   •  Коллаборативная  фильтрация  (CF)  
  • 4. Классификация:  Naive  Bayes   ЛЕКЦИЯ  10:  APACHE  MAHOUT     Два  алгоритма  с  поддержкой  Map-­‐Reduce:   •  Mul†nomial  Naive  Bayes     •  Transformed  Weight-­‐normalized  Complement  Naive  Bayes  (CBayes)   Mul†nomial  Naive  Bayes  -­‐  это  просто  наивный  байесовский  классификатор   Преимущество:  классификаторы  быстры  и  достаточно  точны   Недостаток:  обычно  отказывают,  когда  размер  обучающих  примеров  для  каждого  класса  не   сбалансирован  или  когда  данные  не  являются  достаточно  независимыми.     CBayes-­‐  комплементарный  наивный  байесовский  классификатор.  Пытается  решить   некоторые  недостатки,  характерные  для  байесовского  классификатора,  при  сохранении  его   простоты  и  быстродействия.    
  • 5. Классификация:  Naive  Bayes   ЛЕКЦИЯ  10:  APACHE  MAHOUT     Пример  исходного  корпусе  текстов:   hkp://people.csail.mit.edu/jrennie/20Newsgroups/20news-­‐bydate.tar.gz   mahout seq2sparse -i ${PATH_TO_SEQUENCE_FILES} -o ${PATH_TO_TFIDF_VECTORS} -nv -n 2 -wt tfidf mahout trainnb -i ${PATH_TO_TFIDF_VECTORS} -el -o ${PATH_TO_MODEL}/model -li ${PATH_TO_MODEL}/labelindex -ow -c mahout testnb -i ${PATH_TO_TFIDF_TEST_VECTORS} -m ${PATH_TO_MODEL}/model -l ${PATH_TO_MODEL}/labelindex -ow -o ${PATH_TO_OUTPUT} -c -seq 1.  Запуск  предпроцессинга  текста.  Указываем  входной  корпус   текстов,  выходной  каталог,  где  мы  получим  результаты  TF-­‐IDF   преобразования  (опция  -­‐wt  •idf)  и  параметры  самого   преобразования,  в  частности    L2    нормы  (опция  -­‐n  2).   2.  Запуск  построения  модели.  По  умолчанию  используется  простой   байесовский  классификатор.  Но  можем  выбрать  модель  CBayes   (опция  -­‐с)       3.  Запуск  классификатора  на  тестовой  выборке.     Пример  запуска  обработки  исходного  корпуса  текстов:   hkps://github.com/apache/mahout/blob/master/examples/ bin/classify-­‐20newsgroups.sh  
  • 6. Классификация:  Naive  Bayes   ЛЕКЦИЯ  10:  APACHE  MAHOUT     ======================================================= Confusion Matrix ------------------------------------------------------- a b c d e f g h i j k l m n o p q r s t <--Classified as 381 0 0 0 0 9 1 0 0 0 1 0 0 2 0 1 0 0 3 0 |398 a=rec.motorcycles 1 284 0 0 0 0 1 0 6 3 11 0 66 3 0 6 0 4 9 0 |395 b=comp.windows.x 2 0 339 2 0 3 5 1 0 0 0 0 1 1 12 1 7 0 2 0 |376 c=talk.politics.mideast 4 0 1 327 0 2 2 0 0 2 1 1 0 5 1 4 12 0 2 0 |364 d=talk.politics.guns 7 0 4 32 27 7 7 2 0 12 0 0 6 0 100 9 7 31 0 0 |251 e=talk.religion.misc 10 0 0 0 0 359 2 2 0 0 3 0 1 6 0 1 0 0 11 0 |396 f=rec.autos 0 0 0 0 0 1 383 9 1 0 0 0 0 0 0 0 0 3 0 0 |397 g=rec.sport.baseball 1 0 0 0 0 0 9 382 0 0 0 0 1 1 1 0 2 0 2 0 |399 h=rec.sport.hockey 2 0 0 0 0 4 3 0 330 4 4 0 5 12 0 0 2 0 12 7 |385 i=comp.sys.mac.hardware 0 3 0 0 0 0 1 0 0 368 0 0 10 4 1 3 2 0 2 0 |394 j=sci.space 0 0 0 0 0 3 1 0 27 2 291 0 11 25 0 0 1 0 13 18|392 k=comp.sys.ibm.pc.hardware 8 0 1 109 0 6 11 4 1 18 0 98 1 3 11 10 27 1 1 0 |310 l=talk.politics.misc 0 11 0 0 0 3 6 0 10 6 11 0 299 13 0 2 13 0 7 8 |389 m=comp.graphics 6 0 1 0 0 4 2 0 5 2 12 0 8 321 0 4 14 0 8 6 |393 n=sci.electronics 2 0 0 0 0 0 4 1 0 3 1 0 3 1 372 6 0 2 1 2 |398 o=soc.religion.christian 4 0 0 1 0 2 3 3 0 4 2 0 7 12 6 342 1 0 9 0 |396 p=sci.med 0 1 0 1 0 1 4 0 3 0 1 0 8 4 0 2 369 0 1 1 |396 q=sci.crypt 10 0 4 10 1 5 6 2 2 6 2 0 2 1 86 15 14 152 0 1 |319 r=alt.atheism 4 0 0 0 0 9 1 1 8 1 12 0 3 0 2 0 0 0 341 2 |390 s=misc.forsale 8 5 0 0 0 1 6 0 8 5 50 0 40 2 1 0 9 0 3 256|394 t=comp.os.ms-windows.misc ======================================================= Statistics ------------------------------------------------------- Kappa 0.8808 Accuracy 90.8596% Reliability 86.3632% Reliability (standard deviation) 0.2131
  • 7. Кластеризация:  к-­‐Means   ЛЕКЦИЯ  10:  APACHE  MAHOUT     k-­‐Means  –  простой  метод  кластеризации  с  заранее  предопределенным   количеством  кластеров.     Преимущество:  простота  реализации.   Недостаток:  очень  чувствителен  к  первоначальному  набору  центров  кластеров.   Fuzzy  k-­‐Means  (с-­‐Means)  –  реализация,  позволяющая  определить  объект  к  разным   кластерам  с  некой  вероятностью.     Что  делать  если  вы  не  знаете,  как  расставить  начальные  центры  кластеров?   Используйте  Canopy  ))  
  • 8. Кластеризация:  к-­‐Means   ЛЕКЦИЯ  10:  APACHE  MAHOUT     Пример  исходного  корпусе  текстов,  новости  агенства  Reuters  за  1987  год:   hkp://kdd.ics.uci.edu/databases/reuters21578/reuters21578.tar.gz   mahout seq2sparse -i ${PATH_TO_SEQUENCE_FILES} -o ${PATH_TO_VECTORS} --maxDFPercent 85 --namedVector mahout kmeans -i ${PATH_TO_VECTORS}/tfidf-vectors -c ${PATH_TO_CLUSTERS} -o ${PATH_TO_OUTPUT} -dm …CosineDistanceMeasure -c mahout clusterdump -i ${PATH_TO_OUTPUT}/clusters*final -o ${PATH_TO_DUMP} -d ${PATH_TO_VECTORS}/dictionary.file-0 -dt sequencefile … $ {PATH_TO_CLASTERED_POINTS} 1.  Запуск  предпроцессинга  текста.  Удаляем  слишком  часто   используемые  термины  (опция  –maxDFPercent  или  –x).  Все   слова  преобразуем  в  вектор  в  числовом  формате.   Предварительно  необходимо  корпус  текстов  обработать   утилитой  seqdirectory.   2.  Запуск  кластеризацию.  Для  старта  необходимо  иметь   стартовые  кластера  (опция  –с).  Указываем  меру  определения   расстояния  из  стандартного  класса,  например     org.apache.mahout.common.distance.CosineDistanceMeasure.   3.  Запуск  утилиты,  преобразующий  результат  в  «читабельный»   формат  для  дальнейшего  анализа.     Пример  запуска  обработки  исходного  корпуса  текстов:   hkps://github.com/apache/mahout/blob/master/examples/ bin/cluster-­‐reuters.sh  
  • 10. Рекомендации:  Коллаборативная  фильтрация     ЛЕКЦИЯ  10:  APACHE  MAHOUT     Термин  «Коллаборативная  фильтрация»   впервые  употребил  Дэвид  Голдберг  (David   Goldberg)  из  компании  Xerox  PARC  в  1992  году   в  статье  «Using  collabora†ve  filtering  to  weave   an  informa†on  tapestry».     Системы  коллаборативной  фильтрации   обычно  применяют  двухступенчатую  схему:   1.  Находят  тех,  кто  разделяет  оценочные   суждения  «активного»  (прогнозируемого)   пользователя;   2.  Используют  оценки  сходно  мыслящих   людей,  найденных  на  первом  шаге,  для   вычисления  прогноза.  
  • 11. Рекомендации:  Коллаборативная  фильтрация     ЛЕКЦИЯ  10:  APACHE  MAHOUT     Типичный  кейс  реализации  -­‐  рекомендация  продуктов  в  eCommerce,  такие  как  Amazon,   Ne•lix,  Overstock.   •  Строим  матрицу,  определяющую  отношения  между  парами  предметов,  для   нахождения  похожих  предметов.   •  Используя  построенную  матрицу  и  информацию  о  пользователе,  строим  прогнозы   его  оценок.  
  • 12. Рекомендации:  Коллаборативная  фильтрация       ЛЕКЦИЯ  10:  APACHE  MAHOUT     Существуют,  как  минимум,  два  подхода  в  Коллаборативнай  фильтрации:   1.  User-­‐based  filtra†on  -­‐  фильтрация  по  схожести  пользователей,  базирующаяся  на   измерении  подобия  пользователей;   Собрав  данные  о  том,  что  людям  нравится,  нужно  как-­‐то  определить,  насколько  их  вкусы  схожи.  Для   этого  каждый̆  человек  сравнивается  со  всеми  другими  и  вычисляется  коэффициент  подобия  (или   оценка  подобия).  Наиболее  распространены  два  способа  оценки:   •  Эвклидово  расстояние       •  Коэффициент  корреляции  Пирсона   (упрощенный  аналог,  полученная  с  помощью   преобразования)     2.  Item-­‐based  filtra†on  -­‐  фильтрация  по  схожести  предметов,  сравнивающая  оценки,   данные  различными  пользователями.   Наиболее  распространенный  метод  фильтрации.  Самый  часто  используемый  подход  –  выявление   людей,  которым  эти  предметы  понравились.  И  посмотреть,  какие  предметы  им  понравились  еще  
  • 13. Рекомендации:  Item-­‐based   ЛЕКЦИЯ  10:  APACHE  MAHOUT     Коллаборативная  фильтрация  по  предметам  на  основании  статистики  покупок.   Рассмотрим  пример  с  использованием  подобия  с  использованием  двоичных  данных,  построенного   на  основании  расчета  косинусного  расстояния  между  векторами:   Покупатель   Предмет  1   Предмет  2   Предмет  3   Джон   Купил   Не  покупал   Купил   Марк   Не  покупал   Купил   Купил   Люси   Не  покупала   Купила   Не  покупала   Таким  образом,  пользователь,  находящийся  на  странице  «Предмета  1»,  получит  «Предмет  3»  в   качестве  рекомендации;  на  странице  «Предмета  2»  —  «Предмет  3»  и  на  странице  «Предмета  3»  —   «Предмет  1»  (и  затем  «Предмет  2»).     Рассчитаем  подобие/косинус  между   «Предмета  1»  и  «Предмет  2»:   «Предмета  1»  и  «Предмет  3»:   «Предмета  2»  и  «Предмет  3»:  
  • 14. Рекомендации:  Slop  One  алгоритм   ЛЕКЦИЯ  10:  APACHE  MAHOUT     Коллаборативная  фильтрация  Slope  One  для  предметов  с  оценками.   Более  простой  алгоритм  с  существенным  уменьшением  требований  к  ресурсам,  основанный  на   отношении  рейтинга  двух  предметов.   •  Джо  выставил  оценку  1  для  Селин  Дион  и  1.5  для   Линдсей  Лохан.   •  Джил  оценила  Селин  Дион  на  2  балла.   •  Какую  оценку  выставит  Джил  для  Линдсей  Лохан?   •  Ответ  алгоритма  Slope  One:  2.5  (1.5-­‐1+2=2.5).     Чтобы  применить  алгоритм  Slope  One  для  заданных  n  предметов,  надо  рассчитать  и  сохранить  среднюю   разницу  и  количество  голосов  для  каждой  из  n²  пар  предметов.   Семейство  алгоритмов  описаны  в  статье  «Slope  One  Predictors  for  Online  Ra†ng-­‐Based  Collabora†ve   Filtering»  Daniel  Lemire  и  Anna  Maclachlan.    hkp://lemire.me/fr/abstracts/SDM2005.html   Отличие  от  регрессионного  анализа  состоит  в   использовании  упрощенной  формулы  регрессии   с  всего  одним  предикатом:  
  • 15.    Рекомендации:  Apache.teste     ЛЕКЦИЯ  10:  APACHE  MAHOUT     Java  конструктор  рекомендаций  org.apache.mahout.cf.taste.impl   Основные  реализованные  классы:   •  DataModel  –  данные  вида  <userID>,<itemID>,<prefValue>     •  UserSimilarity  –  определение  близости  для  модели  User-­‐Based   •  ItemSimilarity  –    определение  близости  для  модели  Item-­‐Based   •  UserNeighborhood  –  группировка  пользователей  по  близости   •  Recommender   •  GenericUserBasedRecommender  –  метод  схожести  пользователей   •  GenericItemBasedRecommender  –  метод  схожести  объектов   •  CachingRecommender   Пример  кода  для  реализации  фильтрации  методом  схожести   пользователей:     DataModel model = new FileDataModel(new File("data.txt")); // Используем встроенный метод, на основании коэффициента корреляции Пирсона, // можно использовать, в качестве альтернативы, более простую метрику EuclideanDistanceSimilarity UserSimilarity userSimilarity = new PearsonCorrelationSimilarity(model); UserNeighborhood neighborhood = new NearestNUserNeighborhood(3, userSimilarity, model); Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, userSimilarity); Recommender cachingRecommender = new CachingRecommender(recommender); // Получаем рекомендацию в виде RecommendedItem [item:XXX, value:Y] List<RecommendedItem> recommendations = cachingRecommender.recommend(1234, 10);
  • 16. Рекомендации:  Apache.teste   ЛЕКЦИЯ  10:  APACHE  MAHOUT     Проблема  реализации  на  основании  близости  пользователей  –  высокая  вычислительная   сложность  и  то,  что  в  Mahout  нет  распределенной  реализации  фильтрации  методом   схожести  пользователей.   Хороший  пример  для  тестирования  «Million  Song  Dataset»:   hkp://labrosa.ee.columbia.edu/millionsong/tasteprofile   P.S:  Используется  в  качестве  примера  в  облачном  сервисе  Microsog  Azure,  использующем   Hadoop  и  Mahout:  hkp://azure.microsog.com/ru-­‐ru/documenta†on/ar†cles/hdinsight-­‐mahout/       Пример  кода  для  реализации  фильтрации  методом  схожести  объектов  Item-­‐Based   в  teste:   DataModel model = new FileDataModel(new File("data.txt")); Collection<GenericItemSimilarity.ItemItemSimilarity> correlations = ...; ItemSimilarity itemSimilarity = new GenericItemSimilarity(correlations); Recommender recommender = new GenericItemBasedRecommender(model, itemSimilarity); Recommender cachingRecommender = new CachingRecommender(recommender); // Получаем рекомендацию List<RecommendedItem> recommendations = cachingRecommender.recommend(1234, 10);
  • 17. Рекомендации:  Item-­‐Based  with  Hadoop     ЛЕКЦИЯ  10:  APACHE  MAHOUT     •  Матрицу  близости  объектов  можно  посчитать  заранее   •  Вектор  объектов,  обычно,  менее  разрежен,  чем  вектор  пользователей   •  Есть  реализация  под  Hadoop   Пример  запуска  простой  задачии.  На  вход  подается  файл  все  в  том  же  форматe   userID,  itemID  and  preference,  на  выходе  userID  и  масив  itemIDs  и  scores:   $ mahout recommenditembased -s SIMILARITY_LOGLIKELIHOOD -i /path/to/input/file -o /path/to/ desired/output --numRecommendations 25 Более  «продвинутый»  алгоритм,  рекомендованный  для  использования  в  eCommerce.   Построенный  с  использованием  метода  Alterna†ng  Least  Squares  (ALS,  или  Метод   покоординатного  спуска)  .  В  отличии  от  классических  подходов  item  и  user  based,   способен  дать  прогноз  на  основании  скрытых  факторов.  Первый  шаг,  для  получения  ALS   матрицы  факторов:   $ mahout parallelALS --input $als_input --output $als_output --lambda 0.1 --implicitFeedback true --alpha 0.8 --numFeatures 2 --numIterations 5 --numThreadsPerSolver 1 --tempDir tmp Второй  шаг,  на  вход  которому  подается  полученная  на  первом  шаге  матрица,  формерует   рекомендации  для  пользователей:   $ mahout recommendfactorized --input $als_input --userFeatures $als_output/U/ --itemFeatures $als_output/M/ --numRecommendations 1 --output recommendations --maxRating 1
  • 18. Рекомендации:  Mahout  with  Spark   ЛЕКЦИЯ  10:  APACHE  MAHOUT     Spark  работает  как  на  Hadoop,  Mesos,  так  и  на  локально,  или  в   облаке.    Может  получить  доступ  к  разнообразным  данным,  в  том     числе  HDFS,  Cassandra,  HBase,  S3.   Преимущество:  запуск  задач  в  100  раз  быстрее   Hadoop  MapReduсe  и  в  10  раз  быстрее,  чел   локально  «с  диска».  Поддерживает  Scala  и  Python.   Spark  SQL  -­‐  унифицирует  доступ  к   структурированным  данным.   Spark  Streaming  -­‐  позволяет  легко  строить   масштабируемые  отказоустойчивые  потоковых   приложений.   MLlib  -­‐  масштабируемая  machine  learning   библиотека.   GraphX  -­‐  API  для  графов  и  диаграммы-­‐ параллельные  вычисления.  
  • 19. Рекомендации:  Cooccurrence  Recommenders   ЛЕКЦИЯ  10:  APACHE  MAHOUT     spark-­‐itemsimilarity  –  аналог  Item-­‐Based  реализации  Mahuot  mapreduce  версии.   Если  все  значения  оставить  по  умолчанию,  то  запустить  очень  просто:     userID1,itemID1 userID2,itemID2 ... С  командной  строки:   bash$ mahout spark-itemsimilarity --input in-file --output out-dir Это  позволит  локально  запустит  Spark,  который  выведет  текст:   itemID1<tab>itemID2:value2<space>itemID10:value10... spark-­‐rowsimilarity  –  является  дополнением  к  spark-­‐itemsimilarity.  На  вход  можно  подать   данные  выхода  предыдущей  модели  и  получить  на  выходе  группы,  как  пользователей  так  и     объектов,  схожие  по  результатам  рекомендаций:     rowID<tab>columnID1:strength1<space>columnID2:strength2... На    выходе,  с  сортировкой  по  убыванию:   rowID<tab>rowID1:strength1<space>rowID2:strength2... Также  может  использоваться  для  поиска  схожего  текстового  контента,  например   сравнивая  тэги  или  токены  различных  постов.    
  • 20. Ресурсы   Apache  Mahout  in  Ac.on   Sean  Owen,  Robin  Anil   ЛЕКЦИЯ  10:  APACHE  MAHOUT    
  • 21. Вопросы?   ЛЕКЦИЯ  10:  APACHE  MAHOUT