DataWhale—16期组队学习—Task2:基于决策树的分类预测

1 决策树介绍

决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。Entropy = 系统的凌乱程度,使用算法ID3, C4.5和C5.0生成树算法使用熵。这一度量是基于信息学理论中熵的概念。

决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。使用层层推理来实现最终的分类。决策树由下面几种元素构成:根节点(包含样本的全集)、内部节点(对应特征属性测试)和叶节点(代表决策的结果)


预测时,在树的内部节点处用某一属性值进行判断,根据判断结果决定进入哪个分支节点,直到到达叶节点处,得到分类结果。这是一种基于 if-then-else 规则的有监督学习算法,决策树的这些规则通过训练得到,而不是人工制定的。决策树是最简单的机器学习算法,它易于实现,可解释性强,完全符合人类的直观思维,有着广泛的应用。

分类树(决策树)是一种十分常用的分类方法。他是一种监督学习,所谓监督学习就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类。这样的机器学习就被称之为监督学习。

决策树优点:
1)决策树易于理解和解释,可以可视化分析,容易提取出规则;
2)可以同时处理标称型和数值型数据;
3)比较适合处理有缺失属性的样本;
4)能够处理不相关的特征;
5)测试数据集时,运行速度比较快;
6)在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
决策树缺点:
1)容易发生过拟合(随机森林可以很大程度上减少过拟合);
2)容易忽略数据集中属性的相互关联;
3)对于那些各类别样本数量不一致的数据,在决策树中,进行属性划分时,不同的判定准则会带来不同的属性选择倾向;信息增益准则对可取数目较多的属性有所偏好(典型代表ID3算法),而增益率准则(CART)则对可取数目较少的属性有所偏好,但CART进行属性划分时候不再简单地直接利用增益率尽心划分,而是采用一种启发式规则)(只要是使用了信息增益,都有这个缺点,如RF)。
4)ID3算法计算信息增益时结果偏向数值比较多的特征。

2 决策树学习原理

决策树学习原理包括特征选择、决策树生成和决策树剪枝。

2.1 特征选择

特征选择决定了使用哪些特征来做判断。在训练数据集中,每个样本的属性可能有很多个,不同属性的作用有大有小。因而特征选择的作用就是筛选出跟分类结果相关性较高的特征,也就是分类能力较强的特征。在特征选择中通常使用的准则是:信息增益。

2.2 决策树生成

选择好特征后,就从根节点触发,对节点计算所有特征的信息增益,选择信息增益最大的特征作为节点特征,根据该特征的不同取值建立子节点;对每个子节点使用相同的方式生成新的子节点,直到信息增益很小或者没有特征可以选择为止。

2.3 决策树剪枝

剪枝的主要目的是对抗「过拟合」,通过主动去掉部分分支来降低过拟合的风险。

3 决策树算法

3.1 ID3 算法

ID3 算法计算的是信息增益,信息增益指的就是划分可以带来纯度的提高,信息熵的下降,它的计算公式,是父亲节点的信息熵减去所有子节点的信息熵,在计算的过程中,我们会计算每个子节点的归一化信息熵,即按照每个子节点在父节点中出现的概率来计算这些子节点的信息熵。所以信息增益的公式可以表示为:

3.2 C4.5 算法

C4.5 算法是ID3算法的改进,其采用信息增益率,即信息增益率 = 信息增益 / 属性熵。当属性有很多值的时候,相当于被划分成了许多份,虽然信息增益变大了,但是对于 C4.5 来说,属性熵也会变大,所以整体的信息增益率并不大。C4.5 算法采用悲观剪枝,ID3 构造决策树的时候,容易产生过拟合的情况,悲观剪枝是后剪枝技术中的一种,通过递归估算每个内部节点的分类错误率,比较剪枝前后这个节点的分类错误率来决定是否对其进行剪枝。这种剪枝方法不再需要一个单独的测试数据集,需要离散化处理连续属性和处理缺失值。首先 ID3 算法的优点是方法简单,缺点是对噪声敏感。训练数据如果有少量错误,可能会产生决策树分类错误。C4.5 在 ID3 的基础上,用信息增益率代替了信息增益,解决了噪声敏感的问题,并且可以对构造树进行剪枝、处理连续数值以及数值缺失等情况,但是由于 C4.5 需要对数据集进行多次扫描,算法效率相对较低。

3.3 CART(Classification and Regression Tree)

CART 的全称是分类与回归树。从这个名字中就应该知道,CART 既可以用于分类问题,也可以用于回归问题。
回归树中,使用平方误差最小化准则来选择特征并进行划分。每一个叶子节点给出的预测值,是划分到该叶子节点的所有样本目标值的均值,这样只是在给定划分的情况下最小化了平方误差。
要确定最优化分,还需要遍历所有属性,以及其所有的取值来分别尝试划分并计算在此种划分情况下的最小平方误差,选取最小的作为此次划分的依据。由于回归树生成使用平方误差最小化准则,所以又叫做最小二乘回归树。
分类树中,可以使用 Gini 指数最小化准则来选择特征并进行划分; Gini
指数表示集合的不确定性,或者是不纯度。基尼指数越大,集合不确定性越高,不纯度也越大。这一点和熵类似。另一种理解基尼指数的思路是,基尼指数是为了最小化误分类的概率。Gini
指数的计算不需要对数运算,更加高效;Gini 指数更偏向于连续属性,熵更偏向于离散属性。

4 决策树分类预测实践

import numpy as np
from sklearn import datasets
from sklearn import tree
from sklearn.metrics import confusion_matrix, accuracy_score
from sklearn.cross_validation import train_test_split

# Set random seed / 设定种子,保证结果复现性
np.random.seed(1)

# Load the data / 导入数据
# iris.data = [(Sepal Length, Sepal Width, Petal Length, Petal Width)]
iris_dataset = datasets.load_iris()
x = iris_dataset.data
y = iris_dataset.target

# Split data into train/test sets / 分割数据为训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)

# 创建决策树模型,并训练拟合
model_clf = tree.DecisionTreeClassifier()
model_clf.fit(x_train, y_train)

# 测试集分类预测与分类概率预测
pred = model_clf.predict(x_test)
prob = model_clf.predict_proba(x_test)

# 结果打印
print('################ Validation/模型验证 ################')
print('Confusion Matrix/混淆矩阵:\n', confusion_matrix(y_test, pred))
print('Accuracy/准确率:\n', round(accuracy_score(y_test, pred),3))

################ Validation/模型验证 ################
Confusion Matrix/混淆矩阵:
[[11 0 0]
[ 0 12 1]
[ 0 0 6]]
Accuracy/准确率:
0.967

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值