决策树
目录
前景:小合并大
合并小区为一个大区时,情景不同。使用的方法不同
blending
意为当所有区已知情况下learing
意为边学习,边分类
概述
特点
- 起源早:起源于机器学习前。
- 模仿人对事物决策的过程,并完全描述
- 计算效率高
缺点
- 轻量级,演算法相对较小
- 巧妙算法多,但给初学者选择带来不便(参数多)
- 没有代表性的
决策树算法
什么是决策树
让电脑模仿人对事物决策的过程。决策的结构为树形结构,即从根为起点经过一系列判断最终走到叶子节点(终点),这段路径称为决策路径
表达方式
根据路径方式
G(x)=∑t=1Tqt(x)⋅gt(x)
其中 gt 为叶子节点,也就是所有的
决定结果
。他们可以组成一个大区,形式可以为常量或者 liner 的。
qt 为条件:即从 head 到叶子节点的决策工程(ps:
true
false
)
递归方式定义
G(x)=∑c=1c[[b(x)=c]]⋅Gc(x)
- b(x) 为不同决策分支
- Gc(x) 在 c 分支下做递归
算法
总体思路
- 设计如何做分支 b(x)
- 根据1设计出分块方法
- 设计停止条件或回传的叶子节点
- 然后各自递归学一颗小树
- 最后由程序递归的得到结果
与分而治之思想一致
代表算法
Classification and Regression Tree (C&RT)
特性
C = 2
决策为一个二叉树回传参数
gt(x) 为一个常数
0/1 Error
:只返回一个最符合的- 最后决策结束选一个出现频次最多的即可
- 分治方式
decision stump
:通过一个特征寻找在哪个分段点分段最佳,寻找后在那里分段 - 在子树中希望找到
purifying
的数据组,通过加权纯度函数来决定最后结果 - 需要一个
impurityFunciton
来判断左右子树是否纯净 - 最后将不纯度最小化
- 树为
fully-grown tree
纯度损失函数
regressionError
impurity(D)=1N∑n=1N(yn−ŷ )2
ŷ =Avg(yn)
- yn 在第 n 个位置的 y 元素
classificationError(Gini)
impurity(D)=1N∑n=1N[[yn≠ŷ ]]
ŷ 为 yn 的最多情况
使用
GiniIndex
1−∑k=1K(∑Nn=1[[yn=k]]N)2这种Loss 的好处是不会一刀将看似不属于最纯分类的结果直接去掉,而是同样让他们在其中影响最后的结果
停止时机
- impurity = 0:所有情况纯度一致
- 所有
xn
一致,没有执行
decision stumps
的地方
fully-grown tree 缺陷
- 如果输入类别全部不同 则一定能得到 Ein(G)=0 ,这样最后无法控制复杂度
- 容易 overfitting:越到叶子节点附近,资料量越少。此时会传回一个相对较小的纯度 Error 值导致 overfitting
- 于是需要对上文的树做 Regularzation,使其变为
pruned decision tree
Regular 方法
表达式
argminAPGEin(G)+λΩ(G)
- λ 在其中作为参数
可行的寻找 possible G的方法
- 首先得到
fully tree
- 将每个叶子尝试和隔壁的叶子合并掉,合并后看看哪一个叶子得到的
Error
最小 - 再尝试合并两个,三个叶子。。。
- 最后进入上式的
APG
就只看这个筛选中固定的序列
ID3 决策树
类的切割函数
- 与
C&RT
的切割函数相似,但切割方法需要另外指定穷举
b(x)=[[xi≤θ]]+1 - 注意这里前面的表述符是逻辑条件,满足即为1 不满足为0
其他补充
- 如果使用类 C&RT 算法时数据忘记切割。那么可以找替代品代替原切割方式