机器学习(决策树)

一、决策树的基本定义

决策树通过对训练样本的学习,并建立分类规则,然后依据分类规则,对新样本数据进行分

类预测,属于有监督学习。

核心:所有数据从根节点一步一步落到叶子节点。

根节点:第一个节点。

非叶子节点:中间节点。

叶子节点:最终结果节点。

二、决策树的分类标准

1.ID3算法。

衡量标准:熵值:表示随机变量不确定性的度量,或者说是物体内部的混乱程度。

熵:熵值越小,该节点越"纯"。

1)天气的划分

属性熵:

熵值计算:5/14*0.971+4/14*0+5/14*0.971=0.693

则信息增益为:0.940-0.693=0.247

天气的信息增益为0.247,依次算出其他的信息增益从大到小依次作为根节点

在决策树算法中,信息增益是特征选择的一个重要指标。它描述的是一个特征能够为整个系统带来多少信息量(熵),用于度量信息不确定性减少的程度。如果一个特征能够为系统带来最大的信息量,则该特征最重要,将会被选作划分数据集的特征。

2.C4.5算法。

衡量标准:信息增益率。

信息增益率:特征A对训练数据集D的信息增益比g(D,4)定义为其信息增益g(D,A)与训练数据集D的经验熵H(D)之比

C4.5算法是一种决策树生成算法,它使用信息增益比(gainratio)来选择最优分裂属性,具

体步骤如下:

1、计算所有样本的类别熵(H)。

2、对于每一个属性,计算该属性的熵【也为自身熵】(Hi)。

3、对于每一个属性,计算该属性对于分类所能够带来的信息增益(Gi=H-Hi)。

4、计算每个属性的信息增益比(gain ratio=Gi/Hi)

天气的信息增益为:0.247

天气的自身熵值:5天晴天、4天多云、5天有雨。

信息增益率:0.247/1.577 = 0.1566

3.CART决策树。

衡量标准:基尼系数

基尼指数Gini(D)表示集合D的不确定性,基尼指数Gini(D,A)表示经A=a分割后集合D的不确定性,基尼指数值越大,样本集合的不确定性也就越大,这一点与熵相似。

青年(5人,2人贷款)的基尼系数:

非青年(10人,7人贷款)的基尼系数:

三、决策树剪枝

剪枝为了防止过拟合

预剪枝策略:1.限制树的深度

2.限制叶子节点的个数以及叶子节点的样本数

3.基尼系数

四、决策树回归树模型

解决回归问题的决策树模型即为回归树。

特点:必须为二叉树

1.计算最优切分点

因为只有一个变量,所以切分变量必然是x,可以考虑如下9个切分点:

1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5

1)1.5切分点的计算

将数据分为第一部分(1,5.56)和后面第二部分

2)计算损失

C1=5.56

C2=1/9(5.7+5.91+6.4+6.8+7.05+8.9+8.7+9+9.05)=7.5

Loss = (5.56-5.56)^2 + (5.7-7.5)^2+(5.91-7.5)^2+...+(9.05-7.5)^2 =15.72
3)再从分开的两部分数据找到最优切分点

五、决策树API

class sklearn.tree.DecisionTreeClassifier (criterion='gini' , splitter='best' , max_depth=None , min_samples_split=2 , min_samples_leaf=1 , min_weight_fraction_leaf=0.0 , max_features=None , random_state=None , max_leaf_nodes=None , min_impurity_decrease=0.0 , min_impurity_split=None , class_weight=None , presort=False)

1.criterion :gini or entropy 【采用基尼系数还是熵值衡量,默认基尼系数】

2.splitter: best or random 前者是在所有特征中找最好的切分点 后者是在部分特征中(数据量大的时候)【默认best,无需更改】

3.max_features:(表示寻找最优分裂时需要考虑的特征数量,默认为None,表示考虑所有特征。),log2,sqrt,N 特征小于50的时候一般使用所有的 【默认取所有特征,无需更改】

4.max_depth: 表示树的最大深度

5.max_leaf_nodes :(最大叶子节点数)

6.min_samples_split :(表示分裂一个内部节点需要的最小样本数,默认为2)

六、AUC性能测量

在机器学习中,性能测量是一项基本任务。因此,当涉及到分类问题时,我们可以依靠AUC - ROC曲线。当我们需要检查或可视化多类分类问题的性能时,我们使用AUC(曲线下面积)ROC(接收器工作特性)曲线。它是检查任何分类模型性能的最重要评估指标之一。

TPR为召回率,FPR为FP/TN+FP

python 复制代码
y_proba=tr.predict_proba(x_test)
a=y_proba[:,1]

from sklearn.metrics import roc_curve, auc  # 得到不同阈值的roc
# 计算ROC曲线的点
fpr,tpr,thresholds=roc_curve(y_test,a)#用来计算不同阈值下的fpr和tpr,
auc_result=auc(fpr,tpr)
# 绘制ROC曲线
plt.figure()
plt.plot(fpr,tpr,color='darkorange',lw=2,label='ROC curve(area=%0.2f)'%auc_result)
plt.plot([0,1],[0,1],color='navy',lw=2,linestyle='--')#函数来绘制一条从点(o,o)到点
plt.xlim([0.0,1.0])
plt.ylim([0.0,1.05])
plt.xlabel('FalsePositive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic')
plt.legend()
plt.show()

通过roc_curve函数来计算不同阈值下的fpr和tpr,再通过auc函数填入fpr,tpr来计算AUC

七、随机森林

1.集成学习

1.集成学习的含义:

集成学习是将多个基学习器进行组合,来实现比单一学习器显著优越的学习性能。

2.集成学习的代表:

bagging方法:典型的是随机森林

boosting方法:典型的是Xgboost

stacking方法:堆叠模型

3.集成学习的应用:

1)分类问题集成。

2)回归问题集成。

3)特征选取集成。

2.随机森林

特点:(1)数据采样随机(2)特征选取随机(3)森林(4)基分类器为决策树

优点:

1.具有极高的准确率。

2.随机性的引入,使得随机森林的抗噪声能力很强。

3.随机性的引入,使得随机森林不容易过拟合。

4.能够处理很高维度的数据,不用做特征选择。

5.容易实现并行化计算。

缺点:

当随机森林中的决策树个数很多时,训练时需要的空间和时间会较大。

1
2
3
4
5

相关推荐
武汉大学-王浩宇6 分钟前
LLaMa-Factory的继续训练(Resume Training)
人工智能·机器学习
weisian1519 分钟前
入门篇--知名企业-28-字节跳动-2--字节跳动的AI宇宙:从技术赋能到生态共建的深度布局
人工智能·字节跳动·扣子·豆包
NGBQ1213819 分钟前
原创餐饮店铺图片数据集:344张高质量店铺图像助力商业空间识别与智能分析的专业数据集
人工智能
FIT2CLOUD飞致云20 分钟前
应用升级为智能体,模板中心上线,MaxKB开源企业级智能体平台v2.5.0版本发布
人工智能·ai·开源·1panel·maxkb
haiyu_y26 分钟前
Day 58 经典时序模型 2(ARIMA / 季节性 / 残差诊断)
人工智能·深度学习·ar
peixiuhui39 分钟前
突破边界!RK3576边缘计算网关:为工业智能注入“芯”动力
人工智能·物联网·边缘计算·rk3588·iot·rk3568·rk3576
想你依然心痛1 小时前
鲲鹏+昇腾:开启 AI for Science 新范式——基于PINN的流体仿真加速实践
人工智能·鲲鹏·昇腾
蓝眸少年CY1 小时前
SpringAI+Deepseek大模型应用实战
人工智能
程序员欣宸1 小时前
LangChain4j实战之十二:结构化输出之三,json模式
java·人工智能·ai·json·langchain4j
极小狐1 小时前
智谱上市!当 GLM-4.7 遇上 CodeRider :演示何为「1+1>2」的巅峰效能
人工智能·ai编程