Menu
CoddyTech

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

Урок 17 из 19 курса Введение в машинное обучение на Coddy.

Дерево решений (Decision Tree) — это нелинейная модель, используемая как для задач классификации, так и для регрессии. Оно имитирует процесс принятия решений человеком более точно, чем другие алгоритмы, что делает его интуитивно понятным и мощным инструментом для обработки сложных наборов данных. По своей сути дерево решений разбивает данные на подмножества, используя серию простых правил, что похоже на серию вопросов «да/нет» о признаках точек данных.
 

Источник: wikipedia

Представьте дерево решений в виде древовидного графа, где:

  • Каждый внутренний узел представляет собой «тест» атрибута (например, выпадет ли при подбрасывании монеты орел или решка), 
  • Каждая ветвь представляет результат теста, и
  • Каждый листовой узел представляет метку класса (решение, принятое после вычисления всех атрибутов).

Типы деревьев решений:

  • Деревья классификации: используются, когда прогнозируемым результатом является класс, к которому относятся данные.
  • Деревья регрессии: используются, когда прогнозируемый результат может считаться вещественным числом (например, цена дома).


 

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

challenge icon

Задание

Средне

Создайте функцию с именем decide_outcome, которая принимает список правил в следующем формате:

rules = {
	rule1: {"type": "bigger", "value": 5},
	rule2: {"type": "smaller", "value": 7},

}

И она получает информацию о том, к какому правилу переходить, если условие выполнено или нет:

outcome = {
	"rule1": {True: "rule2", False: "rule3"},
	"rule2": {True: "rule3", False: "rule4"},
	"rule3": {True: None, False: None}
	"rule4": {True: None, False: None}

}
data_point = {
	"rule1": 8,
	"rule2": 10,
}

Результатом должно быть rule4

  • 8 is bigger than 5 (True) → переходим к rule2 из этого правила "rule1": {True: "rule2", False: "rule3"},
  • 10 is smaller than 7 (False) → переходим к rule4 из этого правила "rule2": {True: "rule3", False: "rule4"},
  • Других путей для продолжения нет, поэтому результат — rule4

Всегда начинайте с <strong>rule1</strong>

Попробуйте сами

def decide_outcome(rules, outcome, point):
    current_rule = "rule1"
    # Напишите ваш код здесь

Все уроки раздела Введение в машинное обучение

Потренируйтесь самостоятельно: Онлайн-компилятор Python