预测性学习(predictive learning)是数据挖掘的一个重要领域。从本书中可见,非常广泛的方法都是为从数据中预测性学习而设计的。对于每个特定的方法,都有它特别适用的场景,也有与其他可能的方法相比表现不好的场景。本书在分别介绍每个方法的时候,都试图总结出其所适用的场景。然而对于给定的问题,事前几乎无法确定哪个是最适用的方法,甚至无法确定哪个方法是好用的。表 10.1 概括了一些学习方法的一些特征。
模型特征 | NN | SVM | Trees | MARS | k-NN |
---|---|---|---|---|---|
可处理混合类型的数据 | ❌ | ❌ | ✔️ | ✔️ | ❌ |
可处理缺失值 | ❌ | ❌ | ✔️ | ✔️ | ✔️ |
对输入变量的异常值稳健 | ❌ | ❌ | ✔️ | ❌ | ✔️ |
对输入变量的单调转换不敏感 | ❌ | ❌ | ✔️ | ❌ | ❌ |
计算可扩展性(大样本 N) | ❌ | ❌ | ✔️ | ✔️ | ❌ |
可处理不相关输入变量 | ❌ | ❌ | ✔️ | ✔️ | ❌ |
可提取特征变量的线性组合 | ✔️ | ✔️ | ❌ | ❌ | ➖ |
可解释性 | ❌ | ❌ | ➖ | ✔️ | ❌ |
预测能力 | ✔️ | ✔️ | ❌ | ➖ | ✔️ |
表 10.1:几个学习方法的一些特征。符号图例:✔️ = 良好,➖ = 一般,❌ = 不佳。学习模型:“NN”为神经网络,“SVM”为支持向量机,“Trees”为树状模型,“MARS”为多元自适应回归样条,“k-NN”为 k 最近邻。
工业和商业的数据挖掘应用对学习方法的要求通常特别具有挑战性。数据样本通常在观测样本量和观测样本的输入变量个数上都非常大。因此对计算量的考虑十分重要。同时数据通常是十分杂乱的:输入变量很可能是量化、二元和分类变量的混合,而且分类变量也通常会有很多类别。一般会有很多的缺失值,完整的观测样本不多。量化自变量和输出变量的分布通常是长尾的并且高偏度(skewed)。垃圾邮件的数据(第 9.1.2 节)就是如此;在拟合广义加性模型时,为了能得到较好的拟合,每个自变量都经过了对数转换。另外,数据中也常常会有不可忽视比例的错误测量结果(异常值)。各个自变量也一般有非常不同的测量尺度。
在数据挖掘应用中,分析中出现的大量自变量中与预测实际相关的通常只有其中很小一部分。同时与比如模式识别等其他应用不同,也几乎没有可靠的专业领域知识可以用来构建相关性强的特征变量和(或)排除掉可能会极度影响模型的表现的不相关变量。
除此之外,数据挖掘应用一般会要求模型的可解释性。这要求模型不仅可以简单地给出预测,同时还要提供可理解多个输入变量与输出变量的预测值之间的关系的信息。因此,诸如神经网络这种在模式识别等纯粹的预测场景中非常有用的 黑盒 方法却在数据挖掘中不那么适用。
这些对计算速度、可解释性和数据的杂乱属性,很大程度地限制了大部分学习方法作为数据挖掘的现成方法的可用性。所谓“现成”(off-the-shelf)方法,要求其可以直接运用在数据上,而不需要过多耗时的数据预处理或仔细地调整学习过程中的参数。
在所有常见的学习方法中,决策树类型的模型最接近于满足数据挖掘现成方法的所有要求。它们的构建计算相对较快并且(如果树结构不大)可得出解释性强的模型。如在第 9.2 节所述,它们可自然地容纳数值和分类的自变量以及缺失值。它们在对单个自变量进行(严格单调)转换后仍会输出一致的结果。因而可对自变量进行缩放和(或)更一般性的转换,并且它们不会受到自变量异常值的影响。在它们的内部计算过程中整合了对特征变量的选择。因而它们即便不能完全地避免,也能大体上消除数据中包含的很多不相关自变量的影响,由于以上这些性质,决策树模型成为了数据挖掘中最普遍使用的学习方法。
树状模型距离预测学习的理想工具存在一个缺点,就是欠准确性。它们很少可以达到在当前数据上能够实现的最佳预测模型准确度水平。而如在第 10.1 节所见,提升方法通常会急剧地改进决策树模型的准确性。并且与此同时仍然保持了数据挖掘所需的大部分性质。在提升中所牺牲掉的树模型的性质有计算速度和可解释性,在自适应提升中也不再有对分类概率分布的重叠以及训练集上的错误标签的稳健性。梯度提升模型(gradient boosted model,GBM)是一个试图减轻这些问题的树状模型提升方法的推广,也因此提供了一个数据挖掘的准确并有效的现成方法。