常见的分类技术
基本分类器
- decision tree
- rule-based methods
- nearest-neighbor
- neural networks
- deep learning
- naive bayes and bayesian bilief networks
- svm
决策树
1、根据训练数据集,画出决策树
2、将该树用于预测test data
- 要注意的是,找出最优二分类决策树是个NP问题
决策树的推导
有很多种算法可以用:
- hunt‘s 算法
1、如果Dt包含属于yt相同类别的记录,则t是标记为yt的叶子节点
2、如果Dt包含属于多个类的记录,请使用属性测试将数据拆分为较小的子集。将过程递归地应用于每个子集。
3、直到所有记录属于同一类或具有相同的属性值,停止拆分 - 遇到连续属性的时候,我们可以将其离散化以形成序数分类属性,可以将其两分为下图,
-
用贪婪算法得到最好的分割方法 greedy approach
在该方法中,具有较纯类别分布的节点是 首选。
如下图,右边的这种高纯度的方法是首选
因此我们需要对节点的不纯度进行评估。我们希望叶子结点可以尽可能的pure。
node impurity 节点不纯度的测量
-
基尼系数 GINI INDEX
p(j|t) 是 对于t这个节点,分量j占的比例。j的个数就是class 的个数。 -
熵 entropy
熵是对不确定性的测量,熵越高,能传输的信息越多。
熵越高 越不纯,我们希望熵为0 -
分类错误
找到最好的切割方法
1、分割前计算不纯度P
2、分割后计算不纯度M
3、选择产生最大收益Gain=P-M的分割方法,或者直接选择M最小的分割法:
1、基于基尼的分割
二分类问题的基尼系数是gini=2p(1-p)
-当一个node p 被分为k部分,那么
- 连续型的属性分割,先把数据有序排列,然后从左到右每个都是一遍,找gini最小的那一个
2、基于熵的分割
log以2为底。
当所有分类都一样是1/k的时候,熵值最大,是log(nc);
所有值都属于同一类的时候,熵最小,是0
-
information gain
选择效果最大的分割(最大化增益)
但是 ,以上的方法为了达到更高的纯度,倾向于大量分区,如下图:
所以我们要引入增益比:
增益比 gain ratio
3、基于节点t处的分类错误的分割
最大值是(1-1/k),最小值为0
以上三种分割方法的比较如下图:
决策树的优缺点
- 优点:
便宜、速度快、小型决策树很容易解释、对噪声robust、可以轻松处理多余与不想管属性 - 缺点:
占用空间大、没有考虑各个属性之间的联系、每个决策边界只能涉及到一个属性