开发手册 欢迎您!
软件开发者资料库

大数据分析 - 决策树

大数据分析决策树 - 从概述,数据生命周期,方法论,核心可交付成果,关键利益相关者,数据分析师,科学家,问题定义,数据收集,清理,总结,探索,可视化开始,从简单而简单的步骤学习大数据分析,R简介,SQL简介,图表和图形,数据分析工具,统计方法,数据分析机器学习,朴素贝叶斯分类器,K均值聚类,关联规则,决策树,Logistic回归,时间序列分析,文本分析, 在线学习。

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

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

数据挖掘中使用的决策树有两个主要类型和减号;

  • 分类树 : 当响应是名义变量时,例如,如果电子邮件是垃圾邮件.

  • 回归树 : 当预测结果可以被认为是实数(例如工人的工资)时.

决策树是一种简单的方法,并且因此有一些问题.其中一个问题是决策树产生的结果模型的高度差异.为了缓解这个问题,开发了决策树的集合方法.目前广泛使用两组集合方法 :

  • 装箱决策树 : 这些树用于通过重复重新采样替换训练数据来构建多个决策树,并对树进行投票以进行共识预测.该算法被称为随机森林.

  • 提升决策树 : 渐变助推结合弱势学习者;在这种情况下,决策树以迭代的方式成为一个强大的学习者.它适用于数据的弱树,并迭代地保持弱学习者的拟合,以纠正先前模型的错误.

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