机器学习——决策树

2,276 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

介绍

决策树一听名字,欸,就是来帮助我们做决策的,同时一个树字也点名我们的结构模型。同时也属于我们监督学习当中的算法之一。举一个很简单的例子,我现在要对某人的贷款是否发放做一个评估,这个时候会有年龄,有无工作,有无房子,信用情况做一个评估,我们就可以通过已有的条件来构造我们的树。

image.png

image.png

决策树主要用的是ID3算法、C4.5、CART这三种算法,这里我们以ID3为例,一起来学习决策树吧

ID3算法

我们的大致步骤就是初始化我们的特征集合和数据,然后去计算我们的信息熵,条件熵,选择信息增益比大的来作为我们的当前决策的结点,我们在下面着重介绍我们的信息熵,条件熵以及信息增益

信息熵

熵是我们高中化学里面所接触的一个知识,熵越大,越不稳定,这里的信息熵同理,再来看看这烦人的公式

image.png

我们直接用我们刚刚的例子来说这个公式 image.png 我们去查找的其实就是我们的类别的值,我们将类别所表示的是or否进行一个统计,然后代入公式

image.png

信息熵=-(是的概率)log2(是的概率)-(否的概率)log2(否的概率)

信息熵=-(9/15)log2(9/15)-(6/15)log2(6/15)

这样就将我们的信息熵给求出来了,相对于晦涩的公式,直接的用法更为直接

条件熵

条件c其实就有点像我们高中所学的附加条件就是那种p(a|b)的形式,我们还是先来看看公式吧

image.png

不要想得那么复杂,其实还是很简单的,就是求我们,在另外的条件下,所导致我们的类别不同的概率

image.png

求的就是我们在其他条件下,由于我取值不同,对于类别的影响,这里我们以年龄为例,在我们的年龄之后一共有5名青年,然后有2名青年为是,3名青年为否,然后和我们的信息熵的公式差不多,一样的-(所占比例)log2(所占比例)的和,好的求和 over,其他以此内推

再一次将我们求出的熵他们所占的比列 条件熵=1/5(青年所占比例)*0.971+1/5(中年所占比例)*0.971+1/5(老年所占比例)*0.7219

信息增益

我们的信息增益就很简单啦,直接信息熵-条件熵 over

代码

我们在这里就直接给大家介绍CKlearn的模块

def train_tree(*data):
    x_train, x_test, y_train, y_test=data #测试集类别 训练集类别 测试集结果 训练集结果
    clf=DecisionTreeClassifier()#选择决策树
    clf.fit(x_train,y_train)#学习
    print("学习模型预测成绩:{:.4f}".format(clf.score(x_train, y_train)))
    print("实际模型预测成绩:{:.4f}".format(clf.score(x_test, y_test)))
    #返回学习模型
    return clf