会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 比特币地址 / 一种基于改进随机森林的比特币地址分类方法

一种基于改进随机森林的比特币地址分类方法

申请号 CN202010560006.X 申请日 2020-06-18 公开(公告)号 CN111754345B 公开(公告)日 2022-03-18
申请人 天津理工大学; 发明人 王劲松; 陶峰; 张洪玮; 赵泽宁; 石凯;
摘要 一种基于改进随机森林的比特币地址分类方法。其包括构建特征集、构成数据集、获得带有标签的样本集、初始化学习器的参数、迭代学习器及获取关键特征等步骤。本发明从比特币市场监管角度将判断用户是否参与非法交易问题转变成比特币地址分类问题,有助于完善市场监管;直接通过区块链历史交易记录获取样本集,这样就大大降低了数据的收集难度;能够以84%左右的准确率对比特币地址进行分类,仅仅只需要很少的统计特征;不仅能很好的对地址进行分类,同时对构建的大量统计特征进行去冗余,当学习器完成最终的训练之后,就能获得最终需要提取的关键特征,这对于一个需要进行识别的地址而言,既减少了数据收集时间,也降低了地址分类的时间开销。
权利要求

1.一种基于改进随机森林的比特币地址分类方法,其特征在于:所述的比特币地址分类方法包括按顺序进行的下列步骤:S1:从区块链的历史交易记录中提取地址原始特征并添加到现有机器学习分类方法所使用的特征集中,构建一个更大的特征集;

S2:解析原始区块数据而获得比特币地址,并从构建的特征集中提取出与地址相关的统计特征信息而构成数据集,所获得数据集的大小与操作者选取的时间段以及在这个时间段交易数量的多少有关;

S3:利用爬虫技术,为上述数据集打上标签,从而获得带有标签的样本集,并根据需要将地址分为多个不同的类别;

S4:初始化学习器的参数,包括随机森林参数基分类器数量L、利用特征分裂节点时候选特征子集的数量l,以及算法准确率变化阈值δ;

S5:初始化学习器中的重要特征集 不重要特征集 特征向量 和算法准确率集合其中重要特征集 用于保留需要提取的关键特征, 用于暂存当前未被标记为重要的特征,特征向量 表示每个样本中的属性集合,算法准确率集合 用于记录每一轮算法的准确率;

S6:用上述带有标签的样本集迭代上述初始化后的学习器,直到算法准确率变化范围超过算法准确率变化阈值δ;

S7:获取重要特征集 中保留的特征,作为需要提取的关键特征;

S8:在实际应用中,对于任一需要分类的地址,只需从比特币交易记录中提取出少量的关键特征,然后将这些关键特征输入到上述已训练好的学习器中,学习器的输出即为比特币地址的交易类型分类;

在S6中,所述的用上述带有标签的样本集迭代上述初始化后的学习器,直到算法准确率变化范围超过算法准确率变化阈值δ的具体方法如下:S601:利用上述带有标签的样本集迭代训练学习器,并将该轮训练时学习器的分类准确率加入到算法准确率集合 中;

S602:计算在该轮训练中每一个特征j的全局权重w(j);

S603:将所有特征按照权重大小进行降序排列,并将前 个特征加入到重要特征集中,一旦特征出现在重要特征集 中,其将永远不会被删除直至算法结束,将其余特征加入到不重要特征集合 中;

S604:更新重要特征集 不重要特征集 和特征向量 由此完成特征的筛选;

S605:判断算法准确率集合 的极差是否小于算法准确率变化阈值δ,如果成立,则执行S606,否则保留重要特征集 中的特征并作为筛选出的关键特征;

S606:执行S601,利用更新后的特征向量 继续迭代训练学习器直至收敛;

在S602中,所述的计算在该轮训练中每一个特征j的全局权重w(j)的具体方法如下:S60201:每一个基分类器在分裂节点i的时候,先根据以下公式计算分裂节点的信息熵:

其中P(c)表示在分裂节点地址类别为c的概率;

S60202:根据上述信息熵计算分裂节点i的特征候选子集中每一个特征j的分裂评分,计算公式如下:

其中V表示按照特征j分裂节点后子节点的数量,节点的分裂按分裂评分 最高的特征进行分裂; 表示分裂节点i的特征候选子集中每一个特征j的分裂评分;

S60203:利用上述分裂评分计算每个特征j在每一个基分类器ζ中的局部权重:其中N_node表示基分类器ζ中非叶子节点的数量;

S60204:利用袋外数据算出每一个基分类器ζ的分类准确率,进而按下式计算出每一个基分类器ζ的权重:

其中accζ表示基分类器ζ的分类准确率;

S60205:基于上述局部权重和基分类器的权重计算出每个特征j在整个随机森林中的全局权重:

在S604中,所述的更新重要特征集 不重要特征集 和特征向量 由此完成特征的筛选的具体方法如下:

S60401:计算不重要特征集 中特征的权重平均数μ和标准方差σ;

S60402:将不重要特征集 中权重小于μ‑3σ的特征直接删除,同时对特征向量 进行更新;

S60403:如果不重要特征集 中所有权重均大于μ‑3σ,则直接删除权重最小的一个特征,同时对特征向量 进行更新;

S60404:将更新后的不重要特征集 中权重大于或等于重要特征集 中最小权重的特征从不重要特征集 中转移到重要特征集 中,由此完成重要特征集 和不重要特征集的更新。

2.根据权利要求1所述的基于改进随机森林的比特币地址分类方法,其特征在于:在S1中,所述的从区块链的历史交易记录中提取地址原始特征并添加到现有机器学习分类方法所使用的特征集中,构建一个更大的特征集的具体方法如下:S101:设定如下用于提取地址原始特征的规则:地址存活时间单位为天,存活时间不足

24小时视为1天,其余情况下存活天数向下取整;对于存在自找零交易,即给定地址同时出现在交易的输入和输出中,将其视为对应于该地址的输出交易;为了保留原始信息同时降低提取特征的困难,将比特币交易的数量单位设定为BTC;

S102:按照上述规则,从区块链的历史交易记录中提取包括截至目前为止地址存活时间在内的地址原始特征;

S103:对上述地址原始特征进行线性组合。

说明书全文

一种基于改进随机森林的比特币地址分类方法

技术领域

[0001] 本发明属于数据挖掘和机器学习技术领域,特别是涉及一种基于改进随机森林的比特币地址分类方法。

背景技术

[0002] 随着数字货币市场的不断发展,比特币作为数字货币中的典型代表,应用越来越广泛。比特币地址是用户参与服务的唯一身份标识,但是由于比特币本身具有匿名性特点,
这也为诸如洗钱等非法活动提供了便利。在这种情况下,为了更好地了解比特币的用途,通
过比特币地址来说明用户交易行为显得至关重要,但比特币的匿名性却为此带来了挑战,
因此如何在系统中快速对一个比特币地址进行分类,即利用较少的统计特征,从而判断该
地址是被非法用户所有还是属于正常交易地址,是解决比特币市场难于监管的一个重要方
法。
[0003] 目前,比特币地址的分类方法包括以下几种:
[0004] 交易图分析法:目前最常用的比特币地址分类方法就是交易图分析法,常见的一种构图方法是将交易视为图的点集,图的边表示两笔交易间经过某一地址所流通的比特币
数量,利用历史交易记录,从而能够构建出整个交易图,从交易图中能够提取比特币地址的
一系列统计特征,利用常用的机器学习分类算法就能以较高的准确率对地址进行分类,一
般情况下交易图越完善,即越接近实际所有的交易,分类的准确率会越高,通常准确率都在
90%以上,实际上不同的研究者出于不同的目的会选择不一样的构图方式,但无疑最终都
会形成一张超大的图。
[0005] 启发式地址聚类法:启发式地址聚类在一定程度上也能够识别一个比特币地址,该方法基于一个经典的假设:在同一笔交易中,所有的输入地址都是由一个用户所掌握的。
由于比特币系统协议会在交易的过程中自动生成找零地址,用于接收交易中的找零资金,
因此进一步的地址聚类方法会将找零地址与输入地址折叠成一个更大的交易实体,只要其
中的一个地址类别暴露就可以对该交易实体所有的地址进行识别。
[0006] 机器学习分类方法:目前一部分研究人员着力于直接从交易历史记录中提取相关地址的统计特征,区别于交易图分析法大大减少了构图工作量,利用经典的机器学习分类
方法也能够以较高的准确率对地址进行识别,通常准确率在80%以上。
[0007] 但现有的交易图分析法收集数据方法过于繁复,需要先利用比特币历史交易记录根据自己定义的构图规则形成一张图,再从中提取特征,往往不同的研究者构图的方法各
不相同,但无疑最终都会形成一张超大的图,同时现有的多分类方法中对于地址提取的特
征较多,使数据收集的难度过大,耗费时间过长,这为快速分类一个比特币地址制造了难
度。
[0008] 现有的基于启发式的地址聚类方法存在两个缺陷:一是该方法只针对特定类型交易地址有效,如多个交易输入可以被聚成一类,但是对于单一输入的交易,当该输入地址在
未来交易记录中从未出现过时,将无法归类到任何一类。二是基于找零地址的启发式聚类
方法由于受到比特币协议的变化,如找零地址使用比特币钱包自动生成的新地址或用户指
定的新地址,因此该方法不能完全聚类出交易输入用户控制的地址群。
[0009] 现有的机器学习分类方法对于从交易历史记录中提取什么特征,提取多少特征尚未形成一致观点,因此不同的研究人员会提取到不同数量和不同种类的特征,事实上这种
盲选特征会造成实际特征中有很多的冗余特征,增加了学习器的训练开销,无法为一个需
要分类的地址的特征提取提供参考。

发明内容

[0010] 为了解决上述问题,本发明的目的在于提供了一种基于改进随机森林的比特币地址分类方法。
[0011] 为了达到上述目的,本发明提供的基于改进随机森林的比特币地址分类方法包括按顺序进行的下列步骤:
[0012] S1:从区块链的历史交易记录中提取地址原始特征并添加到现有机器学习分类方法所使用的特征集中,构建一个更大的特征集;
[0013] S2:解析原始区块数据而获得比特币地址,并从上述构建的特征集中提取出与地址相关的统计特征信息而构成数据集,所获得数据集的大小与操作者选取的时间段以及在
这个时间段交易数量的多少有关;
[0014] S3:利用爬虫技术,为上述数据集打上标签,从而获得带有标签的样本集,并根据需要将地址分为多个不同的类别;
[0015] S4:初始化学习器的参数,包括随机森林参数基分类器数量L、利用特征分裂节点时候选特征子集的数量l,以及算法准确率变化阈值δ;
[0016] S5:初始化学习器中的重要特征集 不重要特征集 特征向量 和算法准确率集合 其中重要特征集 用于保留需要提取的关键特征, 用于暂存当前未被标记为重
要的特征,特征向量 表示每个样本中的属性集合,算法准确率集合 用于记录每一轮算
法的准确率;
[0017] S6:用上述带有标签的样本集迭代上述初始化后的学习器,直到算法准确率变化范围超过算法准确率变化阈值δ;
[0018] S7:获取重要特征集 中保留的特征,作为需要提取的关键特征;
[0019] S8:在实际应用中,对于任一需要分类的地址,只需从比特币交易记录中提取出少量的关键特征,然后将这些关键特征输入到上述已训练好的学习器中,学习器的输出即为
该比特币地址的交易类型分类。
[0020] 在S1中,所述的从区块链的历史交易记录中提取地址原始特征并添加到现有机器学习分类方法所使用的特征集中,构建一个更大的特征集的具体方法如下:
[0021] S101:设定如下用于提取地址原始特征的规则:地址存活时间单位为天,存活时间不足24小时视为1天,其余情况下存活天数向下取整;对于存在自找零交易,即给定地址同
时出现在交易的输入和输出中,将其视为对应于该地址的输出交易;为了保留原始信息同
时降低提取特征的困难,将比特币交易的数量单位设定为BTC;
[0022] S102:按照上述规则,从区块链的历史交易记录中提取包括截至目前为止地址存活时间在内的地址原始特征;
[0023] S103:对上述地址原始特征进行线性组合。
[0024] 在S6中,所述的用上述带有标签的样本集迭代上述初始化后的学习器,直到算法准确率变化范围超过算法准确率变化阈值δ的具体方法如下:
[0025] S601:利用上述带有标签的样本集迭代训练学习器,并将该轮训练时学习器的分类准确率加入到算法准确率集合 中;
[0026] S602:计算在该轮训练中每一个特征j的全局权重
[0027] S603:将所有特征按照权重大小进行降序排列,并将前 个特征加入到重要特征集 中,一旦特征出现在重要特征集 中,其将永远不会被删除直至算法结束,将其余特
征加入到不重要特征集合 中;
[0028] S604:更新重要特征集 不重要特征集 和特征向量 由此完成特征的筛选;
[0029] S605:判断算法准确率集合 的极差是否小于算法准确率变化阈值δ,如果成立,则执行S606,否则保留重要特征集 中的特征并作为筛选出的关键特征;
[0030] S606:执行S601,利用上述更新后的特征向量 继续迭代训练学习器直至收敛。
[0031] 在S602中,所述的计算在该轮训练中每一个特征j的全局权重 的具体方法如下:
[0032] S60201:每一个基分类器在分裂节点i的时候,先根据以下公式计算该分裂节点的信息熵:
[0033]
[0034] 其中P(c)表示在该分裂节点地址类别为c的概率;
[0035] S60202:根据上述信息熵计算分裂节点i的特征候选子集中每一个特征j的分裂评分,计算公式如下:
[0036]
[0037] 其中V表示按照特征j分裂节点后子节点的数量,节点的分裂按分裂评分 最高的特征进行分裂;
[0038] S60203:利用上述分裂评分计算每个特征j在每一个基分类器ζ中的局部权重:
[0039]
[0040] 其中N_node表示基分类器ζ中非叶子节点的数量;
[0041] S60204:利用袋外数据算出每一个基分类器ζ的分类准确率,进而按下式计算出每一个基分类器ζ的权重:
[0042]
[0043] 其中accζ表示基分类器ζ的分类准确率;
[0044] S60205:基于上述局部权重和基分类器的权重计算出每个特征j在整个随机森林中的全局权重:
[0045]
[0046] 在S604中,所述的更新重要特征集 不重要特征集 和特征向量 由此完成特征的筛选的具体方法如下:
[0047] S60401:计算不重要特征集 中特征的权重平均数μ和标准方差σ;
[0048] S60402:将不重要特征集 中权重小于μ‑3σ的特征直接删除,同时对特征向量进行更新;
[0049] S60403:如果不重要特征集 中所有权重均大于μ‑3σ,则直接删除权重最小的一个特征,同时对特征向量 进行更新;
[0050] S60404:将更新后的不重要特征集 中权重大于或等于重要特征集 中最小权重的特征从不重要特征集 中转移到重要特征集 中,由此完成重要特征集 和不重要特
征集 的更新。
[0051] 本发明提供的基于改进随机森林的比特币地址分类方法具有如下有益效果:(1)从比特币市场监管角度将判断用户是否参与非法交易问题转变成比特币地址分类问题,有
助于完善市场监管;(2)本发明直接通过区块链的历史交易记录获取样本集,而不需要先去
形成一张超大的交易图,再从图中提取特征,这样就大大降低了数据的收集难度;(3)基于
改进随机森林的比特币地址分类方法能够以84%左右的准确率对比特币地址进行分类,仅
仅只需要很少的统计特征;(4)地址分类方法不仅能很好的对地址进行分类,同时对构建的
大量统计特征进行去冗余,当学习器完成最终的训练之后,就能获得最终需要提取的关键
特征,这对于一个需要进行识别的地址而言,既减少了数据收集时间,也降低了地址识别的
时间开销。

附图说明

[0052] 图1为本发明提供的基于改进随机森林的比特币地址分类方法流程图。
[0053] 图2为本发明提供的获取带有标签的数据集流程图。
[0054] 图3为本发明提供的算法迭代训练过程流程图。
[0055] 图4为本发明提供的计算每个特征的全局权重流程图。
[0056] 图5为本发明提供的特征集和特征向量更新过程流程图。

具体实施方式

[0057] 下面结合附图和具体实施例对本发明提供的基于改进随机森林的比特币地址分类进行详细说明。
[0058] 如图1—图5所示,本发明提供的基于改进随机森林的比特币地址分类方法包括按顺序进行的下列步骤:
[0059] S1:从区块链的历史交易记录中提取地址原始特征并添加到现有机器学习分类方法所使用的特征集中,构建一个更大的特征集;
[0060] 具体方法如下:
[0061] S101:设定如下用于提取地址原始特征的规则:地址存活时间单位为天,存活时间不足24小时视为1天,其余情况下存活天数向下取整;对于存在自找零交易,即给定地址同
时出现在交易的输入和输出中,将其视为对应于该地址的输出交易;为了保留原始信息同
时降低提取特征的困难,将比特币交易的数量单位设定为BTC;
[0062] S102:按照上述规则,从区块链的历史交易记录中提取包括截至目前为止地址存活时间在内的地址原始特征;
[0063] S103:对上述地址原始特征进行线性组合,以进一步丰富统计特征,如该地址每天转出多少BTC。
[0064] S2:解析原始区块数据而获得比特币地址,并从上述构建的特征集中提取出与地址相关的统计特征信息而构成数据集,所获得数据集的大小与操作者选取的时间段以及在
这个时间段交易数量的多少有关;
[0065] S3:利用爬虫技术,为上述数据集打上标签,从而获得带有标签的样本集,并根据需要将地址分为多个不同的类别;
[0066] S4:初始化学习器的参数,包括随机森林参数基分类器数量L、利用特征分裂节点时候选特征子集的数量l,以及算法准确率变化阈值δ;
[0067] S5:初始化学习器中的重要特征集 不重要特征集 特征向量 和算法准确率集合 其中重要特征集 用于保留需要提取的关键特征, 用于暂存当前未被标记为重
要的特征,特征向量 表示每个样本中的属性集合,算法准确率集合 用于记录每一轮算
法的准确率;
[0068] S6:用上述带有标签的样本集迭代上述初始化后的学习器,直到算法准确率变化范围超过算法准确率变化阈值δ;
[0069] 具体方法如下:
[0070] S601:利用上述带有标签的样本集迭代训练学习器,并将该轮训练时学习器的分类准确率加入到算法准确率集合 中;
[0071] S602:计算在该轮训练中每一个特征j的全局权重
[0072] S603:将所有特征按照权重大小进行降序排列,并将前 个特征加入到重要特征集 中,一旦特征出现在重要特征集 中,其将永远不会被删除直至算法结束,将其余特
征加入到不重要特征集合 中;
[0073] S604:更新重要特征集 不重要特征集 和特征向量 由此完成特征的筛选;
[0074] S605:判断算法准确率集合 的极差是否小于算法准确率变化阈值δ,如果成立,则执行S606,否则保留重要特征集 中的特征并作为筛选出的关键特征;
[0075] S606:执行S601,利用上述更新后的特征向量 继续迭代训练学习器直至收敛;
[0076] 在S602中,所述的计算在该轮训练中每一个特征j的全局权重 的具体方法如下:
[0077] S60201:每一个基分类器在分裂节点i的时候,先根据以下公式计算该分裂节点的信息熵:
[0078]
[0079] 其中P(c)表示在该分裂节点地址类别为c的概率;
[0080] S60202:根据上述信息熵计算分裂节点i的特征候选子集中每一个特征j的分裂评分,计算公式如下:
[0081]
[0082] 其中V表示按照特征j分裂节点后子节点的数量,节点的分裂按分裂评分 最高的特征进行分裂;
[0083] S60203:利用上述分裂评分计算每个特征j在每一个基分类器ζ中的局部权重:
[0084]
[0085] 其中N_node表示基分类器ζ中非叶子节点的数量;
[0086] S60204:利用袋外数据算出每一个基分类器ζ的分类准确率,进而按下式计算出每一个基分类器ζ的权重:
[0087]
[0088] 其中accζ表示基分类器ζ的分类准确率;
[0089] S60205:基于上述局部权重和基分类器的权重计算出每个特征j在整个随机森林中的全局权重:
[0090]
[0091] 在S604中,所述的更新重要特征集 不重要特征集 和特征向量 由此完成特征的筛选的具体方法如下:
[0092] S60401:计算不重要特征集 中特征的权重平均数μ和标准方差σ;
[0093] S50402:将不重要特征集 中权重小于μ‑3σ的特征直接删除,同时对特征向量进行更新;
[0094] S60403:如果不重要特征集 中所有权重均大于μ‑3σ,则直接删除权重最小的一个特征,同时对特征向量 进行更新;
[0095] S60404:将更新后的不重要特征集 中权重大于或等于重要特征集 中最小权重的特征从不重要特征集 中转移到重要特征集 中,由此完成重要特征集 和不重要特征
集 的更新。
[0096] S7:获取重要特征集 中保留的特征,作为需要提取的关键特征。
[0097] S8:在实际应用中,对于任一需要分类的地址,只需从比特币交易记录中提取出少量的关键特征,然后将这些关键特征输入到上述已训练好的学习器中,学习器的输出即为
该比特币地址的交易类型分类。