Аналитика больших данных - деревья решений
Дерево решений - это алгоритм, используемый для задач контролируемого обучения, таких как классификация или регрессия. Дерево решений или дерево классификации - это дерево, в котором каждый внутренний (неконечный) узел помечен входной функцией. Дуги, исходящие из узла, помеченного как объект, помечаются каждым из возможных значений объекта. Каждый лист дерева помечен классом или распределением вероятностей по классам.
Дерево можно «изучить», разделив исходный набор на подмножества на основе теста значения атрибута. Этот процесс повторяется для каждого производного подмножества рекурсивным способом, называемымrecursive partitioning. Рекурсия завершается, когда все подмножество в узле имеет одинаковое значение целевой переменной или когда разделение больше не добавляет значения к прогнозам. Этот процесс нисходящей индукции деревьев решений является примером жадного алгоритма и наиболее распространенной стратегией изучения деревьев решений.
Деревья решений, используемые в интеллектуальном анализе данных, бывают двух основных типов:
Classification tree - когда ответ является номинальной переменной, например, является ли письмо спамом или нет.
Regression tree - когда прогнозируемый результат можно считать действительным числом (например, зарплата рабочего).
Деревья решений - это простой метод, и у него есть некоторые проблемы. Одна из этих проблем - высокая дисперсия результирующих моделей, создаваемых деревьями решений. Чтобы решить эту проблему, были разработаны методы ансамбля деревьев решений. В настоящее время широко используются две группы ансамблевых методов:
Bagging decision trees- Эти деревья используются для построения нескольких деревьев решений путем многократной повторной выборки обучающих данных с заменой и голосования за деревья для согласованного предсказания. Этот алгоритм получил название случайного леса.
Boosting decision trees- Повышение градиента объединяет слабых учеников; в этом случае деревья решений объединяются в одного сильного ученика итеративно. Он подгоняет слабое дерево к данным и итеративно подбирает слабых учеников, чтобы исправить ошибку предыдущей модели.
# Install the party package
# install.packages('party')
library(party)
library(ggplot2)
head(diamonds)
# We will predict the cut of diamonds using the features available in the
diamonds dataset.
ct = ctree(cut ~ ., data = diamonds)
# plot(ct, main="Conditional Inference Tree")
# Example output
# Response: cut
# Inputs: carat, color, clarity, depth, table, price, x, y, z
# Number of observations: 53940
#
# 1) table <= 57; criterion = 1, statistic = 10131.878
# 2) depth <= 63; criterion = 1, statistic = 8377.279
# 3) table <= 56.4; criterion = 1, statistic = 226.423
# 4) z <= 2.64; criterion = 1, statistic = 70.393
# 5) clarity <= VS1; criterion = 0.989, statistic = 10.48
# 6) color <= E; criterion = 0.997, statistic = 12.829
# 7)* weights = 82
# 6) color > E
#Table of prediction errors
table(predict(ct), diamonds$cut)
# Fair Good Very Good Premium Ideal
# Fair 1388 171 17 0 14
# Good 102 2912 499 26 27
# Very Good 54 998 3334 249 355
# Premium 44 711 5054 11915 1167
# Ideal 22 114 3178 1601 19988
# Estimated class probabilities
probs = predict(ct, newdata = diamonds, type = "prob")
probs = do.call(rbind, probs)
head(probs)