RapidMiner数据挖掘4 —— 决策树

news2024/11/13 8:51:04

0. 序章

0.1 文本说明

        所有应用程序操作的名称和编程说明都以黄色背景书写,问题以蓝色背景书写,以方便他们在文本中识别。 在整个课程中,请逐步遵循所有说明,并确保获得预期结果,然后再继续下一部分或问题。

        通过在Ubuntu中运行RapidMiner工作环境开启软件,如下所示:

        a..初始化RapidMiner应用程序类型:

SETUP RAPIDMINER9

        c.要在同一终端窗口中运行RapidMiner,请输入指令:

RapidMinerGUI

        如果要求,请接受许可证条款,但不要要求更新当前版本。  

0.2 内容简介

        这文介绍了关于决策树的相关内容。决策树是一种著名的分类算法,它通过迭代地将数据分割成子集,使用简单的条件构建决策路径。主要算法由连接的决策节点组成,这些节点生成所谓的分支,这些分支将决策树的根与任何叶子节点连接起来。叶子节点对应于被分配到定义类别中的数据集记录。本课程重点研究基于决策树的监督分类。其主要目标是理解并测试应用于特定数据集的这种监督分类方法的一些配置。

        决策树分类算法的工作原理是从一组数据开始,算法试图通过提出问题并根据数据的特征答案来分割数据,每次分割都旨在使得子集比之前更加纯净(即子集中的数据更可能属于同一个类别)。这一过程重复进行,直到满足某个停止条件,例如达到预定的深度或子集中的数据已足够纯净。最终,每个叶子节点代表一个类别,通过从根到叶子的路径,可以根据新数据的特征预测其类别。

        本篇文章的目标是通过实践来深入理解决策树分类的工作原理及其不同配置如何影响分类性能。通过应用决策树算法于特定的数据集并调整其配置,将能够观察和分析不同设置对模型性能的影响,从而获得关于如何有效使用决策树进行数据分类的洞见。

0.3 文章背景

        利用决策树算法来检验和评估在特定的二元分类问题上的性能。为了熟悉这个问题和数据集的描述,需要阅读以下的信息。所要求的是进行一项详细的个人资料分析,以确定潜在客户是否有资格获得住房贷款。个人资料的相关性根据个人条件和住房融资的区域类型(基本上是城市、半城市和农村)而有所不同。问题是,是否能够利用在线申请表提供的个人数据,自动化贷款资格审查过程。将使用一个数据集(稍后复制)进行测试,该数据集包含根据以下属性集合的贷款资格决策示例。

        目标是探索如何使用决策树模型根据客户的个人信息自动判断其是否符合住房贷款的条件。这涉及到分析客户的多个属性,如收入水平、就业状态、教育背景、家庭状况以及所求贷款的地理位置(城市、半城市或农村)等因素,来决定他们是否有资格获得贷款。通过这种方式,银行或贷款机构可以更高效、更快速地处理贷款申请,同时也能减少因主观判断而导致的错误。这种自动化处理贷款资格的方法,不仅能提高处理速度和准确性,也有助于银行更好地管理和评估贷款风险。

0.4 背景分析

Attribute name

属性名称

Description说明
Loan IDldentification number of the loan application.贷款申请的识别号码。
Gender“Male” or Female. Gender of the main applicant.男性 还是 女性。 主申请人的性别。
MarriedYes” or “No”. Indicates if the main applicant is married.是 "或 "否"。表示主申请人是否已婚。
Dependents“0”,“1”“2”, or “3+” (three or plus). Number of persons that dependeconomically on the main applicant.“0"、"1"、"2 "或 "3+"(三人或三人以上)。在经济上依赖主申请人的人数"。
EducationGraduate” or "Not Graduate” Indicates if the main applicant obtained or not a university degree.
Self Employed"Yes” or “No”. Indicates if the main applicant is self-employed or not.
Income1Amount of the main applicant monthly income.
Income2Amount of the coapplicant monthly income.
AmountEstimated loan amount (assumed to be actually multiplied by 1.000)
Term学期Necessary number of months to reimburse the loan.偿还贷款所需的月数
Credit History“1”(Yes) or “0”(No). Indicates if the main applicant has or not a positiverecord of repaying debts in the past.
Property Area“Urban”, “Rural, or “Semiurban”. Type of area where housing to be financed is located.
Status"y”(Yes) or "N”(No). Indicates if the loan application is eligible or not.

        问题1:这些属性的数据类型可能是什么?请在下表中每个属性名称的右边写出相应的类型。

        RapidMiner是一款流行的数据科学平台,它支持多种数据类型,以便于处理各种数据分析任务。在RapidMiner中,数据类型主要用于定义属性(或列)的性质,这对于数据预处理、分析和建模至关重要。以下是RapidMiner中常见的数据类型:
        Integer(整数): 用于表示没有小数部分的数值,例如年龄、人数等。

        Real(实数): 用于表示有小数部分的数值,例如体重、温度等。

        Date/Time(日期/时间):用于表示日期和时间信息。这种类型的数据可以表示为日期、时间或日期时间的组合,允许进行时间序列分析或时间相关的数据处理。

        Polynomial(多项式):类似于名义型,但是它用于表示两个以上的值,这些值没有固定的顺序。多项式数据类型适用于多类别数据,其中类别之间没有明确的等级或顺序。

        Binomial(二进制):一种特殊的名义型数据,仅包含两个类别(如是/否、真/假)。在某些情况下,二进制数据也可以表示为0和1。

Attribute namerespective types
Loan IDPolynomial
GenderBinomial
MarriedBinomial
DependentsPolynomial
EducationBinomial
Self EmployedBinomial
Income1Integer
Income2Integer
AmountInteger
TermInteger
Credit HistoryBinomial
Property AreaPolynomial
StatusBinomial

1. 开始教程

1.1 数据集的初步分析

        在操作子窗口Operators中激活Read csvDatAccess  Files > Read > Read csv。将其拖放到处理Process 工作区中。在Read csv的 Parameters子窗口中,确认以下项目已被选中:use quotes, parse numbers, first row as names, read not matching values asmissing.。点击Import Configuration Wizard... 从你的目录中读取loan_data.csv文件。点击Next,改变文件编码格式 File EncodingUTF-8,并在列分隔符Column Separator下拉菜单中选择逗号选项Comma “,” 。检查数据集。

        在in the Import Data window.中,验证属性的 types and roles 类型和角色。根据列出的值,将属性定义为二项式或多项式binomial or polynominal,每当适用时。确保Dependents属性是多项式polynominal的(这避免了如果属性类型设置为整数,则将值3+视为缺失integer)。同时验证最后一个属性“Status”是带有角色标签的二项式binomial with label as role。然后点击Finish按钮。如果还没有完成,将 Read Csv操作符的输出 out 端口连接到处理 Process子窗口右侧的结果res 端口。

        问题2:运行过程并检查结果Results视图中的ExampleSet (Read CSV)标签。类标签是如何与定义每条记录的属性区分开的?数据集由多少条记录组成,在多少条记录中存在缺失数据?

一共614条记录,存在丢失数据的134条,存在未丢失数据的480条,标签全部存在

        问题3:是否有任何缺失的贷款决定(即status状态值)?

没有缺失的标签记录

        问题4:在所有数据缺失的记录中,哪些属性是完整的,哪些属性是不完整的?

完整的:status,Loan_ID,Education,Income1,Income2,Propertry_Area
不完整的:Gender,Married,Dependets,Self_Employed,Amount,Term,Credit_History

        问题5: 数据集中每个类别有多少条记录,它们各自所占的百分比是多少?

Y:422
N:192

        进行探索性数据分析以更好地理解数据集的一些初步观察。        

        问题6: 描述名义属性的主要趋势,并解释显示在两个属性名称上的警告标志。

Gender
Using this data column may potentially lead to biased models or decisions. 
Please be careful and check if using this data is problematic.
This column was flagged since its name contains a suspicious term: gender
Do not rely on software alone to detect and mitigate bias. Learn more 
at https://info.rapidminer.com/bias.
性别
使用此数据列可能会导致模型或决策出现偏差。
请注意并检查使用该数据是否有问题。
此列已被标记,因为其名称包含可疑术语:性别
不要仅仅依靠软件来检测和减少偏差。了解更多 
请访问 https://info.rapidminer.com/bias。


        问题7: 非常高的第二收入是否会提高获得贷款批准的可能性?

无明显对应关系

        问题8: 教育属性Education、贷款金额Amount和收入1Income1之间是否存在关系?

毕业且收入高的就有几率获得更高的贷款

        问题9: 是否有任何荒谬或矛盾的记录?如果是这样,它们的模式是什么?

暂时未发现

        问题10: 使用Plot type平行坐标图类型 Parallel Coordinates 提出更多描述数据集的观察。

1.2 决策树Decision Tree

        为了使用决策树设置一个分类原型,请按下图所示配置过程。选择必要的操作符如下:

        在 Operators子窗口中查找 Split,然后选择Split Data这个operator:Blending → Examples → Sampling → Split Data

        查找 Decision 并选择 决策树Decision Tree 运算符:Modeling → Predictive →Trees Decision Tree
        查找Apply并选择Apply Model操作符Scoring → Confidences →Apply Model
        查找 Performance ,选择 Performance (Binominal Classification) 操作符:Validation → Performance → Predictive → % Performance (Binominal Classification)

        在Split Data操作符的Parameters参数子窗口中,将抽样类型sampling type保留为自动automatic,然后点击“分区”partitions label标签右侧的“编辑枚举Edit Enumeration”按钮。在“编辑参数列表:分区Edit Parameter List: partitions”窗口的ratio标签下添加两行,值分别为0.7和0.3(分别在不同行中,并按此顺序)。

问题11: 分割数据操作符的使用目的是什么,0.7和0.3的值分别是什么意思?

分割数据操作符通常用于将数据集分割成训练集和测试集,
这对于机器学习和数据科学项目中的模型训练和评估是非常重要的。
在这里,0.7和0.3的值分别表示数据集将被分割成70%的训练数据
和30%的测试数据。这样的分割比例有助于确保模型在足够大的数据
集上训练,同时留有足够的数据来测试模型的性能,以避免过拟合或
欠拟合。

问题12: 两个分割数据操作符输出端口的内容是什么?

分割数据操作符的两个输出端口通常包含以下内容:一个端口输出训练数据集,
另一个端口输出测试数据集。具体来说,按照0.7和0.3的分割比例,如果原
始数据集包含全部的数据,那么第一个输出端口将包含70%的数据作为训练
集,第二个输出端口将包含剩余的30%数据作为测试集。

问题13: criterion参数的五个可能值的目的是什么?

        Decision Tree(决策树)操作符的criterion参数指的是在
构造决策树时用于分割节点的准则。这些选项通常包括度量数据分割质量的
不同方法,如信息增益、增益比、基尼不纯度等。每个选项代表一种不同的
策略,用于评估分割的好坏,进而决定在构建树的过程中如何选择分割点。
不同的criterion可能会影响模型的性能和复杂度,因此选择最适合特定
数据集和问题的准则是很重要的。

问题14:描述Apply Model 操作符的两个输入inputs

问题15:Apply Model 操作符的两个输出outputs内容是什么?

问题16 :保持Performance 操作符的默认参数parameters,此操作符的目的是什么?

        按照以下方式配置Decision Tree操作符:准则使用增益比 criterion > gain ratio;maximal depth > 20; confidence > 0.25;minimal gain > 0.1;保留剪枝和预剪枝选项apply pruning apply prepruning 被勾选;最小叶节点大小大于2minimal leaf size > 2。运行配置的过程原型。在Results 结果视图中查看显示的Tree (Decision Tree) 标签页。将鼠标悬停在叶子上几秒钟将显示每个元素的补充信息。

问题17:构成结果决策树的节点nodes和叶子 leafs有多少个?

7个节点,9个叶

        问题18:在树中可以识别出多少个“纯”叶子pure leaves (即只包含一个类的记录)?这些“纯”叶子识别出了哪个类?

5个纯净叶

        问题19:在这个决策过程中最重要的属性是什么,为什么?

Income1,作为非叶节点出现次数最多

        问题20:决策树是否有未考虑的属性?如果有,是哪些?

除了Income1,Credit_Histor,Amount,Married其他都没有出现在决策树中

        问题21:解释 Tree (Decision Tree) 标签页的描述面板显示的内容。

描述了树的执行逻辑

Tree
Credit_History = 0
|   Income1 > 27499: Y {Y=1, N=1}
|   Income1 ≤ 27499: N {Y=3, N=60}
Credit_History = 1: Y {Y=267, N=66}
Credit_History = ?
|   Amount > 127.500
|   |   Married = No: N {Y=0, N=2}
|   |   Married = Yes
|   |   |   Income1 > 6081.500: Y {Y=3, N=0}
|   |   |   Income1 ≤ 6081.500
|   |   |   |   Income1 > 3663
|   |   |   |   |   Income1 > 5132: Y {Y=2, N=2}
|   |   |   |   |   Income1 ≤ 5132: N {Y=0, N=2}
|   |   |   |   Income1 ≤ 3663: Y {Y=2, N=0}
|   Amount ≤ 127.500: Y {Y=17, N=1}

        问题22: 在什么条件下获得树的最短决策路径,结果是什么?

在Credit_Histor为1的时候

        问题23:你会信任这个决策吗?为什么?

不信任,因为未处理缺失值,而且参考的因素过于少

        查看结果 Results视图中的 % Performance 标签页的 % Performance Vector (Performance) tab 显示的准确率值 accuracy 。

        问题24:准确率accuracy值表达了什么?

78.38%

(121+24)/(121+34+6+24)=78.8%


 

        问题25:在所有相关记录中,哪个类别的正确检索记录的相对数量(召回率) (recall) 较低?

        召回率(Recall):在所有相关记录中,正确检索到的记录的比例。用公式表示为:召回率 = (正确检索到的记录数)/(所有相关记录数)。如果某个类别的召回率较低,这意味着系统在检索这个类别的相关信息时遗漏了许多相关记录。这可能是因为模型对该类别的识别能力不足,或者该类别的记录较难以区分。

        对于哪个类别的召回率低,这取决于具体的数据集和模型性能。如果一个类别的相关记录经常被忽略,那么该类别的召回率就低。这意味着对于这个类别,模型没有很好地捕捉到所有相关的记录,可能导致信息的遗漏。

41.38%
24/(34+24)

        问题26:两个类别的所有检索记录中正确检索记录的相对数量(精确度) (precision)值是否有显著差异?这意味着什么?

        精确率(Precision):在所有检索到的记录中,正确检索的记录的比例。用公式表示为:精确率 = (正确检索到的记录数)/(所有检索到的记录数)。如果两个类别的精确率值存在显著差异,这表明模型在识别这两个类别的准确性上存在差距。对于精确率较高的类别,意味着检索到的记录中,相关记录的比例较高,模型对这个类别的识别较为准确。相反,精确率较低的类别意味着模型在检索时产生了较多的不相关记录,准确性较低。

        这个差异说明了模型对不同类别的识别能力不均衡。在实践中,可能需要通过模型调整、数据平衡或其他技术手段来改善特定类别的精确率,从而提高模型整体的性能。

        综上所述,召回率低意味着许多相关记录被遗漏,影响了信息的完整性。精确率的显著差异意味着模型在不同类别的识别准确性上不均衡,可能需要针对性的改进措施。

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

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

相关文章

文刻ai工具跟绘唐AI工具有什么区别

文刻AI工具和绘唐AI工具是两种不同的人工智能工具。点击查看 文刻AI工具是一种自然语言处理工具,可以用于生成、修改和校对文本。它可以帮助用户更高效地写作,提供词汇和语法建议,检查拼写和语法错误,并提供自动补全和自动纠正功…

网络安全难学吗?2024该怎么系统学习网络安全?

学习网络安全需要循序渐进,由浅入深。很多人对网络安全进行了解以后,就打算开始学习网络安全,但是又不知道怎么去系统的学习。 网络安全本身的知识不难,但需要学习的内容有很多,其中包括Linux、数据库、渗透测试、等保…

ue5肉鸽游戏视频教程学习记录

先在虚幻商城下载免费的paperzd插件,并启用。 导入资源后,先通过应用paper2d纹理资源,将去掉导入ue时产生的边缘模糊,再点击下面的创建瓦片集, 打开瓦片集,发现选中不对, 改变瓦片大小为16*…

64. UE5 RPG 创建新的双手攻击怪物

在上一篇文章中,我们实现了新的功能,现在可以创建多个普通攻击动画,并且可以根据你所使用的普通攻击动画,设置不同的攻击位置。比如,你使用武器,那么攻击位置需要从武器上获取,如果你没有持有武…

保存图片奇怪的bug

今天发现一个奇怪的bug 这个的dpi是100de ,但是我取完切片之后,发现这个结果就变了

温度传感器十大品牌

温度传感器品牌排行榜-十大热电偶品牌-热敏电阻品牌排行-Maigoo品牌榜

西门子学习笔记11 - PTO脉冲指令的使用

1、使用指令前的设置 1、打开一个脉冲发生器,并启用 2、选择使用PTO(脉冲A和方向B) 3、硬件设置输出 4、这样前期的准备工作就完成了 2、指令的使用 1、添加指令CTRL_PTO 2、配置如下 3、方向控制程序如下 4、最后进行测试即可

专业的数字雕刻和绘图软件Pixologic ZBrush 2024.0.4

Pixology ZBrush是一款专业的数字雕刻和绘图软件,适用于Windows、Linux和Mac OS。 皮克斯学ZBrush允许您使用可定制的画笔实时塑造、纹理和绘制虚拟粘土,从而提供即时反馈。当您使用皮克斯学ZBrush时,您可以访问世界各地艺术家使用的相同工具。 下面是一些特点和好处的像素…

【设计模式】结构型设计模式之 从IO流设计思想来看装饰器模式

介绍 装饰器模式也称为包装模式(Wrapper Pattern) 是指在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能),属于结构型模式。 装饰器模式的核心是功能扩展,使用装饰器模式可以透…

Java | Leetcode Java题解之第142题环形链表II

题目: 题解: public class Solution {public ListNode detectCycle(ListNode head) {if (head null) {return null;}ListNode slow head, fast head;while (fast ! null) {slow slow.next;if (fast.next ! null) {fast fast.next.next;} else {ret…

Qt qtpropertybrowser使用实例(1)

属性界面实例&#xff1a; 代码如下&#xff1a; #include <QDate> #include <QLocale> #include "qtpropertymanager.h" #include "qtvariantproperty.h" #include "qttreepropertybrowser.h" int main(int argc, char *argv[]) {…

LLM大语言模型(十六):最新开源 GLM4-9B 本地部署,带不动,根本带不动

目录 前言 本机环境 GLM4代码库下载 模型文件下载&#xff1a;文件很大 修改为从本地模型文件启动 启动模型cli对话demo 慢&#xff0c;巨慢&#xff0c;一个字一个字的蹦 GPU资源使用情况 GLM3资源使用情况对比 前言 GLM-4-9B 是智谱 AI 推出的最新一代预训练模型 …

VUE + nodejs实战

BVDN搭建 D: cd nodejs ::npm install bootstrap ::npm install jquery ::npm install popper.js ::npm install vue npm install vue-router pauseapp.html <!DOCTYPE html> <!DOCTYPE html> <html> <head><!--bootstrap--><link rel"…

Understanding Diffusion Objectives as the ELBO with Simple Data Augmentation

Understanding Diffusion Objectives as the ELBO with Simple Data Augmentation 引言 本文前作 VDM 已经推导出了扩散模型可以将优化 ELBO 作为目标函数。然而现在 FID &#xff08;也就是感知质量&#xff09;最好的模型还是用的其他目标函数&#xff08;如 DDPM 的噪声预…

Mysql使用中的性能优化——索引数对插入操作性能的影响

表的索引可以给数据检索提升效率&#xff0c;但是也给表的增删改操作带来代价。本文我们将关注&#xff0c;索引数量对INSERT操作的影响。 结论 索引数的新增会造成INSERT操作效率下降&#xff0c;约每增一个索引会降低10%效率。 实验数据 可以看到0个索引的效率是7个索引效…

【Linux】 安装rz 和sz

在 Linux 系统中&#xff0c;rz 和 sz 是两个用于在本地计算机与远程计算机之间安全传输文件的命令行工具。它们是 lrzsz 包的一部分&#xff0c;通常用于通过 SSH 连接传输文件。 打开终端&#xff1a; 首先&#xff0c;打开你的 CentOS 机器上的终端。 执行sz 提示下面信息…

【数据结构(邓俊辉)学习笔记】图05——优先级搜索

文章目录 0. 概述1. BAG2. ADT 0. 概述 学习下优先级搜索 1. BAG 优先级搜索是非常广义的&#xff0c;概况来说&#xff0c;无论DFS 还是BFS从逻辑上来都属于这种搜索。 回忆下什么叫搜索或者遍历&#xff0c;对于像图这种数据结构里的元素逐一的没有重复的也没有遗漏的对它们…

开发uniapp 小程序时遇到的问题

1、【微信开发者工具报错】routeDone with a webviewId XXX that is not the current page 解决方案: 在app.json 中添加 “lazyCodeLoading”: “requiredComponents” uniapp的话加到manifest.json下的mp-weixin 外部链接文章&#xff1a;解决方案文章1 解决方案文章2 &qu…

vs2019 c++20规范 全局函数 ref 及模板类 reference_wrapper<_Ty> 的源码分析

这是个引用&#xff0c;可以包裹一个对象&#xff0c;相当于引用该对象&#xff0c;而不是在作为函数形参时产生值传递。因为模板 reference_wrapper<_Ty> 其实是封装了该对象的地址。下面以图示形式给出其重要的成员函数。模板其实都差不多&#xff0c;跟人也一样&#…

使用Redis的优势以及会引发的问题

优势 ①使用redis代表着高性能还有高并发&#xff0c;高性能很好理解&#xff0c;redis会缓存我们访问的数据。他是基于内存的&#xff0c;第一次访问数据库我们可能需要800ms&#xff0c;但是访问后如果使用redis进行缓存&#xff0c;第二次乃至后面访问相同的数据就只需要去…