Вопрос о дереве решений в книге программирование коллективного интеллекта
-
16-10-2019 - |
Вопрос
В настоящее время я изучаю главу 7 («Моделирование с деревьями решений») книги «Коллективный интеллект программирования».
Я нахожу выходной сигнал функции mdclassify()
с.157 Стушение. Функция касается отсутствующих данных. Предоставленное объяснение:
В основном дереве принятия решений все имеет подразумеваемый вес 1, что означает, что наблюдения полны полного для вероятности того, что предмет вписывается в определенную категорию. Если вместо этого вы следите за несколькими ветвями, вы можете придать каждой ветвью вес, равный доле всех других строк, которые находятся на этой стороне.
Из того, что я понимаю, экземпляр затем разделен между ветвями.
Следовательно, я просто не понимаю, как мы можем получить:
{'None': 0.125, 'Premium': 2.25, 'Basic': 0.125}
в качестве 0.125+0.125+2.25
не суммируется до 1 и даже целого числа. Как произошло новое наблюдение?
Код здесь:
Используя исходный набор данных, я получаю здесь дерево:
Может ли кто -нибудь объяснить мне точно, какие цифры точно означают и как они были точно получены?
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, но теперь, когда вы знаете, откуда эти цифры вы можете подумать, как их нормализовать.