Дерево решений и случайный лес — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 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> f_v : X \rightarrow D_v </tex> и <tex> D_v : X \rightarrow V </tex>, <tex>|D_v| < \infty</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> D_v = \{0,1\} </tex>.
* Пример <tex>f_v = [f_j(x) > a_j]</tex>, где <tex>f_j(x)</tex> - значение <tex>j</tex>-ого признака объекта <tex>x \in X</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 ==
+
== Рекурсивный алгоритм построения бинарного дерева решений ID3 ==
Идея алгоритма <tex>ID3</tex> (англ. ''Induction of Decision Tree'') заключается в последовательном дроблении выборки на две части до тех пор, пока в каждой части не окажутся объекты только одного класса. Проще всего записать этот алгоритм в виде рекурсивной процедуры <tex>TreeGrowing</tex>, которая строит дерево по заданной подвыборке <tex>U</tex> и возвращает его корневую вершину.
+
Идея алгоритма <tex>ID3</tex> (англ. ''Induction of Decision Tree'') заключается в последовательном дроблении выборки на две части до тех пор, пока в каждой части не окажутся объекты только одного класса. Проще всего записать этот алгоритм в виде рекурсивной процедуры <tex>ID3</tex>, которая строит дерево по заданной подвыборке <tex>U</tex> и возвращает его корневую вершину.
TODO: возможные StopCriterion, Major
 
  
  '''V''' TreeGrowing(<tex>U</tex>):
+
  '''V''' ID3(<tex>U</tex>):
   '''if''' StopCriterion(<tex>U</tex>)'''then'''
+
   '''if''' все объекты множества <tex>U</tex> принадлежат одному классу <tex>y \in Y</tex> '''then'''
       '''return''' новый лист <tex>v</tex>, взяв <tex>y_v</tex> := Major(<tex>U</tex>)
+
       создать новый лист <tex>v</tex>  
   выбрать признак, наиболее выгодный для ветвления дерева:  
+
      <tex>y_v = y</tex>
       <tex>f_v = \mathrm{arg}\max_{f\in F} </tex> Gain(<tex>f</tex>, <tex>U</tex>)
+
      '''return''' v
   '''if''' Gain(<tex>f_v</tex>, <tex>U</tex>) <tex> < G_0</tex> '''then'''
+
   найти предикат с максимальной информативностью:
       '''return''' новый лист <tex>v</tex> взяв <tex>y_v</tex> := Major(<tex>U</tex>)
+
       <tex>\beta= \mathrm{arg}\max_{f\in F} </tex> Gain(<tex>f</tex>, <tex>U</tex>)
  создать новую внутреннюю вершину <tex>v</tex> с функцией <tex>f_v</tex>
+
   разбить выборку на две части <tex>U = U_0 \cup U_1</tex> по предикату <tex>\beta</tex>:
  '''for''' (<tex>k \in D_v</tex>):
+
      <tex>U_0 := \{x \in U: f_v(x) = 0\}</tex>
      <tex>U_k := \{x \in U: f_v(x) = k\}</tex>
+
      <tex>U_1 := \{x \in U: f_v(x) = 1\}</tex>
       <tex>S_v(k)</tex> := TreeGrowing(<tex>U_k</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:
 
* [[Критерий Джини]]
 
* [[Критерий Джини]]
  
=== Критерии останова ===
 
 
=== Что находится во внутренних вершинах ===
 
 
=== Что находится в листьях ===
 
 
=== Передача информации между вершинами ===
 
* (alternating decision tree)
 
  
 
=== Рецукция решающих деревьев ===
 
=== Рецукция решающих деревьев ===

Версия 19:34, 20 января 2019

Дерево решений

Определение:
Дерево решений (англ. decision tree, DT) — алгоритм классификации [math]a(x)[/math], задающийся деревом (связным ациклическим графом):
  • Множество вершин [math] V = V_{внутр} \cup V_{лист} [/math], [math]v_0 \in V[/math] — корень дерева
  • Для [math]v \in V_{внутр}[/math] определены предикат ветвления: [math] \beta_v : X \rightarrow D_v [/math], [math]|D_v| \lt \infty[/math] и функция перехода в следующую вершину по значению предиката [math] S_v : D_v \rightarrow V [/math],
  • Для [math]v \in V_{лист}[/math] определена метка класса [math]y_v \in Y[/math]


Определение:
Бинарное дерево решений — частный случай дерева решений, для которого [math] D_v = \{0,1\} [/math].
  • Пример [math]\beta_v = [f_j(x) \gt a_j][/math], где [math]f_j(x)[/math] - значение [math]j[/math]-ого признака объекта [math]x \in X[/math]
Классификация объекта [math] x \in X [/math] бинарным решающим деревом
Y classify(x):
  [math]v = v_0[/math]
  while [math]v \in V_{внутр}[/math]:
    [math]v := S_v[/math]([math]f_v[/math](x)) ;
  return [math]y_v[/math]


Рекурсивный алгоритм построения бинарного дерева решений ID3

Идея алгоритма [math]ID3[/math] (англ. Induction of Decision Tree) заключается в последовательном дроблении выборки на две части до тех пор, пока в каждой части не окажутся объекты только одного класса. Проще всего записать этот алгоритм в виде рекурсивной процедуры [math]ID3[/math], которая строит дерево по заданной подвыборке [math]U[/math] и возвращает его корневую вершину.

V ID3([math]U[/math]):
  if все объекты множества [math]U[/math] принадлежат одному классу [math]y \in Y[/math] then
     создать новый лист [math]v[/math] 
     [math]y_v = y[/math]
     return v
  найти предикат с максимальной информативностью:
     [math]\beta= \mathrm{arg}\max_{f\in F} [/math] Gain([math]f[/math], [math]U[/math])
  разбить выборку на две части [math]U = U_0 \cup U_1[/math] по предикату [math]\beta[/math]:
     [math]U_0 := \{x \in U: f_v(x) = 0\}[/math]
     [math]U_1 := \{x \in U: f_v(x) = 1\}[/math]
  if [math]U_0 = \emptyset[/math] или [math]U_1 = \emptyset[/math] 
     then
     создать новый лист [math]v[/math]
     [math]y_v[/math] = класс, в котором находится большинство объектов из [math]U[/math]
     else
     создать новую внутреннюю вершину [math]v[/math]
     [math]\beta_v = \beta[/math]
     [math]S_0[/math] = ID3([math]U_0[/math])
     [math]S_1[/math] = ID3([math]U_1[/math])
  return [math]v[/math]

Мера неопределенности распределения

Критерий ветвления

Критейрий Джини

Энтропийный критерий

Критерии останова

Рекурсию останавливают в следующих случаях:

  • Все объекты множества [math]U[/math] принадлежат одному классу [math]y \in Y[/math], тогда создается лист [math]v[/math] с меткой класса [math]y_v = y[/math]

Деревья регрессии

Критерии ветвления


Рецукция решающих деревьев

Оценивание вероятностей

Полужадный синтез

Алгоритмы построения решающих деревьев

Обобщающая способность решающих деревьев

Композиции решающих деревьев

История

Ссылки

Литература