text: 数字化审计应用｜机器学习：决策树算法原理及操作范例
  一、基本概念决策树是从一个或多个预测变量中，针对类别因变量的层级，预测事例或对象的关系（会员数），是数据挖掘（Data Mining）中一项主要的技巧。决策树的目标是针对类别因变量加以预测或解释反应结果。就其本身而言，此模块分析技术与判别分析、聚类分析与非线性估计所提供的功能是一样的。决策树的灵活性使得数据本身更具吸引力，但并不意味着许多传统方法就会被排除在外。决策树模块的创建包括三种形式：（1）针对类别预测变量，计算以单变量分裂为基础的二元决策树。（2）针对顺序预测变量，计算以单变量分裂为基础的二元决策树（至少为顺序尺度）。（3）混合两类方式的预测变量，计算以单变量分裂为基础的二元决策树。另外，也提供以线性组合分裂（Linear Combination Split）为基础，计算区间尺度预测变量的决策树选项。二、决策树与判别函数决策树是从一个或多个预测变量中，针对类别因变量的层级，预测事例或对象的关系（会员数），是数据挖掘（Data Mining）中一项主要的技巧。下图所示为决策树与判别函数比较表。判别函数保有（利用）系数与决策方程保有（利用）系数与决策方程，且判别函数的相似性决策理论则较决策树的层级结构，其分类的可信度较没有说服力决策树的预测变量及其分类规则可以执行三个独立的简单回归分析，又或者说是三个分开有前后相关的简单线性回归利用判别函数所考虑的判别函数，预测变量与因变量间的关系可视为一个多元回归方程决策树则是以递归层级结构原貌做为分类的依据原则判别函数是利用事例间预测变量相似性原貌做为判别依据决策树视图预测变量的效用来自于每次仅取一个变量。决策树还提供许多扩展弹性的特性，针对单变量分裂（分层）所执行的每次一个预测变量的视图，相较众多变量综合视图的更清楚综合所有变量进行统计程序决策树程序可以处理类别变量、连续变量或者混合两种预测变量传统的线性判别分析要求预测变量至少是区间尺度以上许多递归线性组合分裂（分层）可能会呈现许多预测变量，但除了因变量本身仅为两个层级，与简单线性组合线性分裂（分层）相比，传统的非递归线性判别函数呈现，可以保留预测变量未使用时大量真正的数据信息判别函数中，线性判别方程的数目会被抽取成少于预测变量或者被预测变量层级数减掉三、计算方法一、制定预测精确性的标准规范分类树分析的目的，简单来说，就是将最有可能发生的事情预测出来。但是很遗憾的是，精确性预测的操作定义通常很难得到。在典型的应用中，成本是指事例被混合分类时的比例；成本这个概念的引用，是针对事例是否有发生错误分类的现象，且占所有事例数的比例。由此延伸，则可定义为预测过程中，使用者所欲损失的范围；因此，当成本愈小，表示事例遭混合分类的情形就相对减少，预测的精确性就愈高。先验概率（PRIORS）-最小化成本：（1）如果研究中，不同的比例不被接受，或者各个分类中的事例接近相等，那么可以选择“相同先验概率”。（2）如果不同的基本比例确实会影响到分类的数目（或者说，此为一概率样本），那么可以依据样本中的分类比例来估计先验概率。（3）如果针对基本比例有着特定的意义（如前一次执行过的研究结果），便可以给予不同的基本比例（Base Rate）。（4）如果制定相同的错误分类成本，而不以事例数作为权数计算，那么相同计算结果来自于以分类的大小作为先验概率估算基础、各分类错误成本相等，以及利用事例权重分析汇总的数据。当然在以下的情况也可以获相同的错误分类率：1）先验概率都是相同的。2）给定分类1事例错误分类为分类2的成本是将分类2的事例分给分类1的2／3）并且不以事例权重加入计算。二、选择分裂（分层）技术下图所示为选择分裂（分层）技术表。判别函数基础的单变量分裂（分层）第一个步骤为针对现行树（current tree）定义经节点的最佳分裂（分层）以及用来进行分裂（分层）的预测变量，每一最终节点，程序会计算事例与预测变量之间的关系是否显著，如果预测变量为类别变量p-value会以事例与预测变动（在同一节点中出现）的独立性（independence）计算卡方检验的 p-value；如果是顺序预测变量，程序就会以ANOVA方法计算p-value判别函数基础的线性组合分裂（分层）此方法虽然是针对类别尺度的预测变量，但是在计算过程中，变量是假设为区间尺度所测量的数值。这种以连续预测变量计算线性组合的结果与前一种纯粹以类别尺度预测变量的结果是类似的奇异值分解方法，是将连续预测变量转换为一组新的非重复的预测变量，运作的方法与程序为前述的超类（Superclasses）方式寻找最接近的分裂（分层）结果以线性组合呈现为Mapped block映射（onto）原始连续预测变量，且展示一个单变量分裂（分层）C＆RT方式的彻底搜索（为单变量分裂）（分层）在分类树模块中，提供三种适合度检查的方法：①Gini measure of node impurity，当某一节点中，只有一个分类且值为0使用，这个方法是依据C＆RT（Breiman等人1984提出）所延伸出来的最佳适合度测量；②Chi-Square测量法，此种方法与Bartlett于1984年提出的 Bartlett＇s Chi-aquane 相似；③G-Square测量法，与结构方程建模中的最大概Chi-Square相似，C＆RT方式的彻底搜索功能选项乃是通过上述三种适合度方法，求解最大的简化值，进而定义最佳的分裂（分层）结果三、定义停止分裂（分层）的时间点如果因变量的可观察分类或者分类树分析中的预测变量的阶级水平内部测量错误或存在噪音因子，那么继续此实验直到“纯”的最终节点出现也是不切实际的，在分类树模块中，提供两个功能选项用作控制停止分裂（分层）的时间点。（1）取小n（是指最终节点中规定的事例或对象数）。制定最终节点内的事例或对象数目，在分类树执行的过程中，程序会计算落入节点数的数目直至到达最小n时，才会停止。（2）另一种方法为制定对象的片段，这个方法的目的为执行分类数过程直到纯的最终节点出现或者没有任何分类超过一个或多个分类所制定的最小片段值，如果先验概率相同，且制定相同的分类大小，那么当最终节点内的分类没有分配到任何事例或对象时，分裂（分层）过程会自动停止，如果先验概率不等，程序依然会针对所制定的分类大小与片段数值相比较，直至没有超出片段数值的设定，才会停止。四、选择适当大小的分类树（Right-Sized）在部分可获得的一般化过程中，可以取得如何构成适当大小的分类树。依据事实发生的现象，非常有必要有效且思考严谨地利用，同时将整个过程愈简化愈好。在增加预测的精确性前提之下，利用所有可用的信息，并省略用不到的部分。如果可能，应尽量了解理论所描述的部分。基于任何科学理论的特征性使用，必须试着去制定适当大小的分类树；在分类树模块中，提供用户对所有可能的树状结构，两种不同的选择适当大小的思考策略，可选择其一或两者合并使用，下图所示为适当大小的分类树。FACT-Style Direct Stopping制定对象片段（停止参数设置），采用FACT-Style Direct Stopping的停止规则，诊断现有信息用以定义树状结构大小的合理性；特别的是，这里合理性的定义是采用交叉确认方法测试样本的交叉验证(Test Sample Cross-Validate)ꔷ 测试与样本可以分开独立收集一连串数据，或者在大的学习样本可取得之下，随时选择部分比例的事例，如三分之一或二分之一作为测试样本用途。ꔷ 在测试样本错误分类矩阵表格中，呈现的是测试样本中每个分类的观测值（Column），是否错误分类到其他分类（Row），同时表格中也呈现测试样本的交叉确认成本与其标准差V-fold 交叉确认ꔷ 此处定义的V值，除了代表将学习样本尽可能分为相同大小的子样本之外，目的是作为交叉确认；进一步说，每组样本有（V-1）次成为学习样本的一部分，并重复交叉确认，剩余的那一组就当成测试样本。ꔷ 此种方法的成本估算，是将V组测试样本各别计算，然后予以平均，同时也会展现标准差于表格中整体交叉确认(Global Cross-Validation)ꔷ 此方法的使用，是将全部分析依据制定的次数复制（重迭），并划分部分片段为样本。将此片段样本视为测试样本，与重复的学习样本进行交叉确认ꔷ 若选择 FACT-Style Direct Stopping 时，这种方法不如 V-foldCross-Validation 有用。ꔷ 若选择自动选择树状结构的方法时，此方法是相当有用的Minimal Cost-ComplexityCross-Validation Pruning在分类树模块中，当停止规则定为Prune on Misclassification Error时，MinimalCost-Complexity Cross-Validation 可以得到不错的结果；而另一方面，若停止规则定为Prune on Deviance时，Minimal Cost-Complexity Cross-Validation 则较前者更好四、操作范例决策树算法是一种分类算法，很适合预测。此算法同时支持离散和连续属性的预测。进入项目中的新建挖掘结构，使用数据挖掘向导来建立，进入数据挖掘向导首页后单击“下一步”按钮。此例从现有关系数据库或数据仓库读取数据，即为默认值，故直接在这个页面单击“下一步”按钮。到挖掘技术部分，选择“Microsoft 决策树”后，单击“下一步”按钮。选择所要用数据的数据库位置后，单击“下一步”按钮。选择要使用的数据表，单击“下一步”按钮。选择所需输入变量与预测变量，以及索引键；此例以序列号码为索引，身份为预测变量，并单击“建议”按钮以了解预测变量与其他变量间的相关性，可找出较具影响力的输入变量，完成后单击“确定”按钮，这时会回到原来的页面，单击“下一步”按钮。单击“建议”按钮，此时程序会提出一些变量的相关系数，用户可自行选择输入与否。声明正确的数据属性，此例修正了一个变量的数据属性，完成后单击“下一步”按钮。在此可选择测试数据的百分比，本事例中无测试数据，百分比选择“0”。更改挖掘结构名称，单击“完成”按钮。选择上方的挖掘模型查看器后，程序询问是否生成和部署项目，单击“是”按钮。接下来单击“运行”按钮。运行完成后单击“关闭”按钮。建模完成，生成数据挖掘结构接口包含挖掘结构、挖掘模型、挖掘模型查看器、挖掘准确度图表以及挖掘模型预测；其中在挖掘结构中，主要是呈现数据间的关联性以及分析的变量。而在挖掘模型中，主要是列出所建立的挖掘模型，也可以新建挖掘模型，并调整变量，变量使用状况包含Ignore（忽略）、Input（输入变量）、Predict（预测变量、输入变量）以及PredictOnly（预测变量）。而在挖掘模型上右击，选择“设置算法参数”针对方法论的参数设置加以编辑。其中包含：ꔷ COMPLEXITY＿PENALTY：抑制决策树的生长。该值越小，拆分的可能性越大；该值越大，拆分的可能性越小。默认值由给定模型的属性个数决定：如果有1到9个属性，则默认值为0.5；如果有10到99个属性，则默认值为0.9；如果有100个或更多属性，则默认值为0.99。ꔷ FORCE＿REGRESSOR：强制算法将指示的列用作回归公式中的回归量，而不考虑算法为这些列计算出的重要性。此参数仅用于回归树。ꔷ MAXIMUM＿INPUT＿ATTRIBUTES：指定算法在调用功能选择之前可以处理的最大输入属性数。如果将此值设置为0，则为输入属性禁用功能选择。ꔷ MAXIMUM＿OUTPUT＿ATTRIBUTES：指定算法在调用功能选择之前可以处理的最大输出属性数。如果将此值设置为0，则为输出属性禁用功能选择。ꔷ MINIMUM＿SUPPORT：指定一个叶节点必须包含的最小事例数。如果将该值设置为小于1的数，则指定的是最小事例数在总事例数中所占的百分比。如果将该值指定为大于1的整数，则指定的是最小事例的绝对数。ꔷ SCORE＿METHOD：指定用来计算拆分分数的方法。可用的方法有：Entropy（1）、Bayesian with K2 Prior（3）或 Bayesian Dirichlet Equivalent with Uniform prior(4)。ꔷ SPLIT METHOD：指定用来拆分节点的方法。可用的方法有：Binary（1）、Complete（2）或Both（3）。挖掘模型查看器则是呈现此树状结构，对于数据的分布进一步加以了解。而可以从“依赖关系网络”了解因变量与自变量间的关联性强弱程度。