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

news2024/11/24 6:42:36

目录

引言

概述

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.coloradmin.cn/o/1834541.html

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

相关文章

C# + easyui 写的一个web项目

用C# easyui 来开发,其实就是为了开发速度,用easyui可以一天写很多页面,比一些低代码平台还快。 登陆页面 主界面 记录数统计 家庭信息采集表 新建家庭 家庭成员 低保、五保人员帮扶情况登记表 低保、五保人员帮扶情况登记表的新增和编辑 治…

STM32学习笔记(五)--TIM输出比较PWM详解

(1)配置步骤1.配置RCC外设时钟 开启GPIO以及TIM外设2.配置时基单元的时钟 包含时钟源选择配置初始化时基单元3.配置输出比较单元 包含CCR的值 输出比较模式 极性选择 输出使能等4.配置GPIO口 初始化为复用式推挽输出的配置5.运行控制 启动计数器 输出PWM…

Java基础-案例练习-全是干货

目录 案例:卖飞机票 案例:找质数: 案例:开发验证码 案例:评委打分 案例:卖飞机票 package anlixunlian;import java.util.Scanner;/*机票价格按照淡季旺季、头等舱和经济舱收费、 输入机票原价、月份和…

Python进阶二: NumPy基础:数组和矢量计算

二、NumPy基础:数组和矢量计算 本文源自微博客(www.microblog.store),且以获得授权 NumPy(Numerical Python的简称)是Python数值计算最重要的基础包。大多数提供科学计算的包都是用NumPy的数组作为构建基础。 NumPy的部分功能如下&#xf…

SuiNS更新命名标准,增强用户体验

SuiNS将其面向用户的命名标准从 xxx.sui 更新为 xxx,让用户能够以一种适用于Web2和Web3世界的方式来代表自己。通过此更新,用户可以在其选择的名称前使用 ,而不是在名称后添加 .sui。 Sui命名服务于去年推出,旨在使Sui上的地址更…

docker-compose harbor 2.11

harbor 前言 “Harbor” 是一个用于管理容器镜像的开源仓库项目。由 VMware 开发和维护,Harbor 提供一个企业级的 Docker 镜像仓库,具有丰富的功能,包括: 镜像管理:提供存储和分发 Docker 镜像的能力。安全性:支持镜像签名和漏洞扫描,确保镜像的安全性。身份认证:集成…

python-开学?

[题目描述] 小执:终于可以开学啦!好开心啊! 小理:你没看新闻吗,开学日期又延后了。 小执:𝑁𝑂𝑂𝑂𝑂𝑂𝑂𝑂&am…

一文梳理ChatTTS的进阶用法,手把手带你实现个性化配音,音色、语速、停顿,口语,全搞定

前几天和大家分享了如何从0到1搭建一套语音交互系统。 其中,语音合成(TTS)是提升用户体验的关键所在。于是,上一篇接着和大家聊了聊:全网爆火的AI语音合成工具-ChatTTS,有人已经拿它赚到了第一桶金&#x…

代理配置SQUID

目录 SQUID代理服务器配置 监听浏览器访问记录 拒绝访问配置 SQUID代理服务器配置 实验系统 windows 10 xxxxx Roucky_linux9.4 192.168.226.22 监听浏览器访问记录 1. 安装squid yum install squid -y 2. 编辑squid配置文件 vim /etc/squid…

等保一体机:多种防护机制,让等保合规简单高效!

自1994年国务院颁布《中华人民共和国计算机信息系统安全保护条例》规定计算机信息系统实行安全等级保护以来,等级保护工作经过了近25年的发展历程,成为了我国网络安全保护的重要举措之一。 2019年12月1日等保2.0正式开始实施,我国网络安全行业…

【大分享05】动态容差归档,打通不动产登记管理“最后一公里”

关注我们 - 数字罗塞塔计划 - 本篇是参加由电子文件管理推进联盟联合数字罗塞塔计划发起的“大分享”活动投稿文章,来自上海涵妍档案信息技术有限责任公司,作者:陈雪。 一、政策背景 在“互联网政务服务”的浪潮下,各级政府机构…

在低侧电流检测中使用单端放大器:误差源和布局技巧

低侧检测的主要优点是可以使用相对简单的配置来放大分流电阻器两端的电压。例如,通用运算放大器的同相配置可能是需要能够在消费市场领域竞争的成本敏感型电机控制应用的有效选择。 基于同相配置的电路图如图1所示。 图1。 然而,这种低成本解决方案可能…

2288. 价格减免

题目 给定一个字符串列表 sentence,表示一个句子,其中每个单词可以包含数字、小写字母和美元符号 $。如果单词的形式为美元符号后跟着一个非负实数,那么这个单词就表示一个价格。我们需要在价格的基础上减免给定的 discount%,并更…

2023数A题——WLAN网络信道接入机制建模

A题——WLAN网络信道接入机制建模 思路:该题主要考察的WLAN下退避机制建模仿真。 资料获取 问题1: 假设AP发送包的载荷长度为1500Bytes(1Bytes 8bits),PHY头时长为13.6μs,MAC头为30Bytes,MA…

上海科技博物馆超薄OLED柔性壁纸屏应用方案

产品:2组55寸OLED柔性屏2x1 特点:嵌入墙体,与空间装饰融入一体 用途:播放文物展示 一、项目背景 上海科技博物馆作为展示科技与文化的交汇点,一直致力于为观众提供沉浸式的参观体验。为了提升文物展示的现代化和科技感…

不可忽视的9条网页排版设计规则,你了解吗?

网页设计由95%的排版组成。网页排版设计使图形的放置栩栩如生,让用户保持愉悦,容易被用户视觉感知。在这个过程中,网页排版设计需要考虑很多因素:款式、大小、字体颜色等。此外,设计师通过网页排版,让文字增加设计的美…

Kafka 高性能 7 大秘诀之 Segment 消息存储机制的奥妙

《Kafka 高性能 7 大秘诀》第 4 篇,解密 kafka Segment 日志存储思想哲学以及如何将磁盘的随机读写变成顺序读写,提高磁盘读写速度。 Kafka 使用日志文件存储消息,每个 Partition 的消息被存储在多个 Segment 文件中,避免了单个文…

经典神经网络(11)VQ-VAE模型及其在MNIST数据集上的应用

经典神经网络(11)VQ-VAE模型及其在MNIST数据集上的应用 我们之前已经了解了PixelCNN模型。 经典神经网络(10)PixelCNN模型、Gated PixelCNN模型及其在MNIST数据集上的应用 今天,我们了解下DeepMind在2017年提出的一种基于离散隐变量(Discrete Latent va…

OneNote 作为恶意软件分发新渠道持续增长

目前,Office 文件已经默认禁用宏代码,攻击者开始转向利用其他微软的软件产品来进行恶意 Payload 投递。默认情况下,OneNote 应用也包含在 Office 2019 和 Microsoft 365 软件中,所以 OneNote 文件越来越受到攻击者的青睐。如果有人…