Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Map Reduceвзгляд вглубь           Павел Мезенцев  p.mezentsev@rambler-co.ru
План●   Что такое MapReduce●   Элементарные запросы●   Алгоритмы машинного обучения
История MapReduce2003 г. Презентация Google MapReduce2005 г. Начало разработки Hadoop в Yahoo2007 г. Первый “боевой” Hadoo...
Где используется     Hadoop?
Из чего состоит HadoopРаспределенная файловая система HDFS●   Name Node●   Data NodeСистема вычислений MapReduce●   Job Tr...
Архитектура Hadoop
Парадигма MapReduce●   Map(k 1, v 1 )→list (k 2, v 2 )●   Shuffle & sort●   Reduce(k 2 , list (v 2 ))→list (k 3, v 3 )
Свойства MapReduceОтказоустойчивость●   Репликация●   Промежуточные данные хранятся на дискеВычислительная эффективность● ...
Элементарные операции●   Filter●   Sort●   Aggregate●   Join
Логи Апача    ip - - [time] "GET url HTTP 1.0" responce size referrer "user agent"234.248.187.116 - - [01/May/2012:00:11:1...
FilterТолько map стадияПример:Найти все логи поисковых переходов
Пример Java кодаpublic static class FilterMapper extends Mapper <LongWritable, Text, Text, NullWritable>{  protected void ...
Драйвер задачиpublic class FilterPrimitive{  public static int main (String [] args) throws Exception  {    Job job = new ...
SortИспользуется 1 редьюсерПример:отсортировать логи по IP
Пример Java кодаpublic static class SortMapper extends Mapper <LongWritable, Text, Text, NullWritable>{  @Override  protec...
AggregateMap-Reduce операция общего видаПример:посчитать число кликов, сделанных скажого из ip
Пример Java кодаpublic static class AggregateMapper extends Mapper <LongWritable, Text, Text, NullWritable>{  protected vo...
JoinПример задачи:  имея таблицу соотвия “IP–география”  отфильтровать логи, сделанные  с московских IPшников.Как можно сд...
JoinПример задачи:     имея таблицу соотвия “IP–география”     отфильтровать логи, сделанные     с московских IPшников.Как...
JoinMultipleInputs.addInputPath (conf,                             hdfsPath,                             TextInputFormat.c...
Пример Java кода Мапперы:public static class Join1Mapper extends Mapper <LongWritable, Text, Text, Text>{  public void map...
Пример Java кодаpublic static class JoinReducer extends Reducer <Text, Text, Text, NullWritable>{  protected void reduce (...
Языки высокого уровняApache Pig                        Apache Hive                         vs●   Скриптовый язык          ...
Загрузка данных  Apache Pig                              Apache Hivelogs = LOAD /user/mezentsev/logs as (   create table l...
Фильтрация  Apache Pig                  Apache Hivefiltered_logs = FILTERlogs by                              select * fro...
Сортировка Apache Pig                    Apache Hive                               SELECT ip,sorted_logs = ORDER          ...
Агрегация Apache Pig                Apache Hivelogs_by_ip =               SELECT ip, count (1)GROUP logs BY ip;          F...
Join Apache Pig                      Apache Hivemoscow_geo = FILTER              SELECT logs.*geo BY                      ...
Как обрабатыватьданные быстро?
Как обрабатыватьданные быстро?●   2010 г. Google Dremel●   2012 г. Cloudera Impala●   2012 г. Amazon Redshift●   2013 г. A...
Как обрабатыватьданные быстро?●   SQL образный синтаксис запросов●   Результаты вычислений “не большие”●   Отсутствует отк...
MPP Архитектура
Impala vs Hive●Работают с одним хранилищемметаданных●Производительность Impala в 4-30 разбольше
Часть II Машинное обучение на MapReduce
Что такое машинноеобучение? Алгоритмы искуственного интеллекта, способные обучаться [Wikipedia]
Классификация
Кластеризация
Регрессия
Рекомендации
Apache Mahout●   появился в 2008 году●   300 тыс. строк кода●   означает “погонщик слона”●   правильно произносить “махут”...
Реализованные    алгоритмы    Классификация                                    Кластеризация●   Логистическая регрессия   ...
Машинное обучениена MapReduce●   статья “MapReduce for Machine    Learning on Multicore” (2008)●   Алгоритм должен быть пр...
Наивный Байес               ()                  (1)                xПризнаки    x            ⃗ = ...       Класс y = {0, 1...
Наивный Байесна MapReduce 1                         ν( y) ∑ j 1( y j = y)●   Выражение     P( y)=        =                ...
Наивный Байесна MapReduce 2                                               (i)    Выражение             (i)         ν( x , ...
Кластеризация K средних
Реализация наMapReduceОтнесение объектов к кластерам Map: выдаем      ( x , y nearest )Поиск новых центров кластеров  Map:...
Логистическаярегрессия
Вероятность класса                       1        P w ( x)=                  1+exp(−w⋅x)
Максимумправдоподобия                       yi             1− y iLw ( x)= ∏i P w ( x i ) (1−P w ( x i ))           nl(w)=∑...
МетодНьютона-РафсонаВ скалярном виде:    В векторном виде      l  (w)                  −1w=w−                 w=w−H ∇ w l(...
MapReduceдля Градиента    Выражение            ∂ l(w )   m                                 =∑i=1 ( y i − p w (x i )) x i● ...
MapReduce дляГамильтониана                        2               ∂ l(w)      m                         =∑i=1 p w (x i )( ...
АсимптотикаАлгоритм        Классическая   Сложность MapReduce                сложность                                   m...
Недостаток
Недостаток  Итерационные алгоритмы  машинного обучения читают  с диска раз за разом одну и  ту же обучающую выборку,  что ...
Vowpal Wabbit● Проект написан на C++● Начат в 2007 году в Yahoo● Сейчас разрабатывается  в MicrosoftResearch
Предложенное решение●   Итерационые алгоритмы должны обучаться    в одну map-стадию●   Все данные загружаются в оперативну...
AllReduce: sum - 1                 1         2               3    4        5       6       7
AllReduce: sum - 2                  1         11               16     4        5       6        7
AllReduce: sum - 3                   28          11                16     4         5        6        7
AllReduce: sum - 4                28         28               28    28     28        28        28
Реализованные алгоритмы●   Метод сопряженных градиентов●   LBFGS
Upcoming SlideShare
Loading in …5
×

MapReduce взгляд вглубь

1,236 views

Published on

Слайды с лекция в МГТУ им. Баумана.
11.03.2013

MapReduce взгляд вглубь

  1. 1. Map Reduceвзгляд вглубь Павел Мезенцев p.mezentsev@rambler-co.ru
  2. 2. План● Что такое MapReduce● Элементарные запросы● Алгоритмы машинного обучения
  3. 3. История MapReduce2003 г. Презентация Google MapReduce2005 г. Начало разработки Hadoop в Yahoo2007 г. Первый “боевой” Hadoop в Yahoo (4 500 нод)2011 г. Стабильный релиз Hadoop 1.0
  4. 4. Где используется Hadoop?
  5. 5. Из чего состоит HadoopРаспределенная файловая система HDFS● Name Node● Data NodeСистема вычислений MapReduce● Job Tracker● Task Tracker
  6. 6. Архитектура Hadoop
  7. 7. Парадигма MapReduce● Map(k 1, v 1 )→list (k 2, v 2 )● Shuffle & sort● Reduce(k 2 , list (v 2 ))→list (k 3, v 3 )
  8. 8. Свойства MapReduceОтказоустойчивость● Репликация● Промежуточные данные хранятся на дискеВычислительная эффективность● Последовательная работа с диском● Data Locality● Speculative Execution
  9. 9. Элементарные операции● Filter● Sort● Aggregate● Join
  10. 10. Логи Апача ip - - [time] "GET url HTTP 1.0" responce size referrer "user agent"234.248.187.116 - - [01/May/2012:00:11:14 +0400] "GET http://news.rambler.ru/84459.html HTTP 1.0" 200 3347 - "Mozilla/5.0 (Windows; I; Windows NT 5.1; ru; rv:1.9.2.1...234.248.187.116 - - [01/May/2012:00:12:47 +0400] "GET http://news.rambler.ru/14545.html HTTP 1.0" 200 12905 http://news.rambler.ru/84459.html "Mozilla/5.0 (Windows; I...234.248.187.116 - - [01/May/2012:00:15:39 +0400] "GET http://news.rambler.ru/92834.html HTTP 1.0" 200 13995 http://news.rambler.ru/14545.html "Mozilla/5.0 (Windows; I...234.248.187.116 - - [01/May/2012:00:15:50 +0400] "GET http://news.rambler.ru/59243.html HTTP 1.0" 200 15434 http://news.rambler.ru/92834.html "Mozilla/5.0 (Windows; I...234.248.187.116 - - [01/May/2012:00:16:22 +0400] "GET http://news.rambler.ru/26836.html HTTP 1.0" 200 19972 http://news.rambler.ru/59243.html "Mozilla/5.0 (Windows; I...234.248.187.116 - - [01/May/2012:00:17:33 +0400] "GET http://news.rambler.ru/69898.html HTTP 1.0" 200 5339 http://news.rambler.ru/26836.html "Mozilla/5.0 (Windows; I...234.248.187.116 - - [01/May/2012:00:19:01 +0400] "GET http://news.rambler.ru/33116.html HTTP 1.0" 200 17092 http://news.rambler.ru/69898.html "Mozilla/5.0 (Windows; I...234.248.187.116 - - [01/May/2012:00:19:44 +0400] "GET http://news.rambler.ru/70344.html HTTP 1.0" 200 17505 http://news.rambler.ru/33116.html "Mozilla/5.0 (Windows; I...234.248.187.116 - - [01/May/2012:00:22:29 +0400] "GET http://news.rambler.ru/36486.html HTTP 1.0" 200 5631 http://news.rambler.ru/70344.html "Mozilla/5.0 (Windows; I...234.248.187.116 - - [01/May/2012:00:22:55 +0400] "GET http://news.rambler.ru/86889.html HTTP 1.0" 200 12829 http://news.rambler.ru/36486.html "Mozilla/5.0 (Windows; I...234.248.187.116 - - [01/May/2012:00:24:30 +0400] "GET http://news.rambler.ru/92288.html HTTP 1.0" 200 2567 http://news.rambler.ru/86889.html "Mozilla/5.0 (Windows; I...206.93.190.212 - - [01/May/2012:00:25:31 +0400] "GET http://news.rambler.ru/19636.html HTTP 1.0" 200 18800 - "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trid...234.248.187.116 - - [01/May/2012:00:26:17 +0400] "GET http://news.rambler.ru/71652.html HTTP 1.0" 200 9754 http://news.rambler.ru/92288.html "Mozilla/5.0 (Windows; I...206.93.190.212 - - [01/May/2012:00:26:22 +0400] "GET http://news.rambler.ru/77419.html HTTP 1.0" 200 13543 http://news.rambler.ru/19636.html "Mozilla/5.0 (compatible...56.134.253.176 - - [01/May/2012:00:26:22 +0400] "GET http://news.rambler.ru/22870.html HTTP 1.0" 200 4941 - "Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us...234.248.187.116 - - [01/May/2012:00:26:59 +0400] "GET http://news.rambler.ru/16899.html HTTP 1.0" 200 16334 http://news.rambler.ru/71652.html "Mozilla/5.0 (Windows; I...56.134.253.176 - - [01/May/2012:00:27:19 +0400] "GET http://news.rambler.ru/75525.html HTTP 1.0" 200 19956 http://news.rambler.ru/22870.html "Mozilla/5.0 (iPad; U; C...234.248.187.116 - - [01/May/2012:00:28:21 +0400] "GET http://news.rambler.ru/89381.html HTTP 1.0" 200 2163 http://news.rambler.ru/16899.html "Mozilla/5.0 (Windows; I...206.93.190.212 - - [01/May/2012:00:28:53 +0400] "GET http://news.rambler.ru/51517.html HTTP 1.0" 200 4098 http://news.rambler.ru/77419.html "Mozilla/5.0 (compatible...56.134.253.176 - - [01/May/2012:00:29:18 +0400] "GET http://news.rambler.ru/82514.html HTTP 1.0" 200 15383 http://news.rambler.ru/75525.html "Mozilla/5.0 (iPad; U; C...206.93.190.212 - - [01/May/2012:00:30:15 +0400] "GET http://news.rambler.ru/16247.html HTTP 1.0" 200 15262 http://news.rambler.ru/51517.html "Mozilla/5.0 (compatible...234.248.187.116 - - [01/May/2012:00:30:20 +0400] "GET http://news.rambler.ru/95348.html HTTP 1.0" 200 2282 http://news.rambler.ru/89381.html "Mozilla/5.0 (Windows; I...206.93.190.212 - - [01/May/2012:00:30:42 +0400] "GET http://news.rambler.ru/77261.html HTTP 1.0" 200 2396 http://news.rambler.ru/16247.html "Mozilla/5.0 (compatible...56.134.253.176 - - [01/May/2012:00:32:05 +0400] "GET http://news.rambler.ru/35353.html HTTP 1.0" 200 5436 http://news.rambler.ru/82514.html "Mozilla/5.0 (iPad; U; C...206.93.190.212 - - [01/May/2012:00:32:42 +0400] "GET http://news.rambler.ru/94600.html HTTP 1.0" 200 13284 http://news.rambler.ru/77261.html "Mozilla/5.0 (compatible...234.248.187.116 - - [01/May/2012:00:32:43 +0400] "GET http://news.rambler.ru/33780.html HTTP 1.0" 200 14543 http://news.rambler.ru/95348.html "Mozilla/5.0 (Windows; I...206.93.190.212 - - [01/May/2012:00:32:58 +0400] "GET http://news.rambler.ru/63754.html HTTP 1.0" 200 7173 http://news.rambler.ru/94600.html "Mozilla/5.0 (compatible...206.93.190.212 - - [01/May/2012:00:33:10 +0400] "GET http://news.rambler.ru/53586.html HTTP 1.0" 200 6737 http://news.rambler.ru/63754.html "Mozilla/5.0 (compatible...234.248.187.116 - - [01/May/2012:00:34:27 +0400] "GET http://news.rambler.ru/66747.html HTTP 1.0" 200 4256 http://news.rambler.ru/33780.html "Mozilla/5.0 (Windows; I...….................................................................................................................................................................................................................................................................................................
  11. 11. FilterТолько map стадияПример:Найти все логи поисковых переходов
  12. 12. Пример Java кодаpublic static class FilterMapper extends Mapper <LongWritable, Text, Text, NullWritable>{ protected void map (LongWritable key, Text logLine, Context context) { ApacheLogLine apacheLogLine = new ApacheLogLine (logLine.toString ()); if (apacheLogLine.getReferrer ().contains ("yandex.ru")) { context.write(logLine, NullWritable.get ()); } }}
  13. 13. Драйвер задачиpublic class FilterPrimitive{ public static int main (String [] args) throws Exception { Job job = new Job (); job.setJarByClass(FilterPrimitive.class); job.setMapperClass(FilterMapper.class); job.setNumReduceTasks (0); job.setOutputKeyClass (Text.class); job.setOutputValueClass(NullWritable.class); FileInputFormat.addInputPath(job, new Path (args [0])); FileOutputFormat.setOutputPath(job, new Path (args [1])); int returnCode = job.waitForCompletion(true) ? 1 : 0; return returnCode; }}
  14. 14. SortИспользуется 1 редьюсерПример:отсортировать логи по IP
  15. 15. Пример Java кодаpublic static class SortMapper extends Mapper <LongWritable, Text, Text, NullWritable>{ @Override protected void map (LongWritable key, Text logLine, Context context) throws IOException, InterruptedException { context.write(logLine, NullWritable.get ()); }}public static class SortReducer extends Reducer <Text, NullWritable, Text, NullWritable>{ @Override protected void reduce (Text logline, Iterable <NullWritable> clicks, Context context) throws IOException, InterruptedException { for (NullWritable click : clicks) { context.write(logline, click); } }}
  16. 16. AggregateMap-Reduce операция общего видаПример:посчитать число кликов, сделанных скажого из ip
  17. 17. Пример Java кодаpublic static class AggregateMapper extends Mapper <LongWritable, Text, Text, NullWritable>{ protected void map (LongWritable key, Text logLine, Context context) { ApacheLogLine apacheLogLine = new ApacheLogLine (logLine.toString ()); context.write(new Text (apacheLogLine.getIp ()), NullWritable.get ()); }}public static class AggregateReducer extends Reducer <Text, NullWritable, Text, LongWritable>{ protected void reduce (Text ip, Iterable <NullWritable> clicks, Context context) { int clicksCount = 0; for (NullWritable click : clicks) { clicksCount ++; } context.write (ip, new LongWritable (clicksCount)); }}
  18. 18. JoinПример задачи: имея таблицу соотвия “IP–география” отфильтровать логи, сделанные с московских IPшников.Как можно сделать Join при помощи MapReduce?
  19. 19. JoinПример задачи: имея таблицу соотвия “IP–география” отфильтровать логи, сделанные с московских IPшников.Как можно сделать Join при помощи MapReduce?● Map-Side Join● Reduce-Side Join
  20. 20. JoinMultipleInputs.addInputPath (conf, hdfsPath, TextInputFormat.class, JoinMapper.class);
  21. 21. Пример Java кода Мапперы:public static class Join1Mapper extends Mapper <LongWritable, Text, Text, Text>{ public void map (LongWritable lineNum, Text logLine, Context context) { ApacheLogLine apacheLogLine = new ApacheLogLine (logLine.toString ()); context.write(new Text (apacheLogLine.getIp ()), new Text ("log:" + logLine.toString ())); }}public static class Join2Mapper extends Mapper <LongWritable, Text, Text, Text>{ protected void map (LongWritable key, Text logLine, Context context) { String [] fields = logLine.toString ().split ("t"); context.write(new Text (fields [0]), new Text ("city_name:" + fields [1])); }}
  22. 22. Пример Java кодаpublic static class JoinReducer extends Reducer <Text, Text, Text, NullWritable>{ protected void reduce (Text ip, Iterable <Text> logsAndGeo, Context context) { List <String> logsList = new LinkedList <String> (); boolean isChosenCity = false; while (logsAndGeo.hasNext()) { String logOrGeo = logsAndGeo.next ().toString (); if (logOrGeo == "city_name:Moscow") { isChosenCity = true; } else { logsList.add (logOrGeo.substring (5)); } } if (isChosenCity) { for (String logLine : logsList) { context.write(new Text (logLine), NullWritable.get ()); } } }
  23. 23. Языки высокого уровняApache Pig Apache Hive vs● Скриптовый язык ● SQL подобный язык● Разработан в Yahoo ● Разработан в Facebook
  24. 24. Загрузка данных Apache Pig Apache Hivelogs = LOAD /user/mezentsev/logs as ( create table logs ( ip:chararray, ip STRING, empty1:chararray, empty1 STRING, empty2:chararray, empty2 STRING, human_time:chararray, request:chararray, vs human_time STRING, request STRING, return_code:int, return_code INT, size:int, size INT, referrer:chararray, referrer STRING, user_agent:chararray); user_agent STRING) LOCATION /user/mezentsev/logs;
  25. 25. Фильтрация Apache Pig Apache Hivefiltered_logs = FILTERlogs by select * from logs where(referrer matches.*yandex.ru.*); vs referrer like "%yandex.ru%";dump filtered_logs;
  26. 26. Сортировка Apache Pig Apache Hive SELECT ip,sorted_logs = ORDER human_time,logs BY ip, human_time; requestdump sorted_logs; vs FROM logs ORDER BY ip, human_time;
  27. 27. Агрегация Apache Pig Apache Hivelogs_by_ip = SELECT ip, count (1)GROUP logs BY ip; FROM logs GROUP BY ip;ip_clicks = FOREACH vslogs_by_ip generategroup, COUNT($1);DUMP ip_clicks;
  28. 28. Join Apache Pig Apache Hivemoscow_geo = FILTER SELECT logs.*geo BY FROM logs(city_name == Moscow); join geo ON logs.ip = geo.ip vs WHERElogs_with_geo = JOIN logs geo.city_name = "Moscow";BY ip, moscow_geo BY ip;DUMP logs_with_geo;
  29. 29. Как обрабатыватьданные быстро?
  30. 30. Как обрабатыватьданные быстро?● 2010 г. Google Dremel● 2012 г. Cloudera Impala● 2012 г. Amazon Redshift● 2013 г. Apache Drill
  31. 31. Как обрабатыватьданные быстро?● SQL образный синтаксис запросов● Результаты вычислений “не большие”● Отсутствует отказоустойчивость
  32. 32. MPP Архитектура
  33. 33. Impala vs Hive●Работают с одним хранилищемметаданных●Производительность Impala в 4-30 разбольше
  34. 34. Часть II Машинное обучение на MapReduce
  35. 35. Что такое машинноеобучение? Алгоритмы искуственного интеллекта, способные обучаться [Wikipedia]
  36. 36. Классификация
  37. 37. Кластеризация
  38. 38. Регрессия
  39. 39. Рекомендации
  40. 40. Apache Mahout● появился в 2008 году● 300 тыс. строк кода● означает “погонщик слона”● правильно произносить “махут”● вышла книга “Mahout in Action”
  41. 41. Реализованные алгоритмы Классификация Кластеризация● Логистическая регрессия ● К-средних● Байесовские классификаторы ● Нечеткий алгоритм K-средних● Случайный лес ● Минимизация ожидания● Скрытые марковские цепи ● Minhash кластеризация …............. А также ● Коллаборативная фильтрация ● Генетические алгоритмы ● Алгоритмы уменьшения размерностей
  42. 42. Машинное обучениена MapReduce● статья “MapReduce for Machine Learning on Multicore” (2008)● Алгоритм должен быть представим в аддитивной форме по входным данным
  43. 43. Наивный Байес () (1) xПризнаки x ⃗ = ... Класс y = {0, 1} (n) xФормула Байеса: (1) (n) (1) (n) P( x ,.... , x ∣ y)P( y∣x , .... , x )=P ( y) (1) (n) P(x ,.... , x )Наивное предположение: ∣x (1) ,.... , x (n))=P ( y) ∏i P(x (i)∣ y ) P( y С
  44. 44. Наивный Байесна MapReduce 1 ν( y) ∑ j 1( y j = y)● Выражение P( y)= = ν(all) ∑1 j● Map: выдаем ( y j , Σ s ub ) (total , Σ s ub )● Reduce: выдаем ( y j , Σ) (total , Σ)
  45. 45. Наивный Байесна MapReduce 2 (i) Выражение (i) ν( x , y)● P( x ∣ y)= ν( y )● Map: выдаем ((x i , y j ); Σ s ub )● Reduce: выдаем ((x i , y j ); Σ)
  46. 46. Кластеризация K средних
  47. 47. Реализация наMapReduceОтнесение объектов к кластерам Map: выдаем ( x , y nearest )Поиск новых центров кластеров Map: выдаем ( y j ,(Σs ub x , N )) Reduce: выдаем ( y j , x)
  48. 48. Логистическаярегрессия
  49. 49. Вероятность класса 1 P w ( x)= 1+exp(−w⋅x)
  50. 50. Максимумправдоподобия yi 1− y iLw ( x)= ∏i P w ( x i ) (1−P w ( x i )) nl(w)=∑i=1 y i log p ( x i )+(1− y i )log(1− p ( x i ))w=argmax w l (w )
  51. 51. МетодНьютона-РафсонаВ скалярном виде: В векторном виде l (w) −1w=w− w=w−H ∇ w l(w) l (w) 2 2 ( ) ( ) ∂ l(w) ∂ l(w) ∂ l(w) ... ∂ w1 ∂ w1 ∂ w1 ∂ w1 ∂ wn ∇ w l(w )= ... H= ... ... ... ∂ l(w) 2 ∂ l(w) 2 ∂ l(w) ... ∂ wn ∂ w n ∂ w1 ∂ wn ∂ wn
  52. 52. MapReduceдля Градиента Выражение ∂ l(w ) m =∑i=1 ( y i − p w (x i )) x i● (k) ∂ wk Map: вычисляем grad s ub [k ]=∑i ( y− pw ( x i )) x● (k i ) выдаем (k , grad s ub [k ])● Reduce: вычисляем grad [k ]=∑ grad s ub [k ] выдаем (k , grad [k ])
  53. 53. MapReduce дляГамильтониана 2 ∂ l(w) m =∑i=1 p w (x i )( p w ( x i )−1) x i x i ( j) (k)● Выражение ∂ wk ∂ w j● Map: вычисляем H s ub [k , j]=∑s ub .... выдаем ((k , j); H s ub [k , j])● Reduce: вычисляем H [k , j]=H s ub [k , j] выдаем ((k , j); H [k , j])
  54. 54. АсимптотикаАлгоритм Классическая Сложность MapReduce сложность mnНаивный Байес O(mn+nc) O( +nc log P) P mncK-средних O(mnc) O( +mn log P) P 2 3 2 3 m n nЛогистическая O(mn +n ) O( + +n2 log P)регрессия P Pn – размерность пространства признаковm – число обучающих примеровP – число ядер, на которых делается обучение
  55. 55. Недостаток
  56. 56. Недостаток Итерационные алгоритмы машинного обучения читают с диска раз за разом одну и ту же обучающую выборку, что приводит к большим накладным расходам
  57. 57. Vowpal Wabbit● Проект написан на C++● Начат в 2007 году в Yahoo● Сейчас разрабатывается в MicrosoftResearch
  58. 58. Предложенное решение● Итерационые алгоритмы должны обучаться в одну map-стадию● Все данные загружаются в оперативную память мапперов● Мапперы “находят” друг друга. Выстраиваются в бинарное дерево● Взаимодействие через операцию AllReduce
  59. 59. AllReduce: sum - 1 1 2 3 4 5 6 7
  60. 60. AllReduce: sum - 2 1 11 16 4 5 6 7
  61. 61. AllReduce: sum - 3 28 11 16 4 5 6 7
  62. 62. AllReduce: sum - 4 28 28 28 28 28 28 28
  63. 63. Реализованные алгоритмы● Метод сопряженных градиентов● LBFGS

×