机器学习算法决策树(一)

简介: **决策树模型**是一种直观的分类模型,常用于金融风控和医疗诊断等领域。它通过树形结构对数据进行划分,易于理解和解释,能揭示特征重要性且计算复杂度低。然而,模型可能过拟合,需剪枝处理;不擅长处理连续特征;预测能力有限,且对数据变化敏感。在集成学习如XGBoost中,决策树作为基模型广泛应用。示例代码展示了使用Python的`sklearn`库构建和可视化决策树的过程。

决策树的介绍


决策树是一种常见的分类模型,在金融风控、医疗辅助诊断等诸多行业具有较为广泛的应用。决策树的核心思想是基于树结构对数据进行划分,这种思想是人类处理问题时的本能方法。例如在婚恋市场中,女方通常会先询问男方是否有房产,如果有房产再了解是否有车产,如果有车产再看是否有稳定工作……最后得出是否要深入了解的判断。




决策树的主要优点:


  1. 具有很好的解释性,模型可以生成可以理解的规则。


  1. 可以发现特征的重要程度。


  1. 模型的计算复杂度较低。


决策树的主要缺点:


  1. 模型容易过拟合,需要采用减枝技术处理。


  1. 不能很好利用连续型特征。


  1. 预测能力有限,无法达到其他强监督模型效果。


  1. 方差较高,数据分布的轻微改变很容易造成树结构完全不同。


由于决策树模型中自变量与因变量的非线性关系以及决策树简单的计算方法,使得它成为集成学习中最为广泛使用的基模型。梯度提升树,XGBoost以及LightGBM等先进的集成模型都采用了决策树作为基模型,在广告计算、CTR预估、金融风控等领域大放异彩 ,同时决策树在一些明确需要可解释性或者提取分类规则的场景中被广泛应用,而其他机器学习模型在这一点很难做到。例如在医疗辅助系统中,为了方便专业人员发现错误,常常将决策树算法用于辅助病症检测。


决策树的应用


通过sklearn实现决策树分类


import numpy as np
import matplotlib.pyplot as plt
 
from sklearn import datasets
 
iris = datasets.load_iris()
X = iris.data[:,2:]
y = iris.target
 
plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.scatter(X[y==2,0],X[y==2,1])
 
plt.show()



from sklearn.tree import DecisionTreeClassifier
 
tree = DecisionTreeClassifier(max_depth=2,criterion="entropy")
tree.fit(X,y)


依据模型绘制决策树的决策边界


def plot_decision_boundary(model,axis):
    x0,x1 = np.meshgrid(
        np.linspace(axis[0],axis[1],int((axis[1]-axis[0])*100)).reshape(-1,1),
        np.linspace(axis[2],axis[3],int((axis[3]-axis[2])*100)).reshape(-1,1)
    )
    X_new = np.c_[x0.ravel(),x1.ravel()]
    y_predict = model.predict(X_new)
    zz = y_predict.reshape(x0.shape)
 
    from matplotlib.colors import ListedColormap
    custom_map = ListedColormap(["#EF9A9A","#FFF59D","#90CAF9"])
 
    plt.contourf(x0,x1,zz,linewidth=5,cmap=custom_map)
 
plot_decision_boundary(tree,axis=[0.5,7.5,0,3])
plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.scatter(X[y==2,0],X[y==2,1])
plt.show()



实战:


Step: 库函数导入


import numpy as np 
 
## 导入画图库
import matplotlib.pyplot as plt
import seaborn as sns
 
## 导入决策树模型函数
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree


Step: 训练模型


## 构造数据集
x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])
y_label = np.array([0, 1, 0, 1, 0, 1])
 
## 调用决策树回归模型
tree_clf = DecisionTreeClassifier()
 
## 调用决策树模型拟合构造的数据集
tree_clf = tree_clf.fit(x_fearures, y_label)


Step: 数据和模型可视化


plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.title('Dataset')
plt.show()
 
import graphviz
dot_data = tree.export_graphviz(tree_clf, out_file=None)
graph = graphviz.Source(dot_data)
graph.render("pengunis")


Step:模型预测


x_fearures_new1 = np.array([[0, -1]])
x_fearures_new2 = np.array([[2, 1]])
 
## 在训练集和测试集上分布利用训练好的模型进行预测
y_label_new1_predict = tree_clf.predict(x_fearures_new1)
y_label_new2_predict = tree_clf.predict(x_fearures_new2)
 
print('The New point 1 predict class:\n',y_label_new1_predict)
print('The New point 2 predict class:\n',y_label_new2_predict)



机器学习算法决策树(二)+https://developer.aliyun.com/article/1544103?spm=a2c6h.13148508.setting.16.1fa24f0eRBJGs5

相关文章
|
3天前
|
机器学习/深度学习 算法 算法框架/工具
模型训练实战:选择合适的优化算法
【7月更文第17天】在模型训练这场智慧与计算力的较量中,优化算法就像是一位精明的向导,引领着我们穿越复杂的损失函数地形,寻找那最低点的“宝藏”——最优解。今天,我们就来一场模型训练的实战之旅,探讨两位明星级的优化算法:梯度下降和Adam,看看它们在不同战场上的英姿。
25 5
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
|
15天前
|
机器学习/深度学习 人工智能 自然语言处理
机器学习之深度学习算法概念
深度学习算法是一类基于人工神经网络的机器学习方法,其核心思想是通过多层次的非线性变换,从数据中学习表示层次特征,从而实现对复杂模式的建模和学习。深度学习算法在图像识别、语音识别、自然语言处理等领域取得了巨大的成功,成为人工智能领域的重要技术之一。
39 3
|
16天前
|
人工智能 自然语言处理 算法
昆仑万维携手南洋理工大学抢发Q*算法:百倍提升7B模型推理能力
【7月更文挑战第4天】昆仑万维与南洋理工大学推出Q*算法,大幅提升7B规模语言模型的推理效能。Q*通过学习Q值模型优化LLMs的多步推理,减少错误,无需微调,已在多个数据集上展示出显著优于传统方法的效果。尽管面临简化复杂性和效率挑战,这一创新为LLM推理能力提升带来重大突破。[论文链接:](https://arxiv.org/abs/2406.14283)**
18 1
|
17天前
|
机器学习/深度学习 数据采集 人工智能
|
17天前
|
机器学习/深度学习 人工智能 供应链
|
19天前
|
机器学习/深度学习 数据采集 算法
【机器学习】CART决策树算法的核心思想及其大数据时代银行贷款参考案例——机器认知外界的重要算法
【机器学习】CART决策树算法的核心思想及其大数据时代银行贷款参考案例——机器认知外界的重要算法
|
22天前
|
机器学习/深度学习 分布式计算 算法
在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)
【6月更文挑战第28天】在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)、数据规模与特性(大数据可能适合分布式算法或深度学习)、性能需求(准确性、速度、可解释性)、资源限制(计算与内存)、领域知识应用以及实验验证(交叉验证、模型比较)。迭代过程包括数据探索、模型构建、评估和优化,结合业务需求进行决策。
26 0
|
22天前
|
机器学习/深度学习 算法
机器学习中的超参数优化涉及手动尝试、网格搜索、随机搜索、贝叶斯优化、梯度优化、进化算法等策略
【6月更文挑战第28天】**机器学习中的超参数优化涉及手动尝试、网格搜索、随机搜索、贝叶斯优化、梯度优化、进化算法等策略。工具如scikit-optimize、Optuna助力优化,迁移学习和元学习提供起点,集成方法则通过多模型融合提升性能。资源与时间考虑至关重要,交叉验证和提前停止能有效防止过拟合。**
27 0
|
2天前
|
传感器 算法
基于无线传感器网络的MCKP-MMF算法matlab仿真
MCKP-MMF算法是一种启发式流量估计方法,用于寻找无线传感器网络的局部最优解。它从最小配置开始,逐步优化部分解,调整访问点的状态。算法处理访问点的动态影响半径,根据带宽需求调整,以避免拥塞。在MATLAB 2022a中进行了仿真,显示了访问点半径请求变化和代价函数随时间的演变。算法分两阶段:慢启动阶段识别瓶颈并重设半径,随后进入周期性调整阶段,追求最大最小公平性。
基于无线传感器网络的MCKP-MMF算法matlab仿真

热门文章

最新文章