Расчет информационного выигрыша в дереве решений

Этот онлайн калькулятор рассчитывает информационный выигрыш, возникающий при изменении состояния после получения новой информации

Эта страница существует благодаря следующим персонам

Timur

Timur

Создан: 2021-03-20 12:32:46, Последнее изменение: 2021-03-20 14:29:25
Creative Commons Attribution/Share-Alike License 3.0 (Unported)

Этот материал распространяется на условиях лицензии Creative Commons Attribution/Share-Alike License 3.0 (Unported). Это означает, что вы можете размещать этот контент на своем сайте или создавать на его основе собственный (в том числе и в коммерческих целях), при условии сохранения оригинального лицензионного соглашения. Кроме того, Вы должны отметить автора этой работы, путем размещения HTML ссылки на оригинал работы https://planetcalc.ru/8421/. Пожалуйста оставьте без изменения все ссылки на других авторов данной работы или работы, на основе которой создана данная работа (если таковые имеются в спроводительном тексте).

Калькулятор ниже обрабатывает набор обучающих примеров, затем рассчитывает информационный выигрыш разбиения по каждой возможной характеристике объекта. Расчет информационного выигрыша используется для нахождения оптимальных разбиений при построении дерева решений. Теория и формулы приведены под калькулятором.

Как использовать: Набор для обучения вводится в виде csv списка, в качестве разделителя используется точка с запятой. Первая строка считается метками характеристик и класса объекта (сначала характеристики, потом класс). Данные по умолчанию взяты из известного примера дерева решений играть или нет в теннис на улице. Объекты принадлежат к двум классам: "Играть" и "Не играть", в качестве характеристик используются "Осадки", "Температура", "Влажность" и "Ветер".

PLANETCALC, Расчет информационного выигрыша

Расчет информационного выигрыша

Знаков после запятой: 3
Файл очень большой, при загрузке и создании может наблюдаться торможение браузера.

Информационный выигрыш и деревья решений

Информационный выигрыш это метрика, введенная для оценки качества разбиения объектов по предикату при построении дерева решений. Дерево решений это логический алгоритм классификации. представляющий собой объединение логических условий в структуру дерева. Каждый узел дерева это "проверка" значения характеристики объекта (например, проверка значения свойства "Осадки"), а каждая ветвь это результат проверки (при проверке свойства "Осадки" из узла выходят три ветви, соответствующие значениям "Солнечно", "Переменная облачность" и "Пасмурно"). Каждый лист (конечный узел), это метка класса объекта (решения, принятого по итогам проверки свойств, например, "Играем" и "Не играем").

Чтобы было понятнее, разберем пример с данными по умолчанию.

Классифицируемые объекты обладают следующими свойствами (атрибутами):

  • Осадки: Солнечно/Переменная облачность/Пасмурно
  • Влажность: Высокая/Нормальная
  • Ветер: Да/Нет
  • Температура: Жарка/Умеренно/Прохладно

Классы объектов: Играем/Не играем

Анализируя свойства объектов дерево решений должно дать ответ на вопрос "Можем ли мы играть в теннис при таких условиях". При этот дерево должно делать это максимально эффективно, за наименее возможное количество шагов. Для этого на каждом шаге надо выбирать для проверки наилучший в текущей ситуации атрибут. Иными словами, атрибут, проверка которого даст нам максимум полезной информации.

Возникает вопрос - как измерить количество информации, которое даст нам проверка значения конкретного атрибута объекта? Один из подходов - это проверка уменьшения энтропии, и именно это рассчитывает метрика информационный выигрыш (information gain).

Вернемся к примеру. В нашем наборе для обучения есть пять объектов класса "Не играем" и девять объектов класса "Играем". Используя известную формулу энтропии Шеннона, находим текущую энтропию:

H=-\frac{5}{14} \log_2\frac{5}{14} - \frac{9}{14} \log_2\frac{9}{14} = 0.94

Теперь предположим, что мы начинаем классификацию объекта и решаем проверить значение атрибута "Ветер". Технически, мы выполняем разбиение нашего множества примеров по атрибуту "Ветер".

Если значение атрибута "Ветер" равно "Да", у нас остается 6 примеров. Три из них принадлежат классу "Играем" и три - классу "Не играем". Их энтропия, таким образом, равна

H=-\frac{3}{6} \log_2\frac{3}{6} - \frac{3}{6} \log_2\frac{3}{6} = 1

Получается, что если значение "Ветер" равно "Да", энтропия оставшегося набора даже выше, чем исходного.

Если значение атрибута "Ветер" равно "Нет", у нас остается 8 примеров. Шесть из них принадлежат классу "Играем" и два - классу "Не играем". Энтропия этого множества равна

H=-\frac{6}{8} \log_2\frac{6}{8} - \frac{2}{8} \log_2\frac{2}{8} = 0.81

Это конечно лучше чем исходное значение в 0.94 бита энтропии. То есть, если нам повезло и атрибут равен "Нет", мы получим разбиение с меньшей энтропией.

Чтобы оценить уменьшении энтропии в-общем, нам надо усреднить значение с весами равными вероятности получить "Да" и "Нет". Так как изначально у нас было шесть примеров со значением "Да" и восемь - со значением "Нет", среднее значение энтропии после разбиения по атрибуту "Ветер" будет

H_{Windy}=\frac{6}{14} H_{Windy=True} + \frac{8}{14} H_{Windy=False} = 0.429+0.463=0.892

Начав с энтропии 0.94 и проведя разбиение по атрибуту "Ветер", мы получили энтропию 0.892. Информационный выигрыш, как уменьшении энтропии после проверки атрибута "Ветер" составит

IG=H-H_{Windy}=0.048

Общая формула для расчета информационного выигрыша для атрибута a выглядит следующим образом

IG(T,a)=\mathrm {H} (T)-\mathrm {H} (T|a),

где
T - набор обучающих примеров, каждый в форме (\textbf{x},y) = (x_1, x_2, x_3, ..., x_k, y), где x_a\in vals(a) значение атрибута (свойства, характеристики) a^{\text{th}} конкретного примера и y - класс объекта (целевая функция),
\mathrm {H} (T|a) - энтропия T при условии проверки атрибута a (условная энтропия)

Формула для условной энтропии:

{\displaystyle \mathrm {H} (T|a)=\sum _{v\in vals(a)}{{\frac {|S_{a}{(v)}|}{|T|}}\cdot \mathrm {H} \left(S_{a}{\left(v\right)}\right)}.}

где
S_{a}{(v)} - такое подмножество множества обучающих примеров T, где у каждого примера значение атрибута a равно v.

Использую данную метрику мы может найти информационный выигрыш для каждого атрибута. В нашем примере проверка атрибута "Осадки" дает максимальный информационный выигрыш, равный 0.247 бит. Очевидный вывод - первым атрибутом для разбиения должен быть не "Ветер", а "Осадки".

Последнее замечание для тех, у кого возник вопрос "Зачем, зачем это всё? Почему бы просто не использовать оператор if для каждой комбинации атрибутов?". Вы конечно, можете так сделать, но надо понимать, что даже для такого небольшого примера число комбинаций равно 3*2*2*3=36. Мы, в свою очередь, можем построить дерево решений, используя только 14 из них для обучения алгоритма. И что самое замечательное, наш алгоритм, наше построенное дерево решений, может прекрасно классифицировать все оставшиеся 22 комбинации без нас. В этом весь смысл машинного обучения.

Ссылка скопирована в буфер обмена
PLANETCALC, Расчет информационного выигрыша в дереве решений

Комментарии