【机器学习】CART决策树算法的核心思想及其大数据时代银行贷款参考案例——机器认知外界的重要算法

目录

引言

概述

CART决策树的特点

核心思想

减少不确定性的指标

基尼系数(Gini Index)

分类错误率

银行实例

背景

数据准备

模型构建

模型评估与优化

应用与结果

代码示例


✈✈✈✈引言✈✈✈✈

CART算法既可以用于分类问题,也可以用于回归问题,这使得它在多个领域都有广泛的应用。例如,在电商推荐系统中,CART算法可以用于构建商品推荐模型,提高用户购物体验和销售额;在金融风控领域,CART算法可以应用于信用评分和欺诈检测等场景,帮助银行和其他金融机构降低风险。

相比于其他决策树算法(如ID3和C4.5),CART算法具有更强的适用性。它既可以处理离散型数据,也可以处理连续型数据,这使得CART算法能够处理更加复杂和多样化的数据集。

CART决策树生成的模型具有直观易懂的特点,每个节点和分支都代表了数据集中的一种模式或规则。这使得非专业人士也能够理解模型的工作原理,增加了模型的可信度和接受度。

今天来学习一下CART决策树吧

其他文章详见

【机器学习】机器的登神长阶——AIGC-CSDN博客

【Linux】进程地址空间-CSDN博客【linux】进程控制——进程创建,进程退出,进程等待-CSDN博客

⭐⭐⭐概述⭐⭐⭐

CART(Classification and Regression Trees)决策树是一种以基尼系数为核心评估指标的机器学习算法,适用于分类和回归任务。

CART决策树基于“递归二元切分”的方法,通过将数据集逐步分解为两个子集来构建决策树。CART既能作为分类树(预测离散型数据),也能作为回归树(预测连续型数据)。外观类似于二叉树。

对于每个节点,计算所有非类标号属性的基尼系数增益,选择增益值最大的属性作为决策树的划分特征。

通过递归的方式,将数据子集和分裂规则分解为一个二叉树,其中叶节点表示具体的类别(分类树)或预测值(回归树)。

CART决策树的特点

简单易懂:计算简单,易于理解,可解释性强。

处理缺失值:比较适合处理有缺失属性的样本。

处理大型数据集:能够在相对短的时间内对大型数据源得出可行且效果良好的结果。

模型复杂度:可以通过限制决策树的最大深度或叶子节点的最小样本数来控制模型的复杂度。

过拟合风险:CART决策树容易出现过拟合现象,生成的决策树可能对训练数据有很好的分类能力,但对未知的测试数据未必有很好的分类能力。

在线学习:CART决策树不支持在线学习,当有新的样本产生后,决策树模型需要重建。

以scikit-learn库中的CART决策树分类器为例,演示如何使用CART决策树进行分类任务

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)  # 创建CART决策树分类器对象(使用默认参数,即为CART决策树)  
clf = DecisionTreeClassifier(random_state=42)  # 使用训练数据拟合模型  
clf.fit(X_train, y_train)  # 使用测试数据进行预测  
y_pred = clf.predict(X_test)  # 计算并打印准确率  
accuracy = accuracy_score(y_test, y_pred)  
print("Accuracy:", accuracy)

🧠🧠🧠核心思想🧠🧠🧠

特征1特征2目标值
111
101
111
101
011
000
010
000

有两种决策树的构建方法

以不同的特征作为根节点会有不同的模型

示例一

示例二

对于以特征一为根节点的树来说,传入参数为1,大概率会得到 1。传入参数为 0 大概率会得到 0。

对于以特征二为根节点的树来说,传入参数为1,大概率会得到 1。传入参数为 0 ,输出 1 的概率和输出0,的概率是相等的。这样的决策树的不确定性太高。

综上,应以以特征1为根节点

✌✌减少不确定性的指标✌✌

基尼系数(Gini Index)

基尼系数是CART决策树中用于分类任务的一个评估指标,用于衡量数据集的不确定性。基尼系数的值介于0和1之间,值越大,表示数据集的不确定性越高,纯度越低。

对于包含K个类别的数据集D,其基尼系数的定义为:

Gini(D)=1−∑k=1K​pk2​

其中,pk​表示第k个类别在数据集D中出现的概率。

当使用某个特征A对数据进行划分时,划分后数据集D的基尼系数定义为:

Gini(D,A)=∣D∣∣D1​∣​Gini(D1​)+∣D∣∣D2​∣​Gini(D2​)

其中,D1​和D2​表示按照特征A进行划分后得到的两个子集,∣D∣、∣D1​∣和∣D2​∣分别表示数据集D、D1​和D2​的样本数量。

分类错误率

CART决策树的分类错误率是指在使用CART算法构建的决策树模型对测试集进行分类时,错误分类的样本数占总样本数的比例。错误率的计算依赖于具体的数据集和模型表现。

在CART决策树的构建过程中,为了降低分类错误率,通常会使用诸如Gini指数(Gini Index)或信息增益(Information Gain)等度量标准来选择最佳划分特征。CART算法倾向于选择那些能够使得划分后子节点纯度更高的特征,即分类错误率更低的特征。

CART决策树的分类错误率可以通过以下步骤计算:

数据准备:首先,需要有一个已经标记好类别的数据集,并将其划分为训练集和测试集。

模型训练:使用训练集来训练CART决策树模型。在这个过程中,模型会基于Gini指数或其他度量标准来选择最佳划分特征,并递归地构建决策树。

模型评估:将训练好的CART决策树模型应用于测试集,并对测试集中的每个样本进行分类。

计算错误率:统计测试集中被错误分类的样本数,并将其除以测试集的总样本数,得到CART决策树的分类错误率。

需要注意的是,CART决策树的分类错误率会受到多种因素的影响,包括数据集的特性、特征的选择、树的深度(即剪枝的程度)等。因此,在实际应用中,通常需要通过交叉验证等技术来评估模型的表现,并选择最优的模型参数。

此外,对于不同的数据集和任务,CART决策树的分类错误率也会有所不同。在一些复杂的数据集上,CART决策树可能难以达到很低的错误率,但在一些简单的数据集上,CART决策树可以取得很好的效果。因此,在选择使用CART决策树时,需要根据具体的应用场景和数据集特性来评估其适用性。

CART决策树在分类任务中并不直接使用熵(Entropy)作为划分标准,而是采用基尼不纯度(Gini Impurity)或者说基尼系数。

熵是信息论中的一个重要概念,用于衡量数据的不确定性或混乱程度。

在决策树中,熵通常用于ID3算法,作为划分数据集的特征选择。

熵的计算公式为:

(H(X) = -\sum_{i=1}^{n} p(x_i) \log_2 p(x_i)),其中(p(x_i))是某个类别在数据集中的比例。

CART决策树与熵的关系

不直接使用熵:CART决策树在分类任务中不直接使用熵作为划分标准,而是采用基尼不纯度。

基尼不纯度:基尼不纯度也是衡量数据混乱程度的一个指标,但计算上更为简单。其计算公式为:(Gini(D) = 1 - \sum_{i=1}{n} p(x_i)2),其中(p(x_i))是类别(i)在数据集(D)中的概率。

选择划分特征:CART决策树通过计算每个特征的基尼不纯度增益来选择最佳划分特征。基尼不纯度增益定义为父节点的基尼不纯度减去所有子节点基尼不纯度的加权平均。

CART决策树的特征选择:CART决策树通过递归地将数据集划分为越来越小的子集来构建决策树。

在每个节点上,CART决策树会评估每个特征,并选择能够最大程度地减少基尼不纯度的特征进行划分。

通过不断地划分,CART决策树可以逐渐构建出一个高效的分类器。

💵💵💵银行实例💵💵💵

背景

一家大型银行为了提高信贷审批的效率和准确性,决定采用决策树算法来辅助审批过程。银行收集了包括客户年龄、收入、信用记录等多个维度的数据,这些数据将作为特征数据输入到决策树模型中。

数据准备

数据收集:银行从客户档案、信贷申请表中提取关键信息,如年龄、收入、职业、信用历史等。

数据清洗:对收集到的数据进行清洗,去除重复、错误或无效的数据,确保数据的准确性和可靠性。

特征选择:从所有可能的特征中,选择对分类有较大贡献的特征。在信贷审批中,通常会选择年龄、收入、信用记录等作为关键特征。

模型构建

数据划分:将清洗后的数据集划分为训练集和测试集。训练集用于构建决策树模型,测试集用于评估模型的性能。

构建决策树:从根节点开始,递归地选择最优特征对数据进行划分。在信贷审批中,例如,第一个节点可能根据年龄进行划分,将客户分为青年、中年和老年三组。然后,在每个子节点上,再根据其他特征(如收入、信用记录等)进行进一步的划分。

计算节点纯度:计算每个节点的纯度,即该节点下数据属于同一类别的比例。纯度越高,说明该节点下的数据越纯净,分类效果越好。

停止条件:当节点中的样本数量低于预定阈值、节点纯度达到预定阈值或树的深度达到预定阈值时,停止划分并生成叶节点。叶节点对应于最终的决策结果,如“批准贷款”或“拒绝贷款”。

模型评估与优化

评估模型性能:使用测试集评估构建好的决策树模型的性能。常用的评估指标包括准确率、召回率、F1值等。通过评估结果,可以了解模型在信贷审批中的表现。

模型优化:如果模型性能不佳,可以通过调整参数(如树的深度、最小样本数等)或采用集成学习(如随机森林)等方法来优化模型。

应用与结果

自动化审批:将构建好的决策树模型集成到银行的信贷审批系统中,实现自动化审批。当客户提交信贷申请时,系统可以自动调用模型进行预测,并给出审批结果。

提高审批效率:通过自动化审批,银行可以大大提高审批效率,减少人工干预和等待时间据统计,采用决策树算法后,贷款审批的准确率提高了10%,审批时间缩短了30%。

优化客户体验:客户可以更快地获得审批结果,提高了客户满意度和忠诚度。同时,银行也能更准确地识别高风险客户,降低信贷风险。

代码示例

import pandas as pd  
from sklearn.model_selection import train_test_split  
from sklearn.tree import DecisionTreeClassifier  
from sklearn.metrics import accuracy_score  # 1. 数据准备  
# 假设数据集为'credit_data.csv',包含'Age', 'Income', 'Credit_History', 'Loan_Status'等列  
data = pd.read_csv('credit_data.csv')  # 查看数据前几行  
print(data.head())  # 假设'Loan_Status'是目标变量,其中'Y'表示批准贷款,'N'表示拒绝贷款  
X = data[['Age', 'Income', 'Credit_History']]  # 特征变量  
y = data['Loan_Status'].map({'Y': 1, 'N': 0})  # 目标变量,转换为0和1  # 2. 数据划分  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  # 3. 模型构建  
clf = DecisionTreeClassifier(random_state=42)  # 创建决策树分类器  
clf.fit(X_train, y_train)  # 训练模型  # 4. 预测与评估  
y_pred = clf.predict(X_test)  # 对测试集进行预测  
accuracy = accuracy_score(y_test, y_pred)  # 计算准确率  print(f"Accuracy: {accuracy}")  # 5. 可视化决策树(可选,对于较大的树可能不易阅读)  
# 需要安装 graphviz 和 pydotplus 库  
# from sklearn.tree import export_graphviz  
# import pydotplus  
# dot_data = export_graphviz(clf, out_file=None,   
#                            feature_names=X.columns,    
#                            class_names=['No', 'Yes'],    
#                            filled=True, rounded=True,    
#                            special_characters=True)  
# graph = pydotplus.graph_from_dot_data(dot_data)    
# graph.write_png('loan_approval_tree.png')  # 注意:可视化部分可能需要额外的库,并且对于复杂的树可能不太实用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/29362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

攻防演练“轻装上阵” | 亚信安全信舱ForCloud 打造全栈防护新策略

网络世界攻防实战中,攻击风险已经从代码到云横跨全栈技术点,你准备好了吗 云服务器,攻击众矢之的 2022年超过38万个Kubernetes API服务器暴露公网,成为攻击者目标。云服务器,尤其是开源设施,一直以来不仅是…

Android可穿戴设备世界之旅

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 介绍 Android通过在电视、穿戴和汽车等各种电子模块中扩展下一代应用开发概念,扩展了其整个范围和可…

vue大作业-实现学校官网

vue大作业-实现学校官网 基于vue2实现的学校官网 项目展示 学校官网介绍 欢迎访问我们学校的官方网站,这里为您提供了全面的信息和资源,帮助您更好地了解我们的教育理念、教学资源和学术活动。 首页 首页是您了解我们学校的起点。这里展示了学校的最…

k8s删除状态为 Terminating 的pod

卸载calico pod时候pod资源状态会卡在terminating,这时候需要手动进行删除 使用以下命令即可 kubectl delete pod podName -n NAMESPACE --force --grace-period0记住一定要加命名空间,不然会报错没有找到

《Windows API每日一练》4.5 GDI映射模式

上一节讲述设置绘图模式时,包括设置背景模式、混合模式,还有一个就是映射模式。本节我们将详细讲述映射模式。 本节必须掌握的知识点: 设备坐标和逻辑坐标 视口和窗口 MM_TEXT映射模式 度量映射模式 自定义映射模式 第27练:GDI映…

无代码爬虫软件八爪鱼采集器-如何设计判断是、否

多数情况下免费版本的功能,已经可以满足绝大多数采集需求,想了解八爪鱼采集器,我写了一套系列教程,请访问这篇帖子:【完结】无代码网页爬虫软件——八爪鱼采集器入门基础教程-CSDN博客 免费版八爪鱼采集器下载https:/…

【数据结构】第十七弹---C语言实现选择排序

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、选择排序 1.1、基本思想 1.2、代码实现 1.3、代码测试 1.4、时空复杂度分析 总结 1、选择排序 1.1、基本思想 选择排序是一种简单直观的比…

幂集(C++)

终其一生,你在追求什么? ——2024年6月16日11:56 题目描述 给定正整数n(n≥1),给出求{1~n}的幂集,例如,n3时,{1,2,3}对应的幂集合为{{}&#xff…

FlowUs项目经理初体验

作为一名项目经理,FlowUs可以作为一个强大的工具来帮助我管理项目的所有方面,从规划到执行再到监控和回顾。 FlowUs息流是什么?FlowUs息流是一款集文档、多维表、文件夹等功能于一体的新一代知识管理与协作平台 以下是一些使用FlowUs作为项…

streamlit markdown里支持latex公式显示

参考: https://docs.streamlit.io/develop/api-reference/write-magic/st.write https://discuss.streamlit.io/t/streamlit-markdown-a-streaming-markdown-component-with-latex-mermaid-table-code-support/72187 也有独立支持的st.latex 接口单独显示公司&…

AI绘画Stable Diffusion 保姆级教程,让AI人物轻松打光的种方法,我不允许你还不会!

大家好,我是画画的小强 我们常常听到这样的观点:光影,如同摄影的精髓,为图像赋予难以抗拒的质感和情感深度。 用AI生成的图片为什么总是觉得比较“假”,主要还是光影不足! 今天我将一一解析多种光影调控…

RemObjects教程

File—Other…—RemObjects Data Abstract—ComboServer Step(1) 在出现的 NewRemObjects SDK Server 对话框中 Project Folder :文件存档路径 Project Name :工程名称 Also-Create a matching client application and a project group:在创…

C#——文件读取FileStream类详情

文件读取FileStream类 一个文件进行读写的时候,会变成一个文件流 FileStream类输入流 用于从文件进行读取文件。输出流,向文件写入的操作 FilleStream用于文件当中任何位置的读写 此文章借鉴与:C#教程(非常详细) Fil…

电脑怎么录制游戏视频?轻松捕捉每一帧精彩

随着游戏产业的蓬勃发展,越来越多的玩家不仅满足于在游戏世界中的探索与冒险,更希望将自己的游戏精彩瞬间记录下来,分享给更多的朋友。可是电脑怎么录制游戏视频呢?本文旨在为广大游戏爱好者提供一份详细的电脑游戏视频录制攻略&a…

Java 智慧工地监管平台源码 依托智慧工地平台,满足省、市级住建数据监管要求(微服务架构+Java+Spring Cloud +UniApp +MySql)

Java 智慧工地监管平台源码 依托智慧工地平台,满足省、市级住建数据监管要求 智慧工地是将互联网的理念和科技引入建筑工地,从施工现场源头抓起,最大程度的收集人员、安全、环境、材料等关键业务数据。通过结合物联网、大数据、互联网、云计…

AI绘画stable diffusion 模型介绍及下载、使用方法,超全的新手入门教程建议收藏!

大家好,我是画画的小强 今天我将继续分享AI绘画Stable Diffusion的模型、参数含义等,分享给各位朋友一起学习。 一、模型 Stable difusion 模型就是所谓的大模型,用来控制整个画面的风格走势的。 打开webui页面,可以看到大模型…

项目学习---Javaweb(超市订单管理系统)

知识点 MVC模型: 实现步骤:分为3级 1.M(Model) 持久层 代码与数据库进行交互的代码(Mybatis-dao层) 2.C(Control) 控制层 完成某项业务的具体操作过程(Controller层----Service层) 3.V(View) 视图层 一般指用户看到的内容(页面) 项目目录 .filter //过滤器 解决中文字符集…

眼动研究实验设计方法

摘要 本文对基于实验室的眼动实验设计进行了总体回顾,并侧重于回顾实验程序和方法,从而为眼动追踪实验提供一个框架或背景。本文内容涵盖了基本的实验设计,这与实验心理学课本没有太大的区别,其中析因设计在眼动追踪研究中特别受…

SpringCloudAlibaba组件集成

SpringCloudAlibaba组件集成 Nacos服务注册与发现 1.Nacos认识与安装 1.1.什么是Nacos Nacos和Eureka有着相同的能力,甚至更为强大,作为Dubbo 生态系统中重要的注册中心实现。官方对它有如下定义: Nacos致力于帮助您发现,配置…

Java+Angular+Nginx+RESTful API 医院云HIS系统源码 全国中小型诊所都在用的诊所his系统门诊业务流程 自主版权

JavaAngularNginxRESTful API 医院云HIS系统源码 全国中小型诊所都在用的诊所his系统门诊业务流程 自主版权 HIS系统(Hospital Information System)在门诊业务中的应用带来了许多显著的优势,这些优势不仅提高了医疗服务的质量和效率&#xf…