Data Mining Labs Деревья Решений
Dec 13, 2014
Data Mining LabsДеревья Решений
Простые
Наглядные
«Белый ящик»
Быстрые
Работают с любыми данными
≈Робастны
DM Labs2Зачем нужны деревья решений?
Зачем?
× Простые
× Слабые
× Эвристическое обучение (NP-complete)
× →разные деревья для похожих данных
DM Labs3Зачем нужны деревья решений?
CART• CART “Classification and Regression Trees”
Breiman Friedman Olsen & Stone
• CART придумали для knnhttp://www.youtube.com/watch?v=8hupHmBVvb0
• Альтернативные алгоритмы:ID3C4.5ID5CART
DM Labs4 CART, история
Дерево
• Узлы (сплит) – условие
o Условия бинарные: >?, ==
o Условия только по одной переменной
• Ветки – True/False
• Листья – константы
o Регрессия: число
o Классификация: метка/число
Пил яд?bool
Цианид?не полоний, не мышьяк
Больше 1мг?numeric
ок
ок
не ок
ок
DM Labs5 Из чего состоит дерево?
Дерево
• Узлы (сплит) – условие
o Условия бинарные: >?, ==
o Условия только по одной переменной
• Ветки – True/False
• Листья – константы
o Регрессия: число
o Классификация: метка/число
Пил яд?bool
Цианид?не полоний, не мышьяк
Больше 1мг?numeric
DM Labs6 Из чего состоит дерево?
Как вырастить дерево?
Learning?
• Дерево недифференцируемо
• Допустим у нас 100 бинарных переменных...
Надо ли париться?
• Жадная схема
• Наверное не лучшое дерево, но и так сойдет
DM Labs7 Как вырастить дерево?
Как вырастить дерево?
1. Как делать сплиты?
2. Когда остановиться со сплитами? ~дошли до листьев
3. Что записывать в лист?
DM Labs8 Как вырастить дерево?
Как делать сплиты?
• Нужно уметь сравнивать узлы – кого лучше рассекать. Задать меру.
• Мера должна достигать максимума, если в узле поровну всех классов (хуже будет).
• Должна быть нулем, если в узле все одного класса (лучше не сделать).
DM Labs9 Откуда брать сплиты?
Как делать сплиты?
• Нужно уметь сравнивать узлы – кого лучше рассекать. Задать меру (не)хорошести .
1. Misclassification Rate
2. Entropy
3. Gini Index
j
jj pppH log)(0log0 = 0
p=(p1,p2,…. pn)
j
jji
ji ppppi 21)(
DM Labs10 Меры (не)хорошести сплитов
Как делать сплиты?
• Нужно уметь сравнивать узлы – кого лучше рассекать. Задать меру (не)хорошести .
1. Misclassification Rate
2. Entropy
3. Gini Index
DM Labs11 Меры (не)хорошести сплитов
Меры (не)хорошести
• Первая – самая логичная, НО:
o МБ ни один сплит ее не улучшает..
40% B 60% A
60% A 40% B
Split 2
Split 1
DM Labs12Проблемы с Misclassification Rate
Меры (не)хорошести
• Первая – самая логичная, НО:
o МБ она будет одинаковой для двух сплитов, а один из них определенно лучше
400 A 400 B
300 A
100 B
100 A
300 B
ИЛИ?
200 A
400 B
200 A
0 B
400 A 400 B
DM Labs13Проблемы с Misclassification Rate
Хорошесть дерева
• Сумма хорошестей по узлампомноженная на %точек в узле
400 A 400 B
300 A
100 B
100 A
300 B
ИЛИ?
200 A
400 B
200 A
0 B
400 A 400 B
DM Labs14 Хорошесть дерева
Хорошесть дерева
# точек p классов Gini Index
A B A B
pA pB p2A p2
B 1- p2A- p2
B
400 400 0.5 0.5 0.25 0.25 0.5
DM Labs15 Хорошесть дерева
# точек p классов Gini Index Вклад в дерево
A B A B
pA pB p2A p2
B 1- p2A - p2
B
300 100 0.75 0.25 0.5625 0.0625 0.375 0.1875
100 300 0.25 0.75 0.0625 0.5625 0.375 0.1875
Total 0.375
200 400 0.33 0.67 0.1111 0.4444 0.4444 0.3333
200 0 1 0 1 0 0 0
Total 0.3333
Хорошесть дерева DM Labs16 Хорошесть дерева
Построение сплитов
• Наделать кандидатов в листья:o для всех сплитов,
oдля каждой переменной, oрекурсивно
• Выбрать сплит с наибольшим сниженим Gini Index.
• Внутрь – метку класса с majority vote или среднее
DM Labs17 Построение сплитов
Построение сплитов
• Продолжаем процесс пока есть что сплититьТоесть, в листья осталось достаточно точек
• Лучше отрастить дерево, а потом сделать из него аккуратный куст
o ...Если мы сразу не растили пень...
DM Labs18 Построение сплитов
Пример, игрушечный
0 2 4 6 8
02
46
Classifying A or B
x
y
AAA
AAAA
A
AAAA
AA
A
AA
A
AA A
A
A
AA
A
AA
AA
AA
A A
AA
A
A A
AA
A
A
AA
AA
A
A
A
BB
BB
B
BB
B
B
B
B B
B
B B
BB
BB
B
BB
BB
B
B
B
B
B
B
BB
B
B
B
B
B
B
BB
B B
B
B
B
B
B
B
B
B
• Надо выбрать по какой переменной делать сплит
• Берем оба кандидата, ищем оптимальный сплит, сравниваем
• Записываем majority vote/ среднее
DM Labs19 Игрушечный пример
0 2 4 6 8
02
46
Plot showing how Tree works
x
y
AAA
AAAA
A
AAAA
AA
A
AA
A
AA A
A
A
AA
A
AA
AA
AA
A A
AA
A
A A
AA
A
A
AA
AA
A
A
A
BB
BB
B
BB
B
B
B
B B
B
B B
BB
BB
B
BB
BB
B
B
B
B
B
B
BB
B
B
B
B
B
B
BB
B B
B
B
B
B
B
B
B
B
Пример, игрушечный
|x< 2.808
y>=2.343 y>=3.442
A B A B
• Получаем что-то такое (R пакет rpart)
• Каждый сплитлокально-оптимален
DM Labs20 Игрушечный пример
Пример, игрушечный
:(
DM Labs21 Игрушечный пример
Пример, spam DM Labs22Пример классификации спама
Упрощение дерева• Проверять наилучшую глубину лучше с помощью
кросс-валидации.
Misclassification Rates
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 10 20 30 40 50 60 70 80
Size of the Tree
Erro
r rat
es
Misclassification rateon Training Set
Misclassification rateon Test Set
Source: CART by Breiman et al.
DM Labs23 Упрощение дерева
Упрощение дерева• Проверять наилучшую глубину с помощью кросс-
валидации.
• Вводится параметр complexity. Варьируя его будет оставаться меньше листьев.
Source: CART by Breiman et al.cp
X-v
al R
ela
tive
Err
or
0.2
0.4
0.6
0.8
1.0
Inf 0.32 0.0057 0.003 0.0021 0.0017 0.0011
1 2 3 5 6 9 10 14 17 21 24 26
size of tree
DM Labs24 Упрощение дерева
Summary• Дерево это хороший и наглядный инструмент
анализа
• Скорее всего оно будет не самым-оптимальным
• Оно простое, но предсказательной силы может не хватить
• Оно простое, поэтому его быстро строить и быстро использовать
• Обычно строится в глубину, а потом срезается подстать какому-то критерию
DM Labs25 Summary
Случайный лес DM Labs26 Случайный лес
Случайный лес
cart
cart cart cartcart
cartcart
cartcart
cart
cartcartcartcartcartcart cart cart
cart cartcartcartcart
cart cart cartcart cartcartcartcart
cart cart cartcart cartcartcartcartcart cart cart
cart cartcartcartcart
cart cart cartcart cartcartcartcart
cart cart cartcart cartcartcartcart cart cart cart
cart cartcartcartcart
cart cart cartcart cartcartcartcart
cart cart cartcart cartcartcartcart
kaggle
DM Labs27 Случайный лес
Случайный лес
Random Forest = Bagging с деревьями (Breiman et al.)
• Очень простой алгоритм
• Просто паралеллить
• Отличная точность (kaggle-рецепт)
• Быстрый (по сравнению с neural committee)
Реализует принцип «мудрость толпы».
DM Labs28 Зачем нужен RF?
Идея
• Строим много моделей.По-хорошему, разных, на разных dataset’ах.С высоким variance и приемлимым bias.
• Усредняем – получаем низкое и то и другое.
• Если ошибки моделей некоррелированы, ошибка должна уменьшится в М раз (по отношению к составляющим ансамбль моделям).
• На практике оно коррелировано, но эффект есть
DM Labs29 Идея RF
Случайный лес
Алгоритм:
For i in 1..M:
1. Делаем бутстрап-выборку данных.
2. Строим на ней дерево.
3. Кладем полученное дерево в ансамбль.
Использование:
1. Делаем прогноз всех M деревьев
2. Усредняем / делаем Majority Vote
DM Labs30 Алгоритм RF
Случайный лес
Деревья используют по-разному:
• Любой попавшийся алгоритм
• ID5 например строит более «широкую» сетку, не глубоко. Cubist – RF c ID5
• Строят «до упора» - R randomForest
• Строят до заданного уровня (не парятся над глубиной)
Случайный лес DM Labs31 Дерево в лесу
Случайный лес
State-of-the-art, широкий класс задач:
• 1980-90-ые: Нейросети
• 2000-ые, начало: SVM
• 2000-ые, конец: Random Forest
• 2010-ые: Random Forest /GBM
• Сейчас: Deep Learning? Его скоро разберут на части и вставят в RF
Случайный лес DM Labs32 История методов ML
Summary• ...
Случайный лес DM Labs33 Summary