Дерево решений и случайный лес — различия между версиями
Sokolova (обсуждение | вклад) |
|||
Строка 7: | Строка 7: | ||
'''Дерево решений''' (англ. ''decision tree, DT'') {{---}} алгоритм классификации <tex>a(x)</tex>, задающийся деревом (связным ациклическим графом): | '''Дерево решений''' (англ. ''decision tree, DT'') {{---}} алгоритм классификации <tex>a(x)</tex>, задающийся деревом (связным ациклическим графом): | ||
* Множество вершин <tex> V = V_{внутр} \cup V_{лист} </tex>, <tex>v_0 \in V</tex> {{---}} корень дерева | * Множество вершин <tex> V = V_{внутр} \cup V_{лист} </tex>, <tex>v_0 \in V</tex> {{---}} корень дерева | ||
− | * Для <tex>v \in V_{внутр}</tex> определены | + | * Для <tex>v \in V_{внутр}</tex> определены предикат ветвления: <tex> \beta_v : X \rightarrow D_v </tex>, <tex>|D_v| < \infty</tex> и функция перехода в следующую вершину по значению предиката <tex> S_v : D_v \rightarrow V </tex>, |
* Для <tex>v \in V_{лист}</tex> определена метка класса <tex>y_v \in Y</tex> | * Для <tex>v \in V_{лист}</tex> определена метка класса <tex>y_v \in Y</tex> | ||
}} | }} | ||
Строка 14: | Строка 14: | ||
|neat = | |neat = | ||
|definition= | |definition= | ||
− | '''Бинарное | + | '''Бинарное дерево решений''' {{---}} частный случай дерева решений, для которого <tex> D_v = \{0,1\} </tex>. |
− | * Пример <tex> | + | * Пример <tex>\beta_v = [f_j(x) > a_j]</tex>, где <tex>f_j(x)</tex> - значение <tex>j</tex>-ого признака объекта <tex>x \in X</tex> |
}} | }} | ||
[[Файл:BinDT1.jpg |300px|thumb|right|Классификация объекта <tex> x \in X </tex> бинарным решающим деревом]] | [[Файл:BinDT1.jpg |300px|thumb|right|Классификация объекта <tex> x \in X </tex> бинарным решающим деревом]] | ||
Строка 26: | Строка 26: | ||
− | == | + | == Рекурсивный алгоритм построения бинарного дерева решений ID3 == |
− | Идея алгоритма <tex>ID3</tex> (англ. ''Induction of Decision Tree'') заключается в последовательном дроблении выборки на две части до тех пор, пока в каждой части не окажутся объекты только одного класса. Проще всего записать этот алгоритм в виде рекурсивной процедуры <tex> | + | Идея алгоритма <tex>ID3</tex> (англ. ''Induction of Decision Tree'') заключается в последовательном дроблении выборки на две части до тех пор, пока в каждой части не окажутся объекты только одного класса. Проще всего записать этот алгоритм в виде рекурсивной процедуры <tex>ID3</tex>, которая строит дерево по заданной подвыборке <tex>U</tex> и возвращает его корневую вершину. |
− | |||
− | '''V''' | + | '''V''' ID3(<tex>U</tex>): |
− | '''if''' | + | '''if''' все объекты множества <tex>U</tex> принадлежат одному классу <tex>y \in Y</tex> '''then''' |
− | + | создать новый лист <tex>v</tex> | |
− | + | <tex>y_v = y</tex> | |
− | <tex> | + | '''return''' v |
− | + | найти предикат с максимальной информативностью: | |
− | ''' | + | <tex>\beta= \mathrm{arg}\max_{f\in F} </tex> Gain(<tex>f</tex>, <tex>U</tex>) |
− | + | разбить выборку на две части <tex>U = U_0 \cup U_1</tex> по предикату <tex>\beta</tex>: | |
− | + | <tex>U_0 := \{x \in U: f_v(x) = 0\}</tex> | |
− | + | <tex>U_1 := \{x \in U: f_v(x) = 1\}</tex> | |
− | <tex> | + | '''if''' <tex>U_0 = \emptyset</tex> или <tex>U_1 = \emptyset</tex> |
+ | '''then''' | ||
+ | создать новый лист <tex>v</tex> | ||
+ | <tex>y_v</tex> = класс, в котором находится большинство объектов из <tex>U</tex> | ||
+ | '''else''' | ||
+ | создать новую внутреннюю вершину <tex>v</tex> | ||
+ | <tex>\beta_v = \beta</tex> | ||
+ | <tex>S_0</tex> = ID3(<tex>U_0</tex>) | ||
+ | <tex>S_1</tex> = ID3(<tex>U_1</tex>) | ||
'''return''' <tex>v</tex> | '''return''' <tex>v</tex> | ||
Строка 50: | Строка 57: | ||
====Энтропийный критерий==== | ====Энтропийный критерий==== | ||
+ | === Критерии останова === | ||
+ | Рекурсию останавливают в следующих случаях: <br> | ||
+ | * Все объекты множества <tex>U</tex> принадлежат одному классу <tex>y \in Y</tex>, тогда создается лист <tex>v</tex> с меткой класса <tex>y_v = y</tex> | ||
− | + | == Деревья регрессии == | |
− | == | ||
− | |||
− | |||
− | |||
− | |||
=== Критерии ветвления === | === Критерии ветвления === | ||
Строка 62: | Строка 67: | ||
* [[Критерий Джини]] | * [[Критерий Джини]] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== Рецукция решающих деревьев === | === Рецукция решающих деревьев === |
Версия 19:34, 20 января 2019
Содержание
Дерево решений
Определение: |
Дерево решений (англ. decision tree, DT) — алгоритм классификации
| , задающийся деревом (связным ациклическим графом):
Определение: |
Бинарное дерево решений — частный случай дерева решений, для которого
| .
Y classify(x):while : ( (x)) ; return
Рекурсивный алгоритм построения бинарного дерева решений ID3
Идея алгоритма
(англ. Induction of Decision Tree) заключается в последовательном дроблении выборки на две части до тех пор, пока в каждой части не окажутся объекты только одного класса. Проще всего записать этот алгоритм в виде рекурсивной процедуры , которая строит дерево по заданной подвыборке и возвращает его корневую вершину.V ID3(): if все объекты множества принадлежат одному классу then создать новый лист return v найти предикат с максимальной информативностью: Gain( , ) разбить выборку на две части по предикату : if или then создать новый лист = класс, в котором находится большинство объектов из else создать новую внутреннюю вершину = ID3( ) = ID3( ) return
Мера неопределенности распределения
Критерий ветвления
Критейрий Джини
Энтропийный критерий
Критерии останова
Рекурсию останавливают в следующих случаях:
- Все объекты множества принадлежат одному классу , тогда создается лист с меткой класса
Деревья регрессии
Критерии ветвления
Рецукция решающих деревьев
Оценивание вероятностей
Полужадный синтез
Алгоритмы построения решающих деревьев
Обобщающая способность решающих деревьев
Композиции решающих деревьев
- Решающий лес
- Бустинг над решающими деревьями
История
Ссылки
- Classification and Regression Trees — лекции Cosma Shalizi, ноябрь 2009.