决策树的理解
决策树(decision tree)是一种基本的分类与回归方法。
学过数据结构的朋友会知道树的结构图,我们使用树的结构将数据划分类别的树,叫做决策树。我们通过一张图来理解。
决策树的构造
一般流程
使用决策树做预测需要以下过程:
1.收集数据:可以使用任何方法。比如想构建一个相亲系统,我们可以从媒婆那里,或者通过参访相亲对象获取数据。
2.准备数据:收集完的数据,我们要进行整理,将这些所有收集的信息按照一定规则整理出来,并排版,方便我们进行后续处理。
3.分析数据:可以使用任何方法,决策树构造完成之后,我们可以检查决策树图形是否符合预期。
4.训练算法:这个过程也就是构造决策树,同样也可以说是决策树学习,就是构造一个决策树的数据结构。
5.测试算法:使用经验树计算错误率。当错误率达到了可接收范围,这个决策树就可以投放使用了。
6.使用算法:此步骤可以使用适用于任何监督学习算法,而使用决策树可以更好地理解数据的内在含义。
信息增益
划分数据的大原则:将无序的数据变得更有序
在划分数据集得前后信息发生得变化称之为信息增益。
我们有很多种方法,通过不同顺序的特征划分,不同的方法在划分前后数据的信息增益不同。
我们通过计算划分数据前后的信息增益,来选择划分的方法。
信息增益越大,划分的效果越好。
计算信息增益。集合信息的度量方式成为香农熵或者简称为熵(entropy),这个名字来源于信息论之父克劳德·香农。(看不懂没关系记住就好)
熵定义为信息的期望值。在信息论与概率统计中,熵是表示随机变量不确定性的度量。如果待分类的事务可能划分在多个分类之中,则符号xi的信息定义为
其中p(xi)是选择该分类的概率。 通过上式,我们可以得到所有类别的信息。为了计算熵,我们需要计算所有类别所有可能值包含的信息期望值(数学期望),通过下面的公式得到:
期中n是分类的数目。熵越大,随机变量的不确定性就越大。
代码
#计算给定数据的香农熵
def ShannonEntropy(dataset):
#计算数据集的长度
numData = len(dataset)
#创建字典,用于记录各个特征的数目
counts = {
}
#循环查找
for fect in dataset:
k = fect[-1]
if k not in counts.keys():
counts[k] = 0
counts[k] +=1
#香农熵
ShannonEnt = 0.0