今天学习了机器学习关于决策树的内容,有个简单的测试实例明天上午实现写上来,今晚先写实现原理和个人的想法。
决策树很像if else 的结构,不过分支不一定只有两个,可能会根据特性分成很多分支。叶子节点为最后的分类集合,其余节点为
待分类的数据集。
要点1:如何选择特性进行分类?
要点2:如果特性都在之前分类过但是叶子节点还需要继续分类?
1:首先介绍熵的概念,熵代表数据的混乱程度,如果全部数据基本上为某一类,则熵近乎为0,因为数据不够混乱,若每一类都分
布均匀则熵会很大,那我们分类就选择一种特性可以令熵小的,因为这种特性数据不混乱,特性的每一个子类都有符合的数据标签,
每个子类都可以代表大部分同类数据标签,这样的特性具有代表性,能引领数据标签更好的分类,所以选择熵小的(语言表述有点问
题,表达能力一般。。。)。
形象的理解:一堆混乱的数据,我们争取把他们区分开,如果按照混乱度高的特性进行分类,则分完之后数据集一样混乱,我们还需要更多的努力进行分类,这一次的分类没起到任何作用,只是增加了算法复杂度。如果我们按照混乱程度最低的特性分类之后,数据集划分的效果最好,同类数据主要聚集在同一类,方便了下一步的继续分类,降低了算法复杂度,所以选熵降低最大的,也就是信息增益最大的。
计算香农熵和信息增益就不在此赘述了。根据熵减去特性的概率乘熵值之和得到该特性的信息增益,我们选择信息增益大的特性作
为分类,再递归进行分类过程。
2:特性分完后进行投票,类似于KNN算法的投票机制,在数据集中标签数量最多的设为该数据集的类别,并且设为叶节点。