决策树在金融领域的应用(附链接)算法子集拟合结点

决策树(Decision Tree)是一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。决策树算法容易理解,适用各种数据,在解决各种问题时都有良好表现,尤其是以树模型为核心的各种集成算法,在各个行业和领域都有广泛的应用。我们来简单了解一下决策树是如何工作的。

决策树算法的本质是一种图结构,只需要问一系列问题就可以对数据进行分类了。如图1所示决策树算法算出了下面的这棵决策树:

图1 决策树算法示例

可以看出,在这个决策过程中,我们一直在对记录的特征进行提问。最初的问题所在的地方叫做根节点,在得到结论前的每一个问题都是中间节点,而得到的每一个结论都叫做叶子节点。

决策树算法的核心是要解决两个问题:

(1)如何从数据表中找出最佳节点和最佳分枝?(即怎么构造决策树)

(2)如何让决策树停止生长,防止过拟合?(即如何剪枝)

几乎所有决策树有关的模型调整方法,都围绕这两个问题展开。

构造原理——如何构造一棵决策树?

为了要将表格转化为一棵树,决策树需要找出最佳节点和最佳的分枝方法,对分类树来说,衡量这个“最佳”的指标叫做“不纯度”。通常来说,不纯度越低,决策树对训练集的拟合越好。现在使用的决策树算法在分枝方法上的核心大多是围绕在对某个不纯度相关指标的最优化上。

不纯度基于节点来计算,树中的每个节点都会有一个不纯度,并且子节点的不纯度一定是低于父节点的,也就是说,在同一棵决策树上,叶子节点的不纯度一定是最低的。

构造就是生成一棵完整的决策树。简单来说,构造的过程就是选择什么属性作为节点的过程,那么在构造过程中,会存在以下几种节点:

这里,先介绍信息熵的概念。

在构造决策树的时候,会基于纯度来构建。而经典的“不纯度”的指标有三种,分别是信息增益(ID3算法)、信息增益率(C4.5算法)以及基尼指数(Cart算法)。这里我们只介绍常用的信息增益算法。

1)信息增益(ID3算法)

信息增益指的就是划分可以带来纯度的提高,信息熵的下降。它的计算公式,是父亲节点的信息熵减去所有子节点的信息熵。在计算的过程中,我们会计算每个子节点的归一化信息熵,即按照每个子节点在父节点中出现的概率,来计算这些子节点的信息熵。所以信息增益的公式可以表示为:

其中是父亲节点,是子节点,中的作为节点的属性选择。

ID3的算法规则相对简单,可解释性强。同样也存在缺陷,比如我们会发现ID3算法倾向于选择取值比较多的属性。这种缺陷不是每次都会发生,只是存在一定的概率。在大部分情况下,ID3 都能生成不错的决策树分类。针对可能发生的缺陷,后人提出了新的算法进行改进。

例题:请对以下数据建立决策树进行分析,判断一个案例“下雨、热、湿度、正常、弱风“,是否可以打网球?

表1 建立决策树分析数据表

该数据集包含7个训练样本,其中正例占4/7,其中反例占3/7,计算得到根结点的信息熵为

(1)属性“Outlook”,其对应的3个数据子集分别为

D1(Outlook=Sunny),

D2(Outlook=Rain),

D3(Outlook=Overcast)

子集D1有2个样例,其中正例占0,反例占1,D2、D3同理,

子集D2有3个样例,其中正例占2/3,反例占1/3,

子集D3有2个样例,其中正例占1,反例占0。

3个结点的信息熵为:

则属性“Outlook”的信息增益为

(2)属性“Temperature”,其对应的3个数据子集分别为

D1(Temperature=Hot),

D2(Temperature=Mild),

D3(Temperature=Cool)

子集D1有3个样例,其中正例占1/3,反例占2/3,D2、D3同理,

子集D2有1个样例,其中正例占1,反例占0,

子集D3有3个样例,其中正例占2/3,反例占1/3。

3个结点的信息熵为:

则属性“Temperature”的信息增益为

(3)属性“Humidity”,其对应的2个数据子集分别为:

D1(Humidity=High), D2(Humidity=Normal)

子集D1有4个样例,其中正例占1/2,反例占1/2,D2、D3同理,

子集D2有3个样例,其中正例占2/3,反例占1/3。

2个结点的信息熵为:

则属性“Humidity”的信息增益为

(4)属性“Wind”,其对应的2个数据子集分别为

D1(Wind=Strong), D2(Wind=Weak)

子集D1有3个样例,其中正例占1/3,反例占2/3,D2、D3同理,

子集D2有4个样例,其中正例占3/4,反例占1/4。

2个结点的信息熵为:

则属性“Wind”的信息增益为

显然,属性Outlook的信息增益最大,其被选为划分属性。

2)信息熵的属性

由于Sunny全纯,Overcast全纯,但Rain有Yes也有No。

该数据集包含3个训练样本,其中正例占,其中反例占,计算得到根结点的信息熵为

(1)属性“Temperature”,其对应的3个数据子集分别为

D1(Temperature=Hot),

D2(Temperature=Mild),

D3(Temperature=Cool)

子集D1有0个样例,其中正例占0,反例占0,D2、D3同理,

子集D2有1个样例,其中正例占1,反例占0,

子集D3有2个样例,其中正例占1/2,反例占1/2。

3个结点的信息熵为:

则属性“Temperature”的信息增益为

(2)属性“Humidity”,其对应的2个数据子集分别为:

D1(Humidity=High), D2(Humidity=Normal)

子集D1有1个样例,其中正例占1,反例占0,D2、D3同理,

子集D2有2个样例,其中正例占1/2,反例占1/2。

2个结点的信息熵为:

则属性“Humidity”的信息增益为

(3)属性“Wind”,其对应的2个数据子集分别为:

D1(Wind=Strong), D2(Wind=Weak)

子集D1有1个样例,其中正例占0,反例占1,D2、D3同理,

子集D2有2个样例,其中正例占1,反例占0。

2个结点的信息熵为:

则属性“Wind”的信息增益为

显然,属性wind的信息增益最大,其被选为下层划分属性。

但由于strong纯为No,weak纯为Yes

因此分支结束。

最终得到的决策树如图2所示:

图2 决策树

因此,一个案例“下雨、热、湿度、正常、弱风“,可以打网球。

剪枝原理——如何剪枝?

剪枝就是给决策树瘦身,这一步想实现的目标就是,不需要太多的判断,同样可以得到不错的结果。之所以这么做,是为了防止“过拟合”(Overfitting)现象的发生。

剪枝的两种方法:

1)预剪枝

在决策树构造时就进行剪枝。方法是,在构造的过程中对节点进行评估,如果对某个节点进行划分,在验证集中不能带来准确性的提升,那么对这个节点进行划分就没有意义,这时就会把当前节点作为叶节点,不对其进行划分。

2)后剪枝

在生成决策树之后再进行剪枝。通常会从决策树的叶节点开始,逐层向上对每个节点进行评估。如果剪掉这个节点子树,与保留该节点子树在分类准确性上差别不大,或者剪掉该节点子树,能在验证集中带来准确性的提升,那么就可以把该节点子树进行剪枝。方法是:用这个节点子树的叶子节点来替代该节点,类标记为这个节点子树中最频繁的那个类。

决策树的优点

(1)易于理解和解释,因为树木可以画出来被看见。

(2)需要很少的数据准备。其他很多算法通常都需要数据规范化,需要创建虚拟变量并删除空值等。

(3)使用树的成本(比如说,在预测数据的时候)是用于训练树的数据点的数量的对数,相比于其他算法,这是一个很低的成本。

(4)能够同时处理数字和分类数据,既可以做回归又可以做分类。其他技术通常专门用于分析仅具有一种变量类型的数据集。

(5)能够处理多输出问题,即含有多个标签的问题,注意与一个标签中含有多种标签分类的问题区别开。

(6)是一个白盒模型,结果很容易能够被解释。如果在模型中可以观察到给定的情况,则可以通过布尔逻辑轻松解释条件。相反,在黑盒模型中(例如,在人工神经网络中),结果可能更难以解释。

(7)可以使用统计测试验证模型,这让我们可以考虑模型的可靠性。

(8)即使其假设在某种程度上违反了生成数据的真实模型,也能够表现良好。

决策树的缺点

(1)决策树学习者可能创建过于复杂的树,这些树不能很好地推广数据。这称为过度拟合。修剪,设置叶节点所需的最小样本数或设置树的最大深度等机制是避免此问题所必需的,而这些参数的整合和调整对初学者来说会比较晦涩。

(2)决策树可能不稳定,数据中微小的变化可能导致生成完全不同的树,这个问题需要通过集成算法来解决。

(3)决策树的学习是基于贪婪算法,它靠优化局部最优(每个节点的最优)来试图达到整体的最优,但这种做法不能保证返回全局最优决策树。这个问题也可以由集成算法来解决,在随机森林中,特征和样本会在分枝过程中被随机采样。

(4)有些概念很难学习,因为决策树不容易表达它们,例如XOR,奇偶校验或多路复用器问题。

(5)如果标签中的某些类占主导地位,决策树学习者会创建偏向主导类的树。因此,建议在拟合决策树之前平衡数据集。

决策树在金融领域的应用

比特币匿名性的特征为非法活动的发展提供了有利的工具。洗钱、勒索、恐怖融资等非法交易隐匿于正常交易之中,难以发觉。现今未有研究对恐怖融资相关交易进行预测。关于反洗钱的预备知识梳理,我们比特币恐怖融资的交易行为特点有了初步的了解,恐怖融资的招募地址多为临时中转地址,转移资金方面收到一笔资金就转移一笔,在融资来源与流向实体上,大部分实体为未知匿名实体,且存在一些发生过滥用行为的交易所和服务商实体,说明非法活动之间是存在关联的,恐怖组织会易于采用已知的滥用实体进行资金的转移,交易模式多表现为资金的分散与汇聚,符合洗钱的理念。

由第二章相关研究分析可知,现并未有研究涉及比特币恐怖融资交易预测,恐怖组织创建并利用比特币地址进行融资活动,行为特征将会从地址的交易数据中表现出来,对恐怖融资地址预测在理论和现实监管上都有重要意义。本章节参照以往非法交易识别文献分析以及当前融资交易行为的分析,选取了交易强度特征、交易频度特征这两个基础交易特征,并进一步添加关联地址特征,获取关联地址的实体标签数据用于恐怖融资地址预测。

我们从Kaggle上选取了区块链情报公司Elliptic公开发布的比特币交易网络数据集。其中在这些交易数据中,节点表示比特币交易中的实体,边表示比特币交易实体间的交易关系和方式,该交易网络数据集一共分为三个数据表,如下表2所示各个表的数据说明。

表2 三张数据表的说明

基于已经处理好的交易多维特征数据,我们构建了有监督学习的比特币交易实体分类模型。我们筛选掉了原始数据集中标签为“unknown”的交易实体数据,对剩余的交易实体节点进行建模和训练。交易实体的166个特征分为两部分,其中前94个交易基础特征是从“feat0”到“feat93”来命名,而名称为“neigh_feat0”到“neigh_feat71”是72个从交易关联实体地址信息提取的特征。

利用前94个交易基础特征构建第一个实体分类模型,同时为了验证关联节点对于其交易实体类别是否存在影响,我们把所有166个关联实体交易特征构建第二个实体分类模型。在构建模型进行训练之前,需要对数据进行处理和清洗:

(1)划分训练集和测试集

首先利用sklearn包的train_test_split()函数得到比例为7:3的训练集和测试集。

(2)样本不平衡的处理

由探索性分析结果可知,Elliptic提供的案例集中不同“class”的数据集存在较明显的样本不平衡的问题。如果这样的数据应用在class标签数量不平衡问题的模型上,那么自然而然地,模型的聚焦点会更多地放在标签数量较多的合法交易实体上,这样的结果是我们意料之外和不想得到的。

对样本不平衡问题进行处理,通过查找相关文献,我们可以通过增加稀有样本数量的方法来平衡数据集。经试验表明,我们对已经切分好的训练集数据进行过采样得到合法非法比例为1:1的总共5万多条交易数据。

由上述分析可知,将过采样之后得到的训练集用于Logistic Regressoin、MLP、Random Forest和XGBoost的建模,从而得到第一个实体分类模型stata_94构建前的数据信息如表3所示,。同理,我们进行第二个实体分类模型stata_166构建前的数据信息,如表4所示。

表3 第一个实体分类模型stata_94建立的各组数据及其维度信息

表4 第二个实体分类模型stata_166建立的各组数据及其维度信息

(3)特征筛选和标准化处理

本次特征选择采取方差过滤的方法进行特征筛选。方差过滤是一个通过特征本身的方差来过滤特征的方法。例如,如果一个特征本身的方差非常小,那就意味着这个特征在样本中基本上没有差异。也许特征中的大部分值是相同的,甚至整个特征的值是相同的,那么这个特征对样本的判别没有影响。因此,我们需要对方差为0的特征予以删除。

结论

通过实验可以发现,所有特征的方差值都大于0,为了覆盖更多的特征维度和信息,我们选择保留所有的特征。之后,需要对筛选出来的训练集特征进行标准化处理,从而让模型的效果被影响最小。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

THE END
0.晶振的构造及工作原理本节内容先写这么多吧,主要是查阅资料,总结了下晶振构造相关的,对于硬件设计来说,用处不是特别大,不过了解下也没坏处。 至于开篇提的几个问题,本节是一个问题也没回答,也不着急,后面总会说清楚的,我希望是慢慢从0开始,构建属于自己的知识体系,这样无论遇到什么问题,见过的,没见过的,总能有分析问题的思路。jvzquC41yy}/gnuy0eun0ls1|j{bpufp14:6;<;0jvsm
1.《建筑构造原理与设计(第5版)》(樊振和著)简介书评当当网图书频道在线销售正版《建筑构造原理与设计(第5版)》,作者:樊振和 著,出版社:天津大学出版社。最新《建筑构造原理与设计(第5版)》简介、书评、试读、价格、图片等相关信息,尽在DangDang.com,网购《建筑构造原理与设计(第5版)》,就上当当网。jvzq<84rtqjve}3fcpmecwl0eqs04>7533730qyon
2.汽车构造图解及原理(高清晰)汽车构造图解及原理(高清晰) 汽车的总体构造基本上由四部分组成:发动机、底盘、车身、电器。 汽车结构视图构造图解 ▼ 汽车底视图构造图解 ▼ 汽车总成拆分图构造图解 ▼ 发动机是汽车的动力装置,其作用是使进入其中的燃料经过燃烧而变成热能,并转化为动能jvzquC41yy}/{xtlkc4dqv4cum55/:6:88;48=9::9?87B>590nuou
3.刘亚辉:抓住汽车构造的基本原理,厘清科学创新的历史过程大家好,我是车辆与运载学院的刘亚辉,我承担的是本科生的 “汽车构造(2)”课程,也就是汽车底盘构造,以下是我的同行锦囊: 刘亚辉老师 这门课是一个专业核心课,也是车辆工程专业课组中的入门课,着重于让同学们掌握主流汽车底盘各系统和主要部件的功用、基本结构和工作原理等。这门课的特点是知识点繁多、理论难度较jvzquC41yy}/v|npij{b0niw0et0kwkq13<:68<2259/j}r
4.给煤机构造与原理讲解.ppt给煤机构造与原理讲解 我厂采用的给煤机是由沈阳华电电站工程有限公司生产的HD-BSC26型称重式计量给煤机,这种HD-BSC26型称重式计量给煤机是用于燃煤火力发电厂锅炉制粉系统的主要给煤设备。能够实现连续、均匀给煤,并在给煤过程中进行准确的称重计算,而且能够根据锅炉燃烧控制系统需要,自动调 节给煤量,使实际给jvzquC41oc~/dxtm33>/exr1jvsm1;5391633?4;42>12;>0ujzn
5.JavaScript构造函数举例详解javascript技巧构造函数的原理(new之后发生了什么) 构造函数之所以能构造出对象,其实JS帮助我们做了很多骚操作。你以为new之后直接执行函数体代码,其实并不是,事实比我们看到了多了四步 1 自从用new调用函数后,JS引擎就会在内存中创建一个空对象{} 1 const newObj = {}; 2 新对象的__proto__属性指向构造函数的原型对象 (通jvzquC41yy}/lk:30pku1jwvkerf1;=2397/j}r
6.数据结构ZKW线段树详解本文详细介绍了ZKW线段树,一种由清华大学张昆玮提出的非递归实现的线段树结构,以其简洁的代码和高效率著称,支持可持久化。内容包括线段树的基础知识、ZKW线段树的构造原理、基本操作(建树、查询、修改)以及区间查询和修改的实现。此外,还提及了Lazy标记的实现思路,适用于区间修改和查询的优化。 数据结构-ZKW线段树详解 😊 | PjvzquC41dnuh0lxfp0tfv8~cpykjsr6976?9;B831cxuklqg1fkucrqu13787@:39:
7.X射线衍射仪基本原理构造及XRD用于合金结构确定新闻X射线衍射仪基本原理、构造及XRD用于合金结构确定,上海研润光学显微镜是金相显微镜的维护和生产制造单位,上海研润光学显微镜厂提供 www.yrmade.comjvzquC41yy}/{{rcfg4dqv4pgyy`cuq1427829<;344ivvq
8.2019中级安全工程师《建筑施工安全》金亮精讲班考点:起重机械安全技术3.塔式起重机的基本构造及原理 金属结构、工作机构、驱动控制系统和安全防护装置四个部分。 速记:金工驱动安全 例:下列关于塔式起重机的基本构造及原理的描述中正确的是( )。 A.塔式起重机能靠近建筑物,其幅度利用率可达全幅度的90% B.塔式起重机的主参数是最大额定起重量 jvzquC41yy}/4<80eqs0cz4ou|j0lƒ4423?2286233623;:550nuou