📜  大数据分析-决策树

📅  最后修改于: 2020-12-02 06:45:24             🧑  作者: Mango


决策树是用于监督学习问题(例如分类或回归)的算法。决策树或分类树是其中每个内部(非叶子)节点都标记有输入要素的树。来自标记有特征的节点的弧线会标记有该特征的每个可能值。树的每片叶子都标记有一个类别或类别上的概率分布。

通过基于属性值测试将源集划分为子集,可以“学习”树。以称为递归分区的递归方式在每个派生子集上重复此过程。当节点处的子集具有目标变量的所有相同值时,或者拆分不再为预测增加值时,递归完成。决策树自上而下的归纳过程是贪婪算法的一个示例,它是学习决策树的最常见策略。

数据挖掘中使用的决策树有两种主要类型-

  • 分类树-当响应是名义变量时,例如,电子邮件是否为垃圾邮件。

  • 回归树-可以将预测结果视为实数时(例如,工人的薪水)。

决策树是一种简单的方法,因此存在一些问题。问题之一是决策树产生的结果模型差异很大。为了减轻这个问题,开发了决策树的集成方法。当前有两组广泛使用的合奏方法-

  • 打包决策树-这些树用于通过重复替换替换训练数据并对树投票进行共识预测来构建多个决策树。该算法被称为随机森林。

  • 增强决策树-梯度增强结合了弱学习者;在这种情况下,决策树以迭代的方式成为一个强大的学习者。它使弱树适合数据,并反复保持适合弱学习者,以纠正先前模型的错误。

# 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)