
最近在思考如何训练决策树模型的背景是用来做企业it系统故障根因。
目前想到的方案有决策树模型训练和ai大模型训练,问了下deepseek给的答案如下:

根据ds给出的答案稍微总结了下:如果针对历史故障总结出故障特征以及结果数据集,在数据样本不是特别大的情况下,应该还是选择决策树模型训练的方式更合适。
如果遇到决策树模型没有训练到的复杂场景,可以结合大模型来辅助做诊断,综合得出故障根因。
那么今天这篇文章就来介绍下决策树模型的相关理论知识。
一、决策树概念
决策树(Decision Tree)是一种基本的分类与回归方法,是最经常使用的数据挖掘算法之一。
分类目标属性是离散的,回归目标属性是连续的。
通过以上对分类问题一般方法的描述,可以看出分类问题一般包括两个步骤:
a、模型构建(归纳)
通过对训练集合的归纳,建立分类模型。
b、预测应用(推论)
根据建立的分类模型,对测试集合进行测试。
决策树是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。
本质上决策树是通过一系列规则对数据进行分类的过程。
决策树的优点:
a、推理过程容易理解,决策推理过程可以表示成If Then形式;
b、推理过程完全依赖于属性变量的取值特点;
c、可自动忽略目标变量没有贡献的属性变量,也为判断属性变量的重要性,减少变量的数目提供参考。
决策树技术发现数据模式和规则的核心是归纳算法。归纳是从特殊到一般的过程。归纳学习由于依赖于检验数据,因此又称为检验学习。
决策树学习通常包括 3 个步骤:特征选择、决策树的生成和决策树的修剪。
二、决策树组成部份
决策树的基本组成部分:决策结点、分支和叶子。
决策树中最上面的结点称为根结点,是整个决策树的开始。每个分支是一个新的决策结点,或者是树的叶子。每个决策结点代表一个问题或者决策,通常对应待分类对象的属性。每个叶结点代表一种可能的分类结果。
在沿着决策树从上到下的遍历过程中,在每个结点都有一个测试。对每个结点上问题的不同测试输出导致不同的分枝,最后会达到一个叶子结点。这一过程就是利用决策树进行分类的过程,利用若干个变量来判断属性的类别。

三、决策树算法中用到的熵、信息增益及基尼系数
1、熵(entropy):信息量大小的度量,即表示随机变量不确定性的度量。也就是说:信息越有序,信息熵越低。
信息熵的计算方式:

p(xi):事件xixi发生的概率。
熵值越大,系统越混乱、越难预测。
2、条件熵:
设有随机变量(X,Y),其联合概率分布

条件熵H(Y|X):表示在已知随机变量X的条件下随机变量Y的不确定性,定义为X给定条件下Y的条件概率分布的熵对X的数学期望:

当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵(empirical entropy)和经验条件熵(empirical conditional entropy )
3、信息增益的算法:

输入:训练数据集D和特征A;
输出:特征A对训练数据集D的信息增益g(D,A)
a、计算数据集D的经验熵H(D)

b、计算特征A对数据集D的经验条件熵H(D|A)

c、计算信息增益

4、信息增益比计算
以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题,使用信息增益比可以对这一问题进行校正。
特征A对训练数据集D的信息增益比定义为:
信息增益与训练数据集D关于特征A的值的熵之比


5、基尼系数
基尼系数是 CART 树用于分类任务时,衡量数据集或节点“不纯度”或“混乱程度”的核心指标。(CART回归:主要使用平方误差最小化(MSE))
基尼系数衡量的是:从一个数据子集中随机抽取两个样本,其类别标签不一致的概率。基尼系数越大,说明该子集包含的样本来自多个类别,不纯度越高。
计算公式:
对于一个包含K个类别的数据集D(或节点),其基尼系数Gini(D)定义为:Gini(D) = 1 - Σ (p_i)^2(i从 1 到K)
其中p_i是数据集D中第i个类别样本所占的比例。
例子 (二分类 - 类别 A 和 B):
节点有 100% 的样本是 A:Gini = 1 - (1^2 + 0^2) = 1 - 1 = 0(纯净)
节点有 50% A 和 50% B:Gini = 1 - (0.5^2 + 0.5^2) = 1 - (0.25 + 0.25) = 1 - 0.5 = 0.5(最不纯)
节点有 70% A 和 30% B:Gini = 1 - (0.7^2 + 0.3^2) = 1 - (0.49 + 0.09) = 1 - 0.58 = 0.42
四、决策树算法介绍
1、决策树相关的重要算法包括:CLS, ID3,C4.5,CART
2、决策树算法的发展过程:
Hunt,Marin和Stone 于1966年研制的CLS学习系统,用于学习单个概念。
1979年, J.R. Quinlan 给出ID3算法,并在1983年和1986年对ID3 进行了总结和简化,使其成为决策树学习算法的典型。
Schlimmer 和Fisher 于1986年对ID3进行改造,在每个可能的决策树节点创建缓冲区,使决策树可以递增式生成,得到ID4算法。
1988年,Utgoff 在ID4基础上提出了ID5学习算法,进一步提高了效率。
1993年,Quinlan 进一步发展了ID3算法,改进成C4.5算法。
另一类决策树算法为CART,与C4.5不同的是,CART的决策树由二元逻辑问题生成,每个树节点只有两个分枝,分别包括学习实例的正例与反例。
3、各个算法如何选择特征
在ID3算法使用信息增益来选择特征,信息增益大的优先选择。
在C4.5算法采用信息增益比来选择特征,以减少信息增益容易选择特征值多的特征的问题(避免高度分枝属性)。
ID3和C4.5,都是基于信息论的熵模型的,会涉及大量的对数运算。
CART分类树算法使用基尼系数来代替信息增益比,简化模型同时也不至于完全丢失熵模型的优点。基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(率)是相反的。
4、三种算法对比:

五、python的sklearn中的决策树初步介绍
sklearn 库的tree 模块实现了两种决策树:
sklearn.tree.DecisionTreeClassifier 类:分类树的实现。
sklearn.tree.DecisionTreeRegressor 类:回归树的实现。
分类树用于预测离散型数值,回归树用于预测连续性数值。
sklearn 库中的决策分类树只实现了ID3 算法和CART 算法。
sklearn 中的决策树没有集成剪枝步骤。如果要对决策树进行缩减,可以在初始化决策树对象时,对参数进行设置,比如:
max_depth 表示树的最大深度;
max_leaf_nodes 表示最大的叶子节点数。
sklearn决策树实际应用部分,后续会持续更新文章,根据实际例子来实操决策树模型训练及预测,敬请期待。