监督学习算法——决策树

决策树的构造

包括三个过程:特征选择、决策树生成和决策树剪枝

特征选择问题

特征选择问题:构建决策树的过程中, 这个根节点怎么选择,也就是这个特征要怎么选择

解决方法

纯度

纯度换一种方式来解释就是让目标变量的分歧最小。

信息熵

信息熵表示了信息的不确定度,理解起来就是衡量一组样本的混乱程度,样本越混乱,越不容易做出决定。

公式: H = − ∑ i = 1 k p i log ⁡ ( p i ) H=-\sum_{i=1}^{k} p_{i} \log \left(p_{i}\right) H=i=1kpilog(pi)
信息熵能帮我们反映出来这个信息的不确定度。当不确定性越大时,它所包含的信息量也就越大,信息熵也就越高

信息增益

信息增益就是其中的一种方式,在得知特征X的信息后,而使得类Y的信息的不确定性减少的程度。

决策树生成过程中的问题

决策树生成过程中的问题:我们构建的时候并不是选择所有的特征进行划分,因为那样的话,每 个叶子节点只对应了一个实例, 这样的结果就是对训练集拟合的非常好,但是泛化能力比较差,容易造成过拟合。所以过拟合问题怎么解决?我们应该分到什么程度的时候就停止,不继续分下去了?

信息增益(ID3算法)

信息增益比(C4.5算法)

基尼指数(CART算法)

基尼系数: G = 1 − ∑ i = 1 k p i 2 G=1-\sum_{i=1}^{k} p_{i}^{2} G=1i=1kpi2
二分类时: G = − 2 x 2 + 2 x G=-2 x^{2}+2 x G=2x2+2x
基尼系数越高,不确定性越高

CART(二叉树)

from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
# 准备数据集
iris=load_iris()
# 获取特征集和分类标识
features = iris.data
labels = iris.target
# 随机抽取33%的数据作为测试集,其余为训练集
train_features, test_features, train_labels, test_labels = train_test_split(features, labels, test_size=0.33, random_state=0)
# 创建CART分类树
clf = DecisionTreeClassifier(criterion='gini')
# 拟合构造CART分类树
clf = clf.fit(train_features, train_labels)
# 用CART分类树做预测
test_predict = clf.predict(test_features)
# 预测结果与测试集结果作比对
score = accuracy_score(test_labels, test_predict)
print("CART分类树准确率 %.4lf" % score)

决策树的剪枝问题

决策树的剪枝问题:假如我们真的生成了一棵决策树了,因为我们是根据训练集进行生成的,事先也不知道它的泛化能力怎么样,万一,我们拿过真的实例来测试,还是过拟合怎么办呢?

sklearn 调用决策树

# 导入数据集
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
X, y = datasets.make_moons(noise=0.25, random_state=666)

# 导入决策树
from sklearn.tree import DecisionTreeClassifier
dt_clf = DecisionTreeClassifier()
dt_clf.fit(X, y)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值