机器学习————决策树(一)

本文深入解析决策树算法,包括其生成、剪枝及规则提取过程。重点介绍了信息增益和增益比在划分选择中的应用,以及预剪枝和后剪枝在防止过拟合中的作用。

决策树是一种回归和分类的重要手段,在机器学习中具有重要的比重。本文结合了周志华老师的《机器学习》和李航老师的《统计学习方法》两书中的决策树部分进行了总结。

决策树的基本步骤包括:选择适当的算法根据训练样本构建生成决策树、根据验证集样本适当地修剪决策树(剪枝)和从决策树中提取出相关的规则知识。

基本流程

显然决策树的生成是一个递归过程,根据上述的生成决策树的基本算法,有三种情况会导致递归返回:(1)当前样本所包含的样本都属于同一类别,无需再进行划分。(2)当前的属性集为空,或者所有样本在所有属性上的取值都相同,无法划分。(3)当前节点包含的样本是空集,无法划分。

从以上的算法流程同样可以看出,其中的关键在于第8行,也就是如何选择出来划分的最优属性,以达到分支节点所包含的样本尽可能的属于同一类别,即纯度最高的要求。引出问题——划分选择。

划分选择

如何选择出最优的属性作为“根节点”再进行子树的生成,这里主要介绍信息增益和信息增益率(信息增益比)。

信息增益

信息增益用到了熵的概念。假设样本集合为D,k为样本类别,那么信息熵的定义为:

对于熵的理解这里就不赘述。

信息增益定义为:

对于这个定义可以这样理解:对于待划分的样本集合D,划分之前的entropy是一定的,划分的要求是使划分后的纯度升高,entropy(后)越小那么纯度就会越高,故entropy(前)-entropy(后)越大越好,因此选择的特征应该是信息增益结果最大的特征作为划分的最优特征。ID3算法就是采用信息增益作为划分的标准。

然而,以这样的方式选择最优特征的缺点就是:偏向于特征取值较多的特征,因为特征的取值越多,划分之后就更容易获得纯度更高的子集,由此引出了信息增益率(信息增益比)。

增益比

如果a的可能取值越多的话,V的值就越大,导致IV就越大,因此会限制了Gain_ratio的值。不过信息增益率会偏向于特征取值较少的特征,因此算法C4.5并没有直接使用增益率最大的特征,而是使用了启发式的方法,先从候选的特征中选出高于水平的特征,再从中选择出增益率最高的。

剪枝

剪枝操作是决策树应对过拟合的一种方法,在决策树生成的递归过程中,决策树会不断地产生分支,向着使分类纯度更高的方向生成,这样就有可能使这棵决策树对于训练数据集拟合的”太好了“,泛化能力过低。常见的剪枝方式有两种,预剪枝和后剪枝。

  • 预剪枝

  • 预剪枝操作根据信息增益准则,在划分之前对于选择出的最优划分属性进行泛化能力评估,故而称作预剪枝。通常这种评估标准是通过划分前后的验证集的准确率为标准的,如果划分之后的验证集准确率有所提高,则根据该属性进行划分;如没有提高或者有所降低,则不进行划分。
  • 预剪枝操作使很多分支没有展开,这使得决策树降低了过拟合的风险,同时也使得决策树的训练时间开销和测试时间开销显著降低,优点明显;然后这种剪枝方式也有不足,它根据当前划分属性的评估结果决定剪枝与否,然而在一些情况下,虽然在当前划分属性下决策树的表现差强人意,但是可能会在此基础上再进行属性划分之后的效果会有显著提升,这种贪心禁止划分分支的方式,可能也存在“欠拟合”的风险。
  • 后剪枝

  • 后剪枝的操作顾名思义,先生成一棵完整的决策树,然后从下至上地递归判断划分属性是否应该被划分,评估方式与预剪枝类似。对比预剪枝方式能够保留更多的分支,所以大大降低了欠拟合的风险,效果更优。然而,在一棵完整的决策树中自下而上地遍历进行判断选择会产生很大的开销,这也是后剪枝操作的不足之处。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

### 决策树的介绍 决策树(Decision Tree)是种有监督、非参数、简单、高效的机器学习算法,也是种基本的分类与回归方法 [^1][^2][^3]。它以其直观易懂和易于实现的特点,成为许多初学者的首选,在数据挖掘和数据分析中是常用工具 [^1][^2]。决策树就像个树结构,存在根节点及其子节点,子节点表示数据集的特征,可使用叶节点或终端节点进行预测,适用于分类数据集和连续数据集,在对对象进行分类或标记时非常有用 [^4]。 ### 决策树的原理 决策树通过树状结构对数据进行建模,以解决分类和回归问题 [^2]。它充分利用响应变量的信息,能够很好地克服噪声问题,其决策边界为矩形,对于真实决策也为矩形的样本数据集有着很好的预测效果 [^3]。决策树算法的构建通常采用递归贪婪算法,逐步选择最优的特征进行节点划分,以达到对数据的最佳分类或回归效果 [^4]。 ### 决策树的应用 决策树在分类和回归问题中表现出色,能提供易于解释的模型,帮助理解数据中的模式 [^1]。在实际应用中,决策树广泛用于医疗诊断、金融风险评估、市场营销等领域,通过对数据的分析和分类,为决策提供支持 [^1][^2][^3]。 ### 决策树的实现 在Python中可以使用`scikit-learn`库来实现决策树算法,以下是个简单的示例代码: ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score # 加载鸢尾花数据集 iris = load_iris() X = iris.data y = iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 创建决策树分类器 clf = DecisionTreeClassifier() # 训练模型 clf.fit(X_train, y_train) # 进行预测 y_pred = clf.predict(X_test) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print(f"模型准确率: {accuracy}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值