11. Apache Mahout
●
появился в 2008 году
●
300 тыс. строк кода
●
означает “погонщик слона”
●
правильно произносить “махут”
●
вышла книга “Mahout in Action”
13. Машинное обучение
на MapReduce
●
статья “MapReduce for Machine Learning on
Multicore” (2008)
●
Алгоритм должен быть представим в
аддитивной форме по входным данным
14. Наивный Байес
()
(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
С
15. Наивный Байес
на MapReduce 1
●
Выражение ν( y) ∑ j 1( y j = y)
P( y)= =
ν(all) ∑j 1
●
Map: выдаем ( y j , Σ s ub ) (total , Σ s ub )
( y j , Σ) (total , Σ)
●
Reduce: выдаем
16. Наивный Байес
на MapReduce 2
(i)
Выражение (i) ν( x , y)
●
P( x ∣ y)=
ν( y )
● Map: выдаем i
((x , y j ); Σ s ub )
● Reduce: выдаем ((x i , y j ); Σ)
18. Реализация на MapReduce
Отнесение объектов к кластерам
Map: выдаем ( x , y nearest )
Поиск новых центров кластеров
( y j ,(Σs ub x , N ))
Map: выдаем
( y j , x)
Reduce: выдаем
21. Максимум
правдоподобия
yi 1− y i
Lw ( x)= ∏i P w ( x i ) (1−P w ( x i ))
n
l(w)=∑i=1 y i log p ( x i )+(1− y i )log(1− p ( x i ))
w=argmax w l(w )
22. Метод
Ньютона-Рафсона
В скалярном виде: В векторном виде
l ' (w) −1
w=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
23. MapReduce
для Градиента
Выражение ∂ l(w ) m
=∑i=1 ( y i − p w (x i )) x i
● (k)
∂ wk
grad s ub [k ]=∑i ( y− pw ( x i )) x
(k i )
●
Map: вычисляем
выдаем
(k , grad s ub [k ])
●
Reduce: вычисляем grad [k ]=∑ grad s ub [k ]
выдаем (k , grad [k ])
24. 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])
25. Асимптотика
Алгоритм Классическая Сложность MapReduce
сложность
mn
Наивный Байес O(mn+nc) O( +nc log P)
P
mnc
O(mnc) O( +mn log P)
K-средних P
2
O(mn +n ) 3 m 2 n n3 2
O( + +n log P)
Логистическая P P
регрессия
n – размерность пространства признаков
m – число обучающих примеров
P – число ядер, на которых делается обучение
26. Особенности
алгоритмов в Mahout
●
в Наивном Байесе добавлен “отбор фич”
●
В Логистической регрессии используется
алгоритм “стохастического градиентного
спуска”
27. Запуск Наивного Байеса
в Mahout
Обучение
> mahout trainclassifier -i data -o model
Тестирование
> mahout testclassifier -m model -d data
30. Наш опыт
использования Mahout
●
Для классификации посетителей по полу и
возрасту
●
Использовались логи наших проектов за
последние 30 дней
●
Обучающая выборка – 1 млн. Человек.
Классифицируем 300 млн.
●
Время обучения и классификации порядка 3х
часов