11 机器学习 | 步步为营,有章可循:决策树
决策树算法采用树形结构,使用层层推理来实现最终的分类。与贝叶斯分类器相比,决策树的优势在于构造过程无需使用任何先验条件,因而适用于探索式的知识发现。
决策树是一个包含根节点、内部节点和叶节点的树结构,其根节点包含样本全集,内部节点对应特征属性测试,叶节点则代表决策结果。从根节点到每个叶节点的每条路径都对应着一个从数据到决策的判定流程。使用决策树进行决策的过程就是从根节点开始,测试待分类项的特征属性,并按照其值选择输出的内部节点。当选择过程持续到到达某个叶节点时,就将该叶节点存放的类别作为决策结果。
决策树模型的学习过程包括三个步骤:特征选择、决策树生成和决策树剪枝。 特征选择决定了使用哪些特征来划分特征空间。 在特征选择中通常使用的准则是信息增益。机器学习中的信息增益就是通信理论中的互信息,是信息论的核心概念之一。
ID3 算法,决策树的生成就利用信息增益准则选择特征。ID3 算法构建决策树的具体方法是从根节点出发,对节点计算所有特征的信息增益,选择信息增益最大的特征作为节点特征,根据该特征的不同取值建立子节点;对每个子节点都递归调用以上算法生成新的子节点,直到信息增益都很小或没有特征可以选择为止。ID3 算法使用的是信息增益的绝对取值,而信息增益的运算特性决定了当属性的可取值数目较多时,其信息增益的绝对值将大于取值较少的属性。这样一来,如果在决策树的初始阶段就进行过于精细的分类,其泛化能力就会受到影响,无法对真实的实例做出有效预测。
C4.5 算法不是直接使用信息增益,而是引入“信息增益比”指标作为最优划分属性选择的依据。信息增益比等于使用属性的特征熵归一化后的信息增益,而每个属性的特征熵等于按属性取值计算出的信息熵。
无论是 ID3 算法还是 C4.5 算法,都是基于信息论中熵模型的指标实现特征选择,因而涉及大量的对数计算。另一种主要的决策树算法 CART 算法则用基尼系数取代了熵模型。
CART 算法的全称是分类与回归树(Classification and Regression Tree),既可以用于分类也可以用于回归。基尼系数在与熵模型高度近似的前提下,避免了对数运算的使用,使得 CART 分类树具有较高的执行效率。
为了进一步简化分类模型,CART 分类树算法每次只对某个特征的值进行二分而非多分,最终生成的就是二叉树模型。
决策树也难以克服过拟合的问题,“剪枝”是决策树对抗过拟合的主要手段。园丁给树苗剪枝是为了让树形完好,决策树剪枝则是通过主动去掉分支以降低过拟合的风险,提升模型的泛化性能。
决策树的剪枝策略可以分为预剪枝和后剪枝。预剪枝是指在决策树的生成过程中,在划分前就对每个节点进行估计,如果当前节点的划分不能带来泛化性能的提升,就直接将当前节点标记为叶节点。
后剪枝策略是先从训练集生成一棵完整的决策树,计算其在验证集上的分类精度,再在完整决策树的基础上剪枝,通过比较剪枝前和剪枝后的分类精度决定分支是否保留。和预剪枝相比,后剪枝策略通常可以保留更多的分支,其欠拟合的风险较小。但由于需要逐一考察所有内部节点,因而其训练开销较大。
12 机器学习 | 穷则变,变则通:支持向量机
支持向量机是一种二分类算法,通过在高维空间中构造超平面实现对样本的分类。最简单的情形是训练数据线性可分的情况,此时的支持向量机就被弱化为线性可分支持向量机,这可以视为广义支持向量机的一种特例。
最简单的情形是训练数据线性可分的情况,此时的支持向量机就被弱化为线性可分支持向量机,这可以视为广义支持向量机的一种特例。线性可分的数据集可以简化为二维平面上的点集。在平面直角坐标系中,如果有若干个点全部位于 x 轴上方,另外若干个点全部位于 x 轴下方,这两个点集就共同构成了一个线性可分的训练数据集,而 x 轴就是将它们区分开来的一维超平面,也就是直线。
在高维的特征空间上,划分超平面可以用简单的线性方程描述
式中的 n 维向量 w 为法向量,决定了超平面的方向;b 为截距,决定了超平面和高维空间中原点的距离。划分超平面将特征空间分为两个部分。位于法向量所指向一侧的数据被划分为正类,其分类标记 y=+1;位于另一侧的数据被划分为负类,其分类标记 y=−1。线性可分支持向量机就是在给定训练数据集的条件下,根据间隔最大化学习最优的划分超平面的过程。给定超平面后,特征空间中的样本点 xi 到超平面的距离可以表示为
线性可分支持向量机是使硬间隔最大化的算法。在实际问题中,训练数据集中通常会出现噪声或异常点,导致其线性不可分。要解决这个问题就需要将学习算法一般化,得到的就是线性支持向量机(去掉了“可分”条件)。
最优化问题中的目标函数就演变为
如果按照与原点之间的距离对数据点进行分类的话,分类的模型就不再是一条直线,而是一个圆,也就是超曲面。
不论是线性可分支持向量机还是线性支持向量机,都只能处理线性问题,对于非线性问题则无能为力。 将原始低维空间上的非线性问题转化为新的高维空间上的线性问题,这就是核技巧的基本思想。
原始空间与新空间之间的转化是通过非线性变换实现的。假设原始空间是低维欧几里得空间X,新空间为高维希尔伯特空间H,则从 X 到 H 的映射可以用函数 ϕ(x):X→H 表示。
核函数有两个特点。第一,其计算过程是在低维空间上完成的,因而避免了高维空间(可能是无穷维空间)中复杂的计算;第二,对于给定的核函数,高维空间 H 和映射函数 ϕ 的取法并不唯一。一方面,高维空间的取法可以不同;另一方面,即使在同一个空间上,映射函数也可以有所区别。
核函数的使用涉及一些复杂的数学问题,其结论是一般的核函数都是正定核函数。正定核函数的充要条件是由函数中任意数据的集合形成的核矩阵都是半正定的,这意味着任何一个核函数都隐式定义了一个成为“再生核希尔伯特空间”的特征空间,其中的数学推导在此不做赘述。在支持向量机的应用中,核函数的选择是一个核心问题。不好的核函数会将样本映射到不合适的特征空间,从而导致分类性能不佳。
常用的核函数包括以下几种:
核函数可以将线性支持向量机扩展为非线性支持向量机。
在算法实现的过程中,支持向量机会遇到在大量训练样本下,全局最优解难以求得的尴尬。目前,高效实现支持向量机的主要算法是 SMO 算法(Sequential Minimal Optimization,序列最小最优化)。支持向量机的学习问题可以形式化为凸二次规划问题的求解,SMO 算法的特点正是不断将原始的二次规划问题分解为只有两个变量的二次规划子问题,并求解子问题的解析解,直到所有变量满足条件为止。
支持向量机的一个重要性质是当训练完成后,最终模型只与支持向量有关,这也是“支持向量机”这个名称的来源。正如发明者瓦普尼克所言:支持向量机这个名字强调了这类算法的关键是如何根据支持向量构建出解,算法的复杂度也主要取决于支持向量的数目。
极客时间《人工智能基础课》学习笔记 Day5