决策树基本思想

决策树是基本的机器学习分类算法,它的输入是一组带标签的数据,输出是一颗决策树,树的非叶结点代表判断逻辑,叶子结点代表分类子集。

决策树算法原理是通过训练数据形成if-then的判断结构。从树的根节点到叶节点的每一条路径构成一个判断规则。我们需要选择合适的特征作为判断节点,可以快速的分类,减少决策树的深度。最理想的情况是,通过特征的选择把不同类别的数据集贴上对应类标签,树的叶子节点代表一个集合,集合中数据类别差异越小,其数据纯度越高。

  • 输入:训练集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x 3 , y 3 ) } D=\{(x_1,y_1), (x_2, y_2),...,(x_3,y_3)\} D={(x1,y1),(x2,y2),...,(x3,y3)},属性集 A = { a 1 , a 2 , . . . , a n } A=\{a_1,a_2,...,a_n\} A={a1,a2,...,an}
    过程:抽象为函数TreeGenerate(D,A)
    注:最优划分属性即为能把最多结点分为一类的属性
1. 生成根结点node
2. if D中样本全部属于某一类C,then
3.    标记根节点为C类叶子结点;return
4. endif
5. if A = 空集 or D样本在A上取值相同  then
6. 	标记根结点为D中样本数最多的结点;return
7. endif
8. 从A中选取最优划分属性a*
9. for a*的每一个值a*v do
10.	    为node生成一个分支Dv,表示D中在a上取值为a*v的所有的样本的子集
11. 	if Dv为空 then
12.			将分支结点标记为叶子结点,其类别标记为D中样本最多的类;return
13.		else 
14.			以TreeGenerate(Dv,  A\{a*})为分支结点递归
15.	 

输出:以node为根节点一个一颗决策树

决策树的生成是一个递归过程,有三种情形会导致递归返回:

  1. 当前结点的样本完全属于同一类别(无需划分)
  2. 当前划分时的属性集为空集,或者所有样本在所有属性上取值都相同(无法划分)
  3. 当前结点集合为空(不能划分)

参考文献

机器学习 - 周志华
分类算法 – 决策树ID3算法

### 决策树算法基本思想和工作原理 决策树是一种基于树形结构的预测模型,其基本思想是通过一系列条件判断将数据逐步划分到不同的子集中[^1]。在每个节点上,根据某个属性的最佳分裂规则对数据进行分类或回归处理。最终,叶子节点代表具体的类别或数值输出。 #### 1. 决策树基本概念 决策树由节点和有向边组成。其中,内部节点表示一个属性上的测试,分支表示测试的结果,而叶子节点表示类别的输出或回归值[^2]。决策树的核心在于如何选择最优的分裂规则,以使生成的树结构尽可能简单且具有良好的泛化能力。 #### 2. 决策树的工作原理 决策树的构建过程可以分为两个主要阶段:**树的生长**和**树的剪枝**。 - **树的生长** 树的生长是指通过递归地选择最佳分裂属性来构建决策树的过程。常用的分裂标准包括信息增益(Information Gain)、信息增益率(Gain Ratio)以及基尼指数(Gini Index)。例如,ID3算法使用信息增益作为分裂准则,而C4.5则采用信息增益率以减少对多值属性的偏好。 - **树的剪枝** 决策树容易出现过拟合问题,因此需要通过剪枝来提高模型的泛化能力。剪枝可以分为预剪枝和后剪枝两种方式。预剪枝通过限制树的深度或叶节点中的样本数来避免过度生长;后剪枝则是在树完全生长后再移除不必要的子树[^3]。 #### 3. 决策树的分类与回归 决策树既可以用于分类任务,也可以用于回归任务。对于分类任务,决策树的目标是将数据划分为离散的类别;而对于回归任务,则是预测连续的数值。分类与回归树(CART)算法同时支持这两种任务,并通过不同的分裂标准进行优化。 ```python from sklearn.tree import DecisionTreeClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split # 加载数据集 data = load_iris() X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.3, random_state=42) # 构建决策树模型 clf = DecisionTreeClassifier(criterion='gini', max_depth=3) clf.fit(X_train, y_train) # 输出模型预测结果 print(clf.predict(X_test)) ``` #### 4. 决策树的优点与缺点 - **优点** - 计算量相对较小,易于理解和实现。 - 能够清晰显示哪些字段比较重要,便于解释模型结果。 - 非参数学习,不需要对数据分布做假设。 - **缺点** - 容易过拟合,尤其是在数据噪声较大或样本量较少时。 - 对数据敏感,即使样本发生微小变化也可能导致树结构的显著改变。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值