Вопрос о дереве решений в книге программирование коллективного интеллекта

datascience.stackexchange https://datascience.stackexchange.com/questions/5606

  •  16-10-2019
  •  | 
  •  

Вопрос

В настоящее время я изучаю главу 7 («Моделирование с деревьями решений») книги «Коллективный интеллект программирования».

Я нахожу выходной сигнал функции mdclassify() с.157 Стушение. Функция касается отсутствующих данных. Предоставленное объяснение:

В основном дереве принятия решений все имеет подразумеваемый вес 1, что означает, что наблюдения полны полного для вероятности того, что предмет вписывается в определенную категорию. Если вместо этого вы следите за несколькими ветвями, вы можете придать каждой ветвью вес, равный доле всех других строк, которые находятся на этой стороне.

Из того, что я понимаю, экземпляр затем разделен между ветвями.

Следовательно, я просто не понимаю, как мы можем получить:

{'None': 0.125, 'Premium': 2.25, 'Basic': 0.125}

в качестве 0.125+0.125+2.25 не суммируется до 1 и даже целого числа. Как произошло новое наблюдение?

Код здесь:

https://github.com/arthur-e/programming-collectective-intelligence/blob/master/chapter7/triepredict.py

Используя исходный набор данных, я получаю здесь дерево:

screenshot

Может ли кто -нибудь объяснить мне точно, какие цифры точно означают и как они были точно получены?

PS: 1 -й пример книги неверен, как описано на их странице ошибок, но было бы хорошо объяснить второй пример (упомянутый выше).

Это было полезно?

Решение

Есть четыре функции:

  • реферат,
  • расположение,
  • ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ,
  • страницы

В вашем случае вы пытаетесь классифицировать экземпляр, где FAQ а также pages неизвестны: mdclassify(['google','France',None,None], tree).

Поскольку первый известный атрибут google, в вашем дереве решений, вас заинтересованы только в крае, который выходит из google Узел с правой стороны.

Есть пять случаев: три помечены Premium, один помечен Basic и один помечен None.

Экземпляры с ярлыками Basic а также None расколоть на FAQ атрибут. Их два, так что вес для них обоих 0.5.

Теперь мы разделяем на pages атрибут. There are 3 instances with pages значение больше 20 и два с pages значение не больше 20.

Вот хитрость: мы уже знаем, что веса для двух из них были изменены из 1 к 0.5 каждый. Итак, теперь у нас есть три экземпляра, взвешенные 1 каждый и 2 экземпляра взвешенных 0.5 каждый. Так что общая стоимость 4.

Теперь мы можем подсчитать веса для pages атрибут:

  • pages_larger_than_20 = 3/4
  • pages_not_larger_than_20 = 1/4 # 1 равен: 0,5 + 0,5

Все веса приписаны. Теперь мы можем умножить веса на «частоты» экземпляров (вспомнив, что для Basic а также None «Частота» сейчас 0.5):

  • Premium: 3 * 3/4 = 2.25 # Потому что есть три Premium экземпляры, каждый вес 0.75;
  • Basic: 0.5 * 1/4 = 0.125 # потому что Basic сейчас 0.5, и раскол наpages_not_larger_than_20 является 1/4
  • None: 0.5 * 1/4 = 0.125 # аналогично

Это, по крайней мере, откуда берутся цифры. Я разделяю ваши сомнения по поводу максимальной стоимости этой метрики, и должен ли он суммировать до 1, но теперь, когда вы знаете, откуда эти цифры вы можете подумать, как их нормализовать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с datascience.stackexchange
scroll top