第7章 转换:处理输入和输出
在前一章中我们考察了大量的机器学习方法:决策树、决策规则、线性模型、基于实例的方案、数值预测技术、聚类算法以及贝叶斯网络。所有这些方法都是合理、成熟的技术,可用于解决实际的数据挖掘问题。
但是成功的数据挖掘远不只是牵涉到选择某种学习算法并应用于数据。许多学习算法要用到各种不同的参数,需要选择合适的参数值。在多数情况下,选择适当的参数可以使所获结果得到显著改善,而合适的选择则是要视手头的具体数据而定的。例如,决策树可以选择修剪或不修剪,选择前者又需要选择修剪参数。在基于实例的k最近邻学习方法中,则需要选择k值。更为常见的,则是需要从现有的方案中选择学习方法本身。在所有情况下,合适的选择是由数据而决定的。
在数据上试用几种不同的方法,并使用几种不同的参数值,然后观测哪种情况结果最好,是个诱人的方法。不过要当心!最佳选择并不一定是在训练数据上获得最好结果的那个。我们曾反复提醒要注意过度拟合问题,过度拟合是指一个学习模型与用于建模的某个具体训练数据集太过匹配。假设在训练数据上所表现的正确性能代表模型将来应用于实践中的新数据上的性能水准,这个想法是不正确的。
所幸的是在第5章中已经讨论了对于这个问题的解决方法。有两种较好的方法可用来估计一个学习方法的预期真实性能表现:在数据源充足的情况下,使用一个与训练数据集分离的大数据集;在数据较少的情况下则使用交叉验证法(第5.3节)。在后一种情况下,在实践中的典型应用方法是单次的10折交叉验证,当然要得到更为可靠的估计需要将整个过程重复10次。一旦为学习方法选定了合适的参数,就可以使用整个训练集(即所有训练实例)来生成将要应用于新数据的最终学习模型。
注意在调整过程中使用所选的参数值得到的性能表现并不是对最终模型性能的一个可靠估计,因为最终模型对于调整中使用的数据有过度拟合的倾向。要确定它的性能究竟如何,需要另外一个大的数据集,这个数据集须与学习过程和调整过程中所使用的数据隔离开来。在进行交叉验证时也是如此,参数调整过程需要一个“内部”交叉验证,误差估计还需要一个“外部”交叉验证。采用10折交叉验证法将使学习方法运行100次。总而言之,当评估一个学习方案的性能时,所进行的任何参数调整过程都应被看作是训练过程的一部分。
当把机器学习技术应用于实际的数据挖掘问题时,还有其他一些重要程序可以大大提高成功率,这正是本章的主题。它们形成了一种(操纵)数据的技术,将输入数据设计成一种能适合所选学习方案的形式,将输出模型设计得更为有效。你可以把它们看成是能应用于实际的数据挖掘问题以提高成功几率的一些诀窍。有时奏效,有时无效。根据目前的技术发展水平来看,很难预言它们是否有用。在这种以尝试和误差率作为最为可靠的指导的领域中,特别重要的恐怕就是灵活运用并且理解这些诀窍了。
……
展开