决策树
决策树的优势:在构造过程中不需要任何领域的知识或参数设置。
决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。(画一个苹果树就能完全理解,树枝节点代表特征属性,果实代表决策结果)
构造决策树的关键步骤是分裂属性。分裂属性就是在某个节点处按照某一特征属性的不同划分构造不同的分支(也就是从这里分开的原因)
分裂属性分为三种不同的情况:
1、属性是离散值且不要求生成二叉决策树。此时用属性的每一个划分作为一个分支。
2、属性是离散值且要求生成二叉决策树。此时使用属性划分的一个子集进行测试,按照“属于此子集”和“不属于此子集”分成两个分支。
3、属性是连续值。此时确定一个值作为分裂点split_point,按照>split_point和<=split_point生成两个分支。
构造决策树的关键性内容是进行属性选择度量,属性选择度量是一种选择分裂准则,是将给定的类标记的训练集合的数据划分D“最好”地分成个体类,它决定了拓扑结构及分裂点split_point的选择。
属性选择度量算法有很多,一般使用自顶向下递归分治法,简单介绍ID3和C4.5两种常用算法概念(我暂时对这两种算法并不理解)。
ID3算法的核心思想就是以信息增益度量属性选择,选择分裂后信息增益最大的属性进行分裂。
C4.5算法使用增益率(gain ratio)的信息增益扩充,克服 ID3算法存在的偏向于多值属性问题。
在实际构造决策树时,通常要进行剪枝(他的作用是什么),这时为了处理由于数据中的噪声和离群点导致的过分拟合问题。剪枝有两种:
先剪枝——在构造过程中,当某个节点满足剪枝条件,则直接停止此分支的构造。(缺点提前停止,会使树枝很短小,决策树无法达到最优)
后剪枝——先构造完成完整的决策树,再通过某些条件遍历树进行剪枝。(缺点计算效率低,有些节点计算后就被裁剪了,导致有点浪费)
问题:1.决策树的内容知道,怎么写代码?
2.决策树用在什么地方?
(讨论课上要解决的问题)