目录
三、决策树
基于树的结构,通过对每个属性进行测试,来对样本进行分类。一颗决策树包含,根节点、中间节点、叶子节点。叶子节点对应了最终的分类,其他节点则对应一个属性的测试。根节点包含样本全集,根节点到叶子节点的路径对应一个判断序列。
决策树的一般生成流程(蓝色圈表示递归的退出):
1. 划分属性的选择问题
决策树最关键的就是,如何选择具有最优区分度的属性来对节点包含的样本进行划分。一般原则是:分支节点所包含的样本尽可能属于统一类别,即节点“纯度”(purity)高(一般通过信息增益或基尼指数衡量)。
假设有样本集合D,包含k类样本,第k类样本所占比例为,表示集合D的样本类别数。
样本集合D采用属性a进行划分:
a为离散型属性时,假设有V个可能的取值,则会产生V个分支。其中第v个节点包含D在属性a上所有取值为的样本组成的集合,记为。根据样本数量不同,考虑其权值,即样本多的节点影响大。
a为连续属性时,假设a在D上有n个不同的取值,将其从小到大排序为。对于一个划分点t,记为D在属性a上取值小于等于t的样本子集,为D在属性a上取值大于t的样本子集。对于相邻的属性取值,t在区间中任意取值产生的划分结果相同。所以对于连续属性a,考虑n-1个候选划分(“二分法”)。然后像离散属性值一样考察这些划分点。(对于连续性属性,在其后代节点可重复作为划分属性)
1.1 信息增益(information gain)
样本集合D的信息熵定义为,
其信息增益为:
对于连续型属性:
一般信息增益越大,说明获得的纯度提升越大。即选择属性进行划分。
增益率:
,其中称为a的“固有值”。属性a的可能取值越多(即V越大),则IV也会越大。
事实上信息增益对取值数目多的属性有偏好。增益率对取值数目少的属性有偏好。它通常不直接选择增益率最大候选划分属性。而是使用一个启发式:先从候选划分属性属性中选择信息增益高于平均水平的属性,再选择增益率最高的。
1.2 基尼指数
样本集合D的基尼值定义为,
表示从数据集D中随机抽取两个样本,他们类别不一样的概率。故基尼值越小,纯度越高。
其基尼指数为:
一般选择基尼指数最小的属性作为最优划分属性,。
2. 剪枝
剪枝是为了解决过拟合。决策数学习中,为了尽可能将样本正确划分,节点划分过程不断重复,会造成分支过多,以至于把训练集自身的特点作为所有数据的一般性质。
2.1 预剪枝
在决策树生成过程中,在对每个节点进行划分前进行预估计,若划分不能提升决策树泛化性能,则将当前节点置位叶子节点,标记类别为样本最多的类别。
由于预剪枝使得决策树的分支没有展开,这显著减少了训练和测试开销。但有些分支,虽然当前不能提示泛化性能,但在此基础上的后续划分却可能显著提高性能。这使预剪枝的决策树有欠拟合风险。
2.2 后剪枝
先完整生成一颗决策树,再自底向上,若该节点对应的子树被替换为叶子节点(标记类别为样本最多的类别)后,能提升决策树泛化性,则替换该节点。
后剪枝通常会保留更多分支,欠拟合风险很小,泛化性能更好。但由于其是在决策树生成后,并自底向上逐一考察,所以训练开销比未剪枝和预剪枝决策树都大得多。
(泛化性能的评估,可以使用“留出法”、“交叉验证”等)
3. 缺失值
有的样本中,有的属性值缺失。需要解决:(1)带有缺失值的属性如何选择?(2)已选择该属性进行划分,在该属性有缺失值的样本如何划分?
3.1 属性选择
令表示在属性a上没有缺失值的样本子集;表示在中在属性a上取值为的样本子集;表示在中属于第k类的样本子集,则,再设样本权重为,则有定义如下:
对于属性a,表示无缺失值样本所占比例,无缺失值样本中第k类样本所占比例,表示无缺失值样本取值为的样本所占比例。。
其集合D的信息增益推广为:
3.2 样本划分
对于在属性a上有取值的样本x,按其取值划入对应的子节点,样本权值在子节点中保持为。
对于在属性a上为缺失值的样本x,将其划入所有子节点,在属性值对应的子节点中的样本权值为,这就是让同一的样本按照不同的概率划入不同的节点中去。
4. 多变量决策树
如果把样本的属性看作空间坐标的坐标轴,那么d个属性描述的样本就对应了d维空间中的一个点。对样本的分类,就是在空间中寻找不同样本间的边界。决策树的分类边界的特定是:轴平行,即分类边界是有若干个与轴平行的分段组成。真实分类边界比较复杂时,需要使用很多段划分,需要大量的属性测试,预测的时间开销也大。
通过“多变量决策树”实现“斜的”划分边界:
在非叶子节点,不是对单个属性的测试,而是对属性的线性组合测试,即非叶子节点是一个形如的分类器,和可以在该节点所包含的样本集和属性集上学得。
四、 神经网络
“神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应”[Kohonen,1988.]
1943年,McCulloch and Pitts提出了“M-P神经元模型”。神经元接收到来自前n个其他神经元的输入,这些输入通过带权重的连接进行传递。神经元接收到的总输入值经过与阈值进行比较,然后通过“激活函数”处理后产生输出。其中权重和阈值,通过训练集习得。许多个这样的神经元按一定的层次结构连接,就得到了神经网络。
1. 感知机
由两层神经元组成,一层为输入层(仅接收输入,不进行函数处理),一层为输出层。模型为
通常f为符号函数,即
将看做固定输入为“-1”的“哑节点”,对应权重为,则学习策略为:
(对应分类错误的样本集合M,其中任意误分类样本(x,y),有,当时,模型输出为1;当时,模型输出为0。故恒成立。)
损失函数梯度为:
采用随机梯度下降策略,更新公式为(为学习率):
(已证明[[Minsky and Papert,1969],若两类模式是线性可分的,则感知机模型一定会收敛,学得适当的权值向量w。对于非线性问题,需要考虑多层功能神经元。每层神经元与下一层神经元全互连,神经元同层或跨层不连接——“多层前馈神经网络”(multi-layer feedforward neural networks))
2. 误差逆传播算法
Error BackPropagation,求解多层神经网络中的权值向量的算法。
给定训练集,即输入样本由d个属性描述,输出l维实向量。假设隐层和输出层都使用Sigmoid函数作为激活函数。对应训练样本,神经网络输出为。则
,
均方误差为:
BP算法才有梯度下降策略,
对于,先影响到输出第j个神经元的输入,再影响到其输出,最后影响到。(链式求导法则。)所以有:
令,则
同理,对于,有
“标准BP算法”,每次仅针对一个训练样例更新权值和阈值,参数更新频繁,对不同样例的更新结果可能出现“抵消”的现象。
“累计BP算法”,目标是最小化训练集D上的累计误差。在读取整个训练接后,再更新一次参数。其更新频率就低得多。但在很多任务中,当累计误差下降到一定程度后,进一步下降会非常缓慢。这是再使用标准BP往往会获得较好的解,尤其是在D非常大时。
([Hornik et al.,1989]证明,只需一个包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数。然而,如何设置隐层神经元的个数仍是个未决问题,实际应用中通常靠“试错法”(trial-by-error)调整。)
3. 解决过拟合
由于强大的表示能力,BP神经网络常常遭遇过拟合。常有两种策略来缓解。
第一,“早停”。若训练集误差降低,但验证集误差升高时,停止训练。并返回具有最小验证误差的权值和阈值。
第二,“正则化”。在误差函数中,增加一个用于描述网络复杂度的部分。例如
4. 全局最小与局部最小
在参数空间中,对应梯度为0的点,其误差函数值小于领域点的函数值,就是局部极小点。可能存在多个局部极小点,但只有一个全局最小点。
当使用梯度下降求解时,在局部极小点,梯度为0,参数停止更新。若存在多个局部极小时,就无法求得全局最小。可以通过一下策略“跳出”局部极小。
- 以多组不同的参数初始化多个神经网络。按照标准方法训练后,取误差最小的解作为最终参数。这相当于从多个不同的初始点开始搜索,从而可能陷入不同的局部极小。从中选择,就更有可能得到更接近全局最小的结果。
- “模拟退火”,在每一步中都以一定的概率接受比当前解更差的结果,从而有助于跳出局部极小。在每步迭代中,接受次优解的概率要逐步降低,以保证算法的平稳。
- 使用随机梯度下降,随机梯度下降在陷入局部极小时,其梯度仍可能不为0,就有机会跳出局部极小继续搜索。
5. 常见神经网络
RBF(Radial Basis Function,径向基函数)网络[Broomhead and Lowe,1988]是一种单隐层前馈神经网络,它使用径向基函数作为隐层神经元激活函数,而输出层则是对隐层神经元输出的线性组合。
ART(Adaptive Resonance Theory,自适应谐振理论)网络[Carpenter andGrossberg,1987]是一种竞争型学习(网络的输出神经元相互竞争,每一时刻只有一个竞争获胜的神经元被激活,其他的都抑制)。该网络由比较层、识别层、识别阈值和重置模块构成。比较层负责接收输入样本,并将其传递给识别层神经元。识别层每个神经元对应一个模式类,神经元数目可在训练过程中动态增长以增加新的模式类。
SOM(Self-Organizing Map,自组织映射)网络(Kohonen,1982]是一种竞争学习型的无监督神经网络,它能将高维输入数据映射到低维空间(通常为二维),同时保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层中的邻近神经元。
级联相关网络,网络结构不是事先固定的,网络结构作为学习的目标之一。级联,逐渐加入新的神经元,建立层次连接的级联机构。相关,最大化新神经元的输出与网络误差之间的相关性。
“递归神经网络”(recurrent neural networks)允许网络中出现环形结构,让一些神经元的输出反馈回来作为输入信号。网络在t时刻的输出状态不仅与t时刻的输入有关,还与t-1时刻的网络状态有关。从而能处理与序列有关的动态变化(如音频、自然语言)。
(神经网络是一种难解释的“黑箱模型”,但已有一些工作尝试改善神经网络的可解释性,主要途径是从神经网络中抽取易于理解的符号规则。)
continue