决策树
决策树即是对数据进行多次判断,从而得出数据属于某个分支
优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特 征数据。
缺点:可能会产生过度匹配问题。
适用数据类型:数值型和标称型。
创建分支的伪代码
检测数据集中的每个子项是否属于同一分类:
If so return 类标签;
Else
寻找划分数据集的最好特征
划分数据集
创建分支节点
for 每个划分的子集
调用函数createBranch并增加返回结果到分支节点中
return 分支节点
划分数据集的大原则是:将无序的数据变得更加有序。
在划分数据集之前之后信息发生的变化称为信息增益,
在可以评测哪种数据划分方式是最好的数据划分之前,我们必须学习如何计算信息增益。集 合信息的度量方式称为香农熵或者简称为熵
熵定义为信息的期望值,在明晰这个概念之前,我们必须知道信息的定义。如果待分类的事 务可能划分在多个分类之中,则符号xi的信息定义为
其中p(xi)是选择该分类的概率。 为了计算熵,我们需要计算所有类别所有可能值包含的信息期望值,通过下面的公式得到:
求香农熵的 函数
得到熵之后,我们就可以按照获取最大信息增益的方法划分数据集,
分类算法除了需要测量信息熵,还需要划分数 据集,度量划分数据集的熵,以便判断当前是否正确地划分了数据集。我们将对每个特征划分数 据集的结果计算一次信息熵,然后判断按照哪个特征划分数据集是最好的划分方式。
划分数据集函数
选择最好的数据集划分
现在已经构建了一级判断,需要递归构造决策树
在绘制出决策树后,可以用matplotlab来绘制树状图,使得结果更为直观
示例:使用决策树预测隐形眼镜类型