参考B站简博士
一、信息增益
1、信息增益概念
熵表示随机变量不确定性,
或:
随机变量的取值等概率分布的时候,相应的熵最大。
条件熵:
当熵和条件熵中的概率有数据估计得到时,则为经验熵和经验条件熵。
信息增益:得知特征X而使类Y的信息的不确定性减少的程度。
2、信息增益:算法
输入: 训练集数据集D和特征A
输出:特征A对D的信息增益g(D,A)
计算经验熵H(D):
计算经验条件熵H(D|A):
计算信息增益:
3、例题解说:
思路其实就是计算出每种特征的信息增益:
信息增益的意思是得知特征X使类Y的不确定性的减少程度,因此这个减少程度当然是越大越好,即信息增益越大越好,因此有自己的房子这个特征是这里的最优特征,我们放在根节点处。
二、信息增益比
由于信贷情况的特征取值比有工作的特征取值多,可能导致其信息增益大于有工作的信息增益。
因此引入了信息增益比 :
信息增益比的分母其实就是每个特征的经验熵。
三、ID3算法
输入:训练数据集D、特征集A、阈值e
输出:决策树T
1、判断T是否需要选择特征生成决策树
-若D中所有实例属于同一类,则T为单节点树,返回T;
-若D中所有实例无任何特征(A=空集),记录D中实例个数最多类别Ck;
2、否则,计算A中各特征的信息增益,并且选择信息增益最大的特征Ag:
- 若Ag的信息增益小于阈值e,则T为单节点树,记录D中实例个数最多类别Ck,以此作为该节点的类标记,并返回T;
- 否则,按照Ag的每个可能值ai(Ag这个特征的不同取值),将D分为若干非空子集
Di,将Di中实例个数最多的类别作为标记,构建子节点,以节点和其子节点构成T,并
返回T;
3、第i个子节点,以Di为训练集,A-Ag为特征集合,递归的调用以上步骤,得到子树Ti并返回。
四、C4.5算法
就是将ID3算法中的信息增益换成了信息增益比
五、决策树剪枝
优秀的决策树:在具有好拟合和泛化能力的同时,
深度小,叶节点少,深度小并且叶节点少
5.1 预剪枝
预剪枝:生成过程中,读每个节点划分前进行估计,若当前节点的划分不能提升泛化能力,则停止划分,记当前节点为叶节点;
1、限定决策树的深度
2、设定一个阈值
3、设置某个指标,比较节点划分前后的泛化能力
预剪枝这里的比较节点划分前后的泛化能力,其实就是如果不划分节点,然后测试集的准确率更高的话,那就不划分,反之划分。
5.2 后剪枝
5.2.1 降低错误剪枝
原理:自下而上,使用测试集来剪枝。对每个节点,计算剪枝前后的误判个数,若剪枝有利于减少误判(包括相等的情况),则减掉该节点所在分枝。
缺点:受测试集影响大,如果测试集比训练集小很多,会限制分类的精度
5.2.2 悲观错误剪枝(PEP)
原理:根据剪枝后的错误率来决定是否剪枝。和REP不同之处在于,PEP只需要训练集即可,不需要验证集,并且PEP是自上而下剪枝的。
缺点:不需要分离剪枝数据集,有利于实例较少的问题。误差使用了连续修正值,使得实用性更强。由于自上而下的剪枝策略,PEP效率更高。可能修剪掉不应剪掉的枝条。
步骤:
1、计算剪枝前目标子树每个叶子节点的误差,并进行连续修正:error(Leafi)就是误判个数
,N(T) 是当前子树的总样本数
2、计算剪枝前目标子树的修正误差:L是叶子节点个数
3、计算剪枝前目标子树误判个数的期望值:
4、计算剪枝前目标子树误判个数的标准差:
5、计算剪枝前误判上限(即悲观误差):
6、计算剪枝后该节点的修正误差:
7、计算剪枝后该节点误判个数的期望值:
8、比较剪枝前后的误判个数,如果满足以下不等式,则剪枝:否则,不剪枝
不剪枝的例子:
剪枝的例子:
5.2.3 最小误差剪枝(MEP)
原理:根据剪枝前后的最小分类错误概率来决定是否剪枝。自下而上剪枝,只需要训练集即可。
5.2.4 代价-复杂度剪枝(CCP)
原理:根据剪枝前后的损失函数来决定是否剪枝。
六、CART算法
6.1 分类树:
6.2 特征下的基尼指数:
6.3 分类树的生成
注意:由于cart是二叉树,当某个特征有多种具体特征时,比如三种:青年、中年、老年
那我们可以去计算,青年和(中年、老年)这两种特征的基尼指数,以及(青年、中年)和老年的基尼指数,还有中年、(青年、老年)的基尼指数,取出最小的,作为这个特征的基尼指数。
6.4 回归树的生成