2017-12-15 19:43:07
决策树算法是每次按一个特征进行分类直到分完。
每次选择分类的特征很重要,我们希望的情况是,前几次分类就能将总体分得七七八八,最后再进行一些细枝末节的分类。
首先先举个例子来直观的了解一下决策树算法。
小王是一家著名高尔夫俱乐部的经理。但是他被雇员数量问题搞得心情十分不好。某些天好像所有人都来玩高尔夫,以至于所有员工都忙的团团转还是应付不过来,而有些天不知道什么原因却一个人也不来,俱乐部为雇员数量浪费了不少资金。
小王的目的是通过下周天气预报寻找什么时候人们会打高尔夫,以适时调整雇员数量。因此首先他必须了解人们决定是否打球的原因。
在2周时间内我们得到以下记录:
天气状况有晴,云和雨;气温用华氏温度表示;相对湿度用百分比;还有有无风。当然还有顾客是不是在这些日子光顾俱乐部。最终他得到了14行5列的数据表格。
决策树模型就被建起来用于解决问题。
决策树是一个有向无环图。根结点代表所有数据。分类树算法可以通过变量outlook,找出最好地解释非独立变量play(打高尔夫的人)的方法。变量outlook的范畴被划分为以下三个组:
晴天,多云天和雨天。
我们得出第一个结论:如果天气是多云,人们总是选择玩高尔夫,而只有少数很着迷的甚至在雨天也会玩。
接下来我们把晴天组的分为两部分,我们发现顾客不喜欢湿度高于70%的天气。最终我们还发现,如果雨天还有风的话,就不会有人打了。
这就通过分类树给出了一个解决方案。小王(老板)在晴天,潮湿的天气或者刮风的雨天解雇了大部分员工,因为这种天气不会有人打高尔夫。而其他的天气会有很多人打高尔夫,因此可以雇用一些临时员工来工作。
具体该如何选择特征来进行分类呢,以下给出了两种主流的算法。
一、ID3算法
ID3算法是一种启发式的贪心算法,他的选择策略是每次计算所有备选的特征的信息增益,最后从中挑选出信息增益最大的那个特征最为这次的分类的特征。
- 首先计算原始标签的熵 Entropy(s)
- 遍历待选特征集,计算按其分类后的总熵,并计算信息增益
- 选择信息增益最大的特征作为这次的分类特征
二、C4.5算法
在ID3算法中我们每次找的是信息增益最大的特征,但是这里会有一个问题,就是如果将数据集分得太碎,那也失去了意义。比如第一次就使用身份证来作为区分特征,那么就会分得非常琐碎,这种情况下非常容易产生overfitting的问题。
为了解决这个问题,于是提出了C4.5算法,引入了惩罚量SplitInformation,优化了选择特征的标准。
具体来说,选择特征的标准从选择最大信息增益变成了选择最大信息比率。